From 6941633a868a1b696a7a0f006d4e59177ffb4cf1 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 19 Jan 2021 13:03:30 +0100 Subject: [PATCH] Fixed various issues with navigation, animations & back stack --- .../linphone/activities/GenericActivity.kt | 6 + .../assistant/fragments/TopBarFragment.kt | 29 +++- .../linphone/activities/main/Navigation.kt | 163 ++++++++++++------ .../fragments/ChatRoomCreationFragment.kt | 9 - .../chat/fragments/DetailChatRoomFragment.kt | 64 ++++--- .../main/chat/fragments/GroupInfoFragment.kt | 9 - .../main/chat/fragments/ImdnFragment.kt | 9 - .../chat/fragments/MasterChatRoomsFragment.kt | 9 - .../fragments/MasterContactsFragment.kt | 9 - .../main/fragments/MasterFragment.kt | 18 ++ .../fragments/MasterCallLogsFragment.kt | 9 - .../fragments/RecordingsFragment.kt | 9 - .../res/navigation-sw533dp/chat_nav_graph.xml | 42 +---- .../navigation-sw533dp/contacts_nav_graph.xml | 10 +- .../navigation-sw533dp/history_nav_graph.xml | 5 +- .../main/res/navigation/chat_nav_graph.xml | 20 +-- .../res/navigation/contacts_nav_graph.xml | 3 +- .../main/res/navigation/history_nav_graph.xml | 6 +- .../main/res/navigation/main_nav_graph.xml | 144 ++++------------ .../res/navigation/settings_nav_graph.xml | 32 ++-- 20 files changed, 258 insertions(+), 347 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/GenericActivity.kt b/app/src/main/java/org/linphone/activities/GenericActivity.kt index 14fd36453..a29c6f7e3 100644 --- a/app/src/main/java/org/linphone/activities/GenericActivity.kt +++ b/app/src/main/java/org/linphone/activities/GenericActivity.kt @@ -26,6 +26,7 @@ import android.os.Bundle import android.view.Surface import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatDelegate +import androidx.navigation.ActivityNavigator import java.util.* import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.LinphoneApplication.Companion.corePreferences @@ -85,6 +86,11 @@ abstract class GenericActivity : AppCompatActivity() { coreContext.notificationsManager.stopForegroundNotificationIfPossible() } + override fun finish() { + super.finish() + ActivityNavigator.applyPopAnimationsToPendingTransition(this) + } + fun isTablet(): Boolean { return resources.getBoolean(R.bool.isTablet) } diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/TopBarFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/TopBarFragment.kt index 99423e0a9..46ed37e2f 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/TopBarFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/TopBarFragment.kt @@ -20,6 +20,7 @@ package org.linphone.activities.assistant.fragments import android.os.Bundle +import androidx.activity.addCallback import androidx.navigation.fragment.findNavController import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R @@ -29,20 +30,32 @@ import org.linphone.databinding.AssistantTopBarFragmentBinding class TopBarFragment : GenericFragment() { override fun getLayoutId(): Int = R.layout.assistant_top_bar_fragment + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + requireActivity().onBackPressedDispatcher.addCallback(this) { + goBack() + } + } + override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) binding.lifecycleOwner = this binding.setBackClickListener { - if (!findNavController().popBackStack()) { - requireActivity().finish() - if (corePreferences.enableAnimations) { - requireActivity().overridePendingTransition( - R.anim.enter_left, - R.anim.exit_right - ) - } + goBack() + } + } + + private fun goBack() { + if (!findNavController().popBackStack()) { + requireActivity().finish() + if (corePreferences.enableAnimations) { + requireActivity().overridePendingTransition( + R.anim.enter_left, + R.anim.exit_right + ) } } } diff --git a/app/src/main/java/org/linphone/activities/main/Navigation.kt b/app/src/main/java/org/linphone/activities/main/Navigation.kt index cb1df0cec..17757ed0e 100644 --- a/app/src/main/java/org/linphone/activities/main/Navigation.kt +++ b/app/src/main/java/org/linphone/activities/main/Navigation.kt @@ -56,9 +56,15 @@ internal fun Fragment.findMasterNavController(): NavController { } } -fun getRightToLeftAnimationNavOptions(): NavOptions { - if (!corePreferences.enableAnimations) return NavOptions.Builder().build() - return NavOptions.Builder() +fun getRightToLeftAnimationNavOptions( + popUpTo: Int = -1, + popUpInclusive: Boolean = false, + singleTop: Boolean = true +): NavOptions { + val builder = NavOptions.Builder() + builder.setPopUpTo(popUpTo, popUpInclusive).setLaunchSingleTop(singleTop) + if (!corePreferences.enableAnimations) return builder.build() + return builder .setEnterAnim(R.anim.enter_right) .setExitAnim(R.anim.exit_left) .setPopEnterAnim(R.anim.enter_left) @@ -66,9 +72,15 @@ fun getRightToLeftAnimationNavOptions(): NavOptions { .build() } -fun getLeftToRightAnimationNavOptions(): NavOptions { - if (!corePreferences.enableAnimations) return NavOptions.Builder().build() - return NavOptions.Builder() +fun getLeftToRightAnimationNavOptions( + popUpTo: Int = -1, + popUpInclusive: Boolean = false, + singleTop: Boolean = true +): NavOptions { + val builder = NavOptions.Builder() + builder.setPopUpTo(popUpTo, popUpInclusive).setLaunchSingleTop(singleTop) + if (!corePreferences.enableAnimations) return builder.build() + return builder .setEnterAnim(R.anim.enter_left) .setExitAnim(R.anim.exit_right) .setPopEnterAnim(R.anim.enter_right) @@ -76,9 +88,15 @@ fun getLeftToRightAnimationNavOptions(): NavOptions { .build() } -fun getRightBottomToLeftTopAnimationNavOptions(): NavOptions { - if (!corePreferences.enableAnimations) return NavOptions.Builder().build() - return NavOptions.Builder() +fun getRightBottomToLeftTopAnimationNavOptions( + popUpTo: Int = -1, + popUpInclusive: Boolean = false, + singleTop: Boolean = true +): NavOptions { + val builder = NavOptions.Builder() + builder.setPopUpTo(popUpTo, popUpInclusive).setLaunchSingleTop(singleTop) + if (!corePreferences.enableAnimations) return builder.build() + return builder .setEnterAnim(R.anim.enter_right_or_bottom) .setExitAnim(R.anim.exit_left_or_top) .setPopEnterAnim(R.anim.enter_left_or_top) @@ -86,9 +104,15 @@ fun getRightBottomToLeftTopAnimationNavOptions(): NavOptions { .build() } -fun getLeftTopToRightBottomAnimationNavOptions(): NavOptions { - if (!corePreferences.enableAnimations) return NavOptions.Builder().build() - return NavOptions.Builder() +fun getLeftTopToRightBottomAnimationNavOptions( + popUpTo: Int = -1, + popUpInclusive: Boolean = false, + singleTop: Boolean = true +): NavOptions { + val builder = NavOptions.Builder() + builder.setPopUpTo(popUpTo, popUpInclusive).setLaunchSingleTop(singleTop) + if (!corePreferences.enableAnimations) return builder.build() + return builder .setEnterAnim(R.anim.enter_left_or_top) .setExitAnim(R.anim.exit_right_or_bottom) .setPopEnterAnim(R.anim.enter_right_or_bottom) @@ -96,17 +120,29 @@ fun getLeftTopToRightBottomAnimationNavOptions(): NavOptions { .build() } -fun getRightBottomToLeftTopNoPopAnimationNavOptions(): NavOptions { - if (!corePreferences.enableAnimations) return NavOptions.Builder().build() - return NavOptions.Builder() +fun getRightBottomToLeftTopNoPopAnimationNavOptions( + popUpTo: Int = -1, + popUpInclusive: Boolean = false, + singleTop: Boolean = true +): NavOptions { + val builder = NavOptions.Builder() + builder.setPopUpTo(popUpTo, popUpInclusive).setLaunchSingleTop(singleTop) + if (!corePreferences.enableAnimations) return builder.build() + return builder .setEnterAnim(R.anim.enter_right_or_bottom) .setExitAnim(R.anim.exit_left_or_top) .build() } -fun getLeftTopToRightBottomNoPopAnimationNavOptions(): NavOptions { - if (!corePreferences.enableAnimations) return NavOptions.Builder().build() - return NavOptions.Builder() +fun getLeftTopToRightBottomNoPopAnimationNavOptions( + popUpTo: Int = -1, + popUpInclusive: Boolean = false, + singleTop: Boolean = true +): NavOptions { + val builder = NavOptions.Builder() + builder.setPopUpTo(popUpTo, popUpInclusive).setLaunchSingleTop(singleTop) + if (!corePreferences.enableAnimations) return builder.build() + return builder .setEnterAnim(R.anim.enter_left_or_top) .setExitAnim(R.anim.exit_right_or_bottom) .build() @@ -118,7 +154,7 @@ internal fun MainActivity.navigateToDialer(args: Bundle?) { findNavController(R.id.nav_host_fragment).navigate( R.id.action_global_dialerFragment, args, - getRightToLeftAnimationNavOptions() + getRightToLeftAnimationNavOptions(R.id.dialerFragment, true) ) } @@ -129,17 +165,17 @@ internal fun TabsFragment.navigateToCallHistory() { R.id.masterContactsFragment -> findNavController().navigate( R.id.action_masterContactsFragment_to_masterCallLogsFragment, null, - getLeftTopToRightBottomNoPopAnimationNavOptions() + getLeftTopToRightBottomNoPopAnimationNavOptions(R.id.masterCallLogsFragment) ) R.id.dialerFragment -> findNavController().navigate( R.id.action_dialerFragment_to_masterCallLogsFragment, null, - getLeftTopToRightBottomNoPopAnimationNavOptions() + getLeftTopToRightBottomNoPopAnimationNavOptions(R.id.masterCallLogsFragment) ) R.id.masterChatRoomsFragment -> findNavController().navigate( R.id.action_masterChatRoomsFragment_to_masterCallLogsFragment, null, - getLeftTopToRightBottomNoPopAnimationNavOptions() + getLeftTopToRightBottomNoPopAnimationNavOptions(R.id.masterCallLogsFragment) ) } } @@ -149,17 +185,17 @@ internal fun TabsFragment.navigateToContacts() { R.id.masterCallLogsFragment -> findNavController().navigate( R.id.action_masterCallLogsFragment_to_masterContactsFragment, null, - getRightBottomToLeftTopNoPopAnimationNavOptions() + getRightBottomToLeftTopNoPopAnimationNavOptions(R.id.masterContactsFragment) ) R.id.dialerFragment -> findNavController().navigate( R.id.action_dialerFragment_to_masterContactsFragment, null, - getLeftTopToRightBottomNoPopAnimationNavOptions() + getLeftTopToRightBottomNoPopAnimationNavOptions(R.id.masterContactsFragment) ) R.id.masterChatRoomsFragment -> findNavController().navigate( R.id.action_masterChatRoomsFragment_to_masterContactsFragment, null, - getLeftTopToRightBottomNoPopAnimationNavOptions() + getLeftTopToRightBottomNoPopAnimationNavOptions(R.id.masterContactsFragment) ) } } @@ -169,17 +205,17 @@ internal fun TabsFragment.navigateToDialer() { R.id.masterCallLogsFragment -> findNavController().navigate( R.id.action_masterCallLogsFragment_to_dialerFragment, null, - getRightBottomToLeftTopNoPopAnimationNavOptions() + getRightBottomToLeftTopNoPopAnimationNavOptions(R.id.dialerFragment) ) R.id.masterContactsFragment -> findNavController().navigate( R.id.action_masterContactsFragment_to_dialerFragment, null, - getRightBottomToLeftTopNoPopAnimationNavOptions() + getRightBottomToLeftTopNoPopAnimationNavOptions(R.id.dialerFragment) ) R.id.masterChatRoomsFragment -> findNavController().navigate( R.id.action_masterChatRoomsFragment_to_dialerFragment, null, - getLeftTopToRightBottomNoPopAnimationNavOptions() + getLeftTopToRightBottomNoPopAnimationNavOptions(R.id.dialerFragment) ) } } @@ -189,17 +225,17 @@ internal fun TabsFragment.navigateToChatRooms() { R.id.masterCallLogsFragment -> findNavController().navigate( R.id.action_masterCallLogsFragment_to_masterChatRoomsFragment, null, - getRightBottomToLeftTopNoPopAnimationNavOptions() + getRightBottomToLeftTopNoPopAnimationNavOptions(R.id.masterChatRoomsFragment) ) R.id.masterContactsFragment -> findNavController().navigate( R.id.action_masterContactsFragment_to_masterChatRoomsFragment, null, - getRightBottomToLeftTopNoPopAnimationNavOptions() + getRightBottomToLeftTopNoPopAnimationNavOptions(R.id.masterChatRoomsFragment) ) R.id.dialerFragment -> findNavController().navigate( R.id.action_dialerFragment_to_masterChatRoomsFragment, null, - getRightBottomToLeftTopNoPopAnimationNavOptions() + getRightBottomToLeftTopNoPopAnimationNavOptions(R.id.masterChatRoomsFragment) ) } } @@ -208,7 +244,10 @@ internal fun TabsFragment.navigateToChatRooms() { internal fun DialerFragment.navigateToContacts(uriToAdd: String?) { val deepLink = "linphone-android://contact/new/$uriToAdd" - findNavController().navigate(Uri.parse(deepLink), getLeftTopToRightBottomNoPopAnimationNavOptions()) + findNavController().navigate( + Uri.parse(deepLink), + getLeftTopToRightBottomNoPopAnimationNavOptions(R.id.masterContactsFragment, true) + ) } /* Chat related */ @@ -228,7 +267,7 @@ internal fun MasterChatRoomsFragment.navigateToChatRoom() { navHostFragment.navController.navigate( R.id.action_global_detailChatRoomFragment, null, - getRightToLeftAnimationNavOptions() + getRightToLeftAnimationNavOptions(R.id.emptyChatFragment, true) ) } } @@ -251,7 +290,7 @@ internal fun MasterChatRoomsFragment.navigateToChatRoomCreation( navHostFragment.navController.navigate( R.id.action_global_chatRoomCreationFragment, bundle, - getRightToLeftAnimationNavOptions() + getRightToLeftAnimationNavOptions(R.id.emptyChatFragment, true) ) } } @@ -262,8 +301,11 @@ internal fun DetailChatRoomFragment.navigateToContacts(sipUriToAdd: String) { } internal fun DetailChatRoomFragment.navigateToChatRooms() { - val deepLink = "linphone-android://chat/" - findMasterNavController().navigate(Uri.parse(deepLink), getLeftToRightAnimationNavOptions()) + findMasterNavController().navigate( + R.id.action_global_masterChatRoomsFragment, + null, + getLeftToRightAnimationNavOptions(R.id.masterChatRoomsFragment) + ) } internal fun DetailChatRoomFragment.navigateToImdn(args: Bundle?) { @@ -318,11 +360,19 @@ internal fun ChatRoomCreationFragment.navigateToGroupInfo(args: Bundle?) { internal fun ChatRoomCreationFragment.navigateToChatRoom() { if (findNavController().currentDestination?.id == R.id.chatRoomCreationFragment) { - findNavController().navigate( - R.id.action_chatRoomCreationFragment_to_detailChatRoomFragment, - null, - getRightToLeftAnimationNavOptions() - ) + if (!resources.getBoolean(R.bool.isTablet)) { + findNavController().navigate( + R.id.action_chatRoomCreationFragment_to_detailChatRoomFragment, + null, + getRightToLeftAnimationNavOptions() + ) + } else { + findNavController().navigate( + R.id.action_chatRoomCreationFragment_to_detailChatRoomFragment, + null, + getRightToLeftAnimationNavOptions(R.id.emptyFragment, true) + ) + } } } @@ -330,17 +380,26 @@ internal fun GroupInfoFragment.navigateToChatRoomCreation(args: Bundle?) { if (findNavController().currentDestination?.id == R.id.groupInfoFragment) { findNavController().navigate(R.id.action_groupInfoFragment_to_chatRoomCreationFragment, args, - getLeftToRightAnimationNavOptions() + getLeftToRightAnimationNavOptions(R.id.chatRoomCreationFragment, true) ) } } internal fun GroupInfoFragment.navigateToChatRoom() { if (findNavController().currentDestination?.id == R.id.groupInfoFragment) { - findNavController().navigate(R.id.action_groupInfoFragment_to_detailChatRoomFragment, - null, - getRightToLeftAnimationNavOptions() - ) + if (!resources.getBoolean(R.bool.isTablet)) { + findNavController().navigate( + R.id.action_groupInfoFragment_to_detailChatRoomFragment, + null, + getRightToLeftAnimationNavOptions() + ) + } else { + findNavController().navigate( + R.id.action_groupInfoFragment_to_detailChatRoomFragment, + null, + getRightToLeftAnimationNavOptions(R.id.emptyFragment, true) + ) + } } } @@ -359,7 +418,7 @@ internal fun MasterContactsFragment.navigateToContact() { navHostFragment.navController.navigate( R.id.action_global_detailContactFragment, null, - getRightToLeftAnimationNavOptions() + getRightToLeftAnimationNavOptions(R.id.emptyContactFragment, true) ) } } @@ -441,7 +500,7 @@ internal fun MasterCallLogsFragment.navigateToCallHistory() { navHostFragment.navController.navigate( R.id.action_global_detailCallLogFragment, null, - getRightToLeftAnimationNavOptions() + getRightToLeftAnimationNavOptions(R.id.emptyFragment, true) ) } } @@ -723,7 +782,7 @@ internal fun SideMenuFragment.navigateToSettings() { findNavController().navigate( R.id.action_global_settingsFragment, null, - getRightToLeftAnimationNavOptions() + getRightToLeftAnimationNavOptions(R.id.settingsFragment) ) } @@ -731,7 +790,7 @@ internal fun SideMenuFragment.navigateToAbout() { findNavController().navigate( R.id.action_global_aboutFragment, null, - getRightToLeftAnimationNavOptions() + getRightToLeftAnimationNavOptions(R.id.aboutFragment) ) } @@ -739,7 +798,7 @@ internal fun SideMenuFragment.navigateToRecordings() { findNavController().navigate( R.id.action_global_recordingsFragment, null, - getRightToLeftAnimationNavOptions() + getRightToLeftAnimationNavOptions(R.id.recordingsFragment) ) } @@ -880,7 +939,7 @@ internal fun PhoneAccountValidationFragment.navigateToAccountSettings(args: Bund findNavController().navigate( R.id.action_phoneAccountValidationFragment_to_accountSettingsFragment, args, - getLeftToRightAnimationNavOptions() + getLeftToRightAnimationNavOptions(R.id.accountSettingsFragment, true) ) } } diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/ChatRoomCreationFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/ChatRoomCreationFragment.kt index dc6296439..3171a6d79 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/ChatRoomCreationFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/ChatRoomCreationFragment.kt @@ -70,15 +70,6 @@ class ChatRoomCreationFragment : SecureFragment adapter.updateSecurity(viewModel.isEncrypted.value == true) binding.contactsList.adapter = adapter - // To ensure animation will be smooth - binding.contactsList.apply { - postponeEnterTransition() - viewTreeObserver.addOnPreDrawListener { - startPostponedEnterTransition() - true - } - } - val layoutManager = LinearLayoutManager(activity) binding.contactsList.layoutManager = layoutManager diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt index 9fa279aba..d226936c7 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt @@ -28,13 +28,15 @@ import android.net.Uri import android.os.Bundle import android.os.Parcelable import android.provider.MediaStore -import android.view.* +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View import android.webkit.MimeTypeMap +import androidx.activity.addCallback import androidx.appcompat.view.menu.MenuBuilder import androidx.appcompat.view.menu.MenuPopupHelper import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope -import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import kotlinx.coroutines.launch @@ -46,9 +48,6 @@ import org.linphone.activities.main.chat.ChatScrollListener import org.linphone.activities.main.chat.adapters.ChatMessagesListAdapter import org.linphone.activities.main.chat.viewmodels.* import org.linphone.activities.main.fragments.MasterFragment -import org.linphone.activities.main.navigateToChatRooms -import org.linphone.activities.main.navigateToContacts -import org.linphone.activities.main.navigateToImdn import org.linphone.activities.main.viewmodels.DialogViewModel import org.linphone.activities.main.viewmodels.SharedMainViewModel import org.linphone.core.* @@ -84,6 +83,14 @@ class DetailChatRoomFragment : MasterFragment if (doNotAskAgain) corePreferences.limeSecurityPopupEnabled = false @@ -456,7 +469,7 @@ class DetailChatRoomFragment : MasterFragment 0) { + if (_adapter != null && adapter.itemCount > 0) { binding.chatMessagesList.scrollToPosition(adapter.itemCount - 1) } } @@ -489,7 +502,10 @@ class DetailChatRoomFragment : MasterFragment())) + chooserIntent.putExtra( + Intent.EXTRA_INITIAL_INTENTS, + cameraIntents.toArray(arrayOf()) + ) startActivityForResult(chooserIntent, 0) } @@ -524,7 +540,11 @@ class DetailChatRoomFragment : MasterFragment() { ) binding.participants.adapter = adapter - // To ensure animation will be smooth - binding.participants.apply { - postponeEnterTransition() - viewTreeObserver.addOnPreDrawListener { - startPostponedEnterTransition() - true - } - } - val layoutManager = LinearLayoutManager(activity) binding.participants.layoutManager = layoutManager diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/ImdnFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/ImdnFragment.kt index 6624d21b4..2122c05cf 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/ImdnFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/ImdnFragment.kt @@ -81,15 +81,6 @@ class ImdnFragment : SecureFragment() { adapter = ImdnAdapter(viewLifecycleOwner) binding.participantsList.adapter = adapter - // To ensure animation will be smooth - binding.participantsList.apply { - postponeEnterTransition() - viewTreeObserver.addOnPreDrawListener { - startPostponedEnterTransition() - true - } - } - val layoutManager = LinearLayoutManager(activity) binding.participantsList.layoutManager = layoutManager diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt index 8228225e6..3f89b24ff 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt @@ -89,15 +89,6 @@ class MasterChatRoomsFragment : MasterFragment("resume")?.value ?: false + if (!resume) { + findNavController().currentBackStackEntry?.savedStateHandle?.set("resume", true) + // To ensure animation will be smooth, + // wait until the adapter is loaded to display the fragment + postponeEnterTransition() + view.doOnPreDraw { startPostponedEnterTransition() } + } + + super.onViewCreated(view, savedInstanceState) + } + private fun delete() { val list = listSelectionViewModel.selectedItems.value ?: arrayListOf() deleteItems(list) diff --git a/app/src/main/java/org/linphone/activities/main/history/fragments/MasterCallLogsFragment.kt b/app/src/main/java/org/linphone/activities/main/history/fragments/MasterCallLogsFragment.kt index e721ad3cb..90b725a90 100644 --- a/app/src/main/java/org/linphone/activities/main/history/fragments/MasterCallLogsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/history/fragments/MasterCallLogsFragment.kt @@ -81,15 +81,6 @@ class MasterCallLogsFragment : MasterFragment + app:destination="@id/ephemeralFragment" /> + app:destination="@id/detailChatRoomFragment" /> + app:destination="@id/chatRoomCreationFragment" /> + app:destination="@id/detailChatRoomFragment" /> - - + app:destination="@id/detailChatRoomFragment" /> + app:destination="@id/chatRoomCreationFragment" /> + app:destination="@id/detailContactFragment" /> + app:destination="@id/contactEditorFragment" /> \ No newline at end of file diff --git a/app/src/main/res/navigation-sw533dp/history_nav_graph.xml b/app/src/main/res/navigation-sw533dp/history_nav_graph.xml index af10289e8..d10270905 100644 --- a/app/src/main/res/navigation-sw533dp/history_nav_graph.xml +++ b/app/src/main/res/navigation-sw533dp/history_nav_graph.xml @@ -19,9 +19,6 @@ + app:destination="@id/detailCallLogFragment" /> \ No newline at end of file diff --git a/app/src/main/res/navigation/chat_nav_graph.xml b/app/src/main/res/navigation/chat_nav_graph.xml index cc4e1d864..0383787db 100644 --- a/app/src/main/res/navigation/chat_nav_graph.xml +++ b/app/src/main/res/navigation/chat_nav_graph.xml @@ -21,10 +21,7 @@ app:destination="@id/groupInfoFragment" /> + app:destination="@id/ephemeralFragment" /> + app:destination="@id/detailChatRoomFragment" /> + app:destination="@id/chatRoomCreationFragment" /> + app:destination="@id/detailChatRoomFragment" /> + app:destination="@id/chat_nav_graph.xml" /> diff --git a/app/src/main/res/navigation/history_nav_graph.xml b/app/src/main/res/navigation/history_nav_graph.xml index d8dcadd32..a4100bb5b 100644 --- a/app/src/main/res/navigation/history_nav_graph.xml +++ b/app/src/main/res/navigation/history_nav_graph.xml @@ -13,13 +13,11 @@ + app:destination="@id/contacts_nav_graph.xml" /> + app:destination="@id/chat_nav_graph.xml" /> diff --git a/app/src/main/res/navigation/main_nav_graph.xml b/app/src/main/res/navigation/main_nav_graph.xml index 8d1753800..aa919f02d 100644 --- a/app/src/main/res/navigation/main_nav_graph.xml +++ b/app/src/main/res/navigation/main_nav_graph.xml @@ -12,23 +12,16 @@ tools:layout="@layout/chat_room_master_fragment" > + app:destination="@id/dialerFragment" /> + app:destination="@id/masterCallLogsFragment" /> + app:destination="@id/masterContactsFragment" /> + app:destination="@id/chat_nav_graph.xml" /> @@ -56,27 +49,19 @@ tools:layout="@layout/contact_master_fragment" > + app:destination="@id/masterCallLogsFragment" /> + app:destination="@id/dialerFragment" /> + app:destination="@id/masterChatRoomsFragment" /> + app:destination="@id/contacts_nav_graph.xml" /> + app:destination="@id/contactEditorFragment" /> + app:destination="@id/dialerFragment" /> + app:destination="@id/masterContactsFragment" /> + app:destination="@id/masterChatRoomsFragment" /> @@ -126,19 +105,13 @@ tools:layout="@layout/dialer_fragment" > + app:destination="@id/masterCallLogsFragment"/> + app:destination="@id/masterContactsFragment" /> + app:destination="@id/masterChatRoomsFragment" /> + app:destination="@id/groupInfoFragment" /> + app:destination="@id/chat_nav_graph.xml" /> + app:destination="@id/chat_nav_graph.xml" /> + app:destination="@id/chatRoomCreationFragment" /> + app:destination="@id/aboutFragment" /> + app:destination="@id/recordingsFragment" /> + app:destination="@id/chatSettingsFragment" /> + app:destination="@id/callSettingsFragment" /> + app:destination="@id/advancedSettingsFragment" /> + app:destination="@id/accountSettingsFragment" /> + app:destination="@id/audioSettingsFragment" /> + app:destination="@id/contactsSettingsFragment" /> + app:destination="@id/videoSettingsFragment" /> + app:destination="@id/networkSettingsFragment" /> + app:destination="@id/tunnelSettingsFragment" /> + app:destination="@id/settingsFragment" /> + app:destination="@id/masterChatRoomsFragment" /> + app:destination="@id/dialerFragment" /> + app:destination="@id/accountSettingsFragment" /> diff --git a/app/src/main/res/navigation/settings_nav_graph.xml b/app/src/main/res/navigation/settings_nav_graph.xml index a6cc6ccaf..4671d3bfb 100644 --- a/app/src/main/res/navigation/settings_nav_graph.xml +++ b/app/src/main/res/navigation/settings_nav_graph.xml @@ -63,40 +63,31 @@ android:label="TunnelSettingsFragment" /> + app:destination="@id/tunnelSettingsFragment" /> + app:destination="@id/videoSettingsFragment" /> + app:destination="@id/callSettingsFragment" /> + app:destination="@id/networkSettingsFragment" /> + app:destination="@id/chatSettingsFragment" /> + app:destination="@id/contactsSettingsFragment" /> + app:destination="@id/accountSettingsFragment" /> + app:destination="@id/advancedSettingsFragment" /> + app:destination="@id/audioSettingsFragment" /> + app:destination="@id/accountSettingsFragment" />