1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
/***************************************************************************
alarm.cpp - description
-------------------
begin : Mon Feb 4 2002
copyright : (C) 2002 by Martin Witte / Frank Schwanz
email : [email protected] / [email protected]
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include "include/alarm.h"
int Alarm::m_LastID = 0;
Alarm::Alarm(const QDateTime &time, bool daily, bool enabled)
: m_time (time),
m_daily (daily),
m_weekdayMask (0x7F),
m_enabled (enabled),
m_stationID (QString::null),
m_volumePreset (-1),
m_type (StartPlaying),
m_ID (++m_LastID)
{
}
Alarm::Alarm ()
: m_time (QDateTime (QDate(1800, 1,1), QTime(0,0,0))),
m_daily (false),
m_weekdayMask (0x7F),
m_enabled (false),
m_stationID (QString::null),
m_volumePreset(-1),
m_type (StartPlaying),
m_ID (++m_LastID)
{
}
Alarm::Alarm (const Alarm &a)
: m_time (a.m_time),
m_daily (a.m_daily),
m_weekdayMask (a.m_weekdayMask),
m_enabled (a.m_enabled),
m_stationID (a.m_stationID),
m_volumePreset(a.m_volumePreset),
m_type (a.m_type),
m_ID (a.m_ID)
{
}
Alarm::~Alarm()
{
}
QDateTime Alarm::nextAlarm(bool ignoreEnable) const
{
QDateTime now = QDateTime::currentDateTime(),
alarm = m_time;
if (m_daily) {
alarm.setDate (now.date());
if (alarm <= now)
alarm = alarm.addDays(1);
while (m_weekdayMask &&
!(m_weekdayMask & (1 << (alarm.date().dayOfWeek()-1))))
{
alarm = alarm.addDays(1);
}
}
return (m_enabled || ignoreEnable) && (!m_daily || m_weekdayMask) ? alarm : QDateTime();
}
|