diff options
| author | Robert Honz <exislow+github@gmail.com> | 2024-04-01 12:16:06 +0200 |
|---|---|---|
| committer | Robert Honz <exislow+github@gmail.com> | 2024-04-01 12:17:46 +0200 |
| commit | 7df41edc0166feef022fe0217824ca445341ddc6 (patch) | |
| tree | d9612f0ee64eee6e1a3252669370960c4d8da174 /tidal_dl_ng/gui.py | |
| parent | 7e185bc0a2b80e228c83b8306fb96a362403c947 (diff) | |
| download | tidal-dl-ng-7df41edc0166feef022fe0217824ca445341ddc6.tar.gz | |
✨ Can remove all queue items and finished queue items.
Diffstat (limited to 'tidal_dl_ng/gui.py')
| -rw-r--r-- | tidal_dl_ng/gui.py | 55 |
1 files changed, 40 insertions, 15 deletions
diff --git a/tidal_dl_ng/gui.py b/tidal_dl_ng/gui.py index e7aba01..1aca058 100644 --- a/tidal_dl_ng/gui.py +++ b/tidal_dl_ng/gui.py @@ -9,6 +9,7 @@ from tidal_dl_ng.dialog import DialogLogin, DialogPreferences, DialogVersion from tidal_dl_ng.helper.gui import ( get_results_media_item, get_user_list_media_item, + set_queue_download_media, set_results_media, set_user_list_media, ) @@ -40,7 +41,7 @@ from tidalapi.artist import Artist from tidalapi.session import SearchTypes from tidal_dl_ng.config import Settings, Tidal -from tidal_dl_ng.constants import QualityVideo, TidalLists +from tidal_dl_ng.constants import QualityVideo, QueueDownloadStatus, TidalLists from tidal_dl_ng.download import Download from tidal_dl_ng.logger import XStream, logger_gui from tidal_dl_ng.model.gui_data import ProgressBars, ResultItem, StatusbarMessage @@ -91,7 +92,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self._init_tree_results(self.tr_results) self._init_tree_lists(self.tr_lists_user) - self._init_table_queue(self.ta_queue_dl) + self._init_table_queue(self.tr_queue_download) self._init_info() self._init_progressbar() self._populate_quality(self.cb_quality_audio, Quality) @@ -218,13 +219,13 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): def on_populate_tree_lists(self, user_lists: [Playlist | UserPlaylist | Mix]): twi_playlists: QtWidgets.QTreeWidgetItem = self.tr_lists_user.findItems( - TidalLists.PLAYLISTS.value, QtCore.Qt.MatchExactly, 0 + TidalLists.Playlists.value, QtCore.Qt.MatchExactly, 0 )[0] twi_mixes: QtWidgets.QTreeWidgetItem = self.tr_lists_user.findItems( - TidalLists.FAVORITES.value, QtCore.Qt.MatchExactly, 0 + TidalLists.Favorites.value, QtCore.Qt.MatchExactly, 0 )[0] twi_favorites: QtWidgets.QTreeWidgetItem = self.tr_lists_user.findItems( - TidalLists.MIXES.value, QtCore.Qt.MatchExactly, 0 + TidalLists.Mixes.value, QtCore.Qt.MatchExactly, 0 )[0] # Remove all children if present @@ -504,6 +505,9 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): def _init_signals(self): self.pb_download.clicked.connect(lambda: self.thread_it(self.on_download_results)) self.pb_download_list.clicked.connect(lambda: self.thread_it(self.on_download_list_media)) + self.pb_reload_user_lists.clicked.connect(lambda: self.thread_it(self.tidal_user_lists)) + self.pb_clear_all.clicked.connect(self.on_clear_all) + self.pb_clear_finished.clicked.connect(self.on_clear_finished) self.l_search.returnPressed.connect( lambda: self.search_populate_results(self.l_search.text(), self.cb_search_type.currentData()) ) @@ -524,7 +528,6 @@ 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: self.thread_it(self.tidal_user_lists)) self.s_pb_reload_status.connect(self.button_reload_status) self.s_update_check.connect(lambda: self.thread_it(self.on_update_check)) self.s_update_show.connect(self.on_version) @@ -585,6 +588,11 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.cover_show(media) + def on_download_item_clicked(self, item: QtWidgets.QTreeWidgetItem, column: int) -> None: + media: Track | Video | Album | Artist = get_results_media_item(item) + + self.cover_show(media) + def cover_show(self, media: Album | Playlist | Track | Video | Album | Artist): cover_url: str @@ -626,8 +634,25 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): # Execute self.threadpool.start(worker) - def on_download_results(self): - items: [QtWidgets.QTreeWidgetItem] = self.tr_results.selectedItems() + def on_clear_all(self): + self.on_clear_queue_download( + f"[{QueueDownloadStatus.Waiting.value}{QueueDownloadStatus.Finished.value}{QueueDownloadStatus.Failed.value}]" + ) + + def on_clear_finished(self): + self.on_clear_queue_download(f"[{QueueDownloadStatus.Finished.value}]") + + def on_clear_queue_download(self, regex: str): + items: [QtWidgets.QTreeWidgetItem | None] = self.tr_queue_download.findItems( + regex, QtCore.Qt.MatchFlag.MatchRegularExpression, column=0 + ) + + for item in items: + self.tr_queue_download.takeTopLevelItem(self.tr_queue_download.indexOfTopLevelItem(item)) + + # TODO: Must happen in main thread. Do not thread this. + def on_download_results(self) -> None: + items: [QtWidgets.QTreeWidgetItem | None] = self.tr_results.selectedItems() if len(items) == 0: logger_gui.error("Please select a row first.") @@ -636,13 +661,13 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): media: Track | Album | Playlist | Video | Artist = get_results_media_item(item) # Populate child - child: QtWidgets.QTableWidgetItem = QtWidgets.QTableWidgetItem() - child.setText(0, "1") - set_results_media(child, media) - child.setText(2, media.artist) - child.setText(3, "tbd") - child.setText(4, "") - self.ta_queue_dl.addChild(child) + child: QtWidgets.QTreeWidgetItem = QtWidgets.QTreeWidgetItem() + child.setText(0, QueueDownloadStatus.Waiting.value) + set_queue_download_media(child, media) + child.setText(2, media.artist.name) + child.setText(3, type(media).__name__) + child.setText(4, "<quali>") + self.tr_queue_download.addTopLevelItem(child) def on_download_results1(self): self.pb_download.setEnabled(False) |
