[gnome-shell/eos3.8: 42/255] appStore: Add appStore component and integrate it in the desktop



commit 81eb83ad7c6748cbc21352ba0f463f9503e33fa5
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.
    
     * 2020-03-14: Move D-Bus interface to com.endlessm.AppStore.xml

 data/dbus-interfaces/com.endlessm.AppStore.xml | 16 ++++++++
 data/gnome-shell-dbus-interfaces.gresource.xml |  1 +
 js/js-resources.gresource.xml                  |  1 +
 js/ui/components/appStore.js                   | 56 ++++++++++++++++++++++++++
 js/ui/main.js                                  |  1 +
 js/ui/sessionMode.js                           |  4 +-
 js/ui/sideComponent.js                         |  4 +-
 7 files changed, 80 insertions(+), 3 deletions(-)
---
diff --git a/data/dbus-interfaces/com.endlessm.AppStore.xml b/data/dbus-interfaces/com.endlessm.AppStore.xml
new file mode 100644
index 0000000000..ba257d6eeb
--- /dev/null
+++ b/data/dbus-interfaces/com.endlessm.AppStore.xml
@@ -0,0 +1,16 @@
+<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>
diff --git a/data/gnome-shell-dbus-interfaces.gresource.xml b/data/gnome-shell-dbus-interfaces.gresource.xml
index 118a19e74d..314e854a8f 100644
--- a/data/gnome-shell-dbus-interfaces.gresource.xml
+++ b/data/gnome-shell-dbus-interfaces.gresource.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <gresources>
   <gresource prefix="/org/gnome/shell/dbus-interfaces">
+    <file preprocess="xml-stripblanks">com.endlessm.AppStore.xml</file>
     <file preprocess="xml-stripblanks">com.endlessm.Speedwagon.xml</file>
     <file preprocess="xml-stripblanks">net.hadess.SensorProxy.xml</file>
     <file preprocess="xml-stripblanks">net.hadess.SwitcherooControl.xml</file>
diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml
index 84516fd863..b1099c4d77 100644
--- a/js/js-resources.gresource.xml
+++ b/js/js-resources.gresource.xml
@@ -143,6 +143,7 @@
 
     <file>ui/appActivation.js</file>
     <file>ui/appIconBar.js</file>
+    <file>ui/components/appStore.js</file>
     <file>ui/endlessButton.js</file>
     <file>ui/forceAppExitDialog.js</file>
     <file>ui/hotCorner.js</file>
diff --git a/js/ui/components/appStore.js b/js/ui/components/appStore.js
new file mode 100644
index 0000000000..17be2f4d68
--- /dev/null
+++ b/js/ui/components/appStore.js
@@ -0,0 +1,56 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+/* exported Component */
+
+const { GObject } = imports.gi;
+
+const Main = imports.ui.main;
+const SideComponent = imports.ui.sideComponent;
+const ViewSelector = imports.ui.viewSelector;
+
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
+const APP_STORE_NAME = 'com.endlessm.AppStore';
+const APP_STORE_PATH = '/com/endlessm/AppStore';
+
+const AppStoreIface = loadInterfaceXML('com.endlessm.AppStore');
+
+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 26c6defa0c..b930b2c4c8 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 d24ab760cb..32fba1025f 100644
--- a/js/ui/sessionMode.js
+++ b/js/ui/sessionMode.js
@@ -82,9 +82,9 @@ const _modes = {
         unlockDialog: imports.ui.unlockDialog.UnlockDialog,
         components: Config.HAVE_NETWORKMANAGER
             ? ['networkAgent', 'polkitAgent', 'telepathyClient',
-               'keyring', 'autorunManager', 'automountManager']
+                'keyring', 'autorunManager', 'automountManager', 'appStore']
             : ['polkitAgent', 'telepathyClient',
-               'keyring', 'autorunManager', 'automountManager'],
+                'keyring', 'autorunManager', 'automountManager', 'appStore'],
 
         panel: {
             left: ['endlessButton', 'appIcons'],
diff --git a/js/ui/sideComponent.js b/js/ui/sideComponent.js
index 7ae16efd8a..ad4883f030 100644
--- a/js/ui/sideComponent.js
+++ b/js/ui/sideComponent.js
@@ -34,7 +34,9 @@ function shouldHideOtherWindows(metaWindow) {
  * @returns {bool} 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]