|
|
@@ -2,68 +2,88 @@ import QtQuick 2.15
|
|
|
import QtQuick.Controls 2.15
|
|
|
import QtQuick.Layouts 1.15
|
|
|
import DuneWeaver 1.0
|
|
|
+import "../components" as Components
|
|
|
|
|
|
Page {
|
|
|
+ background: Rectangle {
|
|
|
+ color: Components.ThemeManager.backgroundColor
|
|
|
+ }
|
|
|
+
|
|
|
header: ToolBar {
|
|
|
+ background: Rectangle {
|
|
|
+ color: Components.ThemeManager.surfaceColor
|
|
|
+ border.color: Components.ThemeManager.borderColor
|
|
|
+ border.width: 1
|
|
|
+ }
|
|
|
+
|
|
|
RowLayout {
|
|
|
anchors.fill: parent
|
|
|
anchors.margins: 10
|
|
|
-
|
|
|
+
|
|
|
Button {
|
|
|
text: "← Back"
|
|
|
font.pixelSize: 14
|
|
|
flat: true
|
|
|
onClicked: stackView.pop()
|
|
|
+ contentItem: Text {
|
|
|
+ text: parent.text
|
|
|
+ font: parent.font
|
|
|
+ color: Components.ThemeManager.textPrimary
|
|
|
+ horizontalAlignment: Text.AlignHCenter
|
|
|
+ verticalAlignment: Text.AlignVCenter
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
Label {
|
|
|
text: "Playlists"
|
|
|
Layout.fillWidth: true
|
|
|
font.pixelSize: 20
|
|
|
font.bold: true
|
|
|
+ color: Components.ThemeManager.textPrimary
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
PlaylistModel {
|
|
|
id: playlistModel
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
ListView {
|
|
|
anchors.fill: parent
|
|
|
anchors.margins: 20
|
|
|
model: playlistModel
|
|
|
spacing: 10
|
|
|
-
|
|
|
+
|
|
|
delegate: Rectangle {
|
|
|
width: parent.width
|
|
|
height: 80
|
|
|
- color: mouseArea.pressed ? "#e0e0e0" : "#f5f5f5"
|
|
|
+ color: mouseArea.pressed ? Components.ThemeManager.buttonBackgroundHover : Components.ThemeManager.cardColor
|
|
|
radius: 8
|
|
|
- border.color: "#d0d0d0"
|
|
|
-
|
|
|
+ border.color: Components.ThemeManager.borderColor
|
|
|
+
|
|
|
RowLayout {
|
|
|
anchors.fill: parent
|
|
|
anchors.margins: 15
|
|
|
spacing: 15
|
|
|
-
|
|
|
+
|
|
|
Column {
|
|
|
Layout.fillWidth: true
|
|
|
spacing: 5
|
|
|
-
|
|
|
+
|
|
|
Label {
|
|
|
text: model.name
|
|
|
font.pixelSize: 16
|
|
|
font.bold: true
|
|
|
+ color: Components.ThemeManager.textPrimary
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
Label {
|
|
|
text: model.itemCount + " patterns"
|
|
|
- color: "#666"
|
|
|
+ color: Components.ThemeManager.textSecondary
|
|
|
font.pixelSize: 14
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
Button {
|
|
|
text: "Play"
|
|
|
Layout.preferredWidth: 80
|
|
|
@@ -72,7 +92,7 @@ Page {
|
|
|
enabled: false // TODO: Implement playlist execution
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
MouseArea {
|
|
|
id: mouseArea
|
|
|
anchors.fill: parent
|
|
|
@@ -82,12 +102,12 @@ Page {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
Label {
|
|
|
anchors.centerIn: parent
|
|
|
text: "No playlists found"
|
|
|
visible: playlistModel.rowCount() === 0
|
|
|
- color: "#999"
|
|
|
+ color: Components.ThemeManager.textTertiary
|
|
|
font.pixelSize: 18
|
|
|
}
|
|
|
}
|