Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/model/homeactivity.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/model/homeactivity.py')
-rw-r--r--src/model/homeactivity.py38
1 files changed, 32 insertions, 6 deletions
diff --git a/src/model/homeactivity.py b/src/model/homeactivity.py
index fa50932..6df4ddd 100644
--- a/src/model/homeactivity.py
+++ b/src/model/homeactivity.py
@@ -15,6 +15,7 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import time
+import logging
import gobject
import dbus
@@ -66,16 +67,20 @@ class HomeActivity(gobject.GObject):
self._retrieve_service()
+ self._name_owner_changed_handler = None
if not self._service:
bus = dbus.SessionBus()
- bus.add_signal_receiver(self._name_owner_changed_cb,
- signal_name="NameOwnerChanged",
- dbus_interface="org.freedesktop.DBus")
+ self._name_owner_changed_handler = bus.add_signal_receiver(
+ self._name_owner_changed_cb,
+ signal_name="NameOwnerChanged",
+ dbus_interface="org.freedesktop.DBus")
def set_window(self, window):
- """An activity is 'launched' once we get its window."""
- if self._window or self._xid:
- raise RuntimeError("Activity is already launched!")
+ """Set the window for the activity
+
+ We allow resetting the window for an activity so that we
+ can replace the launcher once we get its real window.
+ """
if not window:
raise ValueError("window must be valid")
@@ -164,6 +169,10 @@ class HomeActivity(gobject.GObject):
else:
return None
+ def is_journal(self):
+ """Returns boolean if the activity is of type JournalActivity"""
+ return self.get_type() == 'org.laptop.JournalActivity'
+
def get_launch_time(self):
"""Return the time at which the activity was first launched
@@ -212,3 +221,20 @@ class HomeActivity(gobject.GObject):
def _name_owner_changed_cb(self, name, old, new):
if name == self._get_service_name():
self._retrieve_service()
+ self.set_active(True)
+ self._name_owner_changed_handler.remove()
+ self._name_owner_changed_handler = None
+
+ def set_active(self, state):
+ """Propagate the current state to the activity object"""
+ if self._service is not None:
+ self._service.SetActive(state,
+ reply_handler=self._set_active_success,
+ error_handler=self._set_active_error)
+
+ def _set_active_success(self):
+ pass
+
+ def _set_active_error(self, err):
+ logging.error("set_active() failed: %s" % err)
+