summaryrefslogtreecommitdiffstats
path: root/src/alarm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/alarm.cpp')
-rw-r--r--src/alarm.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/alarm.cpp b/src/alarm.cpp
new file mode 100644
index 0000000..475d48b
--- /dev/null
+++ b/src/alarm.cpp
@@ -0,0 +1,82 @@
+/***************************************************************************
+ alarm.cpp - description
+ -------------------
+ begin : Mon Feb 4 2002
+ copyright : (C) 2002 by Martin Witte / Frank Schwanz
+ email : witte@kawo1.rwth-aachen.de / schwanz@fh-brandenburg.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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 TQDateTime &time, bool daily, bool enabled)
+ : m_time (time),
+ m_daily (daily),
+ m_weekdayMask (0x7F),
+ m_enabled (enabled),
+ m_stationID (TQString()),
+ m_volumePreset (-1),
+ m_type (StartPlaying),
+ m_ID (++m_LastID)
+{
+}
+
+
+Alarm::Alarm ()
+ : m_time (TQDateTime (TQDate(1800, 1,1), TQTime(0,0,0))),
+ m_daily (false),
+ m_weekdayMask (0x7F),
+ m_enabled (false),
+ m_stationID (TQString()),
+ 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()
+{
+}
+
+
+TQDateTime Alarm::nextAlarm(bool ignoreEnable) const
+{
+ TQDateTime now = TQDateTime::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 : TQDateTime();
+}
+
+