home *** CD-ROM | disk | FTP | other *** search
/ Freelog 100 / FreelogNo100-NovembreDecembre2010.iso / Multimedia / Songbird / Songbird_1.8.0-1800_windows-i686-msvc8.exe / jsmodules / sbProperties.jsm < prev    next >
Text File  |  2010-08-30  |  10KB  |  198 lines

  1. /*
  2. //
  3. // BEGIN SONGBIRD GPL
  4. //
  5. // This file is part of the Songbird web player.
  6. //
  7. // Copyright(c) 2005-2008 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.  
  27. /**
  28.  * Property constants for use with the Songbird property system. Import into a
  29.  * JS file or component using:
  30.  *
  31.  *   'Components.utils.import("resource://app/jsmodules/sbProperties.jsm");'
  32.  *
  33.  */
  34.  
  35. EXPORTED_SYMBOLS = ["SBProperties"];
  36.  
  37. var SBProperties = {
  38.  
  39.   _base: "http://songbirdnest.com/data/1.0#",
  40.  
  41.   get base() { return this._base; },
  42.  
  43.   get storageGUID             () { return this._base + "storageGUID"; },
  44.   get created                 () { return this._base + "created"; },
  45.   get updated                 () { return this._base + "updated"; },
  46.   get contentURL              () { return this._base + "contentURL"; },
  47.   get contentType             () { return this._base + "contentType"; },
  48.   get contentLength           () { return this._base + "contentLength"; },
  49.   get hash                    () { return this._base + "hash"; },
  50.   get trackName               () { return this._base + "trackName"; },
  51.   get albumName               () { return this._base + "albumName"; },
  52.   get artistName              () { return this._base + "artistName"; },
  53.   get duration                () { return this._base + "duration"; },
  54.   get genre                   () { return this._base + "genre"; },
  55.   get trackNumber             () { return this._base + "trackNumber"; },
  56.   get year                    () { return this._base + "year"; },
  57.   get discNumber              () { return this._base + "discNumber"; },
  58.   get totalDiscs              () { return this._base + "totalDiscs"; },
  59.   get totalTracks             () { return this._base + "totalTracks"; },
  60.   get isPartOfCompilation     () { return this._base + "isPartOfCompilation"; },
  61.   get producerName            () { return this._base + "producerName"; },
  62.   get composerName            () { return this._base + "composerName"; },
  63.   get conductorName           () { return this._base + "conductorName"; },
  64.   get lyricistName            () { return this._base + "lyricistName"; },
  65.   get lyrics                  () { return this._base + "lyrics"; },
  66.   get recordLabelName         () { return this._base + "recordLabelName"; },
  67.   get primaryImageURL         () { return this._base + "primaryImageURL"; },
  68.   get lastPlayTime            () { return this._base + "lastPlayTime"; },
  69.   get playCount               () { return this._base + "playCount"; },
  70.   get lastPlayPosition        () { return this._base + "lastPlayPosition"; },
  71.   get lastSkipTime            () { return this._base + "lastSkipTime"; },
  72.   get skipCount               () { return this._base + "skipCount"; },
  73.   get rating                  () { return this._base + "rating"; },
  74.   get bitRate                 () { return this._base + "bitRate"; },
  75.   get channels                () { return this._base + "channels"; },
  76.   get sampleRate              () { return this._base + "sampleRate"; },
  77.   get bpm                     () { return this._base + "bpm"; },
  78.   get key                     () { return this._base + "key"; },
  79.   get language                () { return this._base + "language"; },
  80.   get comment                 () { return this._base + "comment"; },
  81.   get copyright               () { return this._base + "copyright"; },
  82.   get copyrightURL            () { return this._base + "copyrightURL"; },
  83.   get subtitle                () { return this._base + "subtitle"; },
  84.   get metadataUUID            () { return this._base + "metadataUUID"; },
  85.   get softwareVendor          () { return this._base + "softwareVendor"; },
  86.   get originURL               () { return this._base + "originURL"; },
  87.   get originPage              () { return this._base + "originPage"; },
  88.   get originPageImage         () { return this._base + "originPageImage"; },
  89.   get originPageTitle         () { return this._base + "originPageTitle"; },
  90.   get originLibraryGuid       () { return this._base + "originLibraryGuid"; },
  91.   get originItemGuid          () { return this._base + "originItemGuid"; },
  92.   get GUID                    () { return this._base + "GUID"; },
  93.   get hidden                  () { return this._base + "hidden"; },
  94.   get isList                  () { return this._base + "isList"; },
  95.   get listType                () { return this._base + "listType"; },
  96.   get isReadOnly              () { return this._base + "isReadOnly"; },
  97.   get isContentReadOnly       () { return this._base + "isContentReadOnly"; },
  98.   get ordinal                 () { return this._base + "ordinal"; },
  99.   get mediaListName           () { return this._base + "mediaListName"; },
  100.   get columnSpec              () { return this._base + "columnSpec"; },
  101.   get defaultColumnSpec       () { return this._base + "defaultColumnSpec"; },
  102.   get customType              () { return this._base + "customType"; },
  103.   get destination             () { return this._base + "destination"; },
  104.   get downloadButton          () { return this._base + "downloadButton"; },
  105.   get downloadStatusTarget    () { return this._base + "downloadStatusTarget"; },
  106.   get downloadDetails         () { return this._base + "downloadDetails"; },
  107.   get isSortable              () { return this._base + "isSortable"; },
  108.   get rapiScopeURL            () { return this._base + "rapiScopeURL"; },
  109.   get rapiSiteID              () { return this._base + "rapiSiteID"; },
  110.   get enableAutoDownload      () { return this._base + "enableAutoDownload"; },
  111.   get transferPolicy          () { return this._base + "transferPolicy"; },
  112.   get defaultMediaPageURL     () { return this._base + "defaultMediaPageURL"; },
  113.   get onlyCustomMediaPages    () { return this._base + "onlyCustomMediaPages"; },
  114.   get availability            () { return this._base + "availability"; },
  115.   get albumArtistName         () { return this._base + "albumArtistName"; },
  116.   get outerGUID               () { return this._base + "outerGUID"; },
  117.   get albumDetailImage        () { return this._base + "albumDetailImage"; },
  118.   get artistDetailImage       () { return this._base + "artistDetailImage"; },
  119.   get albumDetailUrl          () { return this._base + "albumDetailUrl"; },
  120.   get artistDetailUrl         () { return this._base + "artistDetailUrl"; },
  121.   get excludeFromHistory      () { return this._base + "excludeFromHistory"; },
  122.   get disableDownload         () { return this._base + "disableDownload"; },
  123.   get isSubscription          () { return this._base + "isSubscription"; },
  124.   get cdRipStatus             () { return this._base + "cdRipStatus"; },
  125.   get cdDiscHash              () { return this._base + "cdDiscHash"; },
  126.   get shouldRip               () { return this._base + "shouldRip"; },
  127.   get isDRMProtected          () { return this._base + "isDRMProtected"; },
  128.   get dontWriteMetadata       () { return this._base + "dontWriteMetadata"; },
  129.   get deviceId                () { return this._base + "deviceId"; },
  130.   get playCount_AtLastSync    () { return this._base + "playCount_AtLastSync"; },
  131.   get skipCount_AtLastSync    () { return this._base + "skipCount_AtLastSync"; },
  132.   get smartMediaListState     () { return this._base + "smartMediaListState"; },
  133.   get createdFirstRunSmartPlaylists() { return this._base + "createdFirstRunSmartPlaylists"; },
  134.   get downloadMediaListGUID   () { return this._base + "downloadMediaListGUID"; },
  135.   get deviceLibraryGuid       () { return this._base + "deviceLibraryGuid"; },
  136.   get iTunesGUID              () { return this._base + "iTunesGUID"; },
  137.   get keywords                () { return this._base + "keywords"; },
  138.   get description             () { return this._base + "description"; },
  139.   get showName                () { return this._base + "showName"; },
  140.   get episodeNumber           () { return this._base + "episodeNumber"; },
  141.   get seasonNumber            () { return this._base + "seasonNumber"; },
  142.   get playlistURL             () { return this._base + "playlistURL"; },
  143.   get attemptedRemoteArtFetch () { return this._base + "attemptedRemoteArtFetch"; },
  144.  
  145.   /**
  146.    * Create a property array from a js object such as [[id,value], ..] or {id:value}.
  147.    * Pass strict=true to ensure that all property values are valid.
  148.    */
  149.   createArray: function(properties, strict) {
  150.     var propertyArray =
  151.       Components.classes["@songbirdnest.com/Songbird/Properties/MutablePropertyArray;1"]
  152.                 .createInstance(Components.interfaces.sbIMutablePropertyArray);
  153.     if (arguments.length > 1) {
  154.       propertyArray.strict = arguments[1];
  155.     }
  156.     if (properties) {
  157.       this.addToArray(properties, propertyArray);
  158.     }
  159.     return propertyArray;
  160.   },
  161.   
  162.   /**
  163.    * Add properties (as [[id,value], ..] or {id:value})
  164.    * to the given property array
  165.    */
  166.   addToArray: function(properties, propertyArray) {
  167.     if (properties) {
  168.       // If properties are passed as an array, assume [[id,value], ..]
  169.       if (properties.length !== undefined) {
  170.         properties.forEach(function(e) {
  171.           if (e.length == 2) {
  172.             propertyArray.appendProperty(e[0], e[1]);
  173.           }
  174.         });
  175.       // Otherwise assume an object with {id:value}
  176.       } else {
  177.         for (var prop in properties) {
  178.           propertyArray.appendProperty(prop, properties[prop]);
  179.         }
  180.       }
  181.     }
  182.   },
  183.   
  184.   /**
  185.    * Convert the given property array into a javascript map like {id:value}
  186.    */
  187.   arrayToJSObject: function(propArray) {
  188.     var enumerator = propArray.enumerate();
  189.     var property;
  190.     var propMap = {};
  191.     while (enumerator.hasMoreElements()) {
  192.       property = enumerator.getNext().QueryInterface(Components.interfaces.sbIProperty);
  193.       propMap[property.id] = property.value;
  194.     }
  195.     return propMap;
  196.   }
  197. }
  198.