[Android] Use the PreferenceVisibilityManager to manage the preferences root

Nicolas Pomepuy git at videolan.org
Fri Apr 25 05:51:47 UTC 2025


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Wed Apr 23 13:48:54 2025 +0200| [aaf5f5c109d1871d6149a4c085fca4d779d39745] | committer: Nicolas Pomepuy

Use the PreferenceVisibilityManager to manage the preferences root

> https://code.videolan.org/videolan/vlc-android/commit/aaf5f5c109d1871d6149a4c085fca4d779d39745
---

 .../videolan/television/ui/preferences/PreferencesFragment.kt    | 9 ---------
 .../videolan/vlc/gui/preferences/PreferenceVisibilityManager.kt  | 9 +++++++--
 .../src/org/videolan/vlc/gui/preferences/PreferencesFragment.kt  | 3 ---
 3 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/application/television/src/main/java/org/videolan/television/ui/preferences/PreferencesFragment.kt b/application/television/src/main/java/org/videolan/television/ui/preferences/PreferencesFragment.kt
index f01f5f2cb2..bc8cce677e 100644
--- a/application/television/src/main/java/org/videolan/television/ui/preferences/PreferencesFragment.kt
+++ b/application/television/src/main/java/org/videolan/television/ui/preferences/PreferencesFragment.kt
@@ -35,7 +35,6 @@ import androidx.preference.CheckBoxPreference
 import androidx.preference.Preference
 import androidx.preference.PreferenceScreen
 import org.videolan.medialibrary.interfaces.Medialibrary
-import org.videolan.resources.AndroidDevices
 import org.videolan.resources.KEY_AUDIO_LAST_PLAYLIST
 import org.videolan.resources.KEY_CURRENT_AUDIO
 import org.videolan.resources.KEY_CURRENT_AUDIO_RESUME_ARTIST
@@ -46,10 +45,8 @@ import org.videolan.resources.KEY_CURRENT_MEDIA_RESUME
 import org.videolan.resources.KEY_MEDIA_LAST_PLAYLIST
 import org.videolan.resources.KEY_MEDIA_LAST_PLAYLIST_RESUME
 import org.videolan.tools.AUDIO_RESUME_PLAYBACK
-import org.videolan.tools.KEY_VIDEO_APP_SWITCH
 import org.videolan.tools.PLAYBACK_HISTORY
 import org.videolan.tools.RESULT_RESTART
-import org.videolan.tools.SCREEN_ORIENTATION
 import org.videolan.tools.Settings
 import org.videolan.tools.Settings.isPinCodeSet
 import org.videolan.tools.VIDEO_RESUME_PLAYBACK
@@ -69,12 +66,6 @@ class PreferencesFragment : BasePreferenceFragment(), SharedPreferences.OnShared
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
-        findPreference<Preference>(SCREEN_ORIENTATION)?.isVisible = false
-        findPreference<Preference>("casting_category")?.isVisible = false
-        findPreference<Preference>("android_auto_category")?.isVisible = false
-        findPreference<Preference>(KEY_VIDEO_APP_SWITCH)?.isVisible = AndroidDevices.hasPiP
-        findPreference<Preference>("remote_access_category")?.isVisible = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1
-        findPreference<Preference>("permissions_title")?.isVisible = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1
         (activity as? PreferencesActivity)?.extraEndPoint?.let {
             if (it == "remote_access_category") findPreference<Preference>("remote_access_category")?.let {
                 onPreferenceTreeClick(it)
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferenceVisibilityManager.kt b/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferenceVisibilityManager.kt
index e9d34194c0..99dc8492af 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferenceVisibilityManager.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferenceVisibilityManager.kt
@@ -25,6 +25,7 @@
 package org.videolan.vlc.gui.preferences
 
 import android.content.SharedPreferences
+import android.os.Build
 import androidx.preference.PreferenceCategory
 import androidx.preference.PreferenceScreen
 import androidx.preference.children
@@ -34,9 +35,10 @@ import org.videolan.tools.AUDIO_DUCKING
 import org.videolan.tools.BROWSER_SHOW_HIDDEN_FILES
 import org.videolan.tools.KEY_AOUT
 import org.videolan.tools.KEY_APP_THEME
-import org.videolan.tools.KEY_INCOGNITO
+import org.videolan.tools.SCREEN_ORIENTATION
 import org.videolan.tools.KEY_QUICK_PLAY
 import org.videolan.tools.KEY_QUICK_PLAY_DEFAULT
+import org.videolan.tools.KEY_VIDEO_APP_SWITCH
 import org.videolan.tools.LIST_TITLE_ELLIPSIZE
 import org.videolan.tools.LOCKSCREEN_COVER
 import org.videolan.tools.PLAYLIST_MODE_AUDIO
@@ -65,16 +67,19 @@ object PreferenceVisibilityManager {
         KEY_QUICK_PLAY_DEFAULT, KEY_QUICK_PLAY, "secondary_display_category", "secondary_display_category_summary", "enable_clone_mode", SAVE_BRIGHTNESS,
         KEY_APP_THEME, LIST_TITLE_ELLIPSIZE, "enable_headset_detection", "enable_play_on_headset_insertion", "ignore_headset_media_button_presses",
         "headset_prefs_category", "audio_resume_card", LOCKSCREEN_COVER, SHOW_SEEK_IN_COMPACT_NOTIFICATION,
-        "audio_task_removed"-> !forTv
+        "audio_task_removed", "casting_category", "android_auto_category", SCREEN_ORIENTATION, -> !forTv
         //only on TV
         TV_FOLDERS_FIRST, BROWSER_SHOW_HIDDEN_FILES, PLAYLIST_MODE_VIDEO, PLAYLIST_MODE_AUDIO -> forTv
         "show_update" -> !forTv && BuildConfig.DEBUG
+        KEY_VIDEO_APP_SWITCH -> !forTv || AndroidDevices.hasPiP
         AUDIO_DUCKING -> !AndroidUtil.isOOrLater
         POPUP_FORCE_LEGACY -> AndroidDevices.pipAllowed
         RESUME_PLAYBACK -> AndroidDevices.isPhone && !forTv
         KEY_AOUT -> VlcMigrationHelper.getAudioOutputFromDevice() == VlcMigrationHelper.AudioOutput.ALL
         "audio_digital_output" -> sharedPreferences.getString("aout", "0") != "2"
         "optional_features" -> FeatureFlag.entries.isNotEmpty()
+        "remote_access_category" -> !forTv && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1
+        "permissions_title" -> Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1
         else -> true
     }
 
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesFragment.kt b/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesFragment.kt
index b30bf05010..e9e45ba8b1 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesFragment.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesFragment.kt
@@ -26,7 +26,6 @@ package org.videolan.vlc.gui.preferences
 import android.app.Activity
 import android.content.Intent
 import android.content.SharedPreferences
-import android.os.Build
 import android.os.Bundle
 import android.view.View
 import androidx.activity.result.contract.ActivityResultContracts
@@ -90,8 +89,6 @@ class PreferencesFragment : BasePreferenceFragment(), SharedPreferences.OnShared
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
-        findPreference<Preference>("remote_access_category")?.isVisible = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1
-        findPreference<Preference>("permissions_title")?.isVisible = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1
         audioResumePref = findPreference(AUDIO_RESUME_PLAYBACK)!!
     }
 



More information about the Android mailing list