Merge branch '71-feature-show-queued-downloads'
* 71-feature-show-queued-downloads: ✨ Lists can also be downloaded using the "Download List" button. 👌 Reduced network traffic for covers. ✨ Display cover in info area. ✨ Use `Album.image()` to get cover url. ✨ Software named explicitly. ✨ Info pane will be initialized correctly. ✨ Added info pane to GUI. # Conflicts: # tidal_dl_ng/gui.py
This commit is contained in:
@@ -20,7 +20,7 @@ body:
|
|||||||
- type: input
|
- type: input
|
||||||
id: version
|
id: version
|
||||||
attributes:
|
attributes:
|
||||||
label: Version
|
label: Version App
|
||||||
description: What version of our software are you running?
|
description: What version of our software are you running?
|
||||||
placeholder: vX.Y.Z
|
placeholder: vX.Y.Z
|
||||||
validations:
|
validations:
|
||||||
|
|||||||
@@ -36,9 +36,11 @@ class StreamManifestMimeType(Enum):
|
|||||||
|
|
||||||
|
|
||||||
class CoverDimensions(Enum):
|
class CoverDimensions(Enum):
|
||||||
Px320: str = "320x320"
|
Px80: int = 80
|
||||||
Px640: str = "640x640"
|
Px160: int = 160
|
||||||
Px1280: str = "1280x1280"
|
Px320: int = 320
|
||||||
|
Px640: int = 640
|
||||||
|
Px1280: int = 1280
|
||||||
|
|
||||||
|
|
||||||
class TidalLists(Enum):
|
class TidalLists(Enum):
|
||||||
|
|||||||
+1
-10
@@ -21,7 +21,6 @@ from tidal_dl_ng.constants import (
|
|||||||
EXTENSION_LYRICS,
|
EXTENSION_LYRICS,
|
||||||
REQUESTS_TIMEOUT_SEC,
|
REQUESTS_TIMEOUT_SEC,
|
||||||
AudioExtensions,
|
AudioExtensions,
|
||||||
CoverDimensions,
|
|
||||||
MediaType,
|
MediaType,
|
||||||
SkipExisting,
|
SkipExisting,
|
||||||
StreamManifestMimeType,
|
StreamManifestMimeType,
|
||||||
@@ -272,12 +271,6 @@ class Download:
|
|||||||
# Move it.
|
# Move it.
|
||||||
shutil.move(tmp_lyrics_file_path, os.path.splitext(file_media_dst)[0] + EXTENSION_LYRICS)
|
shutil.move(tmp_lyrics_file_path, os.path.splitext(file_media_dst)[0] + EXTENSION_LYRICS)
|
||||||
|
|
||||||
def cover_url(self, sid: str, dimension: CoverDimensions = CoverDimensions.Px320):
|
|
||||||
if sid is None:
|
|
||||||
return ""
|
|
||||||
|
|
||||||
return f"https://resources.tidal.com/images/{sid.replace('-', '/')}/{dimension.value}.jpg"
|
|
||||||
|
|
||||||
def lyrics_write_file(self, file_path: str, lyrics: str) -> str:
|
def lyrics_write_file(self, file_path: str, lyrics: str) -> str:
|
||||||
result: str = file_path
|
result: str = file_path
|
||||||
|
|
||||||
@@ -332,9 +325,7 @@ class Download:
|
|||||||
totaltrack=track.album.num_tracks if track.album and track.album.num_tracks else 1,
|
totaltrack=track.album.num_tracks if track.album and track.album.num_tracks else 1,
|
||||||
totaldisc=track.album.num_volumes if track.album and track.album.num_volumes else 1,
|
totaldisc=track.album.num_volumes if track.album and track.album.num_volumes else 1,
|
||||||
discnumber=track.volume_num if track.volume_num else 1,
|
discnumber=track.volume_num if track.volume_num else 1,
|
||||||
url_cover=(
|
url_cover=track.album.image(self.settings.data.metadata_cover_dimension.value),
|
||||||
self.cover_url(track.album.cover, self.settings.data.metadata_cover_dimension) if track.album else ""
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
m.save()
|
m.save()
|
||||||
|
|||||||
+55
-18
@@ -6,6 +6,7 @@ from requests.exceptions import HTTPError
|
|||||||
|
|
||||||
from tidal_dl_ng import __version__, update_available
|
from tidal_dl_ng import __version__, update_available
|
||||||
from tidal_dl_ng.dialog import DialogLogin, DialogPreferences, DialogVersion
|
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
|
||||||
from tidal_dl_ng.helper.path import get_format_template
|
from tidal_dl_ng.helper.path import get_format_template
|
||||||
from tidal_dl_ng.helper.tidal import (
|
from tidal_dl_ng.helper.tidal import (
|
||||||
get_tidal_media_id,
|
get_tidal_media_id,
|
||||||
@@ -17,6 +18,7 @@ from tidal_dl_ng.helper.tidal import (
|
|||||||
search_results_all,
|
search_results_all,
|
||||||
user_media_lists,
|
user_media_lists,
|
||||||
)
|
)
|
||||||
|
from tidal_dl_ng.metadata import Metadata
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import qdarktheme
|
import qdarktheme
|
||||||
@@ -51,6 +53,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
threadpool: QtCore.QThreadPool
|
threadpool: QtCore.QThreadPool
|
||||||
tray: QtWidgets.QSystemTrayIcon
|
tray: QtWidgets.QSystemTrayIcon
|
||||||
spinner: QtWaitingSpinner
|
spinner: QtWaitingSpinner
|
||||||
|
cover_url_current: str
|
||||||
s_spinner_start: QtCore.Signal = QtCore.Signal(QtWidgets.QWidget)
|
s_spinner_start: QtCore.Signal = QtCore.Signal(QtWidgets.QWidget)
|
||||||
s_spinner_stop: QtCore.Signal = QtCore.Signal()
|
s_spinner_stop: QtCore.Signal = QtCore.Signal()
|
||||||
pb_item: QtWidgets.QProgressBar
|
pb_item: QtWidgets.QProgressBar
|
||||||
@@ -83,6 +86,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
|
|
||||||
self._init_tree_results(self.tr_results)
|
self._init_tree_results(self.tr_results)
|
||||||
self._init_tree_lists(self.tr_lists_user)
|
self._init_tree_lists(self.tr_lists_user)
|
||||||
|
self._init_table_queue(self.ta_queue_dl)
|
||||||
|
self._init_info()
|
||||||
self._init_progressbar()
|
self._init_progressbar()
|
||||||
self._populate_quality(self.cb_quality_audio, Quality)
|
self._populate_quality(self.cb_quality_audio, Quality)
|
||||||
self._populate_quality(self.cb_quality_video, QualityVideo)
|
self._populate_quality(self.cb_quality_video, QualityVideo)
|
||||||
@@ -158,6 +163,9 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
# self.pb_progress.setVisible()
|
# self.pb_progress.setVisible()
|
||||||
self.statusbar.addPermanentWidget(pb)
|
self.statusbar.addPermanentWidget(pb)
|
||||||
|
|
||||||
|
def _init_info(self):
|
||||||
|
self.l_pm_cover.setPixmap(QtGui.QPixmap("tidal_dl_ng/ui/default_album_image.png"))
|
||||||
|
|
||||||
def on_progress_reset(self):
|
def on_progress_reset(self):
|
||||||
self.pb_list.setValue(0)
|
self.pb_list.setValue(0)
|
||||||
self.pb_item.setValue(0)
|
self.pb_item.setValue(0)
|
||||||
@@ -187,8 +195,12 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
self.cb_search_type.setCurrentIndex(2)
|
self.cb_search_type.setCurrentIndex(2)
|
||||||
|
|
||||||
def _init_tree_results(self, tree: QtWidgets.QTableWidget):
|
def _init_tree_results(self, tree: QtWidgets.QTableWidget):
|
||||||
tree.setColumnHidden(5, True)
|
|
||||||
tree.sortByColumn(0, QtCore.Qt.SortOrder.AscendingOrder)
|
tree.sortByColumn(0, QtCore.Qt.SortOrder.AscendingOrder)
|
||||||
|
tree.setColumnHidden(1, True)
|
||||||
|
|
||||||
|
def _init_table_queue(self, tree: QtWidgets.QTableWidget):
|
||||||
|
tree.sortByColumn(0, QtCore.Qt.SortOrder.AscendingOrder)
|
||||||
|
tree.setColumnHidden(1, True)
|
||||||
|
|
||||||
def tidal_user_lists(self):
|
def tidal_user_lists(self):
|
||||||
# Start loading spinner
|
# Start loading spinner
|
||||||
@@ -230,8 +242,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
info: str = item.sub_title
|
info: str = item.sub_title
|
||||||
|
|
||||||
twi_child.setText(0, name)
|
twi_child.setText(0, name)
|
||||||
twi_child.setText(1, info)
|
twi_child.setData(1, QtCore.Qt.ItemDataRole.UserRole, item)
|
||||||
twi_child.setData(3, QtCore.Qt.ItemDataRole.UserRole, item)
|
twi_child.setText(2, info)
|
||||||
|
|
||||||
# Stop load spinner
|
# Stop load spinner
|
||||||
self.s_spinner_stop.emit()
|
self.s_spinner_stop.emit()
|
||||||
@@ -240,8 +252,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
def _init_tree_lists(self, tree: QtWidgets.QTreeWidget):
|
def _init_tree_lists(self, tree: QtWidgets.QTreeWidget):
|
||||||
# Adjust Tree.
|
# Adjust Tree.
|
||||||
tree.setColumnWidth(0, 200)
|
tree.setColumnWidth(0, 200)
|
||||||
tree.setColumnWidth(1, 300)
|
tree.setColumnHidden(1, True)
|
||||||
tree.setColumnHidden(2, True)
|
tree.setColumnWidth(2, 300)
|
||||||
tree.expandAll()
|
tree.expandAll()
|
||||||
|
|
||||||
# Connect the contextmenu
|
# Connect the contextmenu
|
||||||
@@ -295,12 +307,24 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
self.thread_it(self.on_download_list_media, point)
|
self.thread_it(self.on_download_list_media, point)
|
||||||
self.thread_it(self.list_items_show_result, point=point)
|
self.thread_it(self.list_items_show_result, point=point)
|
||||||
|
|
||||||
def on_download_list_media(self, point: QtCore.QPoint):
|
def on_download_list_media(self, point: QtCore.QPoint = None):
|
||||||
self.pb_download.setEnabled(False)
|
self.pb_download.setEnabled(False)
|
||||||
self.pb_download.setText("Downloading...")
|
self.pb_download.setText("Downloading...")
|
||||||
|
|
||||||
|
item: QtWidgets.QTreeWidgetItem
|
||||||
|
|
||||||
|
if point:
|
||||||
item = self.tr_lists_user.itemAt(point)
|
item = self.tr_lists_user.itemAt(point)
|
||||||
media = item.data(3, QtCore.Qt.ItemDataRole.UserRole)
|
else:
|
||||||
|
items: [QtWidgets.QTreeWidgetItem] = self.tr_lists_user.selectedItems()
|
||||||
|
|
||||||
|
if len(items) == 0:
|
||||||
|
logger_gui.error("Please select a row first.")
|
||||||
|
else:
|
||||||
|
item = items[0]
|
||||||
|
|
||||||
|
if item:
|
||||||
|
media = get_user_list_media_item(item)
|
||||||
|
|
||||||
self.download(media, self.dl)
|
self.download(media, self.dl)
|
||||||
|
|
||||||
@@ -344,11 +368,11 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
# Populate child
|
# Populate child
|
||||||
child: QtWidgets.QTreeWidgetItem = QtWidgets.QTreeWidgetItem()
|
child: QtWidgets.QTreeWidgetItem = QtWidgets.QTreeWidgetItem()
|
||||||
child.setText(0, index)
|
child.setText(0, index)
|
||||||
child.setText(1, item.artist)
|
child.setData(1, QtCore.Qt.ItemDataRole.UserRole, item.obj)
|
||||||
child.setText(2, item.title)
|
child.setText(2, item.artist)
|
||||||
child.setText(3, item.album)
|
child.setText(3, item.title)
|
||||||
child.setText(4, duration)
|
child.setText(4, item.album)
|
||||||
child.setData(5, QtCore.Qt.ItemDataRole.UserRole, item.obj)
|
child.setText(5, duration)
|
||||||
|
|
||||||
if isinstance(item.obj, Mix | Playlist | Album | Artist):
|
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.
|
# Add a disabled dummy child, so expansion arrow will appear. This Child will be replaced on expansion.
|
||||||
@@ -474,6 +498,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
|
|
||||||
def _init_signals(self):
|
def _init_signals(self):
|
||||||
self.pb_download.clicked.connect(lambda: self.thread_it(self.on_download_results))
|
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.l_search.returnPressed.connect(
|
self.l_search.returnPressed.connect(
|
||||||
lambda: self.search_populate_results(self.l_search.text(), self.cb_search_type.currentData())
|
lambda: self.search_populate_results(self.l_search.text(), self.cb_search_type.currentData())
|
||||||
)
|
)
|
||||||
@@ -508,6 +533,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
|
|
||||||
# Results
|
# Results
|
||||||
self.tr_results.itemExpanded.connect(self.on_tr_results_expanded)
|
self.tr_results.itemExpanded.connect(self.on_tr_results_expanded)
|
||||||
|
self.tr_results.itemClicked.connect(self.on_result_item_clicked)
|
||||||
|
|
||||||
def on_logout(self):
|
def on_logout(self):
|
||||||
result: bool = self.tidal.logout()
|
result: bool = self.tidal.logout()
|
||||||
@@ -542,12 +568,23 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
self.tidal.settings_apply()
|
self.tidal.settings_apply()
|
||||||
|
|
||||||
def on_list_items_show(self, item: QtWidgets.QTreeWidgetItem):
|
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.
|
# Only if clicked item is not a top level item.
|
||||||
if media_list:
|
if media_list:
|
||||||
self.list_items_show_result(media_list)
|
self.list_items_show_result(media_list)
|
||||||
|
|
||||||
|
def on_result_item_clicked(self, item: QtWidgets.QTreeWidgetItem, column: int) -> None:
|
||||||
|
media: Track | Video | Album | Artist = get_results_media_item(item)
|
||||||
|
cover_url: str = media.album.image()
|
||||||
|
|
||||||
|
if self.cover_url_current != cover_url:
|
||||||
|
self.cover_url_current = cover_url
|
||||||
|
data_cover: bytes = Metadata.cover_data(cover_url)
|
||||||
|
pixmap: QtGui.QPixmap = QtGui.QPixmap()
|
||||||
|
pixmap.loadFromData(data_cover)
|
||||||
|
self.l_pm_cover.setPixmap(pixmap)
|
||||||
|
|
||||||
def list_items_show_result(
|
def list_items_show_result(
|
||||||
self,
|
self,
|
||||||
media_list: Album | Playlist | Mix | Artist | None = None,
|
media_list: Album | Playlist | Mix | Artist | None = None,
|
||||||
@@ -556,7 +593,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
) -> None:
|
) -> None:
|
||||||
if point:
|
if point:
|
||||||
item = self.tr_lists_user.itemAt(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
|
# Get all results
|
||||||
media_items: [Track | Video | Album] = items_results_all(media_list)
|
media_items: [Track | Video | Album] = items_results_all(media_list)
|
||||||
@@ -582,11 +619,11 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
else:
|
else:
|
||||||
# If it is an artist resolve it with all available albums of him
|
# If it is an artist resolve it with all available albums of him
|
||||||
if len(items) == 1:
|
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):
|
if isinstance(tmp_media, Artist):
|
||||||
tmp_children: [QtWidgets.QTreeWidgetItem] = []
|
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.
|
# Use the expand function to retrieve all albums.
|
||||||
if is_dummy_child:
|
if is_dummy_child:
|
||||||
@@ -603,7 +640,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
items_pos_last = len(items) - 1
|
items_pos_last = len(items) - 1
|
||||||
|
|
||||||
for item in items:
|
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.
|
# Skip only if Track item, skip option set and the item is not the last in the list.
|
||||||
download_delay: bool = bool(
|
download_delay: bool = bool(
|
||||||
isinstance(media, Track | Video)
|
isinstance(media, Track | Video)
|
||||||
@@ -650,7 +687,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
|
|
||||||
if load_children:
|
if load_children:
|
||||||
list_item.removeChild(list_item.child(0))
|
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)
|
self.list_items_show_result(media_list=media_list, parent=list_item)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
from PySide6 import QtCore, QtWidgets
|
||||||
|
from tidalapi import Album, Mix, Playlist, Track, UserPlaylist, Video
|
||||||
|
from tidalapi.artist import Artist
|
||||||
|
|
||||||
|
|
||||||
|
def get_table_data(
|
||||||
|
item: QtWidgets.QTreeWidgetItem, column: int
|
||||||
|
) -> Track | Video | Album | Artist | Mix | Playlist | UserPlaylist:
|
||||||
|
result: Track | Video | Album | Artist = item.data(column, QtCore.Qt.ItemDataRole.UserRole)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def get_results_media_item(item: QtWidgets.QTreeWidgetItem) -> Track | Video | Album | Artist:
|
||||||
|
result: Track | Video | Album | Artist = get_table_data(item, 1)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def get_user_list_media_item(item: QtWidgets.QTreeWidgetItem) -> Mix | Playlist | UserPlaylist:
|
||||||
|
result: Mix | Playlist | UserPlaylist = get_table_data(item, 1)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def set_table_data(
|
||||||
|
item: QtWidgets.QTreeWidgetItem, data: Track | Video | Album | Artist | Mix | Playlist | UserPlaylist, column: int
|
||||||
|
):
|
||||||
|
item.setData(column, QtCore.Qt.ItemDataRole.UserRole, data)
|
||||||
|
|
||||||
|
|
||||||
|
def set_results_media(item: QtWidgets.QTreeWidgetItem, media: Track | Video | Album | Artist):
|
||||||
|
set_table_data(item, media, 1)
|
||||||
|
|
||||||
|
|
||||||
|
def set_user_list_media(item: QtWidgets.QTreeWidgetItem, media: Mix | Playlist | UserPlaylist):
|
||||||
|
set_table_data(item, media, 1)
|
||||||
@@ -142,7 +142,8 @@ class Metadata:
|
|||||||
self.m.tags["\xa9wrt"] = ", ".join(self.composer) if self.composer else ""
|
self.m.tags["\xa9wrt"] = ", ".join(self.composer) if self.composer else ""
|
||||||
self.m.tags["\xa9lyr"] = self.lyrics
|
self.m.tags["\xa9lyr"] = self.lyrics
|
||||||
|
|
||||||
def cover_data(self, url: str = None, path_file: str = None) -> str | bytes:
|
@staticmethod
|
||||||
|
def cover_data(url: str = None, path_file: str = None) -> str | bytes:
|
||||||
result: str | bytes = ""
|
result: str | bytes = ""
|
||||||
|
|
||||||
if url:
|
if url:
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 4.8 KiB |
+122
-23
@@ -7,13 +7,13 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
from PySide6.QtCore import QCoreApplication, QLocale, QMetaObject, QRect, QSize, Qt
|
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 (
|
from PySide6.QtWidgets import (
|
||||||
QAbstractItemView,
|
QAbstractItemView,
|
||||||
QComboBox,
|
QComboBox,
|
||||||
|
QFrame,
|
||||||
QHBoxLayout,
|
QHBoxLayout,
|
||||||
QLabel,
|
QLabel,
|
||||||
QLayout,
|
|
||||||
QLineEdit,
|
QLineEdit,
|
||||||
QMenu,
|
QMenu,
|
||||||
QMenuBar,
|
QMenuBar,
|
||||||
@@ -21,6 +21,8 @@ from PySide6.QtWidgets import (
|
|||||||
QPushButton,
|
QPushButton,
|
||||||
QSizePolicy,
|
QSizePolicy,
|
||||||
QStatusBar,
|
QStatusBar,
|
||||||
|
QTableWidget,
|
||||||
|
QTableWidgetItem,
|
||||||
QTreeWidget,
|
QTreeWidget,
|
||||||
QTreeWidgetItem,
|
QTreeWidgetItem,
|
||||||
QVBoxLayout,
|
QVBoxLayout,
|
||||||
@@ -32,7 +34,7 @@ class Ui_MainWindow:
|
|||||||
def setupUi(self, MainWindow):
|
def setupUi(self, MainWindow):
|
||||||
if not MainWindow.objectName():
|
if not MainWindow.objectName():
|
||||||
MainWindow.setObjectName("MainWindow")
|
MainWindow.setObjectName("MainWindow")
|
||||||
MainWindow.resize(900, 700)
|
MainWindow.resize(1200, 800)
|
||||||
self.a_preferences = QAction(MainWindow)
|
self.a_preferences = QAction(MainWindow)
|
||||||
self.a_preferences.setObjectName("a_preferences")
|
self.a_preferences.setObjectName("a_preferences")
|
||||||
self.a_preferences.setEnabled(True)
|
self.a_preferences.setEnabled(True)
|
||||||
@@ -80,14 +82,11 @@ class Ui_MainWindow:
|
|||||||
# endif // QT_CONFIG(accessibility)
|
# endif // QT_CONFIG(accessibility)
|
||||||
self.horizontalLayout = QHBoxLayout(self.w_central)
|
self.horizontalLayout = QHBoxLayout(self.w_central)
|
||||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||||
self.lh_main = QHBoxLayout()
|
self.lv_list_user = QVBoxLayout()
|
||||||
self.lh_main.setObjectName("lh_main")
|
self.lv_list_user.setObjectName("lv_list_user")
|
||||||
self.lh_main.setSizeConstraint(QLayout.SetNoConstraint)
|
|
||||||
self.verticalLayout = QVBoxLayout()
|
|
||||||
self.verticalLayout.setObjectName("verticalLayout")
|
|
||||||
self.tr_lists_user = QTreeWidget(self.w_central)
|
self.tr_lists_user = QTreeWidget(self.w_central)
|
||||||
__qtreewidgetitem = QTreeWidgetItem()
|
__qtreewidgetitem = QTreeWidgetItem()
|
||||||
__qtreewidgetitem.setText(1, "Info")
|
__qtreewidgetitem.setText(2, "Info")
|
||||||
__qtreewidgetitem.setText(0, "Name")
|
__qtreewidgetitem.setText(0, "Name")
|
||||||
self.tr_lists_user.setHeaderItem(__qtreewidgetitem)
|
self.tr_lists_user.setHeaderItem(__qtreewidgetitem)
|
||||||
__qtreewidgetitem1 = QTreeWidgetItem(self.tr_lists_user)
|
__qtreewidgetitem1 = QTreeWidgetItem(self.tr_lists_user)
|
||||||
@@ -121,8 +120,10 @@ class Ui_MainWindow:
|
|||||||
self.tr_lists_user.header().setHighlightSections(True)
|
self.tr_lists_user.header().setHighlightSections(True)
|
||||||
self.tr_lists_user.header().setProperty("showSortIndicator", 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.lv_list_control = QHBoxLayout()
|
||||||
|
self.lv_list_control.setObjectName("lv_list_control")
|
||||||
self.pb_reload_user_lists = QPushButton(self.w_central)
|
self.pb_reload_user_lists = QPushButton(self.w_central)
|
||||||
self.pb_reload_user_lists.setObjectName("pb_reload_user_lists")
|
self.pb_reload_user_lists.setObjectName("pb_reload_user_lists")
|
||||||
sizePolicy1 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
|
sizePolicy1 = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
|
||||||
@@ -131,9 +132,18 @@ class Ui_MainWindow:
|
|||||||
sizePolicy1.setHeightForWidth(self.pb_reload_user_lists.sizePolicy().hasHeightForWidth())
|
sizePolicy1.setHeightForWidth(self.pb_reload_user_lists.sizePolicy().hasHeightForWidth())
|
||||||
self.pb_reload_user_lists.setSizePolicy(sizePolicy1)
|
self.pb_reload_user_lists.setSizePolicy(sizePolicy1)
|
||||||
|
|
||||||
self.verticalLayout.addWidget(self.pb_reload_user_lists)
|
self.lv_list_control.addWidget(self.pb_reload_user_lists)
|
||||||
|
|
||||||
self.lh_main.addLayout(self.verticalLayout)
|
self.pb_download_list = QPushButton(self.w_central)
|
||||||
|
self.pb_download_list.setObjectName("pb_download_list")
|
||||||
|
sizePolicy1.setHeightForWidth(self.pb_download_list.sizePolicy().hasHeightForWidth())
|
||||||
|
self.pb_download_list.setSizePolicy(sizePolicy1)
|
||||||
|
|
||||||
|
self.lv_list_control.addWidget(self.pb_download_list)
|
||||||
|
|
||||||
|
self.lv_list_user.addLayout(self.lv_list_control)
|
||||||
|
|
||||||
|
self.horizontalLayout.addLayout(self.lv_list_user)
|
||||||
|
|
||||||
self.lv_search_result = QVBoxLayout()
|
self.lv_search_result = QVBoxLayout()
|
||||||
# ifndef Q_OS_MAC
|
# ifndef Q_OS_MAC
|
||||||
@@ -377,17 +387,91 @@ class Ui_MainWindow:
|
|||||||
|
|
||||||
self.lv_search_result.addWidget(self.te_debug)
|
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.lv_info = QVBoxLayout()
|
||||||
self.lh_main.setStretch(1, 60)
|
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("default_album_image.png"))
|
||||||
|
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(1, 50)
|
||||||
|
self.horizontalLayout.setStretch(2, 25)
|
||||||
MainWindow.setCentralWidget(self.w_central)
|
MainWindow.setCentralWidget(self.w_central)
|
||||||
self.menubar = QMenuBar(MainWindow)
|
self.menubar = QMenuBar(MainWindow)
|
||||||
self.menubar.setObjectName("menubar")
|
self.menubar.setObjectName("menubar")
|
||||||
self.menubar.setGeometry(QRect(0, 0, 900, 24))
|
self.menubar.setGeometry(QRect(0, 0, 1200, 24))
|
||||||
# if QT_CONFIG(tooltip)
|
# if QT_CONFIG(tooltip)
|
||||||
self.menubar.setToolTip("")
|
self.menubar.setToolTip("")
|
||||||
# endif // QT_CONFIG(tooltip)
|
# endif // QT_CONFIG(tooltip)
|
||||||
@@ -464,7 +548,7 @@ class Ui_MainWindow:
|
|||||||
self.a_logout.setText(QCoreApplication.translate("MainWindow", "Logout", None))
|
self.a_logout.setText(QCoreApplication.translate("MainWindow", "Logout", None))
|
||||||
self.a_updates_check.setText(QCoreApplication.translate("MainWindow", "Check for Updates", None))
|
self.a_updates_check.setText(QCoreApplication.translate("MainWindow", "Check for Updates", None))
|
||||||
___qtreewidgetitem = self.tr_lists_user.headerItem()
|
___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()
|
__sortingEnabled = self.tr_lists_user.isSortingEnabled()
|
||||||
self.tr_lists_user.setSortingEnabled(False)
|
self.tr_lists_user.setSortingEnabled(False)
|
||||||
@@ -477,14 +561,29 @@ class Ui_MainWindow:
|
|||||||
self.tr_lists_user.setSortingEnabled(__sortingEnabled)
|
self.tr_lists_user.setSortingEnabled(__sortingEnabled)
|
||||||
|
|
||||||
self.pb_reload_user_lists.setText(QCoreApplication.translate("MainWindow", "Reload", None))
|
self.pb_reload_user_lists.setText(QCoreApplication.translate("MainWindow", "Reload", None))
|
||||||
|
self.pb_download_list.setText(QCoreApplication.translate("MainWindow", "Download List", None))
|
||||||
___qtreewidgetitem4 = self.tr_results.headerItem()
|
___qtreewidgetitem4 = self.tr_results.headerItem()
|
||||||
___qtreewidgetitem4.setText(5, QCoreApplication.translate("MainWindow", "obj", None))
|
___qtreewidgetitem4.setText(6, QCoreApplication.translate("MainWindow", "Quality", None))
|
||||||
___qtreewidgetitem4.setText(4, QCoreApplication.translate("MainWindow", "Duration", None))
|
___qtreewidgetitem4.setText(5, QCoreApplication.translate("MainWindow", "Duration", None))
|
||||||
___qtreewidgetitem4.setText(3, QCoreApplication.translate("MainWindow", "Album", None))
|
___qtreewidgetitem4.setText(4, QCoreApplication.translate("MainWindow", "Album", None))
|
||||||
___qtreewidgetitem4.setText(2, QCoreApplication.translate("MainWindow", "Title", None))
|
___qtreewidgetitem4.setText(3, QCoreApplication.translate("MainWindow", "Title", None))
|
||||||
___qtreewidgetitem4.setText(1, QCoreApplication.translate("MainWindow", "Artist", None))
|
___qtreewidgetitem4.setText(2, QCoreApplication.translate("MainWindow", "Artist", None))
|
||||||
|
___qtreewidgetitem4.setText(1, QCoreApplication.translate("MainWindow", "obj", None))
|
||||||
___qtreewidgetitem4.setText(0, QCoreApplication.translate("MainWindow", "#", None))
|
___qtreewidgetitem4.setText(0, QCoreApplication.translate("MainWindow", "#", None))
|
||||||
self.te_debug.setPlaceholderText(QCoreApplication.translate("MainWindow", "Logs...", 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))
|
self.m_file.setTitle(QCoreApplication.translate("MainWindow", "File", None))
|
||||||
self.m_help.setTitle(QCoreApplication.translate("MainWindow", "Help", None))
|
self.m_help.setTitle(QCoreApplication.translate("MainWindow", "Help", None))
|
||||||
|
|
||||||
|
|||||||
+173
-16
@@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>900</width>
|
<width>1200</width>
|
||||||
<height>700</height>
|
<height>800</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@@ -38,14 +38,9 @@
|
|||||||
<property name="accessibleDescription">
|
<property name="accessibleDescription">
|
||||||
<string notr="true"/>
|
<string notr="true"/>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,50,25">
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="lh_main" stretch="40,60">
|
<layout class="QVBoxLayout" name="lv_list_user">
|
||||||
<property name="sizeConstraint">
|
|
||||||
<enum>QLayout::SetNoConstraint</enum>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTreeWidget" name="tr_lists_user">
|
<widget class="QTreeWidget" name="tr_lists_user">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
@@ -101,6 +96,11 @@
|
|||||||
<string notr="true"/>
|
<string notr="true"/>
|
||||||
</property>
|
</property>
|
||||||
</column>
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>obj</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
<column>
|
<column>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string notr="true">Info</string>
|
<string notr="true">Info</string>
|
||||||
@@ -115,11 +115,6 @@
|
|||||||
<string notr="true"/>
|
<string notr="true"/>
|
||||||
</property>
|
</property>
|
||||||
</column>
|
</column>
|
||||||
<column>
|
|
||||||
<property name="text">
|
|
||||||
<string>obj</string>
|
|
||||||
</property>
|
|
||||||
</column>
|
|
||||||
<item>
|
<item>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Playlists</string>
|
<string>Playlists</string>
|
||||||
@@ -164,6 +159,8 @@
|
|||||||
</item>
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="lv_list_control">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="pb_reload_user_lists">
|
<widget class="QPushButton" name="pb_reload_user_lists">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@@ -177,6 +174,21 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pb_download_list">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Download List</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
@@ -303,6 +315,11 @@
|
|||||||
<string>#</string>
|
<string>#</string>
|
||||||
</property>
|
</property>
|
||||||
</column>
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>obj</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
<column>
|
<column>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Artist</string>
|
<string>Artist</string>
|
||||||
@@ -325,7 +342,7 @@
|
|||||||
</column>
|
</column>
|
||||||
<column>
|
<column>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>obj</string>
|
<string>Quality</string>
|
||||||
</property>
|
</property>
|
||||||
</column>
|
</column>
|
||||||
</widget>
|
</widget>
|
||||||
@@ -510,6 +527,146 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="lv_info">
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="lv_info_item">
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<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="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>280</width>
|
||||||
|
<height>280</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="baseSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap>default_album_image.png</pixmap>
|
||||||
|
</property>
|
||||||
|
<property name="scaledContents">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<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="QTableWidget" name="ta_queue_dl">
|
||||||
|
<property name="editTriggers">
|
||||||
|
<set>QAbstractItemView::NoEditTriggers</set>
|
||||||
|
</property>
|
||||||
|
<property name="tabKeyNavigation">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="showDropIndicator" stdset="0">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="dragDropOverwriteMode">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="selectionMode">
|
||||||
|
<enum>QAbstractItemView::ExtendedSelection</enum>
|
||||||
|
</property>
|
||||||
|
<property name="selectionBehavior">
|
||||||
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sortingEnabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<attribute name="verticalHeaderShowSortIndicator" stdset="0">
|
||||||
|
<bool>true</bool>
|
||||||
|
</attribute>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>#</string>
|
||||||
|
</property>
|
||||||
|
<property name="textAlignment">
|
||||||
|
<set>AlignLeading|AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>obj</string>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Name</string>
|
||||||
|
</property>
|
||||||
|
<property name="textAlignment">
|
||||||
|
<set>AlignLeading|AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Type</string>
|
||||||
|
</property>
|
||||||
|
<property name="textAlignment">
|
||||||
|
<set>AlignLeading|AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
<column>
|
||||||
|
<property name="text">
|
||||||
|
<string>Quality</string>
|
||||||
|
</property>
|
||||||
|
<property name="textAlignment">
|
||||||
|
<set>AlignLeading|AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</column>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pb_queue_item_remove">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Remove</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
@@ -519,7 +676,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>900</width>
|
<width>1200</width>
|
||||||
<height>24</height>
|
<height>24</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
|||||||
Reference in New Issue
Block a user