diff --git a/app/musicmuster.py b/app/musicmuster.py index e166470..6772b44 100755 --- a/app/musicmuster.py +++ b/app/musicmuster.py @@ -258,6 +258,7 @@ class MusicMusterSignals(QObject): """ save_playlist_signal = pyqtSignal() + update_row_note_signal = pyqtSignal(int) class Window(QMainWindow, Ui_MainWindow): diff --git a/app/playlists.py b/app/playlists.py index b59a961..adac8db 100644 --- a/app/playlists.py +++ b/app/playlists.py @@ -197,6 +197,7 @@ class PlaylistTab(QTableWidget): # Connect signals self.horizontalHeader().sectionResized.connect(self._column_resize) self.signals.save_playlist_signal.connect(self._deferred_save) + self.signals.update_row_note_signal.connect(self._update_row_note) # Load playlist rows self.populate_display(session, self.playlist_id) @@ -333,24 +334,8 @@ class PlaylistTab(QTableWidget): if self.edit_cell_type == ROW_NOTES: plr_item.note = new_text - # Set/clear row start time accordingly - start_time = self._get_note_text_time(new_text) - if start_time: - self._set_row_start_time(row, start_time) - else: - self._set_row_start_time(row, None) - self._set_row_note_colour(session, row, new_text, - section_header=not bool(track_id)) - # Update note display - # If this is a header row, also calcuate track times in case - # note added a start time - if track_id: - self._set_row_note_colour(session, row, new_text, - section_header=False) - else: - self._set_row_note_colour(session, row, new_text, - section_header=True) - self._update_start_end_times() + session.flush() + self.signals.update_row_note_signal.emit(row) else: track = None if track_id: @@ -2091,6 +2076,26 @@ class PlaylistTab(QTableWidget): if not file_is_readable(track.path): self._set_row_colour_unreadable(row) + def _update_row_note(self, row_number: int) -> None: + """ + Called by signal when row note is updated + """ + + # Set/clear row start time accordingly + note_text = self._get_row_note(row_number) + start_time = self._get_note_text_time(note_text) + if start_time: + self._set_row_start_time(row_number, start_time) + else: + self._set_row_start_time(row_number, None) + + is_section_header = not bool(self._get_row_track_id(row_number)) + with Session() as session: + self._set_row_note_colour(session, row_number, note_text, + section_header=is_section_header) + + self._update_start_end_times() + def _update_section_headers(self, session: scoped_session) -> None: """ Update section headers with run time of section