Files
plezy/lib/widgets/video_controls/models/track_controls_state.dart
T

76 lines
2.4 KiB
Dart

import 'package:flutter/material.dart';
import '../../../models/plex_media_version.dart';
import '../../../models/plex_metadata.dart';
import '../../../mpv/mpv.dart';
import '../../../services/shader_service.dart';
/// Immutable configuration for track/chapter control widgets.
class TrackControlsState {
final List<PlexMediaVersion> availableVersions;
final int selectedMediaIndex;
final int boxFitMode;
final int audioSyncOffset;
final int subtitleSyncOffset;
final bool isRotationLocked;
final bool isFullscreen;
final bool isAlwaysOnTop;
final VoidCallback? onTogglePIPMode;
final VoidCallback? onCycleBoxFitMode;
final VoidCallback? onToggleRotationLock;
final VoidCallback? onToggleFullscreen;
final VoidCallback? onToggleAlwaysOnTop;
final Function(int)? onSwitchVersion;
final Function(AudioTrack)? onAudioTrackChanged;
final Function(SubtitleTrack)? onSubtitleTrackChanged;
final Function(SubtitleTrack)? onSecondarySubtitleTrackChanged;
final VoidCallback? onLoadSeekTimes;
final VoidCallback? onCancelAutoHide;
final VoidCallback? onStartAutoHide;
final void Function(String propertyName, int offset)? onSyncOffsetChanged;
final String serverId;
final ShaderService? shaderService;
final VoidCallback? onShaderChanged;
final bool isAmbientLightingEnabled;
final VoidCallback? onToggleAmbientLighting;
final bool canControl;
final bool isLive;
final bool subtitlesVisible;
final bool showQueueButton;
final Function(PlexMetadata)? onQueueItemSelected;
const TrackControlsState({
this.availableVersions = const [],
this.selectedMediaIndex = 0,
this.boxFitMode = 0,
this.audioSyncOffset = 0,
this.subtitleSyncOffset = 0,
this.isRotationLocked = false,
this.isFullscreen = false,
this.isAlwaysOnTop = false,
this.onTogglePIPMode,
this.onCycleBoxFitMode,
this.onToggleRotationLock,
this.onToggleFullscreen,
this.onToggleAlwaysOnTop,
this.onSwitchVersion,
this.onAudioTrackChanged,
this.onSubtitleTrackChanged,
this.onSecondarySubtitleTrackChanged,
this.onLoadSeekTimes,
this.onCancelAutoHide,
this.onStartAutoHide,
this.onSyncOffsetChanged,
this.serverId = '',
this.shaderService,
this.onShaderChanged,
this.isAmbientLightingEnabled = false,
this.onToggleAmbientLighting,
this.canControl = true,
this.isLive = false,
this.subtitlesVisible = true,
this.showQueueButton = false,
this.onQueueItemSelected,
});
}