aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/modules/sonix/SonixDevice.qml
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/modules/sonix/SonixDevice.qml')
-rw-r--r--desktop/modules/sonix/SonixDevice.qml108
1 files changed, 108 insertions, 0 deletions
diff --git a/desktop/modules/sonix/SonixDevice.qml b/desktop/modules/sonix/SonixDevice.qml
new file mode 100644
index 0000000..c52b2f4
--- /dev/null
+++ b/desktop/modules/sonix/SonixDevice.qml
@@ -0,0 +1,108 @@
+// Copyright (C) 2026 Danilo M. <danix@danix.xyz>
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2 as
+// published by the Free Software Foundation.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+import QtQuick
+import "../.."
+
+Column {
+ id: dev
+ signal go(string name)
+ readonly property var p: Sonix.player
+ spacing: 10
+
+ component Line: Row {
+ id: line
+ property string k: ""
+ property string v: ""
+ spacing: 10
+ Text {
+ width: 110
+ text: line.k
+ font { family: Theme.fontFamily; pixelSize: Theme.fontSize - 2 }
+ color: Theme.subtext
+ }
+ Text {
+ text: line.v
+ font { family: Theme.fontFamily; pixelSize: Theme.fontSize - 2 }
+ color: Theme.text
+ }
+ }
+
+ Line { k: "Name"; v: Sonix.name }
+ Line { k: "Address"; v: `${Sonix.host}:${Sonix.port}` }
+ Line {
+ k: "Battery"
+ v: dev.p.battery === undefined ? "\u2026" : dev.p.battery + "%" + (dev.p.charging ? ", charging" : "")
+ }
+ Row {
+ spacing: 10
+ Text {
+ width: 110
+ text: "Accent"
+ font { family: Theme.fontFamily; pixelSize: Theme.fontSize - 2 }
+ color: Theme.subtext
+ }
+ Rectangle {
+ width: 18; height: 18; radius: 4
+ color: dev.p.accent || "transparent"
+ border.width: 1
+ border.color: Qt.alpha(Theme.text, 0.2)
+ }
+ Text {
+ text: dev.p.accent || ""
+ font { family: Theme.fontFamily; pixelSize: Theme.fontSize - 2 }
+ color: Theme.text
+ }
+ }
+ Line {
+ k: "Library"
+ v: dev.p.scanning ? `scanning\u2026 ${dev.p.scan_count} found`
+ : dev.p.tracks === undefined ? "\u2026" : dev.p.tracks + " tracks"
+ }
+ Line {
+ k: "Now"
+ v: (["stopped", "playing", "paused"][dev.p.state || 0]) + (dev.p.title ? " \u00b7 " + dev.p.title : "")
+ }
+
+ Row {
+ spacing: 8
+ Button {
+ text: "Rescan"
+ enabled: !dev.p.scanning
+ onClicked: Sonix.command({ do: "scan" }, null, (ok, d, err) => msg.text = ok ? "" : err)
+ }
+ Button {
+ text: "Open Wi-Fi transfer"
+ onClicked: Qt.openUrlExternally(`http://${Sonix.host}/`)
+ }
+ Button {
+ text: "Boot logo\u2026"
+ onClicked: dev.go("bootlogo")
+ }
+ }
+
+ Text {
+ width: dev.width
+ wrapMode: Text.Wrap
+ text: "Wi-Fi transfer answers only while its page is open on the player."
+ font { family: Theme.fontFamily; pixelSize: Theme.fontSize - 5 }
+ color: Theme.subtext
+ }
+
+ Text {
+ id: msg
+ visible: text !== ""
+ width: dev.width
+ wrapMode: Text.Wrap
+ font { family: Theme.fontFamily; pixelSize: Theme.fontSize - 4 }
+ color: Theme.red
+ }
+}