Skip to content

Commit

Permalink
Merge pull request #139 from a-mabe/full-workout
Browse files Browse the repository at this point in the history
Implement full workout
  • Loading branch information
a-mabe authored Mar 17, 2024
2 parents 997abff + e72513d commit 30fd447
Show file tree
Hide file tree
Showing 37 changed files with 1,052 additions and 558 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.2.6
1.3.0
2 changes: 1 addition & 1 deletion ios/Podfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '11.0'
platform :ios, '12.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
Expand Down
20 changes: 6 additions & 14 deletions ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@ PODS:
- Flutter
- flutter_local_notifications (0.0.1):
- Flutter
- FMDB (2.7.5):
- FMDB/standard (= 2.7.5)
- FMDB/standard (2.7.5)
- just_audio (0.0.1):
- Flutter
- path_provider_foundation (0.0.1):
Expand All @@ -27,7 +24,7 @@ PODS:
- Flutter
- sqflite (0.0.3):
- Flutter
- FMDB (>= 2.7.5)
- FlutterMacOS
- wakelock (0.0.1):
- Flutter

Expand All @@ -43,13 +40,9 @@ DEPENDENCIES:
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- soundpool (from `.symlinks/plugins/soundpool/ios`)
- sqflite (from `.symlinks/plugins/sqflite/ios`)
- sqflite (from `.symlinks/plugins/sqflite/darwin`)
- wakelock (from `.symlinks/plugins/wakelock/ios`)

SPEC REPOS:
trunk:
- FMDB

EXTERNAL SOURCES:
audio_session:
:path: ".symlinks/plugins/audio_session/ios"
Expand All @@ -74,26 +67,25 @@ EXTERNAL SOURCES:
soundpool:
:path: ".symlinks/plugins/soundpool/ios"
sqflite:
:path: ".symlinks/plugins/sqflite/ios"
:path: ".symlinks/plugins/sqflite/darwin"
wakelock:
:path: ".symlinks/plugins/wakelock/ios"

SPEC CHECKSUMS:
audio_session: 4f3e461722055d21515cf3261b64c973c062f345
audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40
device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_background_service_ios: e30e0d3ee69e4cee66272d0c78eacd48c2e94aac
flutter_fgbg: 31c0d1140a131daea2d342121808f6aa0dcd879d
flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c
shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
soundpool: c7f4422ca206e77f8900ed3c4ee6a6ff5a0e38a9
sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
wakelock: d0fc7c864128eac40eba1617cb5264d9c940b46f

PODFILE CHECKSUM: 94b700da46e2c82b6cf27a42198057964de975ce
PODFILE CHECKSUM: a74b8704f768957a23e2d804b55390ecc9fffc9d

COCOAPODS: 1.12.1
92 changes: 92 additions & 0 deletions lib/create_workout/constants/set_timings_constants.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
import 'package:flutter/material.dart';

const String workTitle = "Work";
const String restTitle = "Rest";
const String additionalConfigTitle = "Additional configuration";
const String getReadyTitle = "Get ready";
const String warmUpTitle = "Warm-up";
const String coolDownTitle = "Cool down";
const String repeatTitle = "Restart";
const String breakTitle = "Break";

const String workMinutesKey = "work-minutes";
const String workSecondsKey = "work-seconds";

const String restMinutesKey = "rest-minutes";
const String restSecondsKey = "rest-seconds";

const String warmupMinutesKey = "warmup-minutes";
const String warmupSecondsKey = "warmup-seconds";

const String cooldownMinutesKey = "cooldown-minutes";
const String cooldownSecondsKey = "cooldown-seconds";

const String iterationsKey = "iterations";

const String breakMinutesKey = "break-minutes";
const String breakSecondsKey = "break-seconds";

const String getReadyMinutesKey = "get-ready-minutes";
const String getReadySecondsKey = "get-ready-seconds";

const List timeMinutesKeys = [
workMinutesKey,
restMinutesKey,
];

const List timeSecondsKeys = [
workSecondsKey,
restSecondsKey,
];

const List additionalMinutesKeys = [
getReadyMinutesKey,
warmupMinutesKey,
cooldownMinutesKey,
breakMinutesKey
];

const List additionalSecondsKeys = [
getReadySecondsKey,
warmupSecondsKey,
cooldownSecondsKey,
breakSecondsKey
];

const List<String> timeTitles = [workTitle, restTitle, additionalConfigTitle];

const List<String> additionalTimeTitles = [
getReadyTitle,
warmUpTitle,
coolDownTitle,
repeatTitle,
breakTitle
];

const List<String> timeSubTitles = [
"Required",
"Required",
"Warmup, auto restart, and more"
];

const List<String> additionalTimeSubTitles = [
"Optional, default 10s",
"Optional",
"Optional",
"Auto restart",
"Optional, between restarts"
];

const List<Widget> timeLeadingIcons = [
Icon(Icons.fitness_center),
Icon(Icons.pause),
Icon(Icons.tune)
];

const List<Widget> additionalTimeLeadingIcons = [
Icon(Icons.flag),
Icon(Icons.emoji_people),
Icon(Icons.ac_unit),
Icon(Icons.replay),
Icon(Icons.snooze)
];
File renamed without changes.
File renamed without changes.
28 changes: 5 additions & 23 deletions lib/create_workout/create_timer.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:openhiit/create_workout/helper_widgets/create_form.dart';
import 'package:openhiit/create_workout/main_widgets/create_form.dart';
import '../workout_data_type/workout_type.dart';
import './set_timings.dart';
import './helper_widgets/submit_button.dart';
import 'main_widgets/submit_button.dart';

class CreateTimer extends StatefulWidget {
const CreateTimer({super.key});
Expand All @@ -18,24 +18,6 @@ class CreateTimerState extends State<CreateTimer> {
/// from the previous view.
Workout workout = ModalRoute.of(context)!.settings.arguments as Workout;

Workout workoutCopy = Workout(
workout.id,
workout.title,
workout.numExercises,
workout.exercises,
workout.exerciseTime,
workout.restTime,
workout.halfTime,
workout.halfwayMark,
workout.workSound,
workout.restSound,
workout.halfwaySound,
workout.completeSound,
workout.countdownSound,
workout.colorInt,
workout.workoutIndex,
workout.showMinutes);

// Create a global key that uniquely identifies the Form widget
// and allows validation of the form.
//
Expand Down Expand Up @@ -78,11 +60,11 @@ class CreateTimerState extends State<CreateTimer> {
),
bottomSheet: SubmitButton(
text: "Submit",
color: const Color.fromARGB(255,58,165,255),
color: const Color.fromARGB(255, 58, 165, 255),
onTap: () {
submitForm(workoutCopy);
submitForm(workout);
},
),
body: CreateForm(workout: workoutCopy, formKey: formKey));
body: CreateForm(workout: workout, formKey: formKey));
}
}
35 changes: 13 additions & 22 deletions lib/create_workout/create_workout.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
import 'package:flutter/material.dart';
import 'package:openhiit/create_workout/helper_widgets/create_form.dart';
import 'package:logger/logger.dart';
import 'package:openhiit/create_workout/main_widgets/create_form.dart';
import '../workout_data_type/workout_type.dart';
import './helper_widgets/submit_button.dart';
import 'main_widgets/submit_button.dart';
import 'set_exercises.dart';

var logger = Logger(
printer: PrettyPrinter(methodCount: 0),
);

class CreateWorkout extends StatefulWidget {
const CreateWorkout({super.key});

Expand All @@ -19,24 +24,6 @@ class CreateWorkoutState extends State<CreateWorkout> {
///
Workout workout = ModalRoute.of(context)!.settings.arguments as Workout;

Workout workoutCopy = Workout(
workout.id,
workout.title,
workout.numExercises,
workout.exercises,
workout.exerciseTime,
workout.restTime,
workout.halfTime,
workout.halfwayMark,
workout.workSound,
workout.restSound,
workout.halfwaySound,
workout.completeSound,
workout.countdownSound,
workout.colorInt,
workout.workoutIndex,
workout.showMinutes);

/// Create a global key that uniquely identifies the Form widget
/// and allows validation of the form.
///
Expand Down Expand Up @@ -67,6 +54,10 @@ class CreateWorkoutState extends State<CreateWorkout> {
final form = formKey.currentState!;
if (form.validate()) {
form.save();

logger.i(
"Title: ${workout.title}, Color: ${workout.colorInt}, Intervals: ${workout.numExercises}");

pushExercises(workout);
}
}
Expand All @@ -80,9 +71,9 @@ class CreateWorkoutState extends State<CreateWorkout> {
text: "Submit",
color: Colors.blue,
onTap: () {
submitForm(workoutCopy);
submitForm(workout);
},
),
body: CreateForm(workout: workoutCopy, formKey: formKey));
body: CreateForm(workout: workout, formKey: formKey));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import 'package:flutter/material.dart';
import 'package:openhiit/create_workout/constants/set_timings_constants.dart';

class ExpansionRepeatTileClass extends StatefulWidget {
/// Vars
final Widget? trailingWidget;

const ExpansionRepeatTileClass({
this.trailingWidget,
super.key,
});

@override
ExpansionRepeatTileClassState createState() =>
ExpansionRepeatTileClassState();
}

class ExpansionRepeatTileClassState extends State<ExpansionRepeatTileClass> {
@override
void initState() {
super.initState();
}

@override
void dispose() {
super.dispose();
}

@override
Widget build(BuildContext context) {
return ExpansionTile(
title: Text('Additional configuration'),
subtitle: Text('Auto restart, warm-up, and more'),
leading: Icon(Icons.tune),
children: <Widget>[
ListTile(
title: Text(additionalTimeTitles[0]),
subtitle: Text(additionalTimeSubTitles[0]),
leading: Icon(Icons.flag),
trailing: widget.trailingWidget,
),
ListTile(
title: Text(additionalTimeTitles[1]),
subtitle: Text(additionalTimeSubTitles[1]),
leading: Icon(Icons.emoji_people),
trailing: widget.trailingWidget,
),
ListTile(
title: Text(additionalTimeTitles[2]),
subtitle: Text(additionalTimeSubTitles[2]),
leading: Icon(Icons.ac_unit),
trailing: widget.trailingWidget,
),
ListTile(
title: Text(additionalTimeTitles[3]),
subtitle: Text(additionalTimeSubTitles[3]),
),
ListTile(
title: Text(additionalTimeTitles[4]),
subtitle: Text(additionalTimeSubTitles[4]),
leading: Icon(Icons.replay),
trailing: widget.trailingWidget,
),
ListTile(
title: Text(additionalTimeTitles[5]),
subtitle: Text(additionalTimeSubTitles[5]),
leading: Icon(Icons.block),
trailing: widget.trailingWidget,
),
],
);
}
}
Loading

0 comments on commit 30fd447

Please sign in to comment.