Display section of settings.
authorMax Lapan <max.lapan@gmail.com>
Fri, 12 Mar 2010 15:49:02 +0000 (18:49 +0300)
committerMax Lapan <max.lapan@gmail.com>
Fri, 12 Mar 2010 15:49:02 +0000 (18:49 +0300)
settings.cpp
settings.hpp
settingsDialog.cpp
settingsDialog.hpp

index f3fdcb4..a02e90c 100644 (file)
@@ -23,6 +23,10 @@ bool Settings::save ()
 
 void Settings::makeDefault ()
 {
-    _regions.clear ();
-    _regions.append ("1");      // Moscow
+    _regionID = "1";            // Default city
+
+    _cities["1"] = tr ("Moscow");
+    _cities["10174"] = tr ("Kiev");
+    _cities["11162"] = tr ("Ekaterinburg");
+    _cities["11079"] = tr ("N.Novgorod");
 }
index 2cfa2f6..c7a8907 100644 (file)
@@ -1,12 +1,25 @@
 #ifndef __SETTINGS_H__
 #define __SETTINGS_H__
 
+#include <QtCore>
 
 
-class Settings
+class Settings : public QObject
 {
+    Q_OBJECT
+public:
+    enum check_t {
+        C_Light = 0,
+        C_Rank,
+        C_Time,
+        C_Hint,
+        C_TotalCount
+    };
+
 private:
-    QStringList _regions;       // List of regions IDs to display
+    QString _regionID;          // region ID which will be displayed
+    QMap<QString, QString> _cities;
+    bool _checks[C_TotalCount];
 
     void makeDefault ();
 
@@ -16,8 +29,14 @@ public:
     bool load ();
     bool save ();
 
-    QStringList regions () const
-    { return _regions; };
+    QString regionID () const
+    { return _regionID; };
+
+    QMap<QString, QString> cities () const
+    { return _cities; };
+
+    bool check (check_t entry) const
+    { return _checks[entry]; };
 };
 
 
index d63a8c0..0bc9852 100644 (file)
@@ -13,7 +13,8 @@
 // SettingsDialog
 // --------------------------------------------------
 SettingsDialog::SettingsDialog (Settings *settings)
-    : QDialog ()
+    : QDialog (),
+      _settings (settings)
 {
     setWindowTitle (tr ("Settings"));
 
@@ -25,4 +26,80 @@ SettingsDialog::SettingsDialog (Settings *settings)
     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"));
+
+    QHBoxLayout *layout = new QHBoxLayout (this);
+    QVBoxLayout *left_layout = new QVBoxLayout ();
+    QVBoxLayout *right_layout = new QVBoxLayout ();
+
+    // Right side
+    _saveButton = new QPushButton (tr ("&Save"), this);
+    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);
+    _showRank = new QCheckBox ("Rank", this);
+    _showTime = new QCheckBox ("Time", this);
+    _showHint = new QCheckBox ("Hint", this);
+
+    grid->addWidget (_showLight, 0, 0);
+    grid->addWidget (_showRank, 0, 1);
+    grid->addWidget (_showTime, 1, 0);
+    grid->addWidget (_showHint, 1, 1);
+
+    layout->addLayout (grid);
 }
index cb69300..50100ba 100644 (file)
@@ -21,9 +21,32 @@ private:
     QMaemo5ValueButton *updateButton;
     QMaemo5ValueButton *alertsButton;
 
+    Settings *_settings;
+
+protected slots:
+    void displayClicked ();
+
 public:
     SettingsDialog (Settings *settings);
 };
 
 
+class DisplaySettingsDialog : public QDialog
+{
+    Q_OBJECT
+
+private:
+    Settings *_settings;
+    QListWidget *_cities;
+    QCheckBox *_showLight, *_showRank, *_showTime, *_showHint;
+    QPushButton *_saveButton;
+
+    void initCities (QBoxLayout *layout);
+    void initChecks (QBoxLayout *layout);
+
+public:
+    DisplaySettingsDialog (Settings *settings);
+};
+
+
 #endif // __SETTINGSDIALOG_H__