search: add API to get a list of remote providers

This will be used to reload them in case the configuration changes.

https://bugzilla.gnome.org/show_bug.cgi?id=687491
This commit is contained in:
Cosimo Cecchi 2012-11-06 18:42:33 -05:00
parent 6e46ddaad3
commit 80e7f5832b
2 changed files with 15 additions and 2 deletions

View File

@ -114,7 +114,7 @@ const RemoteSearchProvider = new Lang.Class({
this._proxy = new SearchProviderProxy(Gio.DBus.session, this._proxy = new SearchProviderProxy(Gio.DBus.session,
dbusName, dbusPath, Lang.bind(this, this._onProxyConstructed)); dbusName, dbusPath, Lang.bind(this, this._onProxyConstructed));
this.parent(appInfo.get_name().toUpperCase(), appInfo); this.parent(appInfo.get_name().toUpperCase(), appInfo, true);
this._cancellable = new Gio.Cancellable(); this._cancellable = new Gio.Cancellable();
}, },

View File

@ -74,10 +74,11 @@ const SearchResultDisplay = new Lang.Class({
const SearchProvider = new Lang.Class({ const SearchProvider = new Lang.Class({
Name: 'SearchProvider', Name: 'SearchProvider',
_init: function(title, appInfo) { _init: function(title, appInfo, isRemoteProvider) {
this.title = title; this.title = title;
this.appInfo = appInfo; this.appInfo = appInfo;
this.searchSystem = null; this.searchSystem = null;
this.isRemoteProvider = !!isRemoteProvider;
}, },
/** /**
@ -173,12 +174,16 @@ const SearchSystem = new Lang.Class({
_init: function() { _init: function() {
this._providers = []; this._providers = [];
this._remoteProviders = [];
this.reset(); this.reset();
}, },
registerProvider: function (provider) { registerProvider: function (provider) {
provider.searchSystem = this; provider.searchSystem = this;
this._providers.push(provider); this._providers.push(provider);
if (provider.isRemoteProvider)
this._remoteProviders.push(provider);
}, },
unregisterProvider: function (provider) { unregisterProvider: function (provider) {
@ -187,12 +192,20 @@ const SearchSystem = new Lang.Class({
return; return;
provider.searchSystem = null; provider.searchSystem = null;
this._providers.splice(index, 1); this._providers.splice(index, 1);
let remoteIndex = this._remoteProviders.indexOf(provider);
if (remoteIndex != -1)
this._remoteProviders.splice(index, 1);
}, },
getProviders: function() { getProviders: function() {
return this._providers; return this._providers;
}, },
getRemoteProviders: function() {
return this._remoteProviders;
},
getTerms: function() { getTerms: function() {
return this._previousTerms; return this._previousTerms;
}, },