From 128fe2925f8a45eebab0e9ec4d1dd03f80ce7cd3 Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Fri, 12 Jan 2024 10:36:05 +0000 Subject: [PATCH] Disable selected row timing during move_unplayed --- app/models.py | 2 ++ app/musicmuster.py | 7 ++++++- app/playlists.py | 19 ++++++++++++------- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/app/models.py b/app/models.py index 41f19fd..3db0fac 100644 --- a/app/models.py +++ b/app/models.py @@ -643,6 +643,8 @@ class PlaylistRows(Base): number from starting_row to end of playlist """ + log.debug(f"(move_rows_down({playlist_id=}, {starting_row=}, {move_by=}") + session.execute( update(PlaylistRows) .where( diff --git a/app/musicmuster.py b/app/musicmuster.py index ec038a3..4b64f1e 100755 --- a/app/musicmuster.py +++ b/app/musicmuster.py @@ -235,6 +235,7 @@ class Window(QMainWindow, Ui_MainWindow): self.frame_6.hide() else: self.carts_init() + self.disable_selection_timing = False self.enable_play_next_controls() self.clock_counter = 0 self.timer10.start(10) @@ -995,7 +996,11 @@ class Window(QMainWindow, Ui_MainWindow): unplayed_rows = self.active_proxy_model().get_unplayed_rows() if not unplayed_rows: return + # We can get a race condition as selected rows change while + # moving so disable selected rows timing for move + self.disable_selection_timing = True self.move_playlist_rows(unplayed_rows) + self.disable_selection_timing = False def new_from_template(self) -> None: """Create new playlist from template""" @@ -1130,7 +1135,7 @@ class Window(QMainWindow, Ui_MainWindow): volume = self.music.player.audio_get_volume() if volume < Config.VOLUME_VLC_DEFAULT: self.music.set_volume() - log.warn(f"Reset from {volume=}") + log.warning(f"Reset from {volume=}") break sleep(0.1) diff --git a/app/playlists.py b/app/playlists.py index 1f25076..d73582b 100644 --- a/app/playlists.py +++ b/app/playlists.py @@ -292,15 +292,20 @@ class PlaylistTab(QTableView): if len(selected_rows) == 0: self.musicmuster.lblSumPlaytime.setText("") else: - selected_duration = self.source_model.get_rows_duration( - self.get_selected_rows() - ) - if selected_duration > 0: - self.musicmuster.lblSumPlaytime.setText( - f"Selected duration: {ms_to_mmss(selected_duration)}" + if not self.musicmuster.disable_selection_timing: + selected_duration = self.source_model.get_rows_duration( + self.get_selected_rows() ) + if selected_duration > 0: + self.musicmuster.lblSumPlaytime.setText( + f"Selected duration: {ms_to_mmss(selected_duration)}" + ) + else: + self.musicmuster.lblSumPlaytime.setText("") else: - self.musicmuster.lblSumPlaytime.setText("") + log.info( + f"playlists.py.selectionChanged: {self.musicmuster.disable_selection_timing=}" + ) super().selectionChanged(selected, deselected)