#############################################################################
# Makefile for building: bin/scorecard
-# Generated by qmake (2.01a) (Qt 4.5.0) on: Mon Oct 12 19:08:14 2009
+# Generated by qmake (2.01a) (Qt 4.5.0) on: Mon Oct 12 22:55:01 2009
# Project: scorecard.pro
# Template: app
# Command: /opt/qtsdk-2009.01/qt/bin/qmake -unix -o Makefile scorecard.pro
<hole num="18" par="5" />
</course>
</club>
+ <club name="x" >
+ <course name="y" >
+ <hole num="1" par="3" hcp="9" />
+ <hole num="2" par="5" hcp="9" />
+ <hole num="3" par="5" hcp="9" />
+ <hole num="4" par="5" hcp="9" />
+ <hole num="5" par="5" hcp="9" />
+ <hole num="6" par="7" hcp="9" />
+ <hole num="7" par="6" hcp="9" />
+ <hole num="8" par="6" hcp="9" />
+ <hole num="9" par="6" hcp="9" />
+ <hole num="10" par="6" hcp="9" />
+ <hole num="11" par="6" hcp="9" />
+ <hole num="12" par="6" hcp="9" />
+ <hole num="13" par="6" hcp="9" />
+ <hole num="14" par="6" hcp="9" />
+ <hole num="15" par="6" hcp="9" />
+ <hole num="16" par="6" hcp="9" />
+ <hole num="17" par="6" hcp="9" />
+ <hole num="18" par="6" hcp="9" />
+ </course>
+ <course name="z" >
+ <hole num="1" par="3" hcp="9" />
+ <hole num="2" par="3" hcp="9" />
+ <hole num="3" par="3" hcp="9" />
+ <hole num="4" par="3" hcp="9" />
+ <hole num="5" par="3" hcp="9" />
+ <hole num="6" par="3" hcp="9" />
+ <hole num="7" par="3" hcp="9" />
+ <hole num="8" par="3" hcp="9" />
+ <hole num="9" par="3" hcp="9" />
+ <hole num="10" par="4" hcp="9" />
+ <hole num="11" par="4" hcp="9" />
+ <hole num="12" par="4" hcp="9" />
+ <hole num="13" par="4" hcp="9" />
+ <hole num="14" par="4" hcp="9" />
+ <hole num="15" par="4" hcp="9" />
+ <hole num="16" par="4" hcp="9" />
+ <hole num="17" par="4" hcp="9" />
+ <hole num="18" par="4" hcp="9" />
+ </course>
+ <course name="w" >
+ <hole num="1" par="4" hcp="9" />
+ <hole num="2" par="4" hcp="9" />
+ <hole num="3" par="4" hcp="9" />
+ <hole num="4" par="4" hcp="9" />
+ <hole num="5" par="4" hcp="9" />
+ <hole num="6" par="4" hcp="9" />
+ <hole num="7" par="4" hcp="9" />
+ <hole num="8" par="4" hcp="9" />
+ <hole num="9" par="4" hcp="9" />
+ <hole num="10" par="5" hcp="9" />
+ <hole num="11" par="5" hcp="9" />
+ <hole num="12" par="5" hcp="9" />
+ <hole num="13" par="5" hcp="9" />
+ <hole num="14" par="5" hcp="9" />
+ <hole num="15" par="5" hcp="9" />
+ <hole num="16" par="5" hcp="9" />
+ <hole num="17" par="5" hcp="9" />
+ <hole num="18" par="5" hcp="9" />
+ </course>
+ <course name="2" >
+ <hole num="1" par="5" />
+ <hole num="2" par="5" />
+ <hole num="3" par="5" />
+ <hole num="4" par="5" />
+ <hole num="5" par="5" />
+ <hole num="6" par="5" />
+ <hole num="7" par="5" />
+ <hole num="8" par="5" />
+ <hole num="9" par="5" />
+ <hole num="10" par="3" />
+ <hole num="11" par="3" />
+ <hole num="12" par="3" />
+ <hole num="13" par="3" />
+ <hole num="14" par="3" />
+ <hole num="15" par="3" />
+ <hole num="16" par="3" />
+ <hole num="17" par="3" />
+ <hole num="18" par="3" />
+ </course>
+ <course name="hcp-values" >
+ <hole num="1" par="6" hcp="1" />
+ <hole num="2" par="6" hcp="2" />
+ <hole num="3" par="6" hcp="3" />
+ <hole num="4" par="6" hcp="4" />
+ <hole num="5" par="6" hcp="5" />
+ <hole num="6" par="6" hcp="6" />
+ <hole num="7" par="6" hcp="7" />
+ <hole num="8" par="6" hcp="8" />
+ <hole num="9" par="6" hcp="9" />
+ <hole num="10" par="5" hcp="10" />
+ <hole num="11" par="5" hcp="11" />
+ <hole num="12" par="5" hcp="12" />
+ <hole num="13" par="5" hcp="13" />
+ <hole num="14" par="5" hcp="14" />
+ <hole num="15" par="5" hcp="15" />
+ <hole num="16" par="5" hcp="16" />
+ <hole num="17" par="5" hcp="17" />
+ <hole num="18" par="5" hcp="18" />
+ </course>
+ </club>
</data>
<data>
-<club name="Master">
-<course name="Master">
-<hole hcp="" length="" num="1" par="4"/>
-<hole hcp="" length="" num="2" par="4"/>
-<hole hcp="" length="" num="3" par="4"/>
-<hole hcp="" length="" num="4" par="5"/>
-<hole hcp="" length="" num="5" par="3"/>
-<hole hcp="" length="" num="6" par="4"/>
-<hole hcp="" length="" num="7" par="4"/>
-<hole hcp="" length="" num="8" par="5"/>
-<hole hcp="" length="" num="9" par="5"/>
-<hole hcp="" length="" num="10" par="4"/>
-<hole hcp="" length="" num="11" par="4"/>
-<hole hcp="" length="" num="12" par="4"/>
-<hole hcp="" length="" num="13" par="4"/>
-<hole hcp="" length="" num="14" par="3"/>
-<hole hcp="" length="" num="15" par="5"/>
-<hole hcp="" length="" num="16" par="3"/>
-<hole hcp="" length="" num="17" par="4"/>
-<hole hcp="" length="" num="18" par="4"/>
-</course>
-<course name="Forest">
-<hole hcp="13" length="" num="1" par="4"/>
-<hole hcp="15" length="" num="2" par="4"/>
-<hole hcp="1" length="" num="3" par="5"/>
-<hole hcp="7" length="" num="4" par="3"/>
-<hole hcp="5" length="" num="5" par="4"/>
-<hole hcp="9" length="" num="6" par="3"/>
-<hole hcp="11" length="" num="7" par="4"/>
-<hole hcp="17" length="" num="8" par="3"/>
-<hole hcp="3" length="" num="9" par="5"/>
-<hole hcp="14" length="" num="10" par="4"/>
-<hole hcp="12" length="" num="11" par="4"/>
-<hole hcp="8" length="" num="12" par="3"/>
-<hole hcp="4" length="" num="13" par="5"/>
-<hole hcp="10" length="" num="14" par="4"/>
-<hole hcp="6" length="" num="15" par="4"/>
-<hole hcp="18" length="" num="16" par="4"/>
-<hole hcp="2" length="" num="17" par="5"/>
-<hole hcp="16" length="" num="18" par="4"/>
-</course>
-</club>
-<club name="Lohja">
-<course name="Kalkki-Petteri">
-<hole hcp="" length="" num="1" par="4"/>
-<hole hcp="" length="" num="2" par="3"/>
-<hole hcp="" length="" num="3" par="4"/>
-<hole hcp="" length="" num="4" par="4"/>
-<hole hcp="" length="" num="5" par="4"/>
-<hole hcp="" length="" num="6" par="5"/>
-<hole hcp="" length="" num="7" par="5"/>
-<hole hcp="" length="" num="8" par="3"/>
-<hole hcp="" length="" num="9" par="4"/>
-<hole hcp="" length="" num="10" par="4"/>
-<hole hcp="" length="" num="11" par="5"/>
-<hole hcp="" length="" num="12" par="4"/>
-<hole hcp="" length="" num="13" par="4"/>
-<hole hcp="" length="" num="14" par="3"/>
-<hole hcp="" length="" num="15" par="5"/>
-<hole hcp="" length="" num="16" par="3"/>
-<hole hcp="" length="" num="17" par="4"/>
-<hole hcp="" length="" num="18" par="4"/>
-</course>
-<course name="Pyha-Lauri">
-<hole hcp="" length="" num="1" par="4"/>
-<hole hcp="" length="" num="2" par="4"/>
-<hole hcp="" length="" num="3" par="4"/>
-<hole hcp="" length="" num="4" par="5"/>
-<hole hcp="" length="" num="5" par="5"/>
-<hole hcp="" length="" num="6" par="3"/>
-<hole hcp="" length="" num="7" par="3"/>
-<hole hcp="" length="" num="8" par="4"/>
-<hole hcp="" length="" num="9" par="4"/>
-<hole hcp="" length="" num="10" par="5"/>
-<hole hcp="" length="" num="11" par="5"/>
-<hole hcp="" length="" num="12" par="3"/>
-<hole hcp="" length="" num="13" par="3"/>
-<hole hcp="" length="" num="14" par="4"/>
-<hole hcp="" length="" num="15" par="4"/>
-<hole hcp="" length="" num="16" par="4"/>
-<hole hcp="" length="" num="17" par="4"/>
-<hole hcp="" length="" num="18" par="4"/>
-</course>
-</club>
-<club name="Sarfvik">
-<course name="New Course">
-<hole hcp="" length="" num="1" par="5"/>
-<hole hcp="" length="" num="2" par="4"/>
-<hole hcp="" length="" num="3" par="3"/>
-<hole hcp="" length="" num="4" par="4"/>
-<hole hcp="" length="" num="5" par="3"/>
-<hole hcp="" length="" num="6" par="4"/>
-<hole hcp="" length="" num="7" par="5"/>
-<hole hcp="" length="" num="8" par="4"/>
-<hole hcp="" length="" num="9" par="4"/>
-<hole hcp="" length="" num="10" par="4"/>
-<hole hcp="" length="" num="11" par="3"/>
-<hole hcp="" length="" num="12" par="4"/>
-<hole hcp="" length="" num="13" par="4"/>
-<hole hcp="" length="" num="14" par="5"/>
-<hole hcp="" length="" num="15" par="4"/>
-<hole hcp="" length="" num="16" par="4"/>
-<hole hcp="" length="" num="17" par="5"/>
-<hole hcp="" length="" num="18" par="3"/>
-</course>
-</club>
-<club name="Pestana">
-<course name="Vale de Pinta">
-<hole hcp="12" length="" num="1" par="4"/>
-<hole hcp="8" length="" num="2" par="4"/>
-<hole hcp="14" length="" num="3" par="4"/>
-<hole hcp="6" length="" num="4" par="5"/>
-<hole hcp="18" length="" num="5" par="3"/>
-<hole hcp="2" length="" num="6" par="4"/>
-<hole hcp="4" length="" num="7" par="3"/>
-<hole hcp="16" length="" num="8" par="4"/>
-<hole hcp="10" length="" num="9" par="4"/>
-<hole hcp="9" length="" num="10" par="4"/>
-<hole hcp="13" length="" num="11" par="3"/>
-<hole hcp="7" length="" num="12" par="5"/>
-<hole hcp="1" length="" num="13" par="4"/>
-<hole hcp="15" length="" num="14" par="5"/>
-<hole hcp="17" length="" num="15" par="3"/>
-<hole hcp="5" length="" num="16" par="4"/>
-<hole hcp="11" length="" num="17" par="3"/>
-<hole hcp="3" length="" num="18" par="5"/>
-</course>
-</club>
-<club name="Meridien">
-<course name="Penina">
-<hole hcp="" length="" num="1" par="4"/>
-<hole hcp="" length="" num="2" par="4"/>
-<hole hcp="" length="" num="3" par="4"/>
-<hole hcp="" length="" num="4" par="4"/>
-<hole hcp="" length="" num="5" par="5"/>
-<hole hcp="" length="" num="6" par="3"/>
-<hole hcp="" length="" num="7" par="4"/>
-<hole hcp="" length="" num="8" par="3"/>
-<hole hcp="" length="" num="9" par="4"/>
-<hole hcp="" length="" num="10" par="5"/>
-<hole hcp="" length="" num="11" par="5"/>
-<hole hcp="" length="" num="12" par="4"/>
-<hole hcp="" length="" num="13" par="3"/>
-<hole hcp="" length="" num="14" par="4"/>
-<hole hcp="" length="" num="15" par="4"/>
-<hole hcp="" length="" num="16" par="3"/>
-<hole hcp="" length="" num="17" par="5"/>
-<hole hcp="" length="" num="18" par="5"/>
-</course>
-</club>
+ <club name="Master" >
+ <course name="Master" >
+ <hole num="1" par="4" />
+ <hole num="2" par="4" />
+ <hole num="3" par="4" />
+ <hole num="4" par="5" />
+ <hole num="5" par="3" />
+ <hole num="6" par="4" />
+ <hole num="7" par="4" />
+ <hole num="8" par="5" />
+ <hole num="9" par="5" />
+ <hole num="10" par="4" />
+ <hole num="11" par="4" />
+ <hole num="12" par="4" />
+ <hole num="13" par="4" />
+ <hole num="14" par="3" />
+ <hole num="15" par="5" />
+ <hole num="16" par="3" />
+ <hole num="17" par="4" />
+ <hole num="18" par="4" />
+ </course>
+ <course name="Forest" >
+ <hole num="1" par="4" hcp="13" />
+ <hole num="2" par="4" hcp="15" />
+ <hole num="3" par="5" hcp="1" />
+ <hole num="4" par="3" hcp="7" />
+ <hole num="5" par="4" hcp="5" />
+ <hole num="6" par="3" hcp="9" />
+ <hole num="7" par="4" hcp="11" />
+ <hole num="8" par="3" hcp="17" />
+ <hole num="9" par="5" hcp="3" />
+ <hole num="10" par="4" hcp="14" />
+ <hole num="11" par="4" hcp="12" />
+ <hole num="12" par="3" hcp="8" />
+ <hole num="13" par="5" hcp="4" />
+ <hole num="14" par="4" hcp="10" />
+ <hole num="15" par="4" hcp="6" />
+ <hole num="16" par="4" hcp="18" />
+ <hole num="17" par="5" hcp="2" />
+ <hole num="18" par="4" hcp="16" />
+ </course>
+ </club>
+ <club name="Lohja" >
+ <course name="Kalkki-Petteri" >
+ <hole num="1" par="4" />
+ <hole num="2" par="3" />
+ <hole num="3" par="4" />
+ <hole num="4" par="4" />
+ <hole num="5" par="4" />
+ <hole num="6" par="5" />
+ <hole num="7" par="5" />
+ <hole num="8" par="3" />
+ <hole num="9" par="4" />
+ <hole num="10" par="4" />
+ <hole num="11" par="5" />
+ <hole num="12" par="4" />
+ <hole num="13" par="4" />
+ <hole num="14" par="3" />
+ <hole num="15" par="5" />
+ <hole num="16" par="3" />
+ <hole num="17" par="4" />
+ <hole num="18" par="4" />
+ </course>
+ <course name="Pyha-Lauri" >
+ <hole num="1" par="4" />
+ <hole num="2" par="4" />
+ <hole num="3" par="4" />
+ <hole num="4" par="5" />
+ <hole num="5" par="5" />
+ <hole num="6" par="3" />
+ <hole num="7" par="3" />
+ <hole num="8" par="4" />
+ <hole num="9" par="4" />
+ <hole num="10" par="5" />
+ <hole num="11" par="5" />
+ <hole num="12" par="3" />
+ <hole num="13" par="3" />
+ <hole num="14" par="4" />
+ <hole num="15" par="4" />
+ <hole num="16" par="4" />
+ <hole num="17" par="4" />
+ <hole num="18" par="4" />
+ </course>
+ </club>
+ <club name="Sarfvik" >
+ <course name="New Course" >
+ <hole num="1" par="5" />
+ <hole num="2" par="4" />
+ <hole num="3" par="3" />
+ <hole num="4" par="4" />
+ <hole num="5" par="3" />
+ <hole num="6" par="4" />
+ <hole num="7" par="5" />
+ <hole num="8" par="4" />
+ <hole num="9" par="4" />
+ <hole num="10" par="4" />
+ <hole num="11" par="3" />
+ <hole num="12" par="4" />
+ <hole num="13" par="4" />
+ <hole num="14" par="5" />
+ <hole num="15" par="4" />
+ <hole num="16" par="4" />
+ <hole num="17" par="5" />
+ <hole num="18" par="3" />
+ </course>
+ </club>
+ <club name="Pestana" >
+ <course name="Vale de Pinta" >
+ <hole num="1" par="4" hcp="12" />
+ <hole num="2" par="4" hcp="8" />
+ <hole num="3" par="4" hcp="14" />
+ <hole num="4" par="5" hcp="6" />
+ <hole num="5" par="3" hcp="18" />
+ <hole num="6" par="4" hcp="2" />
+ <hole num="7" par="3" hcp="4" />
+ <hole num="8" par="4" hcp="16" />
+ <hole num="9" par="4" hcp="10" />
+ <hole num="10" par="4" hcp="9" />
+ <hole num="11" par="3" hcp="13" />
+ <hole num="12" par="5" hcp="7" />
+ <hole num="13" par="4" hcp="1" />
+ <hole num="14" par="5" hcp="15" />
+ <hole num="15" par="3" hcp="17" />
+ <hole num="16" par="4" hcp="5" />
+ <hole num="17" par="3" hcp="11" />
+ <hole num="18" par="5" hcp="3" />
+ </course>
+ </club>
+ <club name="Meridien" >
+ <course name="Penina" >
+ <hole num="1" par="4" />
+ <hole num="2" par="4" />
+ <hole num="3" par="4" />
+ <hole num="4" par="4" />
+ <hole num="5" par="5" />
+ <hole num="6" par="3" />
+ <hole num="7" par="4" />
+ <hole num="8" par="3" />
+ <hole num="9" par="4" />
+ <hole num="10" par="5" />
+ <hole num="11" par="5" />
+ <hole num="12" par="4" />
+ <hole num="13" par="3" />
+ <hole num="14" par="4" />
+ <hole num="15" par="4" />
+ <hole num="16" par="3" />
+ <hole num="17" par="5" />
+ <hole num="18" par="5" />
+ </course>
+ </club>
</data>
<hole num="17" shots="5" />
<hole num="18" shots="4" />
</score>
+ <score club="x" course="z" date="2009-10-12" >
+ <hole num="1" shots="3" />
+ <hole num="2" shots="3" />
+ <hole num="3" shots="3" />
+ <hole num="4" shots="3" />
+ <hole num="5" shots="3" />
+ <hole num="6" shots="3" />
+ <hole num="7" shots="3" />
+ <hole num="8" shots="3" />
+ <hole num="9" shots="3" />
+ <hole num="10" shots="4" />
+ <hole num="11" shots="4" />
+ <hole num="12" shots="4" />
+ <hole num="13" shots="4" />
+ <hole num="14" shots="4" />
+ <hole num="15" shots="4" />
+ <hole num="16" shots="4" />
+ <hole num="17" shots="4" />
+ <hole num="18" shots="4" />
+ </score>
+ <score club="x" course="hcp-values" date="2009-10-12" >
+ <hole num="1" />
+ <hole num="2" />
+ <hole num="3" />
+ <hole num="4" />
+ <hole num="5" />
+ <hole num="6" />
+ <hole num="7" />
+ <hole num="8" />
+ <hole num="9" />
+ <hole num="10" />
+ <hole num="11" />
+ <hole num="12" />
+ <hole num="13" />
+ <hole num="14" />
+ <hole num="15" />
+ <hole num="16" />
+ <hole num="17" />
+ <hole num="18" />
+ </score>
+ <score club="Master" course="Master" date="2009-10-12" >
+ <hole num="1" />
+ <hole num="2" />
+ <hole num="3" />
+ <hole num="4" />
+ <hole num="5" />
+ <hole num="6" />
+ <hole num="7" />
+ <hole num="8" />
+ <hole num="9" />
+ <hole num="10" />
+ <hole num="11" />
+ <hole num="12" />
+ <hole num="13" />
+ <hole num="14" />
+ <hole num="15" />
+ <hole num="16" />
+ <hole num="17" />
+ <hole num="18" />
+ </score>
+ <score club="x" course="hcp-values" date="2009-10-12" >
+ <hole num="1" shots="6" />
+ <hole num="2" shots="6" />
+ <hole num="3" shots="6" />
+ <hole num="4" shots="6" />
+ <hole num="5" shots="6" />
+ <hole num="6" shots="6" />
+ <hole num="7" shots="6" />
+ <hole num="8" shots="6" />
+ <hole num="9" shots="6" />
+ <hole num="10" shots="5" />
+ <hole num="11" shots="5" />
+ <hole num="12" shots="5" />
+ <hole num="13" shots="5" />
+ <hole num="14" shots="5" />
+ <hole num="15" shots="5" />
+ <hole num="16" shots="5" />
+ <hole num="17" shots="5" />
+ <hole num="18" shots="5" />
+ </score>
</data>
#include "cell-delegate.h"
+CourseSelectDialog::CourseSelectDialog(QWidget *parent) : QDialog(parent)
+{
+ QWidget *centralWidget = new QWidget(this);
+ createLayout(centralWidget);
+
+ setWindowTitle(tr("ScoreCard: New Club and/or Course"));
+}
+
+void CourseSelectDialog::createLayout(QWidget *parent)
+{
+ labelClub = new QLabel(tr("Club"));
+ labelCourse = new QLabel(tr("Course"));
+ lineEditClub = new QLineEdit;
+ lineEditCourse = new QLineEdit;
+ pushButtonNext = new QPushButton(tr("Next"));
+
+ connect(pushButtonNext, SIGNAL(clicked()), this, SLOT(next()));
+
+ leftLayout = new QVBoxLayout;
+ leftLayout->addWidget(lineEditClub);
+ leftLayout->addWidget(lineEditCourse);
+
+ rightLayout = new QVBoxLayout;
+ rightLayout->addStretch();
+ rightLayout->addWidget(pushButtonNext);
+
+ QHBoxLayout *mainLayout = new QHBoxLayout(parent);
+ mainLayout->addLayout(leftLayout);
+ mainLayout->addLayout(rightLayout);
+
+ setLayout(mainLayout);
+}
+
+void CourseSelectDialog::results(QString &club,
+ QString &course)
+{
+ club = lineEditClub->text();
+ course = lineEditCourse->text();
+}
+
+void CourseSelectDialog::next(void)
+{
+ done(1);
+}
+
CourseDialog::CourseDialog(QWidget *parent) : QDialog(parent)
{
resize(800, 400);
- QFont font;
- font.setPointSize(20);
- setFont(font);
-
createTable();
createLabel();
createLayout(this);
- setWindowTitle(tr("New Course"));
}
void CourseDialog::createLayout(QWidget *parent)
rightLayout = new QVBoxLayout;
rightLayout->addStretch();
- rightLayout->addWidget(pushButtonOk);
+ rightLayout->addWidget(pushButtonFinnish);
QHBoxLayout *mainLayout = new QHBoxLayout(parent);
mainLayout->addLayout(leftLayout);
clubEdit = new QLineEdit;
courseEdit = new QLineEdit;
- pushButtonOk = new QPushButton(tr("OK"));
+ pushButtonFinnish = new QPushButton(tr("Finnish"));
+ connect(pushButtonFinnish, SIGNAL(clicked()), this, SLOT(finnish()));
}
void CourseDialog::createTable(QWidget *parent)
#endif
}
+void CourseDialog::results(QVector<QString> &par,
+ QVector<QString> &hcp,
+ QVector<QString> &len)
+{
+ for (int i = 0; i < 9; i++) {
+ QTableWidgetItem *frontPar = table->item(ROW_PAR, i);
+ QTableWidgetItem *backPar = table->item(ROW_PAR_2, i);
+ QTableWidgetItem *frontHcp = table->item(ROW_HCP, i);
+ QTableWidgetItem *backHcp = table->item(ROW_HCP_2, i);
+ QTableWidgetItem *frontLen = table->item(ROW_LEN, i);
+ QTableWidgetItem *backLen = table->item(ROW_LEN_2, i);
+
+ if (frontPar)
+ par[i] = frontPar->text();
+ if (backPar)
+ par[i+9] = backPar->text();
+ if (frontHcp)
+ hcp[i] = frontHcp->text();
+ if (backHcp)
+ hcp[i+9] = backHcp->text();
+ if (frontLen)
+ len[i] = frontLen->text();
+ if (backLen)
+ len[i+9] = backLen->text();
+ }
+}
+
+// Only par is mandatory
+bool CourseDialog::validate(void)
+{
+ for (int i = 0; i < 9; i++) {
+ QTableWidgetItem *frontItem = table->item(ROW_PAR, i);
+ QTableWidgetItem *backItem = table->item(ROW_PAR_2, i);
+
+ if (!frontItem || !backItem)
+ return false;
+
+ QString str1 = frontItem->text();
+ QString str2 = backItem->text();
+
+ if (str1.isEmpty() || str2.isEmpty())
+ return false;
+ }
+ return true;
+}
+
+void CourseDialog::finnish(void)
+{
+ if (validate())
+ done(1);
+ else {
+ qDebug() << "CourseDialog: invalid data, cancel or correct";
+ }
+}
+
+
class QTableWidgetItem;
QT_END_NAMESPACE
-class ScoreTable : public QTableWidget
+class CourseSelectDialog: public QDialog
{
-public:
- ScoreTable(int r, int c, QWidget *p=0) : QTableWidget(r, c, p) {}
-
- QSize minimumSizeHint() const
- {
- QSize size( QTableWidget::sizeHint() );
- int width = 0;
-
- for (int c = 0; c < columnCount(); ++c)
- width += columnWidth( c );
-
- size.setWidth( width + 4 );
- return size;
- }
-
- QSize sizeHint() const
- {
- return minimumSizeHint();
- }
+ Q_OBJECT
+
+ public:
+ CourseSelectDialog(QWidget *parent = 0);
+
+ void results(QString &club, QString &course);
+
+private slots:
+ void next(void);
+
+ private:
+
+ void createLayout(QWidget *parent);
+
+ QLineEdit *lineEditClub;
+ QLineEdit *lineEditCourse;
+ QLabel *labelClub;
+ QLabel *labelCourse;
+ QPushButton *pushButtonNext;
+ // Layouts
+ QVBoxLayout *leftLayout;
+ QVBoxLayout *rightLayout;
};
class CourseDialog: public QDialog
public:
CourseDialog(QWidget *w);
+ void results(QVector<QString> &, QVector<QString> &, QVector<QString> &);
+ bool validate();
public slots:
void itemChanged(QTableWidgetItem *item);
void nextCell(QObject *);
+ void finnish(void);
private:
+ enum { ROW_HOLE = 0, ROW_PAR = 1, ROW_HCP = 2, ROW_LEN = 3,
+ ROW_HOLE_2 = 4, ROW_PAR_2 = 5, ROW_HCP_2 = 6, ROW_LEN_2 = 7};
enum { rows = 8, cols = 9, separator_row = 3 };
- enum { NumGridRows = 3, NumButtons = 4 };
void createTable(QWidget *parent = 0);
void createLabel(QWidget *parent = 0);
void createLayout(QWidget *parent = 0);
- QLabel *labels[NumGridRows];
- QLineEdit *lineEdits[NumGridRows];
- QPushButton *buttons[NumButtons];
-
// Widgets
//ScoreTable *table;
QTableWidget *table;
QLabel *courseLabel;
QLineEdit *clubEdit;
QLineEdit *courseEdit;
- QPushButton *pushButtonOk;
+ QPushButton *pushButtonFinnish;
// Layouts
QVBoxLayout *rightLayout;
par = node.attribute("par", "");
}
+Hole::Hole(int num, QString &par, QString &hcp)
+{
+ this->num = QString::number(num);
+ this->par = par;
+ this->hcp = hcp;
+}
+
Hole::Hole(int num, QString &shots)
{
this->num = QString::number(num);
this->course = course;
this->date = date;
- for (int i=0; i<scores.size(); i++) {
+ for (int i = 0; i < scores.size(); i++) {
Hole *hole = new Hole(i+1, scores[i]);
holeList << hole;
}
}
-
Score::Score(const QDomElement node) {
club = node.attribute("club", "");
course = node.attribute("course", "");
name = node.attribute("name", "");
}
+Course::Course(QString &name,
+ QVector<QString> &par,
+ QVector<QString> &hcp)
+{
+ this->name = name;
+
+ for (int i = 0; i < par.size(); i++) {
+ Hole *hole = new Hole(i+1, par[i], hcp[i]);
+ holeList << hole;
+ }
+}
+
QDomElement Course::toElement(QDomDocument doc)
{
QDomElement node = doc.createElement("course");
name = node.attribute("name", "");
}
+Club::Club(QString &name)
+{
+ this->name = name;
+}
+
void Club::addCourse(Course *iCourse) {
courseList << iCourse;
}
return courseList.at(pos);
}
-Course *Club::getCourse(QString &courseName) {
+Course *Club::getCourse(QString &courseName)
+{
QListIterator<Course *> i(courseList);
Course *c = 0;
while (i.hasNext()) {
c = i.next();
if (c->getName() == courseName) {
- qDebug() << "Match " << courseName;
- break;
+ return c;
}
}
- return c;
+ return 0;
}
Hole(const QXmlAttributes &attrs);
Hole(const QDomElement node);
Hole(int num, QString &shots);
+ Hole(int num, QString &par, QString &hcp);
QDomElement toElement(QDomDocument doc);
QString getShots();
QString getHcp();
public:
Course(const QXmlAttributes &attrs);
Course(const QDomElement node);
+ Course(QString &name, QVector<QString> &, QVector<QString> &);
QDomElement toElement(QDomDocument doc);
void addHole(Hole *iHole);
QString getPar(int i);
Club(const QXmlAttributes &attrs);
Club(const QDomElement node);
+ Club(QString &name);
+
QDomElement toElement(QDomDocument doc);
void addCourse(Course *iCourse);
void dump();
updateStatusBar();
}
+// FIXME: dup code from table-model.cpp
+Club *MainWindow::findClub(QString &name)
+{
+ QListIterator<Club *> i(clubList);
+ Club *c;
+
+ while (i.hasNext()) {
+ c = i.next();
+ if (c->getName() == name)
+ return c;
+ }
+ return 0;
+}
+
void MainWindow::newCourse()
{
- CourseDialog *dlg = new CourseDialog(this);
+ CourseSelectDialog *selectDialog = new CourseSelectDialog(this);
+
+ int result = selectDialog->exec();
+ if (result) {
+ QString clubName;
+ QString courseName;
+ QString date;
- int result = dlg->exec();
+ selectDialog->results(clubName, courseName);
+ qDebug() << "club=" << clubName;
+ qDebug() << "course=" << courseName;
+
+ CourseDialog *courseDialog = new CourseDialog(this);
+
+ QString title = "New Course : " + clubName + "," + courseName;
+ courseDialog->setWindowTitle(title);
+
+ int result = courseDialog->exec();
+ if (result) {
+ QVector<QString> par(18);
+ QVector<QString> hcp(18);
+ QVector<QString> len(18);
+
+ courseDialog->results(par, hcp, len);
+
+ Course *course = 0;
+ Club *club = findClub(clubName);
+ if (club) {
+ course = club->getCourse(courseName);
+ if (course) {
+ qDebug() << "Error: club/course already in the database";
+ return;
+ }
+ else {
+ course = new Course(courseName, par, hcp);
+ club->addCourse(course);
+ }
+ }
+ else {
+ club = new Club(clubName);
+ course = new Course(courseName, par, hcp);
+ club->addCourse(course);
+ clubList << club;
+ }
+ saveClubFile(clubFile, clubList);
+ }
+ }
}
void MainWindow::newScore()
ScoreDialog *scoreDialog = new ScoreDialog(this);
- // FIXME
- Club *club = clubList[0];
+ Club *club = findClub(clubName);
+ if (!club) {
+ qDebug() << "Error: no such club: " << clubName;
+ return;
+ }
Course *course = club->getCourse(courseName);
+ if (!course) {
+ qDebug() << "Error: no such course: " << courseName;
+ return;
+ }
scoreDialog->init(course);
QVector<QString> scores(18);
scoreDialog->results(scores);
- for (int i=0; i<scores.size(); i++)
- qDebug() << i << ": " << scores[i];
-
Score *score = new Score(scores, clubName, courseName, date);
scoreList << score;
private:
+ Club *findClub(QString &name);
+
QList<Score *> scoreList;
QList<Club *> clubList;
{
resize(800, 400);
- QFont font;
- font.setPointSize(20);
- setFont(font);
-
QWidget *centralWidget = new QWidget(this);
createTable();