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;
136 for (int i=0; i<18; i++) {
138 par = new QTableWidgetItem(course->getPar(i));
139 hcp = new QTableWidgetItem(course->getHcp(i));
142 par = new QTableWidgetItem("4");
143 hcp = new QTableWidgetItem("9");
145 QTableWidgetItem *len = new QTableWidgetItem("");
147 QTableWidgetItem *holeNum = new QTableWidgetItem(QString::number(i+1));
148 QColor bgColor(Qt::gray);
149 holeNum->setBackgroundColor(bgColor);
151 holeNum->setTextAlignment(Qt::AlignCenter);
152 par->setTextAlignment(Qt::AlignCenter);
153 hcp->setTextAlignment(Qt::AlignCenter);
154 len->setTextAlignment(Qt::AlignCenter);
157 table->setItem(0, i, holeNum);
158 table->setItem(1, i, par);
159 table->setItem(2, i, hcp);
160 table->setItem(3, i, len);
163 table->setItem(4, i-9, holeNum);
164 table->setItem(5, i-9, par);
165 table->setItem(6, i-9, hcp);
166 table->setItem(7, i-9, len);
172 void CourseDialog::up(void)
174 QTableWidgetItem *item = table->currentItem();
179 int i = (item->text()).toInt();
181 item->setData(Qt::DisplayRole, value);
184 void CourseDialog::down(void)
186 QTableWidgetItem *item = table->currentItem();
191 int i = (item->text()).toInt();
193 item->setData(Qt::DisplayRole, value);
196 void CourseDialog::next(void)
199 QTableWidgetItem *item = table->currentItem();
200 moveToNextCell(item);
201 //setDefaultScore(table);
205 void CourseDialog::moveToNextCell(QTableWidgetItem *item)
210 QTableWidget *table = item->tableWidget();
215 int row = table->currentRow();
216 int col = table->currentColumn();
218 if (col < (COLS-1)) {
221 else if (col == (COLS-1)) {
223 row = (row == ROW_PAR_2) ? ROW_PAR : ROW_PAR_2;
225 //qDebug() << "new cell: " << row << "/" << col;
226 table->setCurrentCell(row, col);
229 void CourseDialog::results(QVector<QString> &par,
230 QVector<QString> &hcp,
231 QVector<QString> &len)
233 for (int i = 0; i < 9; i++) {
234 QTableWidgetItem *frontPar = table->item(ROW_PAR, i);
235 QTableWidgetItem *backPar = table->item(ROW_PAR_2, i);
236 QTableWidgetItem *frontHcp = table->item(ROW_HCP, i);
237 QTableWidgetItem *backHcp = table->item(ROW_HCP_2, i);
238 QTableWidgetItem *frontLen = table->item(ROW_LEN, i);
239 QTableWidgetItem *backLen = table->item(ROW_LEN_2, i);
242 par[i] = frontPar->text();
244 par[i+9] = backPar->text();
246 hcp[i] = frontHcp->text();
248 hcp[i+9] = backHcp->text();
250 len[i] = frontLen->text();
252 len[i+9] = backLen->text();
256 // Only par is mandatory
257 bool CourseDialog::validate(void)
259 for (int i = 0; i < 9; i++) {
260 QTableWidgetItem *frontItem = table->item(ROW_PAR, i);
261 QTableWidgetItem *backItem = table->item(ROW_PAR_2, i);
263 if (!frontItem || !backItem)
266 QString str1 = frontItem->text();
267 QString str2 = backItem->text();
269 if (str1.isEmpty() || str2.isEmpty())
275 void CourseDialog::finish(void)
280 qDebug() << "CourseDialog: invalid data, cancel or correct";