[gnome-shell/T27795: 54/138] appStore: Add appStore component and integrate it in the desktop



commit 4849ed35e34a554b7987d77371c7e7d1a8f09184
Author: Mario Sanchez Prada <mario endlessm com>
Date:   Tue Sep 12 10:54:10 2017 +0100

    appStore: Add appStore component and integrate it in the desktop
    
    This adds the bits to integrate with the old AppStore, which
    we still use to add folders and websites to the desktop.

 js/js-resources.gresource.xml |  1 +
 js/ui/components/appStore.js  | 66 +++++++++++++++++++++++++++++++++++++++++++
 js/ui/main.js                 |  1 +
 js/ui/sessionMode.js          |  4 +--
 js/ui/sideComponent.js        |  4 ++-
 5 files changed, 73 insertions(+), 3 deletions(-)
---
diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml
index 2867080346..80fe22fcd8 100644
--- a/js/js-resources.gresource.xml
+++ b/js/js-resources.gresource.xml
@@ -142,6 +142,7 @@
 
     <file>ui/appActivation.js</file>
     <file>ui/appIconBar.js</file>
+    <file>ui/components/appStore.js</file>
     <file>ui/components/trayArea.js</file>
     <file>ui/endlessButton.js</file>
     <file>ui/forceAppExitDialog.js</file>
diff --git a/js/ui/components/appStore.js b/js/ui/components/appStore.js
new file mode 100644
index 0000000000..8a9a077b69
--- /dev/null
+++ b/js/ui/components/appStore.js
@@ -0,0 +1,66 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const { Gio, GObject } = imports.gi;
+
+const Main = imports.ui.main;
+const SideComponent = imports.ui.sideComponent;
+const ViewSelector = imports.ui.viewSelector;
+
+const APP_STORE_NAME = 'com.endlessm.AppStore';
+const APP_STORE_PATH = '/com/endlessm/AppStore';
+
+const AppStoreIface = '<node> \
+<interface name="com.endlessm.AppStore"> \
+<method name="show"> \
+  <arg type="u" direction="in" name="timestamp"/> \
+  <arg type="b" direction="in" name="reset"/> \
+</method> \
+<method name="hide"> \
+  <arg type="u" direction="in" name="timestamp"/> \
+</method> \
+<method name="showPage"> \
+  <arg type="u" direction="in" name="timestamp"/> \
+  <arg type="s" direction="in" name="page"/> \
+</method> \
+<property name="Visible" type="b" access="read"/> \
+</interface> \
+</node>';
+
+var AppStore = GObject.registerClass(
+class AppStore extends SideComponent.SideComponent {
+    _init() {
+        super._init(AppStoreIface, APP_STORE_NAME, APP_STORE_PATH);
+    }
+
+    enable() {
+        super.enable();
+        Main.appStore = this;
+    }
+
+    disable() {
+        super.disable();
+        Main.appStore = null;
+    }
+
+    toggle(reset) {
+        reset = !!reset;
+        super.toggle(reset);
+    }
+
+    callShow(timestamp, reset) {
+        this.proxy.showRemote(timestamp, reset);
+    }
+
+    callHide(timestamp) {
+        this.proxy.hideRemote(timestamp);
+    }
+
+    showPage(timestamp, page) {
+        if (!this._visible)
+            this._launchedFromDesktop = Main.overview.visible &&
+                                        Main.overview.getActivePage() == ViewSelector.ViewPage.APPS;
+
+        this.proxy.showPageRemote(timestamp, page);
+    }
+});
+var Component = AppStore;
diff --git a/js/ui/main.js b/js/ui/main.js
index f1652b43fc..6a109bf6a3 100644
--- a/js/ui/main.js
+++ b/js/ui/main.js
@@ -54,6 +54,7 @@ const STICKY_KEYS_ENABLE = 'stickykeys-enable';
 const LOG_DOMAIN = 'GNOME Shell';
 const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a';
 
+var appStore = null;
 var componentManager = null;
 var extensionManager = null;
 var panel = null;
diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
index 0352712649..e0a72effdd 100644
--- a/js/ui/sessionMode.js
+++ b/js/ui/sessionMode.js
@@ -95,10 +95,10 @@ const _modes = {
         components: Config.HAVE_NETWORKMANAGER
             ? ['networkAgent', 'polkitAgent', 'telepathyClient',
                'keyring', 'autorunManager', 'automountManager',
-               'trayArea']
+               'appStore', 'trayArea']
             : ['polkitAgent', 'telepathyClient',
                'keyring', 'autorunManager', 'automountManager',
-               'trayArea'],
+               'appStore', 'trayArea'],
 
         panel: {
             left: ['endlessButton', 'appIcons'],
diff --git a/js/ui/sideComponent.js b/js/ui/sideComponent.js
index 97f3fb5b54..8045d8eb02 100644
--- a/js/ui/sideComponent.js
+++ b/js/ui/sideComponent.js
@@ -31,7 +31,9 @@ function shouldHideOtherWindows (metaWindow) {
  * @return: whether the side component was launched from the desktop
  */
 function launchedFromDesktop (metaWindow) {
-    return false;
+    return isSideComponentWindow(metaWindow) &&
+        metaWindow.get_wm_class() == 'Eos-app-store' &&
+        Main.appStore.launchedFromDesktop;
 };
 
 var SideComponent = GObject.registerClass(


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