Brutally restored choosing alert sound & fixed status column not always updating
[kitchenalert] / src / kitchenalertmainwindow.h
1 /**************************************************************************
2         KitchenAlert
3
4         Copyright (C) 2010  Heli Hyvättinen
5
6         This file is part of KitchenAlert.
7
8         Kitchen Alert is free software: you can redistribute it and/or modify
9         it under the terms of the GNU General Public License as published by
10         the Free Software Foundation, either version 3 of the License, or
11         (at your option) any later version.
12
13         This program is distributed in the hope that it will be useful,
14         but WITHOUT ANY WARRANTY; without even the implied warranty of
15         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16         GNU General Public License for more details.
17
18         You should have received a copy of the GNU General Public License
19         along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
21 **************************************************************************/
22
23
24
25 #ifndef KITCHENALERTMAINWINDOW_H
26 #define KITCHENALERTMAINWINDOW_H
27
28 #include <QMainWindow>
29 #include "timer.h"
30 #include "currentalertstablemodel.h"
31 #include <QItemSelection>
32 #include "alertsound.h"
33
34
35 namespace Ui {
36     class KitchenAlertMainWindow;
37 }
38
39
40 /*! The main window class of KitchenAlert'
41
42   @author Heli Hyvättinen
43   @date 2010-09-08
44   @version 0.1.1
45
46 Operates the UI.
47
48 */
49
50 class KitchenAlertMainWindow : public QMainWindow
51 {
52     Q_OBJECT 
53
54
55
56
57 public:
58     explicit KitchenAlertMainWindow(QWidget *parent = 0);
59     ~KitchenAlertMainWindow();
60
61
62 public slots:
63    /*!
64    Opens a dialog for creating a new timer
65    Connects the new timer's alert and adds it to the model, starting the timer
66     */
67         void newTimerSequence();
68
69    /*!
70    Opens a dialog for choosing the alert sound
71    Gives the sound filename to AlertSound
72     */
73    void openSelectSoundDialog();
74
75     /*!
76    Shows the application's about box
77    */
78     void openAbout();
79
80 /*! Sounds the alert sound and selects the alarming timer
81   Also bring the application to top and activates it
82   Used by connecting it to the timer's alert signal
83   @param indexOfAlerted The index of the alerting timer in the model.
84
85   */
86     void alert(QModelIndex indexOfAlerted);
87
88 /*!
89     Reacts to selecting of timer in the view.
90     Needs to be connected to the corresponding signal.
91     Sets enabling of buttons as necessary.
92     Does not receive information of clearing the selection (because no signal is sent).
93     Disabling selection dependent buttons must be done manually by everything that clears the selection.
94     It cannot be cleared by the user with the selection policy used.
95
96     @param selected Selection that contains all selected cells (all cells of the row selected).
97 */
98     void timerSelected(QItemSelection selected,QItemSelection);
99
100     /*! Snoozes the timer that is currently selected.
101       Needs to be connected to the associated button.
102     */
103     void snooze();
104
105     /*! Restarts the timer selected.
106       Needs to be connected to the associated button.
107     */
108     void restart();
109
110     /*! Stops the timer selected.
111       Needs to be connected to the associated button.
112     */
113     void stop();
114
115 signals:
116
117     void defaultSoundEnabled();
118
119     void soundChanged(QString filename);
120
121 protected:
122     void changeEvent(QEvent *e);
123
124     /*!
125     Reimplemented to catch WindowActivate and WindowDeactivate events.
126     Stops refreshing the view when the window is deactivated and resumes it when reactivated.
127     */
128     bool event(QEvent *event);
129
130     /*!
131     Disables all buttons that should only be enabled when a timer is selected.
132     */
133     void disableSelectionDependentButtons();
134
135 private:
136
137     Ui::KitchenAlertMainWindow *ui;
138
139     CurrentAlertsTableModel model_; /*! The model that stores the alerts */
140
141     /*!
142     Returns a QMoldelIndex pointing to a cell in the row that is currently selected.
143     */
144     QModelIndex selectedRow();
145
146     AlertSound alertSound_; /*! Takes care of alert sound */ //This has been moved to the timers themselves
147
148     /*!
149     Not used. Would allow getting rid of the default sound if used.
150     */
151     void initializeAlertSound();
152
153
154 };
155
156 #endif // KITCHENALERTMAINWINDOW_H