From 372e9876db6986671c307074e08258fde312fa10 Mon Sep 17 00:00:00 2001 From: Mat Sutcliffe Date: Sun, 28 Jun 2020 00:03:03 +0100 Subject: [PATCH] #28 Save window geometry in an ini file in the application settings directory --- src/blackgui/guiapplication.cpp | 16 +++++++++++++--- src/blackgui/guiapplication.h | 3 +++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/blackgui/guiapplication.cpp b/src/blackgui/guiapplication.cpp index cb5d7eb6a..7f791bc1f 100644 --- a/src/blackgui/guiapplication.cpp +++ b/src/blackgui/guiapplication.cpp @@ -401,10 +401,20 @@ namespace BlackGui QGuiApplication::modalWindow()->raise(); } + const QString& CGuiApplication::fileForWindowGeometryAndStateSettings() + { + static const QString filename = [] + { + QString dir = CFileUtils::appendFilePaths(CDirectoryUtils::normalizedApplicationDataDirectory(), "settings/qgeom"); + return CFileUtils::appendFilePaths(dir, QFileInfo(QCoreApplication::applicationFilePath()).completeBaseName() + ".ini"); + }(); + return filename; + } + bool CGuiApplication::saveWindowGeometryAndState(const QMainWindow *window) const { if (!window) { return false; } - QSettings settings(settingsOrganization(), this->getApplicationName()); + QSettings settings(fileForWindowGeometryAndStateSettings(), QSettings::IniFormat); settings.setValue("geometry", window->saveGeometry()); settings.setValue("windowState", window->saveState()); return true; @@ -413,7 +423,7 @@ namespace BlackGui void CGuiApplication::resetWindowGeometryAndState() { QByteArray ba; - QSettings settings(settingsOrganization(), this->getApplicationName()); + QSettings settings(fileForWindowGeometryAndStateSettings(), QSettings::IniFormat); settings.setValue("geometry", ba); settings.setValue("windowState", ba); } @@ -421,7 +431,7 @@ namespace BlackGui bool CGuiApplication::restoreWindowGeometryAndState(QMainWindow *window) { if (!window) { return false; } - const QSettings settings(settingsOrganization(), this->getApplicationName()); + const QSettings settings(fileForWindowGeometryAndStateSettings(), QSettings::IniFormat); const QString location = settings.fileName(); CLogMessage(this).info(u"GUI settings are here: '%1'") << location; diff --git a/src/blackgui/guiapplication.h b/src/blackgui/guiapplication.h index e7e26d8ed..3e0714cc7 100644 --- a/src/blackgui/guiapplication.h +++ b/src/blackgui/guiapplication.h @@ -396,6 +396,9 @@ namespace BlackGui //! \copydoc BlackGui::CGuiUtility::superviseMainWindowMinSizes void superviseWindowMinSizes(); + + //! Settings ini filename + static const QString &fileForWindowGeometryAndStateSettings(); }; } // ns