summaryrefslogtreecommitdiff
path: root/src/settings.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-08-16 09:00:31 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-08-16 09:00:31 -0400
commit0374291a3451c464fb27e53077da42ad21c27cd6 (patch)
treeafea32cd268a15398bcee5c35e43331d125ea0a2 /src/settings.cpp
parenta5cb39aaf44b1f84003fb2ec2d36f07bf28916e4 (diff)
StatusBar now inherits from QStatusBar to handle hide/show events
merged settings into saveVisibility() and restoreVisibility() call MainWindow::storeSettings() earlier so widget visibility is still valid
Diffstat (limited to 'src/settings.cpp')
-rw-r--r--src/settings.cpp96
1 files changed, 41 insertions, 55 deletions
diff --git a/src/settings.cpp b/src/settings.cpp
index db6cecdf..06b4446a 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -942,6 +942,12 @@ QString stateSettingName(const Widget* widget)
return "geometry/" + widgetName(widget) + "_state";
}
+template <class Widget>
+QString visibilitySettingName(const Widget* widget)
+{
+ return "geometry/" + widgetName(widget) + "_visibility";
+}
+
GeometrySettings::GeometrySettings(QSettings& s)
: m_Settings(s), m_Reset(false)
@@ -962,18 +968,6 @@ void GeometrySettings::resetIfNeeded()
m_Settings.beginGroup("geometry");
m_Settings.remove("");
m_Settings.endGroup();
-
- /*settings.remove("window_geometry");
- settings.remove("window_state");
- settings.remove("toolbar_size");
- settings.remove("toolbar_button_style");
- settings.remove("menubar_visible");
- settings.remove("window_split");
- settings.remove("window_monitor");
- settings.remove("filters_visible");
- settings.remove("browser_geometry");
- settings.remove("geometry");
- settings.remove("reset_geometry");*/
}
void GeometrySettings::saveGeometry(const QWidget* w)
@@ -1036,15 +1030,32 @@ bool GeometrySettings::restoreState(QSplitter* w) const
return false;
}
-bool GeometrySettings::restoreToolbars(QMainWindow* w) const
+void GeometrySettings::saveVisibility(const QWidget* w)
{
- const auto size = getOptional<QSize>(m_Settings, "toolbar_size");
- const auto style = getOptional<int>(m_Settings, "toolbar_button_style");
+ m_Settings.setValue(visibilitySettingName(w), w->isVisible());
+}
- if (!size && !style) {
- return false;
+bool GeometrySettings::restoreVisibility(QWidget* w, std::optional<bool> def) const
+{
+ auto v = getOptional<bool>(m_Settings, visibilitySettingName(w));
+ if (!v) {
+ v = def;
+ }
+
+ if (v) {
+ w->setVisible(*v);
+ return true;
}
+ return false;
+}
+
+void GeometrySettings::restoreToolbars(QMainWindow* w) const
+{
+ // all toolbars have the same size and button style settings
+ const auto size = getOptional<QSize>(m_Settings, "toolbar_size");
+ const auto style = getOptional<int>(m_Settings, "toolbar_button_style");
+
for (auto* tb : w->findChildren<QToolBar*>()) {
if (size) {
tb->setIconSize(*size);
@@ -1053,53 +1064,28 @@ bool GeometrySettings::restoreToolbars(QMainWindow* w) const
if (style) {
tb->setToolButtonStyle(static_cast<Qt::ToolButtonStyle>(*style));
}
- }
- return true;
+ restoreVisibility(tb);
+ }
}
void GeometrySettings::saveToolbars(const QMainWindow* w)
{
- // all toolbars are identical, just save the first one
const auto tbs = w->findChildren<QToolBar*>();
- if (tbs.isEmpty()) {
- 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
-{
- 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");
-}
-void GeometrySettings::setStatusbarVisible(bool b)
-{
- m_Settings.setValue("statusbar_visible", b);
-}
+ // save visibility for all
+ for (auto* tb : tbs) {
+ saveVisibility(tb);
+ }
-std::optional<bool> GeometrySettings::getFiltersVisible() const
-{
- return getOptional<bool>(m_Settings, "filters_visible");
-}
+ // all toolbars have the same size and button style settings, just save the
+ // first one
+ if (!tbs.isEmpty()) {
+ const auto* tb = tbs[0];
-void GeometrySettings::setFiltersVisible(bool b)
-{
- m_Settings.setValue("filters_visible", b);
+ m_Settings.setValue("toolbar_size", tb->iconSize());
+ m_Settings.setValue("toolbar_button_style", static_cast<int>(tb->toolButtonStyle()));
+ }
}
QStringList GeometrySettings::getModInfoTabOrder() const