From f4a93f22a5b2a163d30935cc2f4ae2e7d5f1dfd3 Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Wed, 23 Apr 2025 11:12:20 +0300 Subject: [PATCH] Use switch instead of checkbox --- .../com/tutpro/baresip/AccountActivity.kt | 98 +++++++++---------- .../com/tutpro/baresip/AudioActivity.kt | 21 ++-- .../tutpro/baresip/BaresipContactActivity.kt | 6 +- .../com/tutpro/baresip/ConfigActivity.kt | 78 ++++++--------- .../com/tutpro/baresip/CustomElements.kt | 17 ---- .../kotlin/com/tutpro/baresip/MainActivity.kt | 25 ++--- 6 files changed, 106 insertions(+), 139 deletions(-) diff --git a/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt index 507823d8..989bc36c 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt @@ -17,13 +17,12 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.safeDrawingPadding -import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll @@ -39,6 +38,7 @@ import androidx.compose.material3.IconButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface +import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults @@ -67,7 +67,6 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.tutpro.baresip.BaresipService.Companion.uas import com.tutpro.baresip.CustomElements.AlertDialog -import com.tutpro.baresip.CustomElements.Checkbox import com.tutpro.baresip.CustomElements.LabelText import com.tutpro.baresip.CustomElements.verticalScrollbar @@ -189,33 +188,57 @@ class AccountActivity : ComponentActivity() { true to getString(R.string.auto)) oldNickname = acc.nickName.value + newNickname = oldNickname oldDisplayname = acc.displayName + newDisplayname = oldDisplayname oldAuthUser = acc.authUser + newAuthUser = oldAuthUser if (BaresipService.aorPasswords[aor] == null && // check if OK - acc.authPass != NO_AUTH_PASS) + acc.authPass != NO_AUTH_PASS) { oldAuthPass = acc.authPass + newAuthPass = oldAuthPass + } if (acc.outbound.isNotEmpty()) { oldOutbound1 = acc.outbound[0] - if (acc.outbound.size > 1) + newOutbound1 = oldOutbound1 + if (acc.outbound.size > 1) { oldOutbound2 = acc.outbound[1] + newOutbound2 = oldOutbound2 + } } oldRegister = acc.regint > 0 + newRegister = oldRegister oldRegInt = acc.configuredRegInt.toString() + newRegInt = oldRegInt oldMediaEnc = acc.mediaEnc + newMediaEnc = oldMediaEnc oldMediaNat = acc.mediaNat + newMediaNat = oldMediaNat showStun.value = oldMediaNat != "" oldStunServer = acc.stunServer + newStunServer = oldStunServer oldStunUser = acc.stunUser + newStunUser = oldStunUser oldStunPass = acc.stunPass + newStunPass = oldStunPass oldRtcpMux = acc.rtcpMux + newRtcpMux = oldRtcpMux old100Rel = acc.rel100Mode == Api.REL100_ENABLED + new100Rel = old100Rel oldDtmfMode = acc.dtmfMode + newDtmfMode = oldDtmfMode oldAnswerMode = acc.answerMode + newAnswerMode = oldAnswerMode oldAutoRedirect = acc.autoRedirect + newAutoRedirect = oldAutoRedirect oldVmUri = acc.vmUri + newVmUri = oldVmUri oldCountryCode = acc.countryCode + newCountryCode = oldCountryCode oldTelProvider = acc.telProvider + newTelProvider = oldTelProvider oldDefaultAccount = UserAgent.findAorIndex(aor)!! == 0 + newDefaultAccount = oldDefaultAccount setContent { AppTheme { @@ -238,7 +261,10 @@ class AccountActivity : ComponentActivity() { else acc.aor.substringAfter(":") Scaffold( - modifier = Modifier.safeDrawingPadding(), + modifier = Modifier + .fillMaxHeight() + .imePadding() + .safeDrawingPadding(), containerColor = LocalCustomColors.current.background, topBar = { TopAppBar( @@ -301,10 +327,9 @@ class AccountActivity : ComponentActivity() { Column( modifier = Modifier - .imePadding() .fillMaxWidth() .padding(contentPadding) - .padding(start = 16.dp, end = 4.dp, top = 8.dp, bottom = 8.dp) + .padding(start = 16.dp, end = 4.dp, top = 8.dp, bottom = 16.dp) .verticalScrollbar(scrollState) .verticalScroll(state = scrollState), verticalArrangement = Arrangement.spacedBy(8.dp), @@ -368,7 +393,6 @@ class AccountActivity : ComponentActivity() { horizontalArrangement = Arrangement.Start ) { var nickName by remember { mutableStateOf(oldNickname) } - newNickname = nickName OutlinedTextField( value = nickName, placeholder = { Text(stringResource(R.string.nickname)) }, @@ -399,7 +423,6 @@ class AccountActivity : ComponentActivity() { horizontalArrangement = Arrangement.Start ) { var displayName by remember { mutableStateOf(oldDisplayname) } - newDisplayname = displayName OutlinedTextField( value = displayName, placeholder = { Text(stringResource(R.string.display_name)) }, @@ -430,7 +453,6 @@ class AccountActivity : ComponentActivity() { horizontalArrangement = Arrangement.Start ) { var authUser by remember { mutableStateOf(oldAuthUser) } - newAuthUser = authUser OutlinedTextField( value = authUser, placeholder = { Text(stringResource(R.string.authentication_username)) }, @@ -460,7 +482,6 @@ class AccountActivity : ComponentActivity() { horizontalArrangement = Arrangement.Start ) { var authPass by remember { mutableStateOf(oldAuthPass) } - newAuthPass = authPass OutlinedTextField( value = authPass, placeholder = { Text(stringResource(R.string.authentication_password)) }, @@ -519,7 +540,6 @@ class AccountActivity : ComponentActivity() { horizontalArrangement = Arrangement.Start ) { var outbound1 by remember { mutableStateOf(oldOutbound1) } - newOutbound1 = outbound1 OutlinedTextField( value = outbound1, placeholder = { Text(stringResource(R.string.sip_uri_of_proxy_server)) }, @@ -541,7 +561,6 @@ class AccountActivity : ComponentActivity() { horizontalArrangement = Arrangement.Start ) { var outbound2 by remember { mutableStateOf(oldOutbound2) } - newOutbound2 = outbound2 OutlinedTextField( value = outbound2, placeholder = { Text(stringResource(R.string.sip_uri_of_another_proxy_server)) }, @@ -562,7 +581,7 @@ class AccountActivity : ComponentActivity() { @Composable fun Register() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end=10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -576,15 +595,13 @@ class AccountActivity : ComponentActivity() { fontSize = 18.sp, color = LocalCustomColors.current.itemText) var register by remember { mutableStateOf(oldRegister) } - newRegister = register - Checkbox( + Switch( checked = register, onCheckedChange = { register = it newRegister = register } ) - Spacer(modifier = Modifier.width(8.dp)) } } @@ -596,7 +613,6 @@ class AccountActivity : ComponentActivity() { horizontalArrangement = Arrangement.Start ) { var regInt by remember { mutableStateOf(oldRegInt) } - newRegInt = regInt OutlinedTextField( value = regInt, placeholder = { Text(stringResource(R.string.reg_int)) }, @@ -645,7 +661,7 @@ class AccountActivity : ComponentActivity() { @Composable private fun MediaEnc() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end=10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -660,7 +676,6 @@ class AccountActivity : ComponentActivity() { fontSize = 18.sp) val isDropDownExpanded = remember { mutableStateOf(false) } val mediaEnc = remember { mutableStateOf(oldMediaEnc) } - newMediaEnc = mediaEnc.value Box { Row( horizontalArrangement = Arrangement.Center, @@ -699,14 +714,13 @@ class AccountActivity : ComponentActivity() { } } } - Spacer(modifier = Modifier.width(8.dp)) } } @Composable private fun MediaNat() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end=10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -721,7 +735,6 @@ class AccountActivity : ComponentActivity() { fontSize = 18.sp) val isDropDownExpanded = remember { mutableStateOf(false) } val mediaNat = remember { mutableStateOf(oldMediaNat) } - newMediaNat = mediaNat.value Box { Row( horizontalArrangement = Arrangement.Center, @@ -760,7 +773,6 @@ class AccountActivity : ComponentActivity() { } } } - Spacer(modifier = Modifier.width(8.dp)) } } @@ -773,7 +785,6 @@ class AccountActivity : ComponentActivity() { horizontalArrangement = Arrangement.Start ) { var stunServer by remember { mutableStateOf(oldStunServer) } - newStunServer = stunServer OutlinedTextField( value = stunServer, placeholder = { Text(stringResource(R.string.stun_server)) }, @@ -803,7 +814,6 @@ class AccountActivity : ComponentActivity() { horizontalArrangement = Arrangement.Start ) { var stunUser by remember { mutableStateOf(oldStunUser) } - newStunUser = stunUser OutlinedTextField( value = stunUser, placeholder = { Text(stringResource(R.string.stun_username)) }, @@ -834,7 +844,6 @@ class AccountActivity : ComponentActivity() { horizontalArrangement = Arrangement.Start ) { var stunPass by remember { mutableStateOf(oldStunPass) } - newStunPass = stunPass OutlinedTextField( value = stunPass, placeholder = { Text(stringResource(R.string.stun_password)) }, @@ -886,7 +895,7 @@ class AccountActivity : ComponentActivity() { @Composable fun RtcpMux() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end=10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -900,22 +909,20 @@ class AccountActivity : ComponentActivity() { fontSize = 18.sp, color = LocalCustomColors.current.itemText) var rtcpMux by remember { mutableStateOf(oldRtcpMux) } - newRtcpMux = rtcpMux - Checkbox( + Switch( checked = rtcpMux, onCheckedChange = { rtcpMux = it newRtcpMux = rtcpMux } ) - Spacer(modifier = Modifier.width(8.dp)) } } @Composable fun Rel100() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end=10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -929,22 +936,20 @@ class AccountActivity : ComponentActivity() { fontSize = 18.sp, color = LocalCustomColors.current.itemText) var rel100 by remember { mutableStateOf(old100Rel) } - new100Rel = rel100 - Checkbox( + Switch( checked = rel100, onCheckedChange = { rel100 = it new100Rel = rel100 } ) - Spacer(modifier = Modifier.width(8.dp)) } } @Composable private fun Dtmf() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end=10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -961,7 +966,6 @@ class AccountActivity : ComponentActivity() { mutableStateOf(false) } val dtmfMode = remember { mutableIntStateOf(oldDtmfMode) } - newDtmfMode = dtmfMode.intValue Box { Row( horizontalArrangement = Arrangement.Center, @@ -999,14 +1003,13 @@ class AccountActivity : ComponentActivity() { } } } - Spacer(modifier = Modifier.width(8.dp)) } } @Composable private fun Answer() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end=10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -1023,7 +1026,6 @@ class AccountActivity : ComponentActivity() { mutableStateOf(false) } val answerMode = remember { mutableIntStateOf(oldAnswerMode) } - newAnswerMode = answerMode.intValue Box { Row( horizontalArrangement = Arrangement.Center, @@ -1059,14 +1061,13 @@ class AccountActivity : ComponentActivity() { } } } - Spacer(modifier = Modifier.width(8.dp)) } } @Composable private fun Redirect() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end=10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -1083,7 +1084,6 @@ class AccountActivity : ComponentActivity() { mutableStateOf(false) } val autoRedirect = remember { mutableStateOf(oldAutoRedirect) } - newAutoRedirect = autoRedirect.value Box { Row( horizontalArrangement = Arrangement.Center, @@ -1121,7 +1121,6 @@ class AccountActivity : ComponentActivity() { } } } - Spacer(modifier = Modifier.width(8.dp)) } } @@ -1133,7 +1132,6 @@ class AccountActivity : ComponentActivity() { horizontalArrangement = Arrangement.Start ) { var vmUri by remember { mutableStateOf(oldVmUri) } - newVmUri = vmUri OutlinedTextField( value = vmUri, placeholder = { Text(stringResource(R.string.voicemail_uri)) }, @@ -1162,7 +1160,6 @@ class AccountActivity : ComponentActivity() { horizontalArrangement = Arrangement.Start ) { var countryCode by remember { mutableStateOf(oldCountryCode) } - newCountryCode = countryCode OutlinedTextField( value = countryCode, placeholder = { Text(stringResource(R.string.country_code)) }, @@ -1191,7 +1188,6 @@ class AccountActivity : ComponentActivity() { horizontalArrangement = Arrangement.Start ) { var telProvider by remember { mutableStateOf(oldTelProvider) } - newTelProvider = telProvider OutlinedTextField( value = telProvider, placeholder = { Text(stringResource(R.string.telephony_provider)) }, @@ -1215,7 +1211,7 @@ class AccountActivity : ComponentActivity() { @Composable fun DefaultAccount() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end=10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -1228,15 +1224,13 @@ class AccountActivity : ComponentActivity() { fontSize = 18.sp, color = LocalCustomColors.current.itemText) var defaultAccount by remember { mutableStateOf(oldDefaultAccount) } - newDefaultAccount = defaultAccount - Checkbox( + Switch( checked = defaultAccount, onCheckedChange = { defaultAccount = it newDefaultAccount = defaultAccount } ) - Spacer(modifier = Modifier.width(8.dp)) } } diff --git a/app/src/main/kotlin/com/tutpro/baresip/AudioActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/AudioActivity.kt index 83941801..4b87063e 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/AudioActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/AudioActivity.kt @@ -37,6 +37,7 @@ import androidx.compose.material3.IconButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface +import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable @@ -54,7 +55,6 @@ import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.tutpro.baresip.CustomElements.AlertDialog -import com.tutpro.baresip.CustomElements.Checkbox import com.tutpro.baresip.CustomElements.LabelText import com.tutpro.baresip.CustomElements.verticalScrollbar @@ -223,7 +223,7 @@ class AudioActivity : ComponentActivity() { @Composable private fun CallVolume() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end=10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -319,7 +319,7 @@ class AudioActivity : ComponentActivity() { @Composable private fun SpeakerPhone() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end=10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -334,8 +334,7 @@ class AudioActivity : ComponentActivity() { color = LocalCustomColors.current.itemText, fontSize = 18.sp) var speakerPhone by remember { mutableStateOf(BaresipService.speakerPhone) } - newSpeakerPhone = speakerPhone - Checkbox( + Switch( checked = speakerPhone, onCheckedChange = { speakerPhone = it @@ -362,16 +361,18 @@ class AudioActivity : ComponentActivity() { for (module in audioModules) { Row(horizontalArrangement = Arrangement.Start, verticalAlignment = Alignment.CenterVertically, - modifier = Modifier.padding(start = 18.dp) + modifier = Modifier.padding(start = 18.dp, end = 10.dp) ) { Text(text = String.format(getString(R.string.bullet_item), module), color = LocalCustomColors.current.itemText, fontSize = 18.sp) Spacer(modifier = Modifier.weight(1f)) - Checkbox( - checked = modules.contains("${module}.so"), + var checked by remember { mutableStateOf(modules.contains("${module}.so")) } + Switch( + checked = checked, onCheckedChange = { - newAudioModules[module] = it + checked = it + newAudioModules[module] = checked } ) } @@ -475,7 +476,7 @@ class AudioActivity : ComponentActivity() { @Composable private fun ToneCountry() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end=10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { diff --git a/app/src/main/kotlin/com/tutpro/baresip/BaresipContactActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/BaresipContactActivity.kt index dc169988..f76411bb 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/BaresipContactActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/BaresipContactActivity.kt @@ -52,6 +52,7 @@ import androidx.compose.material3.IconButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface +import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults @@ -80,7 +81,6 @@ import androidx.core.graphics.scale import androidx.exifinterface.media.ExifInterface import coil.compose.rememberAsyncImagePainter import com.tutpro.baresip.CustomElements.AlertDialog -import com.tutpro.baresip.CustomElements.Checkbox import java.io.ByteArrayOutputStream import java.io.File @@ -414,7 +414,7 @@ class BaresipContactActivity : ComponentActivity() { ) var favoriteContact by remember { mutableStateOf(favorite) } newFavorite = favoriteContact - Checkbox( + Switch( checked = favoriteContact, onCheckedChange = { favoriteContact = it @@ -439,7 +439,7 @@ class BaresipContactActivity : ComponentActivity() { ) var androidContact by remember { mutableStateOf(android) } newAndroid = androidContact - Checkbox( + Switch( checked = androidContact, onCheckedChange = { if (BaresipService.contactsMode != "android") { diff --git a/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt index fb7fb8e8..4ac0f72c 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt @@ -52,6 +52,7 @@ import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.material3.Text +import androidx.compose.material3.Switch import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable @@ -71,7 +72,6 @@ import androidx.compose.ui.unit.sp import androidx.core.content.ContextCompat import androidx.core.net.toUri import com.tutpro.baresip.CustomElements.AlertDialog -import com.tutpro.baresip.CustomElements.Checkbox import com.tutpro.baresip.CustomElements.LabelText import com.tutpro.baresip.CustomElements.verticalScrollbar import com.tutpro.baresip.Utils.copyInputStreamToFile @@ -238,6 +238,7 @@ class ConfigActivity : ComponentActivity() { oldAutoStart = false save = true } + newAutoStart = oldAutoStart oldListenAddr = Config.variable("sip_listen") @@ -403,7 +404,6 @@ class ConfigActivity : ComponentActivity() { Column( modifier = Modifier - .imePadding() .fillMaxWidth() .padding(contentPadding) .padding(start = 16.dp, end = 4.dp, top = 16.dp, bottom = 8.dp) @@ -435,13 +435,12 @@ class ConfigActivity : ComponentActivity() { @Composable private fun StartAutomatically(ctx: Context) { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end = 10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { Text(text = stringResource(R.string.start_automatically), - modifier = Modifier - .weight(1f) + modifier = Modifier.weight(1f) .clickable { alertTitle.value = getString(R.string.start_automatically) alertMessage.value = getString(R.string.start_automatically_help) @@ -450,8 +449,7 @@ class ConfigActivity : ComponentActivity() { color = LocalCustomColors.current.itemText, fontSize = 18.sp) var startAutomatically by remember { mutableStateOf(oldAutoStart) } - newAutoStart = startAutomatically - Checkbox( + Switch( checked = startAutomatically, onCheckedChange = { if (it) { @@ -484,9 +482,7 @@ class ConfigActivity : ComponentActivity() { @Composable private fun ListenAddress() { Row( - Modifier - .fillMaxWidth() - .padding(end = 10.dp), + Modifier.fillMaxWidth().padding(end = 10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start, ) { @@ -517,9 +513,7 @@ class ConfigActivity : ComponentActivity() { @Composable private fun AddressFamily() { Row( - Modifier - .fillMaxWidth() - .padding(top = 12.dp), + Modifier.fillMaxWidth().padding(top = 12.dp).padding(end = 10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -543,7 +537,7 @@ class ConfigActivity : ComponentActivity() { } Box { Row( - horizontalArrangement = Arrangement.Center, + horizontalArrangement = Arrangement.End, verticalAlignment = Alignment.CenterVertically, modifier = Modifier.clickable { isDropDownExpanded.value = true @@ -582,9 +576,7 @@ class ConfigActivity : ComponentActivity() { @Composable private fun DnsServers() { Row( - Modifier - .fillMaxWidth() - .padding(end = 10.dp), + Modifier.fillMaxWidth().padding(end = 10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -615,7 +607,7 @@ class ConfigActivity : ComponentActivity() { private fun TlsCertificateFile(ctx: Context) { val showAlertDialog = remember { mutableStateOf(false) } Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end = 10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -630,7 +622,7 @@ class ConfigActivity : ComponentActivity() { color = LocalCustomColors.current.itemText, fontSize = 18.sp) var tlsCertificateFile by remember { mutableStateOf(oldTlsCertificateFile) } - Checkbox( + Switch( checked = tlsCertificateFile, onCheckedChange = { tlsCertificateFile = it @@ -650,7 +642,7 @@ class ConfigActivity : ComponentActivity() { alertTitle.value = getString(R.string.error) alertMessage.value = getString(R.string.read_cert_error) showAlert.value = true - return@Checkbox + return@Switch } val certPath = BaresipService.filesPath + "/cert.pem" Utils.putFileContents(certPath, content) @@ -692,7 +684,7 @@ class ConfigActivity : ComponentActivity() { @Composable private fun VerifyServer() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end = 10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -707,7 +699,7 @@ class ConfigActivity : ComponentActivity() { color = LocalCustomColors.current.itemText, fontSize = 18.sp) var verifyServer by remember { mutableStateOf(oldVerifyServer) } - Checkbox( + Switch( checked = verifyServer, onCheckedChange = { verifyServer = it @@ -720,7 +712,7 @@ class ConfigActivity : ComponentActivity() { @Composable private fun CaFile(ctx: Context) { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end = 10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -735,7 +727,7 @@ class ConfigActivity : ComponentActivity() { color = LocalCustomColors.current.itemText, fontSize = 18.sp) var caFile by remember { mutableStateOf(oldCaFile) } - Checkbox( + Switch( checked = caFile, onCheckedChange = { caFile = it @@ -754,7 +746,7 @@ class ConfigActivity : ComponentActivity() { alertTitle.value = getString(R.string.error) alertMessage.value = getString(R.string.read_ca_certs_error) showAlert.value = true - return@Checkbox + return@Switch } File(BaresipService.filesPath + "/ca_certs.crt").writeBytes(content) caFile = true @@ -789,9 +781,7 @@ class ConfigActivity : ComponentActivity() { @Composable private fun UserAgent() { Row( - Modifier - .fillMaxWidth() - .padding(end = 10.dp), + Modifier.fillMaxWidth().padding(end = 10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -822,9 +812,7 @@ class ConfigActivity : ComponentActivity() { @Composable private fun AudioSettings(ctx: Context) { Row( - Modifier - .fillMaxWidth() - .padding(top = 12.dp), + Modifier.fillMaxWidth().padding(top = 12.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -893,7 +881,7 @@ class ConfigActivity : ComponentActivity() { @Composable private fun BatteryOptimizations() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end = 10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -908,7 +896,7 @@ class ConfigActivity : ComponentActivity() { color = LocalCustomColors.current.itemText, fontSize = 18.sp) var battery by remember { mutableStateOf(oldBatteryOptimizations) } - Checkbox( + Switch( checked = battery, onCheckedChange = { battery = it @@ -927,7 +915,7 @@ class ConfigActivity : ComponentActivity() { @Composable private fun DefaultDialer() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end = 10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -942,7 +930,7 @@ class ConfigActivity : ComponentActivity() { color = LocalCustomColors.current.itemText, fontSize = 18.sp) var defaultDialer by remember { mutableStateOf(oldDefaultDialer) } - Checkbox( + Switch( checked = defaultDialer, onCheckedChange = { defaultDialer = it @@ -972,9 +960,7 @@ class ConfigActivity : ComponentActivity() { private fun Contacts(ctx: Context) { val showAlertDialog = remember { mutableStateOf(false) } Row( - Modifier - .fillMaxWidth() - .padding(top = 12.dp), + Modifier.fillMaxWidth().padding(top = 12.dp).padding(end = 10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -1093,7 +1079,7 @@ class ConfigActivity : ComponentActivity() { @Composable private fun DarkTheme() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end = 10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -1108,7 +1094,7 @@ class ConfigActivity : ComponentActivity() { color = LocalCustomColors.current.itemText, fontSize = 18.sp) var darkTheme by remember { mutableStateOf(oldDarkTheme) } - Checkbox( + Switch( checked = darkTheme, onCheckedChange = { darkTheme = it @@ -1121,7 +1107,7 @@ class ConfigActivity : ComponentActivity() { @Composable private fun Debug() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end = 10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -1136,7 +1122,7 @@ class ConfigActivity : ComponentActivity() { color = LocalCustomColors.current.itemText, fontSize = 18.sp) var debug by remember { mutableStateOf(oldDebug) } - Checkbox( + Switch( checked = debug, onCheckedChange = { debug = it @@ -1149,7 +1135,7 @@ class ConfigActivity : ComponentActivity() { @Composable private fun SipTrace() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end = 10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -1164,7 +1150,7 @@ class ConfigActivity : ComponentActivity() { color = LocalCustomColors.current.itemText, fontSize = 18.sp) var sipTrace by remember { mutableStateOf(oldSipTrace) } - Checkbox( + Switch( checked = sipTrace, onCheckedChange = { sipTrace = it @@ -1177,7 +1163,7 @@ class ConfigActivity : ComponentActivity() { @Composable private fun Reset() { Row( - Modifier.fillMaxWidth(), + Modifier.fillMaxWidth().padding(end = 10.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start ) { @@ -1192,7 +1178,7 @@ class ConfigActivity : ComponentActivity() { color = LocalCustomColors.current.itemText, fontSize = 18.sp) var reset by remember { mutableStateOf(false) } - Checkbox( + Switch( checked = reset, onCheckedChange = { dialogTitle.value = getString(R.string.confirmation) diff --git a/app/src/main/kotlin/com/tutpro/baresip/CustomElements.kt b/app/src/main/kotlin/com/tutpro/baresip/CustomElements.kt index 73491224..74d7e127 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/CustomElements.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/CustomElements.kt @@ -32,8 +32,6 @@ import androidx.compose.material3.BasicAlertDialog import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults -import androidx.compose.material3.Checkbox -import androidx.compose.material3.CheckboxDefaults import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.ExperimentalMaterial3Api @@ -185,21 +183,6 @@ object CustomElements { } } - @Composable - fun Checkbox(checked: Boolean, onCheckedChange: (Boolean) -> Unit) { - Checkbox( - checked = checked, - onCheckedChange = { - onCheckedChange(!checked) - }, - colors = CheckboxDefaults.colors( - checkedColor = LocalCustomColors.current.accent, - uncheckedColor = LocalCustomColors.current.strong, - checkmarkColor = LocalCustomColors.current.strong, - ) - ) - } - @Composable fun TextAvatar(name: String, color: Int) { Box( diff --git a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt index b4f4d7fb..1db9dea6 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt @@ -94,6 +94,7 @@ import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.OutlinedTextFieldDefaults import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface +import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TextField @@ -139,7 +140,6 @@ import com.tutpro.baresip.BaresipService.Companion.contactNames import com.tutpro.baresip.BaresipService.Companion.uas import com.tutpro.baresip.BaresipService.Companion.uasStatus import com.tutpro.baresip.CustomElements.AlertDialog -import com.tutpro.baresip.CustomElements.Checkbox import com.tutpro.baresip.CustomElements.DropdownMenu import com.tutpro.baresip.CustomElements.LabelText import com.tutpro.baresip.CustomElements.PasswordDialog @@ -151,6 +151,7 @@ import java.io.File import java.text.SimpleDateFormat import java.util.Date import java.util.Locale +import kotlin.collections.set import kotlin.system.exitProcess class MainActivity : ComponentActivity() { @@ -1445,21 +1446,23 @@ class MainActivity : ComponentActivity() { color = LocalCustomColors.current.alert, modifier = Modifier.padding(16.dp), ) - Checkbox( - checked = blindChecked.value - ) { - blindChecked.value = true - } + Switch( + checked = blindChecked.value, + onCheckedChange = { + blindChecked.value = true + } + ) Text( text = stringResource(R.string.attended), color = LocalCustomColors.current.alert, modifier = Modifier.padding(16.dp), ) - Checkbox( - checked = !blindChecked.value - ) { - blindChecked.value = false - } + Switch( + checked = !blindChecked.value, + onCheckedChange = { + blindChecked.value = false + } + ) } Row( horizontalArrangement = Arrangement.Absolute.SpaceEvenly