Save region ID.
[yandex-traffic] / settingsDialog.cpp
index a64dd59..b2475b7 100644 (file)
 #include <QtGui>
+
+#ifdef Q_WS_MAEMO_5
+#include <QtMaemo5>
+#else
+#include "QtMaemo5Adapters.hpp"
+#endif
+
 #include "settingsDialog.hpp"
 
 
 // --------------------------------------------------
 // SettingsDialog
 // --------------------------------------------------
-SettingsDialog::SettingsDialog (QWidget *parent, Settings *settings)
-    : QDialog (parent)
+SettingsDialog::SettingsDialog (Settings *settings)
+    : QDialog (),
+      _settings (settings)
 {
     setWindowTitle (tr ("Settings"));
+
+    QVBoxLayout *layout = new QVBoxLayout (this);
+
+    displayButton = new QMaemo5ValueButton (tr ("Display"), this);
+    layout->addWidget (displayButton);
+    updateButton = new QMaemo5ValueButton (tr ("Update"), this);
+    layout->addWidget (updateButton);
+    alertsButton = new QMaemo5ValueButton (tr ("Alerts"), this);
+    layout->addWidget (alertsButton);
+
+    connect (displayButton, SIGNAL (clicked ()), SLOT (displayClicked ()));
+}
+
+
+void SettingsDialog::displayClicked ()
+{
+    DisplaySettingsDialog dlg (_settings);
+
+    dlg.exec ();
+}
+
+
+// --------------------------------------------------
+// DisplaySettingsDialog
+// --------------------------------------------------
+DisplaySettingsDialog::DisplaySettingsDialog (Settings *settings)
+    : QDialog (0),
+      _settings (settings)
+{
+    setWindowTitle (tr ("Display settings"));
+    setMinimumSize (300, 400);
+
+    QHBoxLayout *layout = new QHBoxLayout (this);
+    QVBoxLayout *left_layout = new QVBoxLayout ();
+    QVBoxLayout *right_layout = new QVBoxLayout ();
+
+    // Right side
+    _saveButton = new QPushButton (tr ("&Save"), this);
+    connect (_saveButton, SIGNAL (clicked ()), SLOT (saveClicked ()));
+
+    right_layout->addStretch ();
+    right_layout->addWidget (_saveButton);
+
+    // Left side
+    initCities (left_layout);
+    initChecks (left_layout);
+
+    // Pack them together
+    layout->addLayout (left_layout);
+    layout->addLayout (right_layout);
+}
+
+
+void DisplaySettingsDialog::initCities (QBoxLayout *layout)
+{
+    _cities = new QListWidget (this);
+    QMap<QString, QString> cities_map = _settings->cities ();
+    QMap<QString, QString>::iterator it = cities_map.begin ();
+
+    // Populate list with cities
+    while (it != cities_map.end ()) {
+        QListWidgetItem *item = new QListWidgetItem (it.value (), _cities);
+
+        item->setData (Qt::UserRole, QVariant (it.key ()));
+        if (it.key () == _settings->regionID ())
+            _cities->setCurrentItem (item);
+        it++;
+    }
+
+    layout->addWidget (_cities);
+}
+
+
+void DisplaySettingsDialog::initChecks (QBoxLayout *layout)
+{
+    QGridLayout *grid = new QGridLayout;
+
+    _showLight = new QCheckBox ("Light", this);
+    _showLight->setChecked (_settings->check (Settings::C_Light));
+    _showRank = new QCheckBox ("Rank", this);
+    _showRank->setChecked (_settings->check (Settings::C_Rank));
+    _showTime = new QCheckBox ("Time", this);
+    _showTime->setChecked (_settings->check (Settings::C_Time));
+    _showHint = new QCheckBox ("Hint", this);
+    _showHint->setChecked (_settings->check (Settings::C_Hint));
+
+    grid->addWidget (_showLight, 0, 0);
+    grid->addWidget (_showRank, 0, 1);
+    grid->addWidget (_showTime, 1, 0);
+    grid->addWidget (_showHint, 1, 1);
+
+    layout->addLayout (grid);
+}
+
+
+void DisplaySettingsDialog::saveClicked ()
+{
+    QListWidgetItem *cur = _cities->currentItem ();
+
+    if (cur)
+        _settings->setRegionID (cur->data (Qt::UserRole).toString ());
+
+    _settings->setCheck (Settings::C_Light, _showLight->isChecked ());
+    _settings->setCheck (Settings::C_Rank,  _showRank->isChecked ());
+    _settings->setCheck (Settings::C_Time,  _showTime->isChecked ());
+    _settings->setCheck (Settings::C_Hint,  _showHint->isChecked ());
+    _settings->save ();
+    accept ();
 }