2ea1d0507032a86470d9131907a0a96de5fa2d65
[scorecard] / src / course-dialog.cpp
1 #include <QtGui>
2 #include <QLayout>
3 #include <QLineEdit>
4 #include <QInputContext>
5 #include <QtGui/QTableWidget>
6
7 #include "course-dialog.h"
8 #include "cell-delegate.h"
9
10
11 CourseSelectDialog::CourseSelectDialog(QWidget *parent) : QDialog(parent)
12 {
13   QWidget *centralWidget = new QWidget(this);
14   createLayout(centralWidget);
15
16   setWindowTitle(tr("ScoreCard: New Club and Course"));
17 }
18
19 void CourseSelectDialog::createLayout(QWidget *parent)
20 {
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"));
26
27   connect(pushButtonNext, SIGNAL(clicked()), this, SLOT(next()));
28
29   leftLayout = new QVBoxLayout;
30   leftLayout->addWidget(lineEditClub);
31   leftLayout->addWidget(lineEditCourse);
32
33   rightLayout = new QVBoxLayout;
34   rightLayout->addStretch();
35   rightLayout->addWidget(pushButtonNext);
36
37   QHBoxLayout *mainLayout = new QHBoxLayout(parent);
38   mainLayout->addLayout(leftLayout);
39   mainLayout->addLayout(rightLayout);
40
41   setLayout(mainLayout);
42 }
43
44 void CourseSelectDialog::results(QString &club, 
45                                  QString &course)
46 {  
47   club = lineEditClub->text();
48   course = lineEditCourse->text();
49 }
50
51 bool CourseSelectDialog::validate(void)
52 {
53   QString str1 = lineEditClub->text();
54   QString str2 = lineEditCourse->text();
55
56   if (str1.isEmpty() || str2.isEmpty())
57     return false;
58   
59   return true;
60 }
61
62 void CourseSelectDialog::next(void)
63 {
64   if (validate())
65     done(1);
66   else {
67     qDebug() << "CourseDialog: invalid data, cancel or correct";
68   }
69 }
70
71 CourseDialog::CourseDialog(QWidget *parent) : QDialog(parent)
72 {
73   resize(800, 400);
74
75   createTable();
76   createLabel();
77
78   createLayout(this);
79 }
80
81 void CourseDialog::createLayout(QWidget *parent)
82 {
83   leftLayout = new QVBoxLayout(parent);
84   leftLayout->addWidget(table);
85
86   rightLayout = new QVBoxLayout(parent);
87   rightLayout->addStretch();
88   rightLayout->addWidget(pushButtonFinish);
89
90   QHBoxLayout *mainLayout = new QHBoxLayout(parent);
91   mainLayout->addLayout(leftLayout);
92   mainLayout->addLayout(rightLayout);
93   setLayout(mainLayout);
94 }
95
96 void CourseDialog::createLabel(QWidget *parent)
97 {
98   clubLabel = new QLabel(tr("Club"));
99   courseLabel = new QLabel(tr("Course"));
100    
101   clubEdit = new QLineEdit;
102   courseEdit = new QLineEdit;
103
104   pushButtonFinish = new QPushButton(tr("Finish"));
105   connect(pushButtonFinish, SIGNAL(clicked()), this, SLOT(finish()));
106 }
107
108 void CourseDialog::createTable(QWidget *parent)
109 {
110   table = new QTableWidget(rows, cols, parent);
111
112   QStringList headers;
113   headers << "" << "Par" << "HCP" << "Len" << "" << "Par" << "HCP" << "Len";
114   table->setVerticalHeaderLabels(headers);
115   table->horizontalHeader()->hide();
116
117   //CellDelegate *cellDelegate = new CellDelegate(this);
118   //table->setItemDelegate(cellDelegate);
119
120   table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
121   table->verticalHeader()->setResizeMode(QHeaderView::Stretch);
122
123   for (int i=0; i<18; i++) {
124     QTableWidgetItem *par = new QTableWidgetItem("");
125     QTableWidgetItem *hcp = new QTableWidgetItem("");
126     QTableWidgetItem *len = new QTableWidgetItem("");
127
128     QTableWidgetItem *holeNum = new QTableWidgetItem(QString::number(i+1));
129     QColor bgColor(Qt::gray);
130     holeNum->setBackgroundColor(bgColor);
131
132     holeNum->setTextAlignment(Qt::AlignCenter);
133     par->setTextAlignment(Qt::AlignCenter);
134     hcp->setTextAlignment(Qt::AlignCenter);
135     len->setTextAlignment(Qt::AlignCenter);
136     
137     if (i < 9) {
138       table->setItem(0, i, holeNum);
139       table->setItem(1, i, par);
140       table->setItem(2, i, hcp);
141       table->setItem(3, i, len);
142     }
143     else {
144       table->setItem(4, i-9, holeNum);
145       table->setItem(5, i-9, par);
146       table->setItem(6, i-9, hcp);
147       table->setItem(7, i-9, len);
148     }
149   }
150 }
151
152 void CourseDialog::results(QVector<QString> &par,
153                           QVector<QString> &hcp,
154                           QVector<QString> &len)
155 {
156   for (int i = 0; i < 9; i++) {
157     QTableWidgetItem *frontPar = table->item(ROW_PAR, i);
158     QTableWidgetItem *backPar = table->item(ROW_PAR_2, i);
159     QTableWidgetItem *frontHcp = table->item(ROW_HCP, i);
160     QTableWidgetItem *backHcp = table->item(ROW_HCP_2, i);
161     QTableWidgetItem *frontLen = table->item(ROW_LEN, i);
162     QTableWidgetItem *backLen = table->item(ROW_LEN_2, i);
163
164     if (frontPar)
165       par[i] = frontPar->text();
166     if (backPar)
167       par[i+9] = backPar->text();
168     if (frontHcp)
169       hcp[i] = frontHcp->text();
170     if (backHcp)
171       hcp[i+9] = backHcp->text();
172     if (frontLen)
173       len[i] = frontLen->text();
174     if (backLen)
175       len[i+9] = backLen->text();
176   }
177 }
178
179 // Only par is mandatory
180 bool CourseDialog::validate(void)
181 {
182   for (int i = 0; i < 9; i++) {
183     QTableWidgetItem *frontItem = table->item(ROW_PAR, i);
184     QTableWidgetItem *backItem = table->item(ROW_PAR_2, i);
185     
186     if (!frontItem || !backItem)
187       return false;
188     
189     QString str1 = frontItem->text();
190     QString str2 = backItem->text();
191     
192     if (str1.isEmpty() || str2.isEmpty())
193       return false;
194   }
195   return true;
196 }
197
198 void CourseDialog::finish(void)
199 {
200   if (validate())
201     done(1);
202   else {
203     qDebug() << "CourseDialog: invalid data, cancel or correct";
204   }
205 }
206
207