- Add and flush default courses when settings change
[scorecard] / src / main-window.h
1 /*
2  * Copyright (C) 2009 Sakari Poussa
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, version 2.
7  */
8
9 #include <QMainWindow>
10 #include <QTableView>
11 #include <QListView>
12 #include <QPushButton>
13 #include <QTextEdit>
14 #include <QVBoxLayout>
15 #include <QItemSelectionModel>
16 #include <QList>
17 #include <QLabel>
18 #include <QActionGroup>
19 #include <QXmlDefaultHandler>
20 #include <QSettings>
21
22 #include "data.h"
23 #include "score-common.h"
24 #include "table-model.h"
25 #include "list-model.h"
26
27 class MainWindow : public QMainWindow
28 {
29   Q_OBJECT
30
31 public:
32   MainWindow(QMainWindow *parent = 0);
33   void createLayoutTable(QWidget *parent = 0);
34   void createLayoutList(QWidget *parent = 0);
35   void createListView(QList<Score *> &, QList <Club *> &);
36   void updateTitleBar(QString & msg);
37   void loadScoreFile(QString &fileName, QList<Score *> &scoreList);
38   void loadClubFile(QString &fileName, QList<Club *> &clubList, bool readOnly = false);
39   void saveScoreFile(QString &fileName, QList<Score *> &scoreList);
40   void saveClubFile(QString &fileName, QList<Club *> &clubList);
41
42 signals:
43   void dataChanged();
44
45 private slots:
46   void clickedList(const QModelIndex &index);
47
48   void newScore();
49   void deleteScore();
50   void editScore();
51   void newCourse();
52   void deleteCourse();
53   void editCourse();
54   void viewStatistics();
55   void viewSettings();
56   void listScores();
57   void listCourses();
58
59 private:
60
61   void loadSettings(void);
62   void saveSettings(void);
63   Club * findClub(QString &name);
64   Course * findCourse(const QString &clubName, const QString &courseName);
65   Course * findCourse();
66   Score * findScore(QString & clubName, QString & courseName);
67   void flushReadOnlyItems();
68                                
69   void showNote(QString msg);
70   void getStat(QTextEdit *);
71
72   void viewScore(Score * score, Course * course);
73   void viewCourse(Course * course);
74
75   QList<Score *> scoreList;
76   QList<Club *> clubList;
77
78   ScoreTableModel *scoreTableModel;
79   ScoreListModel *scoreListModel;
80   CourseListModel *courseListModel;
81
82   QItemSelectionModel *selectionModel;
83
84   QListView *list;
85
86   // Layouts
87   QWidget *centralWidget;
88
89   // Menus
90   QMenu *menu;
91
92   // Settings
93   QSettings settings;
94   AppSettings conf;
95
96   // Actions
97   QAction *newScoreAction;
98   QAction *newCourseAction;
99   QAction *statAction;
100   QAction *settingsAction;
101
102   QActionGroup *filterGroup;
103   QAction *listScoreAction;
104   QAction *listCourseAction;
105
106   void createMenus();
107   void createActions();
108
109   // Windows
110   QMainWindow *scoreWin;
111   QMainWindow *courseWin;
112 };