Fixed empty fragment when closing foldable device

This commit is contained in:
Sylvain Berfini 2021-08-03 11:54:34 +02:00
parent 63bd97d01e
commit 86d5991fa9
4 changed files with 32 additions and 0 deletions

View file

@ -25,6 +25,7 @@ import android.view.View
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.doOnPreDraw import androidx.core.view.doOnPreDraw
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.NavHostFragment
import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
@ -101,6 +102,13 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
sharedViewModel.layoutChangedEvent.observe(viewLifecycleOwner, { sharedViewModel.layoutChangedEvent.observe(viewLifecycleOwner, {
it.consume { it.consume {
sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable
if (binding.slidingPane.isSlideable) {
val navHostFragment = childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
if (navHostFragment.navController.currentDestination?.id == R.id.emptyChatFragment) {
Log.i("[Chat] Foldable device has been folded, closing side pane with empty fragment")
binding.slidingPane.closePane()
}
}
} }
}) })
binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED

View file

@ -26,6 +26,7 @@ import android.view.View
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.doOnPreDraw import androidx.core.view.doOnPreDraw
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.NavHostFragment
import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
@ -89,6 +90,13 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
sharedViewModel.layoutChangedEvent.observe(viewLifecycleOwner, { sharedViewModel.layoutChangedEvent.observe(viewLifecycleOwner, {
it.consume { it.consume {
sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable
if (binding.slidingPane.isSlideable) {
val navHostFragment = childFragmentManager.findFragmentById(R.id.contacts_nav_container) as NavHostFragment
if (navHostFragment.navController.currentDestination?.id == R.id.emptyContactFragment) {
Log.i("[Contacts] Foldable device has been folded, closing side pane with empty fragment")
binding.slidingPane.closePane()
}
}
} }
}) })
binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED

View file

@ -25,6 +25,7 @@ import android.view.View
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.doOnPreDraw import androidx.core.view.doOnPreDraw
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.NavHostFragment
import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
@ -92,6 +93,13 @@ class MasterCallLogsFragment : MasterFragment<HistoryMasterFragmentBinding, Call
sharedViewModel.layoutChangedEvent.observe(viewLifecycleOwner, { sharedViewModel.layoutChangedEvent.observe(viewLifecycleOwner, {
it.consume { it.consume {
sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable
if (binding.slidingPane.isSlideable) {
val navHostFragment = childFragmentManager.findFragmentById(R.id.history_nav_container) as NavHostFragment
if (navHostFragment.navController.currentDestination?.id == R.id.emptyCallHistoryFragment) {
Log.i("[History] Foldable device has been folded, closing side pane with empty fragment")
binding.slidingPane.closePane()
}
}
} }
}) })
binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED

View file

@ -23,6 +23,7 @@ import android.os.Bundle
import android.view.View import android.view.View
import androidx.core.view.doOnPreDraw import androidx.core.view.doOnPreDraw
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.NavHostFragment
import androidx.slidingpanelayout.widget.SlidingPaneLayout import androidx.slidingpanelayout.widget.SlidingPaneLayout
import org.linphone.R import org.linphone.R
import org.linphone.activities.* import org.linphone.activities.*
@ -66,6 +67,13 @@ class SettingsFragment : SecureFragment<SettingsFragmentBinding>() {
sharedViewModel.layoutChangedEvent.observe(viewLifecycleOwner, { sharedViewModel.layoutChangedEvent.observe(viewLifecycleOwner, {
it.consume { it.consume {
sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable
if (binding.slidingPane.isSlideable) {
val navHostFragment = childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
if (navHostFragment.navController.currentDestination?.id == R.id.emptySettingsFragment) {
Log.i("[Settings] Foldable device has been folded, closing side pane with empty fragment")
binding.slidingPane.closePane()
}
}
} }
}) })
binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED