From 0aadec0b75f277e8f4a3a6fa9a2f6332c255c8a2 Mon Sep 17 00:00:00 2001 From: darken Date: Thu, 23 Apr 2026 11:51:57 +0200 Subject: [PATCH] feat(device-settings): Link AAP-unavailable card to compatibility tracker --- .../main/ui/devicesettings/DeviceSettingsScreen.kt | 4 +++- .../ui/devicesettings/DeviceSettingsViewModel.kt | 4 ++++ .../ui/devicesettings/cards/AapUnavailableCard.kt | 13 ++++++++++++- app/src/main/res/values/strings.xml | 1 + 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/darken/capod/main/ui/devicesettings/DeviceSettingsScreen.kt b/app/src/main/java/eu/darken/capod/main/ui/devicesettings/DeviceSettingsScreen.kt index 50f26eb7..abd09540 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/devicesettings/DeviceSettingsScreen.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/devicesettings/DeviceSettingsScreen.kt @@ -146,6 +146,7 @@ fun DeviceSettingsScreenHost( onShowPopUpOnConnectionChange = { vm.setShowPopUpOnConnection(it) }, onFixMonitorMode = { vm.setMonitorModeAutomatic() }, onOpenIssueTracker = { vm.openIssueTracker() }, + onOpenAapTracker = { vm.openAapCompatibilityTracker() }, ) } @@ -181,6 +182,7 @@ fun DeviceSettingsScreen( onShowPopUpOnConnectionChange: (Boolean) -> Unit = {}, onFixMonitorMode: () -> Unit = {}, onOpenIssueTracker: () -> Unit = {}, + onOpenAapTracker: () -> Unit = {}, ) { val device = state.device val features = device?.model?.features @@ -336,7 +338,7 @@ fun DeviceSettingsScreen( if (state.isClassicallyConnected) { // Device is connected for audio but AAP isn't available — show passive info item("aap_unavailable_info") { - AapUnavailableCard() + AapUnavailableCard(onOpenTracker = onOpenAapTracker) } } else { // Device is nearby but not connected — prompt user to connect diff --git a/app/src/main/java/eu/darken/capod/main/ui/devicesettings/DeviceSettingsViewModel.kt b/app/src/main/java/eu/darken/capod/main/ui/devicesettings/DeviceSettingsViewModel.kt index 74758c3f..4acf06d3 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/devicesettings/DeviceSettingsViewModel.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/devicesettings/DeviceSettingsViewModel.kt @@ -431,6 +431,10 @@ class DeviceSettingsViewModel @Inject constructor( webpageTool.open("https://github.com/d4rken-org/capod/issues") } + fun openAapCompatibilityTracker() { + webpageTool.open("https://github.com/d4rken-org/capod/issues/538") + } + companion object { private val TAG = logTag("DeviceSettings", "VM") private const val OFF_BIT = 0x01 diff --git a/app/src/main/java/eu/darken/capod/main/ui/devicesettings/cards/AapUnavailableCard.kt b/app/src/main/java/eu/darken/capod/main/ui/devicesettings/cards/AapUnavailableCard.kt index 98cf6a3f..404ecf41 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/devicesettings/cards/AapUnavailableCard.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/devicesettings/cards/AapUnavailableCard.kt @@ -9,7 +9,9 @@ import androidx.compose.material3.CardDefaults import androidx.compose.material3.ElevatedCard import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text +import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp @@ -18,7 +20,9 @@ import eu.darken.capod.common.compose.Preview2 import eu.darken.capod.common.compose.PreviewWrapper @Composable -internal fun AapUnavailableCard() { +internal fun AapUnavailableCard( + onOpenTracker: () -> Unit = {}, +) { ElevatedCard( modifier = Modifier .fillMaxWidth() @@ -36,6 +40,13 @@ internal fun AapUnavailableCard() { style = MaterialTheme.typography.bodyMedium, color = MaterialTheme.colorScheme.onSurfaceVariant, ) + Spacer(modifier = Modifier.height(8.dp)) + TextButton( + onClick = onOpenTracker, + modifier = Modifier.align(Alignment.End), + ) { + Text(stringResource(R.string.device_settings_aap_unavailable_action)) + } } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d624b230..5731a401 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -469,6 +469,7 @@ Open Bluetooth Settings Advanced settings unavailable Advanced AirPods settings require a Bluetooth feature that is not available on this phone. This may be resolved by a future Android update from your device manufacturer. + View compatibility tracker Sound Controls ANC with one pod