Resize widget according to it's contents.
[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
51     QHBoxLayout *layout = new QHBoxLayout (this);
52     QVBoxLayout *left_layout = new QVBoxLayout ();
53     QVBoxLayout *right_layout = new QVBoxLayout ();
54
55     // Right side
56     _saveButton = new QPushButton (tr ("&Save"), this);
57     connect (_saveButton, SIGNAL (clicked ()), SLOT (saveClicked ()));
58
59     right_layout->addStretch ();
60     right_layout->addWidget (_saveButton);
61
62     // Left side
63     initCities (left_layout);
64     initChecks (left_layout);
65
66     // Pack them together
67     layout->addLayout (left_layout);
68     layout->addLayout (right_layout);
69 }
70
71
72 void DisplaySettingsDialog::initCities (QBoxLayout *layout)
73 {
74     _cities = new QListWidget (this);
75     QMap<QString, QString> cities_map = _settings->cities ();
76     QMap<QString, QString>::iterator it = cities_map.begin ();
77
78     // Populate list with cities
79     while (it != cities_map.end ()) {
80         QListWidgetItem *item = new QListWidgetItem (it.value (), _cities);
81
82         item->setData (Qt::UserRole, QVariant (it.key ()));
83         if (it.key () == _settings->regionID ())
84             _cities->setCurrentItem (item);
85         it++;
86     }
87
88     layout->addWidget (_cities);
89 }
90
91
92 void DisplaySettingsDialog::initChecks (QBoxLayout *layout)
93 {
94     QGridLayout *grid = new QGridLayout;
95
96     _showLight = new QCheckBox ("Light", this);
97     _showLight->setChecked (_settings->check (Settings::C_Light));
98     _showRank = new QCheckBox ("Rank", this);
99     _showRank->setChecked (_settings->check (Settings::C_Rank));
100     _showTime = new QCheckBox ("Time", this);
101     _showTime->setChecked (_settings->check (Settings::C_Time));
102     _showHint = new QCheckBox ("Hint", this);
103     _showHint->setChecked (_settings->check (Settings::C_Hint));
104
105     grid->addWidget (_showLight, 0, 0);
106     grid->addWidget (_showRank, 0, 1);
107     grid->addWidget (_showTime, 1, 0);
108     grid->addWidget (_showHint, 1, 1);
109
110     layout->addLayout (grid);
111 }
112
113
114 void DisplaySettingsDialog::saveClicked ()
115 {
116     _settings->setCheck (Settings::C_Light, _showLight->isChecked ());
117     _settings->setCheck (Settings::C_Rank,  _showRank->isChecked ());
118     _settings->setCheck (Settings::C_Time,  _showTime->isChecked ());
119     _settings->setCheck (Settings::C_Hint,  _showHint->isChecked ());
120     accept ();
121 }