forked from firka/student-legacy
120 lines
6.2 KiB
Dart
120 lines
6.2 KiB
Dart
import 'package:filcnaplo/icons/filc_icons.dart';
|
|
import 'package:filcnaplo/utils/format.dart';
|
|
import 'package:filcnaplo_kreta_api/models/subject.dart';
|
|
import 'package:flutter/cupertino.dart';
|
|
|
|
class SubjectIconData {
|
|
final IconData data;
|
|
final String name; // for iOS live activities compatibilty
|
|
|
|
SubjectIconData({
|
|
this.data = CupertinoIcons.rectangle_grid_2x2,
|
|
this.name = "square.grid.2x2",
|
|
});
|
|
}
|
|
|
|
class SubjectIcon {
|
|
static SubjectIconData resolve({Subject? subject, String? subjectName}) {
|
|
assert(!(subject == null && subjectName == null));
|
|
|
|
String name = (subject?.name ?? subjectName ?? "").toLowerCase().specialChars().trim();
|
|
String category = subject?.category.description.toLowerCase().specialChars() ?? "";
|
|
|
|
// todo: check for categories
|
|
if (RegExp("mate(k|matika)").hasMatch(name) || category == "matematika") {
|
|
return SubjectIconData(data: CupertinoIcons.function, name: "function");
|
|
} else if (RegExp("magyar nyelv|nyelvtan").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.textformat_alt, name: "textformat.alt");
|
|
} else if (RegExp("irodalom").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.book, name: "book");
|
|
} else if (RegExp("tor(i|tenelem)").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.compass, name: "safari");
|
|
} else if (RegExp("foldrajz").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.map, name: "map");
|
|
} else if (RegExp("rajz|muvtori|muveszet|vizualis").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.paintbrush, name: "paintbrush");
|
|
} else if (RegExp("fizika").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.lightbulb, name: "lightbulb");
|
|
} else if (RegExp("^enek|zene|szolfezs|zongora|korus").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.music_note, name: "music.note");
|
|
} else if (RegExp("^tes(i|tneveles)|sport").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.sportscourt, name: "sportscourt");
|
|
} else if (RegExp("kemia").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.lab_flask, name: "testtube.2");
|
|
} else if (RegExp("biologia").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.paw, name: "pawprint");
|
|
} else if (RegExp("kornyezet|termeszet ?(tudomany|ismeret)|hon( es nep)?ismeret").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.arrow_3_trianglepath, name: "arrow.3.trianglepath");
|
|
} else if (RegExp("(hit|erkolcs)tan|vallas|etika").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.heart, name: "heart");
|
|
} else if (RegExp("penzugy").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.money_dollar, name: "dollarsign");
|
|
} else if (RegExp("informatika|szoftver|iroda|digitalis").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.device_laptop, name: "laptopcomputer");
|
|
} else if (RegExp("prog").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.chevron_left_slash_chevron_right, name: "chevron.left.forwardslash.chevron.right");
|
|
} else if (RegExp("halozat").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.antenna_radiowaves_left_right, name: "antenna.radiowaves.left.and.right");
|
|
} else if (RegExp("szinhaz").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.hifispeaker, name: "hifispeaker");
|
|
} else if (RegExp("film|media").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.film, name: "film");
|
|
} else if (RegExp("elektro(tech)?nika").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.bolt, name: "bolt");
|
|
} else if (RegExp("gepesz|mernok|ipar").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.wrench, name: "wrench");
|
|
} else if (RegExp("technika").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.hammer, name: "hammer");
|
|
} else if (RegExp("tanc").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.music_mic, name: "music.mic");
|
|
} else if (RegExp("filozofia").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.bubble_left, name: "bubble.left");
|
|
} else if (RegExp("osztaly(fonoki|kozosseg)").hasMatch(name) || name == "ofo") {
|
|
return SubjectIconData(data: CupertinoIcons.group, name: "person.3");
|
|
} else if (RegExp("gazdasag").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.chart_pie, name: "chart.pie");
|
|
} else if (RegExp("szorgalom").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.checkmark_seal, name: "checkmark.seal");
|
|
} else if (RegExp("magatartas").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.smiley, name: "face.smiling");
|
|
} else if (RegExp("angol|nemet|francia|olasz|orosz|spanyol|latin|kinai|nyelv").hasMatch(name)) {
|
|
return SubjectIconData(data: CupertinoIcons.globe, name: "globe");
|
|
} else if (RegExp("linux").hasMatch(name)) {
|
|
return SubjectIconData(data: FilcIcons.linux);
|
|
}
|
|
|
|
return SubjectIconData();
|
|
}
|
|
}
|
|
|
|
class ShortSubject {
|
|
static String resolve({Subject? subject, String? subjectName}) {
|
|
assert(!(subject == null && subjectName == null));
|
|
|
|
String name = (subject?.name ?? subjectName ?? "").toLowerCase().specialChars().trim();
|
|
// String category = subject?.category.description.toLowerCase().specialChars() ?? "";
|
|
|
|
if (RegExp("magyar irodalom").hasMatch(name)) {
|
|
return "Irodalom";
|
|
} else if (RegExp("magyar nyelv").hasMatch(name)) {
|
|
return "Nyelvtan";
|
|
} else if (RegExp("matematika").hasMatch(name)) {
|
|
return "Matek";
|
|
} else if (RegExp("digitalis kultura").hasMatch(name)) {
|
|
return "Dig. kult.";
|
|
} else if (RegExp("testneveles").hasMatch(name)) {
|
|
return "Tesi";
|
|
} else if (RegExp("tortenelem").hasMatch(name)) {
|
|
return "Töri";
|
|
} else if (RegExp("(angol|nemet|francia|olasz|orosz|spanyol|latin|kinai) nyelv").hasMatch(name)) {
|
|
return (subject?.name ?? subjectName ?? "?").replaceAll(" nyelv", "");
|
|
} else if (RegExp("informatika").hasMatch(name)) {
|
|
return "Infó";
|
|
} else if (RegExp("osztalyfonoki").hasMatch(name)) {
|
|
return "Ofő";
|
|
}
|
|
|
|
return subject?.name.capital() ?? subjectName?.capital() ?? "?";
|
|
}
|
|
}
|