-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathMultiAlarm.h
157 lines (127 loc) · 3.84 KB
/
MultiAlarm.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/*
File: MultiAlarm.h
Created on: 02/07/2015
Author: Felix de las Pozas Alvarez
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, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef MULTIALARM_H_
#define MULTIALARM_H_
// Project
#include "AlarmWidget.h"
#include "NewAlarmDialog.h"
#include "ui_MainWindow.h"
// Qt
#include <QMainWindow>
#include <QSystemTrayIcon>
// C++
#include <memory>
class QEvent;
class QCloseEvent;
class QSettings;
/** \class MultiAlarm
* \brief Application main window.
*
*/
class MultiAlarm
: public QMainWindow
, private Ui_MainWindow
{
Q_OBJECT
public:
/** \brief MultiAlarm class constructor.
*
*/
MultiAlarm(QWidget *parent = nullptr, Qt::WindowFlags flags = 0);
/** \brief MultiAlarm class virtual destructor.
*
*/
virtual ~MultiAlarm();
/** \brief Return the list of used alarm names.
*
*/
QStringList usedNames() const;
/** \brief Returns the list of used colors.
*
*/
QStringList usedColors() const;
private slots:
/** \brief Launches the alarm creation dialog.
*
*/
void createNewAlarm();
/** \brief Launches the about dialog.
*
*/
void aboutDialog();
/** \brief Handles the icon tray activation.
* \param[in] reason reason for activation.
*
*/
void onTrayIconActivated(QSystemTrayIcon::ActivationReason reason);
/** \brief Restores the main dialog and hides the tray icon.
*
*/
void onRestoreActionActivated();
/** \brief Cancels all alarms and exits the application.
*
*/
void onQuitActionActivated();
/** \brief Deletes the alarm and widget.
*
*/
void onAlarmDeleted();
private:
virtual void changeEvent(QEvent *e);
virtual void closeEvent(QCloseEvent *e);
/** \brief Creates a widget using the data from the dialog.
* \param[in] settings settings object containinf the alarm properties.
* \param[in] name alarm identificator.
*
*/
AlarmWidget *createAlarmWidget(QSettings &settings, const QString &name);
/** \brief Creates a widget using the data from the dialog.
* \param[in] dialog finished dialog with the alarm properties.
*
*/
AlarmWidget *createAlarmWidget(const NewAlarmDialog &dialog);
/** \brief Restores application settings from ini file.
*
*/
void restoreSettings();
/** \brief Saves application settings to ini file.
*
*/
void saveSettings();
/** \brief Helper method to setup the tray icon.
*
*/
void setupTrayIcon();
/** \brief Makes all the connections between QObjects.
*
*/
void connectSignals();
/** \brief Adds an alarm to the list of alarms and configures the signals and UI.
* \param[in] widget widget to add.
*
*/
void addAlarmWidget(AlarmWidget *widget);
/** \brief Returns the current height of the main window.
*
*/
int currentHeight() const;
private:
QSystemTrayIcon *m_icon; /** application icon when minimized. */
QAction *m_restoreMenuAction; /** restore application tray icon action. */
QAction *m_quitMenuAction; /** quit application tray icon action. */
QList<AlarmWidget *> m_alarms; /** alarms widgets. */
};
#endif // MULTIALARM_H_