diff options
| author | Philippe Mavridis <philippe.mavridis@yandex.com> | 2025-11-22 14:13:01 +0200 |
|---|---|---|
| committer | Philippe Mavridis <philippe.mavridis@yandex.com> | 2026-01-02 11:34:45 +0200 |
| commit | 59e49db8870a64a2eca80e6271c1aac1553761b3 (patch) | |
| tree | d0dabaf534cfe54a5aad38f876e981c536220538 /kcontrol/ebrowsing/plugins/ikws/searchprovider.cpp | |
| parent | be5a0967f061e5c8f197fc95b090dbf52b05feed (diff) | |
| download | tdebase-feat/searchproviders-update-2025.tar.gz tdebase-feat/searchproviders-update-2025.zip | |
Web Shortcuts: add support for groupsfeat/searchproviders-update-2025
The web shortcuts can now be displayed in groups based on their
category (Web, Images, Development, etc.). The user can modify
the category of an item by picking one of the built-in categories
or creating custom groups by providing a different category name.
When the category groups are hidden, the user can still see
the categories appear in a third column in the list view.
This commit also updates the search engines enabled by default to
some sensible defaults and makes the minimum size of the dialog
smaller.
Signed-off-by: Philippe Mavridis <philippe.mavridis@yandex.com>
Diffstat (limited to 'kcontrol/ebrowsing/plugins/ikws/searchprovider.cpp')
| -rw-r--r-- | kcontrol/ebrowsing/plugins/ikws/searchprovider.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/kcontrol/ebrowsing/plugins/ikws/searchprovider.cpp b/kcontrol/ebrowsing/plugins/ikws/searchprovider.cpp index f2cbdfc6f..eff7727ff 100644 --- a/kcontrol/ebrowsing/plugins/ikws/searchprovider.cpp +++ b/kcontrol/ebrowsing/plugins/ikws/searchprovider.cpp @@ -16,10 +16,13 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +#include <tdelocale.h> #include <ktrader.h> #include "searchprovider.h" +SearchCategoryMap SearchProvider::searchCategories; + SearchProvider::SearchProvider(const KService::Ptr service) : m_dirty(false) { @@ -28,6 +31,27 @@ SearchProvider::SearchProvider(const KService::Ptr service) m_query = service->property("Query").toString(); m_keys = service->property("Keys").toStringList(); m_charset = service->property("Charset").toString(); + m_category = service->property("Category", TQVariant::String).toString(); + + if (!searchCategories.count()) + { + initSearchCategories(); + } +} + +void SearchProvider::initSearchCategories() +{ + searchCategories["Web"] = i18n("Web Search"); + searchCategories["Dictionaries"] = i18n("Dictionaries"); + searchCategories["Images"] = i18n("Images"); + searchCategories["Music"] = i18n("Music"); + searchCategories["Video"] = i18n("Video"); + searchCategories["Software"] = i18n("Software"); + searchCategories["Movies"] = i18n("Movies"); + searchCategories["Development"] = i18n("Development"); + searchCategories["Academic"] = i18n("Academic"); + searchCategories["Maps"] = i18n("Maps"); + searchCategories["Misc"] = i18n("Miscellaneous"); } void SearchProvider::setName(const TQString &name) @@ -62,6 +86,15 @@ void SearchProvider::setCharset(const TQString &charset) m_dirty = true; } +void SearchProvider::setCategory(const TQString &category) +{ + if (m_category == category) + return; + + m_category = searchCategoryKey(category); + m_dirty = true; +} + SearchProvider *SearchProvider::findByDesktopName(const TQString &name) { KService::Ptr service = @@ -76,3 +109,22 @@ SearchProvider *SearchProvider::findByKey(const TQString &key) return providers.count() ? new SearchProvider(providers[0]) : 0; } +const TQString& SearchProvider::searchCategoryName(const TQString& category) +{ + auto it = searchCategories.find(category); + if (it != searchCategories.end()) + { + return it.data(); + } + return category; +} + +const TQString& SearchProvider::searchCategoryKey(const TQString& displayName) +{ + SearchCategoryMap::Iterator it; + for (it = searchCategories.begin(); it != searchCategories.end(); ++it) + { + if (it.data() == displayName) return it.key(); + } + return displayName; // user-defined key +}
\ No newline at end of file |
