[gnome-shell] remoteSearch: Do filtering here of providers here



commit dc2468b27b7b41b5c2922611d3b6b676a53a0db8
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Sat Nov 2 18:03:52 2013 -0400

    remoteSearch: Do filtering here of providers here
    
    We already do ordering at load time, so why not filtering?

 js/ui/remoteSearch.js |   17 ++++++++++++++---
 js/ui/search.js       |   21 +++------------------
 2 files changed, 17 insertions(+), 21 deletions(-)
---
diff --git a/js/ui/remoteSearch.js b/js/ui/remoteSearch.js
index dd2928f..520d109 100644
--- a/js/ui/remoteSearch.js
+++ b/js/ui/remoteSearch.js
@@ -62,7 +62,7 @@ const SearchProvider2Iface = '<node> \
 var SearchProviderProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProviderIface);
 var SearchProvider2ProxyInfo = Gio.DBusInterfaceInfo.new_for_xml(SearchProvider2Iface);
 
-function loadRemoteSearchProviders(addProviderCallback) {
+function loadRemoteSearchProviders(callback) {
     let objectPaths = {};
     let loadedProviders = [];
 
@@ -116,6 +116,12 @@ function loadRemoteSearchProviders(addProviderCallback) {
         }
     }
 
+    let searchSettings = new Gio.Settings({ schema: Search.SEARCH_PROVIDERS_SCHEMA });
+    if (searchSettings.get_boolean('disable-external')) {
+        callback([]);
+        return;
+    }
+
     let dataDirs = GLib.get_system_data_dirs();
     dataDirs.forEach(function(dataDir) {
         let path = GLib.build_filenamev([dataDir, 'gnome-shell', 'search-providers']);
@@ -134,12 +140,17 @@ function loadRemoteSearchProviders(addProviderCallback) {
         }
     });
 
-    let searchSettings = new Gio.Settings({ schema: Search.SEARCH_PROVIDERS_SCHEMA });
     let sortOrder = searchSettings.get_strv('sort-order');
 
     // Special case gnome-control-center to be always active and always first
     sortOrder.unshift('gnome-control-center.desktop');
 
+    loadedProviders = loadedProviders.filter(function(provider) {
+        let appId = provider.appInfo.get_id();
+        let disabled = searchSettings.get_strv('disabled');
+        return disabled.indexOf(appId) == -1;
+    });
+
     loadedProviders.sort(function(providerA, providerB) {
         let idxA, idxB;
         let appIdA, appIdB;
@@ -170,7 +181,7 @@ function loadRemoteSearchProviders(addProviderCallback) {
         return (idxA - idxB);
     });
 
-    loadedProviders.forEach(addProviderCallback);
+    callback(loadedProviders);
 }
 
 const RemoteSearchProvider = new Lang.Class({
diff --git a/js/ui/search.js b/js/ui/search.js
index dcaef41..b55b76a 100644
--- a/js/ui/search.js
+++ b/js/ui/search.js
@@ -39,19 +39,6 @@ const SearchSystem = new Lang.Class({
         this._reloadRemoteProviders();
     },
 
-    _shouldUseSearchProvider: function(provider) {
-        // the disable-external GSetting only affects remote providers
-        if (!provider.isRemoteProvider)
-            return true;
-
-        if (this._searchSettings.get_boolean('disable-external'))
-            return false;
-
-        let appId = provider.appInfo.get_id();
-        let disable = this._searchSettings.get_strv('disabled');
-        return disable.indexOf(appId) == -1;
-    },
-
     addProvider: function(provider) {
         this._providers.push(provider);
         this.emit('providers-changed');
@@ -65,12 +52,10 @@ const SearchSystem = new Lang.Class({
             this._unregisterProvider(provider);
         }));
 
-        RemoteSearch.loadRemoteSearchProviders(Lang.bind(this, function(provider) {
-            if (!this._shouldUseSearchProvider(provider))
-                return;
-
-            this._registerProvider(provider);
+        RemoteSearch.loadRemoteSearchProviders(Lang.bind(this, function(providers) {
+            providers.forEach(Lang.bind(this, this._registerProvider));
         }));
+
         this.emit('providers-changed');
     },
 


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