Improve slidingPane opening
This commit is contained in:
parent
b329ae8167
commit
a66b638f22
6 changed files with 124 additions and 138 deletions
|
@ -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 {
|
||||||
|
R.id.chatRoomCreationFragment
|
||||||
|
}
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_detailChatRoomFragment,
|
R.id.action_global_detailChatRoomFragment,
|
||||||
args,
|
args,
|
||||||
popupTo(R.id.chatRoomCreationFragment, true)
|
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 {
|
||||||
|
R.id.detailChatRoomFragment
|
||||||
|
}
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_chatRoomCreationFragment,
|
R.id.action_global_chatRoomCreationFragment,
|
||||||
bundle,
|
bundle,
|
||||||
popupTo(R.id.detailChatRoomFragment, true)
|
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 */
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
@ -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()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue