diff options
| author | Robert Honz <exislow+github@gmail.com> | 2024-03-23 14:00:33 +0100 |
|---|---|---|
| committer | Robert Honz <exislow+github@gmail.com> | 2024-03-23 14:00:33 +0100 |
| commit | 10e2f39196e020e1fe6f7cf2ae26f877be716b40 (patch) | |
| tree | c4c3945afe9ddb7bbb5b424f5a75ad4432294aef | |
| parent | 84c8036bddf9c613e6a13095b918ba0dcc5ae3ef (diff) | |
| download | tidal-dl-ng-10e2f39196e020e1fe6f7cf2ae26f877be716b40.tar.gz | |
✨ Added info pane to GUI.
| -rw-r--r-- | tidal_dl_ng/gui.py | 32 | ||||
| -rw-r--r-- | tidal_dl_ng/ui/main.py | 134 | ||||
| -rw-r--r-- | tidal_dl_ng/ui/main.ui | 878 | ||||
| -rw-r--r-- | tidal_dl_ng/ui/placeholder_cover.jpg | bin | 0 -> 32346 bytes |
4 files changed, 636 insertions, 408 deletions
diff --git a/tidal_dl_ng/gui.py b/tidal_dl_ng/gui.py index 3ef600e..779b20b 100644 --- a/tidal_dl_ng/gui.py +++ b/tidal_dl_ng/gui.py @@ -185,8 +185,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.cb_search_type.setCurrentIndex(2) def _init_tree_results(self, tree: QtWidgets.QTableWidget): - tree.setColumnHidden(5, True) tree.sortByColumn(0, QtCore.Qt.SortOrder.AscendingOrder) + tree.setColumnHidden(1, True) def tidal_user_lists(self): # Start loading spinner @@ -228,8 +228,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): info: str = item.sub_title twi_child.setText(0, name) - twi_child.setText(1, info) - twi_child.setData(3, QtCore.Qt.ItemDataRole.UserRole, item) + twi_child.setData(1, QtCore.Qt.ItemDataRole.UserRole, item) + twi_child.setText(2, info) # Stop load spinner self.s_spinner_stop.emit() @@ -238,8 +238,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): def _init_tree_lists(self, tree: QtWidgets.QTreeWidget): # Adjust Tree. tree.setColumnWidth(0, 200) - tree.setColumnWidth(1, 300) - tree.setColumnHidden(2, True) + tree.setColumnHidden(1, True) + tree.setColumnWidth(2, 300) tree.expandAll() # Connect the contextmenu @@ -336,11 +336,11 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): # Populate child child: QtWidgets.QTreeWidgetItem = QtWidgets.QTreeWidgetItem() child.setText(0, index) - child.setText(1, item.artist) - child.setText(2, item.title) - child.setText(3, item.album) - child.setText(4, duration) - child.setData(5, QtCore.Qt.ItemDataRole.UserRole, item.obj) + child.setData(1, QtCore.Qt.ItemDataRole.UserRole, item.obj) + child.setText(2, item.artist) + child.setText(3, item.title) + child.setText(4, item.album) + child.setText(5, duration) if isinstance(item.obj, Mix | Playlist | Album | Artist): # Add a disabled dummy child, so expansion arrow will appear. This Child will be replaced on expansion. @@ -529,7 +529,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.tidal.settings_apply() def on_list_items_show(self, item: QtWidgets.QTreeWidgetItem): - media_list: Album | Playlist = item.data(3, QtCore.Qt.ItemDataRole.UserRole) + media_list: Album | Playlist = item.data(1, QtCore.Qt.ItemDataRole.UserRole) # Only if clicked item is not a top level item. if media_list: @@ -543,7 +543,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): ) -> None: if point: item = self.tr_lists_user.itemAt(point) - media_list = item.data(3, QtCore.Qt.ItemDataRole.UserRole) + media_list = item.data(1, QtCore.Qt.ItemDataRole.UserRole) # Get all results media_items: [Track | Video | Album] = items_results_all(media_list) @@ -569,11 +569,11 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): else: # If it is an artist resolve it with all available albums of him if len(items) == 1: - tmp_media: QtWidgets.QTreeWidgetItem = items[0].data(5, QtCore.Qt.ItemDataRole.UserRole) + tmp_media: QtWidgets.QTreeWidgetItem = items[0].data(1, QtCore.Qt.ItemDataRole.UserRole) if isinstance(tmp_media, Artist): tmp_children: [QtWidgets.QTreeWidgetItem] = [] - is_dummy_child = not bool(items[0].child(0).data(5, QtCore.Qt.ItemDataRole.UserRole)) + is_dummy_child = not bool(items[0].child(0).data(1, QtCore.Qt.ItemDataRole.UserRole)) # Use the expand function to retrieve all albums. if is_dummy_child: @@ -590,7 +590,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): items_pos_last = len(items) - 1 for item in items: - media: Track | Album | Playlist | Video | Artist = item.data(5, QtCore.Qt.ItemDataRole.UserRole) + media: Track | Album | Playlist | Video | Artist = item.data(1, QtCore.Qt.ItemDataRole.UserRole) # Skip only if Track item, skip option set and the item is not the last in the list. download_delay: bool = bool( isinstance(media, Track | Video) @@ -635,7 +635,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): if load_children: list_item.removeChild(list_item.child(0)) - media_list: [Mix | Album | Playlist | Artist] = list_item.data(5, QtCore.Qt.ItemDataRole.UserRole) + media_list: [Mix | Album | Playlist | Artist] = list_item.data(1, QtCore.Qt.ItemDataRole.UserRole) self.list_items_show_result(media_list=media_list, parent=list_item) diff --git a/tidal_dl_ng/ui/main.py b/tidal_dl_ng/ui/main.py index 5f0ef0a..6534ba1 100644 --- a/tidal_dl_ng/ui/main.py +++ b/tidal_dl_ng/ui/main.py @@ -7,13 +7,13 @@ ################################################################################ from PySide6.QtCore import QCoreApplication, QLocale, QMetaObject, QRect, QSize, Qt -from PySide6.QtGui import QAction +from PySide6.QtGui import QAction, QFont, QPixmap from PySide6.QtWidgets import ( QAbstractItemView, QComboBox, + QFrame, QHBoxLayout, QLabel, - QLayout, QLineEdit, QMenu, QMenuBar, @@ -21,6 +21,8 @@ from PySide6.QtWidgets import ( QPushButton, QSizePolicy, QStatusBar, + QTableWidget, + QTableWidgetItem, QTreeWidget, QTreeWidgetItem, QVBoxLayout, @@ -32,7 +34,7 @@ class Ui_MainWindow: def setupUi(self, MainWindow): if not MainWindow.objectName(): MainWindow.setObjectName("MainWindow") - MainWindow.resize(900, 700) + MainWindow.resize(1200, 800) self.a_preferences = QAction(MainWindow) self.a_preferences.setObjectName("a_preferences") self.a_preferences.setEnabled(True) @@ -78,14 +80,11 @@ class Ui_MainWindow: # endif // QT_CONFIG(accessibility) self.horizontalLayout = QHBoxLayout(self.w_central) self.horizontalLayout.setObjectName("horizontalLayout") - self.lh_main = QHBoxLayout() - self.lh_main.setObjectName("lh_main") - self.lh_main.setSizeConstraint(QLayout.SetNoConstraint) - self.verticalLayout = QVBoxLayout() - self.verticalLayout.setObjectName("verticalLayout") + self.lv_list_user = QVBoxLayout() + self.lv_list_user.setObjectName("lv_list_user") self.tr_lists_user = QTreeWidget(self.w_central) __qtreewidgetitem = QTreeWidgetItem() - __qtreewidgetitem.setText(1, "Info") + __qtreewidgetitem.setText(2, "Info") __qtreewidgetitem.setText(0, "Name") self.tr_lists_user.setHeaderItem(__qtreewidgetitem) __qtreewidgetitem1 = QTreeWidgetItem(self.tr_lists_user) @@ -119,7 +118,7 @@ class Ui_MainWindow: self.tr_lists_user.header().setHighlightSections(True) self.tr_lists_user.header().setProperty("showSortIndicator", True) - self.verticalLayout.addWidget(self.tr_lists_user) + self.lv_list_user.addWidget(self.tr_lists_user) self.pb_reload_user_lists = QPushButton(self.w_central) self.pb_reload_user_lists.setObjectName("pb_reload_user_lists") @@ -129,9 +128,9 @@ class Ui_MainWindow: sizePolicy1.setHeightForWidth(self.pb_reload_user_lists.sizePolicy().hasHeightForWidth()) self.pb_reload_user_lists.setSizePolicy(sizePolicy1) - self.verticalLayout.addWidget(self.pb_reload_user_lists) + self.lv_list_user.addWidget(self.pb_reload_user_lists) - self.lh_main.addLayout(self.verticalLayout) + self.horizontalLayout.addLayout(self.lv_list_user) self.lv_search_result = QVBoxLayout() # ifndef Q_OS_MAC @@ -375,17 +374,92 @@ class Ui_MainWindow: self.lv_search_result.addWidget(self.te_debug) - self.lh_main.addLayout(self.lv_search_result) + self.horizontalLayout.addLayout(self.lv_search_result) - self.lh_main.setStretch(0, 40) - self.lh_main.setStretch(1, 60) + self.lv_info = QVBoxLayout() + self.lv_info.setObjectName("lv_info") + self.lv_info_item = QVBoxLayout() + self.lv_info_item.setObjectName("lv_info_item") + self.horizontalLayout_2 = QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.l_pm_cover = QLabel(self.w_central) + self.l_pm_cover.setObjectName("l_pm_cover") + sizePolicy3 = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) + sizePolicy3.setHorizontalStretch(0) + sizePolicy3.setVerticalStretch(0) + sizePolicy3.setHeightForWidth(self.l_pm_cover.sizePolicy().hasHeightForWidth()) + self.l_pm_cover.setSizePolicy(sizePolicy3) + self.l_pm_cover.setMaximumSize(QSize(280, 280)) + self.l_pm_cover.setBaseSize(QSize(0, 0)) + self.l_pm_cover.setFrameShape(QFrame.NoFrame) + self.l_pm_cover.setPixmap(QPixmap("placeholder_cover.jpg")) + self.l_pm_cover.setScaledContents(True) + self.l_pm_cover.setAlignment(Qt.AlignHCenter | Qt.AlignTop) - self.horizontalLayout.addLayout(self.lh_main) + self.horizontalLayout_2.addWidget(self.l_pm_cover) + self.lv_info_item.addLayout(self.horizontalLayout_2) + + self.lv_info.addLayout(self.lv_info_item) + + self.lv_queue_dl = QVBoxLayout() + self.lv_queue_dl.setObjectName("lv_queue_dl") + self.l_h_queue_dl = QLabel(self.w_central) + self.l_h_queue_dl.setObjectName("l_h_queue_dl") + font = QFont() + font.setBold(True) + font.setItalic(False) + font.setKerning(True) + self.l_h_queue_dl.setFont(font) + + self.lv_queue_dl.addWidget(self.l_h_queue_dl) + + self.ta_queue_dl = QTableWidget(self.w_central) + if self.ta_queue_dl.columnCount() < 5: + self.ta_queue_dl.setColumnCount(5) + __qtablewidgetitem = QTableWidgetItem() + __qtablewidgetitem.setTextAlignment(Qt.AlignLeading | Qt.AlignVCenter) + self.ta_queue_dl.setHorizontalHeaderItem(0, __qtablewidgetitem) + __qtablewidgetitem1 = QTableWidgetItem() + self.ta_queue_dl.setHorizontalHeaderItem(1, __qtablewidgetitem1) + __qtablewidgetitem2 = QTableWidgetItem() + __qtablewidgetitem2.setTextAlignment(Qt.AlignLeading | Qt.AlignVCenter) + self.ta_queue_dl.setHorizontalHeaderItem(2, __qtablewidgetitem2) + __qtablewidgetitem3 = QTableWidgetItem() + __qtablewidgetitem3.setTextAlignment(Qt.AlignLeading | Qt.AlignVCenter) + self.ta_queue_dl.setHorizontalHeaderItem(3, __qtablewidgetitem3) + __qtablewidgetitem4 = QTableWidgetItem() + __qtablewidgetitem4.setTextAlignment(Qt.AlignLeading | Qt.AlignVCenter) + self.ta_queue_dl.setHorizontalHeaderItem(4, __qtablewidgetitem4) + self.ta_queue_dl.setObjectName("ta_queue_dl") + self.ta_queue_dl.setEditTriggers(QAbstractItemView.NoEditTriggers) + self.ta_queue_dl.setTabKeyNavigation(False) + self.ta_queue_dl.setProperty("showDropIndicator", False) + self.ta_queue_dl.setDragDropOverwriteMode(False) + self.ta_queue_dl.setSelectionMode(QAbstractItemView.ExtendedSelection) + self.ta_queue_dl.setSelectionBehavior(QAbstractItemView.SelectRows) + self.ta_queue_dl.setSortingEnabled(True) + self.ta_queue_dl.verticalHeader().setProperty("showSortIndicator", True) + + self.lv_queue_dl.addWidget(self.ta_queue_dl) + + self.pb_queue_item_remove = QPushButton(self.w_central) + self.pb_queue_item_remove.setObjectName("pb_queue_item_remove") + self.pb_queue_item_remove.setEnabled(False) + + self.lv_queue_dl.addWidget(self.pb_queue_item_remove) + + self.lv_info.addLayout(self.lv_queue_dl) + + self.horizontalLayout.addLayout(self.lv_info) + + self.horizontalLayout.setStretch(0, 25) + self.horizontalLayout.setStretch(1, 50) + self.horizontalLayout.setStretch(2, 25) MainWindow.setCentralWidget(self.w_central) self.menubar = QMenuBar(MainWindow) self.menubar.setObjectName("menubar") - self.menubar.setGeometry(QRect(0, 0, 900, 24)) + self.menubar.setGeometry(QRect(0, 0, 1200, 24)) # if QT_CONFIG(tooltip) self.menubar.setToolTip("") # endif // QT_CONFIG(tooltip) @@ -457,7 +531,7 @@ class Ui_MainWindow: self.a_exit.setText(QCoreApplication.translate("MainWindow", "Exit", None)) self.a_logout.setText(QCoreApplication.translate("MainWindow", "Logout", None)) ___qtreewidgetitem = self.tr_lists_user.headerItem() - ___qtreewidgetitem.setText(2, QCoreApplication.translate("MainWindow", "obj", None)) + ___qtreewidgetitem.setText(1, QCoreApplication.translate("MainWindow", "obj", None)) __sortingEnabled = self.tr_lists_user.isSortingEnabled() self.tr_lists_user.setSortingEnabled(False) @@ -471,13 +545,27 @@ class Ui_MainWindow: self.pb_reload_user_lists.setText(QCoreApplication.translate("MainWindow", "Reload", None)) ___qtreewidgetitem4 = self.tr_results.headerItem() - ___qtreewidgetitem4.setText(5, QCoreApplication.translate("MainWindow", "obj", None)) - ___qtreewidgetitem4.setText(4, QCoreApplication.translate("MainWindow", "Duration", None)) - ___qtreewidgetitem4.setText(3, QCoreApplication.translate("MainWindow", "Album", None)) - ___qtreewidgetitem4.setText(2, QCoreApplication.translate("MainWindow", "Title", None)) - ___qtreewidgetitem4.setText(1, QCoreApplication.translate("MainWindow", "Artist", None)) + ___qtreewidgetitem4.setText(6, QCoreApplication.translate("MainWindow", "Quality", None)) + ___qtreewidgetitem4.setText(5, QCoreApplication.translate("MainWindow", "Duration", None)) + ___qtreewidgetitem4.setText(4, QCoreApplication.translate("MainWindow", "Album", None)) + ___qtreewidgetitem4.setText(3, QCoreApplication.translate("MainWindow", "Title", None)) + ___qtreewidgetitem4.setText(2, QCoreApplication.translate("MainWindow", "Artist", None)) + ___qtreewidgetitem4.setText(1, QCoreApplication.translate("MainWindow", "obj", None)) ___qtreewidgetitem4.setText(0, QCoreApplication.translate("MainWindow", "#", None)) self.te_debug.setPlaceholderText(QCoreApplication.translate("MainWindow", "Logs...", None)) + self.l_pm_cover.setText("") + self.l_h_queue_dl.setText(QCoreApplication.translate("MainWindow", "Download Queue", None)) + ___qtablewidgetitem = self.ta_queue_dl.horizontalHeaderItem(0) + ___qtablewidgetitem.setText(QCoreApplication.translate("MainWindow", "#", None)) + ___qtablewidgetitem1 = self.ta_queue_dl.horizontalHeaderItem(1) + ___qtablewidgetitem1.setText(QCoreApplication.translate("MainWindow", "obj", None)) + ___qtablewidgetitem2 = self.ta_queue_dl.horizontalHeaderItem(2) + ___qtablewidgetitem2.setText(QCoreApplication.translate("MainWindow", "Name", None)) + ___qtablewidgetitem3 = self.ta_queue_dl.horizontalHeaderItem(3) + ___qtablewidgetitem3.setText(QCoreApplication.translate("MainWindow", "Type", None)) + ___qtablewidgetitem4 = self.ta_queue_dl.horizontalHeaderItem(4) + ___qtablewidgetitem4.setText(QCoreApplication.translate("MainWindow", "Quality", None)) + self.pb_queue_item_remove.setText(QCoreApplication.translate("MainWindow", "Remove", None)) self.m_file.setTitle(QCoreApplication.translate("MainWindow", "File", None)) # retranslateUi diff --git a/tidal_dl_ng/ui/main.ui b/tidal_dl_ng/ui/main.ui index 26b7270..3077449 100644 --- a/tidal_dl_ng/ui/main.ui +++ b/tidal_dl_ng/ui/main.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>900</width> - <height>700</height> + <width>1200</width> + <height>800</height> </rect> </property> <property name="windowTitle"> @@ -38,16 +38,154 @@ <property name="accessibleDescription"> <string notr="true"/> </property> - <layout class="QHBoxLayout" name="horizontalLayout"> + <layout class="QHBoxLayout" name="horizontalLayout" stretch="25,50,25"> <item> - <layout class="QHBoxLayout" name="lh_main" stretch="40,60"> - <property name="sizeConstraint"> - <enum>QLayout::SetNoConstraint</enum> + <layout class="QVBoxLayout" name="lv_list_user"> + <item> + <widget class="QTreeWidget" name="tr_lists_user"> + <property name="toolTip"> + <string notr="true"/> + </property> + <property name="statusTip"> + <string notr="true"/> + </property> + <property name="whatsThis"> + <string notr="true"/> + </property> + <property name="accessibleName"> + <string notr="true"/> + </property> + <property name="accessibleDescription"> + <string notr="true"/> + </property> + <property name="editTriggers"> + <set>QAbstractItemView::NoEditTriggers</set> + </property> + <property name="showDropIndicator" stdset="0"> + <bool>false</bool> + </property> + <property name="indentation"> + <number>10</number> + </property> + <property name="uniformRowHeights"> + <bool>true</bool> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + <attribute name="headerCascadingSectionResizes"> + <bool>true</bool> + </attribute> + <attribute name="headerHighlightSections"> + <bool>true</bool> + </attribute> + <attribute name="headerShowSortIndicator" stdset="0"> + <bool>true</bool> + </attribute> + <column> + <property name="text"> + <string notr="true">Name</string> + </property> + <property name="toolTip"> + <string notr="true"/> + </property> + <property name="statusTip"> + <string notr="true"/> + </property> + <property name="whatsThis"> + <string notr="true"/> + </property> + </column> + <column> + <property name="text"> + <string>obj</string> + </property> + </column> + <column> + <property name="text"> + <string notr="true">Info</string> + </property> + <property name="toolTip"> + <string notr="true"/> + </property> + <property name="statusTip"> + <string notr="true"/> + </property> + <property name="whatsThis"> + <string notr="true"/> + </property> + </column> + <item> + <property name="text"> + <string>Playlists</string> + </property> + <property name="text"> + <string/> + </property> + <property name="text"> + <string/> + </property> + <property name="flags"> + <set>ItemIsEnabled</set> + </property> + </item> + <item> + <property name="text"> + <string>Mixes</string> + </property> + <property name="text"> + <string/> + </property> + <property name="text"> + <string/> + </property> + <property name="flags"> + <set>ItemIsEnabled</set> + </property> + </item> + <item> + <property name="text"> + <string>Favorites</string> + </property> + <property name="text"> + <string/> + </property> + <property name="text"> + <string/> + </property> + <property name="flags"> + <set>ItemIsEnabled</set> + </property> + </item> + </widget> + </item> + <item> + <widget class="QPushButton" name="pb_reload_user_lists"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Reload</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" name="lv_search_result" stretch="0,0,0,0"> + <property name="spacing"> + <number>-1</number> </property> <item> - <layout class="QVBoxLayout" name="verticalLayout"> + <layout class="QHBoxLayout" name="lh_search"> <item> - <widget class="QTreeWidget" name="tr_lists_user"> + <widget class="QLineEdit" name="l_search"> + <property name="acceptDrops"> + <bool>false</bool> + </property> <property name="toolTip"> <string notr="true"/> </property> @@ -63,448 +201,450 @@ <property name="accessibleDescription"> <string notr="true"/> </property> - <property name="editTriggers"> - <set>QAbstractItemView::NoEditTriggers</set> + <property name="locale"> + <locale language="English" country="UnitedStates"/> </property> - <property name="showDropIndicator" stdset="0"> - <bool>false</bool> + <property name="text"> + <string notr="true"/> </property> - <property name="indentation"> - <number>10</number> + <property name="placeholderText"> + <string notr="true">Type and press ENTER to search...</string> </property> - <property name="uniformRowHeights"> + <property name="clearButtonEnabled"> <bool>true</bool> </property> - <property name="sortingEnabled"> - <bool>true</bool> + </widget> + </item> + <item> + <widget class="QComboBox" name="cb_search_type"> + <property name="toolTip"> + <string notr="true"/> </property> - <attribute name="headerCascadingSectionResizes"> - <bool>true</bool> - </attribute> - <attribute name="headerHighlightSections"> - <bool>true</bool> - </attribute> - <attribute name="headerShowSortIndicator" stdset="0"> + <property name="statusTip"> + <string notr="true"/> + </property> + <property name="whatsThis"> + <string notr="true"/> + </property> + <property name="accessibleName"> + <string notr="true"/> + </property> + <property name="accessibleDescription"> + <string notr="true"/> + </property> + <property name="currentText"> + <string notr="true"/> + </property> + <property name="placeholderText"> + <string notr="true"/> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="pb_search"> + <property name="statusTip"> + <string notr="true"/> + </property> + <property name="whatsThis"> + <string notr="true"/> + </property> + <property name="accessibleName"> + <string notr="true"/> + </property> + <property name="accessibleDescription"> + <string notr="true"/> + </property> + <property name="text"> + <string notr="true">Search</string> + </property> + <property name="shortcut"> + <string notr="true"/> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QTreeWidget" name="tr_results"> + <property name="editTriggers"> + <set>QAbstractItemView::NoEditTriggers</set> + </property> + <property name="showDropIndicator" stdset="0"> + <bool>false</bool> + </property> + <property name="dragDropOverwriteMode"> + <bool>false</bool> + </property> + <property name="alternatingRowColors"> + <bool>false</bool> + </property> + <property name="selectionMode"> + <enum>QAbstractItemView::ExtendedSelection</enum> + </property> + <property name="indentation"> + <number>10</number> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + <attribute name="headerShowSortIndicator" stdset="0"> + <bool>true</bool> + </attribute> + <attribute name="headerStretchLastSection"> + <bool>false</bool> + </attribute> + <column> + <property name="text"> + <string>#</string> + </property> + </column> + <column> + <property name="text"> + <string>obj</string> + </property> + </column> + <column> + <property name="text"> + <string>Artist</string> + </property> + </column> + <column> + <property name="text"> + <string>Title</string> + </property> + </column> + <column> + <property name="text"> + <string>Album</string> + </property> + </column> + <column> + <property name="text"> + <string>Duration</string> + </property> + </column> + <column> + <property name="text"> + <string>Quality</string> + </property> + </column> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="lh_download" stretch="5,0,5,0,15"> + <item> + <widget class="QLabel" name="l_quality_audio"> + <property name="toolTip"> + <string notr="true"/> + </property> + <property name="statusTip"> + <string notr="true"/> + </property> + <property name="whatsThis"> + <string notr="true"/> + </property> + <property name="accessibleName"> + <string notr="true"/> + </property> + <property name="accessibleDescription"> + <string notr="true"/> + </property> + <property name="text"> + <string notr="true">Audio</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="cb_quality_audio"> + <property name="toolTip"> + <string notr="true"/> + </property> + <property name="statusTip"> + <string notr="true"/> + </property> + <property name="whatsThis"> + <string notr="true"/> + </property> + <property name="accessibleName"> + <string notr="true"/> + </property> + <property name="accessibleDescription"> + <string notr="true"/> + </property> + <property name="currentText"> + <string notr="true"/> + </property> + <property name="placeholderText"> + <string notr="true"/> + </property> + <property name="frame"> <bool>true</bool> - </attribute> - <column> - <property name="text"> - <string notr="true">Name</string> - </property> - <property name="toolTip"> - <string notr="true"/> - </property> - <property name="statusTip"> - <string notr="true"/> - </property> - <property name="whatsThis"> - <string notr="true"/> - </property> - </column> - <column> - <property name="text"> - <string notr="true">Info</string> - </property> - <property name="toolTip"> - <string notr="true"/> - </property> - <property name="statusTip"> - <string notr="true"/> - </property> - <property name="whatsThis"> - <string notr="true"/> - </property> - </column> - <column> - <property name="text"> - <string>obj</string> - </property> - </column> - <item> - <property name="text"> - <string>Playlists</string> - </property> - <property name="text"> - <string/> - </property> - <property name="text"> - <string/> - </property> - <property name="flags"> - <set>ItemIsEnabled</set> - </property> - </item> - <item> - <property name="text"> - <string>Mixes</string> - </property> - <property name="text"> - <string/> - </property> - <property name="text"> - <string/> - </property> - <property name="flags"> - <set>ItemIsEnabled</set> - </property> - </item> - <item> - <property name="text"> - <string>Favorites</string> - </property> - <property name="text"> - <string/> - </property> - <property name="text"> - <string/> - </property> - <property name="flags"> - <set>ItemIsEnabled</set> - </property> - </item> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="l_quality_video"> + <property name="toolTip"> + <string notr="true"/> + </property> + <property name="statusTip"> + <string notr="true"/> + </property> + <property name="whatsThis"> + <string notr="true"/> + </property> + <property name="accessibleName"> + <string notr="true"/> + </property> + <property name="accessibleDescription"> + <string notr="true"/> + </property> + <property name="text"> + <string notr="true">Video</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="cb_quality_video"> + <property name="toolTip"> + <string notr="true"/> + </property> + <property name="statusTip"> + <string notr="true"/> + </property> + <property name="whatsThis"> + <string notr="true"/> + </property> + <property name="accessibleName"> + <string notr="true"/> + </property> + <property name="accessibleDescription"> + <string notr="true"/> + </property> + <property name="currentText"> + <string notr="true"/> + </property> + <property name="placeholderText"> + <string notr="true"/> + </property> </widget> </item> <item> - <widget class="QPushButton" name="pb_reload_user_lists"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> + <widget class="QPushButton" name="pb_download"> + <property name="toolTip"> + <string notr="true"/> + </property> + <property name="statusTip"> + <string notr="true"/> + </property> + <property name="whatsThis"> + <string notr="true"/> + </property> + <property name="accessibleName"> + <string notr="true"/> + </property> + <property name="accessibleDescription"> + <string notr="true"/> </property> <property name="text"> - <string>Reload</string> + <string notr="true">Download</string> + </property> + <property name="shortcut"> + <string notr="true"/> </property> </widget> </item> </layout> </item> <item> - <layout class="QVBoxLayout" name="lv_search_result" stretch="0,0,0,0"> - <property name="spacing"> - <number>-1</number> + <widget class="QPlainTextEdit" name="te_debug"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Maximum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> </property> + <property name="maximumSize"> + <size> + <width>16777215</width> + <height>16777215</height> + </size> + </property> + <property name="acceptDrops"> + <bool>false</bool> + </property> + <property name="toolTip"> + <string notr="true"/> + </property> + <property name="statusTip"> + <string notr="true"/> + </property> + <property name="whatsThis"> + <string notr="true"/> + </property> + <property name="accessibleName"> + <string notr="true"/> + </property> + <property name="accessibleDescription"> + <string notr="true"/> + </property> + <property name="undoRedoEnabled"> + <bool>false</bool> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + <property name="placeholderText"> + <string>Logs...</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" name="lv_info"> + <item> + <layout class="QVBoxLayout" name="lv_info_item"> <item> - <layout class="QHBoxLayout" name="lh_search"> + <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> - <widget class="QLineEdit" name="l_search"> - <property name="acceptDrops"> - <bool>false</bool> - </property> - <property name="toolTip"> - <string notr="true"/> + <widget class="QLabel" name="l_pm_cover"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> </property> - <property name="statusTip"> - <string notr="true"/> + <property name="maximumSize"> + <size> + <width>280</width> + <height>280</height> + </size> </property> - <property name="whatsThis"> - <string notr="true"/> + <property name="baseSize"> + <size> + <width>0</width> + <height>0</height> + </size> </property> - <property name="accessibleName"> - <string notr="true"/> - </property> - <property name="accessibleDescription"> - <string notr="true"/> - </property> - <property name="locale"> - <locale language="English" country="UnitedStates"/> + <property name="frameShape"> + <enum>QFrame::NoFrame</enum> </property> <property name="text"> - <string notr="true"/> + <string/> </property> - <property name="placeholderText"> - <string notr="true">Type and press ENTER to search...</string> + <property name="pixmap"> + <pixmap>placeholder_cover.jpg</pixmap> </property> - <property name="clearButtonEnabled"> + <property name="scaledContents"> <bool>true</bool> </property> - </widget> - </item> - <item> - <widget class="QComboBox" name="cb_search_type"> - <property name="toolTip"> - <string notr="true"/> - </property> - <property name="statusTip"> - <string notr="true"/> - </property> - <property name="whatsThis"> - <string notr="true"/> - </property> - <property name="accessibleName"> - <string notr="true"/> - </property> - <property name="accessibleDescription"> - <string notr="true"/> - </property> - <property name="currentText"> - <string notr="true"/> - </property> - <property name="placeholderText"> - <string notr="true"/> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="pb_search"> - <property name="statusTip"> - <string notr="true"/> - </property> - <property name="whatsThis"> - <string notr="true"/> - </property> - <property name="accessibleName"> - <string notr="true"/> - </property> - <property name="accessibleDescription"> - <string notr="true"/> - </property> - <property name="text"> - <string notr="true">Search</string> - </property> - <property name="shortcut"> - <string notr="true"/> + <property name="alignment"> + <set>Qt::AlignHCenter|Qt::AlignTop</set> </property> </widget> </item> </layout> </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" name="lv_queue_dl"> + <item> + <widget class="QLabel" name="l_h_queue_dl"> + <property name="font"> + <font> + <italic>false</italic> + <bold>true</bold> + <kerning>true</kerning> + </font> + </property> + <property name="text"> + <string>Download Queue</string> + </property> + </widget> + </item> <item> - <widget class="QTreeWidget" name="tr_results"> + <widget class="QTableWidget" name="ta_queue_dl"> <property name="editTriggers"> <set>QAbstractItemView::NoEditTriggers</set> </property> - <property name="showDropIndicator" stdset="0"> + <property name="tabKeyNavigation"> <bool>false</bool> </property> - <property name="dragDropOverwriteMode"> + <property name="showDropIndicator" stdset="0"> <bool>false</bool> </property> - <property name="alternatingRowColors"> + <property name="dragDropOverwriteMode"> <bool>false</bool> </property> <property name="selectionMode"> <enum>QAbstractItemView::ExtendedSelection</enum> </property> - <property name="indentation"> - <number>10</number> + <property name="selectionBehavior"> + <enum>QAbstractItemView::SelectRows</enum> </property> <property name="sortingEnabled"> <bool>true</bool> </property> - <attribute name="headerShowSortIndicator" stdset="0"> + <attribute name="verticalHeaderShowSortIndicator" stdset="0"> <bool>true</bool> </attribute> - <attribute name="headerStretchLastSection"> - <bool>false</bool> - </attribute> <column> <property name="text"> <string>#</string> </property> - </column> - <column> - <property name="text"> - <string>Artist</string> + <property name="textAlignment"> + <set>AlignLeading|AlignVCenter</set> </property> </column> <column> <property name="text"> - <string>Title</string> + <string>obj</string> </property> </column> <column> <property name="text"> - <string>Album</string> + <string>Name</string> + </property> + <property name="textAlignment"> + <set>AlignLeading|AlignVCenter</set> </property> </column> <column> <property name="text"> - <string>Duration</string> + <string>Type</string> + </property> + <property name="textAlignment"> + <set>AlignLeading|AlignVCenter</set> </property> </column> <column> <property name="text"> - <string>obj</string> + <string>Quality</string> + </property> + <property name="textAlignment"> + <set>AlignLeading|AlignVCenter</set> </property> </column> </widget> </item> <item> - <layout class="QHBoxLayout" name="lh_download" stretch="5,0,5,0,15"> - <item> - <widget class="QLabel" name="l_quality_audio"> - <property name="toolTip"> - <string notr="true"/> - </property> - <property name="statusTip"> - <string notr="true"/> - </property> - <property name="whatsThis"> - <string notr="true"/> - </property> - <property name="accessibleName"> - <string notr="true"/> - </property> - <property name="accessibleDescription"> - <string notr="true"/> - </property> - <property name="text"> - <string notr="true">Audio</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - </item> - <item> - <widget class="QComboBox" name="cb_quality_audio"> - <property name="toolTip"> - <string notr="true"/> - </property> - <property name="statusTip"> - <string notr="true"/> - </property> - <property name="whatsThis"> - <string notr="true"/> - </property> - <property name="accessibleName"> - <string notr="true"/> - </property> - <property name="accessibleDescription"> - <string notr="true"/> - </property> - <property name="currentText"> - <string notr="true"/> - </property> - <property name="placeholderText"> - <string notr="true"/> - </property> - <property name="frame"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="l_quality_video"> - <property name="toolTip"> - <string notr="true"/> - </property> - <property name="statusTip"> - <string notr="true"/> - </property> - <property name="whatsThis"> - <string notr="true"/> - </property> - <property name="accessibleName"> - <string notr="true"/> - </property> - <property name="accessibleDescription"> - <string notr="true"/> - </property> - <property name="text"> - <string notr="true">Video</string> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - </item> - <item> - <widget class="QComboBox" name="cb_quality_video"> - <property name="toolTip"> - <string notr="true"/> - </property> - <property name="statusTip"> - <string notr="true"/> - </property> - <property name="whatsThis"> - <string notr="true"/> - </property> - <property name="accessibleName"> - <string notr="true"/> - </property> - <property name="accessibleDescription"> - <string notr="true"/> - </property> - <property name="currentText"> - <string notr="true"/> - </property> - <property name="placeholderText"> - <string notr="true"/> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="pb_download"> - <property name="toolTip"> - <string notr="true"/> - </property> - <property name="statusTip"> - <string notr="true"/> - </property> - <property name="whatsThis"> - <string notr="true"/> - </property> - <property name="accessibleName"> - <string notr="true"/> - </property> - <property name="accessibleDescription"> - <string notr="true"/> - </property> - <property name="text"> - <string notr="true">Download</string> - </property> - <property name="shortcut"> - <string notr="true"/> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QPlainTextEdit" name="te_debug"> + <widget class="QPushButton" name="pb_queue_item_remove"> <property name="enabled"> - <bool>true</bool> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Maximum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="maximumSize"> - <size> - <width>16777215</width> - <height>16777215</height> - </size> - </property> - <property name="acceptDrops"> - <bool>false</bool> - </property> - <property name="toolTip"> - <string notr="true"/> - </property> - <property name="statusTip"> - <string notr="true"/> - </property> - <property name="whatsThis"> - <string notr="true"/> - </property> - <property name="accessibleName"> - <string notr="true"/> - </property> - <property name="accessibleDescription"> - <string notr="true"/> - </property> - <property name="undoRedoEnabled"> <bool>false</bool> </property> - <property name="readOnly"> - <bool>true</bool> - </property> - <property name="placeholderText"> - <string>Logs...</string> + <property name="text"> + <string>Remove</string> </property> </widget> </item> @@ -519,7 +659,7 @@ <rect> <x>0</x> <y>0</y> - <width>900</width> + <width>1200</width> <height>24</height> </rect> </property> diff --git a/tidal_dl_ng/ui/placeholder_cover.jpg b/tidal_dl_ng/ui/placeholder_cover.jpg Binary files differnew file mode 100644 index 0000000..a06ab92 --- /dev/null +++ b/tidal_dl_ng/ui/placeholder_cover.jpg |
