Sleep timer

This commit is contained in:
Thomas Perl 2014-12-17 20:54:14 +01:00
parent e146239305
commit e271291f92
3 changed files with 61 additions and 0 deletions

View file

@ -116,6 +116,9 @@ MediaPlayer {
} else {
sendPositionToCore(lastPosition);
savePlaybackAfterStopTimer.restart();
if (sleepTimerRunning) {
stopSleepTimer();
}
}
}
@ -123,6 +126,37 @@ MediaPlayer {
py.call('main.save_playback_state', []);
}
property var durationChoices: ([5, 15, 30, 45, 60])
function startSleepTimer(seconds) {
sleepTimer.running = false;
sleepTimer.secondsRemaining = seconds;
sleepTimer.running = true;
}
function stopSleepTimer() {
sleepTimer.running = false;
sleepTimer.secondsRemaining = 0;
}
property bool sleepTimerRunning: sleepTimer.running
property int sleepTimerRemaining: sleepTimer.secondsRemaining
property var sleepTimer: Timer {
property int secondsRemaining: 0
interval: 1000
repeat: true
onTriggered: {
secondsRemaining -= 1;
if (secondsRemaining <= 0) {
player.pause();
running = false;
}
}
}
property var savePlaybackPositionTimer: Timer {
// Save position every minute during playback
interval: 60 * 1000

View file

@ -141,6 +141,32 @@ SlidePage {
onClicked: player.seekAndSync(player.position + 60 * 1000);
}
IconMenuItem {
text: player.sleepTimerRunning ? Util.formatDuration(player.sleepTimerRemaining) : 'Sleep'
alwaysShowText: player.sleepTimerRunning
color: Constants.colors.playback
icon: Icons.sleep
onClicked: {
if (player.sleepTimerRunning) {
player.stopSleepTimer();
} else {
var options = [];
var durations_minutes = player.durationChoices;
for (var i=0; i<durations_minutes.length; i++) {
(function (minutes) {
options.push({
label: '' + minutes + ' minutes',
callback: function () {
player.startSleepTimer(60 * minutes);
}
});
})(durations_minutes[i]);
}
pgst.showSelection(options, 'Sleep timer', undefined, true);
}
}
}
IconMenuItem {
text: 'Chapters'
color: Constants.colors.playback

View file

@ -23,3 +23,4 @@ var vellipsis = '\u22ee';
var paperclip = '\ue08a';
var tag_fill = '\ue02b';
var headphones = '\ue061';
var sleep = '\u263e';