@@ -38,9 +38,8 @@ import androidx.compose.foundation.layout.fillMaxSize
3838import androidx.compose.foundation.layout.fillMaxWidth
3939import androidx.compose.foundation.layout.height
4040import androidx.compose.foundation.layout.padding
41- import androidx.compose.foundation.rememberScrollState
41+ import androidx.compose.foundation.lazy.LazyColumn
4242import androidx.compose.foundation.shape.RoundedCornerShape
43- import androidx.compose.foundation.verticalScroll
4443import androidx.compose.material3.ExperimentalMaterial3Api
4544import androidx.compose.material3.SnackbarHostState
4645import androidx.compose.material3.Text
@@ -212,84 +211,93 @@ fun AirPodsSettingsScreen(dev: BluetoothDevice?, service: AirPodsService,
212211 snackbarHostState = snackbarHostState
213212 ) { spacerHeight, hazeState ->
214213 if (isLocallyConnected || isRemotelyConnected) {
215- Column (
214+ LazyColumn (
216215 modifier = Modifier
217216 .fillMaxSize()
218217 .hazeSource(hazeState)
219218 .padding(horizontal = 16 .dp)
220219 .layerBackdrop(backdrop)
221- .verticalScroll(rememberScrollState())
222220 ) {
223- Spacer (modifier = Modifier .height(spacerHeight))
224- LaunchedEffect (service) {
225- service.let {
226- it.sendBroadcast(Intent (AirPodsNotifications .BATTERY_DATA ).apply {
227- putParcelableArrayListExtra(" data" , ArrayList (it.getBattery()))
228- })
229- it.sendBroadcast(Intent (AirPodsNotifications .ANC_DATA ).apply {
230- putExtra(" data" , it.getANC())
231- })
221+ item { Spacer (modifier = Modifier .height(spacerHeight)) }
222+ item {
223+ LaunchedEffect (service) {
224+ service.let {
225+ it.sendBroadcast(Intent (AirPodsNotifications .BATTERY_DATA ).apply {
226+ putParcelableArrayListExtra(" data" , ArrayList (it.getBattery()))
227+ })
228+ it.sendBroadcast(Intent (AirPodsNotifications .ANC_DATA ).apply {
229+ putExtra(" data" , it.getANC())
230+ })
231+ }
232232 }
233- }
234233
235- BatteryView (service = service)
236- Spacer (modifier = Modifier .height(32 .dp))
234+ BatteryView (service = service)
235+ }
236+ item { Spacer (modifier = Modifier .height(32 .dp)) }
237237
238- NavigationButton (
239- to = " rename" ,
240- name = stringResource(R .string.name),
241- currentState = deviceName.text,
242- navController = navController,
243- independent = true
244- )
238+ item {
239+ NavigationButton (
240+ to = " rename" ,
241+ name = stringResource(R .string.name),
242+ currentState = deviceName.text,
243+ navController = navController,
244+ independent = true
245+ )
246+ }
245247
246- Spacer (modifier = Modifier .height(32 .dp))
247- NavigationButton (to = " hearing_aid" , stringResource(R .string.hearing_aid), navController)
248+ item { Spacer (modifier = Modifier .height(32 .dp)) }
249+ item { NavigationButton (to = " hearing_aid" , stringResource(R .string.hearing_aid), navController) }
248250
249- Spacer (modifier = Modifier .height(16 .dp))
250- NoiseControlSettings (service = service)
251+ item { Spacer (modifier = Modifier .height(16 .dp)) }
252+ item { NoiseControlSettings (service = service) }
251253
252- Spacer (modifier = Modifier .height(16 .dp))
253- PressAndHoldSettings (navController = navController)
254+ item { Spacer (modifier = Modifier .height(16 .dp)) }
255+ item { PressAndHoldSettings (navController = navController) }
254256
255- Spacer (modifier = Modifier .height(16 .dp))
256- CallControlSettings (hazeState = hazeState)
257+ item { Spacer (modifier = Modifier .height(16 .dp)) }
258+ item { CallControlSettings (hazeState = hazeState) }
257259
258260 // camera control goes here, airpods side is done, i just need to figure out how to listen to app open/close events
259261
260- Spacer (modifier = Modifier .height(16 .dp))
261- AudioSettings (navController = navController)
262+ item { Spacer (modifier = Modifier .height(16 .dp)) }
263+ item { AudioSettings (navController = navController) }
262264
263- Spacer (modifier = Modifier .height(16 .dp))
264- ConnectionSettings ()
265+ item { Spacer (modifier = Modifier .height(16 .dp)) }
266+ item { ConnectionSettings () }
265267
266- Spacer (modifier = Modifier .height(16 .dp))
267- MicrophoneSettings (hazeState)
268+ item { Spacer (modifier = Modifier .height(16 .dp)) }
269+ item { MicrophoneSettings (hazeState) }
268270
269- Spacer (modifier = Modifier .height(16 .dp))
270- StyledToggle (
271- label = stringResource(R .string.sleep_detection),
272- controlCommandIdentifier = AACPManager .Companion .ControlCommandIdentifiers .SLEEP_DETECTION_CONFIG
273- )
271+ item { Spacer (modifier = Modifier .height(16 .dp)) }
272+ item {
273+ StyledToggle (
274+ label = stringResource(R .string.sleep_detection),
275+ controlCommandIdentifier = AACPManager .Companion .ControlCommandIdentifiers .SLEEP_DETECTION_CONFIG
276+ )
277+ }
274278
275- Spacer (modifier = Modifier .height(16 .dp))
276- NavigationButton (to = " head_tracking" , name = stringResource(R .string.head_gestures), navController = navController, currentState = if (sharedPreferences.getBoolean(" head_gestures" , false )) stringResource(R .string.on) else stringResource(R .string.off))
279+ item { Spacer (modifier = Modifier .height(16 .dp)) }
280+ item {
281+ NavigationButton (to = " head_tracking" , name = stringResource(R .string.head_gestures), navController = navController, currentState = if (sharedPreferences.getBoolean(" head_gestures" , false )) stringResource(R .string.on) else stringResource(R .string.off))
282+ }
277283
278- Spacer (modifier = Modifier .height(16 .dp))
279- NavigationButton (to = " accessibility" , name = stringResource(R .string.accessibility), navController = navController)
284+ item { Spacer (modifier = Modifier .height(16 .dp)) }
285+ item { NavigationButton (to = " accessibility" , name = stringResource(R .string.accessibility), navController = navController) }
280286
281- Spacer (modifier = Modifier .height(16 .dp))
282- StyledToggle (
283- label = stringResource(R .string.off_listening_mode),
284- controlCommandIdentifier = AACPManager .Companion .ControlCommandIdentifiers .ALLOW_OFF_OPTION ,
285- description = stringResource(R .string.off_listening_mode_description)
286- )
287+ item { Spacer (modifier = Modifier .height(16 .dp)) }
288+ item {
289+ StyledToggle (
290+ label = stringResource(R .string.off_listening_mode),
291+ controlCommandIdentifier = AACPManager .Companion .ControlCommandIdentifiers .ALLOW_OFF_OPTION ,
292+ description = stringResource(R .string.off_listening_mode_description)
293+ )
294+ }
287295
288296 // an about card- everything but the version number is unknown - will add later if i find out
289297
290- Spacer (modifier = Modifier .height(16 .dp))
291- NavigationButton (" debug" , " Debug" , navController)
292- Spacer (Modifier .height(24 .dp))
298+ item { Spacer (modifier = Modifier .height(16 .dp)) }
299+ item { NavigationButton (" debug" , " Debug" , navController) }
300+ item { Spacer (Modifier .height(24 .dp)) }
293301 }
294302 }
295303 else {
0 commit comments