diff --git a/app/src/main/java/org/linphone/ui/call/fragment/NewCallFragment.kt b/app/src/main/java/org/linphone/ui/call/fragment/NewCallFragment.kt index b44437249..660fbee3f 100644 --- a/app/src/main/java/org/linphone/ui/call/fragment/NewCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/call/fragment/NewCallFragment.kt @@ -32,6 +32,7 @@ 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.LinphoneApplication.Companion.corePreferences import org.linphone.R import org.linphone.contacts.getListOfSipAddressesAndPhoneNumbers import org.linphone.core.Address @@ -61,6 +62,16 @@ class NewCallFragment : GenericCallFragment() { R.id.call_nav_graph ) + private val bottomSheetCallback = object : BottomSheetBehavior.BottomSheetCallback() { + override fun onStateChanged(bottomSheet: View, newState: Int) { + if (newState == BottomSheetBehavior.STATE_COLLAPSED || newState == BottomSheetBehavior.STATE_HIDDEN) { + viewModel.isNumpadVisible.value = false + } + } + + override fun onSlide(bottomSheet: View, slideOffset: Float) { } + } + private lateinit var adapter: ConversationsContactsAndSuggestionsListAdapter private val listener = object : ContactNumberOrAddressClickListener { @@ -185,12 +196,15 @@ class NewCallFragment : GenericCallFragment() { } } + val bottomSheetBehavior = BottomSheetBehavior.from(binding.numpadLayout.root) + bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED + bottomSheetBehavior.addBottomSheetCallback(bottomSheetCallback) + viewModel.isNumpadVisible.observe(viewLifecycleOwner) { visible -> - val standardBottomSheetBehavior = BottomSheetBehavior.from(binding.numpadLayout.root) if (visible) { - standardBottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED + bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED } else { - standardBottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED + bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED } } @@ -201,6 +215,16 @@ class NewCallFragment : GenericCallFragment() { } } + override fun onResume() { + super.onResume() + + coreContext.postOnCoreThread { + if (corePreferences.automaticallyShowDialpad) { + viewModel.isNumpadVisible.postValue(true) + } + } + } + override fun onPause() { super.onPause() diff --git a/app/src/main/java/org/linphone/ui/call/fragment/TransferCallFragment.kt b/app/src/main/java/org/linphone/ui/call/fragment/TransferCallFragment.kt index fa086dde0..a46075aef 100644 --- a/app/src/main/java/org/linphone/ui/call/fragment/TransferCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/call/fragment/TransferCallFragment.kt @@ -33,6 +33,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.bottomsheet.BottomSheetBehavior import kotlin.getValue import org.linphone.LinphoneApplication.Companion.coreContext +import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R import org.linphone.core.tools.Log import org.linphone.databinding.CallTransferFragmentBinding @@ -63,6 +64,16 @@ class TransferCallFragment : GenericCallFragment() { R.id.call_nav_graph ) + private val bottomSheetCallback = object : BottomSheetBehavior.BottomSheetCallback() { + override fun onStateChanged(bottomSheet: View, newState: Int) { + if (newState == BottomSheetBehavior.STATE_COLLAPSED || newState == BottomSheetBehavior.STATE_HIDDEN) { + viewModel.isNumpadVisible.value = false + } + } + + override fun onSlide(bottomSheet: View, slideOffset: Float) { } + } + private lateinit var callViewModel: CurrentCallViewModel private lateinit var callsViewModel: CallsViewModel @@ -208,12 +219,15 @@ class TransferCallFragment : GenericCallFragment() { } } + val bottomSheetBehavior = BottomSheetBehavior.from(binding.numpadLayout.root) + bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED + bottomSheetBehavior.addBottomSheetCallback(bottomSheetCallback) + viewModel.isNumpadVisible.observe(viewLifecycleOwner) { visible -> - val standardBottomSheetBehavior = BottomSheetBehavior.from(binding.numpadLayout.root) if (visible) { - standardBottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED + bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED } else { - standardBottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED + bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED } } @@ -238,6 +252,12 @@ class TransferCallFragment : GenericCallFragment() { R.string.call_transfer_current_call_title, callViewModel.displayedName.value ?: callViewModel.displayedAddress.value ) + + coreContext.postOnCoreThread { + if (corePreferences.automaticallyShowDialpad) { + viewModel.isNumpadVisible.postValue(true) + } + } } private fun showConfirmAttendedTransferDialog(callModel: CallModel) {