From 8ed1b574e8b5e9fc806aedc87af7aabcf73da6e6 Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Wed, 17 Aug 2022 13:54:48 +0200 Subject: b0.2 --- lib/widgets/agenda_week.dart | 14 ++++++++ lib/widgets/agenda_week_item.dart | 68 +++++++++++++++++++++++---------------- 2 files changed, 54 insertions(+), 28 deletions(-) (limited to 'lib/widgets') diff --git a/lib/widgets/agenda_week.dart b/lib/widgets/agenda_week.dart index 543e0ff..a8f9350 100644 --- a/lib/widgets/agenda_week.dart +++ b/lib/widgets/agenda_week.dart @@ -1,4 +1,7 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; +import 'package:training_planner/events/RefreshWeekEvent.dart'; import 'package:training_planner/main.dart'; import 'package:training_planner/shift.dart'; import 'package:training_planner/style/style.dart'; @@ -24,6 +27,7 @@ class AgendaWeek extends StatefulWidget { class _AgendaWeekState extends State { List weekItems = []; + StreamSubscription? eventbusSubscription; void updateItems() { setState(() { @@ -58,6 +62,16 @@ class _AgendaWeekState extends State { void initState() { super.initState(); updateItems(); + + eventbusSubscription = eventBus.on().listen((event) { + updateItems(); + }); + } + + @override + void dispose() { + eventbusSubscription?.cancel(); + super.dispose(); } @override diff --git a/lib/widgets/agenda_week_item.dart b/lib/widgets/agenda_week_item.dart index b74cabd..20d237b 100644 --- a/lib/widgets/agenda_week_item.dart +++ b/lib/widgets/agenda_week_item.dart @@ -150,6 +150,10 @@ class _ExerciseEntryState extends State { } Future requestStartAndEndTimeForShift() async { + bool alsoAskForEndTime = + widget.shift.getShiftStatus() == ShiftStatus.OldOpen || + widget.shift.getShiftStatus() == ShiftStatus.Closed; + final TimeOfDay? startTime = await showTimePicker( context: context, helpText: 'Begin tijd', @@ -162,17 +166,26 @@ class _ExerciseEntryState extends State { return; } - final TimeOfDay? endTime = await showTimePicker( - context: context, - helpText: 'Eind tijd', - initialTime: TimeOfDay( - hour: widget.shift.expectedEndTime().hour, - minute: widget.shift.expectedEndTime().minute), - initialEntryMode: TimePickerEntryMode.input, - ); + if (alsoAskForEndTime) { + final TimeOfDay? endTime = await showTimePicker( + context: context, + helpText: 'Eind tijd', + initialTime: TimeOfDay( + hour: widget.shift.expectedEndTime().hour, + minute: widget.shift.expectedEndTime().minute), + initialEntryMode: TimePickerEntryMode.input, + ); + + if (endTime == null) { + return; + } - if (endTime == null) { - return; + widget.shift.end = DateTime( + widget.shift.start.year, + widget.shift.start.month, + widget.shift.start.day, + endTime.hour, + endTime.minute); } widget.shift.start = DateTime( @@ -182,13 +195,6 @@ class _ExerciseEntryState extends State { startTime.hour, startTime.minute); - widget.shift.end = DateTime( - widget.shift.start.year, - widget.shift.start.month, - widget.shift.start.day, - endTime.hour, - endTime.minute); - await shiftProvider.updateShift(widget.shift); } @@ -229,7 +235,7 @@ class _ExerciseEntryState extends State { }, ); Widget continueButton = FlatButton( - child: Text("Verwijder"), + child: Text("Verwijderen"), onPressed: () async { await shiftProvider.deleteShift(widget.shift); Navigator.pop(context); @@ -325,18 +331,24 @@ class _ExerciseEntryState extends State { ), width: widthOfWeekday, ), - Container( - child: RichText( - text: TextSpan( - style: TextStyle(color: Colors.black), - children: [ - TextSpan(text: ' | ' + shiftTime), - TextSpan( - text: shiftTimeEnd, style: endDateTextStyle) - ], + GestureDetector( + onLongPress: () { + requestStartAndEndTimeForShift() + .then((e) => {setState(() {})}); + }, + child: Container( + child: RichText( + text: TextSpan( + style: TextStyle(color: Colors.black), + children: [ + TextSpan(text: ' | ' + shiftTime), + TextSpan( + text: shiftTimeEnd, style: endDateTextStyle) + ], + ), ), + width: widthOfDates, ), - width: widthOfDates, ), Container( child: Text( -- cgit v1.2.3-70-g09d2