From e6165821628c2a79914defb3b0d55e9d044bcad1 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 18 Apr 2024 10:50:39 +0200 Subject: [PATCH] Started advanced settings, currently only contains remote provisioning URI --- .../fragment/SettingsAdvancedFragment.kt | 53 ++++++++++ .../settings/fragment/SettingsFragment.kt | 7 ++ .../settings/viewmodel/SettingsViewModel.kt | 20 ++++ .../res/layout/settings_advanced_fragment.xml | 100 ++++++++++++++++++ app/src/main/res/layout/settings_fragment.xml | 4 + .../main/res/navigation/main_nav_graph.xml | 14 +++ app/src/main/res/values/strings.xml | 2 + 7 files changed, 200 insertions(+) create mode 100644 app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsAdvancedFragment.kt create mode 100644 app/src/main/res/layout/settings_advanced_fragment.xml diff --git a/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsAdvancedFragment.kt b/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsAdvancedFragment.kt new file mode 100644 index 000000000..61c39e45a --- /dev/null +++ b/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsAdvancedFragment.kt @@ -0,0 +1,53 @@ +package org.linphone.ui.main.settings.fragment + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.annotation.UiThread +import androidx.lifecycle.ViewModelProvider +import org.linphone.databinding.SettingsAdvancedFragmentBinding +import org.linphone.ui.main.fragment.GenericFragment +import org.linphone.ui.main.settings.viewmodel.SettingsViewModel + +@UiThread +class SettingsAdvancedFragment : GenericFragment() { + companion object { + private const val TAG = "[Advanced Settings Fragment]" + } + + private lateinit var binding: SettingsAdvancedFragmentBinding + + private lateinit var viewModel: SettingsViewModel + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + binding = SettingsAdvancedFragmentBinding.inflate(layoutInflater) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + postponeEnterTransition() + super.onViewCreated(view, savedInstanceState) + + viewModel = ViewModelProvider(this)[SettingsViewModel::class.java] + + binding.lifecycleOwner = viewLifecycleOwner + binding.viewModel = viewModel + + binding.setBackClickListener { + goBack() + } + + startPostponedEnterTransition() + } + + override fun onPause() { + viewModel.updateRemoteProvisioningUrl() + + super.onPause() + } +} diff --git a/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsFragment.kt b/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsFragment.kt index e66d06d94..f19b1a70a 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/fragment/SettingsFragment.kt @@ -78,6 +78,13 @@ class SettingsFragment : GenericFragment() { goBack() } + binding.setAdvancedSettingsClickListener { + if (findNavController().currentDestination?.id == R.id.settingsFragment) { + val action = SettingsFragmentDirections.actionSettingsFragmentToSettingsAdvancedFragment() + findNavController().navigate(action) + } + } + viewModel.addLdapServerEvent.observe(viewLifecycleOwner) { it.consume { val action = SettingsFragmentDirections.actionSettingsFragmentToLdapServerConfigurationFragment( diff --git a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt index 8fe64f82e..dae692d9a 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt @@ -115,6 +115,9 @@ class SettingsViewModel @UiThread constructor() : ViewModel() { ) val availableThemesValues = arrayListOf(-1, 0, 1) + // Advanced setttings + val remoteProvisioningUrl = MutableLiveData() + init { coreContext.postOnCoreThread { core -> showConversationsSettings.postValue(!corePreferences.disableChat) @@ -155,6 +158,8 @@ class SettingsViewModel @UiThread constructor() : ViewModel() { defaultLayout.postValue(core.defaultConferenceLayout.toInt()) theme.postValue(corePreferences.darkMode) + + remoteProvisioningUrl.postValue(core.provisioningUri) } } @@ -350,4 +355,19 @@ class SettingsViewModel @UiThread constructor() : ViewModel() { theme.postValue(themeValue) } } + + @UiThread + fun updateRemoteProvisioningUrl() { + coreContext.postOnCoreThread { core -> + val newProvisioningUri = remoteProvisioningUrl.value.orEmpty() + if (newProvisioningUri != core.provisioningUri) { + Log.i("$TAG Updating remote provisioning URI to [$newProvisioningUri]") + if (newProvisioningUri.isEmpty()) { + core.provisioningUri = null + } else { + core.provisioningUri = newProvisioningUri + } + } + } + } } diff --git a/app/src/main/res/layout/settings_advanced_fragment.xml b/app/src/main/res/layout/settings_advanced_fragment.xml new file mode 100644 index 000000000..707de6ce8 --- /dev/null +++ b/app/src/main/res/layout/settings_advanced_fragment.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_fragment.xml b/app/src/main/res/layout/settings_fragment.xml index 7c6cf1f74..5a111f541 100644 --- a/app/src/main/res/layout/settings_fragment.xml +++ b/app/src/main/res/layout/settings_fragment.xml @@ -8,6 +8,9 @@ + @@ -268,6 +271,7 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 468eecfd0..3ad8ee511 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -291,6 +291,8 @@ Auto Advanced settings + Remote provisioning URL + Manage account Details