1 /* vi: set et sw=4 ts=4 si: */
3 var library = function() {
9 // Whether items should be resolved on MusicBrainz
16 errorCB: function(error) {
17 console.log("HoofbeatsLibrary.errorCB: " + error.name);
18 this.deferred.reject();
19 throw new Error(error.name);
22 findCB: function(items) {
23 items.forEach(function(item, index, items) {
24 p.mediaItems.push(item);
26 win.MusicBrainz.getArtist(item.artists[0]).done(
29 "HoofbeatsLibrary.findCB: " +
30 "item resolved on MusicBrainz: " +
37 if (items.length == p.fetchCount && !p.oneTime) {
38 // There *might* be more items.
39 p.fetchOffset += p.fetchCount;
58 initialize: function() {
62 if (win.tizen === undefined) {
63 throw Error("You need the Tizen web API to run Hoofbeats.");
66 p.audioTypeFilter = new tizen.AttributeFilter(
67 "type", "EXACTLY", "AUDIO");
68 p.videoTypeFilter = new tizen.AttributeFilter(
69 "type", "EXACTLY", "VIDEO");
70 p.typeFilter = new tizen.CompositeFilter(
71 "UNION", [p.audioTypeFilter, p.videoTypeFilter]);
74 scan: function(options) {
75 var opts = options || {};
76 if (opts.resolve !== undefined) {
77 p.resolve = opts.resolve;
80 p.deferred = new $.Deferred();
86 if (opts.count !== undefined) {
87 p.fetchCount = opts.count;
100 return p.deferred.promise();
106 p.mediaItems.forEach(function(item, index, items) {
114 // Some simple getters
115 getInitialized: function() { return p.initialized; },
116 getItems: function() { return p.mediaItems; },
117 getSize: function() { return p.mediaItems.length; },
118 getResolve: function() {return p.resolve; }
122 win.HoofbeatsLibrary = library;