Skip to content

Commit

Permalink
QML UI: Stop playback on episode delete
Browse files Browse the repository at this point in the history
  • Loading branch information
thp committed Jan 12, 2012
1 parent 3c54436 commit 17bd235
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 6 deletions.
2 changes: 1 addition & 1 deletion data/ui/qml/Main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ Image {
state: 'podcasts'

function togglePlayback(episode) {
if (episode.qfiletype == 'video') {
if (episode !== undefined && episode.qfiletype == 'video') {
controller.playVideo(episode)
} else {
controller.currentEpisodeChanging()
Expand Down
24 changes: 19 additions & 5 deletions data/ui/qml/MediaPlayer.qml
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,22 @@ Item {
property bool seekLater: false

onPositionChanged: {
episode.qposition = position/1000
if (episode !== undefined) {
episode.qposition = position/1000
}
}

onDurationChanged: {
if (duration > 0) {
if (duration > 0 && episode !== undefined) {
episode.qduration = duration/1000
}
}

onStatusChanged: {
if (episode === undefined) {
return;
}

if (status == 6 && seekLater) {
position = episode.qposition*1000
seekLater = false
Expand All @@ -66,6 +72,10 @@ Item {
}

function setPosition(position) {
if (episode === undefined) {
return;
}

if (!playing) {
playing = true
} else {
Expand Down Expand Up @@ -94,12 +104,16 @@ Item {
controller.releaseEpisode(mediaPlayer.episode)
}

controller.acquireEpisode(episode)

audioPlayer.paused = true
mediaPlayer.episode = episode

audioPlayer.stop()

if (episode === undefined) {
return;
}

controller.acquireEpisode(episode)

audioPlayer.source = episode.qsourceurl
audioPlayer.playing = true
audioPlayer.paused = false
Expand Down
7 changes: 7 additions & 0 deletions src/gpodder/qmlui/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,7 @@ def delete():
self.update_subset_stats()
self.root.mygpo_client.on_delete([episode])
self.root.mygpo_client.flush()
self.root.on_episode_deleted(episode)

self.confirm_action(_('Delete this episode?'), _('Delete'), delete)

Expand Down Expand Up @@ -684,6 +685,12 @@ def load_last_episode(self):
# FIXME: Send last episode to player
#self.select_episode(self.last_episode)

def on_episode_deleted(self, episode):
# If the episode that has been deleted is currently
# being played back (or paused), stop playback now.
if self.main.currentEpisode == episode:
self.main.togglePlayback(None)

def run(self):
return self.app.exec_()

Expand Down

0 comments on commit 17bd235

Please sign in to comment.