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)
|
||||
|
||||
# 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()
|
||||
|
||||
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
|
||||
# Check we can read it
|
||||
if not self.file_is_readable(self.next_track.path):
|
||||
self.show_warning(
|
||||
helpers.show_warning(
|
||||
"Can't read next track",
|
||||
self.next_track.path)
|
||||
else:
|
||||
@ -501,11 +504,6 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
|
||||
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):
|
||||
"""
|
||||
Open browser tabs for Wikipedia, searching for
|
||||
|
||||
@ -357,8 +357,10 @@ class PlaylistTab(QTableWidget):
|
||||
# Scroll to put current track in centre
|
||||
scroll_to = self.item(current_row, self.COL_INDEX)
|
||||
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
|
||||
|
||||
def play_stopped(self):
|
||||
@ -648,13 +650,13 @@ class PlaylistTab(QTableWidget):
|
||||
and pos.y() >= rect.center().y() # noqa W503
|
||||
)
|
||||
|
||||
def _mark_next_track(self):
|
||||
def _find_next_track_row(self):
|
||||
"""
|
||||
Find next track to play.
|
||||
|
||||
If not found, return None.
|
||||
|
||||
If found, mark row with metadata and return track_id.
|
||||
If found, return row number.
|
||||
"""
|
||||
|
||||
found_next_track = False
|
||||
@ -667,16 +669,14 @@ class PlaylistTab(QTableWidget):
|
||||
for row in range(start, self.rowCount()):
|
||||
if row in notes_rows:
|
||||
continue
|
||||
self._meta_set_next(row)
|
||||
found_next_track = True
|
||||
break
|
||||
|
||||
if not found_next_track:
|
||||
if found_next_track:
|
||||
return row
|
||||
else:
|
||||
return None
|
||||
|
||||
track_id = self._get_row_id(row)
|
||||
return track_id
|
||||
|
||||
def _meta_clear(self, row):
|
||||
"Clear metadata for row"
|
||||
|
||||
@ -813,11 +813,13 @@ class PlaylistTab(QTableWidget):
|
||||
track_id = self._get_row_id(row)
|
||||
if 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)
|
||||
else:
|
||||
self._meta_set_unreadable(self.currentRow())
|
||||
self._meta_set_unreadable(row)
|
||||
track_id = None
|
||||
self._repaint()
|
||||
return track_id
|
||||
|
||||
def _repaint(self, clear_selection=True):
|
||||
"Set row colours, fonts, etc"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user