Files
librepods/linux/Main.qml
2025-04-17 13:05:24 +02:00

120 lines
3.8 KiB
QML

import QtQuick 2.15
import QtQuick.Controls 2.15
ApplicationWindow {
id: mainWindow
visible: true
width: 400
height: 300
title: "AirPods Settings"
onClosing: mainWindow.visible = false
Column {
anchors.fill: parent
spacing: 20
padding: 20
// Connection status indicator (Apple-like pill shape)
Rectangle {
anchors.horizontalCenter: parent.horizontalCenter
anchors.topMargin: 10
width: 120
height: 24
radius: 12
color: airPodsTrayApp.airpodsConnected ? "#30D158" : "#FF453A"
opacity: 0.8
visible: !airPodsTrayApp.airpodsConnected
Label {
anchors.centerIn: parent
text: airPodsTrayApp.airpodsConnected ? "Connected" : "Disconnected"
color: "white"
font.pixelSize: 12
font.weight: Font.Medium
}
}
// Battery Indicator Row
Row {
anchors.horizontalCenter: parent.horizontalCenter
spacing: 8
PodColumn {
isVisible: airPodsTrayApp.battery.leftPodAvailable
inEar: airPodsTrayApp.leftPodInEar
iconSource: "qrc:/icons/assets/" + airPodsTrayApp.podIcon
batteryLevel: airPodsTrayApp.battery.leftPodLevel
isCharging: airPodsTrayApp.battery.leftPodCharging
indicator: "L"
}
PodColumn {
isVisible: airPodsTrayApp.battery.rightPodAvailable
inEar: airPodsTrayApp.rightPodInEar
iconSource: "qrc:/icons/assets/" + airPodsTrayApp.podIcon
batteryLevel: airPodsTrayApp.battery.rightPodLevel
isCharging: airPodsTrayApp.battery.rightPodCharging
indicator: "R"
}
PodColumn {
isVisible: airPodsTrayApp.battery.caseAvailable
inEar: true
iconSource: "qrc:/icons/assets/" + airPodsTrayApp.caseIcon
batteryLevel: airPodsTrayApp.battery.caseLevel
isCharging: airPodsTrayApp.battery.caseCharging
}
}
SegmentedControl {
anchors.horizontalCenter: parent.horizontalCenter
model: ["Off", "Noise Cancellation", "Transparency", "Adaptive"]
currentIndex: airPodsTrayApp.noiseControlMode
onCurrentIndexChanged: airPodsTrayApp.noiseControlMode = currentIndex
visible: airPodsTrayApp.airpodsConnected
}
Slider {
visible: airPodsTrayApp.adaptiveModeActive
from: 0
to: 100
stepSize: 1
value: airPodsTrayApp.adaptiveNoiseLevel
Timer {
id: debounceTimer
interval: 500
onTriggered: if (!parent.pressed) airPodsTrayApp.setAdaptiveNoiseLevel(parent.value)
}
onPressedChanged: if (!pressed) airPodsTrayApp.setAdaptiveNoiseLevel(value)
onValueChanged: if (pressed) debounceTimer.restart()
Label {
text: "Adaptive Noise Level: " + parent.value
anchors.top: parent.bottom
}
}
Switch {
text: "Conversational Awareness"
checked: airPodsTrayApp.conversationalAwareness
onCheckedChanged: airPodsTrayApp.conversationalAwareness = checked
}
Row {
spacing: 10
TextField {
placeholderText: airPodsTrayApp.deviceName
maximumLength: 32
}
Button {
text: "Rename"
onClicked: airPodsTrayApp.renameAirPods(newNameField.text)
}
}
}
}