2020-04-06 15:15:13 +08:00
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
<ui version="4.0">
|
|
|
|
<class>MainWindow</class>
|
|
|
|
<widget class="QMainWindow" name="MainWindow">
|
|
|
|
<property name="geometry">
|
|
|
|
<rect>
|
|
|
|
<x>0</x>
|
|
|
|
<y>0</y>
|
2020-04-07 19:09:08 +08:00
|
|
|
<width>490</width>
|
|
|
|
<height>420</height>
|
2020-04-06 15:15:13 +08:00
|
|
|
</rect>
|
|
|
|
</property>
|
|
|
|
<property name="minimumSize">
|
|
|
|
<size>
|
|
|
|
<width>485</width>
|
|
|
|
<height>160</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="windowTitle">
|
|
|
|
<string>Pineapple Player</string>
|
|
|
|
</property>
|
|
|
|
<property name="styleSheet">
|
|
|
|
<string notr="true">/****** Slider ******/
|
|
|
|
|
|
|
|
QSlider::groove:horizontal {
|
|
|
|
border: 1px solid grey;
|
|
|
|
border-radius: 3px;
|
|
|
|
height: 4px;
|
|
|
|
margin: 0px 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
QSlider::sub-page:horizontal {
|
|
|
|
border-radius: 3px;
|
|
|
|
background: rgb(85, 170, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
QSlider::groove:vertical {
|
|
|
|
border: 1px solid grey;
|
|
|
|
border-radius: 3px;
|
|
|
|
width: 4px;
|
|
|
|
margin: 0px 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
QSlider::handle:vertical {
|
|
|
|
border-radius: 3px;
|
|
|
|
border: 0px solid #5c5c5c;
|
|
|
|
background: rgb(85, 170, 0);
|
|
|
|
margin: -5px -5px -5px -5px;
|
|
|
|
top: 5px; bottom: 5px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QSlider::handle:vertical:hover {
|
|
|
|
border-radius: 3px;
|
|
|
|
border: 0px solid #5c5c5c;
|
|
|
|
background: rgb(85, 255, 0);
|
|
|
|
margin: -5px -5px -5px -5px;
|
|
|
|
top: 5px; bottom: 5px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QSlider::add-page:vertical {
|
|
|
|
border-radius: 3px;
|
|
|
|
background: rgb(85, 170, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
/****** PushButton ******/
|
|
|
|
|
|
|
|
QPushButton {
|
|
|
|
border: 0px solid grey;
|
|
|
|
background-color: transparent;
|
|
|
|
}
|
|
|
|
|
|
|
|
QPushButton:hover {
|
|
|
|
background-color: rgba(255, 255, 255, 220);
|
|
|
|
}
|
|
|
|
|
|
|
|
QPushButton:pressed {
|
|
|
|
background-color: rgba(255, 255, 255, 250);
|
|
|
|
}
|
|
|
|
|
|
|
|
QPushButton#closeWindowBtn {
|
|
|
|
color: white;
|
|
|
|
background-color: rgb(230, 0, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
QPushButton#closeWindowBtn:hover {
|
|
|
|
background-color: rgb(255, 0, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
/****** Label ******/
|
|
|
|
|
2020-04-06 20:23:29 +08:00
|
|
|
QLabel {
|
|
|
|
color: white;
|
|
|
|
}
|
|
|
|
|
|
|
|
QLabel#coverLabel {
|
2020-04-06 15:15:13 +08:00
|
|
|
border: 1px solid grey;
|
|
|
|
}</string>
|
|
|
|
</property>
|
|
|
|
<property name="locale">
|
|
|
|
<locale language="English" country="UnitedStates"/>
|
|
|
|
</property>
|
|
|
|
<widget class="QWidget" name="centralwidget">
|
|
|
|
<property name="sizePolicy">
|
|
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
|
|
|
<horstretch>0</horstretch>
|
|
|
|
<verstretch>0</verstretch>
|
|
|
|
</sizepolicy>
|
|
|
|
</property>
|
2020-04-07 19:09:08 +08:00
|
|
|
<layout class="QVBoxLayout" name="verticalLayout" stretch="0,0">
|
2020-04-06 15:15:13 +08:00
|
|
|
<property name="spacing">
|
|
|
|
<number>7</number>
|
|
|
|
</property>
|
|
|
|
<property name="leftMargin">
|
2020-04-07 19:09:08 +08:00
|
|
|
<number>0</number>
|
2020-04-06 15:15:13 +08:00
|
|
|
</property>
|
|
|
|
<property name="topMargin">
|
|
|
|
<number>0</number>
|
|
|
|
</property>
|
|
|
|
<property name="rightMargin">
|
|
|
|
<number>0</number>
|
|
|
|
</property>
|
|
|
|
<property name="bottomMargin">
|
|
|
|
<number>0</number>
|
|
|
|
</property>
|
|
|
|
<item>
|
2020-04-07 19:09:08 +08:00
|
|
|
<widget class="QFrame" name="playerFrame">
|
|
|
|
<property name="sizePolicy">
|
|
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
|
|
<horstretch>0</horstretch>
|
|
|
|
<verstretch>0</verstretch>
|
|
|
|
</sizepolicy>
|
|
|
|
</property>
|
|
|
|
<property name="minimumSize">
|
|
|
|
<size>
|
|
|
|
<width>0</width>
|
|
|
|
<height>160</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="maximumSize">
|
|
|
|
<size>
|
|
|
|
<width>16777215</width>
|
|
|
|
<height>160</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,0">
|
|
|
|
<property name="spacing">
|
|
|
|
<number>10</number>
|
|
|
|
</property>
|
|
|
|
<property name="leftMargin">
|
|
|
|
<number>10</number>
|
|
|
|
</property>
|
|
|
|
<property name="topMargin">
|
|
|
|
<number>0</number>
|
|
|
|
</property>
|
|
|
|
<property name="rightMargin">
|
|
|
|
<number>0</number>
|
|
|
|
</property>
|
|
|
|
<property name="bottomMargin">
|
|
|
|
<number>0</number>
|
|
|
|
</property>
|
|
|
|
<item>
|
|
|
|
<widget class="QLabel" name="coverLabel">
|
|
|
|
<property name="sizePolicy">
|
|
|
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
|
|
<horstretch>0</horstretch>
|
|
|
|
<verstretch>0</verstretch>
|
|
|
|
</sizepolicy>
|
|
|
|
</property>
|
|
|
|
<property name="minimumSize">
|
|
|
|
<size>
|
|
|
|
<width>128</width>
|
|
|
|
<height>128</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="maximumSize">
|
|
|
|
<size>
|
|
|
|
<width>128</width>
|
|
|
|
<height>128</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="text">
|
|
|
|
<string>AlbumCover</string>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<layout class="QVBoxLayout" name="playerContainerLayout" stretch="0,1">
|
|
|
|
<property name="spacing">
|
|
|
|
<number>0</number>
|
|
|
|
</property>
|
|
|
|
<item>
|
|
|
|
<layout class="QHBoxLayout" name="titlebarLayout">
|
|
|
|
<property name="spacing">
|
|
|
|
<number>0</number>
|
|
|
|
</property>
|
|
|
|
<item>
|
|
|
|
<spacer name="horizontalSpacer">
|
|
|
|
<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="miniModeBtn">
|
|
|
|
<property name="maximumSize">
|
|
|
|
<size>
|
|
|
|
<width>25</width>
|
|
|
|
<height>20</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="text">
|
|
|
|
<string>^</string>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<widget class="QPushButton" name="minimumWindowBtn">
|
|
|
|
<property name="maximumSize">
|
|
|
|
<size>
|
|
|
|
<width>25</width>
|
|
|
|
<height>20</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="text">
|
|
|
|
<string/>
|
|
|
|
</property>
|
|
|
|
<property name="icon">
|
|
|
|
<iconset resource="resources.qrc">
|
|
|
|
<normaloff>:/icons/icons/window-minimize.png</normaloff>:/icons/icons/window-minimize.png</iconset>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<widget class="QPushButton" name="closeWindowBtn">
|
|
|
|
<property name="minimumSize">
|
|
|
|
<size>
|
|
|
|
<width>40</width>
|
|
|
|
<height>20</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="maximumSize">
|
|
|
|
<size>
|
|
|
|
<width>40</width>
|
|
|
|
<height>20</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="text">
|
|
|
|
<string/>
|
|
|
|
</property>
|
|
|
|
<property name="icon">
|
|
|
|
<iconset resource="resources.qrc">
|
|
|
|
<normaloff>:/icons/icons/window-close.png</normaloff>:/icons/icons/window-close.png</iconset>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
</layout>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<layout class="QVBoxLayout" name="playerPanelLayout">
|
|
|
|
<property name="sizeConstraint">
|
|
|
|
<enum>QLayout::SetDefaultConstraint</enum>
|
|
|
|
</property>
|
|
|
|
<property name="rightMargin">
|
|
|
|
<number>10</number>
|
|
|
|
</property>
|
|
|
|
<property name="bottomMargin">
|
|
|
|
<number>10</number>
|
|
|
|
</property>
|
|
|
|
<item>
|
|
|
|
<widget class="QLabel" name="titleLabel">
|
|
|
|
<property name="sizePolicy">
|
|
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
|
|
|
<horstretch>0</horstretch>
|
|
|
|
<verstretch>0</verstretch>
|
|
|
|
</sizepolicy>
|
|
|
|
</property>
|
|
|
|
<property name="text">
|
|
|
|
<string>No song loaded...</string>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<widget class="QLabel" name="propLabel">
|
|
|
|
<property name="text">
|
|
|
|
<string>44100 Hz | 233 Kbps | Stereo | MP3</string>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<layout class="QHBoxLayout" name="playbackTimeLayout">
|
|
|
|
<item>
|
|
|
|
<widget class="QLabel" name="nowTimeLabel">
|
|
|
|
<property name="text">
|
|
|
|
<string>0:00</string>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<widget class="QLabel" name="totalTimeLabel">
|
|
|
|
<property name="text">
|
|
|
|
<string>0:00</string>
|
|
|
|
</property>
|
|
|
|
<property name="alignment">
|
|
|
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
</layout>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<widget class="SeekableSlider" name="playbackSlider">
|
|
|
|
<property name="maximum">
|
|
|
|
<number>1000</number>
|
|
|
|
</property>
|
|
|
|
<property name="orientation">
|
|
|
|
<enum>Qt::Horizontal</enum>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<layout class="QHBoxLayout" name="playbackControlLayout">
|
|
|
|
<property name="spacing">
|
|
|
|
<number>5</number>
|
|
|
|
</property>
|
|
|
|
<item>
|
|
|
|
<widget class="QPushButton" name="playBtn">
|
|
|
|
<property name="minimumSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="maximumSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="locale">
|
|
|
|
<locale language="English" country="UnitedStates"/>
|
|
|
|
</property>
|
|
|
|
<property name="text">
|
|
|
|
<string/>
|
|
|
|
</property>
|
|
|
|
<property name="icon">
|
|
|
|
<iconset resource="resources.qrc">
|
|
|
|
<normaloff>:/icons/icons/media-playback-start.png</normaloff>:/icons/icons/media-playback-start.png</iconset>
|
|
|
|
</property>
|
|
|
|
<property name="iconSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<widget class="QPushButton" name="stopBtn">
|
|
|
|
<property name="minimumSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="maximumSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="text">
|
|
|
|
<string/>
|
|
|
|
</property>
|
|
|
|
<property name="icon">
|
|
|
|
<iconset resource="resources.qrc">
|
|
|
|
<normaloff>:/icons/icons/media-playback-stop.png</normaloff>:/icons/icons/media-playback-stop.png</iconset>
|
|
|
|
</property>
|
|
|
|
<property name="iconSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<widget class="QPushButton" name="prevBtn">
|
|
|
|
<property name="minimumSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="maximumSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="text">
|
|
|
|
<string/>
|
|
|
|
</property>
|
|
|
|
<property name="icon">
|
|
|
|
<iconset resource="resources.qrc">
|
|
|
|
<normaloff>:/icons/icons/media-skip-backward.png</normaloff>:/icons/icons/media-skip-backward.png</iconset>
|
|
|
|
</property>
|
|
|
|
<property name="iconSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<widget class="QPushButton" name="nextBtn">
|
|
|
|
<property name="minimumSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="maximumSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="text">
|
|
|
|
<string/>
|
|
|
|
</property>
|
|
|
|
<property name="icon">
|
|
|
|
<iconset resource="resources.qrc">
|
|
|
|
<normaloff>:/icons/icons/media-skip-forward.png</normaloff>:/icons/icons/media-skip-forward.png</iconset>
|
|
|
|
</property>
|
|
|
|
<property name="iconSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<widget class="QPushButton" name="playListBtn">
|
|
|
|
<property name="minimumSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="maximumSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="text">
|
|
|
|
<string/>
|
|
|
|
</property>
|
|
|
|
<property name="icon">
|
|
|
|
<iconset resource="resources.qrc">
|
|
|
|
<normaloff>:/icons/icons/view-media-playlist.png</normaloff>:/icons/icons/view-media-playlist.png</iconset>
|
|
|
|
</property>
|
|
|
|
<property name="iconSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<widget class="QPushButton" name="playbackModeBtn">
|
|
|
|
<property name="minimumSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="maximumSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="text">
|
|
|
|
<string/>
|
|
|
|
</property>
|
|
|
|
<property name="icon">
|
|
|
|
<iconset resource="resources.qrc">
|
|
|
|
<normaloff>:/icons/icons/media-playlist-repeat.png</normaloff>:/icons/icons/media-playlist-repeat.png</iconset>
|
|
|
|
</property>
|
|
|
|
<property name="iconSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<widget class="QPushButton" name="volumeBtn">
|
|
|
|
<property name="minimumSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="maximumSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="text">
|
|
|
|
<string/>
|
|
|
|
</property>
|
|
|
|
<property name="icon">
|
|
|
|
<iconset resource="resources.qrc">
|
|
|
|
<normaloff>:/icons/icons/audio-volume-high.png</normaloff>:/icons/icons/audio-volume-high.png</iconset>
|
|
|
|
</property>
|
|
|
|
<property name="iconSize">
|
|
|
|
<size>
|
|
|
|
<width>32</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<widget class="SeekableSlider" name="volumeSlider">
|
|
|
|
<property name="minimumSize">
|
|
|
|
<size>
|
|
|
|
<width>64</width>
|
|
|
|
<height>32</height>
|
|
|
|
</size>
|
|
|
|
</property>
|
|
|
|
<property name="maximum">
|
|
|
|
<number>100</number>
|
|
|
|
</property>
|
|
|
|
<property name="value">
|
|
|
|
<number>100</number>
|
|
|
|
</property>
|
|
|
|
<property name="orientation">
|
|
|
|
<enum>Qt::Horizontal</enum>
|
|
|
|
</property>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
</layout>
|
|
|
|
</item>
|
|
|
|
</layout>
|
|
|
|
</item>
|
|
|
|
</layout>
|
|
|
|
</item>
|
|
|
|
</layout>
|
|
|
|
</widget>
|
|
|
|
</item>
|
|
|
|
<item>
|
|
|
|
<widget class="QWidget" name="pluginWidget" native="true">
|
|
|
|
<property name="sizePolicy">
|
|
|
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
|
|
|
<horstretch>0</horstretch>
|
|
|
|
<verstretch>0</verstretch>
|
|
|
|
</sizepolicy>
|
|
|
|
</property>
|
|
|
|
<property name="minimumSize">
|
|
|
|
<size>
|
|
|
|
<width>0</width>
|
|
|
|
<height>0</height>
|
|
|
|
</size>
|
2020-04-06 15:15:13 +08:00
|
|
|
</property>
|
2020-04-07 19:09:08 +08:00
|
|
|
</widget>
|
2020-04-06 15:15:13 +08:00
|
|
|
</item>
|
|
|
|
</layout>
|
|
|
|
</widget>
|
|
|
|
</widget>
|
|
|
|
<customwidgets>
|
|
|
|
<customwidget>
|
|
|
|
<class>SeekableSlider</class>
|
|
|
|
<extends>QSlider</extends>
|
|
|
|
<header>seekableslider.h</header>
|
|
|
|
</customwidget>
|
|
|
|
</customwidgets>
|
|
|
|
<resources>
|
|
|
|
<include location="resources.qrc"/>
|
|
|
|
</resources>
|
|
|
|
<connections/>
|
|
|
|
</ui>
|