From a32a14c83f7a0dbcc1315f49a69abe68c915edad Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Fri, 23 Jul 2010 11:04:08 +0200 Subject: [PATCH] Remove Orphan events to be safe --- Changelog | 3 ++- TimedSilencer.pro.user | 56 +++++++++++++++++++++++++++++------------------- alarmd_backend.h | 17 +++++++++++++++ switchingeventlist.cpp | 5 +++++ 4 files changed, 58 insertions(+), 23 deletions(-) diff --git a/Changelog b/Changelog index 814f295..ac6a480 100644 --- a/Changelog +++ b/Changelog @@ -1,5 +1,6 @@ -* Unreleased - Christophe Dumez - v0.7 +* Fri Jul 23 2010 - Christophe Dumez - v0.7 - Added Swedish translation (Fredrik Wendt) + - Delete Orphan events to be safe * Sun Jul 11 2010 - Christophe Dumez - v0.6 - Entirely new UI diff --git a/TimedSilencer.pro.user b/TimedSilencer.pro.user index 34b0ae9..58fc98d 100644 --- a/TimedSilencer.pro.user +++ b/TimedSilencer.pro.user @@ -7,14 +7,14 @@ ProjectExplorer.Project.EditorSettings - UTF-8 + System ProjectExplorer.Project.Target.0 - Desktop - Qt4ProjectManager.Target.DesktopTarget + Maemo + Qt4ProjectManager.Target.MaemoDeviceTarget 0 0 @@ -30,7 +30,15 @@ - 2 + + + Qt4ProjectManager.MaemoPackageCreationStep + + true + /usr/local/bin/timedsilencer + + + 3 Make Qt4ProjectManager.MakeStep @@ -46,9 +54,9 @@ Debug Qt4ProjectManager.Qt4BuildConfiguration 2 - /home/chris/Devel/N900/TimedSilencer-build-desktop - 4 - 0 + /home/chris/Devel/N900/TimedSilencer-build-maemo + 3 + 9 true @@ -64,7 +72,15 @@ - 2 + + + Qt4ProjectManager.MaemoPackageCreationStep + + true + + + + 3 Make Qt4ProjectManager.MakeStep @@ -80,24 +96,20 @@ Release Qt4ProjectManager.Qt4BuildConfiguration 0 - /home/chris/Devel/N900/TimedSilencer-build-desktop - 4 - 0 + /home/chris/Devel/N900/TimedSilencer-build-maemo + 3 + 9 true 2 - TimedSilencer - Qt4ProjectManager.Qt4RunConfiguration - 2 - - TimedSilencer.pro - false - false - - false - false - + TimedSilencer.pro + New Maemo Run Configuration + Qt4ProjectManager.MaemoRunConfiguration + + + 0 + 1 diff --git a/alarmd_backend.h b/alarmd_backend.h index 4060bcd..4d9f272 100644 --- a/alarmd_backend.h +++ b/alarmd_backend.h @@ -92,11 +92,28 @@ public: } delete pe; } + // Delete possible orphan events + cookie_t *orphan_cookies = alarmd_event_query(0,0,0,0, "TimedSilencer"); + int i = 0; + while(orphan_cookies && orphan_cookies[i] != 0) { + alarmd_event_del(orphan_cookies[i]); + ++i; + } // Save in QSettings events.clear(); settings.setValue("events", events); } + static void deleteOrphanEvents(QList known_cookies) { + cookie_t *orphan_cookies = alarmd_event_query(0,0,0,0, "TimedSilencer"); + int i = 0; + while(orphan_cookies && orphan_cookies[i] != 0) { + if(!known_cookies.contains(orphan_cookies[i])) + alarmd_event_del(orphan_cookies[i]); + ++i; + } + } + static void deleteEvents(QByteArray event_id) { deleteEvents(ProfileEvent::findByID(event_id)); } diff --git a/switchingeventlist.cpp b/switchingeventlist.cpp index 088aa72..18111a4 100644 --- a/switchingeventlist.cpp +++ b/switchingeventlist.cpp @@ -93,6 +93,7 @@ void SwitchingEventList::editEvent(QModelIndex index) { void SwitchingEventList::loadSavedEvents() { qDebug("Loading saved events"); QSettings settings("TimedSilencer", "TimedSilencer"); + QList known_cookies; QHash events = settings.value("events").toHash(); // Check for < v0.6 settings if(!settings.value("from_time", QTime()).toTime().isNull()) { @@ -109,6 +110,7 @@ void SwitchingEventList::loadSavedEvents() { long to_cookie = settings.value("unsilencing_cookie", 0).toLongLong(); if(to_cookie > 0) pe.alarmd_cookies << to_cookie; + known_cookies << pe.alarmd_cookies; if(to_cookie <= 0 || from_cookie <= 0) pe.activated = false; events.insert(pe.getID(), pe.save()); @@ -121,6 +123,7 @@ void SwitchingEventList::loadSavedEvents() { bool settings_change = false; foreach(QVariant e, events.values()) { ProfileEvent *pe = ProfileEvent::load(e); + known_cookies << pe->alarmd_cookies; // Check if still active if(pe->activated && !AlarmdBackend::checkIfStillActive(pe)) { qDebug("An existing profile switching event is no longer active, updating its status"); @@ -135,6 +138,8 @@ void SwitchingEventList::loadSavedEvents() { // Clean up delete pe; } + // Delete possible orphan events + AlarmdBackend::deleteOrphanEvents(known_cookies); if(settings_change) settings.setValue("events", events); } -- 1.7.9.5