87 lines
3.5 KiB
Kotlin
87 lines
3.5 KiB
Kotlin
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<SettingsViewModel>(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
|
|
)
|
|
}
|
|
}
|
|
}
|