]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Use a desktop-file for completion-items for the dolphin-search-box.
authorMatthias Fuchs <mat69@gmx.net>
Fri, 9 Oct 2009 10:39:32 +0000 (10:39 +0000)
committerMatthias Fuchs <mat69@gmx.net>
Fri, 9 Oct 2009 10:39:32 +0000 (10:39 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=1033040

src/CMakeLists.txt
src/dolphinsearchbox.cpp
src/dolphinsearchbox.h
src/dolphinsearchcommands.desktop [new file with mode: 0644]

index deccbfe2857e55a668cf6a47fb45e9cbdd80a211..01cd27ee54946c9a472dcc0679e4edc669084848 100644 (file)
@@ -259,6 +259,7 @@ install(TARGETS kcm_dolphingeneral DESTINATION ${PLUGIN_INSTALL_DIR} )
 install( FILES  dolphin.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )
 install( FILES  settings/dolphin_directoryviewpropertysettings.kcfg settings/dolphin_generalsettings.kcfg settings/dolphin_columnmodesettings.kcfg settings/dolphin_iconsmodesettings.kcfg settings/dolphin_detailsmodesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR} )
 install( FILES  dolphinui.rc DESTINATION ${DATA_INSTALL_DIR}/dolphin )
+install( FILES  dolphinsearchcommands.desktop DESTINATION ${DATA_INSTALL_DIR}/dolphin )
 install( FILES kcm/kcmdolphinviewmodes.desktop DESTINATION ${SERVICES_INSTALL_DIR} )
 install( FILES kcm/kcmdolphinnavigation.desktop DESTINATION ${SERVICES_INSTALL_DIR} )
 install( FILES kcm/kcmdolphinservices.desktop DESTINATION ${SERVICES_INSTALL_DIR} )
index 134fce9c72598db401ed6e6f5764def4d2b5e5b5..d9a82ccd6f6912c46078c92e3ebb747f772e9cae 100644 (file)
@@ -1,5 +1,6 @@
 /***************************************************************************
  *   Copyright (C) 2009 by Peter Penz <peter.penz@gmx.at>                  *
+ *   Copyright (C) 2009 by Matthias Fuchs <mat69@gmx.net>                  *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
 
 #include <config-nepomuk.h>
 
-#include <kdialog.h>
+#include <KConfigGroup>
+#include <KDesktopFile>
 #include <kglobalsettings.h>
 #include <klineedit.h>
 #include <klocale.h>
 #include <kiconloader.h>
+#include <KStandardDirs>
 
 #include <QEvent>
 #include <QKeyEvent>
@@ -62,23 +65,30 @@ void DolphinSearchCompleter::init()
         foreach (const Nepomuk::Tag& tag, tags) {
             const QString tagText = tag.label();
             addCompletionItem(tagText,
-                                "tag:\"" + tagText + '\"',
-                                i18nc("Tag as in Nepomuk::Tag", "Tag"),
-                                KIcon("mail-tagged"));
+                              "tag:\"" + tagText + '\"',
+                              i18nc("Tag as in Nepomuk::Tag", "Tag"),
+                              QString(),
+                              KIcon("mail-tagged"));
         }
     }
 #endif //HAVE_NEPOMUK
 
-    //add "and", "or" and "-" (not) logic operators
-    addCompletionItem(i18nc("and ss in a logic operator to connect search terms", "and"),
-                        "and",
-                        "logic operator and");
-    addCompletionItem(i18nc("or as in a logic operator to connect search terms", "or"),
-                        "or",
-                        "logic operator or");
-    addCompletionItem(i18nc("not as in a logic operator to connect search terms", "not"),
-                        "-",
-                        "logic operator not");
+    //load the completions stored in the desktop file
+    KDesktopFile file(KStandardDirs::locate("data", "dolphin/dolphinsearchcommands.desktop"));
+    foreach (const QString &group, file.groupList()) {
+        KConfigGroup cg(&file, group);
+        const QString displayed = cg.readEntry("Name", QString());
+        const QString usedForCompletition = cg.readEntry("Completion", QString());
+        const QString description = cg.readEntry("Comment", QString());
+        const QString toolTip = cg.readEntry("GenericName", QString());
+        const QString icon = cg.readEntry("Icon", QString());
+
+        if (icon.isEmpty()) {
+            addCompletionItem(displayed, usedForCompletition, description, toolTip);
+        } else {
+            addCompletionItem(displayed, usedForCompletition, description, toolTip, KIcon(icon));
+        }
+    }
 
     m_completionModel->sort(0, Qt::AscendingOrder);
 
@@ -95,16 +105,24 @@ void DolphinSearchCompleter::init()
     connect(m_completer, SIGNAL(highlighted(QModelIndex)), this, SLOT(highlighted(QModelIndex)));
 }
 
-void DolphinSearchCompleter::addCompletionItem(const QString& displayed, const QString& usedForCompletition, const QString& description, const KIcon& icon)
+void DolphinSearchCompleter::addCompletionItem(const QString& displayed, const QString& usedForCompletition, const QString& description, const QString& toolTip, const KIcon& icon)
 {
+    if (displayed.isEmpty() || usedForCompletition.isEmpty()) {
+        return;
+    }
+
     QList<QStandardItem*> items;
     QStandardItem *item = new QStandardItem();
     item->setData(QVariant(displayed), Qt::DisplayRole);
     item->setData(QVariant(usedForCompletition), Qt::UserRole);
+    item->setData(QVariant(toolTip), Qt::ToolTipRole);
     items << item;
 
     item = new QStandardItem(description);
-    item->setIcon(icon);
+    if (!icon.isNull()) {
+        item->setIcon(icon);
+    }
+    item->setData(QVariant(toolTip), Qt::ToolTipRole);
     items << item;
 
     m_completionModel->insertRow(m_completionModel->rowCount(), items);
index 2f1c6e1721a8f7f8320eb620035d9571c7206977..c518d6a1d71fa7fdf69c50881b3e24701496e818 100644 (file)
@@ -1,5 +1,6 @@
 /***************************************************************************
  *   Copyright (C) 2009 by Peter Penz <peter.penz@gmx.at>                  *
+ *   Copyright (C) 2009 by Matthias Fuchs <mat69@gmx.net>                  *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -47,7 +48,7 @@ class DolphinSearchCompleter : public QObject
         void slotTextEdited(const QString &text);
 
     private:
-        void addCompletionItem(const QString& displayed, const QString& usedForCompletition, const QString& description = QString(), const KIcon& icon = KIcon());
+        void addCompletionItem(const QString& displayed, const QString& usedForCompletition, const QString& description = QString(), const QString& toolTip = QString(), const KIcon& icon = KIcon());
 
         void findText(int* wordStart, int* wordEnd, QString* newWord, int cursorPos, const QString &input);
 
diff --git a/src/dolphinsearchcommands.desktop b/src/dolphinsearchcommands.desktop
new file mode 100644 (file)
index 0000000..78bf728
--- /dev/null
@@ -0,0 +1,67 @@
+# Name -- what is displayed in the first column
+# Comment -- what is displayed in the second column
+# Completion -- what is returned as completion item
+
+[dolphin and]
+#ctx: and as in a logic operator to connect search terms
+Name=and
+Comment=logic operator and
+Completion=and
+
+[dolphin or]
+#ctx: or as in a logic operator to connect search terms
+Name=or
+Comment=logic operator or
+Completion=or
+
+[dolphin not]
+#ctx: not as in a logic operator to connect search terms
+Name=not
+Comment=logic operator not
+Completion=-
+
+[dolphin fileExtension]
+Name=File extension
+Comment=for example txt
+Completion=fileExtension:
+Icon=preferences-desktop-filetype-association
+
+[dolphin rating]
+#ctx: rating of nepomuk resources
+Name=Rating
+#NOTE "=" does not work here, ":" does
+Comment=1 to 10, for example >=7
+GenericName=Use <, <=, :, >= and >.
+Completion=rating
+Icon=favorites
+
+[dolphin tag]
+#ctx: Tag as in Nepomuk::Tag", "Tag"
+Name=Tag
+Comment=Tag
+Completion=tag:
+Icon=mail-tagged
+
+[dolphin title]
+#ctx: The title of a song etc.
+Name=Title
+Completion=title:
+
+[dolphin filesize]
+Name=File size
+Comment=in bytes, for example >1000
+GenericName=Use <, <=, :, >= and >.
+Completion=contentSize
+
+[dolphin contentsize]
+Name=Content size
+Comment=in bytes
+GenericName=Use <, <=, :, >= and >.
+Completion=contentSize
+
+[dolphin lastmodified]
+#ctx: When the resource was last modified
+Name=Last modified
+Comment=for example >1999-10-10
+GenericName=Use <, <=, :, >= and >.
+Completion=lastModified