Skip to content

Commit ef21185

Browse files
committed
#19 progress bar is clickable
1 parent d3d34bc commit ef21185

File tree

5 files changed

+41
-10
lines changed

5 files changed

+41
-10
lines changed

addon/data/html/FrameView.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44
<head>
55
<meta charset="UTF-8" />
66
<link rel="stylesheet" type="text/css" media="all" href="../css/FrameStyle.css" />
7-
<script src="../js/FrameController.js"></script>
87
<title>Local Music Player</title>
98
</head>
109

1110
<body>
1211
<progress id="frameProgressBar" class="progressBarWidth" value="0" max="1"></progress>
1312
<label id="frameCurrentTrack"></label>
13+
14+
<script src="../js/FrameController.js"></script>
1415
</body>
1516

1617
</html>

addon/data/js/FrameController.js

+18-4
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,26 @@ window.addEventListener("message", function (event) {
66

77
document.getElementById('frameCurrentTrack').textContent = payload.value;
88

9-
} else if (payload.operation === 'updateProgressBar'){
10-
9+
} else if (payload.operation === 'updateProgressBar') {
10+
1111
document.getElementById('frameProgressBar').value = payload.value;
12-
}else {
13-
12+
} else {
13+
1414
document.getElementById('frameCurrentTrack').textContent = '';
1515
}
1616

1717
}, false);
18+
19+
document.getElementById('frameProgressBar').addEventListener('click', function (e) {
20+
21+
var x = e.pageX - this.offsetLeft,
22+
y = e.pageY - this.offsetTop,
23+
clickedValue = x * this.max / this.offsetWidth;
24+
25+
var payload = JSON.stringify({
26+
operation: 'updateAudioBar',
27+
value: clickedValue
28+
});
29+
30+
window.parent.postMessage(payload, "*");
31+
});

addon/data/js/PanelController.js

+8-3
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ var LocalMusicPlayer = {
3939
};
4040
document.getElementById("player").ontimeupdate = function () {
4141
self.port.emit(
42-
'updateProgressBar',
43-
document.getElementById("player").currentTime /
44-
document.getElementById("player").duration);
42+
'updateProgressBar',
43+
document.getElementById("player").currentTime /
44+
document.getElementById("player").duration);
4545
};
4646
document.getElementById('stopTrack').addEventListener('click', LocalMusicPlayer.stop);
4747
document.getElementById('prevTrack').addEventListener('click', LocalMusicPlayer.prevTrack);
@@ -445,6 +445,11 @@ self.port.on('playTrack', function () {
445445
}
446446
});
447447

448+
self.port.on('updateAudioBar', function (value) {
449+
450+
document.getElementById('player').currentTime = value * document.getElementById("player").duration;
451+
});
452+
448453
self.port.on('pauseTrack', function () {
449454
LocalMusicPlayer.pause();
450455
});

addon/lib/Panel.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,13 @@ exports.init = function () {
8181
Toolbar.getFrame().postMessage(payload, Toolbar.getFrame().url);
8282
Toolbar.setPlaying(true);
8383
});
84-
84+
8585
panel.port.on("updateProgressBar", function (value) {
8686
var payload = JSON.stringify({
8787
operation: 'updateProgressBar',
8888
value: value
8989
});
90-
Toolbar.getFrame().postMessage(payload, Toolbar.getFrame().url)
90+
Toolbar.getFrame().postMessage(payload, Toolbar.getFrame().url);
9191
});
9292

9393
panel.port.on("pause", function () {

addon/lib/Toolbar.js

+11
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ exports.init = function () {
6666
url: Data.get("html/FrameView.html")
6767
});
6868

69+
frameObject.on("message", updateAudioBar);
70+
6971
repeatAll = ActionButton({
7072
id: "localmusicplayer-repeatAll",
7173
label: Localisation.getString("repeatAll_title"),
@@ -143,3 +145,12 @@ exports.setRandom = function (value) {
143145
random.badge = "";
144146
}
145147
};
148+
149+
function updateAudioBar(e) {
150+
151+
var payload = JSON.parse(e.data);
152+
153+
if (payload.operation === "updateAudioBar") {
154+
Panel.get().port.emit('updateAudioBar', payload.value);
155+
}
156+
}

0 commit comments

Comments
 (0)