summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/settings.cpp34
-rw-r--r--src/settings.h6
-rw-r--r--src/settingsdialog.ui208
-rw-r--r--src/settingsdialoggeneral.cpp2
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());