Use signals to updates note text after editing
Hypothesis: this stops some kind of database race condition or similar.
This commit is contained in:
parent
8dd13a2ba2
commit
ae1835a421
@ -258,6 +258,7 @@ class MusicMusterSignals(QObject):
|
||||
"""
|
||||
|
||||
save_playlist_signal = pyqtSignal()
|
||||
update_row_note_signal = pyqtSignal(int)
|
||||
|
||||
|
||||
class Window(QMainWindow, Ui_MainWindow):
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user