mirror of
https://github.com/gabehf/Fladder.git
synced 2026-03-07 21:48:14 -08:00
feat: Android TV support (#503)
Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
This commit is contained in:
parent
7ab8c015b9
commit
c299492d6d
168 changed files with 12019 additions and 3073 deletions
|
|
@ -8,12 +8,14 @@ abstract class ArgumentsModel with _$ArgumentsModel {
|
|||
|
||||
factory ArgumentsModel({
|
||||
@Default(false) bool htpcMode,
|
||||
@Default(false) bool leanBackMode,
|
||||
}) = _ArgumentsModel;
|
||||
|
||||
factory ArgumentsModel.fromArguments(List<String> arguments) {
|
||||
factory ArgumentsModel.fromArguments(List<String> arguments, bool leanBackEnabled) {
|
||||
arguments = arguments.map((e) => e.trim()).toList();
|
||||
return ArgumentsModel(
|
||||
htpcMode: arguments.contains('--htpc'),
|
||||
htpcMode: arguments.contains('--htpc') || leanBackEnabled,
|
||||
leanBackMode: leanBackEnabled,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,10 +15,11 @@ T _$identity<T>(T value) => value;
|
|||
/// @nodoc
|
||||
mixin _$ArgumentsModel {
|
||||
bool get htpcMode;
|
||||
bool get leanBackMode;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'ArgumentsModel(htpcMode: $htpcMode)';
|
||||
return 'ArgumentsModel(htpcMode: $htpcMode, leanBackMode: $leanBackMode)';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -115,13 +116,13 @@ extension ArgumentsModelPatterns on ArgumentsModel {
|
|||
|
||||
@optionalTypeArgs
|
||||
TResult maybeWhen<TResult extends Object?>(
|
||||
TResult Function(bool htpcMode)? $default, {
|
||||
TResult Function(bool htpcMode, bool leanBackMode)? $default, {
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _ArgumentsModel() when $default != null:
|
||||
return $default(_that.htpcMode);
|
||||
return $default(_that.htpcMode, _that.leanBackMode);
|
||||
case _:
|
||||
return orElse();
|
||||
}
|
||||
|
|
@ -142,12 +143,12 @@ extension ArgumentsModelPatterns on ArgumentsModel {
|
|||
|
||||
@optionalTypeArgs
|
||||
TResult when<TResult extends Object?>(
|
||||
TResult Function(bool htpcMode) $default,
|
||||
TResult Function(bool htpcMode, bool leanBackMode) $default,
|
||||
) {
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _ArgumentsModel():
|
||||
return $default(_that.htpcMode);
|
||||
return $default(_that.htpcMode, _that.leanBackMode);
|
||||
case _:
|
||||
throw StateError('Unexpected subclass');
|
||||
}
|
||||
|
|
@ -167,12 +168,12 @@ extension ArgumentsModelPatterns on ArgumentsModel {
|
|||
|
||||
@optionalTypeArgs
|
||||
TResult? whenOrNull<TResult extends Object?>(
|
||||
TResult? Function(bool htpcMode)? $default,
|
||||
TResult? Function(bool htpcMode, bool leanBackMode)? $default,
|
||||
) {
|
||||
final _that = this;
|
||||
switch (_that) {
|
||||
case _ArgumentsModel() when $default != null:
|
||||
return $default(_that.htpcMode);
|
||||
return $default(_that.htpcMode, _that.leanBackMode);
|
||||
case _:
|
||||
return null;
|
||||
}
|
||||
|
|
@ -182,15 +183,19 @@ extension ArgumentsModelPatterns on ArgumentsModel {
|
|||
/// @nodoc
|
||||
|
||||
class _ArgumentsModel extends ArgumentsModel {
|
||||
_ArgumentsModel({this.htpcMode = false}) : super._();
|
||||
_ArgumentsModel({this.htpcMode = false, this.leanBackMode = false})
|
||||
: super._();
|
||||
|
||||
@override
|
||||
@JsonKey()
|
||||
final bool htpcMode;
|
||||
@override
|
||||
@JsonKey()
|
||||
final bool leanBackMode;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'ArgumentsModel(htpcMode: $htpcMode)';
|
||||
return 'ArgumentsModel(htpcMode: $htpcMode, leanBackMode: $leanBackMode)';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,8 @@ T selectAvailableOrSmaller<T>(T value, Set<T> availableOptions, List<T> allOptio
|
|||
enum HomeBanner {
|
||||
hide,
|
||||
carousel,
|
||||
banner;
|
||||
banner,
|
||||
detailedBanner;
|
||||
|
||||
const HomeBanner();
|
||||
|
||||
|
|
@ -48,6 +49,7 @@ enum HomeBanner {
|
|||
HomeBanner.hide => context.localized.hide,
|
||||
HomeBanner.carousel => context.localized.homeBannerCarousel,
|
||||
HomeBanner.banner => context.localized.homeBannerSlideshow,
|
||||
HomeBanner.detailedBanner => 'Detailed banner'
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,12 +47,14 @@ const _$ViewSizeEnumMap = {
|
|||
ViewSize.phone: 'phone',
|
||||
ViewSize.tablet: 'tablet',
|
||||
ViewSize.desktop: 'desktop',
|
||||
ViewSize.television: 'television',
|
||||
};
|
||||
|
||||
const _$HomeBannerEnumMap = {
|
||||
HomeBanner.hide: 'hide',
|
||||
HomeBanner.carousel: 'carousel',
|
||||
HomeBanner.banner: 'banner',
|
||||
HomeBanner.detailedBanner: 'detailedBanner',
|
||||
};
|
||||
|
||||
const _$HomeCarouselSettingsEnumMap = {
|
||||
|
|
|
|||
|
|
@ -127,11 +127,17 @@ abstract class VideoPlayerSettingsModel with _$VideoPlayerSettingsModel {
|
|||
|
||||
enum PlayerOptions {
|
||||
libMDK,
|
||||
libMPV;
|
||||
libMPV,
|
||||
nativePlayer;
|
||||
|
||||
const PlayerOptions();
|
||||
|
||||
static Iterable<PlayerOptions> get available => kIsWeb ? {PlayerOptions.libMPV} : PlayerOptions.values;
|
||||
static Iterable<PlayerOptions> get available => kIsWeb
|
||||
? {PlayerOptions.libMPV}
|
||||
: switch (defaultTargetPlatform) {
|
||||
TargetPlatform.android => PlayerOptions.values,
|
||||
_ => {PlayerOptions.libMDK, PlayerOptions.libMPV},
|
||||
};
|
||||
|
||||
static PlayerOptions get platformDefaults {
|
||||
if (kIsWeb) return PlayerOptions.libMPV;
|
||||
|
|
@ -143,6 +149,7 @@ enum PlayerOptions {
|
|||
String label(BuildContext context) => switch (this) {
|
||||
PlayerOptions.libMDK => "MDK",
|
||||
PlayerOptions.libMPV => "MPV",
|
||||
PlayerOptions.nativePlayer => "Native",
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@ const _$BoxFitEnumMap = {
|
|||
const _$PlayerOptionsEnumMap = {
|
||||
PlayerOptions.libMDK: 'libMDK',
|
||||
PlayerOptions.libMPV: 'libMPV',
|
||||
PlayerOptions.nativePlayer: 'nativePlayer',
|
||||
};
|
||||
|
||||
const _$DeviceOrientationEnumMap = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue