From 4416dda24309ccfc06fcc367a78694042bbb383c Mon Sep 17 00:00:00 2001
From: Erik Verbruggen <erik.verbruggen@nokia.com>
Date: Mon, 4 Jan 2010 14:36:29 +0100
Subject: [PATCH] Added a name component to the SideBar's
 saveSettings/restoreSettings to allow for multiple instances in a plug-in.

---
 src/plugins/coreplugin/sidebar.cpp | 32 +++++++++++++++++-------------
 src/plugins/coreplugin/sidebar.h   |  4 ++--
 src/plugins/help/helpplugin.cpp    |  4 ++--
 3 files changed, 22 insertions(+), 18 deletions(-)

diff --git a/src/plugins/coreplugin/sidebar.cpp b/src/plugins/coreplugin/sidebar.cpp
index 86ffd9fe919..d595928ab3f 100644
--- a/src/plugins/coreplugin/sidebar.cpp
+++ b/src/plugins/coreplugin/sidebar.cpp
@@ -143,24 +143,28 @@ void SideBar::updateWidgets()
         i->updateAvailableItems();
 }
 
-void SideBar::saveSettings(QSettings *settings)
+void SideBar::saveSettings(QSettings *settings, const QString &name)
 {
+    const QString prefix = name.isEmpty() ? name : (name + QLatin1Char('/'));
+
     QStringList views;
     for (int i = 0; i < m_widgets.count(); ++i)
         views.append(m_widgets.at(i)->currentItemTitle());
-    settings->setValue("HelpSideBar/Views", views);
-    settings->setValue("HelpSideBar/Visible", true);//isVisible());
-    settings->setValue("HelpSideBar/VerticalPosition", saveState());
-    settings->setValue("HelpSideBar/Width", width());
+    settings->setValue(prefix + "Views", views);
+    settings->setValue(prefix + "Visible", true);//isVisible());
+    settings->setValue(prefix + "VerticalPosition", saveState());
+    settings->setValue(prefix + "Width", width());
 }
 
-void SideBar::readSettings(QSettings *settings)
+void SideBar::readSettings(QSettings *settings, const QString &name)
 {
+    const QString prefix = name.isEmpty() ? name : (name + QLatin1Char('/'));
+
     foreach (SideBarWidget *widget, m_widgets)
         removeSideBarWidget(widget);
 
-    if (settings->contains("HelpSideBar/Views")) {
-        QStringList views = settings->value("HelpSideBar/Views").toStringList();
+    if (settings->contains(prefix + "Views")) {
+        QStringList views = settings->value(prefix + "Views").toStringList();
         if (views.count()) {
             foreach (const QString &title, views)
                 insertSideBarWidget(m_widgets.count(), title);
@@ -172,15 +176,15 @@ void SideBar::readSettings(QSettings *settings)
             insertSideBarWidget(m_widgets.count(), title);
     }
 
-    if (settings->contains("HelpSideBar/Visible"))
-        setVisible(settings->value("HelpSideBar/Visible").toBool());
+    if (settings->contains(prefix + "Visible"))
+        setVisible(settings->value(prefix + "Visible").toBool());
 
-    if (settings->contains("HelpSideBar/VerticalPosition"))
-        restoreState(settings->value("HelpSideBar/VerticalPosition").toByteArray());
+    if (settings->contains(prefix + "VerticalPosition"))
+        restoreState(settings->value(prefix + "VerticalPosition").toByteArray());
 
-    if (settings->contains("HelpSideBar/Width")) {
+    if (settings->contains(prefix + "Width")) {
         QSize s = size();
-        s.setWidth(settings->value("HelpSideBar/Width").toInt());
+        s.setWidth(settings->value(prefix + "Width").toInt());
         resize(s);
     }
 }
diff --git a/src/plugins/coreplugin/sidebar.h b/src/plugins/coreplugin/sidebar.h
index c4276e3e6e2..17d90a93b22 100644
--- a/src/plugins/coreplugin/sidebar.h
+++ b/src/plugins/coreplugin/sidebar.h
@@ -101,8 +101,8 @@ public:
     void makeItemAvailable(SideBarItem *item);
     SideBarItem *item(const QString &title);
 
-    void saveSettings(QSettings *settings);
-    void readSettings(QSettings *settings);
+    void saveSettings(QSettings *settings, const QString &name);
+    void readSettings(QSettings *settings, const QString &name);
 
     void activateItem(SideBarItem *item);
 
diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp
index d905a538fd9..02bf176679c 100644
--- a/src/plugins/help/helpplugin.cpp
+++ b/src/plugins/help/helpplugin.cpp
@@ -566,7 +566,7 @@ void HelpPlugin::slotHideRightPane()
 
 void HelpPlugin::extensionsInitialized()
 {
-    m_sideBar->readSettings(m_core->settings());
+    m_sideBar->readSettings(m_core->settings(), QLatin1String("HelpSideBar"));
     if (!m_helpEngine->setupData()) {
         qWarning() << "Could not initialize help engine: " << m_helpEngine->error();
         return;
@@ -683,7 +683,7 @@ void HelpPlugin::extensionsInitialized()
 
 void HelpPlugin::shutdown()
 {
-    m_sideBar->saveSettings(m_core->settings());
+    m_sideBar->saveSettings(m_core->settings(), QLatin1String("HelpSideBar"));
     m_bookmarkManager->saveBookmarks();
     delete m_bookmarkManager;
 }
-- 
GitLab