diff options
| author | Robert Honz <exislow+github@gmail.com> | 2024-02-05 06:31:18 +0100 |
|---|---|---|
| committer | Robert Honz <exislow+github@gmail.com> | 2024-02-05 06:31:18 +0100 |
| commit | 4ed2a67e4c887c7d25b2888a679e985136f1afd0 (patch) | |
| tree | 6a98e23b9576377c382c21e65772549bfb08a5eb /tidal_dl_ng/gui.py | |
| parent | 957f6b2d4e47831967daab47a025a7583da80e12 (diff) | |
| download | tidal-dl-ng-4ed2a67e4c887c7d25b2888a679e985136f1afd0.tar.gz | |
✨ GUI user lists can be reloaded. Logout is possible.
Diffstat (limited to 'tidal_dl_ng/gui.py')
| -rw-r--r-- | tidal_dl_ng/gui.py | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/tidal_dl_ng/gui.py b/tidal_dl_ng/gui.py index 81f70a4..f7248fd 100644 --- a/tidal_dl_ng/gui.py +++ b/tidal_dl_ng/gui.py @@ -40,8 +40,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): threadpool: QtCore.QThreadPool tray: QtWidgets.QSystemTrayIcon spinner: QtWaitingSpinner - spinner_start: QtCore.Signal = QtCore.Signal(QtWidgets.QWidget) - spinner_stop: QtCore.Signal = QtCore.Signal() + s_spinner_start: QtCore.Signal = QtCore.Signal(QtWidgets.QWidget) + s_spinner_stop: QtCore.Signal = QtCore.Signal() pb_item: QtWidgets.QProgressBar s_item_advance: QtCore.Signal = QtCore.Signal(float) s_item_name: QtCore.Signal = QtCore.Signal(str) @@ -53,6 +53,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): s_statusbar_message: QtCore.Signal = QtCore.Signal(object) s_tr_results_add_top_level_item: QtCore.Signal = QtCore.Signal(object) s_settings_save: QtCore.Signal = QtCore.Signal() + s_pb_reload_status: QtCore.Signal = QtCore.Signal(bool) def __init__(self, tidal: Tidal | None = None): super().__init__() @@ -176,7 +177,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): def tidal_user_lists(self): # Start loading spinner - self.spinner_start.emit(self.tr_lists_user) + self.s_spinner_start.emit(self.tr_lists_user) + self.s_pb_reload_status.emit(False) user_all: [Playlist | UserPlaylist | Mix] = user_media_lists(self.tidal.session) @@ -195,6 +197,11 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): TidalLists.MIXES.value, QtCore.Qt.MatchExactly, 0 )[0] + # Remove all children if present + for twi in [twi_playlists, twi_mixes, twi_favorites]: + for i in reversed(range(twi.childCount())): + twi.removeChild(twi.child(i)) + for item in user_lists: if isinstance(item, UserPlaylist): twi_child = QtWidgets.QTreeWidgetItem(twi_playlists) @@ -214,7 +221,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): twi_child.setData(3, QtCore.Qt.ItemDataRole.UserRole, item) # Stop load spinner - self.spinner_stop.emit() + self.s_spinner_stop.emit() + self.s_pb_reload_status.emit(True) def _init_tree_lists(self, tree: QtWidgets.QTreeWidget): # Adjust Tree. @@ -405,8 +413,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.cb_quality_audio.currentIndexChanged.connect(self.on_quality_set_audio) self.cb_quality_video.currentIndexChanged.connect(self.on_quality_set_video) self.tr_lists_user.itemClicked.connect(self.on_list_items_show) - self.spinner_start[QtWidgets.QWidget].connect(self.on_spinner_start) - self.spinner_stop.connect(self.on_spinner_stop) + self.s_spinner_start[QtWidgets.QWidget].connect(self.on_spinner_start) + self.s_spinner_stop.connect(self.on_spinner_stop) self.s_item_advance.connect(self.on_progress_item) self.s_item_name.connect(self.on_progress_item_name) self.s_list_name.connect(self.on_progress_list_name) @@ -416,15 +424,24 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.s_statusbar_message.connect(self.on_statusbar_message) self.s_tr_results_add_top_level_item.connect(self.on_tr_results_add_top_level_item) self.s_settings_save.connect(self.on_settings_save) + self.pb_reload_user_lists.clicked.connect(lambda x: self.thread_it(self.tidal_user_lists)) + self.s_pb_reload_status.connect(self.button_reload_status) # Menubar self.a_exit.triggered.connect(sys.exit) self.a_version.triggered.connect(self.on_version) self.a_preferences.triggered.connect(self.on_preferences) + self.a_logout.triggered.connect(self.on_logout) # Results self.tr_results.itemExpanded.connect(self.on_tr_results_expanded) + def on_logout(self): + result: bool = self.tidal.logout() + + if result: + sys.exit(0) + def on_progress_list(self, value: float): self.pb_list.setValue(int(math.ceil(value))) @@ -536,6 +553,14 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.list_items_show_result(media_list=media_list, parent=child) + def button_reload_status(self, status: bool): + button_text: str = "Reloading..." + if status: + button_text = "Reload" + + self.pb_reload_user_lists.setEnabled(status) + self.pb_reload_user_lists.setText(button_text) + # TODO: Comment with Google Docstrings. def gui_activate(tidal: Tidal | None = None): |
