Index: nepomukfilewatch.cpp
===================================================================
--- nepomukfilewatch.cpp	(revision 1119639)
+++ nepomukfilewatch.cpp	(working copy)
@@ -31,7 +31,9 @@
 #include <KDebug>
 #include <KUrl>
 #include <KPluginFactory>
-
+#include <KDirWatch>
+#include <KStandardDirs>
+#include <KConfigGroup>
 
 using namespace Soprano;
 
@@ -78,6 +80,19 @@ Nepomuk::FileWatch::FileWatch( QObject* 
 #else
     connectToKDirWatch();
 #endif
+
+    //Tracking Strigi indexed folder list
+    
+    KDirWatch* dirWatch = KDirWatch::self();
+    connect( dirWatch, SIGNAL( dirty( const QString& ) ),
+             this, SLOT( slotStrigiConfigChanged() ) );
+    connect( dirWatch, SIGNAL( created( const QString& ) ),
+             this, SLOT( slotStrigiConfigChanged() ) );
+
+    KConfig config("nepomukstrigirc");
+    dirWatch->addFile( KStandardDirs::locateLocal( "config", config.name() ) );
+
+    slotStrigiConfigChanged();
 }
 
 
@@ -108,6 +123,23 @@ void Nepomuk::FileWatch::slotFileMoved( 
     kDebug() << from << to;
 
     m_metadataMover->moveFileMetadata( from, to );
+
+    //Handling Strigi indexed folder list
+    if( !m_strigiFoldersHash.contains( urlFrom ) )
+        return;
+
+    //TODO: Optimize
+    KConfig config("nepomukstrigirc");
+    
+    QStringList includeFolders = config.group( "General" ).readPathEntry( "folders", QStringList());
+    includeFolders.replaceInStrings( urlFrom, urlTo );
+
+    QStringList excludeFolders = config.group( "General" ).readPathEntry( "exclude folders", QStringList());
+    excludeFolders.replaceInStrings( urlFrom, urlTo );
+
+    config.group( "General" ).writePathEntry( "folders", includeFolders );
+    config.group( "General" ).writePathEntry( "exclude folders", excludeFolders );
+    kDebug() << "Done!!";
 }
 
 
@@ -159,4 +191,25 @@ void Nepomuk::FileWatch::slotInotifyWatc
 }
 #endif
 
+
+void Nepomuk::FileWatch::slotStrigiConfigChanged()
+{
+    kDebug();
+
+    m_strigiFoldersHash.clear();
+    KConfig config("nepomukstrigirc");
+    
+    QStringList include = config.group( "General" ).readPathEntry( "folders", QStringList());
+    foreach( QString path, include ) {
+        kDebug() << "Adding : " << path;
+        m_strigiFoldersHash.insert( path, true );
+    }
+
+    QStringList exclude = config.group( "General" ).readPathEntry( "exclude folders", QStringList());
+    foreach( QString path, exclude ) {
+        kDebug() << "Adding : " << path;
+        m_strigiFoldersHash.insert( path, false );
+    }
+}
+
 #include "nepomukfilewatch.moc"
Index: nepomukfilewatch.h
===================================================================
--- nepomukfilewatch.h	(revision 1119639)
+++ nepomukfilewatch.h	(working copy)
@@ -23,6 +23,7 @@
 
 #include <QtCore/QUrl>
 #include <QtCore/QVariant>
+#include <QtCore/QHash>
 
 namespace Soprano {
     class Model;
@@ -60,9 +61,11 @@ namespace Nepomuk {
 #ifdef BUILD_KINOTIFY
         void slotInotifyWatchUserLimitReached();
 #endif
+        void slotStrigiConfigChanged();
 
     private:
         MetadataMover* m_metadataMover;
+        QHash<QString, bool> m_strigiFoldersHash;
 
 #ifdef BUILD_KINOTIFY
         KInotify* m_dirWatch;