Files
plezy/lib/models/player_setting_scope.dart
edde746 35dce90ea9 feat(player): persist player-sheet changes at a configurable scope
Changing playback speed, shader preset, aspect ratio, or a sync offset in
the player always rewrote the global default, so a show watched at 1.5x
forced 1.5x onto movies, an Anime4K pick followed the user into
live-action libraries, and a file-specific subtitle offset leaked onto the
next title.

Each of those settings now has a scope under Settings > Video Playback >
Remember Player Changes: don't save, everywhere (default, pre-existing
behavior), per library, or per show/movie. Player writes route through the
configured scope; playback start and in-place item changes resolve the
value for the current item, falling back to the global default. Items
without the needed identity (live TV placeholders, Jellyfin/Emby downloads
without a stamped library) keep the global behavior. Resolution consults
only the configured scope, so entries saved under a previous scope become
inert instead of shadowing the new one.

close #1984
close #1322
close #1616
2026-08-18 06:09:11 +02:00

22 lines
768 B
Dart

/// Where a player-sheet change (playback speed, shader preset, aspect ratio,
/// sync offsets) is persisted and re-applied from.
///
/// The scope governs writes: a change made during playback is stored at the
/// configured scope. Resolution at playback start consults only the configured
/// scope's entry for the current item, then falls back to the global pref, so
/// values saved under a previously configured scope become inert rather than
/// shadowing the current regime.
enum PlayerSettingScope {
/// Never persist: the change applies for the session only.
off,
/// One value everywhere (the pre-existing behavior).
global,
/// One value per library (e.g. Anime4K for an anime library).
library,
/// One value per show or movie.
title,
}