summaryrefslogtreecommitdiffstats
path: root/kcontrol/ebrowsing/plugins/ikws/searchprovider.cpp
diff options
context:
space:
mode:
authorPhilippe Mavridis <philippe.mavridis@yandex.com>2025-11-22 14:13:01 +0200
committerPhilippe Mavridis <philippe.mavridis@yandex.com>2026-01-02 11:34:45 +0200
commit59e49db8870a64a2eca80e6271c1aac1553761b3 (patch)
treed0dabaf534cfe54a5aad38f876e981c536220538 /kcontrol/ebrowsing/plugins/ikws/searchprovider.cpp
parentbe5a0967f061e5c8f197fc95b090dbf52b05feed (diff)
downloadtdebase-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.cpp52
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