1 /**************************************************************************
4 Copyright (C) 2010 Heli Hyvättinen
6 This file is part of KitchenAlert.
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.
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.
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/>.
21 **************************************************************************/
25 #ifndef KITCHENALERTMAINWINDOW_H
26 #define KITCHENALERTMAINWINDOW_H
28 #include <QMainWindow>
30 #include "currentalertstablemodel.h"
31 #include <QItemSelection>
32 #include "alertsound.h"
36 class KitchenAlertMainWindow;
40 /*! The main window class of KitchenAlert'
42 @author Heli Hyvättinen
50 class KitchenAlertMainWindow : public QMainWindow
58 explicit KitchenAlertMainWindow(QWidget *parent = 0);
59 ~KitchenAlertMainWindow();
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
67 void newTimerSequence();
70 Opens a dialog for choosing the alert sound
71 Gives the sound filename to AlertSound
73 void openSelectSoundDialog();
76 Shows the application's about box
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.
86 void alert(QModelIndex indexOfAlerted);
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.
96 @param selected Selection that contains all selected cells (all cells of the row selected).
98 void timerSelected(QItemSelection selected,QItemSelection);
100 /*! Snoozes the timer that is currently selected.
101 Needs to be connected to the associated button.
105 /*! Restarts the timer selected.
106 Needs to be connected to the associated button.
110 /*! Stops the timer selected.
111 Needs to be connected to the associated button.
117 void changeEvent(QEvent *e);
120 Reimplemented to catch WindowActivate and WindowDeactivate events.
121 Stops refreshing the view when the window is deactivated and resumes it when reactivated.
123 bool event(QEvent *event);
126 Disables all buttons that should only be enabled when a timer is selected.
128 void disableSelectionDependentButtons();
132 Ui::KitchenAlertMainWindow *ui;
134 CurrentAlertsTableModel model_; /*! The model that stores the alerts */
137 Returns a QMoldelIndex pointing to a cell in the row that is currently selected.
139 QModelIndex selectedRow();
141 AlertSound alertSound_; /*! Takes care of alert sound */ //This has been moved to the timers themselves
144 Not used. Would allow getting rid of the default sound if used.
146 void initializeAlertSound();
151 #endif // KITCHENALERTMAINWINDOW_H