summaryrefslogtreecommitdiff
path: root/src/settingsdialoguserinterface.cpp
blob: cdd30f2e582842b51394196079979324ba97a801 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "settingsdialoguserinterface.h"
#include "ui_settingsdialog.h"
#include "shared/appconfig.h"
#include "categoriesdialog.h"
#include "colortable.h"
#include <utility.h>
#include <questionboxmemory.h>

using namespace MOBase;

UserInterfaceSettingsTab::UserInterfaceSettingsTab(Settings& s, SettingsDialog& d)
  : SettingsTab(s, d)
{

  // connect before setting to trigger
  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->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());

  // download list
  ui->compactBox->setChecked(settings().interface().compactDownloads());
  ui->showMetaBox->setChecked(settings().interface().metaDownloads());

  // colors
  ui->colorTable->load(s);

  QObject::connect(ui->resetColorsBtn, &QPushButton::clicked, [&] { ui->colorTable->resetColors(); });

}

void UserInterfaceSettingsTab::update()
{
  // mod list
  settings().colors().setColorSeparatorScrollbar(ui->colorSeparatorsBox->isChecked());
  settings().interface().setDisplayForeign(ui->displayForeignBox->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());

  // download list
  settings().interface().setCompactDownloads(ui->compactBox->isChecked());
  settings().interface().setMetaDownloads(ui->showMetaBox->isChecked());

  // colors
  ui->colorTable->commitColors();
}

void UserInterfaceSettingsTab::updateCollapsibleSeparatorsGroup()
{
  const auto checked = ui->collapsibleSeparatorsAscBox->isChecked() ||
    ui->collapsibleSeparatorsDscBox->isChecked();
  ui->collapsibleSeparatorsConflictsBox->setEnabled(checked);
  ui->collapsibleSeparatorsPerProfileBox->setEnabled(checked);
}