feat(device-settings): Link AAP-unavailable card to compatibility tracker

This commit is contained in:
darken
2026-04-23 12:53:24 +02:00
committed by Matthias Urhahn
parent e6cf507937
commit 0aadec0b75
4 changed files with 20 additions and 2 deletions
@@ -146,6 +146,7 @@ fun DeviceSettingsScreenHost(
onShowPopUpOnConnectionChange = { vm.setShowPopUpOnConnection(it) }, onShowPopUpOnConnectionChange = { vm.setShowPopUpOnConnection(it) },
onFixMonitorMode = { vm.setMonitorModeAutomatic() }, onFixMonitorMode = { vm.setMonitorModeAutomatic() },
onOpenIssueTracker = { vm.openIssueTracker() }, onOpenIssueTracker = { vm.openIssueTracker() },
onOpenAapTracker = { vm.openAapCompatibilityTracker() },
) )
} }
@@ -181,6 +182,7 @@ fun DeviceSettingsScreen(
onShowPopUpOnConnectionChange: (Boolean) -> Unit = {}, onShowPopUpOnConnectionChange: (Boolean) -> Unit = {},
onFixMonitorMode: () -> Unit = {}, onFixMonitorMode: () -> Unit = {},
onOpenIssueTracker: () -> Unit = {}, onOpenIssueTracker: () -> Unit = {},
onOpenAapTracker: () -> Unit = {},
) { ) {
val device = state.device val device = state.device
val features = device?.model?.features val features = device?.model?.features
@@ -336,7 +338,7 @@ fun DeviceSettingsScreen(
if (state.isClassicallyConnected) { if (state.isClassicallyConnected) {
// Device is connected for audio but AAP isn't available — show passive info // Device is connected for audio but AAP isn't available — show passive info
item("aap_unavailable_info") { item("aap_unavailable_info") {
AapUnavailableCard() AapUnavailableCard(onOpenTracker = onOpenAapTracker)
} }
} else { } else {
// Device is nearby but not connected — prompt user to connect // Device is nearby but not connected — prompt user to connect
@@ -431,6 +431,10 @@ class DeviceSettingsViewModel @Inject constructor(
webpageTool.open("https://github.com/d4rken-org/capod/issues") webpageTool.open("https://github.com/d4rken-org/capod/issues")
} }
fun openAapCompatibilityTracker() {
webpageTool.open("https://github.com/d4rken-org/capod/issues/538")
}
companion object { companion object {
private val TAG = logTag("DeviceSettings", "VM") private val TAG = logTag("DeviceSettings", "VM")
private const val OFF_BIT = 0x01 private const val OFF_BIT = 0x01
@@ -9,7 +9,9 @@ import androidx.compose.material3.CardDefaults
import androidx.compose.material3.ElevatedCard import androidx.compose.material3.ElevatedCard
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@@ -18,7 +20,9 @@ import eu.darken.capod.common.compose.Preview2
import eu.darken.capod.common.compose.PreviewWrapper import eu.darken.capod.common.compose.PreviewWrapper
@Composable @Composable
internal fun AapUnavailableCard() { internal fun AapUnavailableCard(
onOpenTracker: () -> Unit = {},
) {
ElevatedCard( ElevatedCard(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
@@ -36,6 +40,13 @@ internal fun AapUnavailableCard() {
style = MaterialTheme.typography.bodyMedium, style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.onSurfaceVariant, 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))
}
} }
} }
} }
+1
View File
@@ -469,6 +469,7 @@
<string name="device_settings_not_connected_open_settings_action">Open Bluetooth Settings</string> <string name="device_settings_not_connected_open_settings_action">Open Bluetooth Settings</string>
<string name="device_settings_aap_unavailable_label">Advanced settings unavailable</string> <string name="device_settings_aap_unavailable_label">Advanced settings unavailable</string>
<string name="device_settings_aap_unavailable_description">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.</string> <string name="device_settings_aap_unavailable_description">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.</string>
<string name="device_settings_aap_unavailable_action">View compatibility tracker</string>
<string name="device_settings_category_sound_label">Sound</string> <string name="device_settings_category_sound_label">Sound</string>
<string name="device_settings_category_controls_label">Controls</string> <string name="device_settings_category_controls_label">Controls</string>
<string name="device_settings_nc_one_airpod_label">ANC with one pod</string> <string name="device_settings_nc_one_airpod_label">ANC with one pod</string>