diff --git a/lib/pages/view_page.dart b/lib/pages/view_page.dart index b969d9a321fe9620448655c7f825377c9819b648..bf73dcadb781ed79f8389f402ad3048717d0d746 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 ea55157560d976ebcca41860926219eea3ac43e4..670876b86171ce35d1e5515f1846d6ecdbdcd78a 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 c873466ffef9fcb0be2f1256fe294e7c72981091..99f30ca62d628c4ceeb594df92e9be9f383b4ffe 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 bcd499f453863d4196751cc42fc795ba66bcd59c..f9eeeae0150764de700ea2aaf2ba51ddd4e4dbab 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 57fd7d60c3ba708c004b558290e632fbe7af8081..9d4badc7335b63f9536289af46bb18b4cad775ef 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 65612e14121dfa28d1fb1b03110f1a3b366f0216..f8976d9d2568fd0e808aa13a35909d9d1edd6e3e 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 100bdf9aee2d46dbe23dd9d73f262f948b273957..2a2c26b9b0b3d444dbb9e510f5e9ca12f0a35c5e 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 10cfaefe6d37d385c0d26a06516bd1bd2025330f..e77c13b81d3759bd875047ca3f9b82801133b93d 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 ae9a46418c7b8357f02fb26ab6fc6645c88cbd16..3ec36ad431df047537e95da49c1aa0d1fe63bce9 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,