b2475b7f58154dcb7a0b5722c26afb5f3806d67e
[yandex-traffic] / settingsDialog.cpp
1 #include <QtGui>
2
3 #ifdef Q_WS_MAEMO_5
4 #include <QtMaemo5>
5 #else
6 #include "QtMaemo5Adapters.hpp"
7 #endif
8
9 #include "settingsDialog.hpp"
10
11
12 // --------------------------------------------------
13 // SettingsDialog
14 // --------------------------------------------------
15 SettingsDialog::SettingsDialog (Settings *settings)
16     : QDialog (),
17       _settings (settings)
18 {
19     setWindowTitle (tr ("Settings"));
20
21     QVBoxLayout *layout = new QVBoxLayout (this);
22
23     displayButton = new QMaemo5ValueButton (tr ("Display"), this);
24     layout->addWidget (displayButton);
25     updateButton = new QMaemo5ValueButton (tr ("Update"), this);
26     layout->addWidget (updateButton);
27     alertsButton = new QMaemo5ValueButton (tr ("Alerts"), this);
28     layout->addWidget (alertsButton);
29
30     connect (displayButton, SIGNAL (clicked ()), SLOT (displayClicked ()));
31 }
32
33
34 void SettingsDialog::displayClicked ()
35 {
36     DisplaySettingsDialog dlg (_settings);
37
38     dlg.exec ();
39 }
40
41
42 // --------------------------------------------------
43 // DisplaySettingsDialog
44 // --------------------------------------------------
45 DisplaySettingsDialog::DisplaySettingsDialog (Settings *settings)
46     : QDialog (0),
47       _settings (settings)
48 {
49     setWindowTitle (tr ("Display settings"));
50     setMinimumSize (300, 400);
51
52     QHBoxLayout *layout = new QHBoxLayout (this);
53     QVBoxLayout *left_layout = new QVBoxLayout ();
54     QVBoxLayout *right_layout = new QVBoxLayout ();
55
56     // Right side
57     _saveButton = new QPushButton (tr ("&Save"), this);
58     connect (_saveButton, SIGNAL (clicked ()), SLOT (saveClicked ()));
59
60     right_layout->addStretch ();
61     right_layout->addWidget (_saveButton);
62
63     // Left side
64     initCities (left_layout);
65     initChecks (left_layout);
66
67     // Pack them together
68     layout->addLayout (left_layout);
69     layout->addLayout (right_layout);
70 }
71
72
73 void DisplaySettingsDialog::initCities (QBoxLayout *layout)
74 {
75     _cities = new QListWidget (this);
76     QMap<QString, QString> cities_map = _settings->cities ();
77     QMap<QString, QString>::iterator it = cities_map.begin ();
78
79     // Populate list with cities
80     while (it != cities_map.end ()) {
81         QListWidgetItem *item = new QListWidgetItem (it.value (), _cities);
82
83         item->setData (Qt::UserRole, QVariant (it.key ()));
84         if (it.key () == _settings->regionID ())
85             _cities->setCurrentItem (item);
86         it++;
87     }
88
89     layout->addWidget (_cities);
90 }
91
92
93 void DisplaySettingsDialog::initChecks (QBoxLayout *layout)
94 {
95     QGridLayout *grid = new QGridLayout;
96
97     _showLight = new QCheckBox ("Light", this);
98     _showLight->setChecked (_settings->check (Settings::C_Light));
99     _showRank = new QCheckBox ("Rank", this);
100     _showRank->setChecked (_settings->check (Settings::C_Rank));
101     _showTime = new QCheckBox ("Time", this);
102     _showTime->setChecked (_settings->check (Settings::C_Time));
103     _showHint = new QCheckBox ("Hint", this);
104     _showHint->setChecked (_settings->check (Settings::C_Hint));
105
106     grid->addWidget (_showLight, 0, 0);
107     grid->addWidget (_showRank, 0, 1);
108     grid->addWidget (_showTime, 1, 0);
109     grid->addWidget (_showHint, 1, 1);
110
111     layout->addLayout (grid);
112 }
113
114
115 void DisplaySettingsDialog::saveClicked ()
116 {
117     QListWidgetItem *cur = _cities->currentItem ();
118
119     if (cur)
120         _settings->setRegionID (cur->data (Qt::UserRole).toString ());
121
122     _settings->setCheck (Settings::C_Light, _showLight->isChecked ());
123     _settings->setCheck (Settings::C_Rank,  _showRank->isChecked ());
124     _settings->setCheck (Settings::C_Time,  _showTime->isChecked ());
125     _settings->setCheck (Settings::C_Hint,  _showHint->isChecked ());
126     _settings->save ();
127     accept ();
128 }