Simplified dialpad implementation
This commit is contained in:
@@ -672,8 +672,6 @@ private fun TopAppBar(
|
|||||||
@Composable
|
@Composable
|
||||||
private fun BottomBar(ctx: Context, viewModel: ViewModel, navController: NavController) {
|
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 aor by viewModel.selectedAor.collectAsState()
|
||||||
val accountUpdate by viewModel.accountUpdate.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
|
if (aor.isNotEmpty()) Account.ofAor(aor)?.missedCalls ?: false else false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val isDialpadVisible by viewModel.isDialpadVisible.collectAsState()
|
||||||
|
|
||||||
val buttonSize = 48.dp
|
val buttonSize = 48.dp
|
||||||
|
|
||||||
Row(
|
Row(
|
||||||
@@ -751,10 +751,8 @@ private fun BottomBar(ctx: Context, viewModel: ViewModel, navController: NavCont
|
|||||||
}
|
}
|
||||||
|
|
||||||
IconButton(
|
IconButton(
|
||||||
// Disable the button if no account is selected
|
|
||||||
enabled = aor.isNotEmpty(),
|
enabled = aor.isNotEmpty(),
|
||||||
onClick = {
|
onClick = {
|
||||||
// No need for an 'if' check here anymore
|
|
||||||
navController.navigate("chats/$aor")
|
navController.navigate("chats/$aor")
|
||||||
},
|
},
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
@@ -770,10 +768,8 @@ private fun BottomBar(ctx: Context, viewModel: ViewModel, navController: NavCont
|
|||||||
}
|
}
|
||||||
|
|
||||||
IconButton(
|
IconButton(
|
||||||
// Disable the button if no account is selected
|
|
||||||
enabled = aor.isNotEmpty(),
|
enabled = aor.isNotEmpty(),
|
||||||
onClick = {
|
onClick = {
|
||||||
// No need for an 'if' check here anymore
|
|
||||||
navController.navigate("calls/$aor")
|
navController.navigate("calls/$aor")
|
||||||
},
|
},
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
@@ -789,21 +785,18 @@ private fun BottomBar(ctx: Context, viewModel: ViewModel, navController: NavCont
|
|||||||
}
|
}
|
||||||
|
|
||||||
IconButton(
|
IconButton(
|
||||||
onClick = {
|
onClick = { viewModel.toggleDialpadVisibility() },
|
||||||
viewModel.updateDialpadIcon(
|
modifier = Modifier.weight(1f).size(buttonSize),
|
||||||
if (dialpadIcon == R.drawable.dialpad_off) R.drawable.dialpad_on else R.drawable.dialpad_off
|
|
||||||
)
|
|
||||||
},
|
|
||||||
modifier = Modifier
|
|
||||||
.weight(1f)
|
|
||||||
.size(buttonSize),
|
|
||||||
enabled = dialpadButtonEnabled.value
|
enabled = dialpadButtonEnabled.value
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = ImageVector.vectorResource(dialpadIcon),
|
imageVector = ImageVector.vectorResource(R.drawable.dialpad),
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.size(buttonSize),
|
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) }
|
var filteredSuggestions by remember { mutableStateOf(suggestions) }
|
||||||
val focusRequester = remember { FocusRequester() }
|
val focusRequester = remember { FocusRequester() }
|
||||||
val lazyListState = rememberLazyListState()
|
val lazyListState = rememberLazyListState()
|
||||||
val dialpadIcon by viewModel.dialpadIcon.collectAsState()
|
val isDialpadVisible by viewModel.isDialpadVisible.collectAsState()
|
||||||
|
|
||||||
Row(modifier = Modifier
|
Row(modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
@@ -1184,11 +1177,12 @@ private fun CallUriRow(ctx: Context, viewModel: ViewModel) {
|
|||||||
val account = Account.ofAor(viewModel.selectedAor.value)
|
val account = Account.ofAor(viewModel.selectedAor.value)
|
||||||
if (account != null)
|
if (account != null)
|
||||||
if (account.numericKeypad)
|
if (account.numericKeypad)
|
||||||
viewModel.updateDialpadIcon(R.drawable.dialpad_on)
|
if (isDialpadVisible)
|
||||||
|
viewModel.toggleDialpadVisibility()
|
||||||
},
|
},
|
||||||
label = { Text(text = callUriLabel.value, fontSize = 18.sp) },
|
label = { Text(text = callUriLabel.value, fontSize = 18.sp) },
|
||||||
textStyle = TextStyle(fontSize = 18.sp),
|
textStyle = TextStyle(fontSize = 18.sp),
|
||||||
keyboardOptions = if (dialpadIcon == R.drawable.dialpad_on)
|
keyboardOptions = if (isDialpadVisible)
|
||||||
KeyboardOptions(keyboardType = KeyboardType.Phone)
|
KeyboardOptions(keyboardType = KeyboardType.Phone)
|
||||||
else
|
else
|
||||||
KeyboardOptions(keyboardType = KeyboardType.Text)
|
KeyboardOptions(keyboardType = KeyboardType.Text)
|
||||||
@@ -1330,7 +1324,7 @@ private fun CallUriRow(ctx: Context, viewModel: ViewModel) {
|
|||||||
@Composable
|
@Composable
|
||||||
private fun CallRow(ctx: Context, viewModel: ViewModel) {
|
private fun CallRow(ctx: Context, viewModel: ViewModel) {
|
||||||
|
|
||||||
val dialpadIcon by viewModel.dialpadIcon.collectAsState()
|
val isDialpadVisible by viewModel.isDialpadVisible.collectAsState()
|
||||||
|
|
||||||
Row( modifier = Modifier
|
Row( modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
@@ -1546,7 +1540,7 @@ private fun CallRow(ctx: Context, viewModel: ViewModel) {
|
|||||||
.focusRequester(focusRequester),
|
.focusRequester(focusRequester),
|
||||||
label = { Text(stringResource(R.string.transfer_destination)) },
|
label = { Text(stringResource(R.string.transfer_destination)) },
|
||||||
textStyle = TextStyle(fontSize = 18.sp),
|
textStyle = TextStyle(fontSize = 18.sp),
|
||||||
keyboardOptions = if (dialpadIcon == R.drawable.dialpad_on)
|
keyboardOptions = if (isDialpadVisible)
|
||||||
KeyboardOptions(keyboardType = KeyboardType.Phone)
|
KeyboardOptions(keyboardType = KeyboardType.Phone)
|
||||||
else
|
else
|
||||||
KeyboardOptions(keyboardType = KeyboardType.Text)
|
KeyboardOptions(keyboardType = KeyboardType.Text)
|
||||||
|
|||||||
@@ -80,18 +80,11 @@ class ViewModel(application: Application) : AndroidViewModel(application) {
|
|||||||
_micIcon.value = iconResId
|
_micIcon.value = iconResId
|
||||||
}
|
}
|
||||||
|
|
||||||
private val _showVmIcon = MutableStateFlow(false)
|
private val _isDialpadVisible = MutableStateFlow(false)
|
||||||
val showVmIcon: StateFlow<Boolean> = _showVmIcon.asStateFlow()
|
val isDialpadVisible: StateFlow<Boolean> = _isDialpadVisible
|
||||||
|
|
||||||
fun updateShowVmIcon(show: Boolean) {
|
fun toggleDialpadVisibility() {
|
||||||
_showVmIcon.value = show
|
_isDialpadVisible.value = !_isDialpadVisible.value
|
||||||
}
|
|
||||||
|
|
||||||
private val _dialpadIcon = MutableStateFlow(R.drawable.dialpad_off)
|
|
||||||
val dialpadIcon: StateFlow<Int> = _dialpadIcon.asStateFlow()
|
|
||||||
|
|
||||||
fun updateDialpadIcon(newIcon: Int) {
|
|
||||||
_dialpadIcon.value = newIcon
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private val _selectedCallRow = MutableStateFlow<CallRow?>(null)
|
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