Handle next track not found consistently
Highlight in red, don't set as next track. Fixes #51
This commit is contained in:
parent
87fb74b14f
commit
c0752407b9
@ -415,7 +415,10 @@ class Window(QMainWindow, Ui_MainWindow):
|
|||||||
self.music.play(self.current_track.path)
|
self.music.play(self.current_track.path)
|
||||||
|
|
||||||
# Update metadata
|
# Update metadata
|
||||||
# TODO is this valid if next track is on different playlist?
|
# Get next track for this playlist. May be None if there is
|
||||||
|
# no automatic next track, and may later be overriden by
|
||||||
|
# user selecting a different track on this or another
|
||||||
|
# playlist.
|
||||||
next_track_id = self.current_track_playlist_tab.play_started()
|
next_track_id = self.current_track_playlist_tab.play_started()
|
||||||
|
|
||||||
if next_track_id is not None:
|
if next_track_id is not None:
|
||||||
@ -423,7 +426,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
|||||||
self.next_track_playlist_tab = self.current_track_playlist_tab
|
self.next_track_playlist_tab = self.current_track_playlist_tab
|
||||||
# Check we can read it
|
# Check we can read it
|
||||||
if not self.file_is_readable(self.next_track.path):
|
if not self.file_is_readable(self.next_track.path):
|
||||||
self.show_warning(
|
helpers.show_warning(
|
||||||
"Can't read next track",
|
"Can't read next track",
|
||||||
self.next_track.path)
|
self.next_track.path)
|
||||||
else:
|
else:
|
||||||
@ -501,11 +504,6 @@ class Window(QMainWindow, Ui_MainWindow):
|
|||||||
|
|
||||||
self.visible_playlist_tab().select_unplayed_tracks()
|
self.visible_playlist_tab().select_unplayed_tracks()
|
||||||
|
|
||||||
def show_warning(self, title, msg):
|
|
||||||
"Display a warning to user"
|
|
||||||
|
|
||||||
QMessageBox.warning(None, title, msg, buttons=QMessageBox.Cancel)
|
|
||||||
|
|
||||||
def song_info_search(self):
|
def song_info_search(self):
|
||||||
"""
|
"""
|
||||||
Open browser tabs for Wikipedia, searching for
|
Open browser tabs for Wikipedia, searching for
|
||||||
|
|||||||
@ -357,8 +357,10 @@ class PlaylistTab(QTableWidget):
|
|||||||
# Scroll to put current track in centre
|
# Scroll to put current track in centre
|
||||||
scroll_to = self.item(current_row, self.COL_INDEX)
|
scroll_to = self.item(current_row, self.COL_INDEX)
|
||||||
self.scrollToItem(scroll_to, QAbstractItemView.PositionAtCenter)
|
self.scrollToItem(scroll_to, QAbstractItemView.PositionAtCenter)
|
||||||
next_track_id = self._mark_next_track()
|
|
||||||
self._repaint()
|
# Get next track
|
||||||
|
next_track_row = self._find_next_track_row()
|
||||||
|
next_track_id = self._set_next(next_track_row)
|
||||||
return next_track_id
|
return next_track_id
|
||||||
|
|
||||||
def play_stopped(self):
|
def play_stopped(self):
|
||||||
@ -648,13 +650,13 @@ class PlaylistTab(QTableWidget):
|
|||||||
and pos.y() >= rect.center().y() # noqa W503
|
and pos.y() >= rect.center().y() # noqa W503
|
||||||
)
|
)
|
||||||
|
|
||||||
def _mark_next_track(self):
|
def _find_next_track_row(self):
|
||||||
"""
|
"""
|
||||||
Find next track to play.
|
Find next track to play.
|
||||||
|
|
||||||
If not found, return None.
|
If not found, return None.
|
||||||
|
|
||||||
If found, mark row with metadata and return track_id.
|
If found, return row number.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
found_next_track = False
|
found_next_track = False
|
||||||
@ -667,16 +669,14 @@ class PlaylistTab(QTableWidget):
|
|||||||
for row in range(start, self.rowCount()):
|
for row in range(start, self.rowCount()):
|
||||||
if row in notes_rows:
|
if row in notes_rows:
|
||||||
continue
|
continue
|
||||||
self._meta_set_next(row)
|
|
||||||
found_next_track = True
|
found_next_track = True
|
||||||
break
|
break
|
||||||
|
|
||||||
if not found_next_track:
|
if found_next_track:
|
||||||
|
return row
|
||||||
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
track_id = self._get_row_id(row)
|
|
||||||
return track_id
|
|
||||||
|
|
||||||
def _meta_clear(self, row):
|
def _meta_clear(self, row):
|
||||||
"Clear metadata for row"
|
"Clear metadata for row"
|
||||||
|
|
||||||
@ -813,11 +813,13 @@ class PlaylistTab(QTableWidget):
|
|||||||
track_id = self._get_row_id(row)
|
track_id = self._get_row_id(row)
|
||||||
if track_id:
|
if track_id:
|
||||||
if self._track_path_is_readable(track_id):
|
if self._track_path_is_readable(track_id):
|
||||||
self._meta_set_next(self.currentRow())
|
self._meta_set_next(row)
|
||||||
self.master_process.set_next_track(track_id)
|
self.master_process.set_next_track(track_id)
|
||||||
else:
|
else:
|
||||||
self._meta_set_unreadable(self.currentRow())
|
self._meta_set_unreadable(row)
|
||||||
|
track_id = None
|
||||||
self._repaint()
|
self._repaint()
|
||||||
|
return track_id
|
||||||
|
|
||||||
def _repaint(self, clear_selection=True):
|
def _repaint(self, clear_selection=True):
|
||||||
"Set row colours, fonts, etc"
|
"Set row colours, fonts, etc"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user