From a8e7fb1ec66623dc722716582efb6bdb0e465c44 Mon Sep 17 00:00:00 2001 From: Julien9969 <89881833+Julien9969@users.noreply.github.com> Date: Sat, 13 Sep 2025 14:27:45 +0200 Subject: [PATCH 1/3] feat: remove the unwatched orange dot and show watched (#485) --- .../shared/media/components/poster_image.dart | 20 +++---------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/lib/screens/shared/media/components/poster_image.dart b/lib/screens/shared/media/components/poster_image.dart index e724df3..3e41267 100644 --- a/lib/screens/shared/media/components/poster_image.dart +++ b/lib/screens/shared/media/components/poster_image.dart @@ -1,3 +1,4 @@ +import 'package:fladder/models/items/movie_model.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; @@ -200,22 +201,6 @@ class _PosterImageState extends ConsumerState { ], ), ), - if (widget.poster.unWatched) - Align( - alignment: Alignment.topLeft, - child: StatusCard( - color: Colors.amber, - child: Padding( - padding: const EdgeInsets.all(10), - child: Container( - decoration: const BoxDecoration( - shape: BoxShape.circle, - color: Colors.amber, - ), - ), - ), - ), - ), if (widget.inlineTitle) IgnorePointer( child: Align( @@ -230,7 +215,8 @@ class _PosterImageState extends ConsumerState { ), ), ), - if (widget.poster.unPlayedItemCount != null && widget.poster is SeriesModel) + if ((widget.poster.unPlayedItemCount != null && widget.poster is SeriesModel) + || (widget.poster is MovieModel && !widget.poster.unWatched)) IgnorePointer( child: Align( alignment: Alignment.topRight, From a711e133a4a2898c4446735b06ed06bcb8c42633 Mon Sep 17 00:00:00 2001 From: Julien9969 <89881833+Julien9969@users.noreply.github.com> Date: Sat, 13 Sep 2025 14:45:30 +0200 Subject: [PATCH 2/3] fix: Nested hero widget in widget video_player_next_wrapper (#483) --- lib/widgets/shared/progress_floating_button.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/widgets/shared/progress_floating_button.dart b/lib/widgets/shared/progress_floating_button.dart index 77df98a..306a09c 100644 --- a/lib/widgets/shared/progress_floating_button.dart +++ b/lib/widgets/shared/progress_floating_button.dart @@ -158,7 +158,7 @@ class _ProgressFloatingButtonState extends ConsumerState } : null, child: FloatingActionButton( - heroTag: "Progress_Floating_Button", + heroTag: null, onPressed: isActive ? timer.cancel : timer.play, child: Stack( fit: StackFit.expand, From 9c31542c95d3d4cf68a6ff88ff250b8ef33df6ed Mon Sep 17 00:00:00 2001 From: Julien9969 <89881833+Julien9969@users.noreply.github.com> Date: Mon, 15 Sep 2025 21:04:08 +0200 Subject: [PATCH 3/3] feat: make shortcuts list collapsible (#482) Co-authored-by: PartyDonut --- lib/l10n/app_en.arb | 1 + .../settings/player_settings_page.dart | 51 +++++++++++-------- lib/theme.dart | 6 ++- 3 files changed, 35 insertions(+), 23 deletions(-) diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 9d39506..965a85b 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -1294,6 +1294,7 @@ "usePostersForLibraryIconsDesc": "Show posters instead of icons for libraries", "offline": "Offline", "shortCuts": "Shortcuts", + "keyboardShortCuts": "Keyboard shortcuts", "skipForwardLength": "Skip forward length", "skipBackLength": "Skip back length", "playPause": "Play/Pause", diff --git a/lib/screens/settings/player_settings_page.dart b/lib/screens/settings/player_settings_page.dart index c8d3fae..13b0a3c 100644 --- a/lib/screens/settings/player_settings_page.dart +++ b/lib/screens/settings/player_settings_page.dart @@ -206,29 +206,36 @@ class _PlayerSettingsPageState extends ConsumerState { )), ), if (AdaptiveLayout.inputDeviceOf(context) == InputDevice.pointer) - ...VideoHotKeys.values.map( - (entry) => Padding( - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), - child: Row( - children: [ - Expanded( - child: Text( - entry.label(context), - style: Theme.of(context).textTheme.titleLarge, - ), - ), - Flexible( - child: KeyCombinationWidget( - currentKey: videoSettings.hotKeys[entry], - defaultKey: videoSettings.defaultShortCuts[entry]!, - onChanged: (value) => - ref.read(videoPlayerSettingsProvider.notifier).setShortcuts(MapEntry(entry, value)), - ), - ) - ], - ), + ExpansionTile( + title: Text( + context.localized.keyboardShortCuts, + style: Theme.of(context).textTheme.titleLarge, ), - ) + children: VideoHotKeys.values.map( + (entry) => Padding( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + child: Row( + children: [ + Expanded( + child: Text( + entry.label(context), + style: Theme.of(context).textTheme.titleMedium, + ), + ), + Flexible( + child: KeyCombinationWidget( + currentKey: videoSettings.hotKeys[entry], + defaultKey: videoSettings.defaultShortCuts[entry]!, + onChanged: (value) => ref + .read(videoPlayerSettingsProvider.notifier) + .setShortcuts(MapEntry(entry, value)), + ), + ), + ], + ), + ), + ).toList(), + ), ], ), const SizedBox(height: 12), diff --git a/lib/theme.dart b/lib/theme.dart index 5b390af..a50d2d6 100644 --- a/lib/theme.dart +++ b/lib/theme.dart @@ -53,6 +53,10 @@ class FladderTheme { margin: EdgeInsets.zero, shape: smallShape, ), + expansionTileTheme: ExpansionTileThemeData( + shape: RoundedRectangleBorder(borderRadius: FladderTheme.defaultShape.borderRadius), + collapsedShape: RoundedRectangleBorder(borderRadius: FladderTheme.defaultShape.borderRadius), + ), progressIndicatorTheme: const ProgressIndicatorThemeData(), floatingActionButtonTheme: FloatingActionButtonThemeData( backgroundColor: scheme?.secondaryContainer, @@ -62,7 +66,7 @@ class FladderTheme { snackBarTheme: SnackBarThemeData( backgroundColor: scheme?.secondary, behavior: SnackBarBehavior.fixed, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), + shape: RoundedRectangleBorder(borderRadius: FladderTheme.defaultShape.borderRadius), elevation: 5, dismissDirection: DismissDirection.horizontal, ),