diff --git a/em2rp/lib/views/calendar_page.dart b/em2rp/lib/views/calendar_page.dart index 57a1c7c..b83da6a 100644 --- a/em2rp/lib/views/calendar_page.dart +++ b/em2rp/lib/views/calendar_page.dart @@ -149,6 +149,7 @@ class _CalendarPageState extends State { onEventSelected: (event) { setState(() { _selectedEvent = event; + _selectedDay = event.startDateTime; }); }, onSwitchToMonth: () { @@ -156,6 +157,33 @@ class _CalendarPageState extends State { _calendarFormat = CalendarFormat.month; }); }, + onDaySelected: (selectedDay) { + final eventsForDay = eventProvider.events + .where((e) => + e.startDateTime.year == selectedDay.year && + e.startDateTime.month == selectedDay.month && + e.startDateTime.day == selectedDay.day) + .toList(); + eventsForDay + .sort((a, b) => a.startDateTime.compareTo(b.startDateTime)); + setState(() { + _selectedDay = selectedDay; + if (eventsForDay.isNotEmpty) { + _selectedEvent = eventsForDay.first; + } else { + _selectedEvent = null; + } + }); + if (eventsForDay.isEmpty) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text("Aucun événement ne démarre à cette date."), + duration: Duration(seconds: 2), + ), + ); + } + }, + selectedEvent: _selectedEvent, ); } else { return MonthView( diff --git a/em2rp/lib/views/widgets/calendar_widgets/week_view.dart b/em2rp/lib/views/widgets/calendar_widgets/week_view.dart index 143d5e5..d87c8a5 100644 --- a/em2rp/lib/views/widgets/calendar_widgets/week_view.dart +++ b/em2rp/lib/views/widgets/calendar_widgets/week_view.dart @@ -9,6 +9,8 @@ class WeekView extends StatelessWidget { final Function(int) onWeekChange; final Function(EventModel) onEventSelected; final Function() onSwitchToMonth; + final Function(DateTime) onDaySelected; + final EventModel? selectedEvent; const WeekView({ super.key, @@ -17,6 +19,8 @@ class WeekView extends StatelessWidget { required this.onWeekChange, required this.onEventSelected, required this.onSwitchToMonth, + required this.onDaySelected, + required this.selectedEvent, }); @override @@ -253,6 +257,8 @@ class WeekView extends StatelessWidget { final endHour = e.end.hour + e.end.minute / 60; final duration = endHour - startHour; final width = dayWidth / e.totalColumns; + final isSelected = + selectedEvent != null && e.event.id == selectedEvent!.id; return Positioned( left: dayIdx * dayWidth + e.column * width, @@ -265,8 +271,13 @@ class WeekView extends StatelessWidget { margin: const EdgeInsets.all(2), padding: const EdgeInsets.all(4), decoration: BoxDecoration( - color: AppColors.rouge.withAlpha(26), - border: Border.all(color: AppColors.rouge), + color: isSelected + ? AppColors.rouge.withAlpha(80) + : AppColors.rouge.withAlpha(26), + border: Border.all( + color: AppColors.rouge, + width: isSelected ? 3 : 1, + ), borderRadius: BorderRadius.circular(4), ), child: Column(