diff --git a/linux/Main.qml b/linux/Main.qml index 059a8f0..f330422 100644 --- a/linux/Main.qml +++ b/linux/Main.qml @@ -131,21 +131,6 @@ ApplicationWindow { checked: airPodsTrayApp.conversationalAwareness onCheckedChanged: airPodsTrayApp.conversationalAwareness = checked } - - Row { - spacing: 10 - - TextField { - id: newNameField - placeholderText: airPodsTrayApp.deviceName - maximumLength: 32 - } - - Button { - text: "Rename" - onClicked: airPodsTrayApp.renameAirPods(newNameField.text) - } - } } RoundButton { @@ -179,12 +164,41 @@ ApplicationWindow { anchors.horizontalCenter: parent.horizontalCenter } - ComboBox { - anchors.horizontalCenter: parent.horizontalCenter - model: ["Pause When One Removed", "Pause When Both Removed", "Never Pause"] - currentIndex: airPodsTrayApp.earDetectionBehavior - onActivated: { - airPodsTrayApp.earDetectionBehavior = currentIndex + Column { + spacing: 5 // Small gap between label and ComboBox + + Label { + text: "Pause Behavior When Removing AirPods:" + } + + ComboBox { + width: parent.width // Ensures full width + model: ["One Removed", "Both Removed", "Never"] + currentIndex: airPodsTrayApp.earDetectionBehavior + onActivated: airPodsTrayApp.earDetectionBehavior = currentIndex + } + } + + Switch { + text: "Cross-Device Connectivity with Android" + checked: airPodsTrayApp.crossDeviceEnabled + onCheckedChanged: { + airPodsTrayApp.setCrossDeviceEnabled(checked) + } + } + + Row { + spacing: 10 + + TextField { + id: newNameField + placeholderText: airPodsTrayApp.deviceName + maximumLength: 32 + } + + Button { + text: "Rename" + onClicked: airPodsTrayApp.renameAirPods(newNameField.text) } } } diff --git a/linux/main.cpp b/linux/main.cpp index 67f5d89..e6efcaf 100644 --- a/linux/main.cpp +++ b/linux/main.cpp @@ -30,6 +30,7 @@ class AirPodsTrayApp : public QObject { Q_PROPERTY(bool rightPodInEar READ isRightPodInEar NOTIFY primaryChanged) Q_PROPERTY(bool airpodsConnected READ areAirpodsConnected NOTIFY airPodsStatusChanged) Q_PROPERTY(int earDetectionBehavior READ earDetectionBehavior WRITE setEarDetectionBehavior NOTIFY earDetectionBehaviorChanged) + Q_PROPERTY(bool crossDeviceEnabled READ crossDeviceEnabled WRITE setCrossDeviceEnabled NOTIFY crossDeviceEnabledChanged) public: AirPodsTrayApp(bool debugMode) @@ -270,6 +271,20 @@ public slots: emit earDetectionBehaviorChanged(behavior); } + void setCrossDeviceEnabled(bool enabled) + { + if (CrossDevice.isEnabled == enabled) + { + LOG_INFO("Cross-device feature is already " << (enabled ? "enabled" : "disabled")); + return; + } + + CrossDevice.isEnabled = enabled; + saveCrossDeviceEnabled(); + connectToPhone(); + emit crossDeviceEnabledChanged(enabled); + } + bool writePacketToSocket(const QByteArray &packet, const QString &logMessage) { if (socket && socket->isOpen()) @@ -578,10 +593,8 @@ private slots: { char primary = data[6]; char secondary = data[7]; - m_primaryInEar = primary == 0x00; - m_secoundaryInEar = secondary == 0x00; - m_primaryInEar = primary == 0x00; - m_secoundaryInEar = secondary == 0x00; + m_primaryInEar = data[6] == 0x00; + m_secoundaryInEar = data[7] == 0x00; m_earDetectionStatus = QString("Primary: %1, Secondary: %2") .arg(getEarStatus(primary), getEarStatus(secondary)); LOG_INFO("Ear detection status: " << m_earDetectionStatus);