Mercurial > snowl
diff extension/content/sidebar.js @ 10:64defcf896f1
update the list of sources when the user subscribes to one
author | Myk Melez <myk@mozilla.org> |
---|---|
date | Fri, 11 Apr 2008 15:07:21 -0700 |
parents | d8abd85fc94d |
children | 40c49a0e9e34 |
line wrap: on
line diff
--- a/extension/content/sidebar.js Fri Apr 11 14:24:54 2008 -0700 +++ b/extension/content/sidebar.js Fri Apr 11 15:07:21 2008 -0700 @@ -6,6 +6,15 @@ getInterface(Ci.nsIDOMWindow); SourcesView = { + // Observer Service + get _obsSvc() { + let obsSvc = Cc["@mozilla.org/observer-service;1"]. + getService(Ci.nsIObserverService); + delete this._obsSvc; + this._obsSvc = obsSvc; + return this._obsSvc; + }, + get _tree() { let tree = document.getElementById("sourcesView"); delete this._tree; @@ -21,6 +30,33 @@ }, init: function() { + this._obsSvc.addObserver(this, "sources:changed", true); + this._rebuildView(); + }, + + //**************************************************************************// + // XPCOM Interface Implementations + + // nsISupports + QueryInterface: function(aIID) { + if (aIID.equals(Ci.nsIObserver) || + aIID.equals(Ci.nsISupportsWeakReference) || + aIID.equals(Ci.nsISupports)) + return this; + + throw Cr.NS_ERROR_NO_INTERFACE; + }, + + // nsIObserver + observe: function(subject, topic, data) { + switch (topic) { + case "sources:changed": + this._rebuildView(); + break; + } + }, + + _rebuildView: function() { let statementString = "SELECT title, id FROM sources ORDER BY title"; let statement = SnowlDatastore.createStatement(statementString);