- Added course selection dialog
authorSakari Poussa <sakari.poussa@nokia.com>
Mon, 12 Oct 2009 20:48:02 +0000 (23:48 +0300)
committerSakari Poussa <sakari.poussa@nokia.com>
Mon, 12 Oct 2009 20:48:02 +0000 (23:48 +0300)
- Added more code to data classes to handle new clubs and courses
- Removed few debug prints

Makefile
data/club.xml
data/save/club.xml
data/score.xml
src/course-dialog.cpp
src/course-dialog.h
src/data.cpp
src/data.h
src/main-window.cpp
src/main-window.h
src/score-dialog.cpp

index a8ddea2..3728e4a 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 #############################################################################
 # 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
index 894f1d9..36a1546 100644 (file)
    <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>
index 480d26e..894f1d9 100644 (file)
 <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>
index 7405258..12a6cfd 100644 (file)
   <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>
index dd6bedb..463718c 100644 (file)
@@ -8,20 +8,60 @@
 #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)
@@ -31,7 +71,7 @@ void CourseDialog::createLayout(QWidget *parent)
 
   rightLayout = new QVBoxLayout;
   rightLayout->addStretch();
-  rightLayout->addWidget(pushButtonOk);
+  rightLayout->addWidget(pushButtonFinnish);
 
   QHBoxLayout *mainLayout = new QHBoxLayout(parent);
   mainLayout->addLayout(leftLayout);
@@ -47,7 +87,8 @@ void CourseDialog::createLabel(QWidget *parent)
   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)
@@ -132,3 +173,59 @@ void CourseDialog::nextCell(QObject *obj)
 #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";
+  }
+}
+
+
index 06bb9b5..343e34b 100644 (file)
@@ -14,28 +14,31 @@ class QTableWidget;
 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
@@ -44,23 +47,23 @@ 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;
@@ -68,7 +71,7 @@ class CourseDialog: public QDialog
   QLabel *courseLabel;
   QLineEdit *clubEdit;
   QLineEdit *courseEdit;
-  QPushButton *pushButtonOk;
+  QPushButton *pushButtonFinnish;
 
   // Layouts
   QVBoxLayout *rightLayout;
index d49082c..020d701 100644 (file)
@@ -28,6 +28,13 @@ Hole::Hole(const QDomElement node) {
   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);
@@ -94,13 +101,12 @@ Score::Score(QVector<QString> scores, QString &club, QString &course, QString &d
   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", "");
@@ -181,6 +187,18 @@ Course::Course(const QDomElement node) {
   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");
@@ -254,6 +272,11 @@ Club::Club(const QDomElement node) {
   name = node.attribute("name", "");
 }
 
+Club::Club(QString &name)
+{
+  this->name = name;
+}
+
 void Club::addCourse(Course *iCourse) {
   courseList << iCourse;
 }
@@ -283,16 +306,16 @@ Course *Club::getCourse(int pos) {
   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;
 }
index 77c74f1..8936e21 100644 (file)
@@ -15,6 +15,7 @@ class Hole {
   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();
@@ -52,6 +53,7 @@ class Course {
  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);
@@ -71,6 +73,8 @@ class Club {
 
   Club(const QXmlAttributes &attrs);
   Club(const QDomElement node);
+  Club(QString &name);
+
   QDomElement toElement(QDomDocument doc);
   void addCourse(Course *iCourse);
   void dump();
index d19bf8b..a9f7cf3 100644 (file)
@@ -204,11 +204,69 @@ void MainWindow::prevButtonClicked()
   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()
@@ -230,9 +288,16 @@ 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);
 
@@ -242,9 +307,6 @@ void MainWindow::newScore()
       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;
 
index 65a7d9c..ca39136 100644 (file)
@@ -42,6 +42,8 @@ private slots:
 
 private:
 
+  Club *findClub(QString &name);
+
   QList<Score *> scoreList;
   QList<Club *> clubList;
 
index b33f12e..589f61a 100644 (file)
@@ -120,10 +120,6 @@ ScoreDialog::ScoreDialog(QWidget *parent) : QDialog(parent)
 {
   resize(800, 400);
 
-  QFont font;
-  font.setPointSize(20);
-  setFont(font);
-
   QWidget *centralWidget = new QWidget(this);
 
   createTable();