Website updated.
[irwi] / src / advsettingsdlg.cpp
index 7e10a0b..8a2a15f 100644 (file)
-#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
+}
+
+