diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2019-09-23 18:21:39 -0400 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2019-09-23 18:21:39 -0400 |
| commit | 200b5283eb5a0eff5ed18e772930b99eea5e11ef (patch) | |
| tree | 1ee8a5d22637304997eef70d9bfa51945c0bbdd2 | |
| parent | 829124d8b899101370e55eb2a9cb9164ffd68a55 (diff) | |
added center dialogs option
moved download list options to their own group box
renamed confusing "Download Meta Information" to "Show Meta Information"
| -rw-r--r-- | src/settings.cpp | 34 | ||||
| -rw-r--r-- | src/settings.h | 6 | ||||
| -rw-r--r-- | src/settingsdialog.ui | 208 | ||||
| -rw-r--r-- | src/settingsdialoggeneral.cpp | 2 |
4 files changed, 149 insertions, 101 deletions
diff --git a/src/settings.cpp b/src/settings.cpp index 19eca5ec..c3e8781e 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -623,7 +623,13 @@ void GeometrySettings::saveGeometry(const QDialog* d) bool GeometrySettings::restoreGeometry(QDialog* d) const { - return restoreWindowGeometry(d); + const auto r = restoreWindowGeometry(d); + + if (centerDialogs()) { + centerOnParent(d); + } + + return r; } void GeometrySettings::saveWindowGeometry(const QWidget* w) @@ -829,6 +835,16 @@ void GeometrySettings::setModInfoTabOrder(const QString& names) set(m_Settings, "Widgets", "ModInfoTabOrder", names); } +bool GeometrySettings::centerDialogs() const +{ + return get<bool>(m_Settings, "Settings", "center_dialogs", false); +} + +void GeometrySettings::setCenterDialogs(bool b) +{ + set(m_Settings, "Settings", "center_dialogs", b); +} + void GeometrySettings::centerOnMainWindowMonitor(QWidget* w) { const auto monitor = getOptional<int>( @@ -850,6 +866,22 @@ void GeometrySettings::centerOnMonitor(QWidget* w, int monitor) w->move(center - w->rect().center()); } +void GeometrySettings::centerOnParent(QWidget* w, QWidget* parent) +{ + if (!parent) { + parent = w->parentWidget(); + + if (!parent) { + parent = qApp->activeWindow(); + } + } + + if (parent && parent->isVisible()) { + const auto pr = parent->geometry(); + w->move(pr.center() - w->rect().center()); + } +} + void GeometrySettings::saveMainWindowMonitor(const QMainWindow* w) { if (auto* handle=w->windowHandle()) { diff --git a/src/settings.h b/src/settings.h index b5366911..ee6ff3fe 100644 --- a/src/settings.h +++ b/src/settings.h @@ -160,6 +160,11 @@ public: QStringList modInfoTabOrder() const; void setModInfoTabOrder(const QString& names); + // whether dialogs should be centered on their parent + // + bool centerDialogs() const; + void setCenterDialogs(bool b); + // assumes the given widget is a top-level // void centerOnMainWindowMonitor(QWidget* w); @@ -177,6 +182,7 @@ private: void ensureWindowOnScreen(QWidget* w) const; static void centerOnMonitor(QWidget* w, int monitor); + static void centerOnParent(QWidget* w, QWidget* parent=nullptr); }; diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui index 40079441..9d1e4da1 100644 --- a/src/settingsdialog.ui +++ b/src/settingsdialog.ui @@ -86,97 +86,23 @@ p, li { white-space: pre-wrap; } <item> <widget class="QGroupBox" name="groupBox"> <property name="title"> - <string>User interface</string> + <string>User Interface</string> </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="2" column="0" colspan="2"> - <widget class="QGroupBox" name="ModlistGroupBox"> - <property name="title"> - <string>Colors</string> - </property> - <layout class="QGridLayout" name="gridLayout_5"> - <item row="6" column="0"> - <widget class="QCheckBox" name="colorSeparatorsBox"> - <property name="toolTip"> - <string>When this is enabled, the color defined for a separator will be shown on the mod list scrollbar at the location of the separator. This can be useful for quick navigation between separator sections or to a specific separator section.</string> - </property> - <property name="whatsThis"> - <string>When this is enabled, the color defined for a separator will be shown on the mod list scrollbar at the location of the separator. This can be useful for quick navigation between separator sections or to a specific separator section.</string> - </property> - <property name="text"> - <string>Show mod list separator colors on the scrollbar</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="4" column="0" colspan="2"> - <widget class="QPushButton" name="containedBtn"> - <property name="text"> - <string>Plugin is Contained in selected Mod</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QPushButton" name="overwrittenBtn"> - <property name="text"> - <string>Is overwritten (loose files)</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QPushButton" name="overwritingBtn"> - <property name="text"> - <string>Is overwriting (loose files)</string> - </property> - </widget> - </item> - <item row="5" column="0" colspan="2"> - <widget class="QPushButton" name="resetColorsBtn"> - <property name="text"> - <string>Reset Colors</string> - </property> - </widget> - </item> - <item row="3" column="0" colspan="2"> - <widget class="QPushButton" name="containsBtn"> - <property name="text"> - <string>Mod Contains selected Plugin</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QPushButton" name="overwrittenArchiveBtn"> - <property name="text"> - <string>Is overwritten (archive files)</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QPushButton" name="overwritingArchiveBtn"> - <property name="text"> - <string>Is overwriting (archive files)</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="6" column="0" colspan="2"> - <widget class="QPushButton" name="categoriesBtn"> - <property name="toolTip"> - <string>Modify the categories available to arrange your mods.</string> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QCheckBox" name="centerDialogs"> + <property name="statusTip"> + <string>Dialogs will always be centered on the main window, but will remember their size.</string> </property> <property name="whatsThis"> - <string>Modify the categories available to arrange your mods.</string> + <string>Dialogs will always be centered on the main window, but will remember their size.</string> </property> <property name="text"> - <string>Configure Mod Categories</string> + <string>Always center dialogs</string> </property> </widget> </item> - <item row="5" column="0" colspan="2"> + <item> <widget class="QPushButton" name="resetDialogsButton"> <property name="maximumSize"> <size> @@ -195,36 +121,119 @@ p, li { white-space: pre-wrap; } </property> </widget> </item> - <item row="0" column="0"> - <widget class="QCheckBox" name="compactBox"> + <item> + <widget class="QPushButton" name="categoriesBtn"> <property name="toolTip"> - <string>If checked, the download interface will be more compact.</string> + <string>Modify the categories available to arrange your mods.</string> + </property> + <property name="whatsThis"> + <string>Modify the categories available to arrange your mods.</string> </property> <property name="text"> - <string>Compact Download Interface</string> + <string>Configure Mod Categories</string> </property> </widget> </item> - <item row="4" column="0" colspan="2"> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_5"> + <property name="title"> + <string>Download List</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_11"> + <item> + <widget class="QCheckBox" name="compactBox"> + <property name="toolTip"> + <string>If checked, the download interface will be more compact.</string> </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> + <property name="text"> + <string>Compact List</string> </property> - </spacer> + </widget> </item> - <item row="0" column="1"> + <item> <widget class="QCheckBox" name="showMetaBox"> <property name="toolTip"> <string>If checked, the download list will display meta information instead of file names.</string> </property> <property name="text"> - <string>Download Meta Information</string> + <string>Show Meta Information</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="ModlistGroupBox"> + <property name="title"> + <string>Colors</string> + </property> + <layout class="QGridLayout" name="gridLayout_5"> + <item row="6" column="0"> + <widget class="QCheckBox" name="colorSeparatorsBox"> + <property name="toolTip"> + <string>When this is enabled, the color defined for a separator will be shown on the mod list scrollbar at the location of the separator. This can be useful for quick navigation between separator sections or to a specific separator section.</string> + </property> + <property name="whatsThis"> + <string>When this is enabled, the color defined for a separator will be shown on the mod list scrollbar at the location of the separator. This can be useful for quick navigation between separator sections or to a specific separator section.</string> + </property> + <property name="text"> + <string>Show mod list separator colors on the scrollbar</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="4" column="0" colspan="2"> + <widget class="QPushButton" name="containedBtn"> + <property name="text"> + <string>Plugin is Contained in selected Mod</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QPushButton" name="overwrittenBtn"> + <property name="text"> + <string>Is overwritten (loose files)</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QPushButton" name="overwritingBtn"> + <property name="text"> + <string>Is overwriting (loose files)</string> + </property> + </widget> + </item> + <item row="5" column="0" colspan="2"> + <widget class="QPushButton" name="resetColorsBtn"> + <property name="text"> + <string>Reset Colors</string> + </property> + </widget> + </item> + <item row="3" column="0" colspan="2"> + <widget class="QPushButton" name="containsBtn"> + <property name="text"> + <string>Mod Contains selected Plugin</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QPushButton" name="overwrittenArchiveBtn"> + <property name="text"> + <string>Is overwritten (archive files)</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QPushButton" name="overwritingArchiveBtn"> + <property name="text"> + <string>Is overwriting (archive files)</string> </property> </widget> </item> @@ -1411,7 +1420,6 @@ programs you are intentionally running.</string> <tabstop>styleBox</tabstop> <tabstop>logLevelBox</tabstop> <tabstop>usePrereleaseBox</tabstop> - <tabstop>compactBox</tabstop> <tabstop>categoriesBtn</tabstop> <tabstop>baseDirEdit</tabstop> <tabstop>browseBaseDirBtn</tabstop> diff --git a/src/settingsdialoggeneral.cpp b/src/settingsdialoggeneral.cpp index 8ecdcbb9..ae924393 100644 --- a/src/settingsdialoggeneral.cpp +++ b/src/settingsdialoggeneral.cpp @@ -51,6 +51,7 @@ GeneralSettingsTab::GeneralSettingsTab(Settings& s, SettingsDialog& d) setContainsColor(settings().colors().modlistContainsPlugin()); setContainedColor(settings().colors().pluginListContained()); + ui->centerDialogs->setChecked(settings().geometry().centerDialogs()); ui->compactBox->setChecked(settings().interface().compactDownloads()); ui->showMetaBox->setChecked(settings().interface().metaDownloads()); ui->usePrereleaseBox->setChecked(settings().usePrereleases()); @@ -91,6 +92,7 @@ void GeneralSettingsTab::update() settings().colors().setModlistContainsPlugin(getContainsColor()); settings().colors().setPluginListContained(getContainedColor()); + settings().geometry().setCenterDialogs(ui->centerDialogs->isChecked()); settings().interface().setCompactDownloads(ui->compactBox->isChecked()); settings().interface().setMetaDownloads(ui->showMetaBox->isChecked()); settings().setUsePrereleases(ui->usePrereleaseBox->isChecked()); |
