Fresh start from released sources + some work done
[kitchenalert] / src / currentalertstablemodel.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
26
27 #ifndef CURRENTALERTSTABLEMODEL_H
28 #define CURRENTALERTSTABLEMODEL_H
29
30 #include <QAbstractTableModel>
31 #include <QMainWindow>
32 #include "timer.h"
33
34
35 /*! Class that contains the model that holds the timers'
36
37   @author Heli Hyvättinen
38   @date 2010-09-08
39   @version 0.1.1
40
41 Class that contains the model that holds the timers
42
43 */
44
45
46 class CurrentAlertsTableModel : public QAbstractTableModel
47 {
48     Q_OBJECT
49 public:
50     explicit CurrentAlertsTableModel(QObject *parent = 0);
51
52     /*!
53     Returns the number of rows in the model.
54     Used by the view.
55     */
56     int rowCount(const QModelIndex &parent) const;
57
58     /*!
59       Returns the (fixed) number of columns in the model.
60       Used by the view.
61     */
62     int columnCount(const QModelIndex &parent) const;
63
64     /*!
65     Returns the queried contents of the cell
66     Used by the view.
67     */
68     QVariant data(const QModelIndex &index, int role) const;
69
70     /*!
71       Returns the queried header data.
72       As no headers are wanted, it always returns an empty QVariant.
73       Used by the view.
74       */
75     QVariant headerData(int section, Qt::Orientation orientation, int role) const;
76
77     /*!
78       Returns the index in the model of the given timer
79       */
80     QModelIndex giveIndexForTimer(Timer * ptimer);
81
82     /*!
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.
85       */
86     bool isThisTimerAlerting(QModelIndex index);
87
88 signals:
89
90 public slots:
91
92     /*!
93        Adds the timers to the model
94     @param timers List of timers to be added
95     @param startImmediately If true, the timers will be started after adding to the model.
96     */
97     void addTimers(QList <Timer *> timers, bool startImmediately = true);
98
99     /*!
100      Tells the view to refresh all information in the time column.
101       */
102     void refreshTimeColumn ();
103
104     /*!
105       Passes the start command to the timer in the given index.
106       @param index Any cell from the row of the alert is good here.
107       */
108     void startTimer(QModelIndex index);
109
110     /*!
111       Passes the snooze command to the timer in the given index.
112       @param index Any cell from the row of the alert is good here.
113       */
114     void snoozeTimer(QModelIndex index);
115
116
117     /*!
118       Passes the stop command to the timer in the given index.
119       @param index Any cell from the row of the alert is good here.
120       */
121     void stopTimer(QModelIndex index);
122
123 /*!
124 Sets whether the view should be kept up to date.
125 */
126     void setUpdateViewOnChanges(bool update);
127
128 private:
129     QList <Timer * > currentTimers_; /*! Holds the timers */
130
131     static const int numberOfColumns_ = 3; /*! The fixed number of columns in the model */
132     static const int alertTextColumnNumber_ = 0; /*! Tells which column contains the alert text */
133     static const int timeRemainingColumnNumber_ = 1; /*! Tells which column contains the time remaining until alert */
134     static const int statusColumnNumber_ = 2; /*! Tells which column contains status information, such as that the timer is alerting  */
135
136
137
138     bool updateViewOnChanges_; /*! Keeps track on whether the view should be kept up to date. */
139
140 };
141
142 #endif // CURRENTALERTSTABLEMODEL_H