Hide items in Calendar

When the user has hidden Manga or Anime or Novel, hide the buttons in the calendar.
This commit is contained in:
NBA2K1 2025-12-30 01:37:30 +01:00
parent ba77c5baea
commit a2a10a799d

View file

@ -7,6 +7,7 @@ import 'package:isar_community/isar.dart';
import 'package:mangayomi/models/chapter.dart'; import 'package:mangayomi/models/chapter.dart';
import 'package:mangayomi/models/manga.dart'; import 'package:mangayomi/models/manga.dart';
import 'package:mangayomi/modules/calendar/providers/calendar_provider.dart'; import 'package:mangayomi/modules/calendar/providers/calendar_provider.dart';
import 'package:mangayomi/modules/more/settings/reader/providers/reader_state_provider.dart';
import 'package:mangayomi/modules/widgets/custom_extended_image_provider.dart'; import 'package:mangayomi/modules/widgets/custom_extended_image_provider.dart';
import 'package:mangayomi/modules/widgets/custom_sliver_grouped_list_view.dart'; import 'package:mangayomi/modules/widgets/custom_sliver_grouped_list_view.dart';
import 'package:mangayomi/modules/widgets/progress_center.dart'; import 'package:mangayomi/modules/widgets/progress_center.dart';
@ -15,6 +16,8 @@ import 'package:mangayomi/utils/constant.dart';
import 'package:mangayomi/utils/date.dart'; import 'package:mangayomi/utils/date.dart';
import 'package:mangayomi/utils/extensions/build_context_extensions.dart'; import 'package:mangayomi/utils/extensions/build_context_extensions.dart';
import 'package:mangayomi/utils/headers.dart'; import 'package:mangayomi/utils/headers.dart';
import 'package:mangayomi/utils/item_type_filters.dart';
import 'package:mangayomi/utils/item_type_localization.dart';
import 'package:table_calendar/table_calendar.dart'; import 'package:table_calendar/table_calendar.dart';
class CalendarScreen extends ConsumerStatefulWidget { class CalendarScreen extends ConsumerStatefulWidget {
@ -36,12 +39,14 @@ class _CalendarScreenState extends ConsumerState<CalendarScreen> {
DateTime? _rangeStart; DateTime? _rangeStart;
DateTime? _rangeEnd; DateTime? _rangeEnd;
late ItemType? itemType = widget.itemType ?? ItemType.manga; late ItemType? itemType = widget.itemType ?? ItemType.manga;
late List<ItemType> _visibleTypes;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_selectedDay = _focusedDay; _selectedDay = _focusedDay;
_selectedEntries = ValueNotifier([]); _selectedEntries = ValueNotifier([]);
_visibleTypes = hiddenItemTypes(ref.read(hideItemsStateProvider));
} }
@override @override
@ -107,29 +112,15 @@ class _CalendarScreenState extends ConsumerState<CalendarScreen> {
borderRadius: BorderRadius.circular(50), borderRadius: BorderRadius.circular(50),
), ),
), ),
segments: [ segments: _visibleTypes.map((type) {
ButtonSegment( return ButtonSegment(
value: ItemType.manga.index, value: type.index,
label: Padding( label: Padding(
padding: const EdgeInsets.all(12), padding: const EdgeInsets.all(12),
child: Text(l10n.manga), child: Text(type.localized(l10n)),
), ),
), );
ButtonSegment( }).toList(),
value: ItemType.anime.index,
label: Padding(
padding: const EdgeInsets.all(12),
child: Text(l10n.anime),
),
),
ButtonSegment(
value: ItemType.novel.index,
label: Padding(
padding: const EdgeInsets.all(12),
child: Text(l10n.novel),
),
),
],
selected: {itemType?.index}, selected: {itemType?.index},
onSelectionChanged: (newSelection) { onSelectionChanged: (newSelection) {
if (newSelection.isNotEmpty && if (newSelection.isNotEmpty &&