1st attempt at an initial import.
[qwerkisync] / Windows / BaseWindow.h
1 /*
2  * Copyright (C) 2011, Jamie Thompson
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public
6  * License as published by the Free Software Foundation; either
7  * version 3 of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public
15  * License along with this program; If not, see
16  * <http://www.gnu.org/licenses/>.
17  */
18
19 #ifndef BASEWINDOW_H
20 #define BASEWINDOW_H
21
22 #include <QMainWindow>
23
24 #include "Settings.h"
25
26 namespace Windows
27 {
28         class BaseWindow : public QMainWindow
29         {
30                 Q_OBJECT
31
32         private:
33                 Settings& m_Settings;
34                 QWidget* m_Parent;
35
36         protected:
37                 Settings& CurrentSettings() const { return m_Settings; }
38                 const Settings& setCurrentSettings(Settings& settings) { return m_Settings = settings; }
39                 QWidget* Parent() const { return m_Parent; }
40
41         public:
42                 explicit BaseWindow(Settings& settings, QWidget *parent = 0);
43                 virtual ~BaseWindow();
44
45         protected slots:
46                 void About();
47                 void AboutQt();
48
49         protected:
50                 virtual void closeEvent(QCloseEvent *);
51
52         private:
53                 QMenu *m_HelpMenu;
54                 void CreateMenus();
55
56                 QAction *m_AboutAct;
57                 QAction *m_AboutQtAct;
58                 void CreateActions();
59
60                 void CreateContents();
61         };
62 }
63 #endif // BASEWINDOW_H