Improve slidingPane opening

This commit is contained in:
Sylvain Berfini 2021-09-06 11:05:24 +02:00
parent b329ae8167
commit a66b638f22
6 changed files with 124 additions and 138 deletions

View file

@ -28,6 +28,7 @@ import androidx.navigation.NavOptions
import androidx.navigation.findNavController import androidx.navigation.findNavController
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.slidingpanelayout.widget.SlidingPaneLayout
import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.LinphoneApplication.Companion.corePreferences
import org.linphone.R import org.linphone.R
import org.linphone.activities.assistant.fragments.* import org.linphone.activities.assistant.fragments.*
@ -52,6 +53,19 @@ internal fun Fragment.findMasterNavController(): NavController {
return parentFragment?.parentFragment?.findNavController() ?: findNavController() return parentFragment?.parentFragment?.findNavController() ?: findNavController()
} }
fun computeSlidingPaneNavOptions(
slidingPane: SlidingPaneLayout,
popUpTo: Int = -1,
popUpInclusive: Boolean = false,
singleTop: Boolean = true
): NavOptions {
return if (slidingPane.isSlideable) {
popupTo(popUpTo, popUpInclusive, singleTop)
} else {
getRightToLeftAnimationNavOptions(popUpTo, popUpInclusive, singleTop)
}
}
fun getRightToLeftAnimationNavOptions( fun getRightToLeftAnimationNavOptions(
popUpTo: Int = -1, popUpTo: Int = -1,
popUpInclusive: Boolean = false, popUpInclusive: Boolean = false,
@ -267,45 +281,45 @@ internal fun DialerFragment.navigateToConfigFileViewer() {
/* Chat related */ /* Chat related */
internal fun MasterChatRoomsFragment.navigateToChatRoom(args: Bundle) { internal fun MasterChatRoomsFragment.navigateToChatRoom(
args: Bundle,
slidingPane: SlidingPaneLayout
) {
val navHostFragment = val navHostFragment =
childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
val previousBackStackEntry = navHostFragment.navController.currentBackStackEntry val previousBackStackEntry = navHostFragment.navController.currentBackStackEntry
if (previousBackStackEntry == null || previousBackStackEntry.destination.id == R.id.emptyChatFragment) { val popUpToFragmentId = if (previousBackStackEntry == null || previousBackStackEntry.destination.id == R.id.emptyChatFragment) {
navHostFragment.navController.navigate( R.id.emptyChatFragment
R.id.action_global_detailChatRoomFragment,
args,
popupTo(R.id.emptyChatFragment, true)
)
} else { } else {
navHostFragment.navController.navigate( R.id.chatRoomCreationFragment
R.id.action_global_detailChatRoomFragment,
args,
popupTo(R.id.chatRoomCreationFragment, true)
)
} }
navHostFragment.navController.navigate(
R.id.action_global_detailChatRoomFragment,
args,
computeSlidingPaneNavOptions(slidingPane, popUpToFragmentId, true)
)
if (!slidingPane.isOpen) slidingPane.openPane()
} }
internal fun MasterChatRoomsFragment.navigateToChatRoomCreation( internal fun MasterChatRoomsFragment.navigateToChatRoomCreation(
createGroupChatRoom: Boolean = false createGroupChatRoom: Boolean = false,
slidingPane: SlidingPaneLayout
) { ) {
val bundle = bundleOf("createGroup" to createGroupChatRoom) val bundle = bundleOf("createGroup" to createGroupChatRoom)
val navHostFragment = val navHostFragment =
childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
val previousBackStackEntry = navHostFragment.navController.currentBackStackEntry val previousBackStackEntry = navHostFragment.navController.currentBackStackEntry
if (previousBackStackEntry == null || previousBackStackEntry.destination.id == R.id.emptyChatFragment) { val popUpToFragmentId = if (previousBackStackEntry == null || previousBackStackEntry.destination.id == R.id.emptyChatFragment) {
navHostFragment.navController.navigate( R.id.emptyChatFragment
R.id.action_global_chatRoomCreationFragment,
bundle,
popupTo(R.id.emptyChatFragment, true)
)
} else { } else {
navHostFragment.navController.navigate( R.id.detailChatRoomFragment
R.id.action_global_chatRoomCreationFragment,
bundle,
popupTo(R.id.detailChatRoomFragment, true)
)
} }
navHostFragment.navController.navigate(
R.id.action_global_chatRoomCreationFragment,
bundle,
computeSlidingPaneNavOptions(slidingPane, popUpToFragmentId, true)
)
if (!slidingPane.isOpen) slidingPane.openPane()
} }
internal fun MasterChatRoomsFragment.clearDisplayedChatRoom() { internal fun MasterChatRoomsFragment.clearDisplayedChatRoom() {
@ -315,7 +329,7 @@ internal fun MasterChatRoomsFragment.clearDisplayedChatRoom() {
navHostFragment.navController.navigate( navHostFragment.navController.navigate(
R.id.action_global_emptyChatFragment, R.id.action_global_emptyChatFragment,
null, null,
popupTo(R.id.emptyChatFragment, true) getLeftToRightAnimationNavOptions(R.id.emptyChatFragment, true)
) )
} }
} }
@ -414,7 +428,7 @@ internal fun DetailChatRoomFragment.navigateToEmptyChatRoom() {
findNavController().navigate( findNavController().navigate(
R.id.action_global_emptyChatFragment, R.id.action_global_emptyChatFragment,
null, null,
popupTo() getLeftToRightAnimationNavOptions()
) )
} }
@ -442,7 +456,7 @@ internal fun ChatRoomCreationFragment.navigateToEmptyChatRoom() {
findNavController().navigate( findNavController().navigate(
R.id.action_global_emptyChatFragment, R.id.action_global_emptyChatFragment,
null, null,
popupTo() getLeftToRightAnimationNavOptions()
) )
} }
@ -468,19 +482,23 @@ internal fun GroupInfoFragment.navigateToChatRoom(args: Bundle?) {
/* Contacts related */ /* Contacts related */
internal fun MasterContactsFragment.navigateToContact() { internal fun MasterContactsFragment.navigateToContact(slidingPane: SlidingPaneLayout) {
if (findNavController().currentDestination?.id == R.id.masterContactsFragment) { if (findNavController().currentDestination?.id == R.id.masterContactsFragment) {
val navHostFragment = val navHostFragment =
childFragmentManager.findFragmentById(R.id.contacts_nav_container) as NavHostFragment childFragmentManager.findFragmentById(R.id.contacts_nav_container) as NavHostFragment
navHostFragment.navController.navigate( navHostFragment.navController.navigate(
R.id.action_global_detailContactFragment, R.id.action_global_detailContactFragment,
null, null,
popupTo(R.id.emptyContactFragment, true) computeSlidingPaneNavOptions(slidingPane, R.id.emptyContactFragment, true)
) )
if (!slidingPane.isOpen) slidingPane.openPane()
} }
} }
internal fun MasterContactsFragment.navigateToContactEditor(sipUriToAdd: String? = null) { internal fun MasterContactsFragment.navigateToContactEditor(
sipUriToAdd: String? = null,
slidingPane: SlidingPaneLayout
) {
if (findNavController().currentDestination?.id == R.id.masterContactsFragment) { if (findNavController().currentDestination?.id == R.id.masterContactsFragment) {
val bundle = if (sipUriToAdd != null) bundleOf("SipUri" to sipUriToAdd) else Bundle() val bundle = if (sipUriToAdd != null) bundleOf("SipUri" to sipUriToAdd) else Bundle()
val navHostFragment = val navHostFragment =
@ -488,8 +506,9 @@ internal fun MasterContactsFragment.navigateToContactEditor(sipUriToAdd: String?
navHostFragment.navController.navigate( navHostFragment.navController.navigate(
R.id.action_global_contactEditorFragment, R.id.action_global_contactEditorFragment,
bundle, bundle,
popupTo(R.id.emptyContactFragment, true) computeSlidingPaneNavOptions(slidingPane, R.id.emptyContactFragment, true)
) )
if (!slidingPane.isOpen) slidingPane.openPane()
} }
} }
@ -500,7 +519,7 @@ internal fun MasterContactsFragment.clearDisplayedContact() {
navHostFragment.navController.navigate( navHostFragment.navController.navigate(
R.id.action_global_emptyContactFragment, R.id.action_global_emptyContactFragment,
null, null,
popupTo(R.id.emptyContactFragment, true) getLeftToRightAnimationNavOptions(R.id.emptyContactFragment, true)
) )
} }
} }
@ -511,7 +530,7 @@ internal fun ContactEditorFragment.navigateToContact(contact: NativeContact) {
findNavController().navigate( findNavController().navigate(
R.id.action_contactEditorFragment_to_detailContactFragment, R.id.action_contactEditorFragment_to_detailContactFragment,
bundle, bundle,
popupTo(R.id.masterContactsFragment, false) getRightToLeftAnimationNavOptions(R.id.masterContactsFragment, false)
) )
} }
@ -519,7 +538,7 @@ internal fun ContactEditorFragment.navigateToEmptyContact() {
findNavController().navigate( findNavController().navigate(
R.id.action_global_emptyContactFragment, R.id.action_global_emptyContactFragment,
null, null,
popupTo() getLeftToRightAnimationNavOptions()
) )
} }
@ -544,7 +563,7 @@ internal fun DetailContactFragment.navigateToContactEditor() {
findNavController().navigate( findNavController().navigate(
R.id.action_detailContactFragment_to_contactEditorFragment, R.id.action_detailContactFragment_to_contactEditorFragment,
null, null,
popupTo() getLeftToRightAnimationNavOptions()
) )
} }
} }
@ -553,21 +572,22 @@ internal fun DetailContactFragment.navigateToEmptyContact() {
findNavController().navigate( findNavController().navigate(
R.id.action_global_emptyContactFragment, R.id.action_global_emptyContactFragment,
null, null,
popupTo() getLeftToRightAnimationNavOptions()
) )
} }
/* History related */ /* History related */
internal fun MasterCallLogsFragment.navigateToCallHistory() { internal fun MasterCallLogsFragment.navigateToCallHistory(slidingPane: SlidingPaneLayout) {
if (findNavController().currentDestination?.id == R.id.masterCallLogsFragment) { if (findNavController().currentDestination?.id == R.id.masterCallLogsFragment) {
val navHostFragment = val navHostFragment =
childFragmentManager.findFragmentById(R.id.history_nav_container) as NavHostFragment childFragmentManager.findFragmentById(R.id.history_nav_container) as NavHostFragment
navHostFragment.navController.navigate( navHostFragment.navController.navigate(
R.id.action_global_detailCallLogFragment, R.id.action_global_detailCallLogFragment,
null, null,
popupTo(R.id.emptyCallHistoryFragment, true) computeSlidingPaneNavOptions(slidingPane, R.id.emptyCallHistoryFragment, true)
) )
if (!slidingPane.isOpen) slidingPane.openPane()
} }
} }
@ -578,7 +598,7 @@ internal fun MasterCallLogsFragment.clearDisplayedCallHistory() {
navHostFragment.navController.navigate( navHostFragment.navController.navigate(
R.id.action_global_emptyFragment, R.id.action_global_emptyFragment,
null, null,
popupTo(R.id.emptyCallHistoryFragment, true) getLeftToRightAnimationNavOptions(R.id.emptyCallHistoryFragment, true)
) )
} }
} }
@ -631,14 +651,17 @@ internal fun DetailCallLogFragment.navigateToEmptyCallHistory() {
findNavController().navigate( findNavController().navigate(
R.id.action_global_emptyFragment, R.id.action_global_emptyFragment,
null, null,
popupTo() getLeftToRightAnimationNavOptions()
) )
} }
} }
/* Settings related */ /* Settings related */
internal fun SettingsFragment.navigateToAccountSettings(identity: String) { internal fun SettingsFragment.navigateToAccountSettings(
identity: String,
slidingPane: SlidingPaneLayout
) {
if (findNavController().currentDestination?.id == R.id.settingsFragment) { if (findNavController().currentDestination?.id == R.id.settingsFragment) {
val bundle = bundleOf("Identity" to identity) val bundle = bundleOf("Identity" to identity)
val navHostFragment = val navHostFragment =
@ -646,104 +669,113 @@ internal fun SettingsFragment.navigateToAccountSettings(identity: String) {
navHostFragment.navController.navigate( navHostFragment.navController.navigate(
R.id.action_global_accountSettingsFragment, R.id.action_global_accountSettingsFragment,
bundle, bundle,
popupTo() computeSlidingPaneNavOptions(slidingPane)
) )
if (!slidingPane.isOpen) slidingPane.openPane()
} }
} }
internal fun SettingsFragment.navigateToTunnelSettings() { internal fun SettingsFragment.navigateToTunnelSettings(slidingPane: SlidingPaneLayout) {
if (findNavController().currentDestination?.id == R.id.settingsFragment) { if (findNavController().currentDestination?.id == R.id.settingsFragment) {
val navHostFragment = val navHostFragment =
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
navHostFragment.navController.navigate( navHostFragment.navController.navigate(
R.id.action_global_tunnelSettingsFragment, R.id.action_global_tunnelSettingsFragment,
null, null,
popupTo() computeSlidingPaneNavOptions(slidingPane)
) )
if (!slidingPane.isOpen) slidingPane.openPane()
} }
} }
internal fun SettingsFragment.navigateToAudioSettings() { internal fun SettingsFragment.navigateToAudioSettings(slidingPane: SlidingPaneLayout) {
if (findNavController().currentDestination?.id == R.id.settingsFragment) { if (findNavController().currentDestination?.id == R.id.settingsFragment) {
val navHostFragment = val navHostFragment =
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
navHostFragment.navController.navigate( navHostFragment.navController.navigate(
R.id.action_global_audioSettingsFragment, R.id.action_global_audioSettingsFragment,
null, null,
popupTo() computeSlidingPaneNavOptions(slidingPane)
) )
if (!slidingPane.isOpen) slidingPane.openPane()
} }
} }
internal fun SettingsFragment.navigateToVideoSettings() { internal fun SettingsFragment.navigateToVideoSettings(slidingPane: SlidingPaneLayout) {
if (findNavController().currentDestination?.id == R.id.settingsFragment) { if (findNavController().currentDestination?.id == R.id.settingsFragment) {
val navHostFragment = val navHostFragment =
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
navHostFragment.navController.navigate( navHostFragment.navController.navigate(
R.id.action_global_videoSettingsFragment, R.id.action_global_videoSettingsFragment,
null, null,
popupTo() computeSlidingPaneNavOptions(slidingPane)
) )
if (!slidingPane.isOpen) slidingPane.openPane()
} }
} }
internal fun SettingsFragment.navigateToCallSettings() { internal fun SettingsFragment.navigateToCallSettings(slidingPane: SlidingPaneLayout) {
if (findNavController().currentDestination?.id == R.id.settingsFragment) { if (findNavController().currentDestination?.id == R.id.settingsFragment) {
val navHostFragment = val navHostFragment =
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
navHostFragment.navController.navigate( navHostFragment.navController.navigate(
R.id.action_global_callSettingsFragment, R.id.action_global_callSettingsFragment,
null, null,
popupTo() computeSlidingPaneNavOptions(slidingPane)
) )
if (!slidingPane.isOpen) slidingPane.openPane()
} }
} }
internal fun SettingsFragment.navigateToChatSettings() { internal fun SettingsFragment.navigateToChatSettings(slidingPane: SlidingPaneLayout) {
if (findNavController().currentDestination?.id == R.id.settingsFragment) { if (findNavController().currentDestination?.id == R.id.settingsFragment) {
val navHostFragment = val navHostFragment =
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
navHostFragment.navController.navigate( navHostFragment.navController.navigate(
R.id.action_global_chatSettingsFragment, R.id.action_global_chatSettingsFragment,
null, null,
popupTo() computeSlidingPaneNavOptions(slidingPane)
) )
if (!slidingPane.isOpen) slidingPane.openPane()
} }
} }
internal fun SettingsFragment.navigateToNetworkSettings() { internal fun SettingsFragment.navigateToNetworkSettings(slidingPane: SlidingPaneLayout) {
if (findNavController().currentDestination?.id == R.id.settingsFragment) { if (findNavController().currentDestination?.id == R.id.settingsFragment) {
val navHostFragment = val navHostFragment =
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
navHostFragment.navController.navigate( navHostFragment.navController.navigate(
R.id.action_global_networkSettingsFragment, R.id.action_global_networkSettingsFragment,
null, null,
popupTo() computeSlidingPaneNavOptions(slidingPane)
) )
if (!slidingPane.isOpen) slidingPane.openPane()
} }
} }
internal fun SettingsFragment.navigateToContactsSettings() { internal fun SettingsFragment.navigateToContactsSettings(slidingPane: SlidingPaneLayout) {
if (findNavController().currentDestination?.id == R.id.settingsFragment) { if (findNavController().currentDestination?.id == R.id.settingsFragment) {
val navHostFragment = val navHostFragment =
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
navHostFragment.navController.navigate( navHostFragment.navController.navigate(
R.id.action_global_contactsSettingsFragment, R.id.action_global_contactsSettingsFragment,
null, null,
popupTo() computeSlidingPaneNavOptions(slidingPane)
) )
if (!slidingPane.isOpen) slidingPane.openPane()
} }
} }
internal fun SettingsFragment.navigateToAdvancedSettings() { internal fun SettingsFragment.navigateToAdvancedSettings(slidingPane: SlidingPaneLayout) {
if (findNavController().currentDestination?.id == R.id.settingsFragment) { if (findNavController().currentDestination?.id == R.id.settingsFragment) {
val navHostFragment = val navHostFragment =
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
navHostFragment.navController.navigate( navHostFragment.navController.navigate(
R.id.action_global_advancedSettingsFragment, R.id.action_global_advancedSettingsFragment,
null, null,
popupTo() computeSlidingPaneNavOptions(slidingPane)
) )
if (!slidingPane.isOpen) slidingPane.openPane()
} }
} }
@ -767,76 +799,48 @@ internal fun PhoneAccountLinkingFragment.navigateToPhoneAccountValidation(args:
} }
} }
internal fun AccountSettingsFragment.navigateToEmptySetting() { internal fun navigateToEmptySetting(navController: NavController) {
findNavController().navigate( navController.navigate(
R.id.action_global_emptySettingsFragment, R.id.action_global_emptySettingsFragment,
null, null,
popupTo() getLeftToRightAnimationNavOptions()
) )
} }
internal fun AccountSettingsFragment.navigateToEmptySetting() {
navigateToEmptySetting(findNavController())
}
internal fun AdvancedSettingsFragment.navigateToEmptySetting() { internal fun AdvancedSettingsFragment.navigateToEmptySetting() {
findNavController().navigate( navigateToEmptySetting(findNavController())
R.id.action_global_emptySettingsFragment,
null,
popupTo()
)
} }
internal fun AudioSettingsFragment.navigateToEmptySetting() { internal fun AudioSettingsFragment.navigateToEmptySetting() {
findNavController().navigate( navigateToEmptySetting(findNavController())
R.id.action_global_emptySettingsFragment,
null,
popupTo()
)
} }
internal fun CallSettingsFragment.navigateToEmptySetting() { internal fun CallSettingsFragment.navigateToEmptySetting() {
findNavController().navigate( navigateToEmptySetting(findNavController())
R.id.action_global_emptySettingsFragment,
null,
popupTo()
)
} }
internal fun ChatSettingsFragment.navigateToEmptySetting() { internal fun ChatSettingsFragment.navigateToEmptySetting() {
findNavController().navigate( navigateToEmptySetting(findNavController())
R.id.action_global_emptySettingsFragment,
null,
popupTo()
)
} }
internal fun ContactsSettingsFragment.navigateToEmptySetting() { internal fun ContactsSettingsFragment.navigateToEmptySetting() {
findNavController().navigate( navigateToEmptySetting(findNavController())
R.id.action_global_emptySettingsFragment,
null,
popupTo()
)
} }
internal fun NetworkSettingsFragment.navigateToEmptySetting() { internal fun NetworkSettingsFragment.navigateToEmptySetting() {
findNavController().navigate( navigateToEmptySetting(findNavController())
R.id.action_global_emptySettingsFragment,
null,
popupTo()
)
} }
internal fun TunnelSettingsFragment.navigateToEmptySetting() { internal fun TunnelSettingsFragment.navigateToEmptySetting() {
findNavController().navigate( navigateToEmptySetting(findNavController())
R.id.action_global_emptySettingsFragment,
null,
popupTo()
)
} }
internal fun VideoSettingsFragment.navigateToEmptySetting() { internal fun VideoSettingsFragment.navigateToEmptySetting() {
findNavController().navigate( navigateToEmptySetting(findNavController())
R.id.action_global_emptySettingsFragment,
null,
popupTo()
)
} }
/* Side menu related */ /* Side menu related */

View file

@ -225,9 +225,8 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
Log.w("[Chat] Activity is pending destruction, don't start navigating now!") Log.w("[Chat] Activity is pending destruction, don't start navigating now!")
sharedViewModel.destructionPendingChatRoom = chatRoom sharedViewModel.destructionPendingChatRoom = chatRoom
} else { } else {
binding.slidingPane.openPane()
sharedViewModel.selectedChatRoom.value = chatRoom sharedViewModel.selectedChatRoom.value = chatRoom
navigateToChatRoom(AppUtils.createBundleWithSharedTextAndFiles(sharedViewModel)) navigateToChatRoom(AppUtils.createBundleWithSharedTextAndFiles(sharedViewModel), binding.slidingPane)
} }
} }
} }
@ -253,25 +252,22 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
} }
binding.setNewOneToOneChatRoomClickListener { binding.setNewOneToOneChatRoomClickListener {
binding.slidingPane.openPane()
sharedViewModel.chatRoomParticipants.value = arrayListOf() sharedViewModel.chatRoomParticipants.value = arrayListOf()
navigateToChatRoomCreation(false) navigateToChatRoomCreation(false, binding.slidingPane)
} }
binding.setNewGroupChatRoomClickListener { binding.setNewGroupChatRoomClickListener {
binding.slidingPane.openPane()
sharedViewModel.selectedGroupChatRoom.value = null sharedViewModel.selectedGroupChatRoom.value = null
sharedViewModel.chatRoomParticipants.value = arrayListOf() sharedViewModel.chatRoomParticipants.value = arrayListOf()
navigateToChatRoomCreation(true) navigateToChatRoomCreation(true, binding.slidingPane)
} }
val pendingDestructionChatRoom = sharedViewModel.destructionPendingChatRoom val pendingDestructionChatRoom = sharedViewModel.destructionPendingChatRoom
if (pendingDestructionChatRoom != null) { if (pendingDestructionChatRoom != null) {
binding.slidingPane.openPane()
Log.w("[Chat] Found pending chat room from before activity was recreated") Log.w("[Chat] Found pending chat room from before activity was recreated")
sharedViewModel.destructionPendingChatRoom = null sharedViewModel.destructionPendingChatRoom = null
sharedViewModel.selectedChatRoom.value = pendingDestructionChatRoom sharedViewModel.selectedChatRoom.value = pendingDestructionChatRoom
navigateToChatRoom(AppUtils.createBundleWithSharedTextAndFiles(sharedViewModel)) navigateToChatRoom(AppUtils.createBundleWithSharedTextAndFiles(sharedViewModel), binding.slidingPane)
} }
val localSipUri = arguments?.getString("LocalSipUri") val localSipUri = arguments?.getString("LocalSipUri")

View file

@ -197,13 +197,12 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
sharedViewModel.selectedContact.value = contact sharedViewModel.selectedContact.value = contact
listViewModel.filter.value = "" listViewModel.filter.value = ""
binding.slidingPane.openPane()
if (editOnClick) { if (editOnClick) {
navigateToContactEditor(sipUriToAdd) navigateToContactEditor(sipUriToAdd, binding.slidingPane)
editOnClick = false editOnClick = false
sipUriToAdd = null sipUriToAdd = null
} else { } else {
navigateToContact() navigateToContact(binding.slidingPane)
} }
} }
} }
@ -249,9 +248,7 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
binding.setNewContactClickListener { binding.setNewContactClickListener {
// Remove any previously selected contact // Remove any previously selected contact
sharedViewModel.selectedContact.value = null sharedViewModel.selectedContact.value = null
navigateToContactEditor(sipUriToAdd, binding.slidingPane)
binding.slidingPane.openPane()
navigateToContactEditor(sipUriToAdd)
} }
val id = arguments?.getString("id") val id = arguments?.getString("id")

View file

@ -233,8 +233,7 @@ class MasterCallLogsFragment : MasterFragment<HistoryMasterFragmentBinding, Call
{ {
it.consume { callLog -> it.consume { callLog ->
sharedViewModel.selectedCallLogGroup.value = callLog sharedViewModel.selectedCallLogGroup.value = callLog
binding.slidingPane.openPane() navigateToCallHistory(binding.slidingPane)
navigateToCallHistory()
} }
} }
) )

View file

@ -103,71 +103,61 @@ class SettingsFragment : SecureFragment<SettingsFragmentBinding>() {
if (identity != null) { if (identity != null) {
Log.i("[Settings] Found identity parameter in arguments: $identity") Log.i("[Settings] Found identity parameter in arguments: $identity")
arguments?.clear() arguments?.clear()
binding.slidingPane.openPane() navigateToAccountSettings(identity, binding.slidingPane)
navigateToAccountSettings(identity)
} }
viewModel.accountsSettingsListener = object : SettingListenerStub() { viewModel.accountsSettingsListener = object : SettingListenerStub() {
override fun onAccountClicked(identity: String) { override fun onAccountClicked(identity: String) {
Log.i("[Settings] Navigation to settings for account with identity: $identity") Log.i("[Settings] Navigation to settings for account with identity: $identity")
binding.slidingPane.openPane() navigateToAccountSettings(identity, binding.slidingPane)
navigateToAccountSettings(identity)
} }
} }
viewModel.tunnelSettingsListener = object : SettingListenerStub() { viewModel.tunnelSettingsListener = object : SettingListenerStub() {
override fun onClicked() { override fun onClicked() {
binding.slidingPane.openPane() navigateToTunnelSettings(binding.slidingPane)
navigateToTunnelSettings()
} }
} }
viewModel.audioSettingsListener = object : SettingListenerStub() { viewModel.audioSettingsListener = object : SettingListenerStub() {
override fun onClicked() { override fun onClicked() {
binding.slidingPane.openPane() navigateToAudioSettings(binding.slidingPane)
navigateToAudioSettings()
} }
} }
viewModel.videoSettingsListener = object : SettingListenerStub() { viewModel.videoSettingsListener = object : SettingListenerStub() {
override fun onClicked() { override fun onClicked() {
binding.slidingPane.openPane() navigateToVideoSettings(binding.slidingPane)
navigateToVideoSettings()
} }
} }
viewModel.callSettingsListener = object : SettingListenerStub() { viewModel.callSettingsListener = object : SettingListenerStub() {
override fun onClicked() { override fun onClicked() {
binding.slidingPane.openPane() navigateToCallSettings(binding.slidingPane)
navigateToCallSettings()
} }
} }
viewModel.chatSettingsListener = object : SettingListenerStub() { viewModel.chatSettingsListener = object : SettingListenerStub() {
override fun onClicked() { override fun onClicked() {
binding.slidingPane.openPane() navigateToChatSettings(binding.slidingPane)
navigateToChatSettings()
} }
} }
viewModel.networkSettingsListener = object : SettingListenerStub() { viewModel.networkSettingsListener = object : SettingListenerStub() {
override fun onClicked() { override fun onClicked() {
binding.slidingPane.openPane() navigateToNetworkSettings(binding.slidingPane)
navigateToNetworkSettings()
} }
} }
viewModel.contactsSettingsListener = object : SettingListenerStub() { viewModel.contactsSettingsListener = object : SettingListenerStub() {
override fun onClicked() { override fun onClicked() {
binding.slidingPane.openPane() navigateToContactsSettings(binding.slidingPane)
navigateToContactsSettings()
} }
} }
viewModel.advancedSettingsListener = object : SettingListenerStub() { viewModel.advancedSettingsListener = object : SettingListenerStub() {
override fun onClicked() { override fun onClicked() {
binding.slidingPane.openPane() navigateToAdvancedSettings(binding.slidingPane)
navigateToAdvancedSettings()
} }
} }
} }

View file

@ -6,7 +6,7 @@
# http://www.gradle.org/docs/current/userguide/build_environment.html # http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process. # Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings. # The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m org.gradle.jvmargs=-Xmx4096m
# When configured, Gradle will run in incubating parallel mode. # When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit # This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects