diff --git a/app/src/main/java/org/linphone/ui/main/calls/fragment/StartCallFragment.kt b/app/src/main/java/org/linphone/ui/main/calls/fragment/StartCallFragment.kt index 0c14345b7..546ceafc5 100644 --- a/app/src/main/java/org/linphone/ui/main/calls/fragment/StartCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/calls/fragment/StartCallFragment.kt @@ -147,6 +147,21 @@ class StartCallFragment : GenericFragment() { viewModel.applyFilter(trimmed) } + viewModel.removedCharacterAtCurrentPositionEvent.observe(viewLifecycleOwner) { + it.consume { + val selectionStart = binding.searchBar.selectionStart + val selectionEnd = binding.searchBar.selectionEnd + if (selectionStart > 0) { + binding.searchBar.text = + binding.searchBar.text?.delete( + selectionStart - 1, + selectionEnd + ) + binding.searchBar.setSelection(selectionStart - 1) + } + } + } + viewModel.appendDigitToSearchBarEvent.observe(viewLifecycleOwner) { it.consume { digit -> val newValue = "${binding.searchBar.text}$digit" diff --git a/app/src/main/java/org/linphone/ui/main/calls/model/NumpadModel.kt b/app/src/main/java/org/linphone/ui/main/calls/model/NumpadModel.kt index f39be1540..c533577d2 100644 --- a/app/src/main/java/org/linphone/ui/main/calls/model/NumpadModel.kt +++ b/app/src/main/java/org/linphone/ui/main/calls/model/NumpadModel.kt @@ -24,6 +24,7 @@ import org.linphone.core.tools.Log class NumpadModel @UiThread constructor( private val onDigitClicked: (value: String) -> (Unit), + private val onBackspaceClicked: () -> (Unit), private val onCallClicked: () -> (Unit) ) { companion object { @@ -42,6 +43,12 @@ class NumpadModel @UiThread constructor( return true } + @UiThread + fun onBackspaceClicked() { + Log.i("$TAG Clicked on backspace") + onBackspaceClicked.invoke() + } + @UiThread fun onCallClicked() { Log.i("$TAG Starting call") diff --git a/app/src/main/java/org/linphone/ui/main/calls/viewmodel/StartCallViewModel.kt b/app/src/main/java/org/linphone/ui/main/calls/viewmodel/StartCallViewModel.kt index 5bb4f0a45..47f5b3246 100644 --- a/app/src/main/java/org/linphone/ui/main/calls/viewmodel/StartCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/calls/viewmodel/StartCallViewModel.kt @@ -59,6 +59,10 @@ class StartCallViewModel @UiThread constructor() : ViewModel() { MutableLiveData>() } + val removedCharacterAtCurrentPositionEvent: MutableLiveData> by lazy { + MutableLiveData>() + } + val requestKeyboardVisibilityChangedEvent: MutableLiveData> by lazy { MutableLiveData>() } @@ -103,6 +107,10 @@ class StartCallViewModel @UiThread constructor() : ViewModel() { // Don't do that, cursor will stay at start // searchFilter.value = "${searchFilter.value.orEmpty()}$digit" }, + { + // OnBackspaceClicked + removedCharacterAtCurrentPositionEvent.value = Event(true) + }, { // OnCallClicked val suggestion = searchFilter.value.orEmpty() if (suggestion.isNotEmpty()) { diff --git a/app/src/main/res/drawable/backspace_fill.xml b/app/src/main/res/drawable/backspace_fill.xml new file mode 100644 index 000000000..d3a2499c6 --- /dev/null +++ b/app/src/main/res/drawable/backspace_fill.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/call_start_numpad.xml b/app/src/main/res/layout/call_start_numpad.xml index df7b47226..4ba2c1413 100644 --- a/app/src/main/res/layout/call_start_numpad.xml +++ b/app/src/main/res/layout/call_start_numpad.xml @@ -185,6 +185,21 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent"/> + + \ No newline at end of file