home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 December / PCWorld_2007-12_cd.bin / audio-video / songbird / Songbird_0.3_windows-i686.exe / components / sbHotkeyActions.js < prev    next >
Text File  |  2007-10-27  |  4KB  |  128 lines

  1. /**
  2. //
  3. // BEGIN SONGBIRD GPL
  4. // 
  5. // This file is part of the Songbird web player.
  6. //
  7. // Copyright(c) 2005-2007 POTI, Inc.
  8. // http://songbirdnest.com
  9. // 
  10. // This file may be licensed under the terms of of the
  11. // GNU General Public License Version 2 (the "GPL").
  12. // 
  13. // Software distributed under the License is distributed 
  14. // on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either 
  15. // express or implied. See the GPL for the specific language 
  16. // governing rights and limitations.
  17. //
  18. // You should have received a copy of the GPL along with this 
  19. // program. If not, go to http://www.gnu.org/licenses/gpl.html
  20. // or write to the Free Software Foundation, Inc., 
  21. // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  22. // 
  23. // END SONGBIRD GPL
  24. //
  25.  */
  26. const SONGBIRD_HOTKEYACTIONS_CONTRACTID = "@songbirdnest.com/Songbird/HotkeyActions;1";
  27. const SONGBIRD_HOTKEYACTIONS_CLASSNAME = "Songbird Hotkey Actions Service Interface";
  28. const SONGBIRD_HOTKEYACTIONS_CID = Components.ID("{0BB80965-77C8-4212-866C-F22677F75A2C}");
  29. const SONGBIRD_HOTKEYACTIONS_IID = Components.interfaces.sbIHotkeyActions;
  30.  
  31. function HotkeyActions() {
  32.   this._bundles = new Array();
  33. }
  34.  
  35. HotkeyActions.prototype.constructor = HotkeyActions;
  36.  
  37. HotkeyActions.prototype = {
  38.   
  39.   registerHotkeyActionBundle: function (bundle) {
  40.     this._bundles.push(bundle);
  41.   },
  42.   
  43.   unregisterHotkeyActionBundle: function (bundle) {
  44.     var newarray = [];
  45.     var n = this._bundles.length;
  46.     for (var i=0;i<n;i++) {
  47.       if (this._bundles[i] != bundle) newarray.push(this._bundles[i]);
  48.     }
  49.     this._bundles = newarray;
  50.   },
  51.   
  52.   get_bundleCount: function () {
  53.     return this._bundles.length;
  54.   },
  55.   
  56.   enumBundle: function (idx) {
  57.     return this._bundles[idx];
  58.   },
  59.  
  60.   /**
  61.    * See nsISupports.idl
  62.    */
  63.   QueryInterface: function(iid) {
  64.     if (!iid.equals(SONGBIRD_HOTKEYACTIONS_IID) &&
  65.         !iid.equals(Components.interfaces.nsISupportsWeakReference) &&
  66.         !iid.equals(Components.interfaces.nsISupports)) {
  67.       throw Components.results.NS_ERROR_NO_INTERFACE;
  68.     }
  69.     return this;
  70.   }
  71. }; // HotkeyActions.prototype
  72.  
  73. HotkeyActions.prototype.__defineGetter__( "bundleCount", HotkeyActions.prototype.get_bundleCount);
  74.  
  75. /**
  76.  * ----------------------------------------------------------------------------
  77.  * Registration for XPCOM
  78.  * ----------------------------------------------------------------------------
  79.  * Adapted from nsBundleService.js
  80.  */
  81. var gModule = {
  82.   registerSelf: function(componentManager, fileSpec, location, type) {
  83.     componentManager = componentManager.QueryInterface(Components.interfaces.nsIComponentRegistrar);
  84.     for (var key in this._objects) {
  85.       var obj = this._objects[key];
  86.       componentManager.registerFactoryLocation(obj.CID, obj.className, obj.contractID,
  87.                                                fileSpec, location, type);
  88.     }
  89.   },
  90.  
  91.   getClassObject: function(componentManager, cid, iid) {
  92.     if (!iid.equals(Components.interfaces.nsIFactory))
  93.       throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
  94.  
  95.     for (var key in this._objects) {
  96.       if (cid.equals(this._objects[key].CID))
  97.         return this._objects[key].factory;
  98.     }
  99.     
  100.     throw Components.results.NS_ERROR_NO_INTERFACE;
  101.   },
  102.  
  103.   _makeFactory: #1= function(ctor) {
  104.     function ci(outer, iid) {
  105.       if (outer != null)
  106.         throw Components.results.NS_ERROR_NO_AGGREGATION;
  107.       return (new ctor()).QueryInterface(iid);
  108.     } 
  109.     return { createInstance: ci };
  110.   },
  111.   
  112.   _objects: {
  113.     // The HotkeyActions Component
  114.     hotkeyactions:     { CID        : SONGBIRD_HOTKEYACTIONS_CID,
  115.                          contractID : SONGBIRD_HOTKEYACTIONS_CONTRACTID,
  116.                          className  : SONGBIRD_HOTKEYACTIONS_CLASSNAME,
  117.                          factory    : #1#(HotkeyActions)
  118.                        },
  119.   },
  120.  
  121.   canUnload: function(componentManager) { 
  122.     return true; 
  123.   }
  124. }; // gModule
  125.  
  126. function NSGetModule(comMgr, fileSpec) {
  127.   return gModule;
  128. } // NSGetModule