diff options
Diffstat (limited to 'bandwagon/content/ui/overlays/browserOverlayController.js')
-rw-r--r-- | bandwagon/content/ui/overlays/browserOverlayController.js | 103 |
1 files changed, 76 insertions, 27 deletions
diff --git a/bandwagon/content/ui/overlays/browserOverlayController.js b/bandwagon/content/ui/overlays/browserOverlayController.js index d2f3761..868ac37 100644 --- a/bandwagon/content/ui/overlays/browserOverlayController.js +++ b/bandwagon/content/ui/overlays/browserOverlayController.js @@ -14,11 +14,11 @@ * The Original Code is bandwagon. * * The Initial Developer of the Original Code is - * David McNamara. + * Mozilla Corporation. * Portions created by the Initial Developer are Copyright (C) 2008 * the Initial Developer. All Rights Reserved. * - * Contributor(s): + * Contributor(s): David McNamara * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or @@ -34,6 +34,8 @@ * * ***** END LICENSE BLOCK ***** */ +var bandwagonService; + Bandwagon.Controller.BrowserOverlay = new function() {} Bandwagon.Controller.BrowserOverlay.initBandwagon = function() @@ -44,7 +46,7 @@ Bandwagon.Controller.BrowserOverlay.initBandwagon = function() { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - var bandwagonService = Components.classes["@addons.mozilla.org/bandwagonservice;1"] + bandwagonService = Components.classes["@addons.mozilla.org/bandwagonservice;1"] .getService().wrappedJSObject; // We can safely call init() for each new browser window; the service @@ -60,10 +62,44 @@ Bandwagon.Controller.BrowserOverlay.initBandwagon = function() Bandwagon.Logger.error("Error initializing bandwagon: " + e); } + /** OBSOLETE // add listener to every page loaded in the browser - listen for our custom bandwagonSubscribe event gBrowser.addEventListener("load", Bandwagon.Controller.BrowserOverlay.addSubscribeEventListenerToDocument, true); + */ + + gBrowser.addEventListener("load", Bandwagon.Controller.BrowserOverlay.addSubscriptionRefreshEventListenerToDocument, true); +} + +Bandwagon.Controller.BrowserOverlay.addSubscriptionRefreshEventListenerToDocument = function(event) +{ + if (event.originalTarget instanceof HTMLDocument) + { + var doc = event.originalTarget; + + if (event.originalTarget.defaultView.frameElement) + { + while (doc.defaultView.frameElement) + { + doc=doc.defaultView.frameElement.ownerDocument; + } + } + + // TODO only add to AMO + + doc.addEventListener("bandwagonRefresh", Bandwagon.Controller.BrowserOverlay.handleSubscriptionRefreshEvent, true); + + Bandwagon.Logger.debug("added bandwagonRefresh listener"); + } } +Bandwagon.Controller.BrowserOverlay.handleSubscriptionRefreshEvent = function(event) +{ + Bandwagon.Logger.info("Received bandwagon subscription refresh event"); + + bandwagonService.updateCollectionsList(); +} + +/** OBSOLETE Bandwagon.Controller.BrowserOverlay.addSubscribeEventListenerToDocument = function(event) { if (event.originalTarget instanceof HTMLDocument) @@ -83,24 +119,28 @@ Bandwagon.Controller.BrowserOverlay.addSubscribeEventListenerToDocument = functi //Bandwagon.Logger.debug("added bandwagonSubscribe listener"); } } +*/ +/** OBSOLETE Bandwagon.Controller.BrowserOverlay.handleSubscribeEvent = function(event) { if (event.target && event.target.getAttribute("href")) { - var feedURL = event.target.getAttribute("href"); + var collectionURL = event.target.getAttribute("href"); - Bandwagon.Logger.info("Received subscribe event for feed: " + feedURL); + Bandwagon.Logger.info("Received subscribe event for collection: " + collectionURL); - Bandwagon.Controller.BrowserOverlay._openExtensionManagerFeedsPaneWithSubscribe(feedURL); + Bandwagon.Controller.BrowserOverlay._openExtensionManagerCollectionsPaneWithSubscribe(collectionURL); } else { Bandwagon.Logger.error("Missing data payload in bandwagonSubscribe event"); } } +*/ -Bandwagon.Controller.BrowserOverlay._openExtensionManagerFeedsPaneWithSubscribe = function(feedURL) +/** OBSOLETE +Bandwagon.Controller.BrowserOverlay._openExtensionManagerCollectionsPaneWithSubscribe = function(collectionURL) { const EMTYPE = "Extension:Manager"; var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] @@ -109,23 +149,24 @@ Bandwagon.Controller.BrowserOverlay._openExtensionManagerFeedsPaneWithSubscribe if (theEM) { - // extensions manager window already open - focus, show feeds pane, call doShowFeedPreview + // extensions manager window already open - focus, show collections pane, call doShowCollectionPreview theEM.focus(); - theEM.showView('bandwagon-feeds'); + theEM.showView('bandwagon-collections'); - setTimeout(function() { Bandwagon.Controller.FeedsPane.doShowFeedPreview(feedURL); }, 500); + setTimeout(function() { Bandwagon.Controller.CollectionsPane.doShowCollectionPreview(collectionURL); }, 500); } else { - // extensions manager window NOT already open - open with 'subscribe' argument (this will show feeds pane, call doShowFeedPreview) + // extensions manager window NOT already open - open with 'subscribe' argument (this will show collection pane, call doShowCollectionPreview) const EMURL = "chrome://mozapps/content/extensions/extensions.xul"; const EMFEATURES = "chrome,menubar,extra-chrome,toolbar,dialog=no,resizable"; - window.openDialog(EMURL, "", EMFEATURES, {subscribe: feedURL}); + window.openDialog(EMURL, "", EMFEATURES, {subscribe: collectionURL}); } } +*/ Bandwagon.Controller.BrowserOverlay._removeLoadListener = function() { @@ -144,18 +185,26 @@ Bandwagon.Controller.BrowserOverlay.openFirstRunLandingPage = function() 1000); } -Bandwagon.Controller.BrowserOverlay.showNewFeedItemsAlert = function(feed) +/* Toolbar button action - Open add-ons window with Subscriptions tab focused */ +Bandwagon.Controller.BrowserOverlay.openAddons = function() +{ + const EMURL = "chrome://mozapps/content/extensions/extensions.xul"; + const EMFEATURES = "chrome,menubar,extra-chrome,toolbar,dialog=no,resizable"; + window.openDialog(EMURL, "", EMFEATURES, "bandwagon-collections"); +} + +Bandwagon.Controller.BrowserOverlay.showNewAddonsAlert = function(collection) { - Bandwagon.Logger.debug("in showNewFeedItemsAlert()"); + Bandwagon.Logger.debug("in showNewAddonsAlert()"); var bandwagonStrings = document.getElementById("bandwagon-strings"); var alertsService = Components.classes["@mozilla.org/alerts-service;1"] .getService(Components.interfaces.nsIAlertsService); - var unnotifiedCount = feed.getUnnotifiedFeedItems().length; - var feedName = (feed.name?feed.name:feed.url); - var feedURL = feed.url; + var unnotifiedCount = collection.getUnnotifiedAddons().length; + var collectionName = (collection.name?collection.name:collection.resourceURL); + var collectionURL = collection.resourceURL; var listener = { @@ -163,7 +212,7 @@ Bandwagon.Controller.BrowserOverlay.showNewFeedItemsAlert = function(feed) { if (topic == "alertclickcallback") { - var feedURL = data; + var collectionURL = data; const EMTYPE = "Extension:Manager"; var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] @@ -173,22 +222,22 @@ Bandwagon.Controller.BrowserOverlay.showNewFeedItemsAlert = function(feed) if (theEM) { theEM.focus(); - theEM.showView('bandwagon-feeds'); + theEM.showView('bandwagon-collections'); - // if the em is open, select the bandwagon-feeds pane, but don't select the feed itself. + // if the em is open, select the bandwagon-collections pane, but don't select the collection itself. // the user will be notified by the unread count in the left hand side bar - //theEM.setTimeout(function() { Bandwagon.Controller.FeedsPane._selectFeed(feed); }, 500); + //theEM.setTimeout(function() { Bandwagon.Controller.CollectionsPane._selectCollection(collection); }, 500); } else { const EMURL = "chrome://mozapps/content/extensions/extensions.xul"; const EMFEATURES = "chrome,menubar,extra-chrome,toolbar,dialog=no,resizable"; - // the em is not open - open it, and select this feed + // the em is not open - open it, and select this collection if (window) - window.openDialog(EMURL, "", EMFEATURES, {selectFeed: feedURL}); + window.openDialog(EMURL, "", EMFEATURES, {selectCollection: collectionURL}); else Bandwagon.Logger.error("No browser windows open - can't open EM"); } @@ -200,11 +249,11 @@ Bandwagon.Controller.BrowserOverlay.showNewFeedItemsAlert = function(feed) try { alertsService.showAlertNotification( - "chrome://bandwagon/skin/images/tango-addonfeed-32x32.png", - bandwagonStrings.getString("newfeeditems.alert.title"), - bandwagonStrings.getFormattedString("newfeeditems.alert.text", [feedName]), + "chrome://bandwagon/skin/images/icon32.png", + bandwagonStrings.getString("newaddons.alert.title"), + bandwagonStrings.getFormattedString("newaddons.alert.text", [collectionName]), true, - feedURL, + collectionURL, listener ); } |