Have automaticallyShowDialpad setting also work on new call/transfer call screens while already in call

This commit is contained in:
Sylvain Berfini 2025-03-21 15:41:33 +01:00
parent 2f9eb2f0ab
commit 2aed404167
2 changed files with 50 additions and 6 deletions

View file

@ -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()

View file

@ -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) {