summaryrefslogtreecommitdiffstats
path: root/kcontrol/ebrowsing/plugins/ikws/searchprovider.cpp
diff options
context:
space:
mode:
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