Skip to content

Commit

Permalink
Merge pull request #615 from ganidande905/added_preset_timers
Browse files Browse the repository at this point in the history
 Added preset timers for easy accessibility
AryanSarafDev authored Jan 4, 2025
2 parents 490ff0d + 40fc6b5 commit ab258c1
Showing 5 changed files with 845 additions and 596 deletions.
17 changes: 10 additions & 7 deletions lib/app/modules/timer/controllers/timer_controller.dart
Original file line number Diff line number Diff line change
@@ -18,7 +18,6 @@ class TimerController extends FullLifeCycleController with FullLifeCycleMixin {
RxList timers = [].obs;
RxList isRinging = [].obs;


getFakeTimerModel() async {
TimerModel fakeTimer = await Utils.genFakeTimerModel();
return fakeTimer;
@@ -80,11 +79,11 @@ class TimerController extends FullLifeCycleController with FullLifeCycleMixin {
}
}

void createTimer() async {
Future<void> createTimer() async {
TimerModel timerRecord = await getFakeTimerModel();

timerRecord.startedOn = DateTime.now().toString();
;

timerRecord.timerValue = Utils.getMillisecondsToAlarm(
DateTime.now(),
DateTime.now().add(remainingTime.value),
@@ -93,10 +92,8 @@ class TimerController extends FullLifeCycleController with FullLifeCycleMixin {
timerRecord.timerName =
'${Utils.formatMilliseconds(timerRecord.timerValue)} Timer';

IsarDb.insertTimer(timerRecord).then((value) async {
updateTimerInfo();
});
Get.back();
await IsarDb.insertTimer(timerRecord);
updateTimerInfo();
}

deleteTimer(int id) async {
@@ -138,4 +135,10 @@ class TimerController extends FullLifeCycleController with FullLifeCycleMixin {
Get.back();
}
}
Future<void> setPresetTimer(Duration presetDuration) async {
remainingTime.value = presetDuration;
await createTimer();
}
}


1,304 changes: 730 additions & 574 deletions lib/app/modules/timer/views/timer_view.dart

Large diffs are not rendered by default.

46 changes: 46 additions & 0 deletions lib/app/utils/hover_preset_button.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:ultimate_alarm_clock/app/modules/settings/controllers/theme_controller.dart';
import 'package:ultimate_alarm_clock/app/modules/timer/controllers/timer_controller.dart';
import 'package:ultimate_alarm_clock/app/utils/constants.dart';

Widget hoverPresetButton(BuildContext context, String label, Duration duration) {
final TimerController timerController = Get.find<TimerController>();
final ThemeController themeController = Get.find<ThemeController>();

final double width = MediaQuery.of(context).size.width;
final double height = MediaQuery.of(context).size.height;

return ElevatedButton(
onPressed: () {
timerController.remainingTime.value = duration;
timerController.createTimer();
Get.back();
},
style: ElevatedButton.styleFrom(
padding: EdgeInsets.symmetric(
horizontal: width * 0.02,
vertical: height * 0.01,
),

backgroundColor: themeController.primaryColor.value,
shadowColor: Colors.transparent,
fixedSize: Size(
width * 0.02,
height * 0.01,
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(height * 0.02),
),
),
child: Text(
label,
style: TextStyle(
fontSize: height * 0.02,
color: kprimaryBackgroundColor,

fontWeight: FontWeight.bold,
),
),
);
}
44 changes: 44 additions & 0 deletions lib/app/utils/preset_button.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:ultimate_alarm_clock/app/modules/settings/controllers/theme_controller.dart';
import 'package:ultimate_alarm_clock/app/modules/timer/controllers/timer_controller.dart';
import 'package:ultimate_alarm_clock/app/utils/constants.dart';

Widget presetButton(BuildContext context, String label, Duration duration) {
final TimerController timerController = Get.find<TimerController>();
final ThemeController themeController = Get.find<ThemeController>();

final double width = MediaQuery.of(context).size.width;
final double height = MediaQuery.of(context).size.height;

return ElevatedButton(
onPressed: () {
timerController.remainingTime.value = duration;
timerController.createTimer();
Get.back();
},
style: ElevatedButton.styleFrom(
padding: EdgeInsets.symmetric(
horizontal: width * 0.02,
vertical: height * 0.01,
),
backgroundColor: Colors.transparent,
shadowColor: Colors.transparent,
fixedSize: Size(
width * 0.02,
height * 0.01,
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(height * 0.02),
),
),
child: Text(
label,
style: TextStyle(
fontSize: height * 0.02,
color: kprimaryDisabledTextColor,
fontWeight: FontWeight.bold,
),
),
);
}
30 changes: 15 additions & 15 deletions pubspec.lock
Original file line number Diff line number Diff line change
@@ -269,10 +269,10 @@ packages:
dependency: transitive
description:
name: collection
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
url: "https://pub.dev"
source: hosted
version: "1.18.0"
version: "1.19.0"
convert:
dependency: transitive
description:
@@ -860,18 +860,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
url: "https://pub.dev"
source: hosted
version: "10.0.5"
version: "10.0.7"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
url: "https://pub.dev"
source: hosted
version: "3.0.5"
version: "3.0.8"
leak_tracker_testing:
dependency: transitive
description:
@@ -1308,7 +1308,7 @@ packages:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
version: "0.0.0"
source_gen:
dependency: transitive
description:
@@ -1353,10 +1353,10 @@ packages:
dependency: transitive
description:
name: stack_trace
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
url: "https://pub.dev"
source: hosted
version: "1.11.1"
version: "1.12.0"
stream_channel:
dependency: transitive
description:
@@ -1377,10 +1377,10 @@ packages:
dependency: transitive
description:
name: string_scanner
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
version: "1.3.0"
synchronized:
dependency: transitive
description:
@@ -1409,10 +1409,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
url: "https://pub.dev"
source: hosted
version: "0.7.2"
version: "0.7.3"
time:
dependency: transitive
description:
@@ -1585,10 +1585,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
url: "https://pub.dev"
source: hosted
version: "14.2.5"
version: "14.3.0"
watcher:
dependency: transitive
description:

0 comments on commit ab258c1

Please sign in to comment.