diff --git a/app/src/main/java/org/linphone/ui/assistant/fragment/LandingFragment.kt b/app/src/main/java/org/linphone/ui/assistant/fragment/LandingFragment.kt index b65263d30..9ec95a50e 100644 --- a/app/src/main/java/org/linphone/ui/assistant/fragment/LandingFragment.kt +++ b/app/src/main/java/org/linphone/ui/assistant/fragment/LandingFragment.kt @@ -78,6 +78,14 @@ class LandingFragment : GenericFragment() { requireActivity().finish() } + binding.setHelpClickListener { + if (findNavController().currentDestination?.id == R.id.landingFragment) { + val action = + LandingFragmentDirections.actionLandingFragmentToHelpFragment() + findNavController().navigate(action) + } + } + binding.setRegisterClickListener { if (viewModel.conditionsAndPrivacyPolicyAccepted) { goToRegisterFragment() diff --git a/app/src/main/java/org/linphone/ui/main/MainActivity.kt b/app/src/main/java/org/linphone/ui/main/MainActivity.kt index 5dc9c16e4..e31c67315 100644 --- a/app/src/main/java/org/linphone/ui/main/MainActivity.kt +++ b/app/src/main/java/org/linphone/ui/main/MainActivity.kt @@ -66,7 +66,6 @@ import org.linphone.databinding.MainActivityBinding import org.linphone.ui.GenericActivity import org.linphone.ui.assistant.AssistantActivity import org.linphone.ui.main.chat.fragment.ConversationsListFragmentDirections -import org.linphone.ui.main.help.fragment.DebugFragmentDirections import org.linphone.utils.PasswordDialogModel import org.linphone.ui.main.sso.fragment.SingleSignOnFragmentDirections import org.linphone.ui.main.viewmodel.MainViewModel @@ -722,8 +721,13 @@ class MainActivity : GenericActivity() { sharedViewModel.showConversationEvent.value = Event(conversationId) } - val action = DebugFragmentDirections.actionDebugFragmentToConversationsListFragment() - findNavController().navigate(action) + val action = ConversationsListFragmentDirections.actionGlobalConversationsListFragment() + val options = NavOptions.Builder() + options.apply { + setPopUpTo(R.id.helpFragment, true) + setLaunchSingleTop(true) + } + findNavController().navigate(action, options.build()) } else { val conversationId = parseShortcutIfAny(intent) if (conversationId != null) { diff --git a/app/src/main/java/org/linphone/ui/main/help/fragment/DebugFragment.kt b/app/src/main/java/org/linphone/ui/main/help/fragment/DebugFragment.kt index d2c85be68..6a312c1a6 100644 --- a/app/src/main/java/org/linphone/ui/main/help/fragment/DebugFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/help/fragment/DebugFragment.kt @@ -28,22 +28,22 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController -import androidx.navigation.navGraphViewModels import org.linphone.R import org.linphone.core.tools.Log import org.linphone.databinding.HelpDebugFragmentBinding import org.linphone.ui.GenericActivity +import org.linphone.ui.assistant.AssistantActivity import org.linphone.ui.fileviewer.FileViewerActivity +import org.linphone.ui.main.MainActivity import org.linphone.ui.main.fragment.GenericMainFragment import org.linphone.ui.main.help.viewmodel.HelpViewModel class DebugFragment : GenericMainFragment() { private lateinit var binding: HelpDebugFragmentBinding - val viewModel: HelpViewModel by navGraphViewModels( - R.id.main_nav_graph - ) + private lateinit var viewModel: HelpViewModel override fun onCreateView( inflater: LayoutInflater, @@ -57,9 +57,13 @@ class DebugFragment : GenericMainFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.lifecycleOwner = viewLifecycleOwner + + viewModel = ViewModelProvider(this)[HelpViewModel::class.java] binding.viewModel = viewModel observeToastEvents(viewModel) + viewModel.canConfigFileBeViewed.postValue(requireActivity() is MainActivity) + binding.setBackClickListener { goBack() } @@ -91,6 +95,13 @@ class DebugFragment : GenericMainFragment() { viewModel.uploadDebugLogsFinishedEvent.observe(viewLifecycleOwner) { it.consume { url -> + if (requireActivity() is AssistantActivity) { + val clipboard = requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + val label = "Logs upload URL" + clipboard.setPrimaryClip(ClipData.newPlainText(label, url)) + return@consume + } + val appName = requireContext().getString(R.string.app_name) val intent = Intent(Intent.ACTION_SEND) intent.putExtra( diff --git a/app/src/main/java/org/linphone/ui/main/help/fragment/HelpFragment.kt b/app/src/main/java/org/linphone/ui/main/help/fragment/HelpFragment.kt index 4281c1160..a2149e9f1 100644 --- a/app/src/main/java/org/linphone/ui/main/help/fragment/HelpFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/help/fragment/HelpFragment.kt @@ -27,7 +27,6 @@ import android.view.View import android.view.ViewGroup import androidx.annotation.UiThread import androidx.navigation.fragment.findNavController -import androidx.navigation.navGraphViewModels import org.linphone.R import org.linphone.core.tools.Log import org.linphone.databinding.HelpFragmentBinding @@ -37,6 +36,7 @@ import org.linphone.ui.main.help.viewmodel.HelpViewModel import org.linphone.utils.ConfirmationDialogModel import org.linphone.utils.DialogUtils import androidx.core.net.toUri +import androidx.lifecycle.ViewModelProvider @UiThread class HelpFragment : GenericMainFragment() { @@ -46,9 +46,7 @@ class HelpFragment : GenericMainFragment() { private lateinit var binding: HelpFragmentBinding - val viewModel: HelpViewModel by navGraphViewModels( - R.id.main_nav_graph - ) + private lateinit var viewModel: HelpViewModel override fun onCreateView( inflater: LayoutInflater, @@ -62,6 +60,8 @@ class HelpFragment : GenericMainFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.lifecycleOwner = viewLifecycleOwner + + viewModel = ViewModelProvider(this)[HelpViewModel::class.java] binding.viewModel = viewModel observeToastEvents(viewModel) diff --git a/app/src/main/java/org/linphone/ui/main/help/viewmodel/HelpViewModel.kt b/app/src/main/java/org/linphone/ui/main/help/viewmodel/HelpViewModel.kt index 8e43e7548..2dd6f40cd 100644 --- a/app/src/main/java/org/linphone/ui/main/help/viewmodel/HelpViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/help/viewmodel/HelpViewModel.kt @@ -62,6 +62,8 @@ class HelpViewModel val versionClickCount = MutableLiveData() + val canConfigFileBeViewed = MutableLiveData() + val newVersionAvailableEvent: MutableLiveData>> by lazy { MutableLiveData>>() } diff --git a/app/src/main/res/layout-sw600dp/assistant_landing_fragment.xml b/app/src/main/res/layout-sw600dp/assistant_landing_fragment.xml index c9062028d..cbb0b1ebd 100644 --- a/app/src/main/res/layout-sw600dp/assistant_landing_fragment.xml +++ b/app/src/main/res/layout-sw600dp/assistant_landing_fragment.xml @@ -8,6 +8,9 @@ + @@ -79,6 +82,23 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toEndOf="@id/back"/> + + + app:layout_constraintTop_toBottomOf="@id/help"/> + @@ -60,6 +63,23 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> + + diff --git a/app/src/main/res/navigation/assistant_nav_graph.xml b/app/src/main/res/navigation/assistant_nav_graph.xml index 3f3dec9f7..e1644c06f 100644 --- a/app/src/main/res/navigation/assistant_nav_graph.xml +++ b/app/src/main/res/navigation/assistant_nav_graph.xml @@ -152,7 +152,14 @@ app:popEnterAnim="@anim/slide_in_left" app:popExitAnim="@anim/slide_out_right" app:launchSingleTop="true"/> - + + + + + + + - - + tools:layout="@layout/help_debug_fragment"/>