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 **************************************************************************/
27 #ifndef CURRENTALERTSTABLEMODEL_H
28 #define CURRENTALERTSTABLEMODEL_H
30 #include <QAbstractTableModel>
31 #include <QMainWindow>
35 /*! Class that contains the model that holds the timers'
37 @author Heli Hyvättinen
41 Class that contains the model that holds the timers
46 class CurrentAlertsTableModel : public QAbstractTableModel
50 explicit CurrentAlertsTableModel(QObject *parent = 0);
53 Returns the number of rows in the model.
56 int rowCount(const QModelIndex &parent) const;
59 Returns the (fixed) number of columns in the model.
62 int columnCount(const QModelIndex &parent) const;
65 Returns the queried contents of the cell
68 QVariant data(const QModelIndex &index, int role) const;
71 Returns the queried header data.
72 As no headers are wanted, it always returns an empty QVariant.
75 QVariant headerData(int section, Qt::Orientation orientation, int role) const;
78 Returns the index in the model of the given timer
80 QModelIndex giveIndexForTimer(Timer * ptimer);
83 Returns whether the timer in the given position is currently alerting.
84 @param index Any cell from the row of the alert is good here.
86 bool isThisTimerAlerting(QModelIndex index);
94 Adds the timers to the model
95 @param timers List of timers to be added
96 @param startImmediately If true, the timers will be started after adding to the model.
98 void addTimers(QList <Timer *> timers, bool startImmediately = true);
101 Tells the view to refresh all information in the time and status columns.
102 (The time and status change without user inervention unlike the alert text and thus
103 need to be refreshed.)
105 void refreshTimeAndStatusColumns ();
108 Passes the start command to the timer in the given index.
109 @param index Any cell from the row of the alert is good here.
111 void startTimer(QModelIndex index);
114 Passes the snooze command to the timer in the given index.
115 @param index Any cell from the row of the alert is good here.
117 void snoozeTimer(QModelIndex index);
121 Passes the stop command to the timer in the given index.
122 @param index Any cell from the row of the alert is good here.
124 void stopTimer(QModelIndex index);
127 Sets whether the view should be kept up to date.
129 void setUpdateViewOnChanges(bool update);
132 Removes a timer from the model
135 void removeTimer(QModelIndex index);
140 QList <Timer * > currentTimers_; /*! Holds the timers */
142 static const int numberOfColumns_ = 3; /*! The fixed number of columns in the model */
143 static const int alertTextColumnNumber_ = 0; /*! Tells which column contains the alert text */
144 static const int timeRemainingColumnNumber_ = 1; /*! Tells which column contains the time remaining until alert */
145 static const int statusColumnNumber_ = 2; /*! Tells which column contains status information, such as that the timer is alerting */
149 bool updateViewOnChanges_; /*! Keeps track on whether the view should be kept up to date. */
153 #endif // CURRENTALERTSTABLEMODEL_H