From 9a856f075adaaaf683f5b8f07eddc381a4c5e5c7 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 16 Jul 2020 13:40:55 +0200 Subject: [PATCH] Fixed account settings back navigation --- .../java/org/linphone/activities/main/Navigation.kt | 13 +++++++++++++ .../main/settings/fragments/SettingsFragment.kt | 3 ++- .../main/sidemenu/fragments/SideMenuFragment.kt | 5 ++--- app/src/main/res/navigation/main_nav_graph.xml | 6 +++++- 4 files changed, 22 insertions(+), 5 deletions(-) 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 430f405af..4cc2c3587 100644 --- a/app/src/main/java/org/linphone/activities/main/Navigation.kt +++ b/app/src/main/java/org/linphone/activities/main/Navigation.kt @@ -34,6 +34,7 @@ import org.linphone.activities.main.contact.fragments.MasterContactsFragment import org.linphone.activities.main.history.fragments.DetailCallLogFragment import org.linphone.activities.main.history.fragments.MasterCallLogsFragment import org.linphone.activities.main.settings.fragments.SettingsFragment +import org.linphone.activities.main.sidemenu.fragments.SideMenuFragment import org.linphone.contact.NativeContact import org.linphone.core.Address @@ -150,6 +151,18 @@ internal fun DetailCallLogFragment.navigateToFriend(friendAddress: Address) { /* Settings related */ +internal fun SideMenuFragment.navigateToAccountSettings(identity: String) { + if (!resources.getBoolean(R.bool.isTablet)) { + // If not a tablet, navigate directly to account settings fragment + val deepLink = "linphone-android://account-settings/$identity" + findNavController().navigate(Uri.parse(deepLink)) + } else { + // On tablet, to keep the categories list on left side, navigate to settings fragment first + val deepLink = "linphone-android://settings/$identity" + findNavController().navigate(Uri.parse(deepLink)) + } +} + internal fun SettingsFragment.navigateToAccountSettings(identity: String) { val bundle = bundleOf("Identity" to identity) if (!resources.getBoolean(R.bool.isTablet)) { diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/SettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/SettingsFragment.kt index 173cfa178..8bb6441f6 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/SettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/SettingsFragment.kt @@ -70,9 +70,10 @@ class SettingsFragment : Fragment() { viewModel.updateAccountsList() }) - val identity = arguments?.getString("identity") + val identity = arguments?.getString("Identity") if (identity != null) { Log.i("[Settings] Found identity parameter in arguments: $identity") + arguments?.clear() navigateToAccountSettings(identity) } diff --git a/app/src/main/java/org/linphone/activities/main/sidemenu/fragments/SideMenuFragment.kt b/app/src/main/java/org/linphone/activities/main/sidemenu/fragments/SideMenuFragment.kt index bb0cdb5b9..6e2c729e6 100644 --- a/app/src/main/java/org/linphone/activities/main/sidemenu/fragments/SideMenuFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/sidemenu/fragments/SideMenuFragment.kt @@ -20,7 +20,6 @@ package org.linphone.activities.main.sidemenu.fragments import android.content.Intent -import android.net.Uri import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -32,6 +31,7 @@ import androidx.navigation.fragment.findNavController import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.R import org.linphone.activities.assistant.AssistantActivity +import org.linphone.activities.main.navigateToAccountSettings import org.linphone.activities.main.settings.SettingListenerStub import org.linphone.activities.main.sidemenu.viewmodels.SideMenuViewModel import org.linphone.activities.main.viewmodels.SharedMainViewModel @@ -77,8 +77,7 @@ class SideMenuFragment : Fragment() { Log.i("[Side Menu] Navigation to settings for proxy with identity: $identity") sharedViewModel.toggleDrawerEvent.value = Event(true) - val deepLink = "linphone-android://account-settings/$identity" - findNavController().navigate(Uri.parse(deepLink)) + navigateToAccountSettings(identity) } } diff --git a/app/src/main/res/navigation/main_nav_graph.xml b/app/src/main/res/navigation/main_nav_graph.xml index 8268827cb..ba6068643 100644 --- a/app/src/main/res/navigation/main_nav_graph.xml +++ b/app/src/main/res/navigation/main_nav_graph.xml @@ -275,7 +275,7 @@ app:popUpToInclusive="false" /> +