Handle checkboxes in settings dialog.
authorMax Lapan <max.lapan@gmail.com>
Sun, 14 Mar 2010 14:03:04 +0000 (17:03 +0300)
committerMax Lapan <max.lapan@gmail.com>
Sun, 14 Mar 2010 14:03:04 +0000 (17:03 +0300)
settings.hpp
settingsDialog.cpp
settingsDialog.hpp

index c7a8907..270a7ac 100644 (file)
@@ -13,13 +13,12 @@ public:
         C_Rank,
         C_Time,
         C_Hint,
-        C_TotalCount
     };
 
 private:
     QString _regionID;          // region ID which will be displayed
     QMap<QString, QString> _cities;
-    bool _checks[C_TotalCount];
+    QMap<check_t, bool> _checks;
 
     void makeDefault ();
 
@@ -37,6 +36,9 @@ public:
 
     bool check (check_t entry) const
     { return _checks[entry]; };
+
+    void setCheck (check_t entry, bool val)
+    { _checks[entry] = val; }
 };
 
 
index 0bc9852..8245dc0 100644 (file)
@@ -54,6 +54,8 @@ DisplaySettingsDialog::DisplaySettingsDialog (Settings *settings)
 
     // Right side
     _saveButton = new QPushButton (tr ("&Save"), this);
+    connect (_saveButton, SIGNAL (clicked ()), SLOT (saveClicked ()));
+
     right_layout->addStretch ();
     right_layout->addWidget (_saveButton);
 
@@ -92,9 +94,13 @@ 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);
@@ -103,3 +109,13 @@ void DisplaySettingsDialog::initChecks (QBoxLayout *layout)
 
     layout->addLayout (grid);
 }
+
+
+void DisplaySettingsDialog::saveClicked ()
+{
+    _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 ());
+    accept ();
+}
index 50100ba..21b681e 100644 (file)
@@ -44,6 +44,9 @@ private:
     void initCities (QBoxLayout *layout);
     void initChecks (QBoxLayout *layout);
 
+protected slots:
+    void saveClicked ();
+
 public:
     DisplaySettingsDialog (Settings *settings);
 };