-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathsettingswindow.cpp
More file actions
111 lines (93 loc) · 3.65 KB
/
Copy pathsettingswindow.cpp
File metadata and controls
111 lines (93 loc) · 3.65 KB
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include "settingswindow.h"
#include "ui_settingswindow.h"
#include "utils.h"
#include <QFileDialog>
#include <QStyleHints>
SettingsWindow::SettingsWindow(const Settings &programSettings, QWidget *parent)
: QDialog(parent)
, ui(new Ui::settingswindow)
{
setModal(true);
ui->setupUi(this);
connect(ui->runonstartupCheckBox, &QCheckBox::clicked, this, &SettingsWindow::setRunOnStartup);
connect(ui->selectstyleComboBox,
&QComboBox::currentTextChanged,
this,
[this](const QString &text) {
this->ui->removestylePushButton->setEnabled(text != "Default");
});
connect(ui->loadstylePushButton, &QPushButton::clicked, this, &SettingsWindow::saveStyle);
connect(ui->removestylePushButton, &QPushButton::clicked, this, &SettingsWindow::removeStyle);
ui->runonstartupCheckBox->setChecked(programSettings.runOnstartup);
ui->batteryfullnotificationCheckBox->setChecked(programSettings.notificationBatteryFull);
ui->batterylownotificationCheckBox->setChecked(programSettings.notificationBatteryLow);
ui->batterylowtresholdSpinBox->setValue(programSettings.batteryLowThreshold);
ui->enableaudioNotificationCheckBox->setChecked(programSettings.audioNotification);
ui->updateintervaltimeDoubleSpinBox->setValue((double) programSettings.msecUpdateIntervalTime
/ 1000);
loadStyles();
ui->selectstyleComboBox->setCurrentIndex(
ui->selectstyleComboBox->findText(programSettings.styleName));
}
Settings SettingsWindow::getSettings()
{
Settings settings;
settings.runOnstartup = ui->runonstartupCheckBox->isChecked();
settings.notificationBatteryFull = ui->batteryfullnotificationCheckBox->isChecked();
settings.notificationBatteryLow = ui->batterylownotificationCheckBox->isChecked();
settings.batteryLowThreshold = ui->batterylowtresholdSpinBox->value();
settings.audioNotification = ui->enableaudioNotificationCheckBox->isChecked();
settings.msecUpdateIntervalTime = ui->updateintervaltimeDoubleSpinBox->value() * 1000;
settings.styleName = ui->selectstyleComboBox->currentText();
return settings;
}
void SettingsWindow::setRunOnStartup()
{
bool enabled = setOSRunOnStartup(ui->runonstartupCheckBox->isChecked());
ui->runonstartupCheckBox->setChecked(enabled);
}
void SettingsWindow::loadStyles()
{
QString destination = PROGRAM_STYLES_PATH;
QDir directory = QDir(destination);
QStringList list = directory.entryList(QStringList() << "*.qss", QDir::Files);
ui->selectstyleComboBox->clear();
ui->selectstyleComboBox->addItem("Default");
ui->selectstyleComboBox->addItems(list);
}
void SettingsWindow::saveStyle()
{
QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setNameFilter("QStyle (*.qss)");
if (dialog.exec())
{
QStringList fileUrls = dialog.selectedFiles();
QUrl fileUrl = QUrl(fileUrls[0]);
if (fileUrl.isValid()) {
QString source = fileUrl.path().removeFirst();
QString destination = PROGRAM_STYLES_PATH;
QDir().mkpath(destination);
destination += "/" + fileUrl.fileName();
QFile file(destination);
if (file.exists()) {
file.remove();
}
QFile::copy(source, destination);
loadStyles();
}
}
}
void SettingsWindow::removeStyle()
{
QString stylePath = PROGRAM_STYLES_PATH + "/" + ui->selectstyleComboBox->currentText();
QFile file(stylePath);
if (file.exists()) {
file.remove();
}
loadStyles();
}
SettingsWindow::~SettingsWindow()
{
delete ui;
}