Skip to content

Commit 024d834

Browse files
authored
Allow Hiding of Calendar Events (#282)
1 parent bcbd3cc commit 024d834

30 files changed

+449
-198
lines changed

android/app/src/main/kotlin/de/tum/in/tumcampus/widgets/calendar/CalendarWidgetService.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import de.tum.`in`.tumcampus.R
99
import de.tum.`in`.tumcampus.util.Const
1010
import es.antonborri.home_widget.HomeWidgetPlugin
1111
import kotlinx.serialization.json.Json
12+
import java.time.LocalDateTime
1213
import java.time.format.DateTimeFormatter
1314
import java.time.format.TextStyle
1415
import java.util.*
@@ -34,6 +35,10 @@ class CalendarWidgetService : RemoteViewsService() {
3435
calendarEvents = Json.decodeFromString<Array<WidgetCalendarItem>>(data).asList()
3536
}
3637

38+
calendarEvents.filter { widgetCalendarItem ->
39+
widgetCalendarItem.endDate.isAfter(LocalDateTime.now())
40+
}
41+
3742
// Set isFirstOnDay flags
3843
if (calendarEvents.isNotEmpty()) {
3944
calendarEvents[0].isFirstOnDay = true

assets/translations/de.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@
196196
"openIn": "In {} öffnen",
197197
"unknownDirection": "Unbekannte Richtung",
198198
"showWeekends": "Wochenenden anzeigen",
199+
"showHiddenCalendarEntries": "Versteckte Kalendareintrage anzeigen",
199200
"color": "Farbe",
200201
"resetLogin": "Zurücksetzen & Anmelden",
201202
"resetPreferences": "Einstellungen zurücksetzen",
@@ -225,5 +226,6 @@
225226
"campus": "Campus",
226227
"studies": "Studium",
227228
"suggested": "Interessante {}",
228-
"all": "Alle"
229+
"all": "Alle",
230+
"visibility": "Sichtbarkeit"
229231
}

assets/translations/en.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@
196196
"openIn": "Open in {}",
197197
"unknownDirection": "Unknown Direction",
198198
"showWeekends": "Show Weekends",
199+
"showHiddenCalendarEntries": "Show Hidden Calendar Entries",
199200
"color": "Color",
200201
"resetLogin": "Reset & Login",
201202
"resetPreferences": "Reset Preferences",
@@ -225,5 +226,6 @@
225226
"campus": "Campus",
226227
"studies": "Studies",
227228
"suggested": "Suggested {}",
228-
"all": "All"
229+
"all": "All",
230+
"visibility": "Visibility"
229231
}

devtools_options.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
description: This file stores settings for Dart & Flutter DevTools.
22
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
33
extensions:
4+
- drift: true

ios/CalendarWidget/CalendarWidget.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ struct Provider: TimelineProvider {
3434
let dateFormatter = DateFormatter()
3535
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"
3636
decoder.dateDecodingStrategy = .formatted(dateFormatter)
37-
let entries = try decoder.decode([CalendarEntry].self, from: data)
37+
var entries = try decoder.decode([CalendarEntry].self, from: data)
38+
entries = entries.filter({ $0.endDate > Date() })
3839
let entry = CalendarWidgetEntry(date: dateFormatter.date(from: calendarSaved ?? "") ?? Date(), entries: entries, size: context.family)
3940
completion(entry)
4041
} catch {

ios/Podfile.lock

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ PODS:
119119
- shared_preferences_foundation (0.0.1):
120120
- Flutter
121121
- FlutterMacOS
122-
- sqflite (0.0.3):
122+
- sqflite_darwin (0.0.4):
123123
- Flutter
124124
- FlutterMacOS
125125
- "sqlite3 (3.46.1+1)":
@@ -163,7 +163,7 @@ DEPENDENCIES:
163163
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
164164
- quick_actions_ios (from `.symlinks/plugins/quick_actions_ios/ios`)
165165
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
166-
- sqflite (from `.symlinks/plugins/sqflite/darwin`)
166+
- sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`)
167167
- sqlite3_flutter_libs (from `.symlinks/plugins/sqlite3_flutter_libs/ios`)
168168
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
169169
- video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`)
@@ -223,8 +223,8 @@ EXTERNAL SOURCES:
223223
:path: ".symlinks/plugins/quick_actions_ios/ios"
224224
shared_preferences_foundation:
225225
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
226-
sqflite:
227-
:path: ".symlinks/plugins/sqflite/darwin"
226+
sqflite_darwin:
227+
:path: ".symlinks/plugins/sqflite_darwin/darwin"
228228
sqlite3_flutter_libs:
229229
:path: ".symlinks/plugins/sqlite3_flutter_libs/ios"
230230
url_launcher_ios:
@@ -267,7 +267,7 @@ SPEC CHECKSUMS:
267267
PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851
268268
quick_actions_ios: 56f3cbaa71e94f212838d1f9fe354bd0734779bf
269269
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
270-
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
270+
sqflite_darwin: a553b1fd6fe66f53bbb0fe5b4f5bab93f08d7a13
271271
sqlite3: 0bb0e6389d824e40296f531b858a2a0b71c0d2fb
272272
sqlite3_flutter_libs: c00457ebd31e59fa6bb830380ddba24d44fbcd3b
273273
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe

lib/base/enums/user_preference.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ enum UserPreference {
77
calendarColors(String),
88
browser(bool),
99
failedGrades(bool),
10-
weekends(bool);
10+
weekends(bool),
11+
hiddenCalendarEntries(bool);
1112

1213
final Type type;
1314

lib/calendarComponent/model/calendar_data_source.dart

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,24 @@
11
import 'package:campus_flutter/base/extensions/cast.dart';
22
import 'package:campus_flutter/calendarComponent/model/calendar_event.dart';
3+
import 'package:campus_flutter/settingsComponent/views/settings_view.dart';
34
import 'package:flutter/material.dart';
5+
import 'package:flutter_riverpod/flutter_riverpod.dart';
46
import 'package:syncfusion_flutter_calendar/calendar.dart';
57

68
class MeetingDataSource extends CalendarDataSource {
79
final BuildContext context;
10+
final WidgetRef ref;
811

9-
MeetingDataSource(List<CalendarEvent> source, this.context) {
10-
appointments = source;
12+
MeetingDataSource(List<CalendarEvent> source, this.context, this.ref) {
13+
if (!ref.read(showHiddenCalendarEntries)) {
14+
appointments = source
15+
.where(
16+
(element) => element.isVisible ?? true,
17+
)
18+
.toList();
19+
} else {
20+
appointments = source;
21+
}
1122
}
1223

1324
@override

lib/calendarComponent/model/calendar_event.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class CalendarEvent extends Searchable {
2222
final String? location;
2323

2424
int? color;
25+
bool? isVisible;
2526

2627
Duration get duration {
2728
return endDate.difference(startDate);
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import 'package:json_annotation/json_annotation.dart';
2+
3+
part 'calendar_preferences.g.dart';
4+
5+
@JsonSerializable()
6+
class CalendarPreferences {
7+
final Map<String, int> colorPreferences;
8+
final Map<String, bool> visibilityPreferences;
9+
10+
CalendarPreferences(
11+
this.colorPreferences,
12+
this.visibilityPreferences,
13+
);
14+
15+
factory CalendarPreferences.fromJson(Map<String, dynamic> json) =>
16+
_$CalendarPreferencesFromJson(json);
17+
18+
Map<String, dynamic> toJson() => _$CalendarPreferencesToJson(this);
19+
}

0 commit comments

Comments
 (0)