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/or 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 void CourseSelectDialog::next(void)
56 CourseDialog::CourseDialog(QWidget *parent) : QDialog(parent)
67 void CourseDialog::createLayout(QWidget *parent)
69 leftLayout = new QVBoxLayout;
70 leftLayout->addWidget(table);
72 rightLayout = new QVBoxLayout;
73 rightLayout->addStretch();
74 rightLayout->addWidget(pushButtonFinnish);
76 QHBoxLayout *mainLayout = new QHBoxLayout(parent);
77 mainLayout->addLayout(leftLayout);
78 mainLayout->addLayout(rightLayout);
79 setLayout(mainLayout);
82 void CourseDialog::createLabel(QWidget *parent)
84 clubLabel = new QLabel(tr("Club"));
85 courseLabel = new QLabel(tr("Course"));
87 clubEdit = new QLineEdit;
88 courseEdit = new QLineEdit;
90 pushButtonFinnish = new QPushButton(tr("Finnish"));
91 connect(pushButtonFinnish, SIGNAL(clicked()), this, SLOT(finnish()));
94 void CourseDialog::createTable(QWidget *parent)
96 table = new QTableWidget(rows, cols);
99 headers << "Hole" << "Par" << "HCP" << "Len" << "Hole" << "Par" << "HCP" << "Len";
100 table->setVerticalHeaderLabels(headers);
101 table->horizontalHeader()->hide();
103 //CellDelegate *cellDelegate = new CellDelegate(this);
104 //table->setItemDelegate(cellDelegate);
106 table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
107 table->verticalHeader()->setResizeMode(QHeaderView::Stretch);
109 for (int i=0; i<18; i++) {
110 QTableWidgetItem *par = new QTableWidgetItem("");
111 QTableWidgetItem *hcp = new QTableWidgetItem("");
112 QTableWidgetItem *len = new QTableWidgetItem("");
114 QTableWidgetItem *holeNum = new QTableWidgetItem(QString::number(i+1));
115 QColor bgColor(Qt::gray);
116 holeNum->setBackgroundColor(bgColor);
118 holeNum->setTextAlignment(Qt::AlignCenter);
119 par->setTextAlignment(Qt::AlignCenter);
120 hcp->setTextAlignment(Qt::AlignCenter);
121 len->setTextAlignment(Qt::AlignCenter);
124 table->setItem(0, i, holeNum);
125 table->setItem(1, i, par);
126 table->setItem(2, i, hcp);
127 table->setItem(3, i, len);
130 table->setItem(4, i-9, holeNum);
131 table->setItem(5, i-9, par);
132 table->setItem(6, i-9, hcp);
133 table->setItem(7, i-9, len);
137 //connect(table, SIGNAL(itemChanged(QTableWidgetItem *)), this, SLOT(itemChanged(QTableWidgetItem *)));
141 void CourseDialog::itemChanged(QTableWidgetItem *item)
143 qDebug() << "itemChanged";
145 int row = table->currentRow();
146 int col = table->currentColumn();
152 if (row == separator_row)
155 table->setCurrentCell(row, col);
158 void CourseDialog::nextCell(QObject *obj)
161 int row = table->currentRow();
162 int col = table->currentColumn();
163 QTableWidgetItem *item = table->item(row, col);
165 qDebug() << "next Cell " << obj;
166 qDebug() << "item " << item << "row=" << row << " col=" << col;
168 table->setItem(row, col, item);
171 table->currentIndex();
172 table->setCurrentCell(2,2);
176 void CourseDialog::results(QVector<QString> &par,
177 QVector<QString> &hcp,
178 QVector<QString> &len)
180 for (int i = 0; i < 9; i++) {
181 QTableWidgetItem *frontPar = table->item(ROW_PAR, i);
182 QTableWidgetItem *backPar = table->item(ROW_PAR_2, i);
183 QTableWidgetItem *frontHcp = table->item(ROW_HCP, i);
184 QTableWidgetItem *backHcp = table->item(ROW_HCP_2, i);
185 QTableWidgetItem *frontLen = table->item(ROW_LEN, i);
186 QTableWidgetItem *backLen = table->item(ROW_LEN_2, i);
189 par[i] = frontPar->text();
191 par[i+9] = backPar->text();
193 hcp[i] = frontHcp->text();
195 hcp[i+9] = backHcp->text();
197 len[i] = frontLen->text();
199 len[i+9] = backLen->text();
203 // Only par is mandatory
204 bool CourseDialog::validate(void)
206 for (int i = 0; i < 9; i++) {
207 QTableWidgetItem *frontItem = table->item(ROW_PAR, i);
208 QTableWidgetItem *backItem = table->item(ROW_PAR_2, i);
210 if (!frontItem || !backItem)
213 QString str1 = frontItem->text();
214 QString str2 = backItem->text();
216 if (str1.isEmpty() || str2.isEmpty())
222 void CourseDialog::finnish(void)
227 qDebug() << "CourseDialog: invalid data, cancel or correct";