summaryrefslogtreecommitdiff
path: root/lib/widgets
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrik@amftech.nl>2022-08-17 13:54:48 +0200
committerAldrik Ramaekers <aldrik@amftech.nl>2022-08-17 13:54:48 +0200
commit8ed1b574e8b5e9fc806aedc87af7aabcf73da6e6 (patch)
tree5126fb297b9df2829b6b34f966f615183b4c73af /lib/widgets
parent3d25fdc99fd37f3b5e37f25b7a38804a02130426 (diff)
b0.2
Diffstat (limited to 'lib/widgets')
-rw-r--r--lib/widgets/agenda_week.dart14
-rw-r--r--lib/widgets/agenda_week_item.dart68
2 files changed, 54 insertions, 28 deletions
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<AgendaWeek> {
List<Widget> weekItems = [];
+ StreamSubscription? eventbusSubscription;
void updateItems() {
setState(() {
@@ -58,6 +62,16 @@ class _AgendaWeekState extends State<AgendaWeek> {
void initState() {
super.initState();
updateItems();
+
+ eventbusSubscription = eventBus.on<RefreshWeekEvent>().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<AgendaWeekItem> {
}
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<AgendaWeekItem> {
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<AgendaWeekItem> {
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<AgendaWeekItem> {
},
);
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<AgendaWeekItem> {
),
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(