[gnome-shell/app-picker-refresh: 13/16] appDisplay: Create AppFolderIcons for selected categories



commit e3c9c46c1c3c6df992d4888aec70d7aa0bbd10bd
Author: Florian Müllner <fmuellner gnome org>
Date:   Thu Jan 31 17:14:13 2013 +0100

    appDisplay: Create AppFolderIcons for selected categories
    
    App folders are intended for grouping some applications, not to
    assign a category to every single application, so we will only
    create folders for a selected subset of the existing categories.
    Software/Alacarte will eventually allow to create/modify those
    folders, so store the setting in GSettings so that it can be
    shared with those applications.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=694192

 data/org.gnome.shell.gschema.xml.in.in |    8 ++++++++
 js/ui/appDisplay.js                    |    9 ++++++++-
 2 files changed, 16 insertions(+), 1 deletions(-)
---
diff --git a/data/org.gnome.shell.gschema.xml.in.in b/data/org.gnome.shell.gschema.xml.in.in
index abecd37..bacb6b1 100644
--- a/data/org.gnome.shell.gschema.xml.in.in
+++ b/data/org.gnome.shell.gschema.xml.in.in
@@ -39,6 +39,14 @@
         will be displayed in the favorites area.
       </_description>
     </key>
+    <key name="app-folder-categories" type="as">
+      <default>[ 'Utilities', 'Sundry' ]</default>
+      <_summary>List of categories that should be displayed as folders</_summary>
+      <_description>
+        Each category name in this list will be represented as folder in the
+        application view, rather than being displayed inline in the main view.
+      </_description>
+    </key>
     <key name="command-history" type="as">
       <default>[]</default>
       <_summary>History for command (Alt-F2) dialog</_summary>
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 3aad5b0..79f88b4 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -267,6 +267,9 @@ const AppDisplay = new Lang.Class({
         this._appSystem.connect('installed-changed', Lang.bind(this, function() {
             Main.queueDeferredWork(this._workId);
         }));
+        global.settings.connect('changed::app-folder-categories', Lang.bind(this, function() {
+            Main.queueDeferredWork(this._workId);
+        }));
 
         let box = new St.BoxLayout();
         this.actor = new St.Bin({ child: box,
@@ -297,13 +300,17 @@ const AppDisplay = new Lang.Class({
 
         var iter = root.iter();
         var nextType;
+        let folderCategories = global.settings.get_strv('app-folder-categories');
         while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
             if (nextType == GMenu.TreeItemType.DIRECTORY) {
                 var dir = iter.get_directory();
                 if (dir.get_is_nodisplay())
                     continue;
 
-                _loadCategory(dir, this._view);
+                if (folderCategories.indexOf(dir.get_menu_id()) != -1)
+                    this._view.addFolder(dir);
+                else
+                    _loadCategory(dir, this._view);
             }
         }
         this._view.loadGrid();


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