Index: searchbar.cpp
===================================================================
RCS file: /home/kde/kdeaddons/konq-plugins/searchbar/searchbar.cpp,v
retrieving revision 1.26
diff -u -r1.26 searchbar.cpp
--- searchbar.cpp	6 Mar 2005 06:14:18 -0000	1.26
+++ searchbar.cpp	19 Mar 2005 20:22:15 -0000
@@ -63,11 +63,11 @@
 	m_searchCombo->setFixedWidth(180);
 
 	m_popupMenu = new QPopupMenu(m_searchCombo, "search selection menu");
-	m_popupMenu->insertItem(SmallIcon("find"), i18n("Find in This Page"), this, SLOT(useFindInThisPage()),  0, 0);
+	m_popupMenu->insertItem(SmallIcon("find"), i18n("Find in This Page"),
+	                        this, SLOT(useFindInThisPage()),  0, FindEntry);
 	m_popupMenu->insertSeparator();
-	m_popupMenu->insertItem("", this, SLOT(useSearchProvider()),  0, 1);
 	m_popupMenu->insertItem(SmallIcon("enhanced_browsing"), i18n("Select Search Engine..."),
-	                        this, SLOT(selectSearchEngine()), 0, 2);
+	                        this, SLOT(selectSearchEngine()), 0, ConfigureEntry);
 
 	m_searchComboAction = new KWidgetAction(m_searchCombo, i18n("Search Bar"), 0,
 	                                                     0, 0, actionCollection(), "toolbar_search_bar");
@@ -135,13 +135,13 @@
 
 	if(m_searchCombo->text(0).isEmpty())
 	{
-		m_searchCombo->changeItem(m_searchIcon, search, 0);
+		m_searchCombo->changeItem(m_searchIcon, search, FindEntry);
 	}
 	else
 	{
 		if(m_searchCombo->findHistoryItem(search) == -1)
 		{
-			m_searchCombo->insertItem(m_searchIcon, search, 0);
+			m_searchCombo->insertItem(m_searchIcon, search, FindEntry);
 		}
 	}
 
@@ -173,7 +173,7 @@
 	{
 		icon = SmallIcon("google");
 	}
-	m_popupMenu->changeItem(1, icon, m_providerName);
+	m_popupMenu->changeItem(m_provider + ProvidersEntry, icon, *(m_providerNameList.at(m_provider)));
 
 	m_searchIcon = (m_searchMode == FindInThisPage ? SmallIcon("find") : icon);
 
@@ -191,10 +191,20 @@
 	setIcon();
 }
 
-void SearchBarPlugin::useSearchProvider()
+void SearchBarPlugin::useSearchProvider(int provider)
 {
-	m_searchMode = UseSearchProvider;
-	setIcon();
+	if(provider >= ProvidersEntry)
+	{
+		m_provider = provider - ProvidersEntry;
+
+		KConfig *config = new KConfig("kuriikwsfilterrc");
+		config->setGroup("General");
+		config->writeEntry("DefaultSearchEngine", *(m_providerList.at(m_provider)));
+		config->sync();
+
+		m_searchMode = UseSearchProvider;
+		setIcon();
+	}
 }
 
 void SearchBarPlugin::selectSearchEngine()
@@ -225,18 +235,30 @@
 {
 	KConfig *config = new KConfig("kuriikwsfilterrc");
 	config->setGroup("General");
-	QString engine = config->readEntry("DefaultSearchEngine", "google");
-	delete config;
-	if(engine.isEmpty())
-	{
-		m_providerName = "Google";
-	}
-	else
-	{
-		KDesktopFile file("searchproviders/" + engine + ".desktop", true, "services");
-		m_providerName = file.readName();
+	QStringList engines = config->readListEntry("DefaultSearchEngineList");
+	if(!engines.count()) engines << "google";
+
+	int id = 0;
+	m_providerList.clear();
+	m_providerNameList.clear();
+	for(QStringList::iterator it = engines.begin(); it != engines.end(); it++)
+	{
+		KDesktopFile file("searchproviders/" + (*it) + ".desktop", true, "services");
+		m_providerNameList << file.readName();
+		m_providerList << (*it);
+
+		m_popupMenu->insertItem(file.readName(), id + ProvidersEntry);
+
+		m_provider = id;
+		config->writeEntry("DefaultSearchEngine", (*it));
+		config->sync();
+		setIcon();
+		id++;
 	}
 
+	delete config;
+	connect(m_popupMenu, SIGNAL(activated(int)), SLOT(useSearchProvider(int)));
+
 	config = kapp->config();
 	config->setGroup("SearchBar");
 	m_searchMode = (SearchModes) config->readNumEntry("Mode", (int) UseSearchProvider);
Index: searchbar.h
===================================================================
RCS file: /home/kde/kdeaddons/konq-plugins/searchbar/searchbar.h,v
retrieving revision 1.12
diff -u -r1.12 searchbar.h
--- searchbar.h	21 Aug 2004 14:18:50 -0000	1.12
+++ searchbar.h	19 Mar 2005 20:22:16 -0000
@@ -107,6 +107,7 @@
 	public:
 		/** Possible search modes */
 		enum SearchModes { FindInThisPage = 0, UseSearchProvider };
+		enum MenuEntries { FindEntry = 0, ConfigureEntry, ProvidersEntry };
 
 		SearchBarPlugin(QObject *parent, const char *name,
 		                const QStringList &);
@@ -130,7 +131,7 @@
 		void showSelectionMenu();
 
 		void useFindInThisPage();
-		void useSearchProvider();
+		void useSearchProvider(int provider);
 		void selectSearchEngine();
 		void searchEngineSelected(KProcess *process);
 		void configurationChanged();
@@ -151,8 +152,10 @@
 		QPopupMenu            *m_popupMenu;
 		QPixmap                m_searchIcon;
 		SearchModes            m_searchMode;
-		QString                m_providerName;
+		QStringList            m_providerNameList;
+		QStringList            m_providerList;
 		bool                   m_urlEnterLock;
+		int                    m_provider;
 };
 
 #endif // SEARCHBAR_PLUGIN

