diff --git a/.idea/libraries/Dart_Packages.xml b/.idea/libraries/Dart_Packages.xml
index ad74def..5da2980 100644
--- a/.idea/libraries/Dart_Packages.xml
+++ b/.idea/libraries/Dart_Packages.xml
@@ -47,7 +47,7 @@
-
+
@@ -131,14 +131,14 @@
-
+
-
+
@@ -152,7 +152,7 @@
-
+
@@ -208,7 +208,7 @@
-
+
@@ -229,7 +229,7 @@
-
+
@@ -257,7 +257,7 @@
-
+
@@ -299,7 +299,7 @@
-
+
@@ -327,7 +327,35 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -411,7 +439,7 @@
-
+
@@ -460,14 +488,14 @@
-
+
-
+
@@ -502,14 +530,14 @@
-
+
-
+
@@ -527,10 +555,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
@@ -586,7 +635,7 @@
-
+
@@ -607,7 +656,7 @@
-
+
@@ -649,7 +698,7 @@
-
+
@@ -705,7 +754,7 @@
-
+
@@ -719,7 +768,7 @@
-
+
@@ -831,7 +880,7 @@
-
+
@@ -971,63 +1020,63 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -1055,7 +1104,7 @@
-
+
@@ -1076,7 +1125,7 @@
-
+
@@ -1090,7 +1139,7 @@
-
+
@@ -1125,7 +1174,7 @@
-
+
@@ -1210,15 +1259,15 @@
-
-
+
+
-
+
@@ -1230,10 +1279,10 @@
-
-
+
+
-
+
@@ -1241,14 +1290,14 @@
-
+
-
+
-
+
@@ -1257,7 +1306,11 @@
-
+
+
+
+
+
@@ -1266,22 +1319,25 @@
-
+
-
-
+
+
-
-
+
+
-
+
+
+
+
@@ -1289,10 +1345,10 @@
-
+
-
+
@@ -1305,9 +1361,9 @@
-
+
-
+
@@ -1323,7 +1379,7 @@
-
+
@@ -1342,29 +1398,29 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
diff --git a/.idea/libraries/Flutter_Plugins.xml b/.idea/libraries/Flutter_Plugins.xml
index e0b5f46..96b7f1b 100644
--- a/.idea/libraries/Flutter_Plugins.xml
+++ b/.idea/libraries/Flutter_Plugins.xml
@@ -1,36 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
diff --git a/android/.idea/workspace.xml b/android/.idea/workspace.xml
index ec8b1a5..41e193d 100644
--- a/android/.idea/workspace.xml
+++ b/android/.idea/workspace.xml
@@ -4,8 +4,7 @@
-
-
+
@@ -13,7 +12,7 @@
-
+
@@ -27,7 +26,10 @@
-
+
+
+
+
@@ -37,6 +39,8 @@
"keyToString": {
"BundleExportedModule": "android.app",
"ExportBundle.BundlePathForandroid.app": "/home/elias/projects/MarianumMobile/Client/android/app",
+ "RunOnceActivity.OpenProjectViewOnStart": "true",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.cidr.known.project.marker": "true",
"cidr.known.project.marker": "true",
"dart.analysis.tool.window.visible": "false",
@@ -112,11 +116,11 @@
-
- 1686684282057
+
+ 1686688019339
- 1686684282057
+ 1686688019339
diff --git a/client.iml b/client.iml
index 9154295..fa043b4 100644
--- a/client.iml
+++ b/client.iml
@@ -42,6 +42,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/view/pages/more/holidays/holidays.dart b/lib/view/pages/more/holidays/holidays.dart
index 928bb21..7caee6a 100644
--- a/lib/view/pages/more/holidays/holidays.dart
+++ b/lib/view/pages/more/holidays/holidays.dart
@@ -1,16 +1,16 @@
import 'package:flutter/material.dart';
import 'package:flutter_native_splash/cli_commands.dart';
import 'package:jiffy/jiffy.dart';
-import 'package:marianum_mobile/widget/centeredLeading.dart';
-import 'package:marianum_mobile/widget/debug/debugTile.dart';
-import 'package:marianum_mobile/widget/placeholderView.dart';
import 'package:provider/provider.dart';
import '../../../../api/holidays/getHolidaysResponse.dart';
import '../../../../model/holidays/holidaysProps.dart';
import '../../../../storage/base/settingsProvider.dart';
+import '../../../../widget/centeredLeading.dart';
import '../../../../widget/confirmDialog.dart';
+import '../../../../widget/debug/debugTile.dart';
import '../../../../widget/loadingSpinner.dart';
+import '../../../../widget/placeholderView.dart';
import '../countdown/animatedTime.dart';
class Holidays extends StatefulWidget {
diff --git a/lib/view/settings/privacyInfo.dart b/lib/view/settings/privacyInfo.dart
new file mode 100644
index 0000000..0579fa6
--- /dev/null
+++ b/lib/view/settings/privacyInfo.dart
@@ -0,0 +1,34 @@
+import 'package:flutter/material.dart';
+
+import '../../widget/centeredLeading.dart';
+import '../../widget/confirmDialog.dart';
+
+class PrivacyInfo {
+ String providerText;
+ String privacyUrl;
+ String imprintUrl;
+
+ PrivacyInfo({required this.providerText, required this.imprintUrl, required this.privacyUrl});
+
+ void showPopup(BuildContext context) {
+ showDialog(context: context, builder: (context) {
+ return SimpleDialog(
+ title: Text("Betreiberinformation | $providerText"),
+ children: [
+ ListTile(
+ leading: const CenteredLeading(Icon(Icons.person_pin_outlined)),
+ title: const Text("Impressum"),
+ subtitle: Text(imprintUrl),
+ onTap: () => ConfirmDialog.openBrowser(context, imprintUrl),
+ ),
+ ListTile(
+ leading: const CenteredLeading(Icon(Icons.privacy_tip_outlined)),
+ title: const Text("Datenschutzerklärung"),
+ subtitle: Text(privacyUrl),
+ onTap: () => ConfirmDialog.openBrowser(context, privacyUrl),
+ ),
+ ],
+ );
+ });
+ }
+}
\ No newline at end of file
diff --git a/lib/view/settings/settings.dart b/lib/view/settings/settings.dart
index 1847dd1..e6afa57 100644
--- a/lib/view/settings/settings.dart
+++ b/lib/view/settings/settings.dart
@@ -1,7 +1,6 @@
import 'package:filesize/filesize.dart';
import 'package:flutter/material.dart';
-import 'package:marianum_mobile/widget/centeredLeading.dart';
import 'package:package_info/package_info.dart';
import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
@@ -9,9 +8,11 @@ import 'package:shared_preferences/shared_preferences.dart';
import '../../model/accountData.dart';
import '../../storage/base/settingsProvider.dart';
import '../../theming/appTheme.dart';
+import '../../widget/centeredLeading.dart';
import '../../widget/confirmDialog.dart';
import '../../widget/debug/cacheView.dart';
import '../../widget/debug/jsonViewer.dart';
+import 'privacyInfo.dart';
class Settings extends StatefulWidget {
const Settings({Key? key}) : super(key: key);
@@ -156,20 +157,37 @@ class _SettingsState extends State {
ListTile(
leading: const Icon(Icons.policy_outlined),
- title: const Text("Datenschutz"),
+ title: const Text("Impressum & Datenschutz"),
onTap: () {
- ConfirmDialog.openBrowser(context, "https://mhsl.eu/datenschutz.html");
+ showDialog(context: context, builder: (context) {
+ return SimpleDialog(
+ children: [
+ ListTile(
+ leading: const CenteredLeading(Icon(Icons.school_outlined)),
+ title: const Text("Infos zum Marianum Fulda"),
+ subtitle: const Text("Für Talk-Chats und Dateien"),
+ trailing: const Icon(Icons.arrow_right),
+ onTap: () => PrivacyInfo(providerText: "Marianum", imprintUrl: "https://www.marianum-fulda.de/impressum", privacyUrl: "https://www.marianum-fulda.de/datenschutz").showPopup(context)
+ ),
+ ListTile(
+ leading: const CenteredLeading(Icon(Icons.date_range_outlined)),
+ title: const Text("Infos zu Web-/ Untis"),
+ subtitle: const Text("Für den Vertretungsplan"),
+ trailing: const Icon(Icons.arrow_right),
+ onTap: () => PrivacyInfo(providerText: "Untis", imprintUrl: "https://www.untis.at/impressum", privacyUrl: "https://www.untis.at/datenschutz-wu-apps").showPopup(context)
+ ),
+ ListTile(
+ leading: const CenteredLeading(Icon(Icons.send_time_extension_outlined)),
+ title: const Text("Infos zu mhsl"),
+ subtitle: const Text("Für Countdowns, Marianum Message und mehr"),
+ trailing: const Icon(Icons.arrow_right),
+ onTap: () => PrivacyInfo(providerText: "mhsl", imprintUrl: "https://mhsl.eu/id.html", privacyUrl: "https://mhsl.eu/datenschutz.html").showPopup(context),
+ ),
+ ],
+ );
+ });
},
- trailing: const Icon(Icons.open_in_new),
- ),
-
- ListTile(
- leading: const Icon(Icons.badge_outlined),
- title: const Text("Impressum"),
- onTap: () {
- ConfirmDialog.openBrowser(context, "https://mhsl.eu/id.html");
- },
- trailing: const Icon(Icons.open_in_new),
+ trailing: const Icon(Icons.arrow_right),
),
const Divider(),
diff --git a/lib/widget/quickMenu.dart b/lib/widget/quickMenu.dart
new file mode 100644
index 0000000..0c39968
--- /dev/null
+++ b/lib/widget/quickMenu.dart
@@ -0,0 +1,23 @@
+import 'package:flutter/material.dart';
+
+class QuickMenu {
+ static void quickMenu(BuildContext context, BuildContext widgetContext, List> items) {
+ final RenderBox overlay = Overlay.of(context).context.findRenderObject() as RenderBox;
+
+ final RenderBox widgetRenderBox = widgetContext.findRenderObject() as RenderBox;
+ final Offset position = widgetRenderBox.localToGlobal(Offset.zero);
+
+ showMenu(
+ context: context,
+ position: RelativeRect.fromRect(
+ Rect.fromPoints(
+ position,
+ position.translate(0, 0),
+ ),
+ Offset.zero & overlay.size,
+ ),
+ items: items,
+ );
+ }
+
+}
\ No newline at end of file
diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc
index f6f23bf..7299b5c 100644
--- a/linux/flutter/generated_plugin_registrant.cc
+++ b/linux/flutter/generated_plugin_registrant.cc
@@ -6,9 +6,13 @@
#include "generated_plugin_registrant.h"
+#include
#include
void fl_register_plugins(FlPluginRegistry* registry) {
+ g_autoptr(FlPluginRegistrar) file_selector_linux_registrar =
+ fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin");
+ file_selector_plugin_register_with_registrar(file_selector_linux_registrar);
g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake
index f16b4c3..786ff5c 100644
--- a/linux/flutter/generated_plugins.cmake
+++ b/linux/flutter/generated_plugins.cmake
@@ -3,6 +3,7 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
+ file_selector_linux
url_launcher_linux
)
diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift
index 7026e66..9d5f78f 100644
--- a/macos/Flutter/GeneratedPluginRegistrant.swift
+++ b/macos/Flutter/GeneratedPluginRegistrant.swift
@@ -6,6 +6,7 @@ import FlutterMacOS
import Foundation
import device_info_plus
+import file_selector_macos
import package_info
import path_provider_foundation
import shared_preferences_foundation
@@ -15,6 +16,7 @@ import url_launcher_macos
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
+ FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
FLTPackageInfoPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
diff --git a/pubspec.yaml b/pubspec.yaml
index f90f882..2e7bbb8 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -17,7 +17,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
-version: 0.0.1+6
+version: 0.0.1+7
environment:
sdk: '>3.0.0'
diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc
index 9871f6b..779f0ee 100644
--- a/windows/flutter/generated_plugin_registrant.cc
+++ b/windows/flutter/generated_plugin_registrant.cc
@@ -6,10 +6,13 @@
#include "generated_plugin_registrant.h"
+#include
#include
#include
void RegisterPlugins(flutter::PluginRegistry* registry) {
+ FileSelectorWindowsRegisterWithRegistrar(
+ registry->GetRegistrarForPlugin("FileSelectorWindows"));
SyncfusionPdfviewerWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("SyncfusionPdfviewerWindowsPlugin"));
UrlLauncherWindowsRegisterWithRegistrar(
diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake
index 2487723..3757972 100644
--- a/windows/flutter/generated_plugins.cmake
+++ b/windows/flutter/generated_plugins.cmake
@@ -3,6 +3,7 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
+ file_selector_windows
syncfusion_pdfviewer_windows
url_launcher_windows
)