[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