From a8cc2f6fa4f7eaa02c35629fd497413b10ec017f Mon Sep 17 00:00:00 2001
From: con <qtc-committer@nokia.com>
Date: Mon, 10 Aug 2009 13:01:10 +0200
Subject: [PATCH] Need the settings also in form of non-QSettings.

---
 src/libs/utils/fancymainwindow.cpp | 37 +++++++++++++++++++++++-------
 src/libs/utils/fancymainwindow.h   |  3 +++
 2 files changed, 32 insertions(+), 8 deletions(-)

diff --git a/src/libs/utils/fancymainwindow.cpp b/src/libs/utils/fancymainwindow.cpp
index 910170ebf26..f58f8332ca0 100644
--- a/src/libs/utils/fancymainwindow.cpp
+++ b/src/libs/utils/fancymainwindow.cpp
@@ -142,20 +142,41 @@ void FancyMainWindow::handleVisibilityChanged(bool visible)
 
 void FancyMainWindow::saveSettings(QSettings *settings) const
 {
-    settings->setValue("State", saveState());
-    settings->setValue("Locked", m_locked);
-    for (int i = 0; i < m_dockWidgetActiveState.count(); ++i) {
-        settings->setValue(m_dockWidgets.at(i)->objectName(),
-                           m_dockWidgetActiveState.at(i));
+    QHash<QString, QVariant> hash = saveSettings();
+    QHashIterator<QString, QVariant> it(hash);
+    while (it.hasNext()) {
+        it.next();
+        settings->setValue(it.key(), it.value());
     }
 }
 
 void FancyMainWindow::restoreSettings(QSettings *settings)
 {
-    QByteArray ba = settings->value("State", QByteArray()).toByteArray();
+    QHash<QString, QVariant> hash;
+    foreach (const QString &key, settings->childKeys()) {
+        hash.insert(key, settings->value(key));
+    }
+    restoreSettings(hash);
+}
+
+QHash<QString, QVariant> FancyMainWindow::saveSettings() const
+{
+    QHash<QString, QVariant> settings;
+    settings["State"] = saveState();
+    settings["Locked"] = m_locked;
+    for (int i = 0; i < m_dockWidgetActiveState.count(); ++i) {
+        settings[m_dockWidgets.at(i)->objectName()] =
+                           m_dockWidgetActiveState.at(i);
+    }
+    return settings;
+}
+
+void FancyMainWindow::restoreSettings(const QHash<QString, QVariant> &settings)
+{
+    QByteArray ba = settings.value("State", QByteArray()).toByteArray();
     restoreState(ba);
-    m_locked = settings->value("Locked", true).toBool();
+    m_locked = settings.value("Locked", true).toBool();
     for (int i = 0; i < m_dockWidgetActiveState.count(); ++i) {
-        m_dockWidgetActiveState[i] = settings->value(m_dockWidgets.at(i)->objectName(), false).toBool();
+        m_dockWidgetActiveState[i] = settings.value(m_dockWidgets.at(i)->objectName(), false).toBool();
     }
 }
diff --git a/src/libs/utils/fancymainwindow.h b/src/libs/utils/fancymainwindow.h
index f3367e44843..7d659113441 100644
--- a/src/libs/utils/fancymainwindow.h
+++ b/src/libs/utils/fancymainwindow.h
@@ -33,6 +33,7 @@
 #include "utils_global.h"
 
 #include <QtCore/QList>
+#include <QtCore/QHash>
 #include <QtCore/QSettings>
 #include <QtGui/QMainWindow>
 #include <QtGui/QDockWidget>
@@ -56,6 +57,8 @@ public:
 
     void saveSettings(QSettings *settings) const;
     void restoreSettings(QSettings *settings);
+    QHash<QString, QVariant> saveSettings() const;
+    void restoreSettings(const QHash<QString, QVariant> &settings);
 
 public slots:
     void setLocked(bool locked);
-- 
GitLab