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();
129 //CellDelegate *cellDelegate = new CellDelegate(this);
130 //table->setItemDelegate(cellDelegate);
132 table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
133 table->verticalHeader()->setResizeMode(QHeaderView::Stretch);
135 for (int i=0; i<18; i++) {
136 QTableWidgetItem *par = new QTableWidgetItem("4");
137 QTableWidgetItem *hcp = new QTableWidgetItem("9");
138 QTableWidgetItem *len = new QTableWidgetItem("");
140 QTableWidgetItem *holeNum = new QTableWidgetItem(QString::number(i+1));
141 QColor bgColor(Qt::gray);
142 holeNum->setBackgroundColor(bgColor);
144 holeNum->setTextAlignment(Qt::AlignCenter);
145 par->setTextAlignment(Qt::AlignCenter);
146 hcp->setTextAlignment(Qt::AlignCenter);
147 len->setTextAlignment(Qt::AlignCenter);
150 table->setItem(0, i, holeNum);
151 table->setItem(1, i, par);
152 table->setItem(2, i, hcp);
153 table->setItem(3, i, len);
156 table->setItem(4, i-9, holeNum);
157 table->setItem(5, i-9, par);
158 table->setItem(6, i-9, hcp);
159 table->setItem(7, i-9, len);
164 void CourseDialog::up(void)
166 QTableWidgetItem *item = table->currentItem();
171 int i = (item->text()).toInt();
173 item->setData(Qt::DisplayRole, value);
176 void CourseDialog::down(void)
178 QTableWidgetItem *item = table->currentItem();
183 int i = (item->text()).toInt();
185 item->setData(Qt::DisplayRole, value);
188 void CourseDialog::next(void)
191 QTableWidgetItem *item = table->currentItem();
192 moveToNextCell(item);
193 //setDefaultScore(table);
197 void CourseDialog::moveToNextCell(QTableWidgetItem *item)
202 QTableWidget *table = item->tableWidget();
207 int row = table->currentRow();
208 int col = table->currentColumn();
210 if (col < (COLS-1)) {
213 else if (col == (COLS-1)) {
215 row = (row == ROW_PAR_2) ? ROW_PAR : ROW_PAR_2;
217 //qDebug() << "new cell: " << row << "/" << col;
218 table->setCurrentCell(row, col);
221 void CourseDialog::results(QVector<QString> &par,
222 QVector<QString> &hcp,
223 QVector<QString> &len)
225 for (int i = 0; i < 9; i++) {
226 QTableWidgetItem *frontPar = table->item(ROW_PAR, i);
227 QTableWidgetItem *backPar = table->item(ROW_PAR_2, i);
228 QTableWidgetItem *frontHcp = table->item(ROW_HCP, i);
229 QTableWidgetItem *backHcp = table->item(ROW_HCP_2, i);
230 QTableWidgetItem *frontLen = table->item(ROW_LEN, i);
231 QTableWidgetItem *backLen = table->item(ROW_LEN_2, i);
234 par[i] = frontPar->text();
236 par[i+9] = backPar->text();
238 hcp[i] = frontHcp->text();
240 hcp[i+9] = backHcp->text();
242 len[i] = frontLen->text();
244 len[i+9] = backLen->text();
248 // Only par is mandatory
249 bool CourseDialog::validate(void)
251 for (int i = 0; i < 9; i++) {
252 QTableWidgetItem *frontItem = table->item(ROW_PAR, i);
253 QTableWidgetItem *backItem = table->item(ROW_PAR_2, i);
255 if (!frontItem || !backItem)
258 QString str1 = frontItem->text();
259 QString str2 = backItem->text();
261 if (str1.isEmpty() || str2.isEmpty())
267 void CourseDialog::finish(void)
272 qDebug() << "CourseDialog: invalid data, cancel or correct";