- Added course selection dialog
[scorecard] / src / main-window.cpp
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;