summaryrefslogtreecommitdiff
path: root/src/settings.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-08-16 07:03:52 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-08-16 07:03:52 -0400
commit3f487a5a6c9c23824298fdde3d76dc82edf3ca46 (patch)
tree62e1ef5285c026c9959ccd430382b4f33e174d1f /src/settings.cpp
parent799ddb1b2477434252d06975fd4c68106dc3826f (diff)
merged toolbars into restoreToolbars() and saveToolbars()
added centerOnMainWindowMonitor(), now also used by validation dialog added overloads for splitter, used by main splitter fixed saveState() for QMainWindow calling the wrong function
Diffstat (limited to 'src/settings.cpp')
-rw-r--r--src/settings.cpp86
1 files changed, 76 insertions, 10 deletions
diff --git a/src/settings.cpp b/src/settings.cpp
index 91e667d5..a3d12070 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -958,7 +958,7 @@ bool Settings::restoreGeometry(QWidget* w) const
void Settings::saveState(const QMainWindow* w)
{
- m_Settings.setValue(stateSettingName(w), w->saveGeometry());
+ m_Settings.setValue(stateSettingName(w), w->saveState());
}
bool Settings::restoreState(QMainWindow* w) const
@@ -986,24 +986,61 @@ bool Settings::restoreState(QHeaderView* w) const
return false;
}
+void Settings::saveState(const QSplitter* w)
+{
+ m_Settings.setValue(stateSettingName(w), w->saveState());
+}
+
+bool Settings::restoreState(QSplitter* w) const
+{
+ if (auto v=getOptional<QByteArray>(m_Settings, stateSettingName(w))) {
+ w->restoreState(*v);
+ return true;
+ }
+
+ return false;
+}
+
GeometrySettings::GeometrySettings(QSettings& s)
: m_Settings(s)
{
}
-std::optional<QSize> GeometrySettings::getToolbarSize() const
+bool GeometrySettings::restoreToolbars(QMainWindow* w) const
{
- return getOptional<QSize>(m_Settings, "toolbar_size");
+ const auto size = getOptional<QSize>(m_Settings, "toolbar_size");
+ const auto style = getOptional<int>(m_Settings, "toolbar_button_style");
+
+ if (!size && !style) {
+ return false;
+ }
+
+ for (auto* tb : w->findChildren<QToolBar*>()) {
+ if (size) {
+ tb->setIconSize(*size);
+ }
+
+ if (style) {
+ tb->setToolButtonStyle(static_cast<Qt::ToolButtonStyle>(*style));
+ }
+ }
+
+ return true;
}
-std::optional<Qt::ToolButtonStyle> GeometrySettings::getToolbarButtonStyle() const
+void GeometrySettings::saveToolbars(const QMainWindow* w)
{
- if (auto v=getOptional<int>(m_Settings, "toolbar_button_style")) {
- return static_cast<Qt::ToolButtonStyle>(*v);
+ // all toolbars are identical, just save the first one
+ const auto tbs = w->findChildren<QToolBar*>();
+ if (tbs.isEmpty()) {
+ return;
}
- return {};
+ const auto* tb = tbs[0];
+
+ m_Settings.setValue("toolbar_size", tb->iconSize());
+ m_Settings.setValue("toolbar_button_style", static_cast<int>(tb->toolButtonStyle()));
}
std::optional<bool> GeometrySettings::getMenubarVisible() const
@@ -1011,14 +1048,19 @@ std::optional<bool> GeometrySettings::getMenubarVisible() const
return getOptional<bool>(m_Settings, "menubar_visible");
}
+void GeometrySettings::setMenubarVisible(bool b)
+{
+ m_Settings.setValue("menubar_visible", b);
+}
+
std::optional<bool> GeometrySettings::getStatusbarVisible() const
{
return getOptional<bool>(m_Settings, "statusbar_visible");
}
-std::optional<QByteArray> GeometrySettings::getMainSplitterState() const
+void GeometrySettings::setStatusbarVisible(bool b)
{
- return getOptional<QByteArray>(m_Settings, "window_split");
+ m_Settings.setValue("statusbar_visible", b);
}
std::optional<bool> GeometrySettings::getFiltersVisible() const
@@ -1064,7 +1106,31 @@ void GeometrySettings::setModInfoTabOrder(const QString& names)
std::optional<int> GeometrySettings::getMainWindowMonitor() const
{
- return getOptional<int>(m_Settings, "window_monitor");
+ return getOptional<int>(m_Settings, "geometry/window_monitor");
+}
+
+void GeometrySettings::centerOnMainWindowMonitor(QWidget* w)
+{
+ const auto monitor = getMainWindowMonitor();
+ QPoint center;
+
+ if (monitor && QGuiApplication::screens().size() > *monitor) {
+ center = QGuiApplication::screens().at(*monitor)->geometry().center();
+ } else {
+ center = QGuiApplication::primaryScreen()->geometry().center();
+ }
+
+ w->move(center - w->rect().center());
+}
+
+void GeometrySettings::saveMainWindowMonitor(const QMainWindow* w)
+{
+ if (auto* handle=w->windowHandle()) {
+ if (auto* screen = handle->screen()) {
+ const int screenId = QGuiApplication::screens().indexOf(screen);
+ m_Settings.setValue("geometry/window_monitor", screenId);
+ }
+ }
}
void GeometrySettings::setDockSize(const QString& name, int size)