Account activity UI improvements

This commit is contained in:
Juha Heinanen
2025-04-17 20:18:04 +03:00
parent eb17082d98
commit 0c23746769
@@ -13,11 +13,13 @@ 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.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
@@ -46,7 +48,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.platform.SoftwareKeyboardController
import androidx.compose.ui.res.colorResource
@@ -130,6 +131,7 @@ class AccountActivity : ComponentActivity() {
private val alertTitle = mutableStateOf("")
private val alertMessage = mutableStateOf("")
private val showAlert = mutableStateOf(false)
private val showStun = mutableStateOf(false)
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
@@ -165,6 +167,35 @@ class AccountActivity : ComponentActivity() {
redirectModeMap = mapOf(false to getString(R.string.manual),
true to getString(R.string.auto))
oldNickname = acc.nickName.value
oldDisplayname = acc.displayName
oldAuthUser = acc.authUser
if (BaresipService.aorPasswords[aor] == null && // check if OK
acc.authPass != NO_AUTH_PASS)
oldAuthPass = acc.authPass
if (acc.outbound.isNotEmpty()) {
oldOutbound1 = acc.outbound[0]
if (acc.outbound.size > 1)
oldOutbound2 = acc.outbound[1]
}
oldRegister = acc.regint > 0
oldRegInt = acc.configuredRegInt.toString()
oldMediaEnc = acc.mediaEnc
oldMediaNat = acc.mediaNat
showStun.value = oldMediaNat != ""
oldStunServer = acc.stunServer
oldStunUser = acc.stunUser
oldStunPass = acc.stunPass
oldRtcpMux = acc.rtcpMux
old100Rel = acc.rel100Mode == Api.REL100_ENABLED
oldDtmfMode = acc.dtmfMode
oldAnswerMode = acc.answerMode
oldAutoRedirect = acc.autoRedirect
oldVmUri = acc.vmUri
oldCountryCode = acc.countryCode
oldTelProvider = acc.telProvider
oldDefaultAccount = UserAgent.findAorIndex(aor)!! == 0
setContent {
AppTheme {
keyboardController = LocalSoftwareKeyboardController.current
@@ -180,7 +211,6 @@ class AccountActivity : ComponentActivity() {
onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
// Api.account_debug(acc.accp)
}
@OptIn(ExperimentalMaterial3Api::class)
@@ -252,8 +282,6 @@ class AccountActivity : ComponentActivity() {
)
}
val focusManager = LocalFocusManager.current
Column(
modifier = Modifier
.imePadding()
@@ -261,37 +289,9 @@ class AccountActivity : ComponentActivity() {
.padding(contentPadding)
.padding(start = 16.dp, end = 4.dp, top = 8.dp, bottom = 8.dp)
.verticalScrollbar(scrollState)
.verticalScroll(state = scrollState)
.clickable { focusManager.clearFocus() },
.verticalScroll(state = scrollState),
verticalArrangement = Arrangement.spacedBy(8.dp),
) {
oldNickname = acc.nickName.value
oldDisplayname = acc.displayName
oldAuthUser = acc.authUser
if (BaresipService.aorPasswords[aor] == null && // check if OK
acc.authPass != NO_AUTH_PASS)
oldAuthPass = acc.authPass
if (acc.outbound.isNotEmpty()) {
oldOutbound1 = acc.outbound[0]
if (acc.outbound.size > 1)
oldOutbound2 = acc.outbound[1]
}
oldRegister = acc.regint > 0
oldRegInt = acc.configuredRegInt.toString()
oldMediaEnc = acc.mediaEnc
oldMediaNat = acc.mediaNat
oldStunServer = acc.stunServer
oldStunUser = acc.stunUser
oldStunPass = acc.stunPass
oldRtcpMux = acc.rtcpMux
old100Rel = acc.rel100Mode == Api.REL100_ENABLED
oldDtmfMode = acc.dtmfMode
oldAnswerMode = acc.answerMode
oldAutoRedirect = acc.autoRedirect
oldVmUri = acc.vmUri
oldCountryCode = acc.countryCode
oldTelProvider = acc.telProvider
oldDefaultAccount = UserAgent.findAorIndex(aor)!! == 0
AoR()
Nickname()
DisplayName()
@@ -488,6 +488,7 @@ class AccountActivity : ComponentActivity() {
private fun Outbound() {
Text(text = stringResource(R.string.outbound_proxies),
color = LocalCustomColors.current.itemText,
fontSize = 18.sp,
modifier = Modifier.padding(top=8.dp)
.clickable {
alertTitle.value = getString(R.string.outbound_proxies)
@@ -555,6 +556,7 @@ class AccountActivity : ComponentActivity() {
alertMessage.value = getString(R.string.register_help)
showAlert.value = true
},
fontSize = 18.sp,
color = LocalCustomColors.current.itemText)
var register by remember { mutableStateOf(oldRegister) }
newRegister = register
@@ -565,6 +567,7 @@ class AccountActivity : ComponentActivity() {
newRegister = register
}
)
Spacer(modifier = Modifier.width(8.dp))
}
}
@@ -679,6 +682,7 @@ class AccountActivity : ComponentActivity() {
}
}
}
Spacer(modifier = Modifier.width(8.dp))
}
}
@@ -728,10 +732,7 @@ class AccountActivity : ComponentActivity() {
isDropDownExpanded.value = false
mediaNat.value = it.key
newMediaNat = mediaNat.value
//if (newMediaNat == "")
// don't show stunserver
//else
// show stunserver
showStun.value = newMediaNat != ""
})
if (index < 3)
HorizontalDivider(
@@ -742,11 +743,13 @@ class AccountActivity : ComponentActivity() {
}
}
}
Spacer(modifier = Modifier.width(8.dp))
}
}
@Composable
private fun StunServer() {
if (showStun.value)
Row(
Modifier.fillMaxWidth().padding(end=10.dp),
verticalAlignment = Alignment.CenterVertically,
@@ -776,6 +779,7 @@ class AccountActivity : ComponentActivity() {
@Composable
private fun StunUser() {
if (showStun.value)
Row(
Modifier.fillMaxWidth().padding(top=8.dp, end=10.dp),
verticalAlignment = Alignment.CenterVertically,
@@ -805,9 +809,10 @@ class AccountActivity : ComponentActivity() {
@Composable
private fun StunPass() {
if (showStun.value) {
val showPassword = remember { mutableStateOf(false) }
Row(
Modifier.fillMaxWidth().padding(end=10.dp),
Modifier.fillMaxWidth().padding(end = 10.dp),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.Start
) {
@@ -834,7 +839,8 @@ class AccountActivity : ComponentActivity() {
} else {
Pair(
ImageVector.vectorResource(R.drawable.visibility_off),
colorResource(id = R.color.colorWhite))
colorResource(id = R.color.colorWhite)
)
}
IconButton(onClick = { showPassword.value = !showPassword.value }) {
Icon(
@@ -848,14 +854,17 @@ class AccountActivity : ComponentActivity() {
.clickable {
alertTitle.value = getString(R.string.stun_password)
alertMessage.value = getString(R.string.stun_password_help)
showAlert.value = true },
showAlert.value = true
},
textStyle = TextStyle(
fontSize = 18.sp, color = LocalCustomColors.current.itemText),
fontSize = 18.sp, color = LocalCustomColors.current.itemText
),
label = { LabelText(stringResource(R.string.stun_password)) },
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Text)
)
}
}
}
@Composable
fun RtcpMux() {
@@ -871,6 +880,7 @@ class AccountActivity : ComponentActivity() {
alertMessage.value = getString(R.string.rtcp_mux_help)
showAlert.value = true
},
fontSize = 18.sp,
color = LocalCustomColors.current.itemText)
var rtcpMux by remember { mutableStateOf(oldRtcpMux) }
newRtcpMux = rtcpMux
@@ -881,6 +891,7 @@ class AccountActivity : ComponentActivity() {
newRtcpMux = rtcpMux
}
)
Spacer(modifier = Modifier.width(8.dp))
}
}
@@ -898,6 +909,7 @@ class AccountActivity : ComponentActivity() {
alertMessage.value = getString(R.string.rel_100_help)
showAlert.value = true
},
fontSize = 18.sp,
color = LocalCustomColors.current.itemText)
var rel100 by remember { mutableStateOf(old100Rel) }
new100Rel = rel100
@@ -908,13 +920,14 @@ class AccountActivity : ComponentActivity() {
new100Rel = rel100
}
)
Spacer(modifier = Modifier.width(8.dp))
}
}
@Composable
private fun Dtmf() {
Row(
Modifier.fillMaxWidth().padding(top=12.dp),
Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.Start
) {
@@ -969,13 +982,14 @@ class AccountActivity : ComponentActivity() {
}
}
}
Spacer(modifier = Modifier.width(8.dp))
}
}
@Composable
private fun Answer() {
Row(
Modifier.fillMaxWidth().padding(top=12.dp),
Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.Start
) {
@@ -1028,13 +1042,14 @@ class AccountActivity : ComponentActivity() {
}
}
}
Spacer(modifier = Modifier.width(8.dp))
}
}
@Composable
private fun Redirect() {
Row(
Modifier.fillMaxWidth().padding(top=12.dp),
Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.Start
) {
@@ -1089,6 +1104,7 @@ class AccountActivity : ComponentActivity() {
}
}
}
Spacer(modifier = Modifier.width(8.dp))
}
}
@@ -1192,6 +1208,7 @@ class AccountActivity : ComponentActivity() {
alertTitle.value = getString(R.string.default_account)
alertMessage.value = getString(R.string.default_account_help)
showAlert.value = true },
fontSize = 18.sp,
color = LocalCustomColors.current.itemText)
var defaultAccount by remember { mutableStateOf(oldDefaultAccount) }
newDefaultAccount = defaultAccount
@@ -1202,6 +1219,7 @@ class AccountActivity : ComponentActivity() {
newDefaultAccount = defaultAccount
}
)
Spacer(modifier = Modifier.width(8.dp))
}
}