debug window table working, ui changes, small bugfixes

This commit is contained in:
billypom on debian 2025-04-16 22:08:12 -04:00
parent d15e9f6c02
commit 2693973975
6 changed files with 258 additions and 314 deletions

View File

@ -44,7 +44,7 @@ class AudioVisualizer(QtWidgets.QWidget):
# Graphics plot
# Make sure PlotWidget doesn't exceed album art height
# Adjust to leave room for playback controls
self.PlotWidget.setFixedHeight(225)
self.PlotWidget.setFixedHeight(250)
# x range
self.PlotWidget.setXRange(
0, self.get_x_resolution(), padding=0

View File

@ -1,13 +1,15 @@
from collections.abc import Iterable
from PyQt5.QtWidgets import (
QAbstractScrollArea,
QDialog,
QHeaderView,
QPlainTextEdit,
QTableWidget,
QTableWidgetItem,
QVBoxLayout,
)
from pprint import pformat
from logging import debug
from logging import debug, error
class DebugWindow(QDialog):
@ -27,29 +29,33 @@ class DebugWindow(QDialog):
if isinstance(self.data, str):
self.input_field = QPlainTextEdit(pformat(self.data))
layout.addWidget(self.input_field)
elif isinstance(self.data, list):
table = QTableWidget()
else:
table: QTableWidget = QTableWidget()
table.setSizeAdjustPolicy(QAbstractScrollArea.SizeAdjustPolicy.AdjustToContents)
table.horizontalHeader().setStretchLastSection(True)
table.horizontalHeader().setSectionResizeMode(QHeaderView.Interactive)
if isinstance(self.data, list):
# big ol column
table.setRowCount(len(data))
table.setColumnCount(len(data[0]))
for ri, row_data in enumerate(data):
for ci, item in enumerate(row_data):
table.setItem(ri, ci, QTableWidgetItem(str(item)))
table.setColumnCount(1)
for i, item in enumerate(self.data):
table.setItem(i, 0, QTableWidgetItem(str(item)))
layout.addWidget(table)
elif isinstance(self.data, dict):
# FIXME: i wanna grow....woah
try:
table = QTableWidget()
rows = max(len(value) for value in data.keys())
table.setRowCount(rows)
table.setColumnCount(len(data))
table.setHorizontalHeaderLabels(data.keys())
for ci, (key, values) in enumerate(data.items()):
for ri, value in enumerate(values):
table.setItem(ri, ci, QTableWidgetItem(str(value)))
# | TIT2 | title goes here |
# | TDRC | 2025-05-05 |
table.setRowCount(len(data.keys()))
table.setColumnCount(2)
table.setHorizontalHeaderLabels(['Tag', 'Value'])
for i, (k, v) in enumerate(data.items()):
table.setItem(i, 0, QTableWidgetItem(str(k)))
table.setItem(i, 1, QTableWidgetItem(str(v)))
layout.addWidget(table)
except Exception as e:
data = str(self.data)
self.input_field = QPlainTextEdit(pformat(data + "\n\n" + str(e)))
layout.addWidget(self.input_field)
error(f'Tried to load self.data as dict but could not. {e}')
self.setLayout(layout)

View File

@ -221,7 +221,7 @@ class MusicTable(QTableView):
menu.addAction(open_containing_folder_action)
# view id3 tags (debug)
view_id3_tags_debug = QAction("View ID3 tags (debug)", self)
view_id3_tags_debug.triggered.connect(self.show_id3_tags_debug_menu)
view_id3_tags_debug.triggered.connect(self.view_id3_tags_debug_menu)
menu.addAction(view_id3_tags_debug)
# delete song
delete_action = QAction("Delete", self)
@ -292,7 +292,7 @@ class MusicTable(QTableView):
if key == Qt.Key.Key_Space:
self.toggle_play_pause()
elif key == Qt.Key.Key_Right:
if key == Qt.Key.Key_Right:
index = self.currentIndex()
new_index = self.model2.index(index.row(), index.column() + 1)
if new_index.isValid():
@ -565,7 +565,7 @@ class MusicTable(QTableView):
path = "/".join(filepath)
Popen(["xdg-open", path])
def show_id3_tags_debug_menu(self):
def view_id3_tags_debug_menu(self):
"""Shows ID3 tags for a specific .mp3 file"""
if self.get_selected_song_filepath() is not None:
window = DebugWindow(dict(self.get_selected_song_metadata()))

View File

@ -248,8 +248,8 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
## CONNECTIONS
# tableView
self.tableView.doubleClicked.connect(self.play_audio_file)
self.tableView.enterKey.connect(self.play_audio_file)
# self.tableView.doubleClicked.connect(self.play_audio_file)
# self.tableView.enterKey.connect(self.play_audio_file)
self.tableView.playSignal.connect(self.play_audio_file)
self.tableView.playPauseSignal.connect(
self.on_play_clicked
@ -419,7 +419,7 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
Start playback of `tableView.current_song_filepath` & moves playback slider
"""
if not filepath:
filepath = self.tableView.set_current_song_filepath()
filepath = self.tableView.get_current_song_filepath()
# get metadata
metadata = get_id3_tags(filepath)[0]
# read the file

181
ui.py
View File

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'ui.ui'
#
# Created by: PyQt5 UI code generator 5.15.11
# Created by: PyQt5 UI code generator 5.15.10
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
@ -45,15 +45,50 @@ class Ui_MainWindow(object):
self.vLayoutSongDetails.setObjectName("vLayoutSongDetails")
self.hLayoutHead.addLayout(self.vLayoutSongDetails)
self.vLayoutPlaybackVisuals = QtWidgets.QVBoxLayout()
self.vLayoutPlaybackVisuals.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
self.vLayoutPlaybackVisuals.setObjectName("vLayoutPlaybackVisuals")
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
self.horizontalLayout.setObjectName("horizontalLayout")
self.PlotWidget = PlotWidget(self.centralwidget)
self.PlotWidget.setObjectName("PlotWidget")
self.vLayoutPlaybackVisuals.addWidget(self.PlotWidget)
self.hLayoutHead.addLayout(self.vLayoutPlaybackVisuals)
self.hLayoutHead.setStretch(0, 1)
self.hLayoutHead.setStretch(2, 6)
self.verticalLayout.addLayout(self.hLayoutHead)
self.hLayoutMusicTable = QtWidgets.QHBoxLayout()
self.hLayoutMusicTable.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
self.hLayoutMusicTable.setContentsMargins(0, -1, 0, -1)
self.hLayoutMusicTable.setObjectName("hLayoutMusicTable")
self.playlistTreeView = PlaylistsPane(self.centralwidget)
self.playlistTreeView.setObjectName("playlistTreeView")
self.hLayoutMusicTable.addWidget(self.playlistTreeView)
self.tableView = MusicTable(self.centralwidget)
self.tableView.setObjectName("tableView")
self.hLayoutMusicTable.addWidget(self.tableView)
self.hLayoutMusicTable.setStretch(0, 2)
self.hLayoutMusicTable.setStretch(1, 10)
self.verticalLayout.addLayout(self.hLayoutMusicTable)
self.hLayoutCurrentSongDetails = QtWidgets.QHBoxLayout()
self.hLayoutCurrentSongDetails.setSpacing(6)
self.hLayoutCurrentSongDetails.setObjectName("hLayoutCurrentSongDetails")
self.hLayoutSongDetails = QtWidgets.QHBoxLayout()
self.hLayoutSongDetails.setObjectName("hLayoutSongDetails")
self.artistLabel = QtWidgets.QLabel(self.centralwidget)
self.artistLabel.setObjectName("artistLabel")
self.hLayoutSongDetails.addWidget(self.artistLabel)
self.titleLabel = QtWidgets.QLabel(self.centralwidget)
self.titleLabel.setObjectName("titleLabel")
self.hLayoutSongDetails.addWidget(self.titleLabel)
self.albumLabel = QtWidgets.QLabel(self.centralwidget)
self.albumLabel.setObjectName("albumLabel")
self.hLayoutSongDetails.addWidget(self.albumLabel)
self.hLayoutCurrentSongDetails.addLayout(self.hLayoutSongDetails)
self.verticalLayout.addLayout(self.hLayoutCurrentSongDetails)
self.hLayoutPlayback = QtWidgets.QHBoxLayout()
self.hLayoutPlayback.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
self.hLayoutPlayback.setObjectName("hLayoutPlayback")
self.playbackSlider = QtWidgets.QSlider(self.centralwidget)
self.playbackSlider.setOrientation(QtCore.Qt.Horizontal)
self.playbackSlider.setObjectName("playbackSlider")
self.horizontalLayout.addWidget(self.playbackSlider)
self.hLayoutPlayback.addWidget(self.playbackSlider)
self.timeHorizontalLayout2 = QtWidgets.QHBoxLayout()
self.timeHorizontalLayout2.setObjectName("timeHorizontalLayout2")
self.startTimeLabel = QtWidgets.QLabel(self.centralwidget)
@ -79,56 +114,26 @@ class Ui_MainWindow(object):
self.endTimeLabel.setFont(font)
self.endTimeLabel.setObjectName("endTimeLabel")
self.timeHorizontalLayout2.addWidget(self.endTimeLabel)
self.horizontalLayout.addLayout(self.timeHorizontalLayout2)
self.speedSlider = QtWidgets.QSlider(self.centralwidget)
self.speedSlider.setMinimum(0)
self.speedSlider.setMaximum(100)
self.speedSlider.setSingleStep(1)
self.speedSlider.setProperty("value", 50)
self.speedSlider.setOrientation(QtCore.Qt.Horizontal)
self.speedSlider.setInvertedAppearance(False)
self.speedSlider.setTickPosition(QtWidgets.QSlider.TicksAbove)
self.speedSlider.setObjectName("speedSlider")
self.horizontalLayout.addWidget(self.speedSlider)
self.speedLabel = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Monospace")
self.speedLabel.setFont(font)
self.speedLabel.setObjectName("speedLabel")
self.horizontalLayout.addWidget(self.speedLabel)
self.horizontalLayout.setStretch(0, 4)
self.horizontalLayout.setStretch(2, 4)
self.horizontalLayout.setStretch(3, 1)
self.vLayoutPlaybackVisuals.addLayout(self.horizontalLayout)
self.PlotWidget = PlotWidget(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.PlotWidget.sizePolicy().hasHeightForWidth())
self.PlotWidget.setSizePolicy(sizePolicy)
self.PlotWidget.setMaximumSize(QtCore.QSize(16777215, 150))
self.PlotWidget.setObjectName("PlotWidget")
self.vLayoutPlaybackVisuals.addWidget(self.PlotWidget)
self.hLayoutHead.addLayout(self.vLayoutPlaybackVisuals)
self.hLayoutHead.setStretch(0, 1)
self.hLayoutHead.setStretch(2, 6)
self.verticalLayout.addLayout(self.hLayoutHead)
self.hLayoutMusicTable = QtWidgets.QHBoxLayout()
self.hLayoutMusicTable.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
self.hLayoutMusicTable.setContentsMargins(0, -1, 0, -1)
self.hLayoutMusicTable.setObjectName("hLayoutMusicTable")
self.playlistTreeView = PlaylistsPane(self.centralwidget)
self.playlistTreeView.setObjectName("playlistTreeView")
self.hLayoutMusicTable.addWidget(self.playlistTreeView)
self.tableView = MusicTable(self.centralwidget)
self.tableView.setObjectName("tableView")
self.hLayoutMusicTable.addWidget(self.tableView)
self.hLayoutMusicTable.setStretch(0, 2)
self.hLayoutMusicTable.setStretch(1, 10)
self.verticalLayout.addLayout(self.hLayoutMusicTable)
self.hLayoutPlayback.addLayout(self.timeHorizontalLayout2)
self.hLayoutPlayback.setStretch(0, 4)
self.verticalLayout.addLayout(self.hLayoutPlayback)
self.hLayoutControls = QtWidgets.QHBoxLayout()
self.hLayoutControls.setSpacing(6)
self.hLayoutControls.setObjectName("hLayoutControls")
self.hLayoutVolume = QtWidgets.QHBoxLayout()
self.hLayoutVolume.setObjectName("hLayoutVolume")
self.volumeLabel = QtWidgets.QLabel(self.centralwidget)
self.volumeLabel.setObjectName("volumeLabel")
self.hLayoutVolume.addWidget(self.volumeLabel)
self.volumeSlider = QtWidgets.QSlider(self.centralwidget)
self.volumeSlider.setMinimum(-1)
self.volumeSlider.setMaximum(101)
self.volumeSlider.setProperty("value", 50)
self.volumeSlider.setOrientation(QtCore.Qt.Horizontal)
self.volumeSlider.setTickPosition(QtWidgets.QSlider.TicksAbove)
self.volumeSlider.setObjectName("volumeSlider")
self.hLayoutVolume.addWidget(self.volumeSlider)
self.hLayoutControls.addLayout(self.hLayoutVolume)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.hLayoutControls.addItem(spacerItem)
self.previousButton = QtWidgets.QPushButton(self.centralwidget)
@ -151,57 +156,36 @@ class Ui_MainWindow(object):
self.hLayoutControls.addWidget(self.nextButton)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.hLayoutControls.addItem(spacerItem1)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.speedSlider = QtWidgets.QSlider(self.centralwidget)
self.speedSlider.setMinimum(0)
self.speedSlider.setMaximum(100)
self.speedSlider.setSingleStep(1)
self.speedSlider.setProperty("value", 50)
self.speedSlider.setOrientation(QtCore.Qt.Horizontal)
self.speedSlider.setInvertedAppearance(False)
self.speedSlider.setTickPosition(QtWidgets.QSlider.TicksAbove)
self.speedSlider.setObjectName("speedSlider")
self.horizontalLayout_2.addWidget(self.speedSlider)
self.speedLabel = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Monospace")
self.speedLabel.setFont(font)
self.speedLabel.setObjectName("speedLabel")
self.horizontalLayout_2.addWidget(self.speedLabel)
self.hLayoutControls.addLayout(self.horizontalLayout_2)
self.hLayoutControls.setStretch(0, 1)
self.hLayoutControls.setStretch(1, 2)
self.hLayoutControls.setStretch(2, 2)
self.hLayoutControls.setStretch(3, 2)
self.hLayoutControls.setStretch(2, 1)
self.hLayoutControls.setStretch(3, 1)
self.hLayoutControls.setStretch(4, 1)
self.hLayoutControls.setStretch(6, 1)
self.verticalLayout.addLayout(self.hLayoutControls)
self.hLayoutControls2 = QtWidgets.QHBoxLayout()
self.hLayoutControls2.setSpacing(6)
self.hLayoutControls2.setObjectName("hLayoutControls2")
self.hLayoutVolume = QtWidgets.QHBoxLayout()
self.hLayoutVolume.setObjectName("hLayoutVolume")
self.volumeLabel = QtWidgets.QLabel(self.centralwidget)
self.volumeLabel.setObjectName("volumeLabel")
self.hLayoutVolume.addWidget(self.volumeLabel)
self.volumeSlider = QtWidgets.QSlider(self.centralwidget)
self.volumeSlider.setMinimum(-1)
self.volumeSlider.setMaximum(101)
self.volumeSlider.setProperty("value", 50)
self.volumeSlider.setOrientation(QtCore.Qt.Horizontal)
self.volumeSlider.setTickPosition(QtWidgets.QSlider.TicksAbove)
self.volumeSlider.setObjectName("volumeSlider")
self.hLayoutVolume.addWidget(self.volumeSlider)
self.hLayoutControls2.addLayout(self.hLayoutVolume)
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.hLayoutControls2.addItem(spacerItem2)
self.hLayoutSongDetails = QtWidgets.QHBoxLayout()
self.hLayoutSongDetails.setObjectName("hLayoutSongDetails")
self.artistLabel = QtWidgets.QLabel(self.centralwidget)
self.artistLabel.setObjectName("artistLabel")
self.hLayoutSongDetails.addWidget(self.artistLabel)
self.titleLabel = QtWidgets.QLabel(self.centralwidget)
self.titleLabel.setObjectName("titleLabel")
self.hLayoutSongDetails.addWidget(self.titleLabel)
self.albumLabel = QtWidgets.QLabel(self.centralwidget)
self.albumLabel.setObjectName("albumLabel")
self.hLayoutSongDetails.addWidget(self.albumLabel)
self.hLayoutControls2.addLayout(self.hLayoutSongDetails)
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.hLayoutControls2.addItem(spacerItem3)
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setObjectName("pushButton")
self.hLayoutControls2.addWidget(self.pushButton)
self.hLayoutControls2.setStretch(0, 1)
self.hLayoutControls2.setStretch(2, 5)
self.hLayoutControls2.setStretch(4, 1)
self.verticalLayout.addLayout(self.hLayoutControls2)
self.verticalLayout_3.addLayout(self.verticalLayout)
self.verticalLayout_3.setStretch(0, 20)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1152, 21))
self.menubar.setGeometry(QtCore.QRect(0, 0, 1152, 24))
self.menubar.setObjectName("menubar")
self.menuFile = QtWidgets.QMenu(self.menubar)
self.menuFile.setObjectName("menuFile")
@ -253,9 +237,8 @@ class Ui_MainWindow(object):
self.startTimeLabel.setText(_translate("MainWindow", "00:00"))
self.slashLabel.setText(_translate("MainWindow", "/"))
self.endTimeLabel.setText(_translate("MainWindow", "00:00"))
self.speedLabel.setText(_translate("MainWindow", "1.00"))
self.volumeLabel.setText(_translate("MainWindow", "50"))
self.pushButton.setText(_translate("MainWindow", "nothing"))
self.speedLabel.setText(_translate("MainWindow", "1.00"))
self.menuFile.setTitle(_translate("MainWindow", "File"))
self.menuEdit.setTitle(_translate("MainWindow", "Edit"))
self.menuView.setTitle(_translate("MainWindow", "View"))

255
ui.ui
View File

@ -19,7 +19,7 @@
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout_3" stretch="20">
<item>
<layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,0,0">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>6</number>
</property>
@ -65,11 +65,54 @@
</item>
<item>
<layout class="QVBoxLayout" name="vLayoutPlaybackVisuals">
<item>
<widget class="PlotWidget" name="PlotWidget" native="true"/>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="hLayoutMusicTable" stretch="2,10">
<property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout" stretch="4,0,4,1">
<widget class="PlaylistsPane" name="playlistTreeView"/>
</item>
<item>
<widget class="MusicTable" name="tableView"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="hLayoutCurrentSongDetails" stretch="0">
<property name="spacing">
<number>6</number>
</property>
<item>
<layout class="QHBoxLayout" name="hLayoutSongDetails" stretch="0,0,0">
<item>
<widget class="QLabel" name="artistLabel"/>
</item>
<item>
<widget class="QLabel" name="titleLabel"/>
</item>
<item>
<widget class="QLabel" name="albumLabel"/>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="hLayoutPlayback" stretch="4,0">
<property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum>
</property>
@ -125,146 +168,10 @@
</item>
</layout>
</item>
<item>
<widget class="QSlider" name="speedSlider">
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>1</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
<property name="tickPosition">
<enum>QSlider::TicksAbove</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="speedLabel">
<property name="font">
<font>
<family>Monospace</family>
</font>
</property>
<property name="text">
<string>1.00</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="PlotWidget" name="PlotWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>150</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="hLayoutMusicTable" stretch="2,10">
<property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<item>
<widget class="PlaylistsPane" name="playlistTreeView"/>
</item>
<item>
<widget class="MusicTable" name="tableView"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="hLayoutControls" stretch="1,2,2,2,1">
<property name="spacing">
<number>6</number>
</property>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="previousButton">
<property name="font">
<font>
<pointsize>28</pointsize>
</font>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="playButton">
<property name="font">
<font>
<pointsize>28</pointsize>
</font>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="nextButton">
<property name="font">
<font>
<pointsize>28</pointsize>
</font>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="hLayoutControls2" stretch="1,0,5,0,1">
<layout class="QHBoxLayout" name="hLayoutControls" stretch="1,0,1,1,1,0,1">
<property name="spacing">
<number>6</number>
</property>
@ -312,17 +219,31 @@
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="hLayoutSongDetails">
<item>
<widget class="QLabel" name="artistLabel"/>
<widget class="QPushButton" name="previousButton">
<property name="font">
<font>
<pointsize>28</pointsize>
</font>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="titleLabel"/>
<widget class="QPushButton" name="playButton">
<property name="font">
<font>
<pointsize>28</pointsize>
</font>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="albumLabel"/>
</item>
</layout>
<widget class="QPushButton" name="nextButton">
<property name="font">
<font>
<pointsize>28</pointsize>
</font>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
@ -338,12 +259,46 @@
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>nothing</string>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QSlider" name="speedSlider">
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>1</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="invertedAppearance">
<bool>false</bool>
</property>
<property name="tickPosition">
<enum>QSlider::TicksAbove</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="speedLabel">
<property name="font">
<font>
<family>Monospace</family>
</font>
</property>
<property name="text">
<string>1.00</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
@ -356,7 +311,7 @@
<x>0</x>
<y>0</y>
<width>1152</width>
<height>21</height>
<height>24</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">