From f7caa6118bb22b01d93fb2a79462fab6a3f6006f Mon Sep 17 00:00:00 2001 From: BalazsManus Date: Tue, 4 Mar 2025 20:10:04 +0100 Subject: [PATCH] silly me --- refilc/build-ipa.sh | 16 + refilc/build.bat | 18 + refilc/build.sh | 2 +- refilc/lib/api/client.dart | 18 + refilc/lib/api/providers/ad_provider.dart | 18 + refilc/lib/app.dart | 18 + refilc/lib/main.dart | 20 +- .../lib/providers/third_party_provider.dart | 18 + refilc_mobile_ui/lib/common/empty.dart | 18 + .../lib/pages/notes/notes_page.dart | 18 + .../lib/screens/login/kreten_login.dart | 18 + .../lib/screens/login/login_screen.dart | 18 + .../lib/screens/settings/settings_screen.dart | 18 + .../settings/submenu/extras_screen.dart | 18 + .../screens/settings/submenu/paint_list.dart | 18 + .../lib/screens/settings/theme_screen.dart | 18 + refilc_plus/lib/api/auth.dart | 18 + .../lib/ui/mobile/plus/settings_inline.dart | 18 + .../mobile/settings/modify_teacher_names.dart | 452 ------------------ 19 files changed, 306 insertions(+), 454 deletions(-) delete mode 100644 refilc_plus/lib/ui/mobile/settings/modify_teacher_names.dart diff --git a/refilc/build-ipa.sh b/refilc/build-ipa.sh index 572fa2c3..ce1a8470 100755 --- a/refilc/build-ipa.sh +++ b/refilc/build-ipa.sh @@ -1,3 +1,19 @@ #!/bin/sh +# Firka legacy (formely "refilc"), the unofficial client for e-Kréta +# Copyright (C) 2025 Firka team (QwIT development) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + flutter build ipa --release --tree-shake-icons --split-debug-info=debug-info --obfuscate --no-codesign diff --git a/refilc/build.bat b/refilc/build.bat index 2ea36045..29f6ec72 100644 --- a/refilc/build.bat +++ b/refilc/build.bat @@ -1 +1,19 @@ +@echo off + +' Firka legacy (formely "refilc"), the unofficial client for e-Kréta +' Copyright (C) 2025 Firka team (QwIT development) +' +' This program is free software: you can redistribute it and/or modify +' it under the terms of the GNU Affero General Public License as +' published by the Free Software Foundation, either version 3 of the +' License, or (at your option) any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY; without even the implied warranty of +' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +' GNU Affero General Public License for more details. +' +' You should have received a copy of the GNU Affero General Public License +' along with this program. If not, see . + flutter build apk --release --tree-shake-icons --split-debug-info=debug-info --split-per-abi --target-platform android-arm,android-arm64 --obfuscate \ No newline at end of file diff --git a/refilc/build.sh b/refilc/build.sh index 58ffa3d0..00565c07 100755 --- a/refilc/build.sh +++ b/refilc/build.sh @@ -1,6 +1,6 @@ #!/bin/sh -# refilc, the unofficial client for e-Kréta +# Firka legacy (formely "refilc"), the unofficial client for e-Kréta # Copyright (C) 2025 Firka team (QwIT development) # # This program is free software: you can redistribute it and/or modify diff --git a/refilc/lib/api/client.dart b/refilc/lib/api/client.dart index 5c4f2090..c97dfd50 100644 --- a/refilc/lib/api/client.dart +++ b/refilc/lib/api/client.dart @@ -1,3 +1,21 @@ +/* + Firka legacy (formely "refilc"), the unofficial client for e-Kréta + Copyright (C) 2025 Firka team (QwIT development) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + import 'dart:async'; import 'dart:convert'; import 'dart:developer'; diff --git a/refilc/lib/api/providers/ad_provider.dart b/refilc/lib/api/providers/ad_provider.dart index 6b2908c7..e0829c2e 100644 --- a/refilc/lib/api/providers/ad_provider.dart +++ b/refilc/lib/api/providers/ad_provider.dart @@ -1,3 +1,21 @@ +/* + Firka legacy (formely "refilc"), the unofficial client for e-Kréta + Copyright (C) 2025 Firka team (QwIT development) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + import 'package:refilc/models/ad.dart'; import 'package:flutter/material.dart'; diff --git a/refilc/lib/app.dart b/refilc/lib/app.dart index 5f2d8010..3ece948d 100644 --- a/refilc/lib/app.dart +++ b/refilc/lib/app.dart @@ -1,3 +1,21 @@ +/* + Firka legacy (formely "refilc"), the unofficial client for e-Kréta + Copyright (C) 2025 Firka team (QwIT development) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + // ignore_for_file: deprecated_member_use import 'dart:io'; diff --git a/refilc/lib/main.dart b/refilc/lib/main.dart index c7aeb5c1..e93ef6fc 100644 --- a/refilc/lib/main.dart +++ b/refilc/lib/main.dart @@ -1,3 +1,21 @@ +/* + Firka legacy (formely "refilc"), the unofficial client for e-Kréta + Copyright (C) 2025 Firka team (QwIT development) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + import 'dart:io'; import 'package:background_fetch/background_fetch.dart'; @@ -310,7 +328,7 @@ Future initAdditionalBackgroundFetch() async { print('[BackgroundFetch] configure success: $status'); } BackgroundFetch.scheduleTask(TaskConfig( - taskId: "com.transistorsoft.refilcliveactivity", + taskId: "com.transistorsoft.firkaliveactivity", delay: 300000, // 5 minute periodic: true, forceAlarmManager: true, diff --git a/refilc/lib/providers/third_party_provider.dart b/refilc/lib/providers/third_party_provider.dart index ae05f66f..4ea2f23e 100644 --- a/refilc/lib/providers/third_party_provider.dart +++ b/refilc/lib/providers/third_party_provider.dart @@ -1,3 +1,21 @@ +/* + Firka legacy (formely "refilc"), the unofficial client for e-Kréta + Copyright (C) 2025 Firka team (QwIT development) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + // ignore_for_file: use_build_context_synchronously import 'package:refilc/models/linked_account.dart'; diff --git a/refilc_mobile_ui/lib/common/empty.dart b/refilc_mobile_ui/lib/common/empty.dart index 5179a6c6..f08bee05 100644 --- a/refilc_mobile_ui/lib/common/empty.dart +++ b/refilc_mobile_ui/lib/common/empty.dart @@ -1,3 +1,21 @@ +/* + Firka legacy (formely "refilc"), the unofficial client for e-Kréta + Copyright (C) 2025 Firka team (QwIT development) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + import 'dart:math'; import 'package:refilc/theme/colors/colors.dart'; diff --git a/refilc_mobile_ui/lib/pages/notes/notes_page.dart b/refilc_mobile_ui/lib/pages/notes/notes_page.dart index d876d51c..96d2d98c 100644 --- a/refilc_mobile_ui/lib/pages/notes/notes_page.dart +++ b/refilc_mobile_ui/lib/pages/notes/notes_page.dart @@ -1,3 +1,21 @@ +/* + Firka legacy (formely "refilc"), the unofficial client for e-Kréta + Copyright (C) 2025 Firka team (QwIT development) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + // ignore_for_file: no_leading_underscores_for_local_identifiers, use_build_context_synchronously import 'dart:convert'; diff --git a/refilc_mobile_ui/lib/screens/login/kreten_login.dart b/refilc_mobile_ui/lib/screens/login/kreten_login.dart index c203a75f..86657b2b 100644 --- a/refilc_mobile_ui/lib/screens/login/kreten_login.dart +++ b/refilc_mobile_ui/lib/screens/login/kreten_login.dart @@ -1,3 +1,21 @@ +/* + Firka legacy (formely "refilc"), the unofficial client for e-Kréta + Copyright (C) 2025 Firka team (QwIT development) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + // ignore_for_file: use_build_context_synchronously import 'package:flutter/material.dart'; diff --git a/refilc_mobile_ui/lib/screens/login/login_screen.dart b/refilc_mobile_ui/lib/screens/login/login_screen.dart index c77a487d..f0f523a0 100644 --- a/refilc_mobile_ui/lib/screens/login/login_screen.dart +++ b/refilc_mobile_ui/lib/screens/login/login_screen.dart @@ -1,3 +1,21 @@ +/* + Firka legacy (formely "refilc"), the unofficial client for e-Kréta + Copyright (C) 2025 Firka team (QwIT development) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + // import 'dart:async'; import 'dart:io' show Platform; diff --git a/refilc_mobile_ui/lib/screens/settings/settings_screen.dart b/refilc_mobile_ui/lib/screens/settings/settings_screen.dart index e582efc1..68b6f391 100644 --- a/refilc_mobile_ui/lib/screens/settings/settings_screen.dart +++ b/refilc_mobile_ui/lib/screens/settings/settings_screen.dart @@ -1,3 +1,21 @@ +/* + Firka legacy (formely "refilc"), the unofficial client for e-Kréta + Copyright (C) 2025 Firka team (QwIT development) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + // ignore_for_file: no_leading_underscores_for_local_identifiers, use_build_context_synchronously, deprecated_member_use import 'dart:convert'; diff --git a/refilc_mobile_ui/lib/screens/settings/submenu/extras_screen.dart b/refilc_mobile_ui/lib/screens/settings/submenu/extras_screen.dart index 28dc1284..ba28d326 100644 --- a/refilc_mobile_ui/lib/screens/settings/submenu/extras_screen.dart +++ b/refilc_mobile_ui/lib/screens/settings/submenu/extras_screen.dart @@ -1,3 +1,21 @@ +/* + Firka legacy (formely "refilc"), the unofficial client for e-Kréta + Copyright (C) 2025 Firka team (QwIT development) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + // import 'package:refilc/models/settings.dart'; import 'package:refilc/api/providers/user_provider.dart'; diff --git a/refilc_mobile_ui/lib/screens/settings/submenu/paint_list.dart b/refilc_mobile_ui/lib/screens/settings/submenu/paint_list.dart index cd6d6925..a0f12465 100644 --- a/refilc_mobile_ui/lib/screens/settings/submenu/paint_list.dart +++ b/refilc_mobile_ui/lib/screens/settings/submenu/paint_list.dart @@ -1,3 +1,21 @@ +/* + Firka legacy (formely "refilc"), the unofficial client for e-Kréta + Copyright (C) 2025 Firka team (QwIT development) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + // ignore_for_file: use_build_context_synchronously import 'package:refilc/api/providers/user_provider.dart'; diff --git a/refilc_mobile_ui/lib/screens/settings/theme_screen.dart b/refilc_mobile_ui/lib/screens/settings/theme_screen.dart index 9cc46e61..c4df3913 100644 --- a/refilc_mobile_ui/lib/screens/settings/theme_screen.dart +++ b/refilc_mobile_ui/lib/screens/settings/theme_screen.dart @@ -1,3 +1,21 @@ +/* + Firka legacy (formely "refilc"), the unofficial client for e-Kréta + Copyright (C) 2025 Firka team (QwIT development) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + // ignore_for_file: use_build_context_synchronously, deprecated_member_use import 'package:refilc/models/settings.dart'; diff --git a/refilc_plus/lib/api/auth.dart b/refilc_plus/lib/api/auth.dart index 0c084061..0f2fc7ca 100644 --- a/refilc_plus/lib/api/auth.dart +++ b/refilc_plus/lib/api/auth.dart @@ -1,3 +1,21 @@ +/* + refilc+, but more stripped and more open source + Copyright (C) 2025 Firka team (QwIT development) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + import 'dart:async'; import 'package:refilc/models/settings.dart'; diff --git a/refilc_plus/lib/ui/mobile/plus/settings_inline.dart b/refilc_plus/lib/ui/mobile/plus/settings_inline.dart index f227baa2..9011c54f 100644 --- a/refilc_plus/lib/ui/mobile/plus/settings_inline.dart +++ b/refilc_plus/lib/ui/mobile/plus/settings_inline.dart @@ -1,3 +1,21 @@ +/* + refilc+, but more stripped and more open source + Copyright (C) 2025 Firka team (QwIT development) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:refilc_plus/models/premium_scopes.dart'; diff --git a/refilc_plus/lib/ui/mobile/settings/modify_teacher_names.dart b/refilc_plus/lib/ui/mobile/settings/modify_teacher_names.dart deleted file mode 100644 index 48daf08e..00000000 --- a/refilc_plus/lib/ui/mobile/settings/modify_teacher_names.dart +++ /dev/null @@ -1,452 +0,0 @@ -// import 'package:dropdown_button2/dropdown_button2.dart'; -// import 'package:refilc/api/providers/database_provider.dart'; -// import 'package:refilc/api/providers/user_provider.dart'; -// import 'package:refilc/models/settings.dart'; -// import 'package:refilc/theme/colors/colors.dart'; -// import 'package:refilc/utils/format.dart'; -// import 'package:refilc_kreta_api/models/teacher.dart'; -// import 'package:refilc_kreta_api/providers/absence_provider.dart'; -// import 'package:refilc_kreta_api/providers/grade_provider.dart'; -// import 'package:refilc_kreta_api/providers/timetable_provider.dart'; -// import 'package:refilc_mobile_ui/common/panel/panel.dart'; -// import 'package:refilc_mobile_ui/common/panel/panel_button.dart'; -// // import 'package:refilc_plus/models/premium_scopes.dart'; -// // import 'package:refilc_plus/providers/plus_provider.dart'; -// // import 'package:refilc_plus/ui/mobile/plus/upsell.dart'; -// import 'package:flutter/cupertino.dart'; -// import 'package:flutter/material.dart'; -// import 'package:flutter_feather_icons/flutter_feather_icons.dart'; -// import 'package:provider/provider.dart'; -// import 'package:refilc_mobile_ui/screens/settings/modify_names.i18n.dart'; - -// class MenuRenamedTeachers extends StatelessWidget { -// const MenuRenamedTeachers({Key? key, required this.settings}) -// : super(key: key); - -// final SettingsProvider settings; - -// @override -// Widget build(BuildContext context) { -// return PanelButton( -// padding: const EdgeInsets.only(left: 14.0), -// onPressed: () { -// // if (!Provider.of(context, listen: false) -// // .hasScope(PremiumScopes.renameTeachers)) { -// // PlusLockedFeaturePopup.show( -// // context: context, feature: PremiumFeature.teacherrename); -// // return; -// // } - -// Navigator.of(context, rootNavigator: true).push( -// CupertinoPageRoute(builder: (context) => const ModifyTeacherNames()), -// ); -// }, -// title: Text( -// "rename_teachers".i18n, -// style: TextStyle( -// color: AppColors.of(context) -// .text -// .withOpacity(settings.renamedTeachersEnabled ? 1.0 : .5)), -// ), -// leading: settings.renamedTeachersEnabled -// ? const Icon(FeatherIcons.users) -// : Icon(FeatherIcons.users, -// color: AppColors.of(context).text.withOpacity(.25)), -// trailingDivider: true, -// trailing: Switch( -// onChanged: (v) async { -// // if (!Provider.of(context, listen: false) -// // .hasScope(PremiumScopes.renameTeachers)) { -// // PlusLockedFeaturePopup.show( -// // context: context, feature: PremiumFeature.teacherrename); -// // return; -// // } - -// settings.update(renamedTeachersEnabled: v); -// await Provider.of(context, listen: false) -// .convertBySettings(); -// await Provider.of(context, listen: false) -// .convertBySettings(); -// await Provider.of(context, listen: false) -// .convertBySettings(); -// }, -// value: settings.renamedTeachersEnabled, -// activeColor: Theme.of(context).colorScheme.secondary, -// ), -// ); -// } -// } - -// class ModifyTeacherNames extends StatefulWidget { -// const ModifyTeacherNames({Key? key}) : super(key: key); - -// @override -// State createState() => _ModifyTeacherNamesState(); -// } - -// class _ModifyTeacherNamesState extends State { -// final GlobalKey _scaffoldKey = GlobalKey(); -// final _teacherName = TextEditingController(); -// String? selectedTeacherId; - -// late List teachers; -// late UserProvider user; -// late DatabaseProvider dbProvider; -// late SettingsProvider settings; - -// @override -// void initState() { -// super.initState(); -// teachers = (Provider.of(context, listen: false) -// .grades -// .map((e) => e.teacher) -// .toSet() -// .toList() -// ..sort((a, b) => a.name.compareTo(b.name))); -// user = Provider.of(context, listen: false); -// dbProvider = Provider.of(context, listen: false); -// } - -// Future> fetchRenamedTeachers() async { -// return await dbProvider.userQuery.renamedTeachers(userId: user.id!); -// } - -// void showRenameDialog() { -// showDialog( -// context: context, -// builder: (context) => StatefulBuilder(builder: (context, setS) { -// return AlertDialog( -// shape: const RoundedRectangleBorder( -// borderRadius: BorderRadius.all(Radius.circular(14.0))), -// title: Text("rename_teacher".i18n), -// content: Column( -// mainAxisSize: MainAxisSize.min, -// children: [ -// DropdownButton2( -// items: teachers -// .map((item) => DropdownMenuItem( -// value: item.id, -// child: Text( -// item.name, -// style: TextStyle( -// fontSize: 14, -// fontWeight: FontWeight.bold, -// color: AppColors.of(context).text, -// ), -// overflow: TextOverflow.ellipsis, -// ), -// )) -// .toList(), -// onChanged: (String? v) async { -// final renamedSubs = await fetchRenamedTeachers(); - -// setS(() { -// selectedTeacherId = v; - -// if (renamedSubs.containsKey(selectedTeacherId)) { -// _teacherName.text = renamedSubs[selectedTeacherId]!; -// } else { -// _teacherName.text = ""; -// } -// }); -// }, -// iconStyleData: IconStyleData( -// iconSize: 14, -// iconEnabledColor: AppColors.of(context).text, -// iconDisabledColor: AppColors.of(context).text, -// ), -// underline: const SizedBox(), -// menuItemStyleData: MenuItemStyleData(height: 40,), -// itemHeight: 40, -// itemPadding: const EdgeInsets.only(left: 14, right: 14), -// buttonWidth: 50, -// dropdownWidth: 300, -// dropdownPadding: null, -// buttonDecoration: BoxDecoration( -// borderRadius: BorderRadius.circular(8), -// ), -// dropdownDecoration: BoxDecoration( -// borderRadius: BorderRadius.circular(14), -// ), -// dropdownElevation: 8, -// scrollbarRadius: const Radius.circular(40), -// scrollbarThickness: 6, -// scrollbarAlwaysShow: true, -// offset: const Offset(-10, -10), -// buttonSplashColor: Colors.transparent, -// customButton: Container( -// width: double.infinity, -// decoration: BoxDecoration( -// border: Border.all(color: Colors.grey, width: 2), -// borderRadius: BorderRadius.circular(12.0), -// ), -// padding: const EdgeInsets.symmetric( -// vertical: 12.0, horizontal: 8.0), -// child: Text( -// selectedTeacherId == null -// ? "select_teacher".i18n -// : teachers -// .firstWhere( -// (element) => element.id == selectedTeacherId, -// orElse: () => Teacher( -// id: 'noid', name: "select_teacher".i18n), -// ) -// .name, -// style: Theme.of(context).textTheme.titleSmall!.copyWith( -// fontWeight: FontWeight.w700, -// color: AppColors.of(context).text.withOpacity(0.75)), -// overflow: TextOverflow.ellipsis, -// maxLines: 2, -// textAlign: TextAlign.center, -// ), -// ), -// ), -// const Padding( -// padding: EdgeInsets.symmetric(vertical: 8.0), -// child: Icon(FeatherIcons.arrowDown, size: 32), -// ), -// TextField( -// controller: _teacherName, -// decoration: InputDecoration( -// border: OutlineInputBorder( -// borderSide: -// const BorderSide(color: Colors.grey, width: 1.5), -// borderRadius: BorderRadius.circular(12.0), -// ), -// focusedBorder: OutlineInputBorder( -// borderSide: -// const BorderSide(color: Colors.grey, width: 1.5), -// borderRadius: BorderRadius.circular(12.0), -// ), -// contentPadding: const EdgeInsets.symmetric(horizontal: 12.0), -// hintText: "modified_name".i18n, -// suffixIcon: IconButton( -// icon: const Icon( -// FeatherIcons.x, -// color: Colors.grey, -// ), -// onPressed: () { -// setState(() { -// _teacherName.text = ""; -// }); -// }, -// ), -// ), -// ), -// ], -// ), -// actions: [ -// TextButton( -// child: Text( -// "cancel".i18n, -// style: const TextStyle(fontWeight: FontWeight.w500), -// ), -// onPressed: () { -// Navigator.of(context).maybePop(); -// }, -// ), -// TextButton( -// child: Text( -// "done".i18n, -// style: const TextStyle(fontWeight: FontWeight.w500), -// ), -// onPressed: () async { -// if (selectedTeacherId != null) { -// final renamedSubs = await fetchRenamedTeachers(); - -// renamedSubs[selectedTeacherId!] = _teacherName.text; -// await dbProvider.userStore -// .storeRenamedTeachers(renamedSubs, userId: user.id!); -// await Provider.of(context, listen: false) -// .convertBySettings(); -// await Provider.of(context, listen: false) -// .convertBySettings(); -// await Provider.of(context, listen: false) -// .convertBySettings(); -// } -// Navigator.of(context).pop(true); -// setState(() {}); -// }, -// ), -// ], -// ); -// }), -// ).then((val) { -// _teacherName.text = ""; -// selectedTeacherId = null; -// }); -// } - -// @override -// Widget build(BuildContext context) { -// settings = Provider.of(context); -// return Scaffold( -// key: _scaffoldKey, -// appBar: AppBar( -// surfaceTintColor: Theme.of(context).scaffoldBackgroundColor, -// leading: BackButton(color: AppColors.of(context).text), -// title: Text( -// "modify_teachers".i18n, -// style: TextStyle(color: AppColors.of(context).text), -// ), -// ), -// body: Padding( -// padding: const EdgeInsets.symmetric(vertical: 16.0, horizontal: 24.0), -// child: SingleChildScrollView( -// child: Column( -// crossAxisAlignment: CrossAxisAlignment.start, -// children: [ -// // Panel( -// // child: SwitchListTile( - -// // title: Text("italics_toggle".i18n), -// // onChanged: (value) => -// // settings.update(renamedTeachersItalics: value), -// // value: settings.renamedTeachersItalics, -// // ), -// // ), -// // const SizedBox( -// // height: 20, -// // ), -// InkWell( -// onTap: showRenameDialog, -// borderRadius: BorderRadius.circular(12.0), -// child: Container( -// width: double.infinity, -// decoration: BoxDecoration( -// border: Border.all(color: Colors.grey, width: 2), -// borderRadius: BorderRadius.circular(12.0), -// ), -// padding: const EdgeInsets.symmetric( -// vertical: 18.0, horizontal: 12.0), -// child: Center( -// child: Text( -// "rename_new_teacher".i18n, -// style: TextStyle( -// fontWeight: FontWeight.w600, -// fontSize: 18, -// color: AppColors.of(context).text.withOpacity(.85), -// ), -// ), -// ), -// ), -// ), -// const SizedBox( -// height: 30, -// ), -// FutureBuilder>( -// future: fetchRenamedTeachers(), -// builder: (context, snapshot) { -// if (!snapshot.hasData || snapshot.data!.isEmpty) { -// return Container(); -// } - -// return Panel( -// title: Text("renamed_teachers".i18n), -// child: Column( -// children: snapshot.data!.keys.map( -// (key) { -// Teacher? teacher = teachers.firstWhere( -// (element) => key == element.id, -// orElse: () => Teacher(id: 'noid', name: 'noname'), -// ); - -// if (teacher.id == 'noid') { -// return const SizedBox( -// width: 0, -// height: 0, -// ); -// } - -// String renameTo = snapshot.data![key]!; -// return RenamedTeacherItem( -// teacher: teacher, -// renamedTo: renameTo, -// modifyCallback: () { -// setState(() { -// selectedTeacherId = teacher.id; -// _teacherName.text = renameTo; -// }); -// showRenameDialog(); -// }, -// removeCallback: () { -// setState(() { -// Map subs = -// Map.from(snapshot.data!); -// subs.remove(key); -// dbProvider.userStore.storeRenamedTeachers( -// subs, -// userId: user.id!); -// }); -// }, -// ); -// }, -// ).toList(), -// ), -// ); -// }, -// ), -// ], -// ), -// ), -// )); -// } -// } - -// class RenamedTeacherItem extends StatelessWidget { -// const RenamedTeacherItem({ -// Key? key, -// required this.teacher, -// required this.renamedTo, -// required this.modifyCallback, -// required this.removeCallback, -// }) : super(key: key); - -// final Teacher teacher; -// final String renamedTo; -// final void Function() modifyCallback; -// final void Function() removeCallback; - -// @override -// Widget build(BuildContext context) { -// return ListTile( -// minLeadingWidth: 32.0, -// dense: true, -// contentPadding: -// const EdgeInsets.symmetric(horizontal: 16.0, vertical: 6.0), -// shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.0)), -// visualDensity: VisualDensity.compact, -// onTap: () {}, -// leading: Icon(FeatherIcons.user, -// color: AppColors.of(context).text.withOpacity(.75)), -// title: InkWell( -// onTap: modifyCallback, -// child: Column( -// crossAxisAlignment: CrossAxisAlignment.start, -// children: [ -// Text( -// teacher.name.capital(), -// style: TextStyle( -// fontWeight: FontWeight.w500, -// fontSize: 14, -// color: AppColors.of(context).text.withOpacity(.75)), -// maxLines: 1, -// overflow: TextOverflow.ellipsis, -// ), -// Text( -// renamedTo, -// style: const TextStyle(fontWeight: FontWeight.w500, fontSize: 16), -// maxLines: 2, -// overflow: TextOverflow.ellipsis, -// ), -// ], -// ), -// ), -// trailing: InkWell( -// onTap: removeCallback, -// child: Icon(FeatherIcons.trash, -// color: AppColors.of(context).red.withOpacity(.75)), -// ), -// ); -// } -// }