[Android] Refactor the incognito mode change in UiTools

Nicolas Pomepuy git at videolan.org
Wed Mar 5 14:33:40 UTC 2025


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Tue Mar  4 07:14:08 2025 +0100| [6c5a808378ba64fba89bbb651bf0a45edbb0dcdb] | committer: Nicolas Pomepuy

Refactor the incognito mode change in UiTools

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

 .../src/org/videolan/vlc/gui/MainActivity.kt       |  5 +-
 .../src/org/videolan/vlc/gui/SecondaryActivity.kt  |  8 +-
 .../src/org/videolan/vlc/gui/helpers/UiTools.kt    | 90 +++++++++++++++++++---
 3 files changed, 83 insertions(+), 20 deletions(-)

diff --git a/application/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt b/application/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt
index c6762aef83..16f9d2a7f7 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/MainActivity.kt
@@ -71,7 +71,6 @@ import org.videolan.vlc.gui.helpers.INavigator
 import org.videolan.vlc.gui.helpers.Navigator
 import org.videolan.vlc.gui.helpers.UiTools
 import org.videolan.vlc.gui.helpers.UiTools.isTablet
-import org.videolan.vlc.gui.helpers.UiTools.showPinIfNeeded
 import org.videolan.vlc.gui.video.VideoGridFragment
 import org.videolan.vlc.interfaces.Filterable
 import org.videolan.vlc.interfaces.IRefreshable
@@ -263,9 +262,7 @@ class MainActivity : ContentActivity(),
             }
             R.id.incognito_mode -> {
                 lifecycleScope.launch {
-                    if (showPinIfNeeded()) return at launch
-                    Settings.getInstance (this at MainActivity).putSingle(KEY_INCOGNITO, !Settings.getInstance(this at MainActivity).getBoolean(KEY_INCOGNITO, false))
-                    item.isChecked = !item.isChecked
+                    if (!UiTools.updateIncognitoMode(this at MainActivity, item)) return at launch
                     updateIncognitoModeIcon()
                 }
                 true
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/SecondaryActivity.kt b/application/vlc-android/src/org/videolan/vlc/gui/SecondaryActivity.kt
index b67fdbba47..f37875bc55 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/SecondaryActivity.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/SecondaryActivity.kt
@@ -29,7 +29,6 @@ import android.view.Menu
 import android.view.MenuItem
 import android.view.View
 import androidx.coordinatorlayout.widget.CoordinatorLayout
-import androidx.core.content.ContextCompat
 import androidx.core.os.bundleOf
 import androidx.core.view.WindowInsetsControllerCompat
 import androidx.fragment.app.Fragment
@@ -49,8 +48,6 @@ import org.videolan.tools.KEY_INCOGNITO
 import org.videolan.tools.RESULT_RESCAN
 import org.videolan.tools.RESULT_RESTART
 import org.videolan.tools.Settings
-import org.videolan.tools.putSingle
-import org.videolan.vlc.BuildConfig
 import org.videolan.vlc.R
 import org.videolan.vlc.gui.audio.AudioAlbumsSongsFragment
 import org.videolan.vlc.gui.audio.AudioBrowserFragment
@@ -59,7 +56,6 @@ import org.videolan.vlc.gui.browser.KEY_MEDIA
 import org.videolan.vlc.gui.browser.MLStorageBrowserFragment
 import org.videolan.vlc.gui.browser.NetworkBrowserFragment
 import org.videolan.vlc.gui.helpers.UiTools
-import org.videolan.vlc.gui.helpers.UiTools.showPinIfNeeded
 import org.videolan.vlc.gui.network.MRLPanelFragment
 import org.videolan.vlc.gui.video.VideoGridFragment
 import org.videolan.vlc.reloadLibrary
@@ -165,9 +161,7 @@ class SecondaryActivity : ContentActivity(), IDialogManager {
             }
             R.id.incognito_mode -> {
                 lifecycleScope.launch {
-                    if (showPinIfNeeded()) return at launch
-                    Settings.getInstance (this at SecondaryActivity).putSingle(KEY_INCOGNITO, !Settings.getInstance(this at SecondaryActivity).getBoolean(KEY_INCOGNITO, false))
-                    item.isChecked = !item.isChecked
+                    if (!UiTools.updateIncognitoMode(this at SecondaryActivity, item)) return at launch
                 }
                 return true
             }
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt b/application/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt
index 65e748549b..e4b1a03161 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt
@@ -39,10 +39,19 @@ import android.os.Build
 import android.os.Bundle
 import android.os.Handler
 import android.os.Looper
-import android.renderscript.*
+import android.renderscript.Allocation
+import android.renderscript.Element
+import android.renderscript.RSInvalidStateException
+import android.renderscript.RenderScript
+import android.renderscript.ScriptIntrinsicBlur
 import android.text.TextUtils
-import android.view.*
-import android.view.animation.*
+import android.view.DragEvent
+import android.view.Menu
+import android.view.MenuItem
+import android.view.View
+import android.view.WindowManager
+import android.view.animation.AccelerateDecelerateInterpolator
+import android.view.animation.OvershootInterpolator
 import android.view.inputmethod.InputMethodManager
 import android.widget.ImageView
 import android.widget.TextView
@@ -71,7 +80,10 @@ import androidx.lifecycle.lifecycleScope
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import com.google.android.material.snackbar.Snackbar
-import kotlinx.coroutines.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
 import nl.dionsegijn.konfetti.core.Party
 import nl.dionsegijn.konfetti.core.Position
 import nl.dionsegijn.konfetti.core.Rotation
@@ -83,19 +95,64 @@ import org.videolan.libvlc.util.AndroidUtil
 import org.videolan.medialibrary.MLServiceLocator
 import org.videolan.medialibrary.Tools
 import org.videolan.medialibrary.interfaces.Medialibrary
-import org.videolan.medialibrary.interfaces.media.*
+import org.videolan.medialibrary.interfaces.media.Album
+import org.videolan.medialibrary.interfaces.media.Artist
+import org.videolan.medialibrary.interfaces.media.Folder
+import org.videolan.medialibrary.interfaces.media.Genre
+import org.videolan.medialibrary.interfaces.media.MediaWrapper
+import org.videolan.medialibrary.interfaces.media.Playlist
+import org.videolan.medialibrary.interfaces.media.VideoGroup
 import org.videolan.medialibrary.media.MediaLibraryItem
-import org.videolan.resources.*
+import org.videolan.resources.ACTION_DISCOVER_DEVICE
+import org.videolan.resources.AppContextProvider
+import org.videolan.resources.CATEGORY_ALBUMS
+import org.videolan.resources.CATEGORY_ARTISTS
+import org.videolan.resources.CATEGORY_GENRES
+import org.videolan.resources.CATEGORY_NOW_PLAYING
+import org.videolan.resources.CATEGORY_NOW_PLAYING_PIP
+import org.videolan.resources.CATEGORY_SONGS
+import org.videolan.resources.EXTRA_PATH
+import org.videolan.resources.HEADER_DIRECTORIES
+import org.videolan.resources.HEADER_MOVIES
+import org.videolan.resources.HEADER_NETWORK
+import org.videolan.resources.HEADER_PERMISSION
+import org.videolan.resources.HEADER_PLAYLISTS
+import org.videolan.resources.HEADER_SERVER
+import org.videolan.resources.HEADER_STREAM
+import org.videolan.resources.HEADER_TV_SHOW
+import org.videolan.resources.HEADER_VIDEO
+import org.videolan.resources.ID_ABOUT_TV
+import org.videolan.resources.ID_REMOTE_ACCESS
+import org.videolan.resources.ID_SETTINGS
+import org.videolan.resources.ID_SPONSOR
+import org.videolan.resources.TAG_ITEM
+import org.videolan.resources.TV_CONFIRMATION_ACTIVITY
 import org.videolan.resources.util.launchForeground
-import org.videolan.tools.*
+import org.videolan.tools.BitmapCache
+import org.videolan.tools.KEY_APP_THEME
+import org.videolan.tools.KEY_INCOGNITO
+import org.videolan.tools.MultiSelectHelper
+import org.videolan.tools.Settings
+import org.videolan.tools.dp
+import org.videolan.tools.isStarted
+import org.videolan.tools.putSingle
+import org.videolan.tools.setGone
 import org.videolan.vlc.BuildConfig.VLC_VERSION_NAME
 import org.videolan.vlc.MediaParsingService
 import org.videolan.vlc.R
 import org.videolan.vlc.StartActivity
 import org.videolan.vlc.VlcMigrationHelper
-import org.videolan.vlc.gui.*
+import org.videolan.vlc.gui.AuthorsActivity
+import org.videolan.vlc.gui.BaseActivity
+import org.videolan.vlc.gui.InfoActivity
+import org.videolan.vlc.gui.LibrariesActivity
+import org.videolan.vlc.gui.LibraryWithLicense
 import org.videolan.vlc.gui.browser.MediaBrowserFragment
-import org.videolan.vlc.gui.dialogs.*
+import org.videolan.vlc.gui.dialogs.AboutVersionDialog
+import org.videolan.vlc.gui.dialogs.AddToGroupDialog
+import org.videolan.vlc.gui.dialogs.LicenseDialog
+import org.videolan.vlc.gui.dialogs.SavePlaylistDialog
+import org.videolan.vlc.gui.dialogs.VideoTracksDialog
 import org.videolan.vlc.gui.helpers.BitmapUtil.vectorToBitmap
 import org.videolan.vlc.gui.helpers.hf.PinCodeDelegate
 import org.videolan.vlc.gui.helpers.hf.checkPIN
@@ -491,6 +548,21 @@ object UiTools {
 //        if (VLCBilling.getInstance(activity.application).status == BillingStatus.FAILURE ||  VLCBilling.getInstance(activity.application).skuDetails.isEmpty()) donationsButton.setGone() else donationsButton.setVisible()
 //    }
 
+
+    /**
+     * Update the incognito mode setting
+     *
+     * @param activity the activity that launched the change
+     * @param item the menu item that was clicked
+     * @return true if the change has been applied, false otherwise
+     */
+    fun updateIncognitoMode(activity: FragmentActivity, item: MenuItem): Boolean {
+        if (activity.showPinIfNeeded()) return false
+        Settings.getInstance(activity).putSingle(KEY_INCOGNITO, !Settings.getInstance(activity).getBoolean(KEY_INCOGNITO, false))
+        item.isChecked = !item.isChecked
+        return true
+    }
+
     fun setKeyboardVisibility(v: View?, show: Boolean) {
         if (v == null) return
         val inputMethodManager = v.context.applicationContext.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager



More information about the Android mailing list