2 #include <QInputContext>
4 #include "score-dialog.h"
6 SelectDialog::SelectDialog(QWidget *parent) : QDialog(parent)
8 QWidget *centralWidget = new QWidget(this);
9 createLayout(centralWidget);
11 setWindowTitle(tr("ScoreCard: Select Course and Date"));
14 void SelectDialog::createLayout(QWidget *parent)
16 listClub = new QListWidget(parent);
17 lineEditDate = new QLineEdit;
18 pushButtonNext = new QPushButton(tr("Next"));
20 QDate today(QDate::currentDate());
21 lineEditDate->setText(today.toString("yyyy-MM-dd"));
23 date = new QDateEdit(parent);
25 connect(pushButtonNext, SIGNAL(clicked()), this, SLOT(next()));
27 leftLayout = new QVBoxLayout;
28 leftLayout->addWidget(listClub);
29 leftLayout->addWidget(date);
30 leftLayout->addWidget(lineEditDate);
32 rightLayout = new QVBoxLayout;
33 rightLayout->addStretch();
34 rightLayout->addWidget(pushButtonNext);
36 QHBoxLayout *mainLayout = new QHBoxLayout(parent);
37 mainLayout->addLayout(leftLayout);
38 mainLayout->addLayout(rightLayout);
40 setLayout(mainLayout);
43 void SelectDialog::init(QList<Club *> &list)
47 QListIterator<Club *> i(clubList);
51 Club *club = i.next();
53 QList<Course *> courseList = club->getCourseList();
55 QListIterator<Course *> j(courseList);
57 Course *course = j.next();
59 QListWidgetItem *newItem = new QListWidgetItem;
61 QString entry = club->getName() + "," + course->getName();
63 newItem->setText(entry);
64 listClub->insertItem(index, newItem);
71 void SelectDialog::results(QString &club,
75 QListWidgetItem *current = listClub->currentItem();
78 QString tmp = current->text();
80 QStringList stringList = tmp.split(",");
82 course = stringList[1];
83 date = lineEditDate->text();
87 bool SelectDialog::validate(void)
92 void SelectDialog::next(void)
97 qDebug() << "SelectDialog: invalid data, cancel or correct";
101 void SelectDialog::reject(void)
106 ////////////////////////////////////////////////////////////////////////////////
107 ////////////////////////////////////////////////////////////////////////////////
108 ////////////////////////////////////////////////////////////////////////////////
110 ScoreDialog::ScoreDialog(QWidget *parent) : QDialog(parent)
114 QWidget *centralWidget = new QWidget(this);
119 createLayout(centralWidget);
122 void ScoreDialog::createLayout(QWidget *parent)
124 leftLayout = new QVBoxLayout;
125 leftLayout->addWidget(table);
127 rightLayout = new QVBoxLayout;
128 rightLayout->addWidget(pushButtonUp);
129 rightLayout->addWidget(pushButtonDown);
130 rightLayout->addWidget(pushButtonNext);
131 rightLayout->addStretch();
132 rightLayout->addWidget(pushButtonFinish);
134 QHBoxLayout *mainLayout = new QHBoxLayout(parent);
135 mainLayout->addLayout(leftLayout);
136 mainLayout->addLayout(rightLayout);
137 setLayout(mainLayout);
140 void ScoreDialog::createTable(QWidget *parent)
142 table = new QTableWidget(ROWS, COLS, parent);
144 table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
145 table->verticalHeader()->setResizeMode(QHeaderView::Stretch);
146 table->horizontalHeader()->hide();
149 headers << "" << "Par" << "HCP" << "Score" << "" << "Par" << "HCP" << "Score";
150 table->setVerticalHeaderLabels(headers);
153 void ScoreDialog::createButton(QWidget *parent)
155 pushButtonUp = new QPushButton(tr("+"));
156 connect(pushButtonUp, SIGNAL(clicked()), this, SLOT(up()));
158 pushButtonDown = new QPushButton(tr("-"));
159 connect(pushButtonDown, SIGNAL(clicked()), this, SLOT(down()));
161 pushButtonNext = new QPushButton(tr("Next"));
162 connect(pushButtonNext, SIGNAL(clicked()), this, SLOT(next()));
164 pushButtonFinish = new QPushButton(tr("Finish"));
165 connect(pushButtonFinish, SIGNAL(clicked()), this, SLOT(finish()));
168 void ScoreDialog::init(Course *course)
170 QTableWidgetItem *par, *hcp, *score;
172 for (int i = 0; i < 18; i++) {
173 par = new QTableWidgetItem(course->getPar(i));
174 hcp = new QTableWidgetItem(course->getHcp(i));
175 score = new QTableWidgetItem("");
176 //score->setInputMask("9");
178 QTableWidgetItem *holeNum = new QTableWidgetItem(QString::number(i+1));
179 QColor bgColor(Qt::gray);
180 holeNum->setBackgroundColor(bgColor);
182 holeNum->setTextAlignment(Qt::AlignCenter);
184 par->setTextAlignment(Qt::AlignCenter);
185 hcp->setTextAlignment(Qt::AlignCenter);
186 score->setTextAlignment(Qt::AlignCenter);
189 table->setItem(ROW_HOLE, i, holeNum);
190 table->setItem(ROW_PAR, i, par);
191 table->setItem(ROW_HCP, i, hcp);
192 table->setItem(ROW_SCORE, i, score);
195 table->setItem(ROW_HOLE_2, i-9, holeNum);
196 table->setItem(ROW_PAR_2, i-9, par);
197 table->setItem(ROW_HCP_2, i-9, hcp);
198 table->setItem(ROW_SCORE_2, i-9, score);
202 // Set focus to 1st cell
203 table->setCurrentCell(ROW_SCORE, 0);
204 setDefaultScore(table);
207 // Set default score to par if not set
208 void ScoreDialog::setDefaultScore(QTableWidget *table)
210 int row = table->currentRow();
211 int col = table->currentColumn();
213 if (row == ROW_SCORE)
215 else if (row == ROW_SCORE_2)
218 qDebug() << "ERROR: unknown row in default score";
221 QTableWidgetItem *par = table->item(row, col);
222 QTableWidgetItem *score = table->item(row + 2, col);
224 if (par && score && score->text() == "") {
225 QVariant value(par->text());
226 score->setData(Qt::DisplayRole, value);
230 void ScoreDialog::up(void)
232 QTableWidgetItem *item = table->currentItem();
237 int i = (item->text()).toInt();
239 item->setData(Qt::DisplayRole, value);
242 void ScoreDialog::down(void)
244 QTableWidgetItem *item = table->currentItem();
249 int i = (item->text()).toInt();
251 item->setData(Qt::DisplayRole, value);
254 void ScoreDialog::next(void)
257 QTableWidgetItem *item = table->currentItem();
258 moveToNextCell(item);
259 setDefaultScore(table);
263 void ScoreDialog::moveToNextCell(QTableWidgetItem *item)
268 QTableWidget *table = item->tableWidget();
273 int row = table->currentRow();
274 int col = table->currentColumn();
276 if (col < (COLS-1)) {
279 else if (col == (COLS-1)) {
281 row = (row == ROW_SCORE_2) ? ROW_SCORE : ROW_SCORE_2;
283 //qDebug() << "new cell: " << row << "/" << col;
284 table->setCurrentCell(row, col);
287 void ScoreDialog::results(QVector<QString> &scores)
289 for (int i = 0; i < 9; i++) {
290 QTableWidgetItem *frontItem = table->item(ROW_SCORE, i);
291 QTableWidgetItem *backItem = table->item(ROW_SCORE_2, i);
294 scores[i] = frontItem->text();
297 scores[i+9] = backItem->text();
301 bool ScoreDialog::validate(void)
303 for (int i=0; i<9; i++) {
304 QTableWidgetItem *frontItem = table->item(ROW_SCORE, i);
305 QTableWidgetItem *backItem = table->item(ROW_SCORE_2, i);
307 if (!frontItem || !backItem)
310 QString str1 = frontItem->text();
311 QString str2 = backItem->text();
313 if (str1.isEmpty() || str2.isEmpty())
319 void ScoreDialog::finish(void)
324 qDebug() << "ScoreDialog: invalid data, cancel or correct";
328 void ScoreDialog::reject(void)