Open-Typer
Open source typewriting tutor program
Loading...
Searching...
No Matches
AppMenuBar.h
1/*
2 * AppMenuBar.h
3 * This file is part of Open-Typer
4 *
5 * Copyright (C) 2023 - adazem009
6 *
7 * Open-Typer is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * Open-Typer is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with Open-Typer. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21#ifndef APPMENUBAR_H
22#define APPMENUBAR_H
23
24#include <QObject>
25#include "ui/menubar/AbstractMenuBar.h"
26#include "ui/IThemeEngine.h"
27
34class Q_DECL_EXPORT AppMenuBar : public AbstractMenuBar
35{
36 Q_OBJECT
37 INJECT(IThemeEngine, themeEngine)
38 Q_PROPERTY(AppMenuItem *newLessonPackAction READ newLessonPackAction NOTIFY newLessonPackActionChanged)
39 Q_PROPERTY(AppMenuItem *openExerciseAction READ openExerciseAction NOTIFY openExerciseActionChanged)
40 Q_PROPERTY(AppMenuItem *openPackAction READ openPackAction NOTIFY openPackActionChanged)
41 Q_PROPERTY(AppMenuItem *openPackInEditorAction READ openPackInEditorAction NOTIFY openPackInEditorActionChanged)
42 Q_PROPERTY(AppMenuItem *printAction READ printAction NOTIFY printActionChanged)
43 Q_PROPERTY(AppMenuItem *typingTestAction READ typingTestAction NOTIFY typingTestActionChanged)
44 Q_PROPERTY(AppMenuItem *exerciseHistoryAction READ exerciseHistoryAction NOTIFY exerciseHistoryActionChanged)
45 Q_PROPERTY(AppMenuItem *timedExAction READ timedExAction NOTIFY timedExActionChanged)
46 Q_PROPERTY(AppMenuItem *errorWordsAction READ errorWordsAction NOTIFY errorWordsActionChanged)
47 Q_PROPERTY(AppMenuItem *reverseTextAction READ reverseTextAction NOTIFY reverseTextActionChanged)
48 Q_PROPERTY(AppMenuItem *preferencesAction READ preferencesAction NOTIFY preferencesActionChanged)
49 Q_PROPERTY(AppMenuItem *aboutProgramAction READ aboutProgramAction NOTIFY aboutProgramActionChanged)
50
51 public:
52 static std::shared_ptr<AppMenuBar> instance();
53 void updateMenus(void) override;
54
55 AppMenuItem *newLessonPackAction(void);
56 AppMenuItem *openExerciseAction(void);
57 AppMenuItem *openPackAction(void);
58 AppMenuItem *openPackInEditorAction(void);
59 AppMenuItem *printAction(void);
60 AppMenuItem *typingTestAction(void);
61 AppMenuItem *exerciseHistoryAction(void);
62 AppMenuItem *timedExAction(void);
63 AppMenuItem *errorWordsAction(void);
64 AppMenuItem *reverseTextAction(void);
65 AppMenuItem *preferencesAction(void);
66 AppMenuItem *aboutProgramAction(void);
67
68 private:
69 void createMenus(void) override;
70 static std::shared_ptr<AppMenuBar> m_instance;
71 bool blockDarkThemeActionConnection = false;
72
73 // File
74 AppMenuModel fileMenu;
75 AppMenuItem m_newLessonPackAction;
76 AppMenuItem openMenuAction;
77 AppMenuModel openMenu;
78 AppMenuItem m_openExerciseAction;
79 AppMenuItem m_openPackAction;
80 AppMenuItem m_openPackInEditorAction;
81 AppMenuItem fileSeparator1;
82 AppMenuItem fileSeparator2;
83 AppMenuItem m_printAction;
84 AppMenuItem quitAction;
85
86 // View
87 AppMenuModel viewMenu;
88 AppMenuItem uiMenuAction;
89 AppMenuModel uiMenu;
90 AppMenuItem darkThemeAction;
91
92 // Tools
93 AppMenuModel toolsMenu;
94 AppMenuItem m_typingTestAction;
95
96 // Exercise
97 AppMenuModel exerciseMenu;
98 AppMenuItem m_exerciseHistoryAction;
99 AppMenuItem m_timedExAction;
100 AppMenuItem m_errorWordsAction;
101 AppMenuItem m_reverseTextAction;
102
103 // Options
104 AppMenuModel optionsMenu;
105 AppMenuItem m_preferencesAction;
106
107 // Help
108 AppMenuModel helpMenu;
109 AppMenuItem docsAction;
110 AppMenuItem m_aboutProgramAction;
111 AppMenuItem aboutQtAction;
112
113 signals:
114 void newLessonPackActionChanged();
115 void openExerciseActionChanged();
116 void openPackActionChanged();
117 void openPackInEditorActionChanged();
118 void printActionChanged();
119 void typingTestActionChanged();
120 void exerciseHistoryActionChanged();
121 void timedExActionChanged();
122 void errorWordsActionChanged();
123 void reverseTextActionChanged();
124 void preferencesActionChanged();
125 void aboutProgramActionChanged();
126};
127
128#endif // APPMENUBAR_H
The AbstractMenuBar class provides a model for a menu bar.
Definition AbstractMenuBar.h:31
virtual Q_INVOKABLE void updateMenus(void)
Definition AbstractMenuBar.cpp:45
virtual Q_INVOKABLE void createMenus(void)
Definition AbstractMenuBar.cpp:40
The AppMenuBar class provides a model for the application menu bar.
Definition AppMenuBar.h:35
The AppMenuItem class provides a model for a menu item.
Definition AppMenuItem.h:33
The AppMenuModel class provides a menu model for the application menu bar.
Definition AppMenuModel.h:30
Definition IThemeEngine.h:28