From bc5f4efc91fd97dc2d3f8f46a9e4bbc45e3253b6 Mon Sep 17 00:00:00 2001 From: Max Lapan Date: Sun, 14 Mar 2010 17:03:04 +0300 Subject: [PATCH] Handle checkboxes in settings dialog. --- settings.hpp | 6 ++++-- settingsDialog.cpp | 16 ++++++++++++++++ settingsDialog.hpp | 3 +++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/settings.hpp b/settings.hpp index c7a8907..270a7ac 100644 --- a/settings.hpp +++ b/settings.hpp @@ -13,13 +13,12 @@ public: C_Rank, C_Time, C_Hint, - C_TotalCount }; private: QString _regionID; // region ID which will be displayed QMap _cities; - bool _checks[C_TotalCount]; + QMap _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; } }; diff --git a/settingsDialog.cpp b/settingsDialog.cpp index 0bc9852..8245dc0 100644 --- a/settingsDialog.cpp +++ b/settingsDialog.cpp @@ -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 (); +} diff --git a/settingsDialog.hpp b/settingsDialog.hpp index 50100ba..21b681e 100644 --- a/settingsDialog.hpp +++ b/settingsDialog.hpp @@ -44,6 +44,9 @@ private: void initCities (QBoxLayout *layout); void initChecks (QBoxLayout *layout); +protected slots: + void saveClicked (); + public: DisplaySettingsDialog (Settings *settings); }; -- 1.7.9.5