Do not show rec icon when mobile account is selected

Disable account spinner long click and screen swipe when mobile account is selected
This commit is contained in:
Juha Heinanen
2026-05-24 08:20:11 +03:00
parent 68563b1749
commit d16429c246

View File

@ -552,44 +552,46 @@ private fun TopAppBar(
windowInsets = WindowInsets(0, 0, 0, 0), windowInsets = WindowInsets(0, 0, 0, 0),
actions = { actions = {
Spacer(modifier = Modifier.width(8.dp)) val selectedAor by viewModel.selectedAor.collectAsState()
val uas by BaresipService.uas
val isMobile = uas.find { it.account.aor == selectedAor }?.account?.isMobile ?: false
val callRecordingTitle = stringResource(R.string.call_recording_title) if (!isMobile) {
val callRecordingMessage = stringResource(R.string.call_recording_tip) Spacer(modifier = Modifier.width(8.dp))
Box(contentAlignment = Alignment.Center,
modifier = Modifier val callRecordingTitle = stringResource(R.string.call_recording_title)
.size(48.dp) val callRecordingMessage = stringResource(R.string.call_recording_tip)
.clip(CircleShape) Box(contentAlignment = Alignment.Center,
.combinedClickable( modifier = Modifier
onClick = { .size(48.dp)
if (Call.call("connected") == null) { .clip(CircleShape)
BaresipService.isRecOn = !BaresipService.isRecOn .combinedClickable(
if (BaresipService.isRecOn) { onClick = {
Api.module_load("sndfile") if (!Call.isAnyCallActive(ctx)) {
} else { BaresipService.isRecOn = !BaresipService.isRecOn
Api.module_unload("sndfile") Api.aufilt_enable("sndfile", BaresipService.isRecOn)
isRecOn = BaresipService.isRecOn
} }
isRecOn = BaresipService.isRecOn else
} else { Toast.makeText(ctx, R.string.rec_in_call, Toast.LENGTH_SHORT).show()
Toast.makeText(ctx, R.string.rec_in_call, Toast.LENGTH_SHORT).show() },
onLongClick = {
alertTitle.value = callRecordingTitle
alertMessage.value = callRecordingMessage
showAlert.value = true
} }
}, )
onLongClick = { ) {
alertTitle.value = callRecordingTitle Icon(
alertMessage.value = callRecordingMessage imageVector = if (isRecOn) recOnImage else recOffImage,
showAlert.value = true contentDescription = null,
} tint = if (isRecOn)
MaterialTheme.colorScheme.error
else
MaterialTheme.colorScheme.onPrimary,
modifier = Modifier.size(40.dp)
) )
) { }
Icon(
imageVector = if (isRecOn) recOnImage else recOffImage,
contentDescription = null,
tint = if (isRecOn)
MaterialTheme.colorScheme.error
else
MaterialTheme.colorScheme.onPrimary,
modifier = Modifier.size(40.dp)
)
} }
Spacer(modifier = Modifier.width(22.dp)) Spacer(modifier = Modifier.width(22.dp))
@ -1086,18 +1088,20 @@ private fun AccountSpinner(ctx: Context, viewModel: ViewModel, navController: Na
val ua = UserAgent.ofAor(selected) val ua = UserAgent.ofAor(selected)
if (ua != null) { if (ua != null) {
val acc = ua.account val acc = ua.account
if (Api.account_regint(acc.accp) > 0) { if (!acc.isMobile) {
Api.account_set_regint(acc.accp, 0) if (Api.account_regint(acc.accp) > 0) {
Api.ua_unregister(ua.uap) Api.account_set_regint(acc.accp, 0)
} else { Api.ua_unregister(ua.uap)
Api.account_set_regint( } else {
acc.accp, Api.account_set_regint(
acc.configuredRegInt acc.accp,
) acc.configuredRegInt
Api.ua_register(ua.uap) )
Api.ua_register(ua.uap)
}
acc.regint = Api.account_regint(acc.accp)
Account.saveAccounts()
} }
acc.regint = Api.account_regint(acc.accp)
Account.saveAccounts()
} }
} }
) )
@ -1137,18 +1141,20 @@ private fun AccountSpinner(ctx: Context, viewModel: ViewModel, navController: Na
val ua = UserAgent.ofAor(selected) val ua = UserAgent.ofAor(selected)
if (ua != null) { if (ua != null) {
val acc = ua.account val acc = ua.account
if (Api.account_regint(acc.accp) > 0) { if (!acc.isMobile) {
Api.account_set_regint(acc.accp, 0) if (Api.account_regint(acc.accp) > 0) {
Api.ua_unregister(ua.uap) Api.account_set_regint(acc.accp, 0)
} else { Api.ua_unregister(ua.uap)
Api.account_set_regint( } else {
acc.accp, Api.account_set_regint(
acc.configuredRegInt acc.accp,
) acc.configuredRegInt
Api.ua_register(ua.uap) )
Api.ua_register(ua.uap)
}
acc.regint = Api.account_regint(acc.accp)
Account.saveAccounts()
} }
acc.regint = Api.account_regint(acc.accp)
Account.saveAccounts()
} }
} }
) )
@ -2249,7 +2255,7 @@ private fun showCall(ctx: Context, viewModel: ViewModel, ua: UserAgent?, showCal
if (viewModel.isUIRedundant(aor, callp, status, security)) return if (viewModel.isUIRedundant(aor, callp, status, security)) return
if (call == null) { if (call == null) {
pullToRefreshEnabled.value = true pullToRefreshEnabled.value = !ua.account.isMobile
viewModel.dialerState.callUri.value = ua.account.resumeUri viewModel.dialerState.callUri.value = ua.account.resumeUri
viewModel.dialerState.callUriLabel.value = ctx.getString(R.string.outgoing_call_to_dots) viewModel.dialerState.callUriLabel.value = ctx.getString(R.string.outgoing_call_to_dots)
Handler(Looper.getMainLooper()).postDelayed({ Handler(Looper.getMainLooper()).postDelayed({