From 0701424b3c9746f024d3000be6a24c15b83739ab Mon Sep 17 00:00:00 2001
From: Armand <4831c0@proton.me>
Date: Wed, 10 Sep 2025 07:44:39 +0200
Subject: [PATCH] tt: show tests on day picker
---
firka/assets/images/bubble.svg | 3 ++
.../ui/phone/pages/home/home_timetable.dart | 33 +++++++++++++++----
firka/lib/ui/phone/widgets/bubble_test.dart | 33 +++++++++++++++++++
firka/pubspec.yaml | 1 +
4 files changed, 63 insertions(+), 7 deletions(-)
create mode 100644 firka/assets/images/bubble.svg
create mode 100644 firka/lib/ui/phone/widgets/bubble_test.dart
diff --git a/firka/assets/images/bubble.svg b/firka/assets/images/bubble.svg
new file mode 100644
index 00000000..7f42e53e
--- /dev/null
+++ b/firka/assets/images/bubble.svg
@@ -0,0 +1,3 @@
+
diff --git a/firka/lib/ui/phone/pages/home/home_timetable.dart b/firka/lib/ui/phone/pages/home/home_timetable.dart
index 2f416f20..eaf1afbc 100644
--- a/firka/lib/ui/phone/pages/home/home_timetable.dart
+++ b/firka/lib/ui/phone/pages/home/home_timetable.dart
@@ -6,6 +6,7 @@ import 'package:firka/helpers/extensions.dart';
import 'package:firka/helpers/settings/setting.dart';
import 'package:firka/ui/model/style.dart';
import 'package:firka/ui/phone/screens/settings/settings_screen.dart';
+import 'package:firka/ui/phone/widgets/bubble_test.dart';
import 'package:firka/ui/widget/delayed_spinner.dart';
import 'package:flutter/material.dart';
import 'package:majesticons_flutter/majesticons_flutter.dart';
@@ -179,13 +180,6 @@ class _HomeTimetableScreen extends FirkaState {
for (var i = 0; i < dates!.length; i++) {
final date = dates![i];
- ttWidgets.add(BottomTimeTableNavIconWidget(widget.data.l10n, () {
- setState(() {
- _controller.jumpToPage(i);
- active = i;
- });
- }, active == i, date));
-
final lessonsOnDate = lessons!
.where((lesson) =>
lesson.start.isAfter(date) &&
@@ -202,6 +196,31 @@ class _HomeTimetableScreen extends FirkaState {
test.date.isBefore(date.add(Duration(hours: 23, minutes: 59))))
.toList();
+ if (testsOnDate.isNotEmpty) {
+ debugPrint(testsOnDate.toString());
+ ttWidgets.add(Stack(
+ children: [
+ BottomTimeTableNavIconWidget(widget.data.l10n, () {
+ setState(() {
+ _controller.jumpToPage(i);
+ active = i;
+ });
+ }, active == i, date),
+ Transform.translate(
+ offset: Offset(38, -10),
+ child: BubbleTest(),
+ ),
+ ],
+ ));
+ } else {
+ ttWidgets.add(BottomTimeTableNavIconWidget(widget.data.l10n, () {
+ setState(() {
+ _controller.jumpToPage(i);
+ active = i;
+ });
+ }, active == i, date));
+ }
+
ttDays.add(TimeTableDayWidget(widget.data, date, lessons!,
lessonsOnDate, eventsOnDate, testsOnDate));
}
diff --git a/firka/lib/ui/phone/widgets/bubble_test.dart b/firka/lib/ui/phone/widgets/bubble_test.dart
new file mode 100644
index 00000000..92f96d1c
--- /dev/null
+++ b/firka/lib/ui/phone/widgets/bubble_test.dart
@@ -0,0 +1,33 @@
+import 'package:firka/ui/widget/firka_icon.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:flutter_svg/svg.dart';
+import 'package:majesticons_flutter/majesticons_flutter.dart';
+
+import '../../model/style.dart';
+
+class BubbleTest extends StatelessWidget {
+ const BubbleTest({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return Stack(
+ children: [
+ SvgPicture.asset(
+ "assets/images/bubble.svg",
+ color: appStyle.colors.buttonSecondaryFill,
+ width: 24,
+ height: 24,
+ ),
+ Transform.translate(
+ offset: Offset(3, 6),
+ child: FirkaIconWidget(
+ FirkaIconType.majesticons,
+ Majesticon.editPen4Line,
+ color: appStyle.colors.accent,
+ size: 14,
+ ),
+ ),
+ ],
+ );
+ }
+}
diff --git a/firka/pubspec.yaml b/firka/pubspec.yaml
index 767d6150..8521dbaf 100644
--- a/firka/pubspec.yaml
+++ b/firka/pubspec.yaml
@@ -96,6 +96,7 @@ flutter:
- assets/images/icons/
- assets/images/background.webp
- assets/images/wear_pair.svg
+ - assets/images/bubble.svg
- assets/icons/
- assets/majesticons/
- assets/firka.i