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