Select next/prev row working
This commit is contained in:
parent
cb5eedd8c8
commit
930efbbe6e
@ -180,18 +180,18 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
# self.actionMoveSelected.triggered.connect(self.move_selected)
|
||||
self.actionNewPlaylist.triggered.connect(self.create_playlist)
|
||||
self.actionOpenPlaylist.triggered.connect(self.open_playlist)
|
||||
# ***kae
|
||||
self.actionPlay_next.triggered.connect(self.play_next)
|
||||
# self.actionSearch.triggered.connect(self.search_playlist)
|
||||
# self.actionSearch_database.triggered.connect(self.search_database)
|
||||
# self.actionSelect_next_track.triggered.connect(self.select_next_row)
|
||||
self.actionSelect_next_track.triggered.connect(self.select_next_row)
|
||||
# self.actionSelect_played_tracks.triggered.connect(self.select_played)
|
||||
# self.actionSelect_previous_track.triggered.connect(
|
||||
# self.select_previous_row)
|
||||
self.actionSelect_previous_track.triggered.connect(
|
||||
self.select_previous_row)
|
||||
# self.actionSelect_unplayed_tracks.triggered.connect(
|
||||
# self.select_unplayed)
|
||||
self.actionSetNext.triggered.connect(
|
||||
lambda: self.tabPlaylist.currentWidget().set_selected_as_next())
|
||||
# ***kae
|
||||
# self.actionSkip_next.triggered.connect(self.play_next)
|
||||
self.actionStop.triggered.connect(self.stop)
|
||||
# self.btnDrop3db.clicked.connect(self.drop3db)
|
||||
@ -662,21 +662,21 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
if playlist:
|
||||
playlist.mark_open(session)
|
||||
self.create_playlist_tab(session, playlist)
|
||||
#
|
||||
# def select_next_row(self) -> None:
|
||||
# """Select next or first row in playlist"""
|
||||
#
|
||||
# self.visible_playlist_tab().select_next_row()
|
||||
|
||||
def select_next_row(self) -> None:
|
||||
"""Select next or first row in playlist"""
|
||||
|
||||
self.visible_playlist_tab().select_next_row()
|
||||
#
|
||||
# def select_played(self) -> None:
|
||||
# """Select all played tracks in playlist"""
|
||||
#
|
||||
# self.visible_playlist_tab().select_played_tracks()
|
||||
#
|
||||
# def select_previous_row(self) -> None:
|
||||
# """Select previous or first row in playlist"""
|
||||
#
|
||||
# self.visible_playlist_tab().select_previous_row()
|
||||
def select_previous_row(self) -> None:
|
||||
"""Select previous or first row in playlist"""
|
||||
|
||||
self.visible_playlist_tab().select_previous_row()
|
||||
#
|
||||
# def select_unplayed(self) -> None:
|
||||
# """Select all unplayed tracks in playlist"""
|
||||
|
||||
148
app/playlists.py
148
app/playlists.py
@ -794,41 +794,43 @@ class PlaylistTab(QTableWidget):
|
||||
# row, FIXUP.COL_USERDATA).data(self.CONTENT_OBJECT)
|
||||
# playlist.add_track(session, track_id, row)
|
||||
# session.commit()
|
||||
#
|
||||
# def select_next_row(self) -> None:
|
||||
# """
|
||||
# Select next or first row. Don't select notes. Wrap at last row.
|
||||
# """
|
||||
#
|
||||
# row: int
|
||||
# selected_rows: List[int]
|
||||
#
|
||||
# selected_rows = [row for row in
|
||||
# set([a.row() for a in self.selectedItems()])]
|
||||
# # we will only handle zero or one selected rows
|
||||
# if len(selected_rows) > 1:
|
||||
# return
|
||||
# # select first row if none selected
|
||||
# if len(selected_rows) == 0:
|
||||
# row = 0
|
||||
# else:
|
||||
# row = selected_rows[0] + 1
|
||||
# if row >= self.rowCount():
|
||||
# row = 0
|
||||
#
|
||||
# # Don't select notes
|
||||
# wrapped: bool = False
|
||||
# while row in self._get_notes_rows():
|
||||
# row += 1
|
||||
# if row >= self.rowCount():
|
||||
# if wrapped:
|
||||
# # we're already wrapped once, so there are no
|
||||
# # non-notes
|
||||
# return
|
||||
# row = 0
|
||||
# wrapped = True
|
||||
#
|
||||
# self.selectRow(row)
|
||||
|
||||
def select_next_row(self) -> None:
|
||||
"""
|
||||
Select next or first row. Don't select section headers.
|
||||
Wrap at last row.
|
||||
"""
|
||||
|
||||
row: int
|
||||
selected_rows: List[int]
|
||||
|
||||
selected_rows = self._selected_rows()
|
||||
# we will only handle zero or one selected rows
|
||||
if len(selected_rows) > 1:
|
||||
return
|
||||
# select first row if none selected
|
||||
if len(selected_rows) == 0:
|
||||
row = 0
|
||||
else:
|
||||
row = selected_rows[0] + 1
|
||||
if row >= self.rowCount():
|
||||
row = 0
|
||||
|
||||
# Don't select section headers
|
||||
wrapped: bool = False
|
||||
track_id = self._get_row_track_id(row)
|
||||
while not track_id:
|
||||
row += 1
|
||||
if row >= self.rowCount():
|
||||
if wrapped:
|
||||
# we're already wrapped once, so there are no
|
||||
# non-notes
|
||||
return
|
||||
row = 0
|
||||
wrapped = True
|
||||
track_id = self._get_row_track_id(row)
|
||||
|
||||
self.selectRow(row)
|
||||
#
|
||||
# def select_played_tracks(self) -> None:
|
||||
# """Select all played tracks in playlist"""
|
||||
@ -839,42 +841,44 @@ class PlaylistTab(QTableWidget):
|
||||
# finally:
|
||||
# self.selecting_in_progress = False
|
||||
# self._select_event()
|
||||
#
|
||||
# def select_previous_row(self) -> None:
|
||||
# """
|
||||
# Select previous or last track. Don't select notes. Wrap at first row.
|
||||
# """
|
||||
#
|
||||
# row: int
|
||||
# selected_rows: List[int]
|
||||
#
|
||||
# selected_rows = [row for row in
|
||||
# set([a.row() for a in self.selectedItems()])]
|
||||
# # we will only handle zero or one selected rows
|
||||
# if len(selected_rows) > 1:
|
||||
# return
|
||||
# # select last row if none selected
|
||||
# last_row: int = self.rowCount() - 1
|
||||
# if len(selected_rows) == 0:
|
||||
# row = last_row
|
||||
# else:
|
||||
# row = selected_rows[0] - 1
|
||||
# if row < 0:
|
||||
# row = last_row
|
||||
#
|
||||
# # Don't select notes
|
||||
# wrapped: bool = False
|
||||
# while row in self._get_notes_rows():
|
||||
# row -= 1
|
||||
# if row < 0:
|
||||
# if wrapped:
|
||||
# # we're already wrapped once, so there are no
|
||||
# # non-notes
|
||||
# return
|
||||
# row = last_row
|
||||
# wrapped = True
|
||||
#
|
||||
# self.selectRow(row)
|
||||
|
||||
def select_previous_row(self) -> None:
|
||||
"""
|
||||
Select previous or last track. Don't select section headers.
|
||||
Wrap at first row.
|
||||
"""
|
||||
|
||||
row: int
|
||||
selected_rows: List[int]
|
||||
|
||||
selected_rows = self._selected_rows()
|
||||
# we will only handle zero or one selected rows
|
||||
if len(selected_rows) > 1:
|
||||
return
|
||||
# select last row if none selected
|
||||
last_row = self.rowCount() - 1
|
||||
if len(selected_rows) == 0:
|
||||
row = last_row
|
||||
else:
|
||||
row = selected_rows[0] - 1
|
||||
if row < 0:
|
||||
row = last_row
|
||||
|
||||
# Don't select section headers
|
||||
wrapped: bool = False
|
||||
track_id = self._get_row_track_id(row)
|
||||
while not track_id:
|
||||
row -= 1
|
||||
if row < 0:
|
||||
if wrapped:
|
||||
# we're already wrapped once, so there are no
|
||||
# non-notes
|
||||
return
|
||||
row = last_row
|
||||
wrapped = True
|
||||
track_id = self._get_row_track_id(row)
|
||||
|
||||
self.selectRow(row)
|
||||
#
|
||||
# def select_unplayed_tracks(self) -> None:
|
||||
# """Select all unplayed tracks in playlist"""
|
||||
@ -1750,7 +1754,7 @@ class PlaylistTab(QTableWidget):
|
||||
else:
|
||||
self.musicmuster.lblSumPlaytime.setText("")
|
||||
|
||||
def _selected_rows(self) -> Optional[List[int]]:
|
||||
def _selected_rows(self) -> List[int]:
|
||||
"""Return a list of selected row numbers"""
|
||||
|
||||
# Use a set to deduplicate result (a selected row will have all
|
||||
|
||||
Loading…
Reference in New Issue
Block a user