import 'package:flutter/material.dart' show ListTile; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/models/database/database.dart'; import 'package:spotube/modules/settings/section_card_with_heading.dart'; import 'package:spotube/components/adaptive/adaptive_select_tile.dart'; import 'package:spotube/extensions/context.dart'; import 'package:spotube/provider/user_preferences/user_preferences_provider.dart'; class SettingsDesktopSection extends HookConsumerWidget { const SettingsDesktopSection({super.key}); @override Widget build(BuildContext context, ref) { final preferences = ref.watch(userPreferencesProvider); final preferencesNotifier = ref.watch(userPreferencesProvider.notifier); return SectionCardWithHeading( heading: context.l10n.desktop, children: [ const Gap(10), AdaptiveSelectTile( secondary: const Icon(SpotubeIcons.close), title: Text(context.l10n.close_behavior), value: preferences.closeBehavior, options: [ SelectItemButton( value: CloseBehavior.close, child: Text(context.l10n.close), ), SelectItemButton( value: CloseBehavior.minimizeToTray, child: Text(context.l10n.minimize_to_tray), ), ], onChanged: (value) { if (value != null) { preferencesNotifier.setCloseBehavior(value); } }, ), ListTile( leading: const Icon(SpotubeIcons.tray), title: Text(context.l10n.show_tray_icon), trailing: Switch( value: preferences.showSystemTrayIcon, onChanged: preferencesNotifier.setShowSystemTrayIcon, ), ), ListTile( leading: const Icon(SpotubeIcons.window), title: Text(context.l10n.use_system_title_bar), trailing: Switch( value: preferences.systemTitleBar, onChanged: preferencesNotifier.setSystemTitleBar, ), ), ListTile( leading: const Icon(SpotubeIcons.discord), title: Text(context.l10n.discord_rich_presence), trailing: Switch( value: preferences.discordPresence, onChanged: preferencesNotifier.setDiscordPresence, ), ), ], ); } }