[gnome-maps] utils: Add activateAction function



commit 0bdf3056dd9fd070b0dadca0890d265285ee1e7d
Author: Jonas Danielsson <jonas threetimestwo org>
Date:   Wed Nov 19 01:59:55 2014 -0500

    utils: Add activateAction function
    
    https://bugzilla.gnome.org/show_bug.cgi?id=728117

 src/utils.js |   31 +++++++++++++++++++++++++++++++
 1 files changed, 31 insertions(+), 0 deletions(-)
---
diff --git a/src/utils.js b/src/utils.js
index cbc6c35..79c857f 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -135,6 +135,37 @@ function createAction(name, { state, paramType, onActivate, onChangeState }) {
     return action;
 }
 
+function _getPlatformData(appId, timestamp) {
+    let context = Gdk.Display.get_default().get_app_launch_context();
+    context.set_timestamp(timestamp);
+    let info = Gio.DesktopAppInfo.new(appId + '.desktop');
+    let id = new GLib.Variant('s', context.get_startup_notify_id(info, []));
+
+    return { 'desktop-startup-id': id };
+}
+
+function activateAction(appId, action, parameter, timestamp) {
+    let objectPath = '/' + appId.replace(/\./g, '/');
+    let platformData = _getPlatformData(appId, timestamp);
+    let wrappedParam = parameter ? [parameter] : [];
+
+    Gio.DBus.session.call(appId,
+                          objectPath,
+                          'org.freedesktop.Application',
+                          'ActivateAction',
+                          new GLib.Variant('(sava{sv})', [action,
+                                                          wrappedParam,
+                                                          platformData]),
+                          null,
+                          Gio.DBusCallFlags.NONE, -1, null, function(c, res) {
+                              try {
+                                  c.call_finish(res);
+                              } catch(e) {
+                                  debug('ActivateApplication: ' + e);
+                              }
+                          });
+}
+
 function CreateActorFromIconName(name) {
     try {
         let theme = Gtk.IconTheme.get_default();


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