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 50c0baf59..5b387cebb 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 @@ -29,6 +29,7 @@ import androidx.core.view.doOnPreDraw import androidx.navigation.fragment.findNavController import androidx.navigation.navGraphViewModels import androidx.recyclerview.widget.LinearLayoutManager +import com.google.android.material.bottomsheet.BottomSheetBehavior import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R import org.linphone.contacts.getListOfSipAddressesAndPhoneNumbers @@ -171,6 +172,15 @@ class StartCallFragment : GenericFragment() { } } + viewModel.isNumpadVisible.observe(viewLifecycleOwner) { visible -> + val standardBottomSheetBehavior = BottomSheetBehavior.from(binding.numpadLayout.root) + if (visible) { + standardBottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED + } else { + standardBottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED + } + } + binding.root.setKeyboardInsetListener { keyboardVisible -> if (keyboardVisible) { viewModel.isNumpadVisible.value = false 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 f8bd813f3..5bb4f0a45 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 @@ -23,7 +23,10 @@ import androidx.annotation.UiThread import androidx.annotation.WorkerThread import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope import java.util.ArrayList +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.contacts.ContactsManager.ContactsListener @@ -146,8 +149,12 @@ class StartCallViewModel @UiThread constructor() : ViewModel() { @UiThread fun switchBetweenKeyboardAndNumpad() { - requestKeyboardVisibilityChangedEvent.value = Event(isNumpadVisible.value == true) - isNumpadVisible.value = isNumpadVisible.value == false + val showKeyboard = isNumpadVisible.value == true + requestKeyboardVisibilityChangedEvent.value = Event(showKeyboard) + viewModelScope.launch { + delay(100) + isNumpadVisible.value = !showKeyboard + } } @UiThread diff --git a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt index affc759b6..c2abadc88 100644 --- a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt +++ b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt @@ -42,7 +42,6 @@ import androidx.core.view.doOnLayout import androidx.databinding.BindingAdapter import androidx.databinding.DataBindingUtil import androidx.databinding.ViewDataBinding -import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.findViewTreeLifecycleOwner import coil.load import coil.transform.CircleCropTransformation @@ -320,15 +319,6 @@ fun setConstraintLayoutBottomMargin(view: View, margins: Float) { view.layoutParams = params } -@BindingAdapter("inflatedLifecycleOwner") -fun setInflatedViewStubLifecycleOwner(view: View, enable: Boolean) { - val binding = DataBindingUtil.bind(view) - // This is a bit hacky... - if (view.context is LifecycleOwner) { - binding?.lifecycleOwner = view.context as? LifecycleOwner - } -} - @BindingAdapter("focusNextOnInput") fun focusNextOnInput(editText: EditText, enabled: Boolean) { if (!enabled) return diff --git a/app/src/main/res/layout/call_start_fragment.xml b/app/src/main/res/layout/call_start_fragment.xml index 3a71789ec..7efe61090 100644 --- a/app/src/main/res/layout/call_start_fragment.xml +++ b/app/src/main/res/layout/call_start_fragment.xml @@ -16,246 +16,244 @@ type="org.linphone.ui.main.calls.viewmodel.StartCallViewModel" /> - + android:layout_height="match_parent"> - - - - - - - + android:layout_height="match_parent" + android:background="@color/gray_7"> - + - + + + + + + + + + - - + + - + - + - + - + - + - + - + - + - + + + bind:handleClickedListener="@{hideNumpadClickListener}" + bind:model="@{viewModel.numpadModel}" + layout="@layout/call_start_numpad" /> - + \ No newline at end of file diff --git a/app/src/main/res/layout/call_start_numpad.xml b/app/src/main/res/layout/call_start_numpad.xml index 5c3eb9ada..df7b47226 100644 --- a/app/src/main/res/layout/call_start_numpad.xml +++ b/app/src/main/res/layout/call_start_numpad.xml @@ -10,27 +10,26 @@ - + android:focusable="true" + app:behavior_hideable="true" + app:behavior_peekHeight="0dp" + app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"> -