diff --git a/refilc/assets/svg/cover_arts/grid.svg b/refilc/assets/svg/cover_arts/grid.svg
new file mode 100644
index 0000000..69e221c
--- /dev/null
+++ b/refilc/assets/svg/cover_arts/grid.svg
@@ -0,0 +1,43 @@
+
diff --git a/refilc/assets/svg/cover_arts/line.svg b/refilc/assets/svg/cover_arts/line.svg
new file mode 100644
index 0000000..7436d92
--- /dev/null
+++ b/refilc/assets/svg/cover_arts/line.svg
@@ -0,0 +1,27 @@
+
diff --git a/refilc/assets/svg/cover_arts/plain.svg b/refilc/assets/svg/cover_arts/plain.svg
new file mode 100644
index 0000000..e381afd
--- /dev/null
+++ b/refilc/assets/svg/cover_arts/plain.svg
@@ -0,0 +1,47 @@
+
diff --git a/refilc/assets/svg/cover_arts/vocal.svg b/refilc/assets/svg/cover_arts/vocal.svg
new file mode 100644
index 0000000..50b24fe
--- /dev/null
+++ b/refilc/assets/svg/cover_arts/vocal.svg
@@ -0,0 +1,28 @@
+
diff --git a/refilc/assets/svg/mesh_bg.svg b/refilc/assets/svg/mesh_bg.svg
deleted file mode 100644
index 5301c50..0000000
--- a/refilc/assets/svg/mesh_bg.svg
+++ /dev/null
@@ -1,43 +0,0 @@
-
diff --git a/refilc/lib/helpers/subject.dart b/refilc/lib/helpers/subject.dart
index 7aa8e9d..24607b5 100644
--- a/refilc/lib/helpers/subject.dart
+++ b/refilc/lib/helpers/subject.dart
@@ -292,3 +292,105 @@ class ShortSubject {
return subject?.name.capital() ?? subjectName?.capital() ?? "?";
}
}
+
+// new v5 thingie
+class SubjectBooklet {
+ // static String resolveName({GradeSubject? subject, String? subjectName}) =>
+ // _resolve(subject: subject, subjectName: subjectName).name;
+ static String resolveVariant(
+ {GradeSubject? subject,
+ String? subjectName,
+ required BuildContext context}) =>
+ _resolve(subject: subject, subjectName: subjectName);
+
+ static String _resolve({GradeSubject? subject, String? subjectName}) {
+ assert(!(subject == null && subjectName == null));
+
+ String name = (subject?.name ?? subjectName ?? "")
+ .toLowerCase()
+ .specialChars()
+ .trim();
+ String category =
+ subject?.category.description.toLowerCase().specialChars() ?? "";
+
+ String basePath = "assets/svg/cover_arts";
+
+ // todo: check for categories
+ if (RegExp("mate(k|matika)").hasMatch(name) || category == "matematika") {
+ return "$basePath/grid.svg";
+ } else if (RegExp("magyar nyelv|nyelvtan").hasMatch(name)) {
+ return "$basePath/line.svg";
+ } else if (RegExp("irodalom").hasMatch(name)) {
+ return "$basePath/line.svg";
+ } else if (RegExp("tor(i|tenelem)").hasMatch(name)) {
+ return "$basePath/line.svg";
+ } else if (RegExp("foldrajz").hasMatch(name)) {
+ return "$basePath/plain.svg";
+ } else if (RegExp("rajz|muvtori|muveszet|vizualis").hasMatch(name)) {
+ return "$basePath/plain.svg";
+ } else if (RegExp("fizika").hasMatch(name)) {
+ return "$basePath/plain.svg";
+ } else if (RegExp("^enek|zene|szolfezs|zongora|korus").hasMatch(name)) {
+ return "$basePath/vocal.svg";
+ } else if (RegExp("^tes(i|tneveles)|sport|edzeselmelet").hasMatch(name)) {
+ return "$basePath/plain.svg";
+ } else if (RegExp("kemia").hasMatch(name)) {
+ return "$basePath/plain.svg";
+ } else if (RegExp("biologia").hasMatch(name)) {
+ return "$basePath/plain.svg";
+ } else if (RegExp(
+ "kornyezet|termeszet ?(tudomany|ismeret)|hon( es nep)?ismeret")
+ .hasMatch(name)) {
+ return "$basePath/plain.svg";
+ } else if (RegExp("(hit|erkolcs)tan|vallas|etika|bibliaismeret")
+ .hasMatch(name)) {
+ return "$basePath/line.svg";
+ } else if (RegExp("penzugy").hasMatch(name)) {
+ return "$basePath/plain.svg";
+ } else if (RegExp("informatika|szoftver|iroda|digitalis").hasMatch(name)) {
+ return "$basePath/grid.svg";
+ } else if (RegExp("prog").hasMatch(name)) {
+ return "$basePath/grid.svg";
+ } else if (RegExp("halozat").hasMatch(name)) {
+ return "$basePath/grid.svg";
+ } else if (RegExp("szinhaz").hasMatch(name)) {
+ return "$basePath/vocal.svg";
+ } else if (RegExp("film|media").hasMatch(name)) {
+ return "$basePath/plain.svg";
+ } else if (RegExp("elektro(tech)?nika").hasMatch(name)) {
+ return "$basePath/grid.svg";
+ } else if (RegExp("gepesz|mernok|ipar").hasMatch(name)) {
+ return "$basePath/grid.svg";
+ } else if (RegExp("technika").hasMatch(name)) {
+ return "$basePath/plain.svg";
+ } else if (RegExp("tanc").hasMatch(name)) {
+ return "$basePath/vocal.svg";
+ } else if (RegExp("filozofia").hasMatch(name)) {
+ return "$basePath/line.svg";
+ } else if (RegExp("osztaly(fonoki|kozosseg)|kozossegi|neveles")
+ .hasMatch(name) ||
+ name == "ofo") {
+ return "$basePath/plain.svg";
+ } else if (RegExp("gazdasag").hasMatch(name)) {
+ return "$basePath/line.svg";
+ } else if (RegExp("szorgalom").hasMatch(name)) {
+ return "$basePath/plain.svg";
+ } else if (RegExp("magatartas").hasMatch(name)) {
+ return "$basePath/plain.svg";
+ } else if (RegExp(
+ "angol|nemet|francia|olasz|orosz|spanyol|latin|kinai|nyelv")
+ .hasMatch(name)) {
+ return "$basePath/line.svg";
+ } else if (RegExp("linux").hasMatch(name)) {
+ return "$basePath/plain.svg";
+ } else if (RegExp("adatbazis").hasMatch(name)) {
+ return "$basePath/grid.svg";
+ } else if (RegExp("asztali alkalmazasok").hasMatch(name)) {
+ return "$basePath/grid.svg";
+ } else if (RegExp("projekt").hasMatch(name)) {
+ return "$basePath/plain.svg";
+ }
+
+ return "$basePath/plain.svg";
+ }
+}
diff --git a/refilc/pubspec.yaml b/refilc/pubspec.yaml
index 8143bd8..fe8922e 100644
--- a/refilc/pubspec.yaml
+++ b/refilc/pubspec.yaml
@@ -104,6 +104,7 @@ flutter:
- assets/svg/menu_icons/
- assets/other/dirtywords.xml
- assets/svg/
+ - assets/svg/cover_arts/
fonts:
- family: FilcIcons
diff --git a/refilc_mobile_ui/lib/common/hero_scrollview.dart b/refilc_mobile_ui/lib/common/hero_scrollview.dart
index 15334fe..c6f6a35 100644
--- a/refilc_mobile_ui/lib/common/hero_scrollview.dart
+++ b/refilc_mobile_ui/lib/common/hero_scrollview.dart
@@ -1,4 +1,5 @@
import 'package:flutter_svg/svg.dart';
+import 'package:refilc/helpers/subject.dart';
import 'package:refilc/theme/colors/colors.dart';
import 'package:flutter/material.dart';
import 'package:refilc/theme/colors/utils.dart';
@@ -113,7 +114,9 @@ class HeroScrollViewState extends State {
Padding(
padding: const EdgeInsets.only(top: 26.0),
child: SvgPicture.asset(
- "assets/svg/mesh_bg.svg",
+ // "assets/svg/mesh_bg.svg",
+ SubjectBooklet.resolveVariant(
+ context: context, subjectName: widget.title),
// ignore: deprecated_member_use
color: ColorsUtils()
.darken(
diff --git a/refilc_mobile_ui/lib/common/widgets/exam/exam_viewable.dart b/refilc_mobile_ui/lib/common/widgets/exam/exam_viewable.dart
index 513c1cc..d7a5ca0 100644
--- a/refilc_mobile_ui/lib/common/widgets/exam/exam_viewable.dart
+++ b/refilc_mobile_ui/lib/common/widgets/exam/exam_viewable.dart
@@ -99,7 +99,9 @@ class ExamPopup extends StatelessWidget {
Stack(
children: [
SvgPicture.asset(
- "assets/svg/mesh_bg.svg",
+ // "assets/svg/mesh_bg.svg",
+ SubjectBooklet.resolveVariant(
+ context: context, subject: exam.subject),
// ignore: deprecated_member_use
color: ColorsUtils()
.fade(context, Theme.of(context).colorScheme.secondary,
diff --git a/refilc_mobile_ui/lib/common/widgets/lesson/lesson_viewable.dart b/refilc_mobile_ui/lib/common/widgets/lesson/lesson_viewable.dart
index a401d27..666cdbc 100644
--- a/refilc_mobile_ui/lib/common/widgets/lesson/lesson_viewable.dart
+++ b/refilc_mobile_ui/lib/common/widgets/lesson/lesson_viewable.dart
@@ -310,7 +310,9 @@ class TimetableLessonPopup extends StatelessWidget {
Stack(
children: [
SvgPicture.asset(
- "assets/svg/mesh_bg.svg",
+ // "assets/svg/mesh_bg.svg",
+ SubjectBooklet.resolveVariant(
+ context: context, subject: lesson.subject),
// ignore: deprecated_member_use
color: ColorsUtils()
.fade(context, Theme.of(context).colorScheme.secondary,
@@ -334,13 +336,13 @@ class TimetableLessonPopup extends StatelessWidget {
.withOpacity(0.1),
Theme.of(context).scaffoldBackgroundColor,
],
- stops: const [0.1, 0.5, 0.7, 1.0],
+ stops: const [0.0, 0.3, 0.6, 0.95],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
),
width: MediaQuery.of(context).size.width,
- height: 175.0,
+ height: 200.0,
),
],
),
@@ -355,16 +357,27 @@ class TimetableLessonPopup extends StatelessWidget {
width: 40,
height: 4,
decoration: BoxDecoration(
- color: ColorsUtils()
- .fade(
- context, Theme.of(context).colorScheme.secondary,
- darkenAmount: 0.1, lightenAmount: 0.1)
- .withOpacity(0.33),
+ color: Theme.of(context).scaffoldBackgroundColor,
borderRadius: BorderRadius.circular(
2.0,
),
),
+ child: Container(
+ width: 40,
+ height: 4,
+ decoration: BoxDecoration(
+ color: ColorsUtils()
+ .fade(context,
+ Theme.of(context).colorScheme.secondary,
+ darkenAmount: 0.1, lightenAmount: 0.1)
+ .withOpacity(0.33),
+ borderRadius: BorderRadius.circular(
+ 2.0,
+ ),
+ ),
+ ),
),
+
const SizedBox(
height: 38.0,
),