diff --git a/app/images/loop-single.svg b/app/images/loop-single.svg
new file mode 100644
index 0000000..094b972
--- /dev/null
+++ b/app/images/loop-single.svg
@@ -0,0 +1,3 @@
+
diff --git a/app/images/loop_alt3_gd_12x9.png b/app/images/loop_alt3_gd_12x9.png
deleted file mode 100644
index 10842f9..0000000
Binary files a/app/images/loop_alt3_gd_12x9.png and /dev/null differ
diff --git a/app/images/loop_alt3_w_12x9.png b/app/images/loop_alt3_w_12x9.png
deleted file mode 100644
index f2bd9bc..0000000
Binary files a/app/images/loop_alt3_w_12x9.png and /dev/null differ
diff --git a/app/images/sprite/jamstash-sprite.svg b/app/images/sprite/jamstash-sprite.svg
new file mode 100644
index 0000000..6d61a3b
--- /dev/null
+++ b/app/images/sprite/jamstash-sprite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/index.html b/app/index.html
index e774caa..052a1d4 100755
--- a/app/index.html
+++ b/app/index.html
@@ -18,6 +18,10 @@
+
+
+
+
@@ -112,6 +116,7 @@
+
diff --git a/app/player/player-directive_test.js b/app/player/player-directive_test.js
index 60ddddc..ea48650 100644
--- a/app/player/player-directive_test.js
+++ b/app/player/player-directive_test.js
@@ -32,7 +32,6 @@ describe("jplayer directive", function() {
return $delegate;
});
$provide.value('globals', mockGlobals);
- $provide.constant('jamstashVersion', '1.0.0');
});
spyOn($.fn, "jPlayer").and.callThrough();
diff --git a/app/player/player-service.js b/app/player/player-service.js
index ce12e61..441cfd3 100644
--- a/app/player/player-service.js
+++ b/app/player/player-service.js
@@ -3,9 +3,9 @@
*
* Manages the player and playing queue. Use it to play a song, go to next track or add songs to the queue.
*/
-angular.module('jamstash.player.service', ['jamstash.settings.service', 'angular-underscore/utils'])
+angular.module('jamstash.player.service', ['angular-underscore/utils'])
-.factory('player', ['globals', function (globals) {
+.factory('player', [function () {
'use strict';
var playerVolume = 1.0;
@@ -18,6 +18,10 @@ angular.module('jamstash.player.service', ['jamstash.settings.service', 'angular
pauseSong: false,
restartSong: false,
loadSong: false,
+ settings: {
+ repeat: "none",
+ repeatValues: ["queue", "song", "none"]
+ },
play: function (song) {
// Find the song's index in the queue, if it's in there
@@ -56,11 +60,11 @@ angular.module('jamstash.player.service', ['jamstash.settings.service', 'angular
// Called from the player directive at the end of the current song
songEnded: function () {
- if (globals.settings.Repeat) {
+ if (player.settings.repeat === "song") {
// repeat current track
player.restart();
} else if (player.isLastSongPlaying() === true) {
- if (globals.settings.LoopQueue) {
+ if (player.settings.repeat === "queue") {
// Loop to first track in queue
player.playFirstSong();
}
diff --git a/app/player/player-service_test.js b/app/player/player-service_test.js
index 9137211..65fc1e8 100644
--- a/app/player/player-service_test.js
+++ b/app/player/player-service_test.js
@@ -1,21 +1,13 @@
describe("Player service -", function() {
'use strict';
- var player, mockGlobals, firstSong, secondSong, thirdSong, newSong;
+ var player, firstSong, secondSong, thirdSong, newSong;
beforeEach(function() {
- // We redefine globals because in some tests we need to alter the settings
- mockGlobals = {
- settings: {
- Repeat: false,
- LoopQueue: false
- }
- };
- module('jamstash.player.service', function ($provide) {
- $provide.value('globals', mockGlobals);
- });
+ module('jamstash.player.service');
inject(function (_player_) {
player = _player_;
});
+ player.settings.repeat = "none";
});
describe("Given that I have 3 songs in my playing queue,", function() {
@@ -206,9 +198,9 @@ describe("Player service -", function() {
expect(player.nextTrack).toHaveBeenCalled();
});
- it("and that the 'Repeat song' setting is true, when the current song ends, it restarts it", function() {
+ it("and that the 'Repeat' setting is set to 'song', when the current song ends, it restarts it", function() {
spyOn(player, "restart");
- mockGlobals.settings.Repeat = true;
+ player.settings.repeat = "song";
player.songEnded();
@@ -220,9 +212,9 @@ describe("Player service -", function() {
player._playingIndex = 2;
});
- it("if the 'Repeat queue' setting is true, it plays the first song of the queue", function() {
+ it("if the 'Repeat' setting is set to 'queue', it plays the first song of the queue", function() {
spyOn(player, "playFirstSong");
- mockGlobals.settings.LoopQueue = true;
+ player.settings.repeat = "queue";
player.songEnded();
diff --git a/app/player/player.css b/app/player/player.css
new file mode 100644
index 0000000..9c68e19
--- /dev/null
+++ b/app/player/player.css
@@ -0,0 +1,9 @@
+.icon {
+ height: 12px;
+ width: 12px;
+ display: block;
+}
+.icon-wrap {
+ margin: 4px 2px;
+ float: left;
+}
diff --git a/app/player/player.html b/app/player/player.html
index e9f4231..2318e5a 100644
--- a/app/player/player.html
+++ b/app/player/player.html
@@ -17,7 +17,7 @@