Browse Source

Migrate the video hud timeout setting to a slider

merge-requests/1205/head
Nicolas Pomepuy 5 years ago
parent
commit
5fb5121dcd
  1. 14
      application/resources/src/main/res/values/arrays.xml
  2. 4
      application/resources/src/main/res/values/strings.xml
  3. 4
      application/tools/src/main/java/org/videolan/tools/Settings.kt
  4. 12
      application/vlc-android/res/xml/preferences_video_controls.xml
  5. 11
      application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesVideoControls.kt
  6. 15
      application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt
  7. 14
      application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerOverlayDelegate.kt
  8. 22
      application/vlc-android/src/org/videolan/vlc/util/VersionMigration.kt

14
application/resources/src/main/res/values/arrays.xml

@ -442,18 +442,4 @@
<item>2</item>
</string-array>
<string-array name="video_hud_timeout_entries">
<item>@string/timeout_infinite</item>
<item>@string/timeout_short</item>
<item>@string/timeout_normal</item>
<item>@string/timeout_long</item>
</string-array>
<string-array name="video_hud_timeout_values">
<item>-1</item>
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
</resources>

4
application/resources/src/main/res/values/strings.xml

@ -822,10 +822,8 @@
<string name="allow_otg">Allow OTG access</string>
<string name="allow_otg_description">Please select your OTG drive to allow access to VLC.</string>
<string name="timeout_infinite">Infinite</string>
<string name="timeout_short">Short</string>
<string name="timeout_normal">Normal</string>
<string name="timeout_long">Long</string>
<string name="video_hud_timeout">Video player controls hiding delay</string>
<string name="video_hud_timeout_summary">%ss</string>
<string name="remove_from_history">Remove from history</string>
<string name="prefersmbv1">Prefer SMB 1</string>
<string name="prefersmbv1_summary">Uncheck this setting if you have some difficulties browsing your SMB server</string>

4
application/tools/src/main/java/org/videolan/tools/Settings.kt

@ -39,7 +39,7 @@ object Settings : SingletonHolder<SharedPreferences, Context>({ init(it.applicat
showVideoThumbs = prefs.getBoolean(SHOW_VIDEO_THUMBNAILS, true)
tvUI = prefs.getBoolean(PREF_TV_UI, false)
listTitleEllipsize = prefs.getString(LIST_TITLE_ELLIPSIZE, "0")?.toInt() ?: 0
videoHudDelay = prefs.getString(VIDEO_HUD_TIMEOUT, "2")?.toInt() ?: 2
videoHudDelay = prefs.getInt(VIDEO_HUD_TIMEOUT, 4)
device = DeviceInfo(context)
includeMissing = prefs.getBoolean(KEY_INCLUDE_MISSING, true)
showHeaders = prefs.getBoolean(KEY_SHOW_HEADERS, true)
@ -136,7 +136,7 @@ const val KEY_PLAYBACK_SPEED_PERSIST = "playback_speed"
const val KEY_PLAYBACK_SPEED_PERSIST_VIDEO = "playback_speed_video"
const val KEY_VIDEO_APP_SWITCH = "video_action_switch"
const val VIDEO_TRANSITION_SHOW = "video_transition_show"
const val VIDEO_HUD_TIMEOUT = "video_hud_timeout"
const val VIDEO_HUD_TIMEOUT = "video_hud_timeout_in_s"
const val RESULT_RESCAN = Activity.RESULT_FIRST_USER + 1
const val RESULT_RESTART = Activity.RESULT_FIRST_USER + 2
const val RESULT_RESTART_APP = Activity.RESULT_FIRST_USER + 3

12
application/vlc-android/res/xml/preferences_video_controls.xml

@ -67,12 +67,14 @@
app:singleLineTitle="false" />
<ListPreference
android:defaultValue="2"
android:entries="@array/video_hud_timeout_entries"
android:entryValues="@array/video_hud_timeout_values"
android:key="video_hud_timeout"
<SeekBarPreference
android:defaultValue="4"
android:key="video_hud_timeout_in_s"
app:updatesContinuously="true"
android:summary="%s"
android:max="15"
app:min="0"
app:seekBarIncrement="1"
android:title="@string/video_hud_timeout"
app:singleLineTitle="false" />
</PreferenceCategory>

11
application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesVideoControls.kt

@ -50,9 +50,17 @@ class PreferencesVideoControls : BasePreferenceFragment(), SharedPreferences.OnS
findPreference<Preference>(ENABLE_BRIGHTNESS_GESTURE)?.isVisible = AndroidDevices.hasTsp
findPreference<Preference>(POPUP_KEEPSCREEN)?.isVisible = !AndroidDevices.isAndroidTv && !AndroidUtil.isOOrLater
findPreference<Preference>(KEY_VIDEO_DOUBLE_TAP_JUMP_DELAY)?.title = getString(if (AndroidDevices.isAndroidTv) R.string.video_key_jump_delay else R.string.video_double_tap_jump_delay)
updateHudTimeoutSummary()
}
private fun updateHudTimeoutSummary() {
when (Settings.videoHudDelay) {
0 -> findPreference<Preference>(VIDEO_HUD_TIMEOUT)?.summary = getString(R.string.timeout_infinite)
else -> findPreference<Preference>(VIDEO_HUD_TIMEOUT)?.summary = getString(R.string.video_hud_timeout_summary, Settings.videoHudDelay.toString())
}
}
override fun onStart() {
super.onStart()
preferenceScreen.sharedPreferences.registerOnSharedPreferenceChangeListener(this)
@ -68,7 +76,8 @@ class PreferencesVideoControls : BasePreferenceFragment(), SharedPreferences.OnS
(activity as? VideoPlayerActivity)?.onChangedControlSetting(key)
when (key) {
VIDEO_HUD_TIMEOUT -> {
Settings.videoHudDelay = sharedPreferences.getString(VIDEO_HUD_TIMEOUT, "2")?.toInt() ?: 2
Settings.videoHudDelay = sharedPreferences.getInt(VIDEO_HUD_TIMEOUT, 4)
updateHudTimeoutSummary()
}
KEY_VIDEO_JUMP_DELAY -> {
Settings.videoJumpDelay = sharedPreferences.getInt(KEY_VIDEO_JUMP_DELAY, 10)

15
application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt

@ -935,7 +935,7 @@ open class VideoPlayerActivity : AppCompatActivity(), PlaybackService.Callback,
return false
}
if (isShowing || fov == 0f && keyCode == KeyEvent.KEYCODE_DPAD_DOWN && !overlayDelegate.playlistContainer.isVisible())
overlayDelegate.showOverlayTimeout(OVERLAY_TIMEOUT)
overlayDelegate.showOverlayTimeout(Settings.videoHudDelay)
when (keyCode) {
KeyEvent.KEYCODE_MEDIA_FAST_FORWARD -> {
touchDelegate.seekDelta(Settings.videoDoubleTapJumpDelay * 1000)
@ -1005,7 +1005,7 @@ open class VideoPlayerActivity : AppCompatActivity(), PlaybackService.Callback,
if (isNavMenu)
return navigateDvdMenu(keyCode)
else if (isLocked) {
overlayDelegate.showOverlayTimeout(OVERLAY_TIMEOUT)
overlayDelegate.showOverlayTimeout(Settings.videoHudDelay)
} else if (!isShowing && !overlayDelegate.playlistContainer.isVisible()) {
if (event.isAltPressed && event.isCtrlPressed) {
touchDelegate.seekDelta(-300000)
@ -1026,7 +1026,7 @@ open class VideoPlayerActivity : AppCompatActivity(), PlaybackService.Callback,
if (isNavMenu)
return navigateDvdMenu(keyCode)
else if (isLocked) {
overlayDelegate.showOverlayTimeout(OVERLAY_TIMEOUT)
overlayDelegate.showOverlayTimeout(Settings.videoHudDelay)
} else if (!isShowing && !overlayDelegate.playlistContainer.isVisible()) {
if (event.isAltPressed && event.isCtrlPressed) {
touchDelegate.seekDelta(300000)
@ -1047,7 +1047,7 @@ open class VideoPlayerActivity : AppCompatActivity(), PlaybackService.Callback,
if (isNavMenu)
return navigateDvdMenu(keyCode)
else if (isLocked) {
overlayDelegate.showOverlayTimeout(OVERLAY_TIMEOUT)
overlayDelegate.showOverlayTimeout(Settings.videoHudDelay)
} else if (event.isCtrlPressed) {
volumeUp()
return true
@ -1063,7 +1063,7 @@ open class VideoPlayerActivity : AppCompatActivity(), PlaybackService.Callback,
if (isNavMenu)
return navigateDvdMenu(keyCode)
else if (isLocked) {
overlayDelegate.showOverlayTimeout(OVERLAY_TIMEOUT)
overlayDelegate.showOverlayTimeout(Settings.videoHudDelay)
} else if (event.isCtrlPressed) {
volumeDown()
return true
@ -1076,7 +1076,7 @@ open class VideoPlayerActivity : AppCompatActivity(), PlaybackService.Callback,
if (isNavMenu)
return navigateDvdMenu(keyCode)
else if (isLocked) {
overlayDelegate.showOverlayTimeout(OVERLAY_TIMEOUT)
overlayDelegate.showOverlayTimeout(Settings.videoHudDelay)
} else if (!isShowing) {
doPlayPause()
return true
@ -1384,7 +1384,7 @@ open class VideoPlayerActivity : AppCompatActivity(), PlaybackService.Callback,
overlayDelegate.updateOverlayPausePlay()
updateNavStatus()
if (!mw.hasFlag(MediaWrapper.MEDIA_PAUSED))
handler.sendEmptyMessageDelayed(FADE_OUT, OVERLAY_TIMEOUT.toLong())
handler.sendEmptyMessageDelayed(FADE_OUT, Settings.videoHudDelay.toLong())
else {
mw.removeFlags(MediaWrapper.MEDIA_PAUSED)
wasPaused = false
@ -2181,7 +2181,6 @@ open class VideoPlayerActivity : AppCompatActivity(), PlaybackService.Callback,
private const val KEY_TIME = "saved_time"
private const val KEY_LIST = "saved_list"
private const val KEY_URI = "saved_uri"
const val OVERLAY_TIMEOUT = 4000
const val OVERLAY_INFINITE = -1
const val FADE_OUT = 1
const val FADE_OUT_INFO = 2

14
application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerOverlayDelegate.kt

@ -289,14 +289,12 @@ class VideoPlayerOverlayDelegate (private val player: VideoPlayerActivity) {
initOverlay()
if (!::hudBinding.isInitialized) return
overlayTimeout = when {
Settings.videoHudDelay == -2 -> VideoPlayerActivity.OVERLAY_INFINITE
Settings.videoHudDelay == 0 -> VideoPlayerActivity.OVERLAY_INFINITE
isBookmarkShown() -> VideoPlayerActivity.OVERLAY_INFINITE
timeout != 0 -> timeout
service.isPlaying -> when (Settings.videoHudDelay) {
-1 -> VideoPlayerActivity.OVERLAY_INFINITE
1 -> VideoPlayerActivity.OVERLAY_TIMEOUT / 2
3 -> VideoPlayerActivity.OVERLAY_TIMEOUT * 2
else -> VideoPlayerActivity.OVERLAY_TIMEOUT
0 -> VideoPlayerActivity.OVERLAY_INFINITE
else -> Settings.videoHudDelay * 1000
}
else -> VideoPlayerActivity.OVERLAY_INFINITE
}
@ -393,7 +391,7 @@ class VideoPlayerOverlayDelegate (private val player: VideoPlayerActivity) {
hudBinding.abRepeatMarkerA.visibility = if (abvalues.start == -1L) View.GONE else View.VISIBLE
hudBinding.abRepeatMarkerB.visibility = if (abvalues.stop == -1L) View.GONE else View.VISIBLE
service.manageAbRepeatStep(hudBinding.abRepeatReset, hudBinding.abRepeatStop, hudBinding.abRepeatContainer, abRepeatAddMarker)
if (player.settings.getBoolean(VIDEO_TRANSITION_SHOW, true)) showOverlayTimeout(if (abvalues.start == -1L || abvalues.stop == -1L) VideoPlayerActivity.OVERLAY_INFINITE else VideoPlayerActivity.OVERLAY_TIMEOUT)
if (player.settings.getBoolean(VIDEO_TRANSITION_SHOW, true)) showOverlayTimeout(if (abvalues.start == -1L || abvalues.stop == -1L) VideoPlayerActivity.OVERLAY_INFINITE else Settings.videoHudDelay)
})
service.playlistManager.abRepeatOn.observe(player, {
abRepeatAddMarker.visibility = if (it) View.VISIBLE else View.GONE
@ -474,7 +472,7 @@ class VideoPlayerOverlayDelegate (private val player: VideoPlayerActivity) {
hudBinding.orientationToggle.setOnClickListener(if (enabled) player else null)
hudBinding.orientationToggle.setOnLongClickListener(if (enabled) player else null)
hudBinding.swipeToUnlock.setOnStartTouchingListener { showOverlayTimeout(VideoPlayerActivity.OVERLAY_INFINITE) }
hudBinding.swipeToUnlock.setOnStopTouchingListener { showOverlayTimeout(VideoPlayerActivity.OVERLAY_TIMEOUT) }
hudBinding.swipeToUnlock.setOnStopTouchingListener { showOverlayTimeout(Settings.videoHudDelay) }
hudBinding.swipeToUnlock.setOnUnlockListener { player.toggleLock() }
}
if (::hudRightBinding.isInitialized){
@ -810,7 +808,7 @@ class VideoPlayerOverlayDelegate (private val player: VideoPlayerActivity) {
bookmarkListDelegate.markerContainer = hudBinding.bookmarkMarkerContainer
bookmarkListDelegate.visibilityListener = {
if (bookmarkListDelegate.visible) showOverlayTimeout(VideoPlayerActivity.OVERLAY_INFINITE)
else showOverlayTimeout(VideoPlayerActivity.OVERLAY_TIMEOUT)
else showOverlayTimeout(Settings.videoHudDelay)
}
}
bookmarkListDelegate.show()

22
application/vlc-android/src/org/videolan/vlc/util/VersionMigration.kt

@ -37,7 +37,7 @@ import org.videolan.tools.*
import java.io.File
import java.io.IOException
private const val CURRENT_VERSION = 3
private const val CURRENT_VERSION = 4
object VersionMigration {
@ -53,6 +53,9 @@ object VersionMigration {
if (lastVersion < 3) {
migrateToVersion3(context)
}
if (lastVersion < 4) {
migrateToVersion4(settings)
}
settings.putSingle(KEY_CURRENT_SETTINGS_VERSION, CURRENT_VERSION)
}
@ -108,4 +111,21 @@ object VersionMigration {
deleteAllWatchNext(context)
}
}
/**
* Migrate the video hud timeout preference to a value in seconds
*/
private fun migrateToVersion4(settings: SharedPreferences) {
Log.i(this::class.java.simpleName, "Migrating to Version 4: migrate from video_hud_timeout to video_hud_timeout_in_s")
val hudTimeOut = settings.getString("video_hud_timeout", "2")?.toInt() ?: 2
settings.edit {
when {
hudTimeOut < 0 -> putInt(VIDEO_HUD_TIMEOUT, -1)
hudTimeOut == 2 -> putInt(VIDEO_HUD_TIMEOUT, 4)
hudTimeOut == 3 -> putInt(VIDEO_HUD_TIMEOUT, 8)
else -> putInt(VIDEO_HUD_TIMEOUT, 2)
}
remove("video_hud_timeout")
}
}
}
Loading…
Cancel
Save