Split gesture option into volume & brightness and zoom (#121)

This commit is contained in:
Jarne Demeulemeester 2022-06-11 13:45:26 +02:00 committed by GitHub
parent c1740c1b68
commit 7cdc74d2e7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 83 additions and 32 deletions

View file

@ -11,6 +11,8 @@ constructor(
private val sharedPreferences: SharedPreferences
) {
val playerGestures = sharedPreferences.getBoolean(Constants.PREF_PLAYER_GESTURES, true)
val playerGesturesVB = sharedPreferences.getBoolean(Constants.PREF_PLAYER_GESTURES_VB, true)
val playerGesturesZoom = sharedPreferences.getBoolean(Constants.PREF_PLAYER_GESTURES_ZOOM, true)
val playerBrightnessRemember =
sharedPreferences.getBoolean(Constants.PREF_PLAYER_BRIGHTNESS_REMEMBER, false)

View file

@ -9,6 +9,8 @@ object Constants {
// pref
const val PREF_PLAYER_GESTURES = "pref_player_gestures"
const val PREF_PLAYER_GESTURES_VB = "pref_player_gestures_vb"
const val PREF_PLAYER_GESTURES_ZOOM = "pref_player_gestures_zoom"
const val PREF_PLAYER_BRIGHTNESS_REMEMBER = "pref_player_brightness_remember"
const val PREF_PLAYER_BRIGHTNESS = "pref_player_brightness"
const val PREF_IMAGE_CACHE = "pref_image_cache"

View file

@ -20,8 +20,6 @@ class PlayerGestureHelper(
private val playerView: StyledPlayerView,
private val audioManager: AudioManager
) {
/**
* Tracks whether video content should fill the screen, cutting off unwanted content on the sides.
* Useful on wide-screen phones to remove black bars from some movies.
@ -37,12 +35,17 @@ class PlayerGestureHelper(
private var swipeGestureValueTrackerVolume = -1f
private var swipeGestureValueTrackerBrightness = -1f
private val gestureDetector = GestureDetector(playerView.context, object : GestureDetector.SimpleOnGestureListener() {
override fun onDoubleTap(e: MotionEvent): Boolean {
private val tapGestureDetector = GestureDetector(playerView.context, object : GestureDetector.SimpleOnGestureListener() {
override fun onSingleTapUp(e: MotionEvent?): Boolean {
playerView.apply {
if (!isControllerFullyVisible) showController() else hideController()
}
return true
}
})
override fun onSingleTapUp(e: MotionEvent?): Boolean {
private val gestureDetector = GestureDetector(playerView.context, object : GestureDetector.SimpleOnGestureListener() {
override fun onSingleTapUp(e: MotionEvent): Boolean {
playerView.apply {
if (!isControllerFullyVisible) showController() else hideController()
}
@ -142,33 +145,63 @@ class PlayerGestureHelper(
playerView.resizeMode = if (enabled) AspectRatioFrameLayout.RESIZE_MODE_ZOOM else AspectRatioFrameLayout.RESIZE_MODE_FIT
}
private fun releaseAction(event: MotionEvent) {
if (event.action == MotionEvent.ACTION_UP) {
activity.binding.gestureVolumeLayout.apply {
if (visibility == View.VISIBLE) {
removeCallbacks(hideGestureVolumeIndicatorOverlayAction)
postDelayed(hideGestureVolumeIndicatorOverlayAction, 1000)
}
}
activity.binding.gestureBrightnessLayout.apply {
if (visibility == View.VISIBLE) {
removeCallbacks(hideGestureBrightnessIndicatorOverlayAction)
postDelayed(hideGestureBrightnessIndicatorOverlayAction, 1000)
}
}
}
}
init {
if (appPreferences.playerBrightnessRemember) {
activity.window.attributes.screenBrightness = appPreferences.playerBrightness
}
@Suppress("ClickableViewAccessibility")
playerView.setOnTouchListener { _, event ->
if (playerView.useController) {
when (event.pointerCount) {
1 -> gestureDetector.onTouchEvent(event)
2 -> zoomGestureDetector.onTouchEvent(event)
}
}
if(event.action == MotionEvent.ACTION_UP) {
activity.binding.gestureVolumeLayout.apply {
if (visibility == View.VISIBLE) {
removeCallbacks(hideGestureVolumeIndicatorOverlayAction)
postDelayed(hideGestureVolumeIndicatorOverlayAction, 1000)
if (appPreferences.playerGesturesVB && !appPreferences.playerGesturesZoom) {
@Suppress("ClickableViewAccessibility")
playerView.setOnTouchListener { _, event ->
if (playerView.useController) {
if (event.pointerCount == 1) {
gestureDetector.onTouchEvent(event)
}
}
activity.binding.gestureBrightnessLayout.apply {
if (visibility == View.VISIBLE) {
removeCallbacks(hideGestureBrightnessIndicatorOverlayAction)
postDelayed(hideGestureBrightnessIndicatorOverlayAction, 1000)
releaseAction(event)
true
}
} else if (!appPreferences.playerGesturesVB && appPreferences.playerGesturesZoom) {
@Suppress("ClickableViewAccessibility")
playerView.setOnTouchListener { _, event ->
if (playerView.useController) {
when (event.pointerCount) {
1 -> tapGestureDetector.onTouchEvent(event)
2 -> zoomGestureDetector.onTouchEvent(event)
}
}
releaseAction(event)
true
}
} else if (appPreferences.playerGesturesVB && appPreferences.playerGesturesZoom) {
@Suppress("ClickableViewAccessibility")
playerView.setOnTouchListener { _, event ->
if (playerView.useController) {
when (event.pointerCount) {
1 -> gestureDetector.onTouchEvent(event)
2 -> zoomGestureDetector.onTouchEvent(event)
}
}
releaseAction(event)
true
}
true
}
}
}

View file

@ -122,5 +122,5 @@
<string name="gestures">Gestos</string>
<string name="player_brightness_remember">Recordar el nivel de brillo</string>
<string name="player_gestures">Gestos del reproductor</string>
<string name="player_gestures_summary">Desliza hacia arriba y hacia abajo en el lado derecho de la pantalla para cambiar el volumen y en el lado izquierdo para cambiar el brillo</string>
<string name="player_gestures_vb_summary">Desliza hacia arriba y hacia abajo en el lado derecho de la pantalla para cambiar el volumen y en el lado izquierdo para cambiar el brillo</string>
</resources>

View file

@ -121,5 +121,5 @@
<string name="display_extended_title_summary">Zeige erweiterten Episodentitel inklusiver der Staffel und Episodeninformationen (SXX:EXX - Episodenname).</string>
<string name="app_description">Native Drittanbieter Jellyfin App</string>
<string name="remove_server_dialog_text">Sicher, dass du den Server %1$s entfernen willst</string>
<string name="player_gestures_summary">Wische auf der rechten Seite des Bildschirms hoch und runter, um die Lautstärke anzupassen und auf der linken Seite, um gleiches mit der Helligkeit zu machen</string>
<string name="player_gestures_vb_summary">Wische auf der rechten Seite des Bildschirms hoch und runter, um die Lautstärke anzupassen und auf der linken Seite, um gleiches mit der Helligkeit zu machen</string>
</resources>

View file

@ -122,5 +122,5 @@
<string name="player_gestures">Gestos del reproductor</string>
<string name="player_brightness_remember">Recordar el nivel de brillo</string>
<string name="gestures">Gestos</string>
<string name="player_gestures_summary">Desliza hacia arriba y hacia abajo en el lado derecho de la pantalla para cambiar el volumen y en el lado izquierdo para cambiar el brillo</string>
<string name="player_gestures_vb_summary">Desliza hacia arriba y hacia abajo en el lado derecho de la pantalla para cambiar el volumen y en el lado izquierdo para cambiar el brillo</string>
</resources>

View file

@ -122,5 +122,5 @@
<string name="gestures">Gestos</string>
<string name="player_gestures">Gestos del reproductor</string>
<string name="player_brightness_remember">Recordar nivel de brillo</string>
<string name="player_gestures_summary">Deslice hacia arriba y hacia abajo en el lado derecho de la pantalla para cambiar el volumen y en el lado izquierdo para cambiar el brillo</string>
<string name="player_gestures_vb_summary">Deslice hacia arriba y hacia abajo en el lado derecho de la pantalla para cambiar el volumen y en el lado izquierdo para cambiar el brillo</string>
</resources>

View file

@ -107,7 +107,7 @@
<string name="image_description_backdrop">Toile de fond %1$s</string>
<string name="gestures">Gestes</string>
<string name="player_gestures">Gestes du lecteur</string>
<string name="player_gestures_summary">Glissez vers le haut ou vers le bas sur le côté droit de l\'écran pour modifier le volume et sur le côté gauche de l\'écran pour modifier la luminosité</string>
<string name="player_gestures_vb_summary">Glissez vers le haut ou vers le bas sur le côté droit de l\'écran pour modifier le volume et sur le côté gauche de l\'écran pour modifier la luminosité</string>
<string name="select_video_version_title">Choisissez une version</string>
<string name="display_extended_title_summary">Afficher le titre étendu inclut la numérotation de la saison et de l\'épisode (SXX:EXX - NomEpisode).</string>
<string name="add_server_empty_error">Adresse du serveur vide</string>

View file

@ -7,7 +7,7 @@
<string name="select_a_version">Wybierz wersję</string>
<string name="download_mobile_data">Pobieraj używając danych komórkowych</string>
<string name="mpv_player_summary">Używaj eksperymentalnego odtwarzacza MPV do odtwarzania wideo. MPV wspiera więcej kodeków wideo, audio i napisów.</string>
<string name="player_gestures_summary">Przesuń w górę lub w dół po prawej stronie ekrany by zmienić głośność, po lewej stronie by zmienić jasność</string>
<string name="player_gestures_vb_summary">Przesuń w górę lub w dół po prawej stronie ekrany by zmienić głośność, po lewej stronie by zmienić jasność</string>
<string name="display_extended_title_summary">Wyświetlaj rozszerzoną nazwę odcinka, razem z informacją o sezonie i odcinku (SXX:EXX - NazwaOdcinka).</string>
<string name="add_server_error_slow">Zbyt wolna odpowiedź serwera: %1$s</string>
<string name="add_server_error_already_added">Serwer już dodany</string>

View file

@ -107,7 +107,7 @@
<string name="app_description">第三方原生Jellyfin app</string>
<string name="login_error_wrong_username_password">用户名或密码错误</string>
<string name="latest_library">最新%1$s</string>
<string name="player_gestures_summary">在屏幕右侧上下划动来调整音量,在屏幕左侧上下划动来调整亮度</string>
<string name="player_gestures_vb_summary">在屏幕右侧上下划动来调整音量,在屏幕左侧上下划动来调整亮度</string>
<string name="add_server_error_outdated">服务器版本过旧:%1$s。请更新您的服务器</string>
<string name="edit_text_server_address_hint">服务器地址</string>
<string name="no_favorites">你没有收藏过任何东西</string>

View file

@ -101,7 +101,10 @@
<string name="image_description_backdrop">%1$s backdrop</string>
<string name="gestures">Gestures</string>
<string name="player_gestures">Player gestures</string>
<string name="player_gestures_summary">Swipe up and down on the right side of the screen to change the volume and on the left side to change the brightness</string>
<string name="player_gestures_vb">Volume and brightness gestures</string>
<string name="player_gestures_zoom">Zoom gesture</string>
<string name="player_gestures_vb_summary">Swipe up and down on the right side of the screen to change the volume and on the left side to change the brightness</string>
<string name="player_gestures_zoom_summary">Pinch to fill the screen with the video</string>
<string name="player_brightness_remember">Remember brightness level</string>
<string name="sort_by_options_0">Name</string>
<string name="sort_by_options_1">IMDB Rating</string>

View file

@ -21,10 +21,21 @@
<SwitchPreference
app:defaultValue="true"
app:key="pref_player_gestures"
app:summary="@string/player_gestures_summary"
app:title="@string/player_gestures" />
<SwitchPreference
app:defaultValue="true"
app:dependency="pref_player_gestures"
app:key="pref_player_gestures_vb"
app:summary="@string/player_gestures_vb_summary"
app:title="@string/player_gestures_vb" />
<SwitchPreference
app:defaultValue="true"
app:dependency="pref_player_gestures"
app:key="pref_player_gestures_zoom"
app:summary="@string/player_gestures_zoom_summary"
app:title="@string/player_gestures_zoom" />
<SwitchPreference
app:dependency="pref_player_gestures_vb"
app:key="pref_player_brightness_remember"
app:title="@string/player_brightness_remember" />
</PreferenceCategory>