bunch of cleanup
This commit is contained in:
parent
b67b763d89
commit
d64c6b3f16
8 changed files with 82 additions and 16 deletions
|
@ -38,6 +38,7 @@ function TopLinksCtrl($scope, feeds, feedItems, downloader) {
|
||||||
newFeedItem.date = 'Date';
|
newFeedItem.date = 'Date';
|
||||||
newFeedItem.description = 'Long Description<br /> with HTML <b>and stuff</b>';
|
newFeedItem.description = 'Long Description<br /> with HTML <b>and stuff</b>';
|
||||||
newFeedItem.audioUrl = 'http://example.com/1';
|
newFeedItem.audioUrl = 'http://example.com/1';
|
||||||
|
newFeedItem.queued = 1;
|
||||||
|
|
||||||
ixDbEz.put("feedItem", newFeedItem);
|
ixDbEz.put("feedItem", newFeedItem);
|
||||||
|
|
||||||
|
@ -50,6 +51,7 @@ function TopLinksCtrl($scope, feeds, feedItems, downloader) {
|
||||||
newFeedItem.date = 'Date';
|
newFeedItem.date = 'Date';
|
||||||
newFeedItem.description = 'Second Long Description<br /> with HTML <b>and stuff</b>';
|
newFeedItem.description = 'Second Long Description<br /> with HTML <b>and stuff</b>';
|
||||||
newFeedItem.audioUrl = 'http://example.com/2';
|
newFeedItem.audioUrl = 'http://example.com/2';
|
||||||
|
newFeedItem.queued = 0;
|
||||||
|
|
||||||
ixDbEz.put("feedItem", newFeedItem);
|
ixDbEz.put("feedItem", newFeedItem);
|
||||||
};
|
};
|
||||||
|
@ -66,9 +68,10 @@ function FeedCtrl($scope, $routeParams, feeds, pageSwitcher) {
|
||||||
pageSwitcher.setBack('feeds');
|
pageSwitcher.setBack('feeds');
|
||||||
}
|
}
|
||||||
|
|
||||||
function QueueListCtrl($scope, $rootScope, $route, pageSwitcher, feedItems, feeds) {
|
function QueueListCtrl($scope, $rootScope, pageSwitcher, feedItems, feeds, queueList) {
|
||||||
$scope.queue = [];
|
$scope.queue = [];
|
||||||
feedItems.list($scope);
|
queueList.init($scope);
|
||||||
|
feedItems.listQueue(queueList);
|
||||||
|
|
||||||
$scope.playItem = function(id) {
|
$scope.playItem = function(id) {
|
||||||
feedItems.get(id, function(feedItem) {
|
feedItems.get(id, function(feedItem) {
|
||||||
|
@ -116,7 +119,7 @@ function SettingsCtrl($scope, $route, settings, pageSwitcher) {
|
||||||
alert('already Installed');
|
alert('already Installed');
|
||||||
// Already installed
|
// Already installed
|
||||||
} else {
|
} else {
|
||||||
var manifestURL = "http://192.168.100.37/b2gPodcast/manifest.webapp";
|
var manifestURL = "http://localhost/b2gPodcast/package.manifest";
|
||||||
var installApp = navigator.mozApps.install(manifestURL);
|
var installApp = navigator.mozApps.install(manifestURL);
|
||||||
|
|
||||||
installApp.onsuccess = function(data) {
|
installApp.onsuccess = function(data) {
|
||||||
|
@ -183,7 +186,7 @@ function TopBarCtrl($scope, player, pageSwitcher)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function InfoCtrl($scope)
|
function InfoCtrl($scope, pageSwitcher)
|
||||||
{
|
{
|
||||||
pageSwitcher.change('info');
|
pageSwitcher.change('info');
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,21 @@ angular.module('podcasts.services', ['podcasts.database'])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}])
|
}])
|
||||||
|
.value('queueList', {
|
||||||
|
queue: [],
|
||||||
|
scope: null,
|
||||||
|
init: function(scope) {
|
||||||
|
this.scope = scope;
|
||||||
|
scope.queue = this.queue = [];
|
||||||
|
|
||||||
|
},
|
||||||
|
addToQueue: function(item) {
|
||||||
|
this.queue.push(item);
|
||||||
|
if (typeof this.scope !== "undefined") {
|
||||||
|
this.scope.$apply();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
.service('feedItems', ['db', function(db) {
|
.service('feedItems', ['db', function(db) {
|
||||||
return {
|
return {
|
||||||
db: db,
|
db: db,
|
||||||
|
@ -61,11 +76,49 @@ angular.module('podcasts.services', ['podcasts.database'])
|
||||||
newFeedItem.date = Date.parse(searchableXml.find('pubDate').text());
|
newFeedItem.date = Date.parse(searchableXml.find('pubDate').text());
|
||||||
newFeedItem.description = searchableXml.find('description').text();
|
newFeedItem.description = searchableXml.find('description').text();
|
||||||
newFeedItem.audioUrl = searchableXml.find('enclosure').attr('url');
|
newFeedItem.audioUrl = searchableXml.find('enclosure').attr('url');
|
||||||
|
newFeedItem.queued = 1;
|
||||||
|
|
||||||
this.db.put("feedItem", newFeedItem, undefined, function() {
|
this.db.put("feedItem", newFeedItem, undefined, function() {
|
||||||
onSuccess(newFeedItem);
|
onSuccess(newFeedItem);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
getNextInQueue: function(feedItem) {
|
||||||
|
var tempQueueList = { queue: [], addToQueue: function(item) { this.queue.push(item); } };
|
||||||
|
var nextFeedItem = null;
|
||||||
|
this.listQueue(tempQueueList, function() {
|
||||||
|
var returnNextValue = false;
|
||||||
|
angular.forEach(tempQueueList.queue, function(key, value) {
|
||||||
|
if (returnNextValue) {
|
||||||
|
nextFeedItem = value;
|
||||||
|
returnNextValue = false;
|
||||||
|
}
|
||||||
|
if (feedItem.id === value.id) {
|
||||||
|
returnNextValue = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return nextFeedItem;
|
||||||
|
},
|
||||||
|
listQueue: function(queueList, done) {
|
||||||
|
this.db.getCursor("feedItem", function(ixDbCursorReq)
|
||||||
|
{
|
||||||
|
if(typeof ixDbCursorReq !== "undefined") {
|
||||||
|
ixDbCursorReq.onsuccess = function (e) {
|
||||||
|
var cursor = ixDbCursorReq.result || e.result;
|
||||||
|
if (cursor) {
|
||||||
|
queueList.addToQueue(cursor.value);
|
||||||
|
|
||||||
|
cursor.continue();
|
||||||
|
} else {
|
||||||
|
if (typeof done === 'function') {
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, undefined, IDBKeyRange.only(1), undefined, 'ixQueued');
|
||||||
|
},
|
||||||
list: function($scope) {
|
list: function($scope) {
|
||||||
this.db.getCursor("feedItem", function(ixDbCursorReq)
|
this.db.getCursor("feedItem", function(ixDbCursorReq)
|
||||||
{
|
{
|
||||||
|
@ -210,7 +263,7 @@ angular.module('podcasts.services', ['podcasts.database'])
|
||||||
finishSave(newFeed);
|
finishSave(newFeed);
|
||||||
});
|
});
|
||||||
}, function() {
|
}, function() {
|
||||||
console.log('Could not fetch XML for feed, adding just URL for now');
|
console.error('Could not fetch XML for feed, adding just URL for now');
|
||||||
var newFeed = {};
|
var newFeed = {};
|
||||||
newFeed.url = url;
|
newFeed.url = url;
|
||||||
|
|
||||||
|
@ -357,7 +410,6 @@ angular.module('podcasts.services', ['podcasts.database'])
|
||||||
}
|
}
|
||||||
|
|
||||||
ngModel.$render = function() {
|
ngModel.$render = function() {
|
||||||
console.log(ngModel);
|
|
||||||
if (ngModel.$modelValue.value !== '') {
|
if (ngModel.$modelValue.value !== '') {
|
||||||
ngModel.$viewValue = ngModel.$modelValue.value;
|
ngModel.$viewValue = ngModel.$modelValue.value;
|
||||||
}
|
}
|
||||||
|
@ -446,6 +498,17 @@ angular.module('podcasts.services', ['podcasts.database'])
|
||||||
feedItem.position = Math.floor(event.target.currentTime);
|
feedItem.position = Math.floor(event.target.currentTime);
|
||||||
db.put("feedItem", feedItem);
|
db.put("feedItem", feedItem);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// TODO: add something here for when audio is done to remove from queue and go to next song
|
||||||
|
this.audio.bind('ended', function(event) {
|
||||||
|
feedItem.queued = 0;
|
||||||
|
feedItem.position = 0;
|
||||||
|
db.put("feedItem", feedItem);
|
||||||
|
|
||||||
|
// start next item
|
||||||
|
// get next item from queue
|
||||||
|
play(nextFeedItem, $scope);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
pause: function() {
|
pause: function() {
|
||||||
this.audio[0].pause();
|
this.audio[0].pause();
|
||||||
|
@ -497,7 +560,6 @@ angular.module('podcasts.services', ['podcasts.database'])
|
||||||
},
|
},
|
||||||
setBack: function(backPage) {
|
setBack: function(backPage) {
|
||||||
this.backPage = backPage;
|
this.backPage = backPage;
|
||||||
console.log(this);
|
|
||||||
},
|
},
|
||||||
getNextPage: function(current) {
|
getNextPage: function(current) {
|
||||||
var nextPage,
|
var nextPage,
|
||||||
|
@ -656,6 +718,7 @@ angular.module('podcasts.database', []).
|
||||||
ixDbEz.createObjStore("feedItem", "id", true);
|
ixDbEz.createObjStore("feedItem", "id", true);
|
||||||
ixDbEz.createIndex("feedItem", "ixGuid", "guid", true);
|
ixDbEz.createIndex("feedItem", "ixGuid", "guid", true);
|
||||||
ixDbEz.createIndex("feedItem", "ixFeedId", "feedId");
|
ixDbEz.createIndex("feedItem", "ixFeedId", "feedId");
|
||||||
|
ixDbEz.createIndex("feedItem", "ixQueued", "queued");
|
||||||
ixDbEz.createObjStore("setting", "id", true);
|
ixDbEz.createObjStore("setting", "id", true);
|
||||||
ixDbEz.createIndex("setting", "ixName", "name", true);
|
ixDbEz.createIndex("setting", "ixName", "name", true);
|
||||||
});
|
});
|
||||||
|
|
3
lib/angular/angular.js
vendored
3
lib/angular/angular.js
vendored
|
@ -4870,7 +4870,8 @@ function $InterpolateProvider() {
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
var URL_MATCH = /^([^:]+):\/\/(\w+:{0,1}\w*@)?([\w\.-]*)(:([0-9]+))?(\/[^\?#]*)?(\?([^#]*))?(#(.*))?$/,
|
// Colin: adjusted URL_MATCH to support curly braces in packaged apps app://{asdf-fda-asdf} url format
|
||||||
|
var URL_MATCH = /^([^:]+):\/\/(\w+:{0,1}\w*@)?([\w\.{}-]*)(:([0-9]+))?(\/[^\?#]*)?(\?([^#]*))?(#(.*))?$/,
|
||||||
PATH_MATCH = /^([^\?#]*)?(\?([^#]*))?(#(.*))?$/,
|
PATH_MATCH = /^([^\?#]*)?(\?([^#]*))?(#(.*))?$/,
|
||||||
HASH_MATCH = PATH_MATCH,
|
HASH_MATCH = PATH_MATCH,
|
||||||
DEFAULT_PORTS = {'http': 80, 'https': 443, 'ftp': 21};
|
DEFAULT_PORTS = {'http': 80, 'https': 443, 'ftp': 21};
|
||||||
|
|
|
@ -304,9 +304,6 @@ var ixDbEz = (function () {
|
||||||
// skipSync - (optional) If true, skips all data synchronization in ixDbSync for a single transaction.
|
// skipSync - (optional) If true, skips all data synchronization in ixDbSync for a single transaction.
|
||||||
//*********************************************************************************************************
|
//*********************************************************************************************************
|
||||||
function Put_(objectStoreName, value, key, onSuccess, onError, skipSync) {
|
function Put_(objectStoreName, value, key, onSuccess, onError, skipSync) {
|
||||||
console.log(objectStoreName);
|
|
||||||
console.log(value);
|
|
||||||
console.log(key);
|
|
||||||
if (ixDb) {
|
if (ixDb) {
|
||||||
//The database is being created or upgraded, re-run when completed.
|
//The database is being created or upgraded, re-run when completed.
|
||||||
if(ixDbVersionTansaction) {
|
if(ixDbVersionTansaction) {
|
||||||
|
|
|
@ -3,9 +3,9 @@
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"description": "Podcast Manager for Firefox OS",
|
"description": "Podcast Manager for Firefox OS",
|
||||||
"icons": {
|
"icons": {
|
||||||
"128": "/b2gPodcast/blaIcon128.png"
|
"128": "/blaIcon128.png"
|
||||||
},
|
},
|
||||||
"launch_path": "/b2gPodcast/index.html",
|
"launch_path": "/index.html",
|
||||||
"developer": {
|
"developer": {
|
||||||
"name": "Colin Frei",
|
"name": "Colin Frei",
|
||||||
"url": "http://colinfrei.com"
|
"url": "http://colinfrei.com"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Podcast",
|
"name": "Podcast",
|
||||||
"package_path": "http://192.168.100.37/b2gPodcast/package.zip",
|
"package_path": "http://labs.colinfrei.com/package.zip",
|
||||||
"version": "1.0"
|
"version": "1.0"
|
||||||
}
|
}
|
|
@ -17,9 +17,11 @@
|
||||||
<option value="0">none</option>
|
<option value="0">none</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<h3>Description</h3>
|
||||||
<div>
|
<div>
|
||||||
{{ feed.summary }}
|
{{ feed.summary }}
|
||||||
</div>
|
</div>
|
||||||
|
<h3>Episodes</h3>
|
||||||
<div ng-repeat="item in feed.items | orderBy:'date'" class="listItem">
|
<div ng-repeat="item in feed.items | orderBy:'date'" class="listItem">
|
||||||
<div class="playButton" style="width: 50px; float: right;">
|
<div class="playButton" style="width: 50px; float: right;">
|
||||||
<span ng-click="playItem(item.id)"><i ng-class="{hasAudio: item.audio}" class="icon-play"></i></span>
|
<span ng-click="playItem(item.id)"><i ng-class="{hasAudio: item.audio}" class="icon-play"></i></span>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<div id="queueList" pull-to-refresh>
|
<div id="queueList" pull-to-refresh="pull-to-refresh">
|
||||||
<div id="scroller">
|
<div id="scroller">
|
||||||
<div id="pullDown">
|
<div id="pullDown">
|
||||||
<span class="pullDownIcon"></span><span class="pullDownLabel">Pull down to refresh...</span>
|
<span class="pullDownIcon"></span><span class="pullDownLabel">Pull down to refresh...</span>
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
{{ feedItem.date | timeAgo }}
|
{{ feedItem.date | timeAgo }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div ng-show="queue.length < 1" class="pullDownMessage">
|
<div ng-hide="queue.length" class="pullDownMessage">
|
||||||
<i class="icon-arrow-down"></i> Pull down to refresh.
|
<i class="icon-arrow-down"></i> Pull down to refresh.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue