Default settings will be set if config file is empty.
[irwi] / src / advsettingsdlg.cpp
1 #include <QVBoxLayout>
2 #include <QHBoxLayout>
3 #include <QSettings>
4 #include <QPushButton>
5 #include <QMessageBox>
6
7 #include "advsettingsdlg.h"
8 #include "settingstable.h"
9
10 AdvSettingsDlg::AdvSettingsDlg(QDialog *parent)
11     : QDialog(parent)
12     , layout(NULL)
13     , btnLayout(NULL)
14     , settings(NULL)
15     , resetBtn(NULL)
16     , saveBtn(NULL)
17     , table(NULL)
18 {
19     setWindowTitle(tr("Advanced settings"));
20     setMinimumHeight(320);
21
22     settings = new QSettings(this);
23
24     // Set default values on first startup
25     if (settings->allKeys().isEmpty())
26         setDefaults();
27
28     resetBtn = new QPushButton(tr("Defaults"), this);
29     saveBtn = new QPushButton(tr("Save"), this);
30     table = new SettingsTable(this);
31     layout = new QHBoxLayout(this);
32     btnLayout = new QVBoxLayout();
33
34     connect(resetBtn, SIGNAL(clicked()), this, SLOT(showResetQuery()));
35     connect(saveBtn, SIGNAL(clicked()), this, SLOT(save()));
36
37     btnLayout->addWidget(resetBtn);
38     btnLayout->addWidget(saveBtn);
39     layout->addWidget(table, Qt::AlignLeft);
40     layout->addLayout(btnLayout, 0);
41
42     refreshList();
43 }
44
45 AdvSettingsDlg::~AdvSettingsDlg()
46 {
47     delete layout;
48     delete settings;
49     delete resetBtn;
50     delete saveBtn;
51     delete table;
52 }
53
54 void AdvSettingsDlg::refreshList()
55 {
56     table->removeAllRows();
57
58     QStringList keys = settings->allKeys();
59     for (int i = 0; i < keys.size(); ++i)
60     {
61         table->appendRow(keys.at(i),
62             settings->value(keys.at(i), "n/a").toString());
63     }
64 }
65
66 void AdvSettingsDlg::setDefaults()
67 {
68     settings->setValue("lircPort", 8765);
69     settings->setValue("remoteName", "No remote selected");
70     settings->setValue("lircConf", "/etc/lircd.conf");
71     settings->setValue("cmd0", "VOL+");
72     settings->setValue("cmd1", "VOL-");
73     settings->setValue("cmd2", "P+");
74     settings->setValue("cmd3", "P-");
75     settings->setValue("cmd4", "POWER");
76     settings->setValue("cmd5", "MUTE");
77     settings->setValue("remoteUrl",
78         "http://mercury.wipsl.com/irwi/remotes/");
79     settings->setValue("bgAlpha", 192);
80 }
81
82 void AdvSettingsDlg::showResetQuery()
83 {
84     QMessageBox mbox(QMessageBox::Question, "",
85         tr("Reset all settings to defaults?"),
86         QMessageBox::Cancel | QMessageBox::Yes, this); 
87     if (mbox.exec() == QMessageBox::Yes)
88     {
89         setDefaults();
90         refreshList();
91     }
92 }
93
94 void AdvSettingsDlg::save()
95 {
96     for (int i = 0; i < table->rowCount(); ++i)
97     {
98         settings->setValue(table->key(i), table->value(i));
99     }
100     done(0); // close dialog
101 }
102
103
104