Dialog for changing setting values.
[irwi] / src / advsettingsdlg.cpp
1 #include <QGridLayout>
2 #include <QHeaderView>
3 #include <QSettings>
4 #include <QProgressBar>
5 #include <QPushButton>
6 #include <QMessageBox>
7 #include <QTableWidget>
8
9 #include "advsettingsdlg.h"
10
11 AdvSettingsDlg::AdvSettingsDlg(QDialog *parent)
12     : QDialog(parent)
13     , layout(NULL)
14     , settings(NULL)
15     , resetBtn(NULL)
16     , saveBtn(NULL)
17     , table(NULL)
18 {
19     settings = new QSettings(this);
20     setWindowTitle(tr("Advanced settings"));
21
22     resetBtn = new QPushButton(tr("Defaults"), this);
23     saveBtn = new QPushButton(tr("Save"), this);
24     table = new QTableWidget(0, 2, this);
25     table->verticalHeader()->setVisible(false);
26     table->horizontalHeader()->setVisible(false);
27     connect(resetBtn, SIGNAL(clicked()), this, SLOT(resetToDefaults()));
28     connect(saveBtn, SIGNAL(clicked()), this, SLOT(save()));
29
30     layout = new QGridLayout(this);
31     layout->addWidget(table, 0, 0, 2, 3);
32     layout->addWidget(resetBtn, 0, 4);
33     layout->addWidget(saveBtn, 1, 4);
34     setLayout(layout);
35     refreshList();
36 }
37
38 AdvSettingsDlg::~AdvSettingsDlg()
39 {
40     delete layout;
41     delete settings;
42     delete resetBtn;
43     delete saveBtn;
44     delete table;
45 }
46
47 void AdvSettingsDlg::save()
48 {
49     for (int i = 0; i < table->rowCount(); ++i)
50     {
51         settings->setValue(table->item(i, 0)->text(),
52                            table->item(i, 1)->text());
53     }
54     this->done(0);
55 }
56
57 int AdvSettingsDlg::refreshList()
58 {
59     table->clear();
60     table->setRowCount(0);
61
62     QStringList keys = settings->allKeys();
63
64     for (int i = 0; i < keys.size(); ++i)
65     {
66         QTableWidgetItem *key = new QTableWidgetItem(keys.at(i));
67         QTableWidgetItem *value = new QTableWidgetItem(
68                     settings->value(keys.at(i), "n/a").toString());
69         key->setFlags(Qt::NoItemFlags | Qt::ItemIsEnabled);
70         value->setFlags(Qt::ItemIsEnabled | Qt::ItemIsEditable);
71         table->insertRow(table->rowCount());
72         table->setItem(i, 0, key);
73         table->setItem(i, 1, value);
74     }
75     table->resizeColumnsToContents();
76 }
77
78
79 void AdvSettingsDlg::resetToDefaults()
80 {
81     QMessageBox mbox(QMessageBox::Question, "",
82             tr("All settings will be reset to defaults"),
83             QMessageBox::Ok, this); // Cancel by clicking outside the
84                                     // messagebox in maemo
85     if (mbox.exec() == QMessageBox::Ok)
86     {
87         settings->setValue("lircPort", 8765);
88         settings->setValue("remoteName", "No remote selected");
89         settings->setValue("lircConf", "/etc/lircd.conf");
90         settings->setValue("cmd0", "VOL+");
91         settings->setValue("cmd1", "VOL-");
92         settings->setValue("cmd2", "P+");
93         settings->setValue("cmd3", "P-");
94         settings->setValue("cmd4", "ON/OFF");
95         settings->setValue("cmd5", "MUTE");
96         settings->setValue("remoteUrl",
97                 "http://mercury.wipsl.com/irwi/remotes/");
98         settings->setValue("bgAlpha", 192);
99
100         refreshList();
101     }
102 }
103
104