00001 #include <QVBoxLayout>
00002 #include <QHBoxLayout>
00003 #include <QSettings>
00004 #include <QPushButton>
00005 #include <QMessageBox>
00006
00007 #include "advsettingsdlg.h"
00008 #include "settingstable.h"
00009
00010 AdvSettingsDlg::AdvSettingsDlg(QDialog *parent)
00011 : QDialog(parent)
00012 , layout(NULL)
00013 , btnLayout(NULL)
00014 , settings(NULL)
00015 , resetBtn(NULL)
00016 , saveBtn(NULL)
00017 , table(NULL)
00018 {
00019 setWindowTitle(tr("Advanced settings"));
00020 setMinimumHeight(320);
00021
00022 settings = new QSettings(this);
00023 resetBtn = new QPushButton(tr("Defaults"), this);
00024 saveBtn = new QPushButton(tr("Save"), this);
00025 table = new SettingsTable(this);
00026 layout = new QHBoxLayout(this);
00027 btnLayout = new QVBoxLayout();
00028
00029 connect(resetBtn, SIGNAL(clicked()), this, SLOT(resetToDefaults()));
00030 connect(saveBtn, SIGNAL(clicked()), this, SLOT(save()));
00031
00032 btnLayout->addWidget(resetBtn);
00033 btnLayout->addWidget(saveBtn);
00034 layout->addWidget(table, Qt::AlignLeft);
00035 layout->addLayout(btnLayout, 0);
00036
00037 refreshList();
00038 }
00039
00040 AdvSettingsDlg::~AdvSettingsDlg()
00041 {
00042 delete layout;
00043 delete settings;
00044 delete resetBtn;
00045 delete saveBtn;
00046 delete table;
00047 }
00048
00049 void AdvSettingsDlg::save()
00050 {
00051 for (int i = 0; i < table->rowCount(); ++i)
00052 {
00053 settings->setValue(table->key(i), table->value(i));
00054 }
00055 done(0);
00056 }
00057
00058 void AdvSettingsDlg::refreshList()
00059 {
00060 table->removeAllRows();
00061
00062 QStringList keys = settings->allKeys();
00063 for (int i = 0; i < keys.size(); ++i)
00064 {
00065 table->appendRow(keys.at(i),
00066 settings->value(keys.at(i), "n/a").toString());
00067 }
00068 }
00069
00070 void AdvSettingsDlg::resetToDefaults()
00071 {
00072 QMessageBox mbox(QMessageBox::Question, "",
00073 tr("All settings will be reset to defaults"),
00074 QMessageBox::Cancel | QMessageBox::Ok, this);
00075 if (mbox.exec() == QMessageBox::Ok)
00076 {
00077 settings->setValue("lircPort", 8765);
00078 settings->setValue("remoteName", "No remote selected");
00079 settings->setValue("lircConf", "/etc/lircd.conf");
00080 settings->setValue("cmd0", "VOL+");
00081 settings->setValue("cmd1", "VOL-");
00082 settings->setValue("cmd2", "P+");
00083 settings->setValue("cmd3", "P-");
00084 settings->setValue("cmd4", "ON/OFF");
00085 settings->setValue("cmd5", "MUTE");
00086 settings->setValue("remoteUrl",
00087 "http://mercury.wipsl.com/irwi/remotes/");
00088 settings->setValue("bgAlpha", 192);
00089
00090 refreshList();
00091 }
00092 }
00093