diff --git a/lib/storage/base/settings.dart b/lib/storage/base/settings.dart index 4759059..c0448d7 100644 --- a/lib/storage/base/settings.dart +++ b/lib/storage/base/settings.dart @@ -4,7 +4,6 @@ import 'package:json_annotation/json_annotation.dart'; import '../devTools/devToolsSettings.dart'; import '../file/fileSettings.dart'; import '../fileView/fileViewSettings.dart'; -import '../gradeAverages/gradeAveragesSettings.dart'; import '../holidays/holidaysSettings.dart'; import '../notification/notificationSettings.dart'; import '../talk/talkSettings.dart'; @@ -21,7 +20,6 @@ class Settings { ThemeMode appTheme; bool devToolsEnabled; - GradeAveragesSettings gradeAveragesSettings; TimetableSettings timetableSettings; TalkSettings talkSettings; FileSettings fileSettings; @@ -33,7 +31,6 @@ class Settings { Settings({ required this.appTheme, required this.devToolsEnabled, - required this.gradeAveragesSettings, required this.timetableSettings, required this.talkSettings, required this.fileSettings, diff --git a/lib/storage/base/settings.g.dart b/lib/storage/base/settings.g.dart index acfa7ce..b8390f5 100644 --- a/lib/storage/base/settings.g.dart +++ b/lib/storage/base/settings.g.dart @@ -9,8 +9,6 @@ part of 'settings.dart'; Settings _$SettingsFromJson(Map json) => Settings( appTheme: Settings._themeFromJson(json['appTheme'] as String), devToolsEnabled: json['devToolsEnabled'] as bool, - gradeAveragesSettings: GradeAveragesSettings.fromJson( - json['gradeAveragesSettings'] as Map), timetableSettings: TimetableSettings.fromJson( json['timetableSettings'] as Map), talkSettings: @@ -30,7 +28,6 @@ Settings _$SettingsFromJson(Map json) => Settings( Map _$SettingsToJson(Settings instance) => { 'appTheme': Settings._themeToJson(instance.appTheme), 'devToolsEnabled': instance.devToolsEnabled, - 'gradeAveragesSettings': instance.gradeAveragesSettings.toJson(), 'timetableSettings': instance.timetableSettings.toJson(), 'talkSettings': instance.talkSettings.toJson(), 'fileSettings': instance.fileSettings.toJson(), diff --git a/lib/storage/gradeAverages/gradeAveragesSettings.dart b/lib/storage/gradeAverages/gradeAveragesSettings.dart deleted file mode 100644 index 721f239..0000000 --- a/lib/storage/gradeAverages/gradeAveragesSettings.dart +++ /dev/null @@ -1,16 +0,0 @@ - -import 'package:json_annotation/json_annotation.dart'; - -part 'gradeAveragesSettings.g.dart'; - -@JsonSerializable() -class GradeAveragesSettings { - bool useGradeSystem; - bool askedForPreferredGradeSystem; - List inputs; - - GradeAveragesSettings({required this.useGradeSystem, required this.askedForPreferredGradeSystem, required this.inputs}); - - factory GradeAveragesSettings.fromJson(Map json) => _$GradeAveragesSettingsFromJson(json); - Map toJson() => _$GradeAveragesSettingsToJson(this); -} diff --git a/lib/storage/gradeAverages/gradeAveragesSettings.g.dart b/lib/storage/gradeAverages/gradeAveragesSettings.g.dart deleted file mode 100644 index 6fec86a..0000000 --- a/lib/storage/gradeAverages/gradeAveragesSettings.g.dart +++ /dev/null @@ -1,24 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'gradeAveragesSettings.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -GradeAveragesSettings _$GradeAveragesSettingsFromJson( - Map json) => - GradeAveragesSettings( - useGradeSystem: json['useGradeSystem'] as bool, - askedForPreferredGradeSystem: - json['askedForPreferredGradeSystem'] as bool, - inputs: (json['inputs'] as List).map((e) => e as int).toList(), - ); - -Map _$GradeAveragesSettingsToJson( - GradeAveragesSettings instance) => - { - 'useGradeSystem': instance.useGradeSystem, - 'askedForPreferredGradeSystem': instance.askedForPreferredGradeSystem, - 'inputs': instance.inputs, - }; diff --git a/lib/view/pages/more/gradeAverages/gradeAverage.dart b/lib/view/pages/more/gradeAverages/gradeAverage.dart deleted file mode 100644 index 8f5c15a..0000000 --- a/lib/view/pages/more/gradeAverages/gradeAverage.dart +++ /dev/null @@ -1,211 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; - -import '../../../../storage/base/settingsProvider.dart'; -import '../../../../widget/confirmDialog.dart'; - -class GradeAverage extends StatefulWidget { - const GradeAverage({super.key}); - - @override - State createState() => _GradeAverageState(); -} - -class _GradeAverageState extends State { - double average = 0; - bool gradeSystem = true; - List grades = List.empty(growable: true); - - late SettingsProvider settings = Provider.of(context, listen: false); - - void _persistGrades() { - settings.val(write: true).gradeAveragesSettings.inputs = grades; - } - - String getGradeDisplay(int grade) { - if(gradeSystem) { - return 'Note $grade'; - } else { - return "$grade Punkt${grade > 1 ? "e" : ""}"; - } - } - - void switchSystem(bool e) => setState(() { - grades.clear(); - gradeSystem = e; - settings.val(write: true).gradeAveragesSettings.useGradeSystem = e; - _persistGrades(); - }); - - @override - void initState() { - super.initState(); - - grades = settings.val().gradeAveragesSettings.inputs; - gradeSystem = settings.val().gradeAveragesSettings.useGradeSystem; - - WidgetsBinding.instance.addPostFrameCallback((timeStamp) { - if(!settings.val().gradeAveragesSettings.askedForPreferredGradeSystem) { - settings.val(write: true).gradeAveragesSettings.askedForPreferredGradeSystem = true; - showDialog(context: context, builder: (context) => AlertDialog( - title: const Text('Notensystem'), - content: const Text('Wähle dein bevorzugtes Schulnotensystem'), - actions: [ - TextButton( - onPressed: () { - switchSystem(true); - Navigator.of(context).pop(); - }, - child: const Text('Realschule'), - ), - TextButton( - onPressed: () { - switchSystem(false); - Navigator.of(context).pop(); - }, - child: const Text('Oberstufe'), - ), - ], - )); - } - }); - } - - @override - Widget build(BuildContext context) { - if(grades.isNotEmpty) { - average = grades.reduce((a, b) => a + b) / grades.length; - } else { - average = 0; - } - - return Scaffold( - appBar: AppBar( - title: const Text('Notendurschnittsrechner'), - actions: [ - Visibility( - visible: grades.isNotEmpty, - child: IconButton(onPressed: () { - showDialog( - context: context, - builder: (context) => ConfirmDialog( - title: 'Zurücksetzen?', - content: 'Alle Einträge werden entfernt.', - confirmButton: 'Zurücksetzen', - onConfirm: () { - grades.clear(); - setState(() {}); - }, - ), - ); - }, icon: const Icon(Icons.delete_forever)), - ), - PopupMenuButton( - initialValue: gradeSystem, - icon: const Icon(Icons.more_horiz), - itemBuilder: (context) => [true, false].map((e) => PopupMenuItem( - value: e, - child: Row( - children: [ - Icon(e ? Icons.calculate_outlined : Icons.school_outlined, color: Theme.of(context).colorScheme.onSurface), - const SizedBox(width: 15), - Text(e ? 'Notensystem' : 'Punktesystem'), - ], - ), - )).toList(), - - onSelected: (e) { - - if(grades.isNotEmpty) { - showDialog( - context: context, - builder: (context) => ConfirmDialog( - title: 'Notensystem wechseln', - content: 'Beim wechsel des Notensystems werden alle Einträge zurückgesetzt.', - confirmButton: 'Fortfahren', - onConfirm: () => switchSystem(e), - ), - ); - } else { - switchSystem(e); - } - }, - ), - ], - ), - body: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const SizedBox(height: 30), - Text(average.toStringAsFixed(2), style: const TextStyle(fontSize: 30, fontWeight: FontWeight.bold)), - const SizedBox(height: 10), - const Divider(), - const SizedBox(height: 10), - Text(gradeSystem ? 'Wähle unten die Anzahl deiner jewiligen Noten aus' : 'Wähle unten die Anzahl deiner jeweiligen Punkte aus'), - const SizedBox(height: 10), - Expanded( - child: ListView.builder( - itemBuilder: (context, index) { - var grade = gradeSystem ? index + 1 : 15 - index; - bool isThis(int e) => e == grade; - return Material( - child: ListTile( - tileColor: grade.isEven ? Colors.transparent : Colors.transparent.withAlpha(50), - title: Center( - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text(getGradeDisplay(grade)), - const SizedBox(width: 30), - IconButton( - onPressed: () { - setState(() { - if(!grades.any(isThis)) return; - grades.removeAt(grades.indexWhere(isThis)); - _persistGrades(); - }); - }, - icon: const Icon(Icons.remove), - color: Theme.of(context).colorScheme.onSurface, - ), - Text('${grades.where(isThis).length}', style: const TextStyle(fontSize: 15, fontWeight: FontWeight.bold)), - IconButton( - onPressed: () { - setState(() { - grades.add(grade); - _persistGrades(); - }); - }, - icon: const Icon(Icons.add), - color: Theme.of(context).colorScheme.onSurface, - ), - ], - ), - ), - trailing: Visibility( - maintainState: true, - maintainAnimation: true, - maintainSize: true, - visible: grades.any(isThis), - child: IconButton( - icon: const Icon(Icons.delete), - onPressed: () { - setState(() { - grades.removeWhere(isThis); - _persistGrades(); - }); - }, - ), - ), - ), - ); - }, - itemCount: gradeSystem ? 6 : 16, - ), - ), - ], - ), - ); - } -} diff --git a/lib/view/settings/defaultSettings.dart b/lib/view/settings/defaultSettings.dart index 1ff2d77..63a43e6 100644 --- a/lib/view/settings/defaultSettings.dart +++ b/lib/view/settings/defaultSettings.dart @@ -6,7 +6,6 @@ import '../../storage/base/settings.dart'; import '../../storage/devTools/devToolsSettings.dart'; import '../../storage/file/fileSettings.dart'; import '../../storage/fileView/fileViewSettings.dart'; -import '../../storage/gradeAverages/gradeAveragesSettings.dart'; import '../../storage/holidays/holidaysSettings.dart'; import '../../storage/notification/notificationSettings.dart'; import '../../storage/talk/talkSettings.dart'; @@ -17,11 +16,6 @@ class DefaultSettings { static Settings get() => Settings( appTheme: ThemeMode.system, devToolsEnabled: false, - gradeAveragesSettings: GradeAveragesSettings( - useGradeSystem: true, - askedForPreferredGradeSystem: false, - inputs: [] - ), timetableSettings: TimetableSettings( connectDoubleLessons: false, ),