playtypus/playtypus/ui_mainwindow.py

256 lines
14 KiB
Python

# -*- coding: utf-8 -*-
import qtawesome as qta
from PyQt5 import QtCore, QtGui, QtWidgets
LIST_WIDGET_STYLES = """
QListWidget {
border: 0;
}
"""
class UiMainWindow(object):
def setup_ui(self):
self.setWindowIcon(QtGui.QIcon(":/icon/playtypus.png"))
self.setObjectName("MainWindow")
self.resize(719, 574)
self.setStyleSheet(LIST_WIDGET_STYLES)
self.centralwidget = QtWidgets.QWidget(self)
self.centralwidget.setObjectName("centralwidget")
self.centralLayout = QtWidgets.QVBoxLayout(self.centralwidget)
self.centralLayout.setContentsMargins(0, 0, 0, 0)
self.centralLayout.setSpacing(0)
self.centralLayout.setObjectName("centralLayout")
# Playback toolbar
self.playbackToolBar = QtWidgets.QToolBar(self)
self.playbackToolBar.setMovable(False)
self.playbackToolBar.setIconSize(QtCore.QSize(32, 32))
self.playbackToolBar.setObjectName("playbackToolBar")
self.toggleAction = self.playbackToolBar.addAction(qta.icon("mdi.chevron-down"), '')
self.previousAction = self.playbackToolBar.addAction(qta.icon("mdi.skip-previous"), '')
self.playAction = self.playbackToolBar.addAction(qta.icon("mdi.play"), '')
self.nextAction = self.playbackToolBar.addAction(qta.icon("mdi.skip-next"), '')
self.positionLabel = QtWidgets.QLabel()
self.positionLabel.setAlignment(QtCore.Qt.AlignCenter)
self.positionLabel.setObjectName("positionLabel")
self.playbackToolBar.addWidget(self.positionLabel)
self.positionSlider = QtWidgets.QSlider()
self.positionSlider.setOrientation(QtCore.Qt.Horizontal)
self.positionSlider.setObjectName("positionSlider")
self.playbackToolBar.addWidget(self.positionSlider)
self.shuffleAction = self.playbackToolBar.addAction(qta.icon("mdi.shuffle"), '')
self.repeatAction = self.playbackToolBar.addAction(qta.icon("mdi.repeat"), '')
self.muteAction = self.playbackToolBar.addAction(qta.icon("mdi.volume-high"), '')
self.muteAction.setCheckable(True)
self.volumeSlider = QtWidgets.QSlider()
self.volumeSlider.setOrientation(QtCore.Qt.Horizontal)
self.volumeSlider.setObjectName("volumeSlider")
self.playbackToolBar.addWidget(self.volumeSlider)
self.mainMenu = QtWidgets.QMenu()
self.settingsAction = self.mainMenu.addAction(qta.icon('mdi.application-settings'), '')
self.menuAction = self.playbackToolBar.addAction(qta.icon("mdi.menu"), '')
self.menuAction.setMenu(self.mainMenu)
menuButton = self.playbackToolBar.widgetForAction(self.menuAction)
self.menuAction.triggered.connect(menuButton.showMenu)
self.addToolBar(self.playbackToolBar)
# Splitter and main components
self.splitter = QtWidgets.QSplitter(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.splitter.sizePolicy().hasHeightForWidth())
self.splitter.setSizePolicy(sizePolicy)
self.splitter.setOrientation(QtCore.Qt.Horizontal)
self.splitter.setHandleWidth(1)
self.splitter.setObjectName("splitter")
self.viewListWidget = QtWidgets.QListWidget(self.splitter)
self.viewListWidget.setIconSize(QtCore.QSize(40, 40))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.viewListWidget.sizePolicy().hasHeightForWidth())
self.viewListWidget.setSizePolicy(sizePolicy)
self.viewListWidget.setObjectName("viewListWidget")
self.stackedWidget = QtWidgets.QStackedWidget(self.splitter)
self.stackedWidget.setObjectName("stackedWidget")
# Albums page
self.albumPage = QtWidgets.QWidget()
self.albumPage.setObjectName("albumPage")
self.albumPageLayout = QtWidgets.QVBoxLayout(self.albumPage)
self.albumPageLayout.setContentsMargins(0, 0, 0, 0)
self.albumPageLayout.setSpacing(0)
self.albumPageLayout.setObjectName("albumPageLayout")
self.albumPageTitleLayout = QtWidgets.QHBoxLayout()
self.albumPageTitleLayout.setContentsMargins(0, 0, 0, 0)
self.albumPageTitleLayout.setSpacing(0)
self.albumPageTitleLayout.setObjectName("albumPageTitleLayout")
self.albumPageIconLabel = QtWidgets.QLabel(self.albumPage)
self.albumPageIconLabel.setMaximumSize(36, 36)
self.albumPageIconLabel.setPixmap(qta.icon('mdi.album').pixmap(32))
self.albumPageTitleLayout.addWidget(self.albumPageIconLabel)
self.albumPageTitleLabel = QtWidgets.QLabel(self.albumPage)
self.albumPageTitleLayout.addWidget(self.albumPageTitleLabel)
self.albumPageTotalLabel = QtWidgets.QLabel(self.albumPage)
self.albumPageTotalLabel.setAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignRight)
self.albumPageTotalLabel.setIndent(4)
self.albumPageTotalLabel.setText('0')
self.albumPageTitleLayout.addWidget(self.albumPageTotalLabel)
self.albumPageLayout.addLayout(self.albumPageTitleLayout)
self.albumListWidget = QtWidgets.QListWidget(self.albumPage)
self.albumListWidget.setObjectName("albumListWidget")
self.albumListWidget.setSortingEnabled(True)
self.albumListWidget.setIconSize(QtCore.QSize(100, 100))
self.albumPageLayout.addWidget(self.albumListWidget)
self.stackedWidget.addWidget(self.albumPage)
# Artists page
self.artistPage = QtWidgets.QWidget()
self.artistPage.setObjectName("artistPage")
self.artistPageLayout = QtWidgets.QVBoxLayout(self.artistPage)
self.artistPageLayout.setContentsMargins(0, 0, 0, 0)
self.artistPageLayout.setSpacing(0)
self.artistPageLayout.setObjectName("artistPageLayout")
self.artistPageTitleLayout = QtWidgets.QHBoxLayout()
self.artistPageTitleLayout.setContentsMargins(0, 0, 0, 0)
self.artistPageTitleLayout.setSpacing(0)
self.artistPageTitleLayout.setObjectName("artistPageTitleLayout")
self.artistPageIconLabel = QtWidgets.QLabel(self.artistPage)
self.artistPageIconLabel.setMaximumSize(36, 36)
self.artistPageIconLabel.setPixmap(qta.icon('mdi.account').pixmap(32))
self.artistPageTitleLayout.addWidget(self.artistPageIconLabel)
self.artistPageTitleLabel = QtWidgets.QLabel(self.artistPage)
self.artistPageTitleLayout.addWidget(self.artistPageTitleLabel)
self.artistPageTotalLabel = QtWidgets.QLabel(self.artistPage)
self.artistPageTotalLabel.setAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignRight)
self.artistPageTotalLabel.setIndent(4)
self.artistPageTotalLabel.setText('0')
self.artistPageTitleLayout.addWidget(self.artistPageTotalLabel)
self.artistPageLayout.addLayout(self.artistPageTitleLayout)
self.artistListWidget = QtWidgets.QListWidget(self.artistPage)
self.artistListWidget.setObjectName("artistListWidget")
self.artistListWidget.setSortingEnabled(True)
self.artistListWidget.setIconSize(QtCore.QSize(100, 100))
self.artistPageLayout.addWidget(self.artistListWidget)
self.stackedWidget.addWidget(self.artistPage)
# Playlists page
self.playlistPage = QtWidgets.QWidget()
self.playlistPage.setObjectName("playlistPage")
self.playlistPageLayout = QtWidgets.QVBoxLayout(self.playlistPage)
self.playlistPageLayout.setContentsMargins(0, 0, 0, 0)
self.playlistPageLayout.setSpacing(0)
self.playlistPageLayout.setObjectName("playlistPageLayout")
self.playlistPageTitleLayout = QtWidgets.QHBoxLayout()
self.playlistPageTitleLayout.setContentsMargins(0, 0, 0, 0)
self.playlistPageTitleLayout.setSpacing(0)
self.playlistPageTitleLayout.setObjectName("playlistPageTitleLayout")
self.playlistPageIconLabel = QtWidgets.QLabel(self.playlistPage)
self.playlistPageIconLabel.setMaximumSize(36, 36)
self.playlistPageIconLabel.setPixmap(qta.icon('mdi.playlist-music').pixmap(32))
self.playlistPageTitleLayout.addWidget(self.playlistPageIconLabel)
self.playlistPageTitleLabel = QtWidgets.QLabel(self.playlistPage)
self.playlistPageTitleLayout.addWidget(self.playlistPageTitleLabel)
self.playlistPageTotalLabel = QtWidgets.QLabel(self.playlistPage)
self.playlistPageTotalLabel.setAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignRight)
self.playlistPageTotalLabel.setIndent(4)
self.playlistPageTotalLabel.setText('0')
self.playlistPageTitleLayout.addWidget(self.playlistPageTotalLabel)
self.playlistPageLayout.addLayout(self.playlistPageTitleLayout)
self.playlistListWidget = QtWidgets.QListWidget(self.playlistPage)
self.playlistListWidget.setObjectName("playlistListWidget")
self.playlistListWidget.setSortingEnabled(True)
self.playlistListWidget.setIconSize(QtCore.QSize(64, 64))
self.playlistPageLayout.addWidget(self.playlistListWidget)
self.stackedWidget.addWidget(self.playlistPage)
# Radio page
self.radioPage = QtWidgets.QWidget()
self.radioPage.setObjectName("radioPage")
self.radioPageLayout = QtWidgets.QVBoxLayout(self.radioPage)
self.radioPageLayout.setContentsMargins(0, 0, 0, 0)
self.radioPageLayout.setSpacing(0)
self.radioPageLayout.setObjectName("radioPageLayout")
self.radioPageTitleLayout = QtWidgets.QHBoxLayout()
self.radioPageTitleLayout.setContentsMargins(0, 0, 0, 0)
self.radioPageTitleLayout.setSpacing(0)
self.radioPageTitleLayout.setObjectName("radioPageTitleLayout")
self.radioPageIconLabel = QtWidgets.QLabel(self.radioPage)
self.radioPageIconLabel.setMaximumSize(36, 36)
self.radioPageIconLabel.setPixmap(qta.icon('mdi.radio').pixmap(32))
self.radioPageTitleLayout.addWidget(self.radioPageIconLabel)
self.radioPageTitleLabel = QtWidgets.QLabel(self.radioPage)
self.radioPageTitleLayout.addWidget(self.radioPageTitleLabel)
self.radioPageTotalLabel = QtWidgets.QLabel(self.radioPage)
self.radioPageTotalLabel.setAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignRight)
self.radioPageTotalLabel.setIndent(4)
self.radioPageTotalLabel.setText('0')
self.radioPageTitleLayout.addWidget(self.radioPageTotalLabel)
self.radioPageLayout.addLayout(self.radioPageTitleLayout)
self.radioListWidget = QtWidgets.QListWidget(self.radioPage)
self.radioListWidget.setObjectName("radioListWidget")
self.radioListWidget.setSortingEnabled(True)
self.radioListWidget.setIconSize(QtCore.QSize(64, 64))
self.radioPageLayout.addWidget(self.radioListWidget)
self.stackedWidget.addWidget(self.radioPage)
# Playlist
self.playlistWidget = QtWidgets.QListWidget(self.splitter)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.MinimumExpanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.playlistWidget.sizePolicy().hasHeightForWidth())
self.playlistWidget.setSizePolicy(sizePolicy)
self.playlistWidget.setObjectName("playlistWidget")
self.centralLayout.addWidget(self.splitter)
self.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(self)
self.statusbar.setObjectName("statusbar")
self.setStatusBar(self.statusbar)
self.albumsListItem = QtWidgets.QListWidgetItem(qta.icon('mdi.album'), '')
self.artistsListItem = QtWidgets.QListWidgetItem(qta.icon('mdi.account'), '')
self.playlistsListItem = QtWidgets.QListWidgetItem(qta.icon('mdi.playlist-music'), '')
self.radiosListItem = QtWidgets.QListWidgetItem(qta.icon('mdi.music'), '')
for item in [self.albumsListItem, self.artistsListItem, self.playlistsListItem, self.radiosListItem]:
self.viewListWidget.addItem(item)
self.splitter.setStretchFactor(1, 1)
self.retranslate_ui()
self.viewListWidget.currentRowChanged.connect(self.on_view_list_current_row_changed)
self.viewListWidget.setCurrentRow(0)
QtCore.QMetaObject.connectSlotsByName(self)
self.viewListWidget.setFocus()
def retranslate_ui(self):
_translate = QtCore.QCoreApplication.translate
self.setWindowTitle(_translate("MainWindow", "Playtypus"))
self.positionLabel.setText(_translate("MainWindow", "01:43"))
self.playAction.setText(_translate("MainWindow", "&Play"))
self.playAction.setToolTip(_translate("MainWindow", "Play"))
self.settingsAction.setText(_translate("MainWindow", "&Configure"))
self.albumsListItem.setText(_translate("MainWindow", "Albums"))
self.albumPageTitleLabel.setText(_translate("MainWindow", "Albums"))
self.artistsListItem.setText(_translate("MainWindow", "Artists"))
self.artistPageTitleLabel.setText(_translate("MainWindow", "Artists"))
self.radiosListItem.setText(_translate("MainWindow", "Radio"))
self.radioPageTitleLabel.setText(_translate("MainWindow", "Radio"))
self.playlistsListItem.setText(_translate("MainWindow", "Playlists"))
self.playlistPageTitleLabel.setText(_translate("MainWindow", "Playlists"))
def on_menu_button_clicked(self):
pos = self.mapToGlobal(self.menuButton.geometry().bottomRight())
pos.setX(pos.x() - self.mainMenu.geometry().width())
self.mainMenu.exec(pos)
def on_view_list_current_row_changed(self, current_row):
self.stackedWidget.setCurrentIndex(current_row)
def update_album_total(self, value):
self.albumPageTotalLabel.setText(str(value))
def update_artist_total(self, value):
self.artistPageTotalLabel.setText(str(value))
def update_playlist_total(self, value):
self.playlistPageTotalLabel.setText(str(value))
def update_radio_total(self, value):
self.radioPageTotalLabel.setText(str(value))