[hamster-applet] touch_fact -> stop_tracking; also connect to dbus signals on the client side only if we have somebod



commit d16aea166d0e3d89f99ce07f764ded410359bd08
Author: Toms Bauģis <toms baugis gmail com>
Date:   Tue Apr 13 17:39:21 2010 +0100

    touch_fact -> stop_tracking; also connect to dbus signals on the client side only if we have somebody to report to

 src/hamster-applet     |    2 +-
 src/hamster-standalone |    5 ++---
 src/hamster/applet.py  |    5 ++---
 src/hamster/client.py  |   17 +++++++++--------
 src/hamster/db.py      |    4 ++--
 src/hamster/storage.py |    8 +++++---
 6 files changed, 21 insertions(+), 20 deletions(-)
---
diff --git a/src/hamster-applet b/src/hamster-applet
index 0f0079a..d739609 100755
--- a/src/hamster-applet
+++ b/src/hamster-applet
@@ -47,7 +47,7 @@ def on_destroy(event):
     if conf.get("stop_on_shutdown"):
         last_activity = runtime.storage.get_last_activity()
         if last_activity and last_activity['end_time'] is None:
-            runtime.storage.touch_fact(last_activity)
+            runtime.storage.stop_tracking()
 
     if gtk.main_level():
         gtk.main_quit()
diff --git a/src/hamster-standalone b/src/hamster-standalone
index 7ff890a..6830968 100755
--- a/src/hamster-standalone
+++ b/src/hamster-standalone
@@ -349,8 +349,7 @@ class ProjectHamster(object):
         elif self.timeout_enabled and self.last_activity and \
              self.last_activity['end_time'] is None:
 
-            runtime.storage.touch_fact(self.last_activity,
-                                       end_time = self.dbusIdleListener.getIdleFrom())
+            runtime.storage.stop_tracking(end_time = self.dbusIdleListener.getIdleFrom())
 
     def on_workspace_changed(self, screen, previous_workspace):
         if not previous_workspace:
@@ -471,7 +470,7 @@ class ProjectHamster(object):
         runtime.dispatcher.dispatch('panel_visible', False)
 
     def on_stop_tracking_clicked(self, widget):
-        runtime.storage.touch_fact(self.last_activity)
+        runtime.storage.stop_tracking()
         self.last_activity = None
         runtime.dispatcher.dispatch('panel_visible', False)
 
diff --git a/src/hamster/applet.py b/src/hamster/applet.py
index 323ffd9..f9bb5cb 100755
--- a/src/hamster/applet.py
+++ b/src/hamster/applet.py
@@ -578,8 +578,7 @@ class HamsterApplet(object):
         elif self.timeout_enabled and self.last_activity and \
              self.last_activity['end_time'] is None:
 
-            runtime.storage.touch_fact(self.last_activity,
-                                       end_time = self.dbusIdleListener.getIdleFrom())
+            runtime.storage.stop_tracking(self.dbusIdleListener.getIdleFrom())
 
     def on_workspace_changed(self, screen, previous_workspace):
         if not previous_workspace:
@@ -705,7 +704,7 @@ class HamsterApplet(object):
         runtime.dispatcher.dispatch('panel_visible', False)
 
     def on_stop_tracking_clicked(self, widget):
-        runtime.storage.touch_fact(self.last_activity)
+        runtime.storage.stop_tracking()
         self.last_activity = None
         runtime.dispatcher.dispatch('panel_visible', False)
 
diff --git a/src/hamster/client.py b/src/hamster/client.py
index 58b241b..23eac78 100644
--- a/src/hamster/client.py
+++ b/src/hamster/client.py
@@ -60,7 +60,7 @@ def from_dbus_fact(fact):
     return fact
 
 class Storage(object):
-    def __init__(self, parent):
+    def __init__(self, parent = None):
         self.parent = parent
 
         dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
@@ -70,9 +70,10 @@ class Storage(object):
                                       dbus_interface='org.gnome.Hamster')
         self.conn = hamster_conn
 
-        bus.add_signal_receiver(self.on_tags_changed, 'TagsChanged', 'org.gnome.Hamster')
-        bus.add_signal_receiver(self.on_facts_changed, 'FactsChanged', 'org.gnome.Hamster')
-        bus.add_signal_receiver(self.on_activities_changed, 'ActivitiesChanged', 'org.gnome.Hamster')
+        if parent:
+            bus.add_signal_receiver(self.on_tags_changed, 'TagsChanged', 'org.gnome.Hamster')
+            bus.add_signal_receiver(self.on_facts_changed, 'FactsChanged', 'org.gnome.Hamster')
+            bus.add_signal_receiver(self.on_activities_changed, 'ActivitiesChanged', 'org.gnome.Hamster')
 
 
     def on_tags_changed(self):
@@ -117,7 +118,7 @@ class Storage(object):
     def get_fact(self, id):
         return from_dbus_fact(self.conn.GetFact(id))
 
-    def add_fact(self, activity_name, tags, start_time = None, end_time = 0,
+    def add_fact(self, activity_name, tags = '', start_time = None, end_time = 0,
                                       category_name = None, description = None):
 
         if start_time:
@@ -135,9 +136,9 @@ class Storage(object):
 
         return self.conn.AddFact(activity_name, tags, start_time, end_time, category_name, description)
 
-    def touch_fact(self, fact, end_time = None):
-        # TODO - rename and remove all the attributes
-        return self.conn.StopTracking()
+    def stop_tracking(self, end_time = None):
+        end_time = timegm((end_time or dt.datetime.now()).timetuple())
+        return self.conn.StopTracking(end_time)
 
     def remove_fact(self, fact_id):
         self.conn.RemoveFact(fact_id)
diff --git a/src/hamster/db.py b/src/hamster/db.py
index cd57d5e..099452a 100644
--- a/src/hamster/db.py
+++ b/src/hamster/db.py
@@ -364,8 +364,8 @@ class Storage(storage.Storage):
             last_activity = facts[-1]
         return last_activity
 
-    def __touch_fact(self, fact):
-        end_time = dt.datetime.now()
+    def __touch_fact(self, fact, end_time):
+        end_time = end_time or dt.datetime.now()
         # tasks under one minute do not count
         if end_time - fact['start_time'] < datetime.timedelta(minutes = 1):
             self.__remove_fact(fact['id'])
diff --git a/src/hamster/storage.py b/src/hamster/storage.py
index 466e959..5a26b4b 100644
--- a/src/hamster/storage.py
+++ b/src/hamster/storage.py
@@ -154,11 +154,13 @@ class Storage(dbus.service.Object):
 
 
     @dbus.service.method("org.gnome.Hamster")
-    def StopTracking(self):
-        """Stops the current fact tracking"""
+    def StopTracking(self, end_time):
+        """Stops tracking the current activity"""
+        end_time = dt.datetime.utcfromtimestamp(end_time)
+
         fact = self.__get_last_activity()
         if fact:
-            self.__touch_fact(fact)
+            self.__touch_fact(fact, end_time)
             self.FactsChanged()
 
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]