From b0bbad7f973b52c1fcd4161e74ce84880a09a271 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= <elias@elias-mueller.com> Date: Sun, 16 Feb 2025 18:08:04 +0100 Subject: [PATCH] added timetable widget for android devices --- android/app/build.gradle | 3 + android/app/src/main/AndroidManifest.xml | 76 +++-- .../marianum/mobile/client/TimetableWidget.kt | 39 +++ .../timetable_widget_default.png | Bin 0 -> 100793 bytes .../timetable_widget_preview.png | Bin 0 -> 48668 bytes .../drawable-v21/app_widget_background.xml | 10 + .../app_widget_inner_view_background.xml | 10 + .../src/main/res/layout/timetable_widget.xml | 26 ++ .../src/main/res/values-night-v31/themes.xml | 10 + .../app/src/main/res/values-v21/styles.xml | 14 + .../app/src/main/res/values-v31/styles.xml | 14 + .../app/src/main/res/values-v31/themes.xml | 11 + android/app/src/main/res/values/attrs.xml | 7 + android/app/src/main/res/values/colors.xml | 6 + android/app/src/main/res/values/dimens.xml | 10 + android/app/src/main/res/values/strings.xml | 6 + android/app/src/main/res/values/styles.xml | 10 + android/app/src/main/res/values/themes.xml | 17 ++ .../main/res/xml/timetable_widget_info.xml | 16 + android/build.gradle | 10 + .../timetable/timetableHomeWidget.dart | 76 +++++ lib/main.dart | 1 - lib/view/pages/timetable/calendar.dart | 287 ++++++++++++++++++ lib/view/pages/timetable/timetable.dart | 287 +----------------- pubspec.yaml | 4 +- 25 files changed, 650 insertions(+), 300 deletions(-) create mode 100644 android/app/src/main/java/eu/mhsl/marianum/mobile/client/TimetableWidget.kt create mode 100644 android/app/src/main/res/drawable-nodpi/timetable_widget_default.png create mode 100644 android/app/src/main/res/drawable-nodpi/timetable_widget_preview.png create mode 100644 android/app/src/main/res/drawable-v21/app_widget_background.xml create mode 100644 android/app/src/main/res/drawable-v21/app_widget_inner_view_background.xml create mode 100644 android/app/src/main/res/layout/timetable_widget.xml create mode 100644 android/app/src/main/res/values-night-v31/themes.xml create mode 100644 android/app/src/main/res/values-v21/styles.xml create mode 100644 android/app/src/main/res/values-v31/themes.xml create mode 100644 android/app/src/main/res/values/attrs.xml create mode 100644 android/app/src/main/res/values/colors.xml create mode 100644 android/app/src/main/res/values/dimens.xml create mode 100644 android/app/src/main/res/values/strings.xml create mode 100644 android/app/src/main/res/values/themes.xml create mode 100644 android/app/src/main/res/xml/timetable_widget_info.xml create mode 100644 lib/homescreen_widgets/timetable/timetableHomeWidget.dart create mode 100644 lib/view/pages/timetable/calendar.dart diff --git a/android/app/build.gradle b/android/app/build.gradle index 53332cf..77903e3 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -57,6 +57,9 @@ android { signingConfig signingConfigs.debug } } + buildFeatures { + viewBinding true + } } flutter { diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 3c24865..530ed37 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,45 +1,69 @@ +<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> + + <!-- + Required to query activities that can process text, see: + https://developer.android.com/training/package-visibility?hl=en and + https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT. + + In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. + --> + <queries> + <intent> + <action android:name="android.intent.action.PROCESS_TEXT" /> + + <data android:mimeType="text/plain" /> + </intent> + </queries> + + <uses-permission android:name="android.permission.INTERNET" /> + <application - android:label="Marianum Fulda" android:name="${applicationName}" - android:icon="@mipmap/ic_launcher"> + android:icon="@mipmap/ic_launcher" + android:label="Marianum Fulda"> + <receiver + android:name=".TimetableWidget" + android:exported="false"> + <intent-filter> + <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> + </intent-filter> + + <meta-data + android:name="android.appwidget.provider" + android:resource="@xml/timetable_widget_info" /> + </receiver> + <activity android:name=".MainActivity" + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:exported="true" + android:hardwareAccelerated="true" android:launchMode="singleTop" android:theme="@style/LaunchTheme" - android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" - android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> - <!-- Specifies an Android theme to apply to this Activity as soon as + + <!-- + Specifies an Android theme to apply to this Activity as soon as the Android process has started. This theme is visible to the user while the Flutter UI initializes. After that, this theme continues - to determine the Window background behind the Flutter UI. --> + to determine the Window background behind the Flutter UI. + --> <meta-data - android:name="io.flutter.embedding.android.NormalTheme" - android:resource="@style/NormalTheme" - /> + android:name="io.flutter.embedding.android.NormalTheme" + android:resource="@style/NormalTheme" /> + <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> - <!-- Don't delete the meta-data below. - This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> + <!-- + Don't delete the meta-data below. + This is used by the Flutter tool to generate GeneratedPluginRegistrant.java + --> <meta-data android:name="flutterEmbedding" android:value="2" /> </application> - <!-- Required to query activities that can process text, see: - https://developer.android.com/training/package-visibility?hl=en and - https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT. - - In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. --> - <queries> - <intent> - <action android:name="android.intent.action.PROCESS_TEXT"/> - <data android:mimeType="text/plain"/> - </intent> - </queries> - <uses-permission android:name="android.permission.INTERNET"/> -</manifest> +</manifest> \ No newline at end of file diff --git a/android/app/src/main/java/eu/mhsl/marianum/mobile/client/TimetableWidget.kt b/android/app/src/main/java/eu/mhsl/marianum/mobile/client/TimetableWidget.kt new file mode 100644 index 0000000..1c9e3ac --- /dev/null +++ b/android/app/src/main/java/eu/mhsl/marianum/mobile/client/TimetableWidget.kt @@ -0,0 +1,39 @@ +package eu.mhsl.marianum.mobile.client + +import android.app.PendingIntent +import android.appwidget.AppWidgetManager +import android.appwidget.AppWidgetProvider +import android.content.Context +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.widget.RemoteViews + +import es.antonborri.home_widget.HomeWidgetPlugin +import android.util.Base64 + +/** + * Implementation of App Widget functionality. + */ +class TimetableWidget : AppWidgetProvider() { + override fun onUpdate( + context: Context, + appWidgetManager: AppWidgetManager, + appWidgetIds: IntArray, + ) { + for (appWidgetId in appWidgetIds) { + val widgetData = HomeWidgetPlugin.getData(context) + val views = RemoteViews(context.packageName, R.layout.timetable_widget).apply { + val imageBase64 = widgetData.getString("screen", null) ?: return@apply + val imageBytes = Base64.decode(imageBase64, Base64.DEFAULT); + val imageBitmap: Bitmap = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.size) + setImageViewBitmap(R.id.widget_image, imageBitmap) + } + + val launchIntent = context.packageManager.getLaunchIntentForPackage(context.packageName) + val pendingIntent = PendingIntent.getActivity(context, 0, launchIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE) + views.setOnClickPendingIntent(R.id.background, pendingIntent) + + appWidgetManager.updateAppWidget(appWidgetId, views) + } + } +} \ No newline at end of file diff --git a/android/app/src/main/res/drawable-nodpi/timetable_widget_default.png b/android/app/src/main/res/drawable-nodpi/timetable_widget_default.png new file mode 100644 index 0000000000000000000000000000000000000000..4079ef949225c2e2c9b8a3599556265da20fc08d GIT binary patch literal 100793 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 Zo=NP)Pm2kDhC&QL;OXk;vd$@?2>_KUkOlw% literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-nodpi/timetable_widget_preview.png b/android/app/src/main/res/drawable-nodpi/timetable_widget_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..3f3ca0d2f6cf322d599ecc658dee7352c4d99a07 GIT binary patch literal 48668 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 W2Fv?CZiM}UPDM#wG3WG^+y5UE2Ie#X literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-v21/app_widget_background.xml b/android/app/src/main/res/drawable-v21/app_widget_background.xml new file mode 100644 index 0000000..785445c --- /dev/null +++ b/android/app/src/main/res/drawable-v21/app_widget_background.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Background for widgets to make the rounded corners based on the +appWidgetRadius attribute value +--> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + + <corners android:radius="?attr/appWidgetRadius" /> + <solid android:color="?android:attr/colorBackground" /> +</shape> \ No newline at end of file diff --git a/android/app/src/main/res/drawable-v21/app_widget_inner_view_background.xml b/android/app/src/main/res/drawable-v21/app_widget_inner_view_background.xml new file mode 100644 index 0000000..007e287 --- /dev/null +++ b/android/app/src/main/res/drawable-v21/app_widget_inner_view_background.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?><!-- +Background for views inside widgets to make the rounded corners based on the +appWidgetInnerRadius attribute value +--> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + + <corners android:radius="?attr/appWidgetInnerRadius" /> + <solid android:color="?android:attr/colorAccent" /> +</shape> \ No newline at end of file diff --git a/android/app/src/main/res/layout/timetable_widget.xml b/android/app/src/main/res/layout/timetable_widget.xml new file mode 100644 index 0000000..56cb7fd --- /dev/null +++ b/android/app/src/main/res/layout/timetable_widget.xml @@ -0,0 +1,26 @@ +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/background" + style="@style/Widget.Android.AppWidget.Container" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@android:color/transparent" + android:padding="0dp" + android:theme="@style/Theme.Android.AppWidgetContainer"> + + <ImageView + android:id="@+id/widget_image" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_alignParentLeft="true" + android:layout_marginLeft="0dp" + android:layout_marginTop="0dp" + android:layout_marginBottom="0dp" + android:layout_weight="1" + android:adjustViewBounds="false" + android:background="@android:color/transparent" + android:scaleType="fitCenter" + android:src="@drawable/timetable_widget_default" + android:visibility="visible" + tools:visibility="visible" /> +</RelativeLayout> \ No newline at end of file diff --git a/android/app/src/main/res/values-night-v31/themes.xml b/android/app/src/main/res/values-night-v31/themes.xml new file mode 100644 index 0000000..f253c9d --- /dev/null +++ b/android/app/src/main/res/values-night-v31/themes.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- + Having themes.xml for night-v31 because of the priority order of the resource qualifiers. + --> + <style name="Theme.Android.AppWidgetContainerParent" parent="@android:style/Theme.DeviceDefault.DayNight"> + <item name="appWidgetRadius">@android:dimen/system_app_widget_background_radius</item> + <item name="appWidgetInnerRadius">@android:dimen/system_app_widget_inner_radius</item> + </style> +</resources> \ No newline at end of file diff --git a/android/app/src/main/res/values-v21/styles.xml b/android/app/src/main/res/values-v21/styles.xml new file mode 100644 index 0000000..0b35f7d --- /dev/null +++ b/android/app/src/main/res/values-v21/styles.xml @@ -0,0 +1,14 @@ +<resources> + + <style name="Widget.Android.AppWidget.Container" parent="android:Widget"> + <item name="android:id">@android:id/background</item> + <item name="android:padding">?attr/appWidgetPadding</item> + <item name="android:background">@drawable/app_widget_background</item> + </style> + + <style name="Widget.Android.AppWidget.InnerView" parent="android:Widget"> + <item name="android:padding">?attr/appWidgetPadding</item> + <item name="android:background">@drawable/app_widget_inner_view_background</item> + <item name="android:textColor">?android:attr/textColorPrimary</item> + </style> +</resources> \ No newline at end of file diff --git a/android/app/src/main/res/values-v31/styles.xml b/android/app/src/main/res/values-v31/styles.xml index ae64507..c5f4f25 100644 --- a/android/app/src/main/res/values-v31/styles.xml +++ b/android/app/src/main/res/values-v31/styles.xml @@ -18,4 +18,18 @@ <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar"> <item name="android:windowBackground">?android:colorBackground</item> </style> + + <style name="Widget.Android.AppWidget.Container" parent="android:Widget"> + <item name="android:id">@android:id/background</item> + <item name="android:padding">?attr/appWidgetPadding</item> + <item name="android:background">@drawable/app_widget_background</item> + <item name="android:clipToOutline">true</item> + </style> + + <style name="Widget.Android.AppWidget.InnerView" parent="android:Widget"> + <item name="android:padding">?attr/appWidgetPadding</item> + <item name="android:background">@drawable/app_widget_inner_view_background</item> + <item name="android:textColor">?android:attr/textColorPrimary</item> + <item name="android:clipToOutline">true</item> + </style> </resources> diff --git a/android/app/src/main/res/values-v31/themes.xml b/android/app/src/main/res/values-v31/themes.xml new file mode 100644 index 0000000..badd306 --- /dev/null +++ b/android/app/src/main/res/values-v31/themes.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- + Having themes.xml for v31 variant because @android:dimen/system_app_widget_background_radius + and @android:dimen/system_app_widget_internal_padding requires API level 31 + --> + <style name="Theme.Android.AppWidgetContainerParent" parent="@android:style/Theme.DeviceDefault.DayNight"> + <item name="appWidgetRadius">@android:dimen/system_app_widget_background_radius</item> + <item name="appWidgetInnerRadius">@android:dimen/system_app_widget_inner_radius</item> + </style> +</resources> \ No newline at end of file diff --git a/android/app/src/main/res/values/attrs.xml b/android/app/src/main/res/values/attrs.xml new file mode 100644 index 0000000..7781ac8 --- /dev/null +++ b/android/app/src/main/res/values/attrs.xml @@ -0,0 +1,7 @@ +<resources> + <declare-styleable name="AppWidgetAttrs"> + <attr name="appWidgetPadding" format="dimension" /> + <attr name="appWidgetInnerRadius" format="dimension" /> + <attr name="appWidgetRadius" format="dimension" /> + </declare-styleable> +</resources> \ No newline at end of file diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..b2bffa8 --- /dev/null +++ b/android/app/src/main/res/values/colors.xml @@ -0,0 +1,6 @@ +<resources> + <color name="light_blue_50">#FFE1F5FE</color> + <color name="light_blue_200">#FF81D4FA</color> + <color name="light_blue_600">#FF039BE5</color> + <color name="light_blue_900">#FF01579B</color> +</resources> \ No newline at end of file diff --git a/android/app/src/main/res/values/dimens.xml b/android/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..4db8c59 --- /dev/null +++ b/android/app/src/main/res/values/dimens.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- +Refer to App Widget Documentation for margin information +http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout + --> + <dimen name="widget_margin">0dp</dimen> + +</resources> \ No newline at end of file diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..3bf528f --- /dev/null +++ b/android/app/src/main/res/values/strings.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="appwidget_text">Marianum Vertretungsplan</string> + <string name="add_widget">Hinzufügen</string> + <string name="app_widget_description">Übersicht zum Vertretungsplan</string> +</resources> \ No newline at end of file diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index 0d1fa8f..4a56836 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -19,4 +19,14 @@ <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar"> <item name="android:windowBackground">?android:colorBackground</item> </style> + + <style name="Widget.Android.AppWidget.Container" parent="android:Widget"> + <item name="android:id">@android:id/background</item> + <item name="android:background">?android:attr/colorBackground</item> + </style> + + <style name="Widget.Android.AppWidget.InnerView" parent="android:Widget"> + <item name="android:background">?android:attr/colorBackground</item> + <item name="android:textColor">?android:attr/textColorPrimary</item> + </style> </resources> diff --git a/android/app/src/main/res/values/themes.xml b/android/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..dcd8899 --- /dev/null +++ b/android/app/src/main/res/values/themes.xml @@ -0,0 +1,17 @@ +<resources> + + <style name="Theme.Android.AppWidgetContainerParent" parent="@android:style/Theme.DeviceDefault"> + <!-- Radius of the outer bound of widgets to make the rounded corners --> + <item name="appWidgetRadius">16dp</item> + <!-- + Radius of the inner view's bound of widgets to make the rounded corners. + It needs to be 8dp or less than the value of appWidgetRadius + --> + <item name="appWidgetInnerRadius">8dp</item> + </style> + + <style name="Theme.Android.AppWidgetContainer" parent="Theme.Android.AppWidgetContainerParent"> + <!-- Apply padding to avoid the content of the widget colliding with the rounded corners --> + <item name="appWidgetPadding">16dp</item> + </style> +</resources> \ No newline at end of file diff --git a/android/app/src/main/res/xml/timetable_widget_info.xml b/android/app/src/main/res/xml/timetable_widget_info.xml new file mode 100644 index 0000000..a05e013 --- /dev/null +++ b/android/app/src/main/res/xml/timetable_widget_info.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" + android:description="@string/app_widget_description" + android:initialKeyguardLayout="@layout/timetable_widget" + android:initialLayout="@layout/timetable_widget" + android:minWidth="220dp" + android:minHeight="294dp" + android:minResizeWidth="110dp" + android:minResizeHeight="147dp" + android:previewImage="@drawable/timetable_widget_preview" + android:previewLayout="@layout/timetable_widget" + android:resizeMode="horizontal|vertical" + android:targetCellWidth="3" + android:targetCellHeight="4" + android:updatePeriodMillis="86400000" + android:widgetCategory="home_screen" /> \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle index bc157bd..d236fb3 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -5,6 +5,16 @@ allprojects { } } +buildscript { + repositories { + google() + mavenCentral() + } + dependencies { + classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10' + } +} + rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" diff --git a/lib/homescreen_widgets/timetable/timetableHomeWidget.dart b/lib/homescreen_widgets/timetable/timetableHomeWidget.dart new file mode 100644 index 0000000..c8c803f --- /dev/null +++ b/lib/homescreen_widgets/timetable/timetableHomeWidget.dart @@ -0,0 +1,76 @@ +import 'dart:convert'; +import 'dart:developer'; + +import 'package:flutter/material.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:home_widget/home_widget.dart'; +import 'package:provider/provider.dart'; +import 'package:screenshot/screenshot.dart'; +import 'package:syncfusion_flutter_calendar/calendar.dart'; + +import '../../model/timetable/timetableProps.dart'; +import '../../storage/base/settingsProvider.dart'; +import '../../theming/darkAppTheme.dart'; +import '../../theming/lightAppTheme.dart'; +import '../../view/pages/timetable/calendar.dart'; + +class TimetableHomeWidget { + + static void update(BuildContext context) { + var data = Provider.of<TimetableProps>(context, listen: false); + var settings = Provider.of<SettingsProvider>(context, listen: false); + + if(data.primaryLoading()) { + log('Could not generate widget screen because no data was found!'); + return; + } + + log('Generating widget screen...'); + var screenshotController = ScreenshotController(); + var calendarController = CalendarController(); + calendarController.displayDate = DateTime.now().copyWith(hour: 07, minute: 00); + + screenshotController.captureFromWidget( + delay: Duration(milliseconds: 100), + SizedBox( + height: 700, + width: 300, + child: Directionality( + textDirection: TextDirection.ltr, + child: MediaQuery( + data: MediaQueryData(), + child: MaterialApp( + localizationsDelegates: const [ + ...GlobalMaterialLocalizations.delegates, + GlobalWidgetsLocalizations.delegate, + ], + supportedLocales: const [ + Locale('de'), + Locale('en'), + ], + locale: const Locale('de'), + darkTheme: DarkAppTheme.theme, + theme: LightAppTheme.theme, + themeMode: settings.val().appTheme, + home: ClipRRect( + borderRadius: BorderRadius.circular(20), + child: Scaffold( + body: Calendar( + controller: calendarController, + timetableProps: data, + settings: settings, + isHomeWidget: true, + ), + ), + ), + ), + ), + ), + ), + ).then((value) { + HomeWidget.saveWidgetData<String>('screen', base64.encode(value)); + HomeWidget.updateWidget(name: 'TimetableWidget'); + log('Widget screen successfully updated! (${value.length})'); + }); + } +} diff --git a/lib/main.dart b/lib/main.dart index 6f20ebb..d9d6ec1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -125,7 +125,6 @@ class _MainState extends State<Main> { checkerboardOffscreenLayers: devToolsSettings.checkerboardOffscreenLayers, checkerboardRasterCacheImages: devToolsSettings.checkerboardRasterCacheImages, - debugShowCheckedModeBanner: false, localizationsDelegates: const [ ...GlobalMaterialLocalizations.delegates, GlobalWidgetsLocalizations.delegate, diff --git a/lib/view/pages/timetable/calendar.dart b/lib/view/pages/timetable/calendar.dart new file mode 100644 index 0000000..0f99fdd --- /dev/null +++ b/lib/view/pages/timetable/calendar.dart @@ -0,0 +1,287 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:syncfusion_flutter_calendar/calendar.dart'; + +import '../../../api/webuntis/queries/getHolidays/getHolidaysResponse.dart'; +import '../../../api/webuntis/queries/getTimetable/getTimetableResponse.dart'; +import '../../../extensions/dateTime.dart'; +import '../../../model/timetable/timetableProps.dart'; +import '../../../storage/base/settingsProvider.dart'; +import 'appointmenetComponent.dart'; +import 'appointmentDetails.dart'; +import 'arbitraryAppointment.dart'; +import 'customTimetableColors.dart'; +import 'timeRegionComponent.dart'; +import 'timetableEvents.dart'; +import 'timetableNameMode.dart'; + +class Calendar extends StatefulWidget { + final CalendarController controller; + final TimetableProps timetableProps; + final SettingsProvider settings; + final bool isHomeWidget; + const Calendar({super.key, required this.controller, required this.timetableProps, required this.settings, this.isHomeWidget = false}); + + @override + State<Calendar> createState() => _CalendarState(); +} + +class _CalendarState extends State<Calendar> { + @override + Widget build(BuildContext context) { + var holidays = widget.timetableProps.getHolidaysResponse; + return SfCalendar( + timeZone: 'W. Europe Standard Time', + view: widget.isHomeWidget ? CalendarView.day : CalendarView.workWeek, + dataSource: _buildTableEvents(widget.timetableProps), + + maxDate: DateTime.now().add(const Duration(days: 7)).nextWeekday(DateTime.saturday), + minDate: DateTime.now().subtract(const Duration (days: 14)).nextWeekday(DateTime.sunday), + + controller: widget.controller, + + onViewChanged: (ViewChangedDetails details) { + if(widget.isHomeWidget) return; + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + Provider.of<TimetableProps>(context, listen: false).updateWeek(details.visibleDates.first, details.visibleDates.last); + }); + }, + + onTap: (calendarTapDetails) { + if(calendarTapDetails.appointments == null) return; + Appointment tapped = calendarTapDetails.appointments!.first; + AppointmentDetails.show(context, widget.timetableProps, tapped); + }, + + firstDayOfWeek: DateTime.monday, + specialRegions: _buildSpecialTimeRegions(holidays), + timeSlotViewSettings: TimeSlotViewSettings( + startHour: widget.isHomeWidget ? 08 : 07.5, + endHour: widget.isHomeWidget ? 16 : 16.5, + timeInterval: Duration(minutes: 30), + timeFormat: 'HH:mm', + dayFormat: 'EE', + timeIntervalHeight: 40, + ), + + timeRegionBuilder: (BuildContext context, TimeRegionDetails timeRegionDetails) => TimeRegionComponent(details: timeRegionDetails), + appointmentBuilder: (BuildContext context, CalendarAppointmentDetails details) => AppointmentComponent( + details: details, + crossedOut: _isCrossedOut(details) + ), + + headerHeight: 0, + selectionDecoration: const BoxDecoration(), + + allowAppointmentResize: false, + allowDragAndDrop: false, + allowViewNavigation: false, + ); + } + + List<TimeRegion> _buildSpecialTimeRegions(GetHolidaysResponse holidays) { + var lastMonday = DateTime.now().subtract(const Duration(days: 14)).nextWeekday(DateTime.monday); + var firstBreak = lastMonday.copyWith(hour: 10, minute: 15); + var secondBreak = lastMonday.copyWith(hour: 13, minute: 50); + + var holidayList = holidays.result.map((holiday) { + var startDay = _parseWebuntisTimestamp(holiday.startDate, 0); + var dayCount = _parseWebuntisTimestamp(holiday.endDate, 0) + .difference(startDay) + .inDays; + var days = List<DateTime>.generate(dayCount, (index) => startDay.add(Duration(days: index))); + + return days.map((holidayDay) => TimeRegion( + startTime: holidayDay.copyWith(hour: 07, minute: 55), + endTime: holidayDay.copyWith(hour: 16, minute: 30), + text: 'holiday:${holiday.name}', + color: Theme + .of(context) + .disabledColor + .withAlpha(50), + iconData: Icons.holiday_village_outlined + )); + }).expand((e) => e); + + bool isInHoliday(DateTime time) => holidayList.any((element) => element.startTime.isSameDay(time)); + + return [ + ...holidayList, + + if(!isInHoliday(firstBreak)) + TimeRegion( + startTime: firstBreak, + endTime: firstBreak.add(const Duration(minutes: 20)), + recurrenceRule: 'FREQ=DAILY;INTERVAL=1', + text: 'centerIcon', + color: Theme.of(context).primaryColor.withAlpha(50), + iconData: Icons.restaurant + ), + + if(!isInHoliday(secondBreak)) + TimeRegion( + startTime: secondBreak, + endTime: secondBreak.add(const Duration(minutes: 15)), + recurrenceRule: 'FREQ=DAILY;INTERVAL=1', + text: 'centerIcon', + color: Theme.of(context).primaryColor.withAlpha(50), + iconData: Icons.restaurant + ), + ]; + } + + List<GetTimetableResponseObject> _removeDuplicates(TimetableProps data, Duration maxTimeBetweenDouble) { + + var timetableList = data.getTimetableResponse.result.toList(); + + if(timetableList.isEmpty) return timetableList; + + timetableList.sort((a, b) => _parseWebuntisTimestamp(a.date, a.startTime).compareTo(_parseWebuntisTimestamp(b.date, b.startTime))); + + var previousElement = timetableList.first; + for(var i = 1; i < timetableList.length; i++) { + var currentElement = timetableList.elementAt(i); + + bool isSameLesson() { + var currentSubjectId = currentElement.su.firstOrNull?.id; + var previousSubjectId = previousElement.su.firstOrNull?.id; + + if(currentSubjectId == null || previousSubjectId == null || currentSubjectId != previousSubjectId) return false; + + var currentRoomId = currentElement.ro.firstOrNull?.id; + var previousRoomId = previousElement.ro.firstOrNull?.id; + + if(currentRoomId != previousRoomId) return false; + + var currentTeacherId = currentElement.te.firstOrNull?.id; + var previousTeacherId = previousElement.te.firstOrNull?.id; + + if(currentTeacherId != previousTeacherId) return false; + + var currentStatusCode = currentElement.code; + var previousStatusCode = previousElement.code; + + if(currentStatusCode != previousStatusCode) return false; + + return true; + } + + bool isNotSeparated() => _parseWebuntisTimestamp(previousElement.date, previousElement.endTime).add(maxTimeBetweenDouble) + .isSameOrAfter(_parseWebuntisTimestamp(currentElement.date, currentElement.startTime)); + + if(isSameLesson() && isNotSeparated()) { + previousElement.endTime = currentElement.endTime; + timetableList.remove(currentElement); + i--; + } else { + previousElement = currentElement; + } + } + + return timetableList; + } + + TimetableEvents _buildTableEvents(TimetableProps data) { + + var timetableList = data.getTimetableResponse.result.toList(); + + if(widget.settings.val().timetableSettings.connectDoubleLessons) { + timetableList = _removeDuplicates(data, const Duration(minutes: 5)); + } + + var appointments = timetableList.map((element) { + + var rooms = data.getRoomsResponse; + var subjects = data.getSubjectsResponse; + + try { + var startTime = _parseWebuntisTimestamp(element.date, element.startTime); + var endTime = _parseWebuntisTimestamp(element.date, element.endTime); + + var subject = subjects.result.firstWhere((subject) => subject.id == element.su[0].id); + var subjectName = { + TimetableNameMode.name: subject.name, + TimetableNameMode.longName: subject.longName, + TimetableNameMode.alternateName: subject.alternateName, + }[widget.settings.val().timetableSettings.timetableNameMode]; + + + return Appointment( + id: ArbitraryAppointment(webuntis: element), + startTime: startTime, + endTime: endTime, + subject: subjectName!, + location: '' + '${rooms.result.firstWhere((room) => room.id == element.ro[0].id).name}' + '\n' + '${element.te.first.longname}', + notes: element.activityType, + color: _getEventColor(element, startTime, endTime), + ); + } catch(e) { + var endTime = _parseWebuntisTimestamp(element.date, element.endTime); + return Appointment( + id: ArbitraryAppointment(webuntis: element), + startTime: _parseWebuntisTimestamp(element.date, element.startTime), + endTime: endTime, + subject: 'Änderung', + notes: element.info, + location: 'Unbekannt', + color: endTime.isBefore(DateTime.now()) ? Theme.of(context).primaryColor.withAlpha(100) : Theme.of(context).primaryColor, + startTimeZone: '', + endTimeZone: '', + ); + } + }).toList(); + + appointments.addAll(data.getCustomTimetableEventResponse.events.map((customEvent) => Appointment( + id: ArbitraryAppointment(custom: customEvent), + startTime: customEvent.startDate, + endTime: customEvent.endDate, + location: customEvent.description, + subject: customEvent.title, + recurrenceRule: customEvent.rrule, + color: TimetableColors.getColorFromString(customEvent.color ?? TimetableColors.defaultColor.name), + startTimeZone: '', + endTimeZone: '', + ))); + + return TimetableEvents(appointments); + } + + DateTime _parseWebuntisTimestamp(int date, int time) { + var timeString = time.toString().padLeft(4, '0'); + return DateTime.parse('$date ${timeString.substring(0, 2)}:${timeString.substring(2, 4)}'); + } + + Color _getEventColor(GetTimetableResponseObject webuntisElement, DateTime startTime, DateTime endTime) { + // Make element darker, when it already took place + var alpha = endTime.isBefore(DateTime.now()) ? 100 : 255; + + // Cancelled + if(webuntisElement.code == 'cancelled') return const Color(0xff000000).withAlpha(alpha); + + // Any changes or no teacher at this element + if(webuntisElement.code == 'irregular' || webuntisElement.te.first.id == 0) return const Color(0xff8F19B3).withAlpha(alpha); + + // Teacher has changed + if(webuntisElement.te.any((element) => element.orgname != null)) return const Color(0xFF29639B).withAlpha(alpha); + + // Event was in the past + if(endTime.isBefore(DateTime.now())) return Theme.of(context).primaryColor.withAlpha(alpha); + + // Event takes currently place + if(endTime.isAfter(DateTime.now()) && startTime.isBefore(DateTime.now())) return Theme.of(context).primaryColor.withRed(200); + + // Fallback + return Theme.of(context).primaryColor.withAlpha(alpha); + } + + bool _isCrossedOut(CalendarAppointmentDetails calendarEntry) { + var appointment = calendarEntry.appointments.first.id as ArbitraryAppointment; + if(appointment.hasWebuntis()) { + return appointment.webuntis!.code == 'cancelled'; + } + return false; + } +} diff --git a/lib/view/pages/timetable/timetable.dart b/lib/view/pages/timetable/timetable.dart index 9c939be..8109c51 100644 --- a/lib/view/pages/timetable/timetable.dart +++ b/lib/view/pages/timetable/timetable.dart @@ -2,24 +2,16 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import '../../../extensions/dateTime.dart'; import 'package:provider/provider.dart'; import 'package:syncfusion_flutter_calendar/calendar.dart'; -import '../../../api/webuntis/queries/getHolidays/getHolidaysResponse.dart'; -import '../../../api/webuntis/queries/getTimetable/getTimetableResponse.dart'; +import '../../../homescreen_widgets/timetable/timetableHomeWidget.dart'; import '../../../model/timetable/timetableProps.dart'; import '../../../storage/base/settingsProvider.dart'; import '../../../widget/loadingSpinner.dart'; import '../../../widget/placeholderView.dart'; -import 'appointmenetComponent.dart'; -import 'appointmentDetails.dart'; -import 'arbitraryAppointment.dart'; -import 'customTimetableColors.dart'; +import 'calendar.dart'; import 'customTimetableEventEditDialog.dart'; -import 'timeRegionComponent.dart'; -import 'timetableEvents.dart'; -import 'timetableNameMode.dart'; import 'viewCustomTimetableEvents.dart'; class Timetable extends StatefulWidget { @@ -34,12 +26,11 @@ enum CalendarActions { addEvent, viewEvents } class _TimetableState extends State<Timetable> { CalendarController controller = CalendarController(); late Timer updateTimings; - late final SettingsProvider settings; + late SettingsProvider settings; @override void initState() { settings = Provider.of<SettingsProvider>(context, listen: false); - WidgetsBinding.instance.addPostFrameCallback((timeStamp) { Provider.of<TimetableProps>(context, listen: false).run(); }); @@ -56,6 +47,7 @@ class _TimetableState extends State<Timetable> { appBar: AppBar( title: const Text('Stunden & Vertretungsplan'), actions: [ + IconButton(onPressed: () => TimetableHomeWidget.update(context), icon: Icon(Icons.screen_share_outlined)), IconButton( icon: const Icon(Icons.home_outlined), onPressed: () { @@ -119,62 +111,19 @@ class _TimetableState extends State<Timetable> { if(value.primaryLoading()) return const LoadingSpinner(); - var holidays = value.getHolidaysResponse; - return RefreshIndicator( - child: SfCalendar( - timeZone: 'W. Europe Standard Time', - view: CalendarView.workWeek, - dataSource: _buildTableEvents(value), - - maxDate: DateTime.now().add(const Duration(days: 7)).nextWeekday(DateTime.saturday), - minDate: DateTime.now().subtract(const Duration (days: 14)).nextWeekday(DateTime.sunday), - - controller: controller, - - onViewChanged: (ViewChangedDetails details) { - WidgetsBinding.instance.addPostFrameCallback((timeStamp) { - Provider.of<TimetableProps>(context, listen: false).updateWeek(details.visibleDates.first, details.visibleDates.last); - }); - }, - - onTap: (calendarTapDetails) { - if(calendarTapDetails.appointments == null) return; - Appointment tapped = calendarTapDetails.appointments!.first; - AppointmentDetails.show(context, value, tapped); - }, - - firstDayOfWeek: DateTime.monday, - specialRegions: _buildSpecialTimeRegions(holidays), - timeSlotViewSettings: const TimeSlotViewSettings( - startHour: 07.5, - endHour: 16.5, - timeInterval: Duration(minutes: 30), - timeFormat: 'HH:mm', - dayFormat: 'EE', - timeIntervalHeight: 40, - ), - - timeRegionBuilder: (BuildContext context, TimeRegionDetails timeRegionDetails) => TimeRegionComponent(details: timeRegionDetails), - appointmentBuilder: (BuildContext context, CalendarAppointmentDetails details) => AppointmentComponent( - details: details, - crossedOut: _isCrossedOut(details) - ), - - headerHeight: 0, - selectionDecoration: const BoxDecoration(), - - allowAppointmentResize: false, - allowDragAndDrop: false, - allowViewNavigation: false, - ), - onRefresh: () async { - Provider.of<TimetableProps>(context, listen: false).run(renew: true); - return Future.delayed(const Duration(seconds: 3)); - } - ); + child: Calendar( + controller: controller, + timetableProps: value, + settings: settings, + ), + onRefresh: () async { + Provider.of<TimetableProps>(context, listen: false).run(renew: true); + return Future.delayed(const Duration(seconds: 3)); + } + ); }, - ), + ) ); @override @@ -182,210 +131,4 @@ class _TimetableState extends State<Timetable> { updateTimings.cancel(); super.dispose(); } - - List<TimeRegion> _buildSpecialTimeRegions(GetHolidaysResponse holidays) { - var lastMonday = DateTime.now().subtract(const Duration(days: 14)).nextWeekday(DateTime.monday); - var firstBreak = lastMonday.copyWith(hour: 10, minute: 15); - var secondBreak = lastMonday.copyWith(hour: 13, minute: 50); - - var holidayList = holidays.result.map((holiday) { - var startDay = _parseWebuntisTimestamp(holiday.startDate, 0); - var dayCount = _parseWebuntisTimestamp(holiday.endDate, 0) - .difference(startDay) - .inDays; - var days = List<DateTime>.generate(dayCount, (index) => startDay.add(Duration(days: index))); - - return days.map((holidayDay) => TimeRegion( - startTime: holidayDay.copyWith(hour: 07, minute: 55), - endTime: holidayDay.copyWith(hour: 16, minute: 30), - text: 'holiday:${holiday.name}', - color: Theme - .of(context) - .disabledColor - .withAlpha(50), - iconData: Icons.holiday_village_outlined - )); - }).expand((e) => e); - - bool isInHoliday(DateTime time) => holidayList.any((element) => element.startTime.isSameDay(time)); - - return [ - ...holidayList, - - if(!isInHoliday(firstBreak)) - TimeRegion( - startTime: firstBreak, - endTime: firstBreak.add(const Duration(minutes: 20)), - recurrenceRule: 'FREQ=DAILY;INTERVAL=1', - text: 'centerIcon', - color: Theme.of(context).primaryColor.withAlpha(50), - iconData: Icons.restaurant - ), - - if(!isInHoliday(secondBreak)) - TimeRegion( - startTime: secondBreak, - endTime: secondBreak.add(const Duration(minutes: 15)), - recurrenceRule: 'FREQ=DAILY;INTERVAL=1', - text: 'centerIcon', - color: Theme.of(context).primaryColor.withAlpha(50), - iconData: Icons.restaurant - ), - ]; - } - - List<GetTimetableResponseObject> _removeDuplicates(TimetableProps data, Duration maxTimeBetweenDouble) { - - var timetableList = data.getTimetableResponse.result.toList(); - - if(timetableList.isEmpty) return timetableList; - - timetableList.sort((a, b) => _parseWebuntisTimestamp(a.date, a.startTime).compareTo(_parseWebuntisTimestamp(b.date, b.startTime))); - - var previousElement = timetableList.first; - for(var i = 1; i < timetableList.length; i++) { - var currentElement = timetableList.elementAt(i); - - bool isSameLesson() { - var currentSubjectId = currentElement.su.firstOrNull?.id; - var previousSubjectId = previousElement.su.firstOrNull?.id; - - if(currentSubjectId == null || previousSubjectId == null || currentSubjectId != previousSubjectId) return false; - - var currentRoomId = currentElement.ro.firstOrNull?.id; - var previousRoomId = previousElement.ro.firstOrNull?.id; - - if(currentRoomId != previousRoomId) return false; - - var currentTeacherId = currentElement.te.firstOrNull?.id; - var previousTeacherId = previousElement.te.firstOrNull?.id; - - if(currentTeacherId != previousTeacherId) return false; - - var currentStatusCode = currentElement.code; - var previousStatusCode = previousElement.code; - - if(currentStatusCode != previousStatusCode) return false; - - return true; - } - - bool isNotSeparated() => _parseWebuntisTimestamp(previousElement.date, previousElement.endTime).add(maxTimeBetweenDouble) - .isSameOrAfter(_parseWebuntisTimestamp(currentElement.date, currentElement.startTime)); - - if(isSameLesson() && isNotSeparated()) { - previousElement.endTime = currentElement.endTime; - timetableList.remove(currentElement); - i--; - } else { - previousElement = currentElement; - } - } - - return timetableList; - } - - TimetableEvents _buildTableEvents(TimetableProps data) { - - var timetableList = data.getTimetableResponse.result.toList(); - - if(settings.val().timetableSettings.connectDoubleLessons) { - timetableList = _removeDuplicates(data, const Duration(minutes: 5)); - } - - var appointments = timetableList.map((element) { - - var rooms = data.getRoomsResponse; - var subjects = data.getSubjectsResponse; - - try { - var startTime = _parseWebuntisTimestamp(element.date, element.startTime); - var endTime = _parseWebuntisTimestamp(element.date, element.endTime); - - var subject = subjects.result.firstWhere((subject) => subject.id == element.su[0].id); - var subjectName = { - TimetableNameMode.name: subject.name, - TimetableNameMode.longName: subject.longName, - TimetableNameMode.alternateName: subject.alternateName, - }[settings.val().timetableSettings.timetableNameMode]; - - - return Appointment( - id: ArbitraryAppointment(webuntis: element), - startTime: startTime, - endTime: endTime, - subject: subjectName!, - location: '' - '${rooms.result.firstWhere((room) => room.id == element.ro[0].id).name}' - '\n' - '${element.te.first.longname}', - notes: element.activityType, - color: _getEventColor(element, startTime, endTime), - ); - } catch(e) { - var endTime = _parseWebuntisTimestamp(element.date, element.endTime); - return Appointment( - id: ArbitraryAppointment(webuntis: element), - startTime: _parseWebuntisTimestamp(element.date, element.startTime), - endTime: endTime, - subject: 'Änderung', - notes: element.info, - location: 'Unbekannt', - color: endTime.isBefore(DateTime.now()) ? Theme.of(context).primaryColor.withAlpha(100) : Theme.of(context).primaryColor, - startTimeZone: '', - endTimeZone: '', - ); - } - }).toList(); - - appointments.addAll(data.getCustomTimetableEventResponse.events.map((customEvent) => Appointment( - id: ArbitraryAppointment(custom: customEvent), - startTime: customEvent.startDate, - endTime: customEvent.endDate, - location: customEvent.description, - subject: customEvent.title, - recurrenceRule: customEvent.rrule, - color: TimetableColors.getColorFromString(customEvent.color ?? TimetableColors.defaultColor.name), - startTimeZone: '', - endTimeZone: '', - ))); - - return TimetableEvents(appointments); - } - - DateTime _parseWebuntisTimestamp(int date, int time) { - var timeString = time.toString().padLeft(4, '0'); - return DateTime.parse('$date ${timeString.substring(0, 2)}:${timeString.substring(2, 4)}'); - } - - Color _getEventColor(GetTimetableResponseObject webuntisElement, DateTime startTime, DateTime endTime) { - // Make element darker, when it already took place - var alpha = endTime.isBefore(DateTime.now()) ? 100 : 255; - - // Cancelled - if(webuntisElement.code == 'cancelled') return const Color(0xff000000).withAlpha(alpha); - - // Any changes or no teacher at this element - if(webuntisElement.code == 'irregular' || webuntisElement.te.first.id == 0) return const Color(0xff8F19B3).withAlpha(alpha); - - // Teacher has changed - if(webuntisElement.te.any((element) => element.orgname != null)) return const Color(0xFF29639B).withAlpha(alpha); - - // Event was in the past - if(endTime.isBefore(DateTime.now())) return Theme.of(context).primaryColor.withAlpha(alpha); - - // Event takes currently place - if(endTime.isAfter(DateTime.now()) && startTime.isBefore(DateTime.now())) return Theme.of(context).primaryColor.withRed(200); - - // Fallback - return Theme.of(context).primaryColor.withAlpha(alpha); - } - - bool _isCrossedOut(CalendarAppointmentDetails calendarEntry) { - var appointment = calendarEntry.appointments.first.id as ArbitraryAppointment; - if(appointment.hasWebuntis()) { - return appointment.webuntis!.code == 'cancelled'; - } - return false; - } } diff --git a/pubspec.yaml b/pubspec.yaml index 7ad1cea..a526b75 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.1.1+39 +version: 0.1.2+40 environment: sdk: '>3.0.0' @@ -101,6 +101,8 @@ dependencies: time_range_picker: ^2.3.0 url_launcher: ^6.3.1 uuid: ^4.5.1 + home_widget: ^0.7.0+1 + screenshot: ^3.0.0 dev_dependencies: flutter_test: