Dialog for changing setting values.
authorJari Jarvi <t7jaja00@students.oamk.fi>
Thu, 27 May 2010 07:54:15 +0000 (10:54 +0300)
committerJari Jarvi <t7jaja00@students.oamk.fi>
Thu, 27 May 2010 07:54:15 +0000 (10:54 +0300)
src/advsettingsdlg.cpp
src/advsettingsdlg.h
src/mainwidget.cpp

index 7e10a0b..134c5ed 100644 (file)
 #include <QGridLayout>
+#include <QHeaderView>
 #include <QSettings>
 #include <QProgressBar>
 #include <QPushButton>
 #include <QMessageBox>
+#include <QTableWidget>
 
 #include "advsettingsdlg.h"
 
 AdvSettingsDlg::AdvSettingsDlg(QDialog *parent)
     : QDialog(parent)
+    , layout(NULL)
+    , settings(NULL)
+    , resetBtn(NULL)
+    , saveBtn(NULL)
+    , table(NULL)
 {
     settings = new QSettings(this);
     setWindowTitle(tr("Advanced settings"));
 
-    layout = new QGridLayout(this);
-    resetBtn = new QPushButton(tr("Reset to defaults"), this);
-
+    resetBtn = new QPushButton(tr("Defaults"), this);
+    saveBtn = new QPushButton(tr("Save"), this);
+    table = new QTableWidget(0, 2, this);
+    table->verticalHeader()->setVisible(false);
+    table->horizontalHeader()->setVisible(false);
     connect(resetBtn, SIGNAL(clicked()), this, SLOT(resetToDefaults()));
-    layout->addWidget(resetBtn);
+    connect(saveBtn, SIGNAL(clicked()), this, SLOT(save()));
+
+    layout = new QGridLayout(this);
+    layout->addWidget(table, 0, 0, 2, 3);
+    layout->addWidget(resetBtn, 0, 4);
+    layout->addWidget(saveBtn, 1, 4);
     setLayout(layout);
+    refreshList();
 }
 
 AdvSettingsDlg::~AdvSettingsDlg()
 {
     delete layout;
-    layout = NULL;
     delete settings;
-    settings = NULL;
+    delete resetBtn;
+    delete saveBtn;
+    delete table;
+}
+
+void AdvSettingsDlg::save()
+{
+    for (int i = 0; i < table->rowCount(); ++i)
+    {
+        settings->setValue(table->item(i, 0)->text(),
+                           table->item(i, 1)->text());
+    }
+    this->done(0);
 }
 
+int AdvSettingsDlg::refreshList()
+{
+    table->clear();
+    table->setRowCount(0);
+
+    QStringList keys = settings->allKeys();
+
+    for (int i = 0; i < keys.size(); ++i)
+    {
+        QTableWidgetItem *key = new QTableWidgetItem(keys.at(i));
+        QTableWidgetItem *value = new QTableWidgetItem(
+                    settings->value(keys.at(i), "n/a").toString());
+        key->setFlags(Qt::NoItemFlags | Qt::ItemIsEnabled);
+        value->setFlags(Qt::ItemIsEnabled | Qt::ItemIsEditable);
+        table->insertRow(table->rowCount());
+        table->setItem(i, 0, key);
+        table->setItem(i, 1, value);
+    }
+    table->resizeColumnsToContents();
+}
+
+
 void AdvSettingsDlg::resetToDefaults()
 {
     QMessageBox mbox(QMessageBox::Question, "",
             tr("All settings will be reset to defaults"),
-            QMessageBox::Ok | QMessageBox::Cancel, this);
+            QMessageBox::Ok, this); // Cancel by clicking outside the
+                                    // messagebox in maemo
     if (mbox.exec() == QMessageBox::Ok)
     {
+        settings->setValue("lircPort", 8765);
+        settings->setValue("remoteName", "No remote selected");
+        settings->setValue("lircConf", "/etc/lircd.conf");
+        settings->setValue("cmd0", "VOL+");
+        settings->setValue("cmd1", "VOL-");
+        settings->setValue("cmd2", "P+");
+        settings->setValue("cmd3", "P-");
+        settings->setValue("cmd4", "ON/OFF");
+        settings->setValue("cmd5", "MUTE");
+        settings->setValue("remoteUrl",
+                "http://mercury.wipsl.com/irwi/remotes/");
+        settings->setValue("bgAlpha", 192);
+
+        refreshList();
     }
 }
 
index 70e8a50..41b21a0 100644 (file)
@@ -2,27 +2,34 @@
 #define _ADVSETTINGSDLG_H_
 
 #include <QDialog>
+#include <QObject>
 
-class QGridLayout;
 class QSettings;
 class QPushButton;
+class QGridLayout;
+class QTableWidget;
 
 class AdvSettingsDlg : public QDialog
 {
+    Q_OBJECT
+
 public:
     AdvSettingsDlg(QDialog *parent = 0);
     ~AdvSettingsDlg();
 
 private:
-    AdvSettingsDlg(const AdvSettingsDlg &);
+    int refreshList();
 
 private slots:
     void resetToDefaults();
+    void save();
 
 private:
     QGridLayout *layout;
     QSettings *settings;
     QPushButton *resetBtn;
+    QPushButton *saveBtn;
+    QTableWidget *table;
 };
 
 #endif // _ADVSETTINGSDLG_H_
index 24e4bfa..69cdad2 100644 (file)
@@ -24,6 +24,8 @@ MainWidget::MainWidget (QWidget *parent)
         "/usr/share/icons/hicolor/48x48/hildon/statusarea_volume_mute.png"
     };
 
+    int bgAlpha = settings.value("bgAlpha", "192").toInt();
+
     for (int i = 0; i < BUTTON_COUNT; ++i)
     {
         QToolButton *button = new QToolButton(this);
@@ -31,7 +33,7 @@ MainWidget::MainWidget (QWidget *parent)
             settings.value(QString("buttonIcon") + QString::number(i),
                 iconNames[i]).toString()))); 
         buttons[i] = button;
-        button->setPalette(QPalette(QColor(0, 0, 0, 192)));
+        button->setPalette(QPalette(QColor(0, 0, 0, bgAlpha)));
         layout->addWidget(button, i%2, i/2);
     }