-
Notifications
You must be signed in to change notification settings - Fork 0
/
SettingsDialog.cpp
114 lines (95 loc) · 3.5 KB
/
SettingsDialog.cpp
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
112
113
114
#include "SettingsDialog.h"
#include "ui_SettingsDialog.h"
#include <QSettings>
#include <QColor>
#include <QFileDialog>
#include <QDebug>
SettingsDialog::SettingsDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::SettingsDialog)
{
ui->setupUi(this);
connect(ui->customDisplayNameButton, SIGNAL(toggled(bool)), ui->customDisplayNameEdit, SLOT(setEnabled(bool)));
readSettings();
saveSettings();
}
SettingsDialog::~SettingsDialog()
{
delete ui;
}
int SettingsDialog::exec()
{
readSettings();
if(!QDialog::exec()) return QDialog::Rejected;
saveSettings();
return QDialog::Accepted;
}
void SettingsDialog::on_defaultButton_clicked()
{
QSettings settings;
settings.clear();
readSettings();
}
void SettingsDialog::on_programDirectoryBrowse_clicked()
{
QString path = ui->programDirectory->text();
path = QFileDialog::getExistingDirectory(this, "Choose Program Directory", path);
if(path.isEmpty()) return;
ui->programDirectory->setText(path);
}
void SettingsDialog::on_workingDirectoryBrowse_clicked()
{
QString path = ui->workingDirectory->text();
path = QFileDialog::getExistingDirectory(this, "Choose Working Directory", path);
if(path.isEmpty()) return;
ui->workingDirectory->setText(path);
}
void SettingsDialog::readSettings()
{
QSettings settings;
settings.beginGroup(APPEARANCE);
ui->consoleColorBox->setColor(settings.value(CONSOLE_COLOR, QColor(255, 255, 255)).value<QColor>());
ui->textColorBox->setColor(settings.value(TEXT_COLOR, QColor(0, 0, 0)).value<QColor>());
ui->fontBox->setCurrentFont(settings.value(FONT, QFont("Courier New")).value<QFont>());
ui->fontSizeBox->setValue(settings.value(FONT_SIZE, 14).toInt());
ui->scrollback->setValue(settings.value(MAXIMUM_SCROLLBACK, 100000).toInt());
settings.endGroup();
settings.beginGroup(KISS_CONNECTION);
settings.beginGroup(DISPLAY_NAME);
const bool def = settings.value(DEFAULT, true).toBool();
ui->defaultDisplayNameButton->setChecked(def);
ui->customDisplayNameButton->setChecked(!def);
ui->customDisplayNameEdit->setText(settings.value(CUSTOM_NAME, "").toString());
settings.endGroup();
ui->timeoutBox->setValue(settings.value(TIMEOUT, 5).toInt());
ui->disallowRemoteBox->setChecked(settings.value(DISALLOW_REMOTE, false).toBool());
settings.endGroup();
settings.beginGroup(STORAGE);
ui->programDirectory->setText(settings.value(PROGRAM_DIRECTORY, QDir::homePath() + "/" + tr("KISS Programs")).toString());
ui->workingDirectory->setText(settings.value(WORKING_DIRECTORY, QDir::homePath() + "/" + tr("KISS Work Dir")).toString());
settings.endGroup();
}
void SettingsDialog::saveSettings()
{
QSettings settings;
const bool defaultChecked = ui->defaultDisplayNameButton->isChecked();
settings.beginGroup(APPEARANCE);
settings.setValue(CONSOLE_COLOR, ui->consoleColorBox->getColor());
settings.setValue(TEXT_COLOR, ui->textColorBox->getColor());
settings.setValue(FONT, ui->fontBox->currentFont());
settings.setValue(FONT_SIZE, ui->fontSizeBox->value());
settings.setValue(MAXIMUM_SCROLLBACK, ui->scrollback->value());
settings.endGroup();
settings.beginGroup(KISS_CONNECTION);
settings.beginGroup(DISPLAY_NAME);
settings.setValue(DEFAULT, defaultChecked);
settings.setValue(CUSTOM_NAME, ui->customDisplayNameEdit->text());
settings.endGroup();
settings.setValue(TIMEOUT, ui->timeoutBox->value());
settings.setValue(DISALLOW_REMOTE, ui->disallowRemoteBox->isChecked());
settings.endGroup();
settings.beginGroup(STORAGE);
settings.setValue(PROGRAM_DIRECTORY, ui->programDirectory->text());
settings.endGroup();
settings.sync();
}