Merge pull request #104 from jarnedemeulemeester/extra_settings

Extra settings
This commit is contained in:
Jarne Demeulemeester 2022-04-07 20:43:46 +02:00 committed by GitHub
commit 35bdda0487
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 84 additions and 42 deletions

View file

@ -25,4 +25,12 @@
# Keep all mpvlib methods because proguard removes some which makes the app crash
-keep class is.xyz.libmpv.MPVLib {
*;
}
}
# ProGuard thinks all SettingsFragments are unused
-keep class dev.jdtech.jellyfin.fragments.SettingsLanguageFragment
-keep class dev.jdtech.jellyfin.fragments.SettingsAppearanceFragment
-keep class dev.jdtech.jellyfin.fragments.SettingsDownloadsFragment
-keep class dev.jdtech.jellyfin.fragments.SettingsPlayerFragment
-keep class dev.jdtech.jellyfin.fragments.SettingsDeviceFragment
-keep class dev.jdtech.jellyfin.fragments.SettingsCacheFragment

View file

@ -31,7 +31,7 @@ class PlayerActivity : BasePlayerActivity() {
lateinit var appPreferences: AppPreferences
lateinit var binding: ActivityPlayerBinding
private lateinit var playerGestureHelper: PlayerGestureHelper
private var playerGestureHelper: PlayerGestureHelper? = null
override val viewModel: PlayerActivityViewModel by viewModels()
private val args: PlayerActivityArgs by navArgs()
@ -49,12 +49,14 @@ class PlayerActivity : BasePlayerActivity() {
configureInsets(playerControls)
playerGestureHelper = PlayerGestureHelper(
appPreferences,
this,
binding.playerView,
getSystemService(Context.AUDIO_SERVICE) as AudioManager
)
if (appPreferences.playerGestures) {
playerGestureHelper = PlayerGestureHelper(
appPreferences,
this,
binding.playerView,
getSystemService(Context.AUDIO_SERVICE) as AudioManager
)
}
binding.playerView.findViewById<View>(R.id.back_button).setOnClickListener {
onBackPressed()

View file

@ -9,21 +9,19 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy.RESOURCE
import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory
import com.bumptech.glide.module.AppGlideModule
import com.bumptech.glide.request.RequestOptions
import dev.jdtech.jellyfin.utils.Constants
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.launch
import timber.log.Timber
private const val cacheDefaultSize = 250
@GlideModule
class GlideModule : AppGlideModule() {
override fun applyOptions(context: Context, builder: GlideBuilder) {
val preferences = PreferenceManager.getDefaultSharedPreferences(context)
val use = preferences.getBoolean("use_image_cache", false)
val use = preferences.getBoolean(Constants.PREF_IMAGE_CACHE, true)
if (use) {
val sizeMb = preferences.getString("image_cache_size", "$cacheDefaultSize")?.toInt()!!
val sizeMb = preferences.getString(Constants.PREF_IMAGE_CACHE_SIZE, "${Constants.DEFAULT_CACHE_SIZE}")?.toInt()!!
val sizeB = 1024L * 1024 * sizeMb
Timber.d("Setting image cache to use $sizeMb MB of disk space")

View file

@ -10,6 +10,11 @@ class AppPreferences
constructor(
private val sharedPreferences: SharedPreferences
) {
val playerGestures = sharedPreferences.getBoolean(Constants.PREF_PLAYER_GESTURES, true)
val playerBrightnessRemember =
sharedPreferences.getBoolean(Constants.PREF_PLAYER_BRIGHTNESS_REMEMBER, false)
var playerBrightness: Float
get() = sharedPreferences.getFloat(
Constants.PREF_PLAYER_BRIGHTNESS,
@ -20,5 +25,4 @@ constructor(
putFloat(Constants.PREF_PLAYER_BRIGHTNESS, value)
}
}
}

View file

@ -1,14 +1,19 @@
package dev.jdtech.jellyfin.utils
object Constants {
//player
// player
const val GESTURE_EXCLUSION_AREA_TOP = 48
const val FULL_SWIPE_RANGE_SCREEN_RATIO = 0.66f
const val ZOOM_SCALE_BASE = 1f
const val ZOOM_SCALE_THRESHOLD = 0.01f
//pref
// pref
const val PREF_PLAYER_GESTURES = "pref_player_gestures"
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"
const val PREF_IMAGE_CACHE_SIZE = "pref_image_cache_size"
// caching
const val DEFAULT_CACHE_SIZE = 20
}

View file

@ -115,7 +115,9 @@ class PlayerGestureHelper(
private val hideGestureBrightnessIndicatorOverlayAction = Runnable {
activity.binding.gestureBrightnessLayout.visibility = View.GONE
appPreferences.playerBrightness = activity.window.attributes.screenBrightness
if (appPreferences.playerBrightnessRemember) {
appPreferences.playerBrightness = activity.window.attributes.screenBrightness
}
}
/**
@ -141,7 +143,9 @@ class PlayerGestureHelper(
}
init {
activity.window.attributes.screenBrightness = appPreferences.playerBrightness
if (appPreferences.playerBrightnessRemember) {
activity.window.attributes.screenBrightness = appPreferences.playerBrightness
}
@Suppress("ClickableViewAccessibility")
playerView.setOnTouchListener { _, event ->
if (playerView.useController) {

View file

@ -55,8 +55,8 @@
<string name="unknown_error">Error desconocido</string>
<string name="search_hint">Buscar películas, series, episodios…</string>
<string name="latest_library">Reciente en %1$s</string>
<string name="mpv_player">Reproductor MPV</string>
<string name="mpv_player_summary">Usar el reproductor MPV parar reproducir contenidos. MPV soporta mas codecs de video, audio y subtitulos.</string>
<string name="mpv_player">Reproductor mpv</string>
<string name="mpv_player_summary">Usar el reproductor mpv parar reproducir contenidos. mpv soporta mas codecs de video, audio y subtitulos.</string>
<string name="select_audio_track">Elegir pista de audio</string>
<string name="select_subtile_track">Elegir subtítulo</string>
<string name="force_software_decoding">Forzar la decodificación por software</string>

View file

@ -70,8 +70,8 @@
<string name="unknown_error">Neočekávaná chyba</string>
<string name="select_audio_track">Vyberte zvukovou stopu</string>
<string name="select_subtile_track">Vyberte titulky</string>
<string name="mpv_player">MPV přehrávač</string>
<string name="mpv_player_summary">Použít experimentální MPV přehrávač k přehrávání videí. MPV má podporu pro více video a audio kodeků a formátů titulků.</string>
<string name="mpv_player">mpv přehrávač</string>
<string name="mpv_player_summary">Použít experimentální mpv přehrávač k přehrávání videí. mpv má podporu pro více video a audio kodeků a formátů titulků.</string>
<string name="force_software_decoding">Vynutit softwarové dekódování</string>
<string name="force_software_decoding_summary">Vypnout hardwarové dekódování a vynutit softwarové dekódování. Může být užitečné pokud hardwarové dekódování produkuje artefakty.</string>
<string name="image_description_poster">%1$s plakát</string>

View file

@ -55,8 +55,8 @@
<string name="app_info">Información de la App</string>
<string name="unknown_error">Error desconocido</string>
<string name="search_hint">Buscar películas, series, episodios…</string>
<string name="mpv_player">Reproductor MPV</string>
<string name="mpv_player_summary">Usar el reproductor MPV parar reproducir contenidos. MPV soporta mas codecs de video, audio y subtitulos.</string>
<string name="mpv_player">Reproductor mpv</string>
<string name="mpv_player_summary">Usar el reproductor mpv parar reproducir contenidos. mpv soporta mas codecs de video, audio y subtitulos.</string>
<string name="select_subtile_track">Elegir subtítulo</string>
<string name="select_audio_track">Elegir pista de audio</string>
<string name="force_software_decoding">Forzar la decodificación por software</string>

View file

@ -55,10 +55,10 @@
<string name="app_info">Información de aplicación</string>
<string name="unknown_error">Error desconocido</string>
<string name="search_hint">Buscar películas, series, episodios…</string>
<string name="mpv_player">Reproductor MPV</string>
<string name="mpv_player">Reproductor mpv</string>
<string name="select_audio_track">Elegir pista de audio</string>
<string name="select_subtile_track">Elegir pista de subtitulo</string>
<string name="mpv_player_summary">Usar el reproductor MPV parar reproducir contenidos. MPV soporta mas codecs de video, audio y subtitulos.</string>
<string name="mpv_player_summary">Usar el reproductor mpv parar reproducir contenidos. mpv soporta mas codecs de video, audio y subtitulos.</string>
<string name="force_software_decoding">Forzar la decodificación por software</string>
<string name="force_software_decoding_summary">Deshabilita la decodificación por hardtware y usa solo software. Puede ser útil sí la decodificación por hardware genera artefactos visuales.</string>
</resources>

View file

@ -80,10 +80,10 @@
<string name="select_audio_track">Select audio track</string>
<string name="select_subtile_track">Select subtitle track</string>
<string name="select_playback_speed">Select playback speed</string>
<string name="mpv_player">MPV Player</string>
<string name="mpv_player">mpv player</string>
<string name="download_mobile_data">Download using mobile data</string>
<string name="download_roaming">Download when roaming</string>
<string name="mpv_player_summary">Use the experimental MPV Player to play videos. MPV has support for more video, audio and subtitle codecs.</string>
<string name="mpv_player_summary">Use the experimental mpv player to play videos. mpv has support for more video, audio and subtitle codecs.</string>
<string name="force_software_decoding">Force software decoding</string>
<string name="force_software_decoding_summary">Disable hardware decoding and use software decoding. Can be useful if hardware decoding gives weird artifacts.</string>
<string name="download_button_description">Download</string>
@ -99,6 +99,10 @@
<string name="share">Share</string>
<string name="image_description_poster">%1$s poster</string>
<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_brightness_remember">Remember brightness level</string>
<string-array name="sort_by_options">
<item>Name</item>

View file

@ -1,14 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
<SwitchPreference
app:key="use_image_cache"
app:defaultValue="true"
app:key="pref_image_cache"
app:summary="@string/settings_use_cache_summary"
app:title="@string/settings_use_cache_title" />
<EditTextPreference
app:defaultValue="250"
app:dependency="use_image_cache"
app:defaultValue="20"
app:dependency="pref_image_cache"
app:dialogMessage="@string/settings_cache_size_message"
app:key="image_cache_size"
app:key="pref_image_cache_size"
app:title="@string/settings_cache_size"
app:useSimpleSummaryProvider="true" />
</PreferenceScreen>

View file

@ -1,16 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
<SwitchPreference
app:key="mpv_player"
app:summary="@string/mpv_player_summary"
app:title="@string/mpv_player" />
<SwitchPreference
app:dependency="mpv_player"
app:key="mpv_disable_hwdec"
app:summary="@string/force_software_decoding_summary"
app:title="@string/force_software_decoding" />
<SwitchPreference
app:key="display_extended_title"
app:summary="@string/display_extended_title_summary"
app:title="@string/display_extended_title" />
<PreferenceCategory app:title="@string/mpv_player">
<SwitchPreference
app:key="mpv_player"
app:summary="@string/mpv_player_summary"
app:title="@string/mpv_player" />
<SwitchPreference
app:dependency="mpv_player"
app:key="mpv_disable_hwdec"
app:summary="@string/force_software_decoding_summary"
app:title="@string/force_software_decoding" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/gestures">
<SwitchPreference
app:defaultValue="true"
app:key="pref_player_gestures"
app:summary="@string/player_gestures_summary"
app:title="@string/player_gestures" />
<SwitchPreference
app:dependency="pref_player_gestures"
app:key="pref_player_brightness_remember"
app:title="@string/player_brightness_remember" />
</PreferenceCategory>
</PreferenceScreen>