package com.example.tvcontroller import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.example.tvcontroller.services.DeviceService import com.example.tvcontroller.ui.AppViewModel @Composable fun SettingsScreen(deviceService: DeviceService, appViewModel: AppViewModel) { val viewModel = viewModel(factory = SettingsViewModel.provideFactory(deviceService)) Column( modifier = Modifier .padding(16.dp, 16.dp) .verticalScroll(rememberScrollState()), verticalArrangement = Arrangement.spacedBy(8.dp) ) { Text( text = stringResource(id = R.string.settings_title), style = MaterialTheme.typography.displaySmall ) Spacer(modifier = Modifier.padding(8.dp)) Text( text = stringResource(id = R.string.server_settings_heading), style = MaterialTheme.typography.headlineSmall ) Text( text = stringResource(id = R.string.server_connection_label) + ": " + stringResource(id = R.string.connection_state_disconnected), style = MaterialTheme.typography.bodyMedium ) OutlinedTextField( modifier = Modifier.fillMaxWidth(), value = viewModel.serverAddress, onValueChange = viewModel::onServerAddressChanged, label = { Text(stringResource(id = R.string.server_address_label)) } ) OutlinedTextField( modifier = Modifier.fillMaxWidth(), value = viewModel.deviceName, onValueChange = viewModel::onDeviceNameChanged, label = { Text(stringResource(id = R.string.device_name_label)) } ) OutlinedTextField( modifier = Modifier.fillMaxWidth(), value = viewModel.registrationCode, onValueChange = viewModel::onRegistrationCodeChanged, label = { Text(stringResource(id = R.string.registration_code_label)) } ) OutlinedButton(onClick = { viewModel.connect() }, modifier = Modifier.fillMaxWidth()) { Text( stringResource(id = R.string.connect_button_label) ) } Spacer(modifier = Modifier.padding(8.dp)) Text( text = stringResource(id = R.string.controller_settings_heading), style = MaterialTheme.typography.headlineSmall ) if (appViewModel.isBluetoothEnabled()) { Text( text = "Controller settings: Bluetooth is enabled.", style = MaterialTheme.typography.bodyMedium ) } else { Text( text = "Bluetooth is disabled. Please enable it in settings.", style = MaterialTheme.typography.bodyMedium ) } } }