Merge branch 'master' of /opt/src/sb1/qt/scorecard
[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     leftLayout->addWidget(hcpButton);
92     leftLayout->addWidget(homeClubButton);
93     leftLayout->addWidget(sortButton);
94     leftLayout->addWidget(defaultCoursesButton);
95 #endif
96
97     QVBoxLayout * rightLayout = new QVBoxLayout;
98     rightLayout->addStretch();
99     rightLayout->addWidget(buttonBox);
100
101     QHBoxLayout *mainLayout = new QHBoxLayout(parent);
102     mainLayout->addLayout(leftLayout);
103     mainLayout->addLayout(rightLayout);
104
105     setLayout(mainLayout);
106 }
107
108 void SettingsDialog::init(AppSettings &conf, QList<Club *> &list)
109 {
110 #ifdef Q_WS_MAEMO_5
111     int index = 0;
112     QMaemo5ListPickSelector * sel;
113     clubList = list;
114
115     if (conf.hcp.isValid()) {
116         sel = (QMaemo5ListPickSelector *)hcpButton->pickSelector();
117         sel->setCurrentIndex(conf.hcp.toInt());
118     }
119
120     QListIterator<Club *> i(clubList);
121     
122     while (i.hasNext()) {
123         Club *club = i.next();
124         QStandardItem *item = new QStandardItem(QString("%0").arg(club->getName()));
125         item->setTextAlignment(Qt::AlignCenter);
126         homeClubModel->appendRow(item);
127         if (item->data(Qt::DisplayRole) == conf.homeClub) {
128             sel = (QMaemo5ListPickSelector *)homeClubButton->pickSelector();
129             sel->setCurrentIndex(index);
130         }
131         index++;
132     }
133
134     if (conf.sortOrder.isValid()) {
135         int index = conf.sortOrder.toString() == "Date" ? 0 : 1;
136         sel = (QMaemo5ListPickSelector *)sortButton->pickSelector();
137         sel->setCurrentIndex(index);
138     }
139
140     if (conf.defaultCourses.isValid()) {
141         int index = conf.defaultCourses.toString() == "Yes" ? 0 : 1;
142         sel = (QMaemo5ListPickSelector *)defaultCoursesButton->pickSelector();
143         sel->setCurrentIndex(index);
144     }
145 #endif
146 }
147
148 void SettingsDialog::results(AppSettings &conf)
149 {
150 #ifdef Q_WS_MAEMO_5
151     QMaemo5ListPickSelector * sel;
152     QStandardItem *item;
153     QVariant value;
154
155     sel = (QMaemo5ListPickSelector *)hcpButton->pickSelector();
156     if (sel->currentIndex() != -1) {
157         item = hcpModel->item(sel->currentIndex());
158         conf.hcp = item->data(Qt::DisplayRole);
159     }
160     sel = (QMaemo5ListPickSelector *)homeClubButton->pickSelector();
161     if (sel->currentIndex() != -1) {
162         item = homeClubModel->item(sel->currentIndex());
163         conf.homeClub = item->data(Qt::DisplayRole);
164     }
165     sel = (QMaemo5ListPickSelector *)sortButton->pickSelector();
166     if (sel->currentIndex() != -1) {
167         item = sortModel->item(sel->currentIndex());
168         conf.sortOrder = item->data(Qt::DisplayRole);
169     }
170     sel = (QMaemo5ListPickSelector *)defaultCoursesButton->pickSelector();
171     if (sel->currentIndex() != -1) {
172         item = defaultCoursesModel->item(sel->currentIndex());
173         conf.defaultCourses = item->data(Qt::DisplayRole);
174     }
175 #endif
176 }
177
178 void SettingsDialog::okClicked()
179 {
180     done(1);
181 }