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"));
24 connect(pushButtonNext, SIGNAL(clicked()), this, SLOT(next()));
26 leftLayout = new QVBoxLayout;
27 leftLayout->addWidget(listClub);
28 //leftLayout->addWidget(date);
29 leftLayout->addWidget(lineEditDate);
31 rightLayout = new QVBoxLayout;
32 rightLayout->addStretch();
33 rightLayout->addWidget(pushButtonNext);
35 QHBoxLayout *mainLayout = new QHBoxLayout(parent);
36 mainLayout->addLayout(leftLayout);
37 mainLayout->addLayout(rightLayout);
39 setLayout(mainLayout);
42 void SelectDialog::init(QList<Club *> &list)
46 QListIterator<Club *> i(clubList);
50 Club *club = i.next();
52 QList<Course *> courseList = club->getCourseList();
54 QListIterator<Course *> j(courseList);
56 Course *course = j.next();
58 QListWidgetItem *newItem = new QListWidgetItem;
60 QString entry = club->getName() + "," + course->getName();
62 newItem->setText(entry);
63 listClub->insertItem(index, newItem);
70 void SelectDialog::results(QString &club,
74 QListWidgetItem *current = listClub->currentItem();
77 QString tmp = current->text();
79 QStringList stringList = tmp.split(",");
81 course = stringList[1];
82 date = lineEditDate->text();
86 bool SelectDialog::validate(void)
91 void SelectDialog::next(void)
96 qDebug() << "SelectDialog: invalid data, cancel or correct";
100 void SelectDialog::reject(void)
105 ////////////////////////////////////////////////////////////////////////////////
106 ////////////////////////////////////////////////////////////////////////////////
107 ////////////////////////////////////////////////////////////////////////////////
109 ScoreDialog::ScoreDialog(QWidget *parent) : QDialog(parent)
113 QWidget *centralWidget = new QWidget(this);
118 createLayout(centralWidget);
121 void ScoreDialog::createLayout(QWidget *parent)
123 leftLayout = new QVBoxLayout;
124 leftLayout->addWidget(table);
126 rightLayout = new QVBoxLayout;
127 rightLayout->addWidget(pushButtonUp);
128 rightLayout->addWidget(pushButtonDown);
129 rightLayout->addWidget(pushButtonNext);
130 rightLayout->addStretch();
131 rightLayout->addWidget(pushButtonFinish);
133 QHBoxLayout *mainLayout = new QHBoxLayout(parent);
134 mainLayout->addLayout(leftLayout);
135 mainLayout->addLayout(rightLayout);
136 setLayout(mainLayout);
139 void ScoreDialog::createTable(QWidget *parent)
141 table = new QTableWidget(ROWS, COLS, parent);
143 table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
144 table->verticalHeader()->setResizeMode(QHeaderView::Stretch);
145 table->horizontalHeader()->hide();
148 headers << "" << "Par" << "HCP" << "Score" << "" << "Par" << "HCP" << "Score";
149 table->setVerticalHeaderLabels(headers);
152 void ScoreDialog::createButton(QWidget *parent)
154 pushButtonUp = new QPushButton(tr("+"));
155 connect(pushButtonUp, SIGNAL(clicked()), this, SLOT(up()));
157 pushButtonDown = new QPushButton(tr("-"));
158 connect(pushButtonDown, SIGNAL(clicked()), this, SLOT(down()));
160 pushButtonNext = new QPushButton(tr("Next"));
161 connect(pushButtonNext, SIGNAL(clicked()), this, SLOT(next()));
163 pushButtonFinish = new QPushButton(tr("Finish"));
164 connect(pushButtonFinish, SIGNAL(clicked()), this, SLOT(finish()));
167 void ScoreDialog::init(Course *course, Score *score)
169 QTableWidgetItem *par, *hcp, *scoreItem, *holeNum;
170 QColor fgColor(Qt::white);
171 QColor bgColor(Qt::darkGray);
173 for (int i = 0; i < 18; i++) {
174 par = new QTableWidgetItem(course->getPar(i));
175 hcp = new QTableWidgetItem(course->getHcp(i));
177 scoreItem = new QTableWidgetItem(score->getScore(i));
179 scoreItem = new QTableWidgetItem("");
180 holeNum = new QTableWidgetItem(QString::number(i+1));
182 holeNum->setTextColor(fgColor);
183 holeNum->setBackgroundColor(bgColor);
185 par->setTextAlignment(Qt::AlignCenter);
186 hcp->setTextAlignment(Qt::AlignCenter);
187 scoreItem->setTextAlignment(Qt::AlignCenter);
188 holeNum->setTextAlignment(Qt::AlignCenter);
191 table->setItem(ROW_HOLE, i, holeNum);
192 table->setItem(ROW_PAR, i, par);
193 table->setItem(ROW_HCP, i, hcp);
194 table->setItem(ROW_SCORE, i, scoreItem);
197 table->setItem(ROW_HOLE_2, i-9, holeNum);
198 table->setItem(ROW_PAR_2, i-9, par);
199 table->setItem(ROW_HCP_2, i-9, hcp);
200 table->setItem(ROW_SCORE_2, i-9, scoreItem);
204 // Set focus to 1st cell
205 table->setCurrentCell(ROW_SCORE, 0);
207 setDefaultScore(table);
210 // Set default score to par if not set
211 void ScoreDialog::setDefaultScore(QTableWidget *table)
213 int row = table->currentRow();
214 int col = table->currentColumn();
216 if (row == ROW_SCORE)
218 else if (row == ROW_SCORE_2)
221 qDebug() << "ERROR: unknown row in default score";
224 QTableWidgetItem *par = table->item(row, col);
225 QTableWidgetItem *score = table->item(row + 2, col);
227 if (par && score && score->text() == "") {
228 QVariant value(par->text());
229 score->setData(Qt::DisplayRole, value);
233 void ScoreDialog::up(void)
235 QTableWidgetItem *item = table->currentItem();
238 qWarning() << "ERROR: no current item";
242 int i = (item->text()).toInt();
244 item->setData(Qt::DisplayRole, value);
247 void ScoreDialog::down(void)
249 QTableWidgetItem *item = table->currentItem();
254 int i = (item->text()).toInt();
256 item->setData(Qt::DisplayRole, value);
259 void ScoreDialog::next(void)
262 QTableWidgetItem *item = table->currentItem();
263 moveToNextCell(item);
264 setDefaultScore(table);
268 void ScoreDialog::moveToNextCell(QTableWidgetItem *item)
273 QTableWidget *table = item->tableWidget();
278 int row = table->currentRow();
279 int col = table->currentColumn();
281 if (col < (COLS-1)) {
284 else if (col == (COLS-1)) {
286 row = (row == ROW_SCORE_2) ? ROW_SCORE : ROW_SCORE_2;
288 table->setCurrentCell(row, col);
291 void ScoreDialog::results(QVector<QString> &scores)
293 for (int i = 0; i < 9; i++) {
294 QTableWidgetItem *frontItem = table->item(ROW_SCORE, i);
295 QTableWidgetItem *backItem = table->item(ROW_SCORE_2, i);
298 scores[i] = frontItem->text();
301 scores[i+9] = backItem->text();
305 bool ScoreDialog::validate(void)
307 for (int i=0; i<9; i++) {
308 QTableWidgetItem *frontItem = table->item(ROW_SCORE, i);
309 QTableWidgetItem *backItem = table->item(ROW_SCORE_2, i);
311 if (!frontItem || !backItem)
314 QString str1 = frontItem->text();
315 QString str2 = backItem->text();
317 if (str1.isEmpty() || str2.isEmpty())
323 void ScoreDialog::finish(void)
328 qDebug() << "ScoreDialog: invalid data, cancel or correct";
332 void ScoreDialog::reject(void)