]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinviewactionhandler.cpp
Allow showing Nepomuk metadata inside views
[dolphin.git] / src / views / dolphinviewactionhandler.cpp
index aead11d2502854e4631bac8e23a11609eda854b3..eb127e2f71028ad4a1d11b97277aaedf6b0b1a22 100644 (file)
@@ -20,6 +20,8 @@
 
 #include "dolphinviewactionhandler.h"
 
+#include <config-nepomuk.h>
+
 #include "settings/viewpropertiesdialog.h"
 #include "views/dolphinview.h"
 #include "views/zoomlevelinfo.h"
 #include <KRun>
 #include <KPropertiesDialog>
 
+#ifdef HAVE_NEPOMUK
+    #include <Nepomuk/ResourceManager>
+#endif
+
 #include <KDebug>
 
 DolphinViewActionHandler::DolphinViewActionHandler(KActionCollection* collection, QObject* parent) :
@@ -228,6 +234,16 @@ QActionGroup* DolphinViewActionHandler::createFileItemRolesActionGroup(const QSt
     KActionMenu* groupMenu = 0;
     QActionGroup* groupMenuGroup = 0;
 
+    bool nepomukRunning = false;
+    bool indexingEnabled = false;
+#ifdef HAVE_NEPOMUK
+    nepomukRunning = (Nepomuk::ResourceManager::instance()->init() == 0);
+    if (nepomukRunning) {
+        KConfig config("nepomukserverrc");
+        indexingEnabled = config.group("Service-nepomukfileindexer").readEntry("autostart", false);
+    }
+#endif
+
     const QList<KFileItemModel::RoleInfo> rolesInfo = KFileItemModel::rolesInformation();
     foreach (const KFileItemModel::RoleInfo& info, rolesInfo) {
         if (!isSortGroup && info.role == "name") {
@@ -265,6 +281,11 @@ QActionGroup* DolphinViewActionHandler::createFileItemRolesActionGroup(const QSt
         action->setText(info.translation);
         action->setData(info.role);
 
+        const bool enable = (!info.requiresNepomuk && !info.requiresIndexer) ||
+                            (info.requiresNepomuk && nepomukRunning) ||
+                            (info.requiresIndexer && indexingEnabled);
+        action->setEnabled(enable);
+
         if (isSortGroup) {
             m_sortByActions.insert(info.role, action);
         } else {