4 #include <QInputContext>
5 #include <QtGui/QTableWidget>
7 #include "course-dialog.h"
8 #include "cell-delegate.h"
11 CourseSelectDialog::CourseSelectDialog(QWidget *parent) : QDialog(parent)
13 QWidget *centralWidget = new QWidget(this);
14 createLayout(centralWidget);
16 setWindowTitle(tr("ScoreCard: New Club and Course"));
19 void CourseSelectDialog::createLayout(QWidget *parent)
21 labelClub = new QLabel(tr("Club"));
22 labelCourse = new QLabel(tr("Course"));
23 lineEditClub = new QLineEdit;
24 lineEditCourse = new QLineEdit;
25 pushButtonNext = new QPushButton(tr("Next"));
27 connect(pushButtonNext, SIGNAL(clicked()), this, SLOT(next()));
29 leftLayout = new QVBoxLayout;
30 leftLayout->addWidget(lineEditClub);
31 leftLayout->addWidget(lineEditCourse);
33 rightLayout = new QVBoxLayout;
34 rightLayout->addStretch();
35 rightLayout->addWidget(pushButtonNext);
37 QHBoxLayout *mainLayout = new QHBoxLayout(parent);
38 mainLayout->addLayout(leftLayout);
39 mainLayout->addLayout(rightLayout);
41 setLayout(mainLayout);
44 void CourseSelectDialog::results(QString &club,
47 club = lineEditClub->text();
48 course = lineEditCourse->text();
51 bool CourseSelectDialog::validate(void)
53 QString str1 = lineEditClub->text();
54 QString str2 = lineEditCourse->text();
56 if (str1.isEmpty() || str2.isEmpty())
62 void CourseSelectDialog::next(void)
67 qDebug() << "CourseDialog: invalid data, cancel or correct";
71 ////////////////////////////////////////////////////////////////////////////////
72 ////////////////////////////////////////////////////////////////////////////////
73 ////////////////////////////////////////////////////////////////////////////////
75 CourseDialog::CourseDialog(QWidget *parent) : QDialog(parent)
79 QWidget *centralWidget = new QWidget(this);
84 createLayout(centralWidget);
87 void CourseDialog::createLayout(QWidget *parent)
89 leftLayout = new QVBoxLayout;
90 leftLayout->addWidget(table);
92 rightLayout = new QVBoxLayout;
93 rightLayout->addWidget(pushButtonUp);
94 rightLayout->addWidget(pushButtonDown);
95 rightLayout->addWidget(pushButtonNext);
96 rightLayout->addStretch();
97 rightLayout->addWidget(pushButtonFinish);
99 QHBoxLayout *mainLayout = new QHBoxLayout(parent);
100 mainLayout->addLayout(leftLayout);
101 mainLayout->addLayout(rightLayout);
102 setLayout(mainLayout);
105 void CourseDialog::createButton(QWidget *parent)
107 pushButtonUp = new QPushButton(tr("+"));
108 connect(pushButtonUp, SIGNAL(clicked()), this, SLOT(up()));
110 pushButtonDown = new QPushButton(tr("-"));
111 connect(pushButtonDown, SIGNAL(clicked()), this, SLOT(down()));
113 pushButtonNext = new QPushButton(tr("Next"));
114 connect(pushButtonNext, SIGNAL(clicked()), this, SLOT(next()));
116 pushButtonFinish = new QPushButton(tr("Finish"));
117 connect(pushButtonFinish, SIGNAL(clicked()), this, SLOT(finish()));
120 void CourseDialog::createTable(QWidget *parent)
122 table = new QTableWidget(ROWS, COLS, parent);
125 headers << "" << "Par" << "HCP" << "Len" << "" << "Par" << "HCP" << "Len";
126 table->setVerticalHeaderLabels(headers);
127 table->horizontalHeader()->hide();
128 table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
129 table->verticalHeader()->setResizeMode(QHeaderView::Stretch);
132 void CourseDialog::init(Course *course)
134 QTableWidgetItem *par, *hcp;
135 QColor fgColor(Qt::white);
136 QColor bgColor(Qt::black);
138 for (int i=0; i<18; i++) {
140 par = new QTableWidgetItem(course->getPar(i));
141 hcp = new QTableWidgetItem(course->getHcp(i));
144 par = new QTableWidgetItem("4");
145 hcp = new QTableWidgetItem("9");
147 QTableWidgetItem *len = new QTableWidgetItem("");
149 QTableWidgetItem *holeNum = new QTableWidgetItem(QString::number(i+1));
150 holeNum->setTextColor(fgColor);
151 holeNum->setBackgroundColor(bgColor);
153 holeNum->setTextAlignment(Qt::AlignCenter);
154 par->setTextAlignment(Qt::AlignCenter);
155 hcp->setTextAlignment(Qt::AlignCenter);
156 len->setTextAlignment(Qt::AlignCenter);
159 table->setItem(0, i, holeNum);
160 table->setItem(1, i, par);
161 table->setItem(2, i, hcp);
162 table->setItem(3, i, len);
165 table->setItem(4, i-9, holeNum);
166 table->setItem(5, i-9, par);
167 table->setItem(6, i-9, hcp);
168 table->setItem(7, i-9, len);
173 void CourseDialog::up(void)
175 QTableWidgetItem *item = table->currentItem();
180 int i = (item->text()).toInt();
182 item->setData(Qt::DisplayRole, value);
185 void CourseDialog::down(void)
187 QTableWidgetItem *item = table->currentItem();
192 int i = (item->text()).toInt();
194 item->setData(Qt::DisplayRole, value);
197 void CourseDialog::next(void)
200 QTableWidgetItem *item = table->currentItem();
201 moveToNextCell(item);
202 //setDefaultScore(table);
206 void CourseDialog::moveToNextCell(QTableWidgetItem *item)
211 QTableWidget *table = item->tableWidget();
216 int row = table->currentRow();
217 int col = table->currentColumn();
219 if (col < (COLS-1)) {
222 else if (col == (COLS-1)) {
224 row = (row == ROW_PAR_2) ? ROW_PAR : ROW_PAR_2;
226 //qDebug() << "new cell: " << row << "/" << col;
227 table->setCurrentCell(row, col);
230 void CourseDialog::results(QVector<QString> &par,
231 QVector<QString> &hcp,
232 QVector<QString> &len)
234 for (int i = 0; i < 9; i++) {
235 QTableWidgetItem *frontPar = table->item(ROW_PAR, i);
236 QTableWidgetItem *backPar = table->item(ROW_PAR_2, i);
237 QTableWidgetItem *frontHcp = table->item(ROW_HCP, i);
238 QTableWidgetItem *backHcp = table->item(ROW_HCP_2, i);
239 QTableWidgetItem *frontLen = table->item(ROW_LEN, i);
240 QTableWidgetItem *backLen = table->item(ROW_LEN_2, i);
243 par[i] = frontPar->text();
245 par[i+9] = backPar->text();
247 hcp[i] = frontHcp->text();
249 hcp[i+9] = backHcp->text();
251 len[i] = frontLen->text();
253 len[i+9] = backLen->text();
257 // Only par is mandatory
258 bool CourseDialog::validate(void)
260 for (int i = 0; i < 9; i++) {
261 QTableWidgetItem *frontItem = table->item(ROW_PAR, i);
262 QTableWidgetItem *backItem = table->item(ROW_PAR_2, i);
264 if (!frontItem || !backItem)
267 QString str1 = frontItem->text();
268 QString str2 = backItem->text();
270 if (str1.isEmpty() || str2.isEmpty())
276 void CourseDialog::finish(void)
281 qDebug() << "CourseDialog: invalid data, cancel or correct";