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