From fd4f48c65ebce91225da331e8ad704e9d0ced98e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Fri, 31 Dec 2021 08:17:20 -0500 Subject: [PATCH] tv: cleanup about fragment, handle null state Change-Id: Idc48663ab3e6cb5f5453eebcda5234caa053f067 --- .../cx/ring/tv/settings/TVAboutFragment.kt | 43 +++---------- .../cx/ring/tv/settings/TVSettingsFragment.kt | 61 +++++++------------ .../app/src/main/res/xml/tv_about_pref.xml | 3 +- 3 files changed, 32 insertions(+), 75 deletions(-) diff --git a/ring-android/app/src/main/java/cx/ring/tv/settings/TVAboutFragment.kt b/ring-android/app/src/main/java/cx/ring/tv/settings/TVAboutFragment.kt index da91a94e1..6f4a5f318 100644 --- a/ring-android/app/src/main/java/cx/ring/tv/settings/TVAboutFragment.kt +++ b/ring-android/app/src/main/java/cx/ring/tv/settings/TVAboutFragment.kt @@ -27,54 +27,25 @@ import androidx.leanback.preference.LeanbackPreferenceFragmentCompat import androidx.preference.Preference import cx.ring.BuildConfig import cx.ring.R -import net.jami.model.ConfigKey class TVAboutFragment : LeanbackPreferenceFragmentCompat() { - override fun onCreatePreferences(savedInstanceState: Bundle, rootKey: String) { + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.tv_about_pref, rootKey) - findPreference<Preference>("About.version")?.title = version - findPreference<Preference>("About.license")?.title = license - findPreference<Preference>("About.rights")?.title = rights + findPreference<Preference>("About.version")?.title = getString(R.string.app_release, BuildConfig.VERSION_NAME) + findPreference<Preference>("About.license")?.title = getString(R.string.license) + findPreference<Preference>("About.rights")?.title = getString(R.string.copyright) findPreference<Preference>("About.credits")?.title = credits } - override fun onPreferenceTreeClick(preference: Preference): Boolean { - if (preference.key == ConfigKey.ACCOUNT_AUTOANSWER.key()) { - } else if (preference.key == ConfigKey.ACCOUNT_ISRENDEZVOUS.key()) { - } - return super.onPreferenceTreeClick(preference) - } - - private val version: CharSequence - get() { - val version = SpannableString(requireContext().resources.getString(R.string.version_section)) - version.setSpan(UnderlineSpan(), 0, version.length, 0) - return requireContext().resources.getString(R.string.app_release, BuildConfig.VERSION_NAME) - } - private val license: CharSequence - get() { - val licence = SpannableString(requireContext().resources.getString(R.string.section_license)) - licence.setSpan(UnderlineSpan(), 0, licence.length, 0) - return requireContext().resources.getString(R.string.license) - } - private val rights: CharSequence - get() { - val licence = SpannableString(requireContext().resources.getString(R.string.copyright_section)) - licence.setSpan(UnderlineSpan(), 0, licence.length, 0) - return requireContext().resources.getString(R.string.copyright) - } private val credits: CharSequence get() { - val developedby = SpannableString(requireContext().resources.getString(R.string.developed_by)) + val developedby = SpannableString(getText(R.string.developed_by)) developedby.setSpan(UnderlineSpan(), 0, developedby.length, 0) - val developed: CharSequence = - requireContext().resources.getString(R.string.credits_developer).replace("\n".toRegex(), "<br/>") + val developed = getString(R.string.credits_developer).replace("\n", "<br/>") return Html.fromHtml("<b><u>$developedby</u></b><br/>$developed") } companion object { - fun newInstance(): TVAboutFragment { - return TVAboutFragment() - } + fun newInstance() = TVAboutFragment() } } \ No newline at end of file diff --git a/ring-android/app/src/main/java/cx/ring/tv/settings/TVSettingsFragment.kt b/ring-android/app/src/main/java/cx/ring/tv/settings/TVSettingsFragment.kt index f02352004..205c1660c 100644 --- a/ring-android/app/src/main/java/cx/ring/tv/settings/TVSettingsFragment.kt +++ b/ring-android/app/src/main/java/cx/ring/tv/settings/TVSettingsFragment.kt @@ -43,9 +43,10 @@ class TVSettingsFragment : LeanbackSettingsFragmentCompat() { override fun onPreferenceStartFragment(preferenceFragment: PreferenceFragmentCompat, preference: Preference): Boolean { val args = preference.extras - val f = childFragmentManager.fragmentFactory.instantiate(requireContext().classLoader, preference.fragment) - f.arguments = args - f.setTargetFragment(preferenceFragment, 0) + val f = childFragmentManager.fragmentFactory.instantiate(requireContext().classLoader, preference.fragment).apply { + arguments = args + setTargetFragment(preferenceFragment, 0) + } if (f is PreferenceFragmentCompat || f is PreferenceDialogFragmentCompat ) { @@ -57,18 +58,16 @@ class TVSettingsFragment : LeanbackSettingsFragmentCompat() { } override fun onPreferenceStartScreen(caller: PreferenceFragmentCompat, pref: PreferenceScreen): Boolean { - val prefsFragment: Fragment = PrefsFragment.newInstance() - val args = Bundle() - args.putString(PreferenceFragmentCompat.ARG_PREFERENCE_ROOT, pref.key) - prefsFragment.arguments = args - startPreferenceFragment(prefsFragment) + startPreferenceFragment(PrefsFragment.newInstance().apply { + arguments = Bundle().apply { + putString(PreferenceFragmentCompat.ARG_PREFERENCE_ROOT, pref.key) + } + }) return true } @AndroidEntryPoint class PrefsFragment : JamiPreferenceFragment<GeneralAccountPresenter>(), GeneralAccountView { - private var autoAnswer = false - private var rendezvousMode = false override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) presenter.init() @@ -77,13 +76,8 @@ class TVSettingsFragment : LeanbackSettingsFragmentCompat() { override fun addJamiPreferences(accountId: String) {} override fun addSipPreferences() {} override fun accountChanged(account: Account) { - // load information from account to ui - autoAnswer = account.config.getBool(ConfigKey.ACCOUNT_AUTOANSWER) - rendezvousMode = account.config.getBool(ConfigKey.ACCOUNT_ISRENDEZVOUS) - val pref = findPreference<SwitchPreference>(ConfigKey.ACCOUNT_AUTOANSWER.key()) - if (pref != null) pref.isChecked = autoAnswer - val prefRdv = findPreference<SwitchPreference>(ConfigKey.ACCOUNT_ISRENDEZVOUS.key()) - if (prefRdv != null) prefRdv.isChecked = rendezvousMode + findPreference<SwitchPreference>(ConfigKey.ACCOUNT_AUTOANSWER.key())?.isChecked = account.config.getBool(ConfigKey.ACCOUNT_AUTOANSWER) + findPreference<SwitchPreference>(ConfigKey.ACCOUNT_ISRENDEZVOUS.key())?.isChecked = account.config.getBool(ConfigKey.ACCOUNT_ISRENDEZVOUS) } override fun finish() { @@ -94,17 +88,17 @@ class TVSettingsFragment : LeanbackSettingsFragmentCompat() { val videoResolutionsNames = resources.getStringArray(R.array.video_resolutionStrings) val videoResolutionsValues = filterResolutions(resources.getStringArray(R.array.video_resolutions), currentResolution, maxResolution) - val lpVideoResolution = findPreference<ListPreference>(SharedPreferencesServiceImpl.PREF_RESOLUTION) - if (lpVideoResolution != null) { - lpVideoResolution.entries = videoResolutionsNames.copyOfRange(0, videoResolutionsValues.size) - lpVideoResolution.entryValues = videoResolutionsValues + findPreference<ListPreference>(SharedPreferencesServiceImpl.PREF_RESOLUTION)?.apply { + entries = videoResolutionsNames.copyOfRange(0, videoResolutionsValues.size) + entryValues = videoResolutionsValues } } override fun onCreatePreferences(bundle: Bundle?, rootKey: String?) { - val pm = preferenceManager - pm.sharedPreferencesMode = Context.MODE_PRIVATE - pm.sharedPreferencesName = SharedPreferencesServiceImpl.PREFS_VIDEO + preferenceManager?.apply { + sharedPreferencesMode = Context.MODE_PRIVATE + sharedPreferencesName = SharedPreferencesServiceImpl.PREFS_VIDEO + } setPreferencesFromResource(R.xml.tv_account_general_pref, rootKey) } @@ -117,30 +111,21 @@ class TVSettingsFragment : LeanbackSettingsFragmentCompat() { if (currentResolution > maxResolution.second) return videoResolutionsValues val resolutions = ArrayList<String>() for (videoResolutionsValue in videoResolutionsValues) { - val resolutionValueInt = videoResolutionsValue.toInt() - if (resolutionValueInt <= maxResolution.second) { + if (videoResolutionsValue.toInt() <= maxResolution.second) resolutions.add(videoResolutionsValue) - } } return resolutions.toTypedArray() } override fun onPreferenceTreeClick(preference: Preference): Boolean { - if (preference.key == "Account.about") { - } else if (preference.key == ConfigKey.ACCOUNT_AUTOANSWER.key()) { - presenter.twoStatePreferenceChanged(ConfigKey.ACCOUNT_AUTOANSWER, !autoAnswer) - autoAnswer = !autoAnswer - } else if (preference.key == ConfigKey.ACCOUNT_ISRENDEZVOUS.key()) { - presenter.twoStatePreferenceChanged(ConfigKey.ACCOUNT_ISRENDEZVOUS, !rendezvousMode) - rendezvousMode = !rendezvousMode - } + val key = ConfigKey.fromString(preference.key) + if (key != null && key.isTwoState) + presenter.twoStatePreferenceChanged(key, (preference as SwitchPreference).isChecked) return super.onPreferenceTreeClick(preference) } companion object { - fun newInstance(): PrefsFragment { - return PrefsFragment() - } + fun newInstance(): PrefsFragment = PrefsFragment() } } } \ No newline at end of file diff --git a/ring-android/app/src/main/res/xml/tv_about_pref.xml b/ring-android/app/src/main/res/xml/tv_about_pref.xml index f7688fbfd..05be37a00 100644 --- a/ring-android/app/src/main/res/xml/tv_about_pref.xml +++ b/ring-android/app/src/main/res/xml/tv_about_pref.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" - android:title="@string/about"> + android:title="@string/about" + android:persistent="false"> <PreferenceCategory android:title="@string/tv_about_version"> <Preference -- GitLab