From: Max Lapan Date: Fri, 12 Mar 2010 15:49:02 +0000 (+0300) Subject: Display section of settings. X-Git-Tag: v0.1~42 X-Git-Url: http://vcs.maemo.org/git/?p=yandex-traffic;a=commitdiff_plain;h=7557e186ad03c14c1c7c8960b11f563cce4f0c88 Display section of settings. --- diff --git a/settings.cpp b/settings.cpp index f3fdcb4..a02e90c 100644 --- a/settings.cpp +++ b/settings.cpp @@ -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"); } diff --git a/settings.hpp b/settings.hpp index 2cfa2f6..c7a8907 100644 --- a/settings.hpp +++ b/settings.hpp @@ -1,12 +1,25 @@ #ifndef __SETTINGS_H__ #define __SETTINGS_H__ +#include -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 _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 cities () const + { return _cities; }; + + bool check (check_t entry) const + { return _checks[entry]; }; }; diff --git a/settingsDialog.cpp b/settingsDialog.cpp index d63a8c0..0bc9852 100644 --- a/settingsDialog.cpp +++ b/settingsDialog.cpp @@ -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 cities_map = _settings->cities (); + QMap::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); } diff --git a/settingsDialog.hpp b/settingsDialog.hpp index cb69300..50100ba 100644 --- a/settingsDialog.hpp +++ b/settingsDialog.hpp @@ -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__