mirror of
https://github.com/JustinZeus/Wholphin.git
synced 2026-07-08 15:50:16 +02:00
The three v1 free sliders (UI scale, Card size, Spacing) become two discrete enum-based controls (Card size, Spacing) and a new Text size control, each selecting one of four DisplaySizeLevel values (Extra small / Small / Default / Large). UI scale is dropped entirely; the density override at the MainContent root goes with it. Proto: replaces ui_scale_percent / card_size_percent / spacing_percent with text_size_level / card_size_level / spacing_level on InterfacePreferences. DisplaySizeLevel enum is ordered DEFAULT = 0 so proto-zero-default lands new installs and any unset upgrader on DEFAULT for free; no upgrade-reset block needed, no serializer default-setting needed. AppPreference UiScale / CardSize / Spacing slider objects become three AppChoicePreference<AppPreferences, DisplaySizeLevel> entries (TextSize, CardSize, Spacing). DisplaySizeLevels.kt holds the user-facing display order and the three per-control percent-mapping extensions (textPercent / cardPercent / spacingPercent). InterfaceCustomization stores the three level fields and exposes cardSizePercent / spacingPercent as derived getters off the levels, so every consumer of cardHeightDp / episodeCardHeightDp / spacingDp stays unchanged. DisplaySizePage keeps the preview infrastructure (sample-item viewmodel, HomePageContent-based canvas, fake nav rail, two-column layout) and swaps the slider column for three ChoicePreference selectors bound to the new AppPreferences. The density-override wrap on the preview pane is removed. InterfaceHelpersTest withinBoundsOrDefault now exercises SkipForward since CardSize / Spacing are no longer AppSliderPreference. The two InterfaceCustomization scaling tests assert against cardSizeLevel = LARGE (116%) and spacingLevel = LARGE (125%).
241 lines
5.3 KiB
Protocol Buffer
241 lines
5.3 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
option java_package = "com.github.damontecres.wholphin.preferences";
|
|
option java_multiple_files = true;
|
|
|
|
enum ShowNextUpWhen{
|
|
END_OF_PLAYBACK = 0;
|
|
DURING_CREDITS = 1;
|
|
NEXT_UP_NEVER = 2;
|
|
}
|
|
|
|
enum SkipSegmentBehavior{
|
|
IGNORE = 0;
|
|
AUTO_SKIP = 1;
|
|
ASK_TO_SKIP = 2;
|
|
}
|
|
|
|
enum PrefContentScale{
|
|
FIT = 0;
|
|
NONE = 1;
|
|
CROP = 2;
|
|
FILL = 3;
|
|
Fill_WIDTH = 4;
|
|
FILL_HEIGHT = 5;
|
|
}
|
|
|
|
enum MediaExtensionStatus{
|
|
MES_FALLBACK = 0;
|
|
MES_PREFERRED = 1;
|
|
MES_DISABLED = 2;
|
|
}
|
|
|
|
enum PlayerBackend{
|
|
EXO_PLAYER = 0;
|
|
MPV = 1;
|
|
PREFER_MPV = 2;
|
|
EXTERNAL_PLAYER = 3;
|
|
}
|
|
|
|
message MpvOptions{
|
|
bool enable_hardware_decoding = 1;
|
|
bool use_gpu_next = 2;
|
|
}
|
|
|
|
enum AssPlaybackMode{
|
|
ASS_LIBASS = 0;
|
|
ASS_EXO_PLAYER = 1;
|
|
ASS_TRANSCODE = 2;
|
|
}
|
|
|
|
message PlaybackOverrides{
|
|
bool ac3_supported = 1;
|
|
bool downmix_stereo = 2;
|
|
bool direct_play_ass = 3 [deprecated = true];
|
|
bool direct_play_pgs = 4;
|
|
MediaExtensionStatus media_extensions_enabled = 5;
|
|
bool direct_play_dolby_vision_e_l = 6;
|
|
bool decode_av1 = 7;
|
|
AssPlaybackMode ass_playback_mode = 8;
|
|
}
|
|
|
|
message PlaybackPreferences {
|
|
int64 skip_forward_ms = 1;
|
|
int64 skip_back_ms = 2;
|
|
int64 controller_timeout_ms = 3;
|
|
int32 seek_bar_steps = 4;
|
|
bool show_debug_info = 5;
|
|
bool auto_play_next = 6;
|
|
int64 auto_play_next_delay_seconds = 7;
|
|
int64 skip_back_on_resume_seconds = 8;
|
|
int64 max_bitrate = 9;
|
|
|
|
SkipSegmentBehavior skip_intros = 10;
|
|
SkipSegmentBehavior skip_outros = 11;
|
|
SkipSegmentBehavior skip_commercials = 12;
|
|
SkipSegmentBehavior skip_recaps = 13;
|
|
SkipSegmentBehavior skip_previews = 14;
|
|
|
|
PlaybackOverrides overrides = 15;
|
|
int64 pass_out_protection_ms = 16;
|
|
PrefContentScale global_content_scale = 17;
|
|
ShowNextUpWhen show_next_up_when = 18;
|
|
bool one_click_pause = 19;
|
|
PlayerBackend player_backend = 20;
|
|
MpvOptions mpv_options = 21;
|
|
bool refresh_rate_switching = 22;
|
|
bool resolution_switching = 23;
|
|
string external_player = 24;
|
|
bool cinema_mode = 25;
|
|
}
|
|
|
|
message HomePagePreferences{
|
|
int32 max_items_per_row = 1;
|
|
bool enable_rewatching_next_up = 2;
|
|
bool combine_continue_next = 3 [deprecated = true];
|
|
int32 max_days_next_up = 4;
|
|
bool click_to_play = 5;
|
|
}
|
|
|
|
enum ThemeSongVolume {
|
|
DISABLED = 0;
|
|
LOWEST = 1;
|
|
LOW = 2;
|
|
MEDIUM = 3;
|
|
HIGH = 4;
|
|
HIGHEST = 5;
|
|
}
|
|
|
|
enum AppThemeColors {
|
|
PURPLE = 0;
|
|
BLUE = 1;
|
|
GREEN = 2;
|
|
ORANGE = 3;
|
|
BOLD_BLUE = 4;
|
|
OLED_BLACK = 5;
|
|
}
|
|
|
|
enum EdgeStyle{
|
|
EDGE_NONE = 0;
|
|
EDGE_SOLID = 1;
|
|
EDGE_SHADOW = 2;
|
|
}
|
|
|
|
enum BackgroundStyle{
|
|
BG_NONE = 0;
|
|
BG_WRAP = 1;
|
|
BG_BOXED = 2;
|
|
}
|
|
|
|
message SubtitlePreferences{
|
|
int32 font_size = 1;
|
|
int32 font_color = 2;
|
|
int32 font_opacity = 3;
|
|
int32 edge_color = 4;
|
|
EdgeStyle edge_style = 5;
|
|
int32 background_color = 6;
|
|
int32 background_opacity = 7;
|
|
BackgroundStyle background_style = 8;
|
|
bool font_bold = 9;
|
|
bool font_italic = 10;
|
|
int32 margin = 11;
|
|
int32 edge_thickness = 12;
|
|
int32 image_subtitle_opacity = 13;
|
|
}
|
|
|
|
message LiveTvPreferences {
|
|
bool show_header = 1;
|
|
bool favorite_channels_at_beginning = 2;
|
|
bool sort_by_recently_watched = 3;
|
|
bool color_code_programs = 4;
|
|
}
|
|
|
|
enum BackdropStyle{
|
|
BACKDROP_DYNAMIC_COLOR = 0;
|
|
BACKDROP_IMAGE_ONLY = 1;
|
|
BACKDROP_NONE = 2;
|
|
}
|
|
|
|
message ScreensaverPreferences{
|
|
int64 start_delay = 1;
|
|
int64 duration = 2;
|
|
bool animate = 3;
|
|
int32 max_age_filter = 4;
|
|
bool enabled = 5;
|
|
repeated string item_types = 6;
|
|
bool show_clock = 7;
|
|
}
|
|
|
|
message SearchPreferences {
|
|
bool combined_search_results = 1;
|
|
bool show_voice_search_button = 2;
|
|
}
|
|
|
|
enum DisplayToggle{
|
|
OFFICIAL_RATING = 0;
|
|
CRITIC_RATING = 1;
|
|
COMMUNITY_RATING = 2;
|
|
}
|
|
|
|
enum DisplaySizeLevel{
|
|
DEFAULT = 0;
|
|
EXTRA_SMALL = 1;
|
|
SMALL = 2;
|
|
LARGE = 3;
|
|
}
|
|
|
|
message InterfacePreferences {
|
|
ThemeSongVolume play_theme_songs = 1;
|
|
bool remember_selected_tab = 2;
|
|
map<string, int32> remembered_tabs = 3;
|
|
AppThemeColors app_theme_colors = 4;
|
|
bool nav_drawer_switch_on_focus = 5;
|
|
bool show_clock = 6;
|
|
SubtitlePreferences subtitles_preferences = 7;
|
|
LiveTvPreferences live_tv_preferences = 8;
|
|
BackdropStyle backdrop_style = 9;
|
|
SubtitlePreferences hdr_subtitles_preferences = 10;
|
|
ScreensaverPreferences screensaver_preference = 11;
|
|
bool enable_media_management = 12;
|
|
bool show_logos = 13;
|
|
SearchPreferences search_preferences = 14;
|
|
repeated DisplayToggle display_toggles = 15;
|
|
DisplaySizeLevel text_size_level = 19;
|
|
DisplaySizeLevel card_size_level = 20;
|
|
DisplaySizeLevel spacing_level = 21;
|
|
}
|
|
|
|
message AdvancedPreferences {
|
|
int64 image_disk_cache_size_bytes = 1;
|
|
}
|
|
|
|
message PhotoPreferences{
|
|
int64 slideshow_duration = 1;
|
|
bool slideshow_play_videos = 2;
|
|
}
|
|
|
|
message MusicPreferences {
|
|
bool show_lyrics = 1;
|
|
bool show_visualizer = 2;
|
|
bool show_album_Art = 3;
|
|
bool show_backdrop = 4;
|
|
}
|
|
|
|
message AppPreferences {
|
|
// The currently signed in server and user IDs, mostly for restoring a session
|
|
string current_server_id = 1;
|
|
string current_user_id = 2;
|
|
|
|
PlaybackPreferences playback_preferences = 3;
|
|
HomePagePreferences home_page_preferences = 4;
|
|
InterfacePreferences interface_preferences = 5;
|
|
|
|
bool auto_check_for_updates = 6;
|
|
string update_url = 7;
|
|
bool send_crash_reports = 8;
|
|
bool debug_logging = 9;
|
|
AdvancedPreferences advanced_preferences = 10;
|
|
bool sign_in_automatically = 11;
|
|
PhotoPreferences photo_preferences = 12;
|
|
MusicPreferences music_preferences = 13;
|
|
}
|