diff --git a/.fvmrc b/.fvmrc new file mode 100644 index 00000000..7c3d0b51 --- /dev/null +++ b/.fvmrc @@ -0,0 +1,3 @@ +{ + "flutter": "3.22.0" +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4ba90a53..c58f8adc 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,6 @@ app.*.map.json /android/app/debug /android/app/profile /android/app/release + +# FVM Version Cache +.fvm/ \ No newline at end of file diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar index 13372aef..2c352119 100755 Binary files a/android/gradle/wrapper/gradle-wrapper.jar and b/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index e1ee6e4c..09523c0e 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.4-all.zip diff --git a/lib/alarm/data/alarm_app_settings_schema.dart b/lib/alarm/data/alarm_app_settings_schema.dart index 46214132..1ee0af27 100644 --- a/lib/alarm/data/alarm_app_settings_schema.dart +++ b/lib/alarm/data/alarm_app_settings_schema.dart @@ -1,10 +1,10 @@ import 'package:clock_app/alarm/data/alarm_settings_schema.dart'; import 'package:clock_app/alarm/types/notification_action.dart'; -import 'package:clock_app/common/types/list_filter.dart'; import 'package:clock_app/icons/flux_icons.dart'; import 'package:clock_app/notifications/widgets/notification_actions/area_notification_action.dart'; import 'package:clock_app/notifications/widgets/notification_actions/buttons_notification_action.dart'; import 'package:clock_app/notifications/widgets/notification_actions/slide_notification_action.dart'; +import 'package:clock_app/notifications/widgets/notification_actions/area_fat_snooze_notification_action.dart'; import 'package:clock_app/settings/types/setting.dart'; import 'package:clock_app/settings/types/setting_enable_condition.dart'; import 'package:clock_app/settings/types/setting_group.dart'; @@ -70,41 +70,54 @@ SettingGroup alarmAppSettingsSchema = SettingGroup( snoozeLabel: snoozeLabel, ), ), + ), + //Fat Snooze Option + SelectSettingOption( + (context) => + AppLocalizations.of(context)!.dismissActionAreaFatSnoozeButtons, + NotificationAction( + builder: (onDismiss, onSnooze, dismissLabel, snoozeLabel) => + AreaFatSnoozeNotificationAction( + onDismiss: onDismiss, + onSnooze: onSnooze, + dismissLabel: dismissLabel, + snoozeLabel: snoozeLabel, + ), + ), ) ]), SettingGroup("Filters", (context) => AppLocalizations.of(context)!.filtersSettingGroup, [ - // CustomizableListSetting( - // "Tasks", - // (context) => AppLocalizations.of(context)!.tasksSetting, - // [], - // // kDebugMode - // // ? [AlarmTask(AlarmTaskType.math), AlarmTask(AlarmTaskType.sequence)] - // // : [], - // alarmTaskSchemasMap.keys.map((key) => AlarmTask(key)).toList(), - // addCardBuilder: (item) => AlarmTaskCard(task: item, isAddCard: true), - // cardBuilder: (item, [onDelete, onDuplicate]) => AlarmTaskCard( - // task: item, - // isAddCard: false, - // onPressDelete: onDelete, - // onPressDuplicate: onDuplicate, - // ), - // valueDisplayBuilder: (context, setting) { - // return Text("${setting.value.length} tasks"); - // }, - // itemPreviewBuilder: (item) => TryAlarmTaskButton(alarmTask: item), - // // onChange: (context, value)async{ - // // await appSettings.save(); - // // } - // ), + // CustomizableListSetting( + // "Tasks", + // (context) => AppLocalizations.of(context)!.tasksSetting, + // [], + // // kDebugMode + // // ? [AlarmTask(AlarmTaskType.math), AlarmTask(AlarmTaskType.sequence)] + // // : [], + // alarmTaskSchemasMap.keys.map((key) => AlarmTask(key)).toList(), + // addCardBuilder: (item) => AlarmTaskCard(task: item, isAddCard: true), + // cardBuilder: (item, [onDelete, onDuplicate]) => AlarmTaskCard( + // task: item, + // isAddCard: false, + // onPressDelete: onDelete, + // onPressDuplicate: onDuplicate, + // ), + // valueDisplayBuilder: (context, setting) { + // return Text("${setting.value.length} tasks"); + // }, + // itemPreviewBuilder: (item) => TryAlarmTaskButton(alarmTask: item), + // // onChange: (context, value)async{ + // // await appSettings.save(); + // // } + // ), SwitchSetting("Show Filters", (context) => AppLocalizations.of(context)!.showFiltersSetting, true), SwitchSetting("Show Sort", (context) => AppLocalizations.of(context)!.showSortSetting, true), - SwitchSetting("Show Next Alarm", + SwitchSetting("Show Next Alarm", (context) => AppLocalizations.of(context)!.showNextAlarm, false), - ]), SettingGroup( "Notifications", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 7596b366..e9dc2ea9 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -553,6 +553,8 @@ "@dismissActionButtons": {}, "dismissActionAreaButtons": "Area Buttons", "@dismissActionAreaButtons": {}, + "dismissActionAreaFatSnoozeButtons": "Area Fat Snooze Buttons", + "@dismissActionAreaFatSnoozeButtons": {}, "stopwatchTimeFormatSettingGroup": "Time Format", "@stopwatchTimeFormatSettingGroup": {}, "stopwatchShowMillisecondsSetting": "Show Milliseconds", diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index d4cb1893..43cf07fc 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -505,6 +505,8 @@ "@dismissActionButtons": {}, "dismissActionAreaButtons": "Boutons larges", "@dismissActionAreaButtons": {}, + "dismissActionAreaFatSnoozeButtons": "Boutons Snooze larges", + "@dismissActionAreaFatSnoozeButtons": {}, "comparisonLapBarsSettingGroup": "Comparaison des tours", "@comparisonLapBarsSettingGroup": {}, "showPreviousLapSetting": "Afficher le tour précédent", diff --git a/lib/notifications/widgets/notification_actions/area_fat_snooze_notification_action.dart b/lib/notifications/widgets/notification_actions/area_fat_snooze_notification_action.dart new file mode 100644 index 00000000..02a17ac5 --- /dev/null +++ b/lib/notifications/widgets/notification_actions/area_fat_snooze_notification_action.dart @@ -0,0 +1,73 @@ +import 'package:clock_app/common/widgets/card_container.dart'; +import 'package:flutter/material.dart'; + +class AreaFatSnoozeNotificationAction extends StatelessWidget { + const AreaFatSnoozeNotificationAction( + {super.key, + required this.dismissLabel, + required this.snoozeLabel, + required this.onDismiss, + this.onSnooze}); + + final String dismissLabel; + final String snoozeLabel; + final VoidCallback onDismiss; + final VoidCallback? onSnooze; + + @override + Widget build(BuildContext context) { + ThemeData theme = Theme.of(context); + TextTheme textTheme = theme.textTheme; + ColorScheme colorScheme = theme.colorScheme; + + return Expanded( + child: SizedBox( + width: double.infinity, + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (onSnooze != null) + Expanded( + flex: 3, + child: SizedBox( + width: double.infinity, + child: CardContainer( + color: colorScheme.primary, + onTap: onSnooze, + child: Center( + child: Text( + snoozeLabel, + style: textTheme.titleMedium?.copyWith( + color: colorScheme.onPrimary, + ), + )), + ), + ), + ), + const SizedBox(height: 8), + Expanded( + flex: 1, + child: SizedBox( + width: double.infinity, + child: CardContainer( + color: colorScheme.primary, + onTap: onDismiss, + child: Center( + child: Text( + dismissLabel, + style: textTheme.titleMedium?.copyWith( + color: colorScheme.onPrimary, + ), + )), + ), + ), + ) + ], + ), + ), + ), + ); + } +}