From 54c24e9f1141bc13f7e492e1228e5b653b11b156 Mon Sep 17 00:00:00 2001 From: andrei1089 Date: Mon, 15 Feb 2010 00:15:21 +0200 Subject: [PATCH] Update UI at midnight --- .../lib/hildon-desktop/pedometer_widget_home.py | 27 ++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/usr/lib/hildon-desktop/pedometer_widget_home.py b/src/usr/lib/hildon-desktop/pedometer_widget_home.py index 6550bc3..dda8468 100644 --- a/src/usr/lib/hildon-desktop/pedometer_widget_home.py +++ b/src/usr/lib/hildon-desktop/pedometer_widget_home.py @@ -401,6 +401,9 @@ class PedoController(Singleton): observers = [] + midnight_set = False + midnight_source_id = None + def __init__(self): self.pedometer = PedoCounter(self.steps_detected) self.pedometerInterval = PedoIntervalCounter() @@ -410,6 +413,29 @@ class PedoController(Singleton): self.load_values() + if not self.midnight_set: + self.update_at_midnight() + self.midnight_set = True + + def update_at_midnight(self): + next_day = date.today() + timedelta(days=1) + diff = time.mktime(next_day.timetuple()) - time.time() + diff = int(diff+5) + self.midnight_source_id = gobject.timeout_add_seconds(diff, self.midnight_callback, True) + + def stop_midnight_callback(self): + if self.midnight_source_id is not None: + gobject.source_remove(self.midnight_source_id) + + def midnight_callback(self, first=False): + self.load_values() + self.notify() + if first: + self.midnight_source_id = gobject.timeout_add_seconds(24*3600, self.midnight_callback) + return False + else: + return True + def load_values(self): if self.second_view == 0: self.v[1] = self.repository.get_alltime_values() @@ -1527,6 +1553,7 @@ class PedometerHomePlugin(hildondesktop.HomePluginItem): return self.pedometer.request_stop() + self.controller.stop_midnight_callback() def update_values(self): #TODO: do not update if the widget is not on the active desktop -- 1.7.9.5