Use switch instead of checkbox

This commit is contained in:
Juha Heinanen
2025-04-23 11:12:20 +03:00
parent d7e019c21a
commit f4a93f22a5
6 changed files with 106 additions and 139 deletions

View File

@ -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))
}
}

View File

@ -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
) {

View File

@ -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") {

View File

@ -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)

View File

@ -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(

View File

@ -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