Initial new score dialogs
[scorecard] / src / score-dialog.h
index 80a3d67..380c097 100644 (file)
@@ -40,7 +40,6 @@ private:
     ScoreTableModel *model;
 };
 
-
 class SelectDialog: public QDialog
 {
     Q_OBJECT;
@@ -51,7 +50,7 @@ public:
     void results(QString &club, QString &course, QString &date);
     void init(QList<Club *> &list);
 
-private slots:
+    private slots:
     void next(void);
 
 private:
@@ -74,55 +73,101 @@ private:
     QLabel       *labelCourse;
     QPushButton  *pushButtonNext;
 
-  // Layouts
+    // Layouts
     QVBoxLayout *leftLayout;
     QVBoxLayout *rightLayout;
 
     QList<Club *> clubList;
 };
 
+// Base class for multiple score edit dialog
 class ScoreDialog: public QDialog
 {
-  Q_OBJECT
+    Q_OBJECT;
 
 public:
-  ScoreDialog(QWidget *parent = 0);
-  ~ScoreDialog();
-  void init(Course *course, Score *score = 0);
-  void results(QVector<QString> &scores);
-  bool validate(void);
-
-private slots:
-  void up(void);
-  void down(void);
-  void next(void);
-  void finish(void);
+    ScoreDialog(QWidget *parent = 0) : QDialog(parent) {};
+    
+    virtual void init(Course *course, Score *score = 0) = 0;
+    virtual void results(QVector<QString> &scores) = 0;
 
 private:
+};
+
+// Class for editing 18 holes in one dialog
+class ScoreDialog18: public ScoreDialog
+{
+    Q_OBJECT;
+
+public:
+    ScoreDialog18(QWidget *parent = 0);
+    ~ScoreDialog18();
+    void init(Course *course, Score *score = 0);
+    void results(QVector<QString> &scores);
+    bool validate(void);
 
-  void createTable(QWidget *parent = 0);
-  void createButton(QWidget *parent = 0);
-  void createLayout(QWidget *parent = 0);
-  void setDefaultScore(QTableWidget *table);
-  void moveToNextCell(QTableWidgetItem *item);
-  void showNote(QString msg);
+    private slots:
+    void up(void);
+    void down(void);
+    void next(void);
+    void finish(void);
+
+private:
+
+    void createTable(QWidget *parent = 0);
+    void createButton(QWidget *parent = 0);
+    void createLayout(QWidget *parent = 0);
+    void setDefaultScore(QTableWidget *table);
+    void moveToNextCell(QTableWidgetItem *item);
+    void showNote(QString msg);
   
-  enum { ROWS = 8, COLS = 9 };
-  enum { ROW_HOLE = 0, ROW_PAR = 1, ROW_HCP = 2, ROW_SCORE = 3, 
-        ROW_HOLE_2 = 4, ROW_PAR_2 = 5, ROW_HCP_2 = 6, ROW_SCORE_2 = 7};
+    enum { ROWS = 8, COLS = 9 };
+    enum { ROW_HOLE = 0, ROW_PAR = 1, ROW_HCP = 2, ROW_SCORE = 3, 
+           ROW_HOLE_2 = 4, ROW_PAR_2 = 5, ROW_HCP_2 = 6, ROW_SCORE_2 = 7};
+
+    void reject(void);
+
+    // Widgets
+    QTableWidget *table;
 
-  void reject(void);
+    QPushButton  *pushButtonFinish;
+    QPushButton  *pushButtonUp;
+    QPushButton  *pushButtonDown;
+    QPushButton  *pushButtonNext;
+
+    // Layouts
+    QVBoxLayout *leftLayout;
+    QVBoxLayout *rightLayout;
+};
 
-  // Widgets
-  QTableWidget *table;
+// Class for editing single hole in one dialog
+class ScoreDialogSingle: public QDialog
+{
+    Q_OBJECT;
 
-  QPushButton  *pushButtonFinish;
-  QPushButton  *pushButtonUp;
-  QPushButton  *pushButtonDown;
-  QPushButton  *pushButtonNext;
+public:
+    ScoreDialogSingle(QWidget *parent = 0);
+    ~ScoreDialogSingle();
 
-  // Layouts
-  QVBoxLayout *leftLayout;
-  QVBoxLayout *rightLayout;
+    void init(Course *course, Score *score = 0);
+    void results(QVector<QString> &scores);
+
+private:
+
+    void createTable(QWidget *parent = 0);
+    void createButton(QWidget *parent = 0);
+    void createLayout(QWidget *parent = 0);
+
+    // Widgets
+    QTableWidget *table;
+
+    QPushButton  *pushButtonFinish;
+    QPushButton  *pushButtonUp;
+    QPushButton  *pushButtonDown;
+    QPushButton  *pushButtonNext;
+
+    // Layouts
+    QVBoxLayout *leftLayout;
+    QVBoxLayout *rightLayout;
 };
 #endif