-#include <QGridLayout>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
#include <QSettings>
-#include <QProgressBar>
#include <QPushButton>
#include <QMessageBox>
+#include <QFont>
#include "advsettingsdlg.h"
+#include "settingstable.h"
-AdvSettingsDlg::AdvSettingsDlg(QDialog *parent)
+AdvSettingsDlg::AdvSettingsDlg(QWidget *parent)
: QDialog(parent)
+ , layout(NULL)
+ , btnLayout(NULL)
+ , settings(NULL)
+ , resetBtn(NULL)
+ , saveBtn(NULL)
+ , table(NULL)
{
- settings = new QSettings(this);
setWindowTitle(tr("Advanced settings"));
+ setMinimumHeight(320);
+
+ settings = new QSettings(this);
+
+ // Set default values on first startup
+ if (settings->allKeys().isEmpty())
+ setDefaults();
+
+ resetBtn = new QPushButton(tr("Defaults"), this);
+ saveBtn = new QPushButton(tr("Save"), this);
+ table = new SettingsTable(this);
+ layout = new QHBoxLayout(this);
+ btnLayout = new QVBoxLayout();
+
+ connect(resetBtn, SIGNAL(clicked()), this, SLOT(showResetQuery()));
+ connect(saveBtn, SIGNAL(clicked()), this, SLOT(save()));
- layout = new QGridLayout(this);
- resetBtn = new QPushButton(tr("Reset to defaults"), this);
+ btnLayout->addWidget(resetBtn);
+ btnLayout->addWidget(saveBtn);
+ layout->addWidget(table, Qt::AlignLeft);
+ layout->addLayout(btnLayout, 0);
- connect(resetBtn, SIGNAL(clicked()), this, SLOT(resetToDefaults()));
- layout->addWidget(resetBtn);
- setLayout(layout);
+ QFont tableFont = table->font();
+ tableFont.setPointSize(20);
+ table->setFont(tableFont);
+
+ refreshList();
}
AdvSettingsDlg::~AdvSettingsDlg()
{
delete layout;
- layout = NULL;
delete settings;
- settings = NULL;
+ delete resetBtn;
+ delete saveBtn;
+ delete table;
+}
+
+void AdvSettingsDlg::refreshList()
+{
+ table->removeAllRows();
+
+ QStringList keys = settings->allKeys();
+ for (int i = 0; i < keys.size(); ++i)
+ {
+ table->appendRow(keys.at(i),
+ settings->value(keys.at(i), "n/a").toString());
+ }
+}
+
+void AdvSettingsDlg::setDefaults()
+{
+ settings->setValue("lircPort", 8765);
+ settings->setValue("remoteName", "");
+ settings->setValue("remoteMfg", "");
+ settings->setValue("lircConf", "/home/user/.config/irwi/lirc.conf");
+ settings->setValue("cmd0", "VOLUP");
+ settings->setValue("cmd1", "VOLDOWN");
+ settings->setValue("cmd2", "CHUP");
+ settings->setValue("cmd3", "CHDOWN");
+ settings->setValue("cmd4", "POWER");
+ settings->setValue("cmd5", "MUTE");
+ settings->setValue("bgAlpha", 192);
+ settings->setValue("height", 147);
+ settings->setValue("width", 250);
+ settings->setValue("idleTimeout", 300);
+ settings->setValue("baseUrl", "http://mercury.wipsl.com/irwi/");
+ settings->setValue("symbolPath", "/usr/share/irwi/symbols/");
}
-void AdvSettingsDlg::resetToDefaults()
+void AdvSettingsDlg::showResetQuery()
{
QMessageBox mbox(QMessageBox::Question, "",
- tr("All settings will be reset to defaults"),
- QMessageBox::Ok | QMessageBox::Cancel, this);
- if (mbox.exec() == QMessageBox::Ok)
+ tr("Reset all settings to defaults?"),
+ QMessageBox::Cancel | QMessageBox::Yes, this);
+ if (mbox.exec() == QMessageBox::Yes)
{
+ setDefaults();
+ refreshList();
}
}
+void AdvSettingsDlg::save()
+{
+ for (int i = 0; i < table->rowCount(); ++i)
+ {
+ settings->setValue(table->key(i), table->value(i));
+ }
+ done(0); // close dialog
+}
+
+