Simplified dialpad implementation
This commit is contained in:
@ -672,8 +672,6 @@ private fun TopAppBar(
|
||||
@Composable
|
||||
private fun BottomBar(ctx: Context, viewModel: ViewModel, navController: NavController) {
|
||||
|
||||
// ... (the top part of your function is the same) ...
|
||||
val dialpadIcon by viewModel.dialpadIcon.collectAsState()
|
||||
val aor by viewModel.selectedAor.collectAsState()
|
||||
val accountUpdate by viewModel.accountUpdate.collectAsState()
|
||||
|
||||
@ -690,6 +688,8 @@ private fun BottomBar(ctx: Context, viewModel: ViewModel, navController: NavCont
|
||||
if (aor.isNotEmpty()) Account.ofAor(aor)?.missedCalls ?: false else false
|
||||
}
|
||||
|
||||
val isDialpadVisible by viewModel.isDialpadVisible.collectAsState()
|
||||
|
||||
val buttonSize = 48.dp
|
||||
|
||||
Row(
|
||||
@ -751,10 +751,8 @@ private fun BottomBar(ctx: Context, viewModel: ViewModel, navController: NavCont
|
||||
}
|
||||
|
||||
IconButton(
|
||||
// Disable the button if no account is selected
|
||||
enabled = aor.isNotEmpty(),
|
||||
onClick = {
|
||||
// No need for an 'if' check here anymore
|
||||
navController.navigate("chats/$aor")
|
||||
},
|
||||
modifier = Modifier
|
||||
@ -770,10 +768,8 @@ private fun BottomBar(ctx: Context, viewModel: ViewModel, navController: NavCont
|
||||
}
|
||||
|
||||
IconButton(
|
||||
// Disable the button if no account is selected
|
||||
enabled = aor.isNotEmpty(),
|
||||
onClick = {
|
||||
// No need for an 'if' check here anymore
|
||||
navController.navigate("calls/$aor")
|
||||
},
|
||||
modifier = Modifier
|
||||
@ -789,21 +785,18 @@ private fun BottomBar(ctx: Context, viewModel: ViewModel, navController: NavCont
|
||||
}
|
||||
|
||||
IconButton(
|
||||
onClick = {
|
||||
viewModel.updateDialpadIcon(
|
||||
if (dialpadIcon == R.drawable.dialpad_off) R.drawable.dialpad_on else R.drawable.dialpad_off
|
||||
)
|
||||
},
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.size(buttonSize),
|
||||
onClick = { viewModel.toggleDialpadVisibility() },
|
||||
modifier = Modifier.weight(1f).size(buttonSize),
|
||||
enabled = dialpadButtonEnabled.value
|
||||
) {
|
||||
Icon(
|
||||
imageVector = ImageVector.vectorResource(dialpadIcon),
|
||||
imageVector = ImageVector.vectorResource(R.drawable.dialpad),
|
||||
contentDescription = null,
|
||||
modifier = Modifier.size(buttonSize),
|
||||
tint = if (dialpadIcon == R.drawable.dialpad_off) MaterialTheme.colorScheme.secondary else MaterialTheme.colorScheme.error
|
||||
tint = if (isDialpadVisible)
|
||||
MaterialTheme.colorScheme.error
|
||||
else
|
||||
MaterialTheme.colorScheme.secondary
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -1136,7 +1129,7 @@ private fun CallUriRow(ctx: Context, viewModel: ViewModel) {
|
||||
var filteredSuggestions by remember { mutableStateOf(suggestions) }
|
||||
val focusRequester = remember { FocusRequester() }
|
||||
val lazyListState = rememberLazyListState()
|
||||
val dialpadIcon by viewModel.dialpadIcon.collectAsState()
|
||||
val isDialpadVisible by viewModel.isDialpadVisible.collectAsState()
|
||||
|
||||
Row(modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
@ -1184,11 +1177,12 @@ private fun CallUriRow(ctx: Context, viewModel: ViewModel) {
|
||||
val account = Account.ofAor(viewModel.selectedAor.value)
|
||||
if (account != null)
|
||||
if (account.numericKeypad)
|
||||
viewModel.updateDialpadIcon(R.drawable.dialpad_on)
|
||||
if (isDialpadVisible)
|
||||
viewModel.toggleDialpadVisibility()
|
||||
},
|
||||
label = { Text(text = callUriLabel.value, fontSize = 18.sp) },
|
||||
textStyle = TextStyle(fontSize = 18.sp),
|
||||
keyboardOptions = if (dialpadIcon == R.drawable.dialpad_on)
|
||||
keyboardOptions = if (isDialpadVisible)
|
||||
KeyboardOptions(keyboardType = KeyboardType.Phone)
|
||||
else
|
||||
KeyboardOptions(keyboardType = KeyboardType.Text)
|
||||
@ -1330,7 +1324,7 @@ private fun CallUriRow(ctx: Context, viewModel: ViewModel) {
|
||||
@Composable
|
||||
private fun CallRow(ctx: Context, viewModel: ViewModel) {
|
||||
|
||||
val dialpadIcon by viewModel.dialpadIcon.collectAsState()
|
||||
val isDialpadVisible by viewModel.isDialpadVisible.collectAsState()
|
||||
|
||||
Row( modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
@ -1546,7 +1540,7 @@ private fun CallRow(ctx: Context, viewModel: ViewModel) {
|
||||
.focusRequester(focusRequester),
|
||||
label = { Text(stringResource(R.string.transfer_destination)) },
|
||||
textStyle = TextStyle(fontSize = 18.sp),
|
||||
keyboardOptions = if (dialpadIcon == R.drawable.dialpad_on)
|
||||
keyboardOptions = if (isDialpadVisible)
|
||||
KeyboardOptions(keyboardType = KeyboardType.Phone)
|
||||
else
|
||||
KeyboardOptions(keyboardType = KeyboardType.Text)
|
||||
|
||||
@ -80,18 +80,11 @@ class ViewModel(application: Application) : AndroidViewModel(application) {
|
||||
_micIcon.value = iconResId
|
||||
}
|
||||
|
||||
private val _showVmIcon = MutableStateFlow(false)
|
||||
val showVmIcon: StateFlow<Boolean> = _showVmIcon.asStateFlow()
|
||||
private val _isDialpadVisible = MutableStateFlow(false)
|
||||
val isDialpadVisible: StateFlow<Boolean> = _isDialpadVisible
|
||||
|
||||
fun updateShowVmIcon(show: Boolean) {
|
||||
_showVmIcon.value = show
|
||||
}
|
||||
|
||||
private val _dialpadIcon = MutableStateFlow(R.drawable.dialpad_off)
|
||||
val dialpadIcon: StateFlow<Int> = _dialpadIcon.asStateFlow()
|
||||
|
||||
fun updateDialpadIcon(newIcon: Int) {
|
||||
_dialpadIcon.value = newIcon
|
||||
fun toggleDialpadVisibility() {
|
||||
_isDialpadVisible.value = !_isDialpadVisible.value
|
||||
}
|
||||
|
||||
private val _selectedCallRow = MutableStateFlow<CallRow?>(null)
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
<vector android:height="40dp"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="40dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M12,19c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM6,1c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM6,7c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM6,13c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM18,5c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,13c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM18,13c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM18,7c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,7c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,1c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z"/>
|
||||
</vector>
|
||||
Reference in New Issue
Block a user