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 connect(pushButtonNext, SIGNAL(clicked()), this, SLOT(next()));
25 leftLayout = new QVBoxLayout;
26 leftLayout->addWidget(listClub);
27 leftLayout->addWidget(lineEditDate);
29 rightLayout = new QVBoxLayout;
30 rightLayout->addStretch();
31 rightLayout->addWidget(pushButtonNext);
33 QHBoxLayout *mainLayout = new QHBoxLayout(parent);
34 mainLayout->addLayout(leftLayout);
35 mainLayout->addLayout(rightLayout);
37 setLayout(mainLayout);
40 void SelectDialog::init(QList<Club *> &list)
44 QListIterator<Club *> i(clubList);
48 Club *club = i.next();
50 QList<Course *> courseList = club->getCourseList();
52 QListIterator<Course *> j(courseList);
54 Course *course = j.next();
56 QListWidgetItem *newItem = new QListWidgetItem;
58 QString entry = club->getName() + "," + course->getName();
60 newItem->setText(entry);
61 listClub->insertItem(index, newItem);
68 void SelectDialog::results(QString &club,
72 QListWidgetItem *current = listClub->currentItem();
75 QString tmp = current->text();
77 QStringList stringList = tmp.split(",");
79 course = stringList[1];
80 date = lineEditDate->text();
84 bool SelectDialog::validate(void)
89 void SelectDialog::next(void)
94 qDebug() << "SelectDialog: invalid data, cancel or correct";
98 void SelectDialog::reject(void)
103 ////////////////////////////////////////////////////////////////////////////////
104 ////////////////////////////////////////////////////////////////////////////////
105 ////////////////////////////////////////////////////////////////////////////////
107 ScoreDialog::ScoreDialog(QWidget *parent) : QDialog(parent)
111 QWidget *centralWidget = new QWidget(this);
116 createLayout(centralWidget);
119 void ScoreDialog::createLayout(QWidget *parent)
121 leftLayout = new QVBoxLayout;
122 leftLayout->addWidget(table);
124 rightLayout = new QVBoxLayout;
125 rightLayout->addWidget(pushButtonUp);
126 rightLayout->addWidget(pushButtonDown);
127 rightLayout->addWidget(pushButtonNext);
128 rightLayout->addStretch();
129 rightLayout->addWidget(pushButtonFinish);
131 QHBoxLayout *mainLayout = new QHBoxLayout(parent);
132 mainLayout->addLayout(leftLayout);
133 mainLayout->addLayout(rightLayout);
134 setLayout(mainLayout);
137 void ScoreDialog::createTable(QWidget *parent)
139 table = new QTableWidget(ROWS, COLS, parent);
141 table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
142 table->verticalHeader()->setResizeMode(QHeaderView::Stretch);
143 table->horizontalHeader()->hide();
146 headers << "" << "Par" << "HCP" << "Score" << "" << "Par" << "HCP" << "Score";
147 table->setVerticalHeaderLabels(headers);
150 void ScoreDialog::createButton(QWidget *parent)
152 pushButtonUp = new QPushButton(tr("+"));
153 connect(pushButtonUp, SIGNAL(clicked()), this, SLOT(up()));
155 pushButtonDown = new QPushButton(tr("-"));
156 connect(pushButtonDown, SIGNAL(clicked()), this, SLOT(down()));
158 pushButtonNext = new QPushButton(tr("Next"));
159 connect(pushButtonNext, SIGNAL(clicked()), this, SLOT(next()));
161 pushButtonFinish = new QPushButton(tr("Finish"));
162 connect(pushButtonFinish, SIGNAL(clicked()), this, SLOT(finish()));
165 void ScoreDialog::init(Course *course)
167 QTableWidgetItem *par, *hcp, *score;
169 for (int i = 0; i < 18; i++) {
170 par = new QTableWidgetItem(course->getPar(i));
171 hcp = new QTableWidgetItem(course->getHcp(i));
172 score = new QTableWidgetItem("");
173 //score->setInputMask("9");
175 QTableWidgetItem *holeNum = new QTableWidgetItem(QString::number(i+1));
176 QColor bgColor(Qt::gray);
177 holeNum->setBackgroundColor(bgColor);
179 holeNum->setTextAlignment(Qt::AlignCenter);
181 par->setTextAlignment(Qt::AlignCenter);
182 hcp->setTextAlignment(Qt::AlignCenter);
183 score->setTextAlignment(Qt::AlignCenter);
186 table->setItem(ROW_HOLE, i, holeNum);
187 table->setItem(ROW_PAR, i, par);
188 table->setItem(ROW_HCP, i, hcp);
189 table->setItem(ROW_SCORE, i, score);
192 table->setItem(ROW_HOLE_2, i-9, holeNum);
193 table->setItem(ROW_PAR_2, i-9, par);
194 table->setItem(ROW_HCP_2, i-9, hcp);
195 table->setItem(ROW_SCORE_2, i-9, score);
199 // Set focus to 1st cell
200 table->setCurrentCell(ROW_SCORE, 0);
201 setDefaultScore(table);
204 // Set default score to par if not set
205 void ScoreDialog::setDefaultScore(QTableWidget *table)
207 int row = table->currentRow();
208 int col = table->currentColumn();
210 if (row == ROW_SCORE)
212 else if (row == ROW_SCORE_2)
215 qDebug() << "ERROR: unknown row in default score";
218 QTableWidgetItem *par = table->item(row, col);
219 QTableWidgetItem *score = table->item(row + 2, col);
221 if (par && score && score->text() == "") {
222 QVariant value(par->text());
223 score->setData(Qt::DisplayRole, value);
227 void ScoreDialog::up(void)
229 QTableWidgetItem *item = table->currentItem();
234 int i = (item->text()).toInt();
236 item->setData(Qt::DisplayRole, value);
239 void ScoreDialog::down(void)
241 QTableWidgetItem *item = table->currentItem();
246 int i = (item->text()).toInt();
248 item->setData(Qt::DisplayRole, value);
251 void ScoreDialog::next(void)
254 QTableWidgetItem *item = table->currentItem();
255 moveToNextCell(item);
256 setDefaultScore(table);
260 void ScoreDialog::moveToNextCell(QTableWidgetItem *item)
265 QTableWidget *table = item->tableWidget();
270 int row = table->currentRow();
271 int col = table->currentColumn();
273 if (col < (COLS-1)) {
276 else if (col == (COLS-1)) {
278 row = (row == ROW_SCORE_2) ? ROW_SCORE : ROW_SCORE_2;
280 //qDebug() << "new cell: " << row << "/" << col;
281 table->setCurrentCell(row, col);
284 void ScoreDialog::results(QVector<QString> &scores)
286 for (int i = 0; i < 9; i++) {
287 QTableWidgetItem *frontItem = table->item(ROW_SCORE, i);
288 QTableWidgetItem *backItem = table->item(ROW_SCORE_2, i);
291 scores[i] = frontItem->text();
294 scores[i+9] = backItem->text();
298 bool ScoreDialog::validate(void)
300 for (int i=0; i<9; i++) {
301 QTableWidgetItem *frontItem = table->item(ROW_SCORE, i);
302 QTableWidgetItem *backItem = table->item(ROW_SCORE_2, i);
304 if (!frontItem || !backItem)
307 QString str1 = frontItem->text();
308 QString str2 = backItem->text();
310 if (str1.isEmpty() || str2.isEmpty())
316 void ScoreDialog::finish(void)
321 qDebug() << "ScoreDialog: invalid data, cancel or correct";
325 void ScoreDialog::reject(void)