+ }
+
+ static void deleteEvents(QByteArray event_id) {
+ deleteEvents(ProfileEvent::findByID(event_id));
+ }
+
+ static void deleteEvents(ProfileEvent *pe) {
+ // unregistering events
+ foreach(const long &cookie, pe->alarmd_cookies) {
+ qDebug("Unregistering event with cookie %ld", cookie);
+ alarmd_event_del(cookie);
+ }
+ pe->alarmd_cookies.clear();
+ ProfileEvent::clearCookies(pe->getID());
+ }
+
+ static void setProfileEvents(QByteArray event_id) {
+ setProfileEvents(ProfileEvent::findByID(event_id));
+ }
+
+ static bool checkIfStillActive(ProfileEvent *pe) {
+ Q_ASSERT(pe->activated);
+ foreach(const long &cookie, pe->alarmd_cookies) {
+ alarm_event_t *eve = 0;
+ if((eve = alarmd_event_get(cookie)) != 0) {
+ // Free all dynamic memory associated with the alarm event
+ alarm_event_delete(eve);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ static void setProfileEvents(ProfileEvent *pe) {
+ Q_ASSERT(pe->activated);
+ // First clear old alarmd events
+ foreach(const long &cookie, pe->alarmd_cookies) {
+ qDebug("Unregistering event with cookie %ld", cookie);
+ alarmd_event_del(cookie);
+ }
+ pe->alarmd_cookies.clear();
+ // Then setting new events
+ long c1 = newProfileEvent(SILENT, pe->from_time, pe->days);
+ Q_ASSERT(c1 > 0);
+ if(c1 > 0)
+ pe->alarmd_cookies << c1;
+ long c2 = newProfileEvent(GENERAL, pe->to_time, pe->days);
+ Q_ASSERT(c2 > 0);
+ if(c2 > 0)
+ pe->alarmd_cookies << c2;
+ // Save in QSettings
+ ProfileEvent::setCookies(pe->getID(), pe->alarmd_cookies);
+ // Set Profile to SILENT if we are currently in the silent time slot
+ if(pe->affectsCurrentTime())
+ DBusBackend::setProfile(SILENT);