Fixed mainwidget.cpp
[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     resetBtn = new QPushButton(tr("Defaults"), this);
24     saveBtn = new QPushButton(tr("Save"), this);
25     table = new SettingsTable(this);
26     layout = new QHBoxLayout(this);
27     btnLayout = new QVBoxLayout();
28
29     connect(resetBtn, SIGNAL(clicked()), this, SLOT(resetToDefaults()));
30     connect(saveBtn, SIGNAL(clicked()), this, SLOT(save()));
31
32     btnLayout->addWidget(resetBtn);
33     btnLayout->addWidget(saveBtn);
34     layout->addWidget(table, Qt::AlignLeft);
35     layout->addLayout(btnLayout, 0);
36
37     refreshList();
38 }
39
40 AdvSettingsDlg::~AdvSettingsDlg()
41 {
42     delete layout;
43     delete settings;
44     delete resetBtn;
45     delete saveBtn;
46     delete table;
47 }
48
49 void AdvSettingsDlg::save()
50 {
51     for (int i = 0; i < table->rowCount(); ++i)
52     {
53         settings->setValue(table->key(i), table->value(i));
54     }
55     done(0); // close dialog
56 }
57
58 void AdvSettingsDlg::refreshList()
59 {
60     table->removeAllRows();
61
62     QStringList keys = settings->allKeys();
63     for (int i = 0; i < keys.size(); ++i)
64     {
65         table->appendRow(keys.at(i),
66                 settings->value(keys.at(i), "n/a").toString());
67     }
68 }
69
70 void AdvSettingsDlg::resetToDefaults()
71 {
72     QMessageBox mbox(QMessageBox::Question, "",
73             tr("All settings will be reset to defaults"),
74             QMessageBox::Cancel | QMessageBox::Ok, this); 
75     if (mbox.exec() == QMessageBox::Ok)
76     {
77         settings->setValue("lircPort", 8765);
78         settings->setValue("remoteName", "No remote selected");
79         settings->setValue("lircConf", "/etc/lircd.conf");
80         settings->setValue("cmd0", "VOL+");
81         settings->setValue("cmd1", "VOL-");
82         settings->setValue("cmd2", "P+");
83         settings->setValue("cmd3", "P-");
84         settings->setValue("cmd4", "ON/OFF");
85         settings->setValue("cmd5", "MUTE");
86         settings->setValue("remoteUrl",
87                 "http://mercury.wipsl.com/irwi/remotes/");
88         settings->setValue("bgAlpha", 192);
89
90         refreshList();
91     }
92 }
93