#28 Save window geometry in an ini file in the application settings directory

This commit is contained in:
Mat Sutcliffe
2020-06-28 00:03:03 +01:00
parent d1aa26ed2f
commit 372e9876db
2 changed files with 16 additions and 3 deletions

View File

@@ -401,10 +401,20 @@ namespace BlackGui
QGuiApplication::modalWindow()->raise(); 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 bool CGuiApplication::saveWindowGeometryAndState(const QMainWindow *window) const
{ {
if (!window) { return false; } if (!window) { return false; }
QSettings settings(settingsOrganization(), this->getApplicationName()); QSettings settings(fileForWindowGeometryAndStateSettings(), QSettings::IniFormat);
settings.setValue("geometry", window->saveGeometry()); settings.setValue("geometry", window->saveGeometry());
settings.setValue("windowState", window->saveState()); settings.setValue("windowState", window->saveState());
return true; return true;
@@ -413,7 +423,7 @@ namespace BlackGui
void CGuiApplication::resetWindowGeometryAndState() void CGuiApplication::resetWindowGeometryAndState()
{ {
QByteArray ba; QByteArray ba;
QSettings settings(settingsOrganization(), this->getApplicationName()); QSettings settings(fileForWindowGeometryAndStateSettings(), QSettings::IniFormat);
settings.setValue("geometry", ba); settings.setValue("geometry", ba);
settings.setValue("windowState", ba); settings.setValue("windowState", ba);
} }
@@ -421,7 +431,7 @@ namespace BlackGui
bool CGuiApplication::restoreWindowGeometryAndState(QMainWindow *window) bool CGuiApplication::restoreWindowGeometryAndState(QMainWindow *window)
{ {
if (!window) { return false; } if (!window) { return false; }
const QSettings settings(settingsOrganization(), this->getApplicationName()); const QSettings settings(fileForWindowGeometryAndStateSettings(), QSettings::IniFormat);
const QString location = settings.fileName(); const QString location = settings.fileName();
CLogMessage(this).info(u"GUI settings are here: '%1'") << location; CLogMessage(this).info(u"GUI settings are here: '%1'") << location;

View File

@@ -396,6 +396,9 @@ namespace BlackGui
//! \copydoc BlackGui::CGuiUtility::superviseMainWindowMinSizes //! \copydoc BlackGui::CGuiUtility::superviseMainWindowMinSizes
void superviseWindowMinSizes(); void superviseWindowMinSizes();
//! Settings ini filename
static const QString &fileForWindowGeometryAndStateSettings();
}; };
} // ns } // ns