9c5e75d69085d761dadb85fa837762c9a8bbe5e5
[kitchenalert] / src / timer.cpp
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 #include "timer.h"
28 #include "currentalertstablemodel.h"
29 #include <qdebug.h>
30
31 Timer::Timer(QObject *parent) :
32     QObject(parent)
33 {
34     _originalTime = 0;
35
36     _actualTimer.setInterval(1000); // 1 s
37     connect(&_actualTimer, SIGNAL(timeout()), this, SLOT(secondPassed()));
38
39     alerting_ = false;
40 }
41
42
43 int Timer::getOriginalTimeInSeconds()
44 {
45     return _originalTime;
46 }
47
48 void Timer::setOriginalTimeInSeconds(int seconds)
49 {
50 _originalTime = seconds;
51 }
52
53 int Timer::getRemainingTimeInSeconds()
54 {
55     return _remainingTime;
56 }
57
58 QString Timer::getAlertText()
59 {
60     return _alertText;
61 }
62
63 void Timer::setAlertText(QString text)
64 {
65     _alertText = text;
66 }
67
68 void Timer::secondPassed()
69 {
70     _remainingTime--;
71     emit remainingTimeChanged();
72
73     if (_remainingTime == 0)
74     {
75         alerting_ = true;
76         emit alert(whereAmI());
77         qDebug() << "alerting";
78     }
79
80 }
81
82 void Timer::start()
83 {
84     _remainingTime = _originalTime;
85     _actualTimer.start();
86
87 }
88
89
90 void Timer::stop()
91 {
92     _actualTimer.stop();
93     _remainingTime = 0; //Stopped timer shows 00:00:00 (which unfortunately makes it red...)
94
95
96 }
97
98 void Timer::snooze()
99 {
100     _remainingTime = 120;
101
102 }
103
104
105 bool Timer::isAlerting()
106 {
107     return alerting_;
108 }
109
110 QModelIndex Timer::whereAmI()
111 {
112
113
114    QObject * p_parent = parent();
115
116
117    CurrentAlertsTableModel* p_parentModel = qobject_cast<CurrentAlertsTableModel *> (p_parent);
118
119    if (p_parentModel == NULL) //If no parent or parent is not of right class, return an invalid index
120         return QModelIndex();
121
122
123   return p_parentModel->giveIndexForTimer(this);
124
125
126 }
127