implemented custom subject colors for the timetable and unified the color palette system

This commit is contained in:
2026-07-12 21:30:08 +02:00
parent a7111844b1
commit fe2b3c43b2
23 changed files with 916 additions and 89 deletions
@@ -121,6 +121,27 @@ class TimetableBloc
await _refreshCustomEvents();
}
/// Setzt die persönliche Farbe eines Fachs (Schlüssel: Fach-Kürzel) und lädt
/// die Fächer neu, damit die eingebettete Farbe im Kalender wirkt.
Future<void> setSubjectColor(String subjectShort, String color) async {
await repo.data.setSubjectColor(subjectShort, color);
await _refreshSubjects();
}
Future<void> clearSubjectColor(String subjectShort) async {
await repo.data.removeSubjectColor(subjectShort);
await _refreshSubjects();
}
Future<void> _refreshSubjects() async {
final subjects = await repo.data.getSubjects(renew: true);
add(
DataGathered(
(s) => s.copyWith(subjects: subjects, dataVersion: s.dataVersion + 1),
),
);
}
Future<void> _loadCurrentWeek(
DateTime startDate,
DateTime endDate, {
@@ -16,6 +16,8 @@ import '../../../../../api/marianumconnect/queries/timetable_get_timegrid/timeta
import '../../../../../api/marianumconnect/queries/timetable_get_timegrid/timetable_get_timegrid_response.dart';
import '../../../../../api/marianumconnect/queries/timetable_get_week/timetable_get_week.dart';
import '../../../../../api/marianumconnect/queries/timetable_get_week/timetable_get_week_response.dart';
import '../../../../../api/marianumconnect/queries/timetable_subject_colors/timetable_subject_color_remove.dart';
import '../../../../../api/marianumconnect/queries/timetable_subject_colors/timetable_subject_color_set.dart';
import '../../../../../api/mhsl/custom_timetable_event/custom_timetable_event.dart';
import '../../../../../api/mhsl/custom_timetable_event/get/get_custom_timetable_event_response.dart';
import '../../../../../api/request_cache.dart';
@@ -119,4 +121,14 @@ class TimetableDataProvider {
if (DemoMode.active) return Future.value();
return TimetableCustomEventsRemove().run(id);
}
Future<void> setSubjectColor(String subjectShort, String color) {
if (DemoMode.active) return Future.value();
return TimetableSubjectColorSet().run(subjectShort, color);
}
Future<void> removeSubjectColor(String subjectShort) {
if (DemoMode.active) return Future.value();
return TimetableSubjectColorRemove().run(subjectShort);
}
}