[Android] Make the incognito mode playback speed for all not sticky
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:20:07 2025 +0100| [3c3c5594e386e4f1a3c40a2741b29cc0f4621a2d] | committer: Nicolas Pomepuy
Make the incognito mode playback speed for all not sticky
> https://code.videolan.org/videolan/vlc-android/commit/3c3c5594e386e4f1a3c40a2741b29cc0f4621a2d
---
.../resources/src/main/res/values/strings.xml | 1 +
.../vlc/gui/dialogs/PlaybackSpeedDialog.kt | 27 ++++++++++++++--------
.../src/org/videolan/vlc/gui/helpers/UiTools.kt | 5 ++++
.../src/org/videolan/vlc/media/PlaylistManager.kt | 12 ++++++----
4 files changed, 30 insertions(+), 15 deletions(-)
diff --git a/application/resources/src/main/res/values/strings.xml b/application/resources/src/main/res/values/strings.xml
index 3e09701a2c..cbbc1cd5a7 100644
--- a/application/resources/src/main/res/values/strings.xml
+++ b/application/resources/src/main/res/values/strings.xml
@@ -201,6 +201,7 @@
<string name="playback_speed_all_tracks">All tracks</string>
<string name="playback_speed_explanation_all_videos">The speed will be applied to all videos.\nIndividual videos\' playback speed will be ignored.</string>
<string name="playback_speed_explanation_all_tracks">The speed will be applied to all tracks.\nIndividual tracks\' playback speed will be ignored.</string>
+ <string name="playback_speed_explanation_all_incognito">You are in incognito mode. The speed will revert to normal if you leave incognito mode or the app is closed.</string>
<string name="playback_speed_explanation_one_video">The speed will be applied to this video only</string>
<string name="playback_speed_explanation_one_track">The speed will be applied to this track only</string>
<string name="audio_playback_speed_global">Use the global playback speed</string>
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/dialogs/PlaybackSpeedDialog.kt b/application/vlc-android/src/org/videolan/vlc/gui/dialogs/PlaybackSpeedDialog.kt
index 680fe90b75..6223b845cc 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/dialogs/PlaybackSpeedDialog.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/dialogs/PlaybackSpeedDialog.kt
@@ -30,11 +30,8 @@ import android.view.View
import android.view.ViewGroup
import android.widget.SeekBar
import androidx.core.content.edit
-import androidx.lifecycle.lifecycleScope
-import kotlinx.coroutines.flow.onEach
-import org.videolan.libvlc.MediaPlayer
-import org.videolan.libvlc.interfaces.IMedia
import org.videolan.medialibrary.interfaces.media.MediaWrapper
+import org.videolan.tools.KEY_INCOGNITO
import org.videolan.tools.KEY_PLAYBACK_SPEED_AUDIO_GLOBAL
import org.videolan.tools.KEY_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE
import org.videolan.tools.KEY_PLAYBACK_SPEED_VIDEO_GLOBAL
@@ -48,7 +45,6 @@ import org.videolan.vlc.gui.helpers.OnRepeatListenerKey
import org.videolan.vlc.gui.helpers.OnRepeatListenerTouch
import org.videolan.vlc.media.PlaylistManager
import org.videolan.vlc.util.isSchemeStreaming
-import org.videolan.vlc.util.launchWhenStarted
import kotlin.math.ln
import kotlin.math.pow
@@ -156,9 +152,12 @@ class PlaybackSpeedDialog : PlaybackBottomSheetDialogFragment(), PlaybackService
}
R.id.all_media -> {
settings.edit(commit = true) {
- putBoolean(if(forVideo) KEY_PLAYBACK_SPEED_VIDEO_GLOBAL else KEY_PLAYBACK_SPEED_AUDIO_GLOBAL, true)
+ putBoolean(if (forVideo) KEY_PLAYBACK_SPEED_VIDEO_GLOBAL else KEY_PLAYBACK_SPEED_AUDIO_GLOBAL, true)
+ }
+ val newValue = when {
+ settings.getBoolean(KEY_INCOGNITO, false) -> if (forVideo) PlaylistManager.incognitoModeVideoSpeed else PlaylistManager.incognitoModeAudioSpeed
+ else -> settings.getFloat(if (forVideo) KEY_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE else KEY_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE, 1F)
}
- val newValue = settings.getFloat(if (forVideo) KEY_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE else KEY_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE, 1F)
changeSpeedTo(newValue)
}
}
@@ -192,6 +191,11 @@ class PlaybackSpeedDialog : PlaybackBottomSheetDialogFragment(), PlaybackService
*/
private fun updateExplanation() {
binding.speedModeExplanation.text = when {
+ binding.toggleButton.checkedButtonId == R.id.all_media && settings.getBoolean(KEY_INCOGNITO, false) -> buildString {
+ append(if (forVideo) getString(R.string.playback_speed_explanation_all_videos) else getString(R.string.playback_speed_explanation_all_tracks) )
+ append("\n\n")
+ append(getString(R.string.playback_speed_explanation_all_incognito))
+ }
binding.toggleButton.checkedButtonId == R.id.all_media -> if (forVideo) getString(R.string.playback_speed_explanation_all_videos) else getString(R.string.playback_speed_explanation_all_tracks)
else -> if (forVideo) getString(R.string.playback_speed_explanation_one_video) else getString(R.string.playback_speed_explanation_one_track)
}
@@ -226,9 +230,12 @@ class PlaybackSpeedDialog : PlaybackBottomSheetDialogFragment(), PlaybackService
if (binding.toggleButton.checkedButtonId == R.id.this_media) {
getCurrentMedia()?.setStringMeta(MediaWrapper.META_SPEED, newValue.toString())
} else {
- settings.edit {
- putFloat(if (forVideo) KEY_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE else KEY_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE, newValue)
- }
+ if (settings.getBoolean(KEY_INCOGNITO, false)) {
+ if (forVideo) PlaylistManager.incognitoModeVideoSpeed = newValue else PlaylistManager.incognitoModeAudioSpeed = newValue
+ } else
+ settings.edit {
+ putFloat(if (forVideo) KEY_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE else KEY_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE, newValue)
+ }
}
playbackService!!.setRate(newValue, true)
if (!preventChangeProgressbar)
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 e4b1a03161..602c261129 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
@@ -158,6 +158,7 @@ import org.videolan.vlc.gui.helpers.hf.PinCodeDelegate
import org.videolan.vlc.gui.helpers.hf.checkPIN
import org.videolan.vlc.gui.preferences.PreferencesActivity
import org.videolan.vlc.media.MediaUtils
+import org.videolan.vlc.media.PlaylistManager
import org.videolan.vlc.media.getAll
import org.videolan.vlc.providers.medialibrary.MedialibraryProvider
import org.videolan.vlc.util.FileUtils
@@ -560,6 +561,10 @@ object UiTools {
if (activity.showPinIfNeeded()) return false
Settings.getInstance(activity).putSingle(KEY_INCOGNITO, !Settings.getInstance(activity).getBoolean(KEY_INCOGNITO, false))
item.isChecked = !item.isChecked
+ if (!item.isChecked) {
+ PlaylistManager.incognitoModeVideoSpeed = 1F
+ PlaylistManager.incognitoModeAudioSpeed = 1F
+ }
return true
}
diff --git a/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt b/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
index e6c56501fd..a6cd182c35 100644
--- a/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
+++ b/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
@@ -119,6 +119,8 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList
fun hasMedia() = mediaList.size() != 0
val repeating = MutableStateFlow(PlaybackStateCompat.REPEAT_MODE_NONE)
var playingAsAudio = false
+ var incognitoModeVideoSpeed = 1f
+ var incognitoModeAudioSpeed = 1f
}
private val medialibrary by lazy(LazyThreadSafetyMode.NONE) { Medialibrary.getInstance() }
@@ -742,13 +744,13 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList
* @param media
*/
private fun restoreSpeed(media: MediaWrapper) {
+ val incognitoMode = settings.getBoolean(KEY_INCOGNITO, false)
+ val playbackSpeedModeAll = settings.getBoolean(if (player.isVideoPlaying()) KEY_PLAYBACK_SPEED_VIDEO_GLOBAL else KEY_PLAYBACK_SPEED_AUDIO_GLOBAL, false)
val playbackRate = when {
+ incognitoMode && playbackSpeedModeAll -> if (player.isVideoPlaying()) incognitoModeVideoSpeed else incognitoModeAudioSpeed
//restore all
- settings.getBoolean(
- if (player.isVideoPlaying()) KEY_PLAYBACK_SPEED_VIDEO_GLOBAL else KEY_PLAYBACK_SPEED_AUDIO_GLOBAL,
- false
- ) -> settings.getFloat(if (player.isVideoPlaying()) KEY_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE else KEY_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE, 1.0f)
- settings.getBoolean(KEY_INCOGNITO, false) -> 1F
+ playbackSpeedModeAll -> settings.getFloat(if (player.isVideoPlaying()) KEY_PLAYBACK_SPEED_VIDEO_GLOBAL_VALUE else KEY_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE, 1.0f)
+ incognitoMode -> 1F
//restore one
else -> try {
media.getMetaString(MediaWrapper.META_SPEED).toFloat()
More information about the Android
mailing list