diff options
| author | Mikaël Capelle <capelle.mikael@gmail.com> | 2021-01-11 19:44:43 +0100 |
|---|---|---|
| committer | Mikaël Capelle <capelle.mikael@gmail.com> | 2021-01-11 19:44:43 +0100 |
| commit | 49c2c8f3330edccf54d1b5cc9958295288358c1c (patch) | |
| tree | 78104ec4a01853e6a3b16b15030c4d8b3a0eb0a1 /src | |
| parent | 08520822eb91c065a0893da0e2e9d11574450208 (diff) | |
Add setting to enable/disable collapsible priority depending on the sort order.
Diffstat (limited to 'src')
| -rw-r--r-- | src/modlistview.cpp | 2 | ||||
| -rw-r--r-- | src/settings.cpp | 11 | ||||
| -rw-r--r-- | src/settings.h | 4 | ||||
| -rw-r--r-- | src/settingsdialog.ui | 53 | ||||
| -rw-r--r-- | src/settingsdialoguserinterface.cpp | 20 | ||||
| -rw-r--r-- | src/settingsdialoguserinterface.h | 6 |
6 files changed, 82 insertions, 14 deletions
diff --git a/src/modlistview.cpp b/src/modlistview.cpp index 88c588f6..ae905a6e 100644 --- a/src/modlistview.cpp +++ b/src/modlistview.cpp @@ -687,7 +687,7 @@ void ModListView::updateGroupByProxy() else if (groupIndex == GroupBy::NEXUS_ID) {
nextProxy = m_byNexusIdProxy;
}
- else if (m_core->settings().interface().collapsibleSeparators()
+ else if (m_core->settings().interface().collapsibleSeparators(m_sortProxy->sortOrder())
&& m_sortProxy->sortColumn() == ModList::COL_PRIORITY) {
m_byPriorityProxy->setSortOrder(m_sortProxy->sortOrder());
nextProxy = m_byPriorityProxy;
diff --git a/src/settings.cpp b/src/settings.cpp index 488a9b01..d1f3ef4f 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -2175,14 +2175,17 @@ void InterfaceSettings::setStyleName(const QString& name) set(m_Settings, "Settings", "style", name); } -bool InterfaceSettings::collapsibleSeparators() const +bool InterfaceSettings::collapsibleSeparators(Qt::SortOrder order) const { - return get<bool>(m_Settings, "Settings", "collapsible_separators", true); + return get<bool>(m_Settings, "Settings", + order == Qt::AscendingOrder ? "collapsible_separators_asc" : "collapsible_separators_dsc", + order == Qt::AscendingOrder); } -void InterfaceSettings::setCollapsibleSeparators(bool b) +void InterfaceSettings::setCollapsibleSeparators(bool ascending, bool descending) { - set(m_Settings, "Settings", "collapsible_separators", b); + set(m_Settings, "Settings", "collapsible_separators_asc", ascending); + set(m_Settings, "Settings", "collapsible_separators_dsc", descending); } bool InterfaceSettings::collapsibleSeparatorsConflicts() const diff --git a/src/settings.h b/src/settings.h index efcfee57..484ce163 100644 --- a/src/settings.h +++ b/src/settings.h @@ -623,8 +623,8 @@ public: // whether to use collapsible separators when possible // - bool collapsibleSeparators() const; - void setCollapsibleSeparators(bool b); + bool collapsibleSeparators(Qt::SortOrder order) const; + void setCollapsibleSeparators(bool ascending, bool descending); // whether to display mod conflicts on separators when collapsed // diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui index d5c93c5c..b23e6d90 100644 --- a/src/settingsdialog.ui +++ b/src/settingsdialog.ui @@ -306,7 +306,10 @@ If you disable this feature, MO will only display official DLCs this way. Please <bool>false</bool> </property> <property name="checkable"> - <bool>true</bool> + <bool>false</bool> + </property> + <property name="checked"> + <bool>false</bool> </property> <layout class="QVBoxLayout" name="verticalLayout_20"> <property name="leftMargin"> @@ -316,6 +319,54 @@ If you disable this feature, MO will only display official DLCs this way. Please <number>7</number> </property> <item> + <widget class="QWidget" name="widget_8" native="true"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_13"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item> + <widget class="QLabel" name="label_18"> + <property name="text"> + <string>When sorting by</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="collapsibleSeparatorsAscBox"> + <property name="text"> + <string>ascending priority</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="collapsibleSeparatorsDscBox"> + <property name="text"> + <string>descending priority</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> <widget class="QCheckBox" name="collapsibleSeparatorsConflictsBox"> <property name="toolTip"> <string>Display mod conflicts on and from separator when collapsed, and show plugins from collapsed separators.</string> diff --git a/src/settingsdialoguserinterface.cpp b/src/settingsdialoguserinterface.cpp index 5d856395..cdd30f2e 100644 --- a/src/settingsdialoguserinterface.cpp +++ b/src/settingsdialoguserinterface.cpp @@ -13,16 +13,15 @@ UserInterfaceSettingsTab::UserInterfaceSettingsTab(Settings& s, SettingsDialog& { // connect before setting to trigger - QObject::connect(ui->collapsibleSeparatorsBox, &QGroupBox::toggled, [=](auto&& on) { - ui->collapsibleSeparatorsConflictsBox->setEnabled(on); - ui->collapsibleSeparatorsPerProfileBox->setEnabled(on); - }); + QObject::connect(ui->collapsibleSeparatorsAscBox, &QCheckBox::toggled, [=] { updateCollapsibleSeparatorsGroup(); }); + QObject::connect(ui->collapsibleSeparatorsDscBox, &QCheckBox::toggled, [=] { updateCollapsibleSeparatorsGroup(); }); // mod list ui->displayForeignBox->setChecked(settings().interface().displayForeign()); ui->colorSeparatorsBox->setChecked(settings().colors().colorSeparatorScrollbar()); ui->collapsibleSeparatorsConflictsBox->setChecked(settings().interface().collapsibleSeparatorsConflicts()); - ui->collapsibleSeparatorsBox->setChecked(settings().interface().collapsibleSeparators()); + ui->collapsibleSeparatorsAscBox->setChecked(settings().interface().collapsibleSeparators(Qt::AscendingOrder)); + ui->collapsibleSeparatorsDscBox->setChecked(settings().interface().collapsibleSeparators(Qt::DescendingOrder)); ui->collapsibleSeparatorsPerProfileBox->setChecked(settings().interface().collapsibleSeparatorsPerProfile()); ui->saveFiltersBox->setChecked(settings().interface().saveFilters()); @@ -42,7 +41,8 @@ void UserInterfaceSettingsTab::update() // mod list settings().colors().setColorSeparatorScrollbar(ui->colorSeparatorsBox->isChecked()); settings().interface().setDisplayForeign(ui->displayForeignBox->isChecked()); - settings().interface().setCollapsibleSeparators(ui->collapsibleSeparatorsBox->isChecked()); + settings().interface().setCollapsibleSeparators( + ui->collapsibleSeparatorsAscBox->isChecked(), ui->collapsibleSeparatorsDscBox->isChecked()); settings().interface().setCollapsibleSeparatorsConflicts(ui->collapsibleSeparatorsConflictsBox->isChecked()); settings().interface().setCollapsibleSeparatorsPerProfile(ui->collapsibleSeparatorsPerProfileBox->isChecked()); settings().interface().setSaveFilters(ui->saveFiltersBox->isChecked()); @@ -54,3 +54,11 @@ void UserInterfaceSettingsTab::update() // colors ui->colorTable->commitColors(); } + +void UserInterfaceSettingsTab::updateCollapsibleSeparatorsGroup() +{ + const auto checked = ui->collapsibleSeparatorsAscBox->isChecked() || + ui->collapsibleSeparatorsDscBox->isChecked(); + ui->collapsibleSeparatorsConflictsBox->setEnabled(checked); + ui->collapsibleSeparatorsPerProfileBox->setEnabled(checked); +} diff --git a/src/settingsdialoguserinterface.h b/src/settingsdialoguserinterface.h index 8b4d48fa..4609ae54 100644 --- a/src/settingsdialoguserinterface.h +++ b/src/settingsdialoguserinterface.h @@ -10,6 +10,12 @@ public: UserInterfaceSettingsTab(Settings& settings, SettingsDialog& dialog); void update() override; + +protected slots: + + // enable/disable the collapsible separators group depending on + // the checkbox states + void updateCollapsibleSeparatorsGroup(); }; #endif // SETTINGSDIALOGGENERAL_H |
