diff --git a/src/mirall/logbrowser.cpp b/src/mirall/logbrowser.cpp index 1045ceaaaa..fbdcebadaf 100644 --- a/src/mirall/logbrowser.cpp +++ b/src/mirall/logbrowser.cpp @@ -60,6 +60,7 @@ LogBrowser::LogBrowser(QWidget *parent) : _logstream(0), _doFileFlush(false) { + setObjectName("LogBrowser"); // for save/restoreGeometry() setWindowTitle(tr("Log Output")); setMinimumWidth(600); @@ -118,8 +119,7 @@ LogBrowser::LogBrowser(QWidget *parent) : connect(Logger::instance(), SIGNAL(newLog(QString)),this,SLOT(slotNewLog(QString)), Qt::AutoConnection); MirallConfigFile cfg; - QSettings settings(cfg.configFile(), QSettings::IniFormat); - restoreGeometry(settings.value("LogBrowser/geometry").toByteArray()); + cfg.restoreGeometry(this); } LogBrowser::~LogBrowser() @@ -219,8 +219,7 @@ void LogBrowser::slotClearLog() void LogBrowser::closeEvent(QCloseEvent *event) { MirallConfigFile cfg; - QSettings settings(cfg.configFile(), QSettings::IniFormat); - settings.setValue("LogBrowser/geometry", saveGeometry()); + cfg.saveGeometry(this); QWidget::closeEvent(event); } diff --git a/src/mirall/mirallconfigfile.cpp b/src/mirall/mirallconfigfile.cpp index e36bd89721..687f194f20 100644 --- a/src/mirall/mirallconfigfile.cpp +++ b/src/mirall/mirallconfigfile.cpp @@ -37,6 +37,7 @@ static const char remotePollIntervalC[] = "remotePollInterval"; static const char monoIconsC[] = "monoIcons"; static const char optionalDesktopNoficationsC[] = "optionalDesktopNotifications"; static const char skipUpdateCheckC[] = "skipUpdateCheck"; +static const char geometryC[] = "geometry"; static const char proxyHostC[] = "Proxy/host"; static const char proxyTypeC[] = "Proxy/type"; @@ -99,6 +100,21 @@ void MirallConfigFile::setSeenVersion(const QString &version) settings.sync(); } +void MirallConfigFile::saveGeometry(QWidget *w) +{ + Q_ASSERT(!w->objectName().isNull()); + QSettings settings( configFile(), QSettings::IniFormat ); + settings.setIniCodec( "UTF-8" ); + settings.beginGroup(w->objectName()); + settings.setValue(QLatin1String(geometryC), w->saveGeometry()); + settings.sync(); +} + +void MirallConfigFile::restoreGeometry(QWidget *w) +{ + w->restoreGeometry(getValue(geometryC, w->objectName()).toByteArray()); +} + QString MirallConfigFile::configPath() const { QString dir = _confDir; diff --git a/src/mirall/mirallconfigfile.h b/src/mirall/mirallconfigfile.h index e7afb12b5f..7965affbb9 100644 --- a/src/mirall/mirallconfigfile.h +++ b/src/mirall/mirallconfigfile.h @@ -18,10 +18,10 @@ #include class QVariant; +class QWidget; namespace Mirall { - class MirallConfigFile { /* let only CredentialStore read the password from the file. All other classes @@ -103,6 +103,9 @@ public: QString seenVersion() const; void setSeenVersion(const QString &version); + void saveGeometry(QWidget *w); + void restoreGeometry(QWidget *w); + protected: // these classes can only be access from CredentialStore as a friend class. bool ownCloudPasswordExists( const QString& connection = QString() ) const; diff --git a/src/mirall/settingsdialog.cpp b/src/mirall/settingsdialog.cpp index 1677e54f6d..716cc8cbf1 100644 --- a/src/mirall/settingsdialog.cpp +++ b/src/mirall/settingsdialog.cpp @@ -42,6 +42,7 @@ SettingsDialog::SettingsDialog(Application *app, QWidget *parent) : _ui(new Ui::SettingsDialog), _folderMan(app->_folderMan) { _ui->setupUi(this); + setObjectName("Settings"); // required as group for saveGeometry call setWindowTitle(tr("%1 Settings").arg(Theme::instance()->appNameGUI())); @@ -85,8 +86,7 @@ SettingsDialog::SettingsDialog(Application *app, QWidget *parent) : connect(closeButton, SIGNAL(pressed()), SLOT(accept())); MirallConfigFile cfg; - QSettings settings(cfg.configFile(), QSettings::IniFormat); - restoreGeometry(settings.value("Settings/geometry").toByteArray()); + cfg.restoreGeometry(this); } SettingsDialog::~SettingsDialog() @@ -106,8 +106,7 @@ void SettingsDialog::addAccount(const QString &title, QWidget *widget) void SettingsDialog::closeEvent(QCloseEvent *event) { MirallConfigFile cfg; - QSettings settings(cfg.configFile(), QSettings::IniFormat); - settings.setValue("Settings/geometry", saveGeometry()); + cfg.saveGeometry(this); QWidget::closeEvent(event); }