From c285187973fb5934f6223f83829586e9c2620e40 Mon Sep 17 00:00:00 2001 From: doodlezucc <electerminator@gmail.com> Date: Tue, 21 Nov 2023 14:00:13 +0100 Subject: [PATCH] adapt page title in room/lecture timetable views --- lib/pages/view_page.dart | 2 +- lib/timetable/lesson_chip_collection.dart | 6 +++--- lib/timetable/lesson_dialog.dart | 4 ++-- lib/views/lecture_view.dart | 6 +++++- lib/views/mixed_class_view.dart | 3 +++ lib/views/room_view.dart | 6 +++++- lib/views/single_element_view.dart | 5 +++-- lib/views/teacher_view.dart | 6 +++++- lib/views/view.dart | 2 ++ 9 files changed, 29 insertions(+), 11 deletions(-) diff --git a/lib/pages/view_page.dart b/lib/pages/view_page.dart index b969d9a..bf73dca 100644 --- a/lib/pages/view_page.dart +++ b/lib/pages/view_page.dart @@ -42,7 +42,7 @@ class _ViewPageState extends State<ViewPage> { Widget build(BuildContext context) { return Scaffold( appBar: AppBar( - title: const Text('View Page'), + title: Text(widget.view.viewPageTitle), ), body: Column( children: [ diff --git a/lib/timetable/lesson_chip_collection.dart b/lib/timetable/lesson_chip_collection.dart index ea55157..670876b 100644 --- a/lib/timetable/lesson_chip_collection.dart +++ b/lib/timetable/lesson_chip_collection.dart @@ -3,10 +3,10 @@ import 'package:flutter/material.dart'; import '../untis/element.dart'; import 'lesson_chip.dart'; -class LessonChipCollection extends StatelessWidget { +class LessonChipCollection<T extends UntisElement> extends StatelessWidget { final IconData icon; - final Iterable<UntisElement> elements; - final void Function(UntisElement element)? onChipTap; + final Iterable<T> elements; + final void Function(T element)? onChipTap; const LessonChipCollection( this.icon, diff --git a/lib/timetable/lesson_dialog.dart b/lib/timetable/lesson_dialog.dart index c873466..99f30ca 100644 --- a/lib/timetable/lesson_dialog.dart +++ b/lib/timetable/lesson_dialog.dart @@ -85,7 +85,7 @@ class _LessonDialogState extends State<LessonDialog> { child: LessonChipCollection( BrandingIcons.lecture, [lesson.lecture], - onChipTap: (e) => changeView(LectureView(lectureId: e.id)), + onChipTap: (e) => changeView(LectureView(lecture: e)), )), IconButton( onPressed: () { @@ -101,7 +101,7 @@ class _LessonDialogState extends State<LessonDialog> { LessonChipCollection( BrandingIcons.room, lesson.rooms, - onChipTap: (e) => changeView(RoomView(roomId: e.id)), + onChipTap: (e) => changeView(RoomView(room: e)), ), ], const Divider(), diff --git a/lib/views/lecture_view.dart b/lib/views/lecture_view.dart index bcd499f..f9eeeae 100644 --- a/lib/views/lecture_view.dart +++ b/lib/views/lecture_view.dart @@ -1,10 +1,14 @@ import '../untis/element_type.dart'; +import '../untis/lecture.dart'; import 'single_element_view.dart'; class LectureView extends SingleElementView { - LectureView({required int lectureId}) : super(elementId: lectureId); + LectureView({required Lecture lecture}) : super(element: lecture); @override ElementType get elementType => ElementType.lecture; + + @override + String get viewPageTitle => element.name; } diff --git a/lib/views/mixed_class_view.dart b/lib/views/mixed_class_view.dart index 57fd7d6..9d4badc 100644 --- a/lib/views/mixed_class_view.dart +++ b/lib/views/mixed_class_view.dart @@ -27,4 +27,7 @@ class MixedClassView extends TimetableView { return TimetableData.mergeAll(allTimetables); } + + @override + String get viewPageTitle => 'Mixed Classes'; } diff --git a/lib/views/room_view.dart b/lib/views/room_view.dart index 65612e1..f8976d9 100644 --- a/lib/views/room_view.dart +++ b/lib/views/room_view.dart @@ -1,10 +1,14 @@ import '../untis/element_type.dart'; +import '../untis/room.dart'; import 'single_element_view.dart'; class RoomView extends SingleElementView { - RoomView({required int roomId}) : super(elementId: roomId); + RoomView({required Room room}) : super(element: room); @override ElementType get elementType => ElementType.room; + + @override + String get viewPageTitle => 'Raum ${element.name}'; } diff --git a/lib/views/single_element_view.dart b/lib/views/single_element_view.dart index 100bdf9..2a2c26b 100644 --- a/lib/views/single_element_view.dart +++ b/lib/views/single_element_view.dart @@ -7,10 +7,11 @@ import 'dart:async'; import 'view.dart'; abstract class SingleElementView<T extends UntisElement> extends TimetableView { - final int elementId; + final T element; - SingleElementView({required this.elementId}); + SingleElementView({required this.element}); + int get elementId => element.id; ElementType get elementType; @override diff --git a/lib/views/teacher_view.dart b/lib/views/teacher_view.dart index 10cfaef..e77c13b 100644 --- a/lib/views/teacher_view.dart +++ b/lib/views/teacher_view.dart @@ -1,11 +1,15 @@ import '../untis/element_type.dart'; +import '../untis/teacher.dart'; import 'single_element_view.dart'; @Deprecated('Only logged in users can see teacher timetables') class TeacherView extends SingleElementView { - TeacherView({required int teacherId}) : super(elementId: teacherId); + TeacherView({required Teacher teacher}) : super(element: teacher); @override ElementType get elementType => ElementType.teacher; + + @override + String get viewPageTitle => element.name; } diff --git a/lib/views/view.dart b/lib/views/view.dart index ae9a464..3ec36ad 100644 --- a/lib/views/view.dart +++ b/lib/views/view.dart @@ -4,6 +4,8 @@ import '../untis/fetch.dart'; import '../untis/timetable.dart'; abstract class TimetableView { + String get viewPageTitle; + FutureOr<TimetableData?> timetableOf( DateTime date, { required UntisFetch untis, -- GitLab