TODO list update. Initial screen for pro mode
[scorecard] / src / score-dialog.h
index 8b3defd..8d0d934 100644 (file)
+/*
+ * Copyright (C) 2009 Sakari Poussa
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 2.
+ */
+
 #ifndef SCORE_DIALOG_H
 #define SCORE_DIALOG_H
 
 #include <QDialog>
+#include <QMainWindow>
 #include <QTableWidget>
 #include <QListWidget>
 #include <QComboBox>
 #include <QLabel>
 #include <QPushButton>
+#include <QDateEdit>
 #include <QLayout>
+#ifdef Q_WS_MAEMO_5
+#include <QtMaemo5/QMaemo5ValueButton>
+#include <QtMaemo5/QMaemo5DatePickSelector>
+#endif
 
 #include "data.h"
+#include "table-model.h"
 
-class SelectDialog: public QDialog
+class ScoreWindow: public QMainWindow
 {
-  Q_OBJECT
+    Q_OBJECT;
 
- public:
-  SelectDialog(QWidget *parent = 0);
+public:
+    ScoreWindow(QWidget *parent = 0);
+    ~ScoreWindow();
 
-  void results(QString &club, QString &course, QString &date);
-  void init(QList<Club *> &list);
+    void setup(Score * score, Course * course);
 
-private slots:
-  void next(void);
+private:
+    ScoreTableModel *model;
+};
 
- private:
+class SelectDialog: public QDialog
+{
+    Q_OBJECT;
 
-  bool validate(void);
-  void reject(void);
+public:
+    SelectDialog(QWidget *parent = 0);
+    
+    void results(QString &club, QString &course, QString &date);
+    void init(QList<Club *> &list);
 
-  void comboBoxCourseUpdate(void);
-  void createLayout(QWidget *parent = 0);
+    private slots:
+    void next(void);
 
-  // Widgets
-  QListWidget  *listClub;
-  QLineEdit    *lineEditDate;
-  QLabel       *labelClub;
-  QLabel       *labelCourse;
-  QPushButton  *pushButtonNext;
+private:
+
+    bool validate(void);
+    void reject(void);
+
+    void comboBoxCourseUpdate(void);
+    void createLayout(QWidget *parent = 0);
+
+    // Widgets
+    QListWidget  *listWidgetClub;
+#ifdef Q_WS_MAEMO_5
+    QMaemo5ValueButton *dateButton;
+#else
+    QLineEdit    *lineEditDate;
+    QDateEdit    *date;
+#endif
+    QLabel       *labelClub;
+    QLabel       *labelCourse;
+    QPushButton  *pushButtonNext;
 
-  // Layouts
-  QVBoxLayout *leftLayout;
-  QVBoxLayout *rightLayout;
+    // Layouts
+    QVBoxLayout *leftLayout;
+    QVBoxLayout *rightLayout;
 
-  QList<Club *> clubList;
+    QList<Club *> clubList;
 };
 
+// Base class for multiple score edit dialog
 class ScoreDialog: public QDialog
 {
-  Q_OBJECT
+    Q_OBJECT;
 
 public:
-  ScoreDialog(QWidget *parent = 0);
-  void init(Course *course);
-  void results(QVector<QString> &scores);
-  bool validate(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);
 
 private slots:
-  void up(void);
-  void down(void);
-  void next(void);
-  void finish(void);
+    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 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;
+
+    QPushButton  *pushButtonFinish;
+    QPushButton  *pushButtonUp;
+    QPushButton  *pushButtonDown;
+    QPushButton  *pushButtonNext;
+
+    // Layouts
+    QVBoxLayout *leftLayout;
+    QVBoxLayout *rightLayout;
+};
+
+// Class for editing single hole in one dialog
+class ScoreDialogSingle: public ScoreDialog
+{
+    Q_OBJECT;
+
+public:
+    ScoreDialogSingle(QWidget *parent = 0);
+    ~ScoreDialogSingle();
+
+    void init(Course *course, Score *score = 0);
+    void results(QVector<QString> &scores);
+
+private slots:
+    void up(void);
+    void down(void);
+    void next(void);
+    //void finish(void);
+
+private:
+
+    enum { ROWS = 7, COLS = 3 };
+    enum { ROW_HOLE = 0, ROW_PAR = 1, ROW_HCP = 2, ROW_SCORE = 3, ROW_PUTTS = 4, ROW_FAIRWAY = 5, ROW_GREEN = 6 };
 
-  void reject(void);
+    void createTable(QWidget *parent = 0);
+    void createButton(QWidget *parent = 0);
+    void createLayout(QWidget *parent = 0);
+    void setDefaultScore(QTableWidget *table);
+    void moveToNextCell(QTableWidgetItem *item);
 
-  // Widgets
-  QTableWidget *table;
+    // Widgets
+    QTableWidget *table;
 
-  QPushButton  *pushButtonFinish;
-  QPushButton  *pushButtonUp;
-  QPushButton  *pushButtonDown;
-  QPushButton  *pushButtonNext;
+    QPushButton  *pushButtonFinish;
+    QPushButton  *pushButtonUp;
+    QPushButton  *pushButtonDown;
+    QPushButton  *pushButtonNext;
 
-  // Layouts
-  QVBoxLayout *leftLayout;
-  QVBoxLayout *rightLayout;
+    // Layouts
+    QVBoxLayout *leftLayout;
+    QVBoxLayout *rightLayout;
 };
 #endif