From ec6144e5cf91bfe7d0c0343e2f47db85aa1160b0 Mon Sep 17 00:00:00 2001 From: Matthias Fuchs Date: Fri, 9 Oct 2009 10:39:32 +0000 Subject: [PATCH] Use a desktop-file for completion-items for the dolphin-search-box. svn path=/trunk/KDE/kdebase/apps/; revision=1033040 --- src/CMakeLists.txt | 1 + src/dolphinsearchbox.cpp | 50 +++++++++++++++-------- src/dolphinsearchbox.h | 3 +- src/dolphinsearchcommands.desktop | 67 +++++++++++++++++++++++++++++++ 4 files changed, 104 insertions(+), 17 deletions(-) create mode 100644 src/dolphinsearchcommands.desktop diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index deccbfe28..01cd27ee5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -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} ) diff --git a/src/dolphinsearchbox.cpp b/src/dolphinsearchbox.cpp index 134fce9c7..d9a82ccd6 100644 --- a/src/dolphinsearchbox.cpp +++ b/src/dolphinsearchbox.cpp @@ -1,5 +1,6 @@ /*************************************************************************** * Copyright (C) 2009 by Peter Penz * + * Copyright (C) 2009 by Matthias Fuchs * * * * 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 * @@ -20,11 +21,13 @@ #include -#include +#include +#include #include #include #include #include +#include #include #include @@ -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 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); diff --git a/src/dolphinsearchbox.h b/src/dolphinsearchbox.h index 2f1c6e172..c518d6a1d 100644 --- a/src/dolphinsearchbox.h +++ b/src/dolphinsearchbox.h @@ -1,5 +1,6 @@ /*************************************************************************** * Copyright (C) 2009 by Peter Penz * + * Copyright (C) 2009 by Matthias Fuchs * * * * 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 index 000000000..78bf728e1 --- /dev/null +++ b/src/dolphinsearchcommands.desktop @@ -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 -- 2.47.3