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