Introduce user mode (Basic and Pro)
[scorecard] / src / settings-dialog.cpp
1 #include <QPushButton>
2 #include <QDialogButtonBox>
3 #include <QLabel>
4 #include <QVBoxLayout>
5 #include <QHBoxLayout>
6 #include <QStandardItemModel>
7 #ifdef Q_WS_MAEMO_5
8 #include <QMaemo5InformationBox>
9 #include <QMaemo5ValueButton>
10 #include <QMaemo5ListPickSelector>
11 #endif
12
13 #include "settings-dialog.h"
14
15 SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent)
16 {
17     QWidget *centralWidget = new QWidget(this);
18     createLayout(centralWidget);
19     setWindowTitle(tr("Settings"));
20 }
21
22 void SettingsDialog::createLayout(QWidget *parent)
23 {
24     QPushButton * ok = new QPushButton(tr("OK"));
25
26     connect(ok, SIGNAL(clicked()), this, SLOT(okClicked()));
27
28     QDialogButtonBox * buttonBox = new QDialogButtonBox(Qt::Vertical);
29     buttonBox->addButton(ok, QDialogButtonBox::ActionRole);
30
31     QVBoxLayout * leftLayout = new QVBoxLayout;
32
33 #ifdef Q_WS_MAEMO_5
34     QStandardItem * item;
35
36     // HCP
37     hcpButton = new QMaemo5ValueButton();
38     hcpButton->setValueLayout(QMaemo5ValueButton::ValueBesideText);
39     QMaemo5ListPickSelector * listPickSelector1 = new QMaemo5ListPickSelector;
40     hcpModel = new QStandardItemModel(54, 0);
41     for (int i = 0; i < 54; i++) {
42         item = new QStandardItem(QString("%0").arg(i));
43         item->setTextAlignment(Qt::AlignCenter);
44         hcpModel->setItem(i, item);
45     }
46     listPickSelector1->setModel(hcpModel);
47     hcpButton->setPickSelector(listPickSelector1);
48     hcpButton->setText(QString::fromUtf8("HCP"));
49
50     // Home Club
51     homeClubButton = new QMaemo5ValueButton();
52     homeClubButton->setValueLayout(QMaemo5ValueButton::ValueBesideText);
53     QMaemo5ListPickSelector * listPickSelector2 = new QMaemo5ListPickSelector;
54     homeClubModel = new QStandardItemModel;
55     listPickSelector2->setModel(homeClubModel);
56     homeClubButton->setPickSelector(listPickSelector2);
57     homeClubButton->setText(QString::fromUtf8("Home Club"));
58
59     // Sort Order
60     sortButton = new QMaemo5ValueButton();
61     sortButton->setValueLayout(QMaemo5ValueButton::ValueBesideText);
62     QMaemo5ListPickSelector * listPickSelector4 = new QMaemo5ListPickSelector;
63     QStringList sortList;
64     sortList << "Date" << "Score";
65     sortModel = new QStandardItemModel(sortList.count(), 0);
66     for (int i = 0; i < sortList.count(); i++) {
67         item = new QStandardItem(QString("%0").arg(sortList.at(i)));
68         item->setTextAlignment(Qt::AlignCenter);
69         sortModel->setItem(i, item);
70     }
71     listPickSelector4->setModel(sortModel);
72     sortButton->setPickSelector(listPickSelector4);
73     sortButton->setText(QString::fromUtf8("Sort Order"));
74
75     // Use Default Courses
76     defaultCoursesButton = new QMaemo5ValueButton();
77     defaultCoursesButton->setValueLayout(QMaemo5ValueButton::ValueBesideText);
78     QMaemo5ListPickSelector * listPickSelector3 = new QMaemo5ListPickSelector;
79     defaultCoursesModel = new QStandardItemModel(2, 0);
80     item = new QStandardItem(QString("Yes"));
81     item->setTextAlignment(Qt::AlignCenter);
82     defaultCoursesModel->setItem(0, item);
83     item = new QStandardItem(QString("No"));
84     item->setTextAlignment(Qt::AlignCenter);
85     defaultCoursesModel->setItem(1, item);
86
87     listPickSelector3->setModel(defaultCoursesModel);
88     defaultCoursesButton->setPickSelector(listPickSelector3);
89     defaultCoursesButton->setText(QString::fromUtf8("Use Default Courses"));
90
91     // User Mode
92     userModeButton = new QMaemo5ValueButton();
93     userModeButton->setValueLayout(QMaemo5ValueButton::ValueBesideText);
94     QMaemo5ListPickSelector * listPickSelector5 = new QMaemo5ListPickSelector;
95     userModeModel = new QStandardItemModel(2, 0);
96     item = new QStandardItem(QString("Basic"));
97     item->setTextAlignment(Qt::AlignCenter);
98     userModeModel->setItem(0, item);
99     item = new QStandardItem(QString("Pro"));
100     item->setTextAlignment(Qt::AlignCenter);
101     userModeModel->setItem(1, item);
102
103     listPickSelector5->setModel(userModeModel);
104     userModeButton->setPickSelector(listPickSelector5);
105     userModeButton->setText(QString::fromUtf8("Mode"));
106
107     // Add widgets to layout
108     leftLayout->addWidget(hcpButton);
109     leftLayout->addWidget(homeClubButton);
110     leftLayout->addWidget(sortButton);
111     leftLayout->addWidget(userModeButton);
112     leftLayout->addWidget(defaultCoursesButton);
113 #endif
114
115     QVBoxLayout * rightLayout = new QVBoxLayout;
116     rightLayout->addStretch();
117     rightLayout->addWidget(buttonBox);
118
119     QHBoxLayout *mainLayout = new QHBoxLayout(parent);
120     mainLayout->addLayout(leftLayout);
121     mainLayout->addLayout(rightLayout);
122
123     setLayout(mainLayout);
124 }
125
126 void SettingsDialog::init(AppSettings &conf, QList<Club *> &list)
127 {
128 #ifdef Q_WS_MAEMO_5
129     int index = 0;
130     QMaemo5ListPickSelector * sel;
131     clubList = list;
132
133     // HCP
134     if (conf.hcp.isValid()) {
135         sel = (QMaemo5ListPickSelector *)hcpButton->pickSelector();
136         sel->setCurrentIndex(conf.hcp.toInt());
137     }
138
139     // Home club
140     QListIterator<Club *> i(clubList);
141     while (i.hasNext()) {
142         Club *club = i.next();
143         QStandardItem *item = new QStandardItem(QString("%0").arg(club->getName()));
144         item->setTextAlignment(Qt::AlignCenter);
145         homeClubModel->appendRow(item);
146         if (item->data(Qt::DisplayRole) == conf.homeClub) {
147             sel = (QMaemo5ListPickSelector *)homeClubButton->pickSelector();
148             sel->setCurrentIndex(index);
149         }
150         index++;
151     }
152
153     // Sort order
154     if (conf.sortOrder.isValid()) {
155         int index = conf.sortOrder.toString() == "Date" ? 0 : 1;
156         sel = (QMaemo5ListPickSelector *)sortButton->pickSelector();
157         sel->setCurrentIndex(index);
158     }
159
160     // User mode
161     if (conf.userMode.isValid()) {
162         int index = conf.userMode.toString() == "Basic" ? 0 : 1;
163         sel = (QMaemo5ListPickSelector *)userModeButton->pickSelector();
164         sel->setCurrentIndex(index);
165     }
166
167     // Default courses
168     if (conf.defaultCourses.isValid()) {
169         int index = conf.defaultCourses.toString() == "Yes" ? 0 : 1;
170         sel = (QMaemo5ListPickSelector *)defaultCoursesButton->pickSelector();
171         sel->setCurrentIndex(index);
172     }
173 #endif
174 }
175
176 void SettingsDialog::results(AppSettings &conf)
177 {
178 #ifdef Q_WS_MAEMO_5
179     QMaemo5ListPickSelector * sel;
180     QStandardItem *item;
181     QVariant value;
182
183     sel = (QMaemo5ListPickSelector *)hcpButton->pickSelector();
184     if (sel->currentIndex() != -1) {
185         item = hcpModel->item(sel->currentIndex());
186         conf.hcp = item->data(Qt::DisplayRole);
187     }
188     sel = (QMaemo5ListPickSelector *)homeClubButton->pickSelector();
189     if (sel->currentIndex() != -1) {
190         item = homeClubModel->item(sel->currentIndex());
191         conf.homeClub = item->data(Qt::DisplayRole);
192     }
193     sel = (QMaemo5ListPickSelector *)sortButton->pickSelector();
194     if (sel->currentIndex() != -1) {
195         item = sortModel->item(sel->currentIndex());
196         conf.sortOrder = item->data(Qt::DisplayRole);
197     }
198     sel = (QMaemo5ListPickSelector *)userModeButton->pickSelector();
199     if (sel->currentIndex() != -1) {
200         item = userModeModel->item(sel->currentIndex());
201         conf.userMode = item->data(Qt::DisplayRole);
202     }
203     sel = (QMaemo5ListPickSelector *)defaultCoursesButton->pickSelector();
204     if (sel->currentIndex() != -1) {
205         item = defaultCoursesModel->item(sel->currentIndex());
206         conf.defaultCourses = item->data(Qt::DisplayRole);
207     }
208 #endif
209 }
210
211 void SettingsDialog::okClicked()
212 {
213     done(1);
214 }