diff --git a/GO.xcodeproj/project.pbxproj b/GO.xcodeproj/project.pbxproj new file mode 100644 index 0000000..0306be5 --- /dev/null +++ b/GO.xcodeproj/project.pbxproj @@ -0,0 +1,735 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 3D2883391B8A716800DE02B8 /* LapTimerTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D2883381B8A716800DE02B8 /* LapTimerTableViewCell.m */; }; + 3D28833C1B8B49F100DE02B8 /* GOCalendarViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D28833B1B8B49F100DE02B8 /* GOCalendarViewController.m */; }; + 3D28833F1B8B4DC700DE02B8 /* GOCalendarTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D28833E1B8B4DC700DE02B8 /* GOCalendarTableViewController.m */; }; + 3D28835B1B8CBFC200DE02B8 /* GOCalendarResults.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D28835A1B8CBFC200DE02B8 /* GOCalendarResults.m */; }; + 3D28835E1B8D268F00DE02B8 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3D28835C1B8D268F00DE02B8 /* Main.storyboard */; }; + 3D29C62C1B8E009F004E33EF /* BackgroundGradient.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D29C62B1B8E009F004E33EF /* BackgroundGradient.m */; }; + 3D29C62F1B8E154A004E33EF /* GOCustomQuestionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D29C62E1B8E154A004E33EF /* GOCustomQuestionViewController.m */; }; + 3D2D2F011B86B5A300E210BA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D2D2F001B86B5A300E210BA /* main.m */; }; + 3D2D2F041B86B5A300E210BA /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D2D2F031B86B5A300E210BA /* AppDelegate.m */; }; + 3D2D2F0C1B86B5A300E210BA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3D2D2F0B1B86B5A300E210BA /* Assets.xcassets */; }; + 3D2D2F0F1B86B5A300E210BA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3D2D2F0D1B86B5A300E210BA /* LaunchScreen.storyboard */; }; + 3D2D2F1A1B86B5A400E210BA /* goprojectTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D2D2F191B86B5A400E210BA /* goprojectTests.m */; }; + 3D2D2F251B86B5A400E210BA /* goprojectUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D2D2F241B86B5A400E210BA /* goprojectUITests.m */; }; + 3D65B9FE1BA2124D005B22D5 /* monofonto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D65B9FD1BA2124D005B22D5 /* monofonto.ttf */; }; + 3D65BA001BA212CD005B22D5 /* KenzoRegular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 3D65B9FF1BA212CD005B22D5 /* KenzoRegular.otf */; }; + 3D67F6161B8D89E2008B5E6A /* GOCustomWorkoutTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D67F6151B8D89E2008B5E6A /* GOCustomWorkoutTableViewController.m */; }; + 3D67F6191B8D89FB008B5E6A /* GOCustomResultsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D67F6181B8D89FB008B5E6A /* GOCustomResultsViewController.m */; }; + 3DDB60C11B893332008194DB /* WorkoutManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DDB60C01B893332008194DB /* WorkoutManager.m */; }; + 3DDB60C41B893413008194DB /* Workout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DDB60C31B893413008194DB /* Workout.m */; }; + 3DDB60C71B893477008194DB /* Exercises.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DDB60C61B893477008194DB /* Exercises.m */; }; + 3DE05A0A1B8E4C8C007A66FB /* ExerciseTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DE05A091B8E4C8C007A66FB /* ExerciseTableViewCell.m */; }; + 9A041C231B92786000755002 /* bell.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 9A041C221B92786000755002 /* bell.mp3 */; }; + 9A14C4B51B9236C900212C5B /* digital.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9A14C4B31B92338900212C5B /* digital.ttf */; }; + 9A553E271B8CFC0700A0230B /* GOFightViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A553E261B8CFC0700A0230B /* GOFightViewController.m */; }; + 9A553E351B8D101B00A0230B /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A553E341B8D101B00A0230B /* AVFoundation.framework */; }; + 9A7EC3D01B90DE6600D0CFB9 /* GOBuildTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A7EC3CF1B90DE6600D0CFB9 /* GOBuildTableViewController.m */; }; + 9A7EC3D31B90E3E400D0CFB9 /* BuildManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A7EC3D21B90E3E400D0CFB9 /* BuildManager.m */; }; + 9A7EC3D61B90E46600D0CFB9 /* BuildWorkout.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A7EC3D51B90E46600D0CFB9 /* BuildWorkout.m */; }; + 9A7EC3D91B90E4F600D0CFB9 /* CustomTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A7EC3D81B90E4F600D0CFB9 /* CustomTableViewCell.m */; }; + 9A7EC3DC1B90E65B00D0CFB9 /* CreateWorkoutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A7EC3DB1B90E65B00D0CFB9 /* CreateWorkoutViewController.m */; }; + 9A8CD52B1B87900000A194D9 /* GOStopwatchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A8CD52A1B87900000A194D9 /* GOStopwatchViewController.m */; }; + 9ACCFF3D1B8B991000F1693C /* GOWorkoutsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9ACCFF3C1B8B991000F1693C /* GOWorkoutsTableViewController.m */; }; + 9AD5F5781B8A27B3004F25D6 /* GOTimerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD5F5771B8A27B3004F25D6 /* GOTimerViewController.m */; }; + 9ADCAB681B8D7B4A009E6FF0 /* NikeTotal90.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9ADCAB671B8D7AC2009E6FF0 /* NikeTotal90.ttf */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 3D2D2F161B86B5A300E210BA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3D2D2EF41B86B5A300E210BA /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3D2D2EFB1B86B5A300E210BA; + remoteInfo = "unit-1-final-project"; + }; + 3D2D2F211B86B5A400E210BA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3D2D2EF41B86B5A300E210BA /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3D2D2EFB1B86B5A300E210BA; + remoteInfo = "unit-1-final-project"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 3D2883371B8A716800DE02B8 /* LapTimerTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LapTimerTableViewCell.h; sourceTree = ""; }; + 3D2883381B8A716800DE02B8 /* LapTimerTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LapTimerTableViewCell.m; sourceTree = ""; }; + 3D28833A1B8B49F100DE02B8 /* GOCalendarViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GOCalendarViewController.h; sourceTree = ""; }; + 3D28833B1B8B49F100DE02B8 /* GOCalendarViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GOCalendarViewController.m; sourceTree = ""; }; + 3D28833D1B8B4DC700DE02B8 /* GOCalendarTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GOCalendarTableViewController.h; sourceTree = ""; }; + 3D28833E1B8B4DC700DE02B8 /* GOCalendarTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GOCalendarTableViewController.m; sourceTree = ""; }; + 3D2883591B8CBFC200DE02B8 /* GOCalendarResults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GOCalendarResults.h; sourceTree = ""; }; + 3D28835A1B8CBFC200DE02B8 /* GOCalendarResults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GOCalendarResults.m; sourceTree = ""; }; + 3D28835D1B8D268F00DE02B8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 3D29C62A1B8E009F004E33EF /* BackgroundGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BackgroundGradient.h; sourceTree = ""; }; + 3D29C62B1B8E009F004E33EF /* BackgroundGradient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BackgroundGradient.m; sourceTree = ""; }; + 3D29C62D1B8E154A004E33EF /* GOCustomQuestionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GOCustomQuestionViewController.h; sourceTree = ""; }; + 3D29C62E1B8E154A004E33EF /* GOCustomQuestionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GOCustomQuestionViewController.m; sourceTree = ""; }; + 3D2D2EFC1B86B5A300E210BA /* Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 3D2D2F001B86B5A300E210BA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 3D2D2F021B86B5A300E210BA /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 3D2D2F031B86B5A300E210BA /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 3D2D2F0B1B86B5A300E210BA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 3D2D2F0E1B86B5A300E210BA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 3D2D2F101B86B5A300E210BA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 3D2D2F151B86B5A300E210BA /* Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3D2D2F191B86B5A400E210BA /* goprojectTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = goprojectTests.m; sourceTree = ""; }; + 3D2D2F1B1B86B5A400E210BA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 3D2D2F201B86B5A400E210BA /* Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3D2D2F241B86B5A400E210BA /* goprojectUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = goprojectUITests.m; sourceTree = ""; }; + 3D2D2F261B86B5A400E210BA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 3D65B9FD1BA2124D005B22D5 /* monofonto.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = monofonto.ttf; sourceTree = ""; }; + 3D65B9FF1BA212CD005B22D5 /* KenzoRegular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = KenzoRegular.otf; path = ../../../Downloads/kenzo/KenzoRegular.otf; sourceTree = ""; }; + 3D67F6141B8D89E2008B5E6A /* GOCustomWorkoutTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GOCustomWorkoutTableViewController.h; sourceTree = ""; }; + 3D67F6151B8D89E2008B5E6A /* GOCustomWorkoutTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GOCustomWorkoutTableViewController.m; sourceTree = ""; }; + 3D67F6171B8D89FB008B5E6A /* GOCustomResultsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GOCustomResultsViewController.h; sourceTree = ""; }; + 3D67F6181B8D89FB008B5E6A /* GOCustomResultsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GOCustomResultsViewController.m; sourceTree = ""; }; + 3DDB60BF1B893332008194DB /* WorkoutManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkoutManager.h; sourceTree = ""; }; + 3DDB60C01B893332008194DB /* WorkoutManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WorkoutManager.m; sourceTree = ""; }; + 3DDB60C21B893413008194DB /* Workout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Workout.h; sourceTree = ""; }; + 3DDB60C31B893413008194DB /* Workout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Workout.m; sourceTree = ""; }; + 3DDB60C51B893477008194DB /* Exercises.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Exercises.h; sourceTree = ""; }; + 3DDB60C61B893477008194DB /* Exercises.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Exercises.m; sourceTree = ""; }; + 3DE05A081B8E4C8C007A66FB /* ExerciseTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExerciseTableViewCell.h; sourceTree = ""; }; + 3DE05A091B8E4C8C007A66FB /* ExerciseTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExerciseTableViewCell.m; sourceTree = ""; }; + 9A041C221B92786000755002 /* bell.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = bell.mp3; sourceTree = ""; }; + 9A14C4B31B92338900212C5B /* digital.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = digital.ttf; sourceTree = ""; }; + 9A553E251B8CFC0700A0230B /* GOFightViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GOFightViewController.h; sourceTree = ""; }; + 9A553E261B8CFC0700A0230B /* GOFightViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GOFightViewController.m; sourceTree = ""; }; + 9A553E341B8D101B00A0230B /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + 9A7EC3CE1B90DE6600D0CFB9 /* GOBuildTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GOBuildTableViewController.h; sourceTree = ""; }; + 9A7EC3CF1B90DE6600D0CFB9 /* GOBuildTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GOBuildTableViewController.m; sourceTree = ""; }; + 9A7EC3D11B90E3E400D0CFB9 /* BuildManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BuildManager.h; sourceTree = ""; }; + 9A7EC3D21B90E3E400D0CFB9 /* BuildManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BuildManager.m; sourceTree = ""; }; + 9A7EC3D41B90E46600D0CFB9 /* BuildWorkout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BuildWorkout.h; sourceTree = ""; }; + 9A7EC3D51B90E46600D0CFB9 /* BuildWorkout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BuildWorkout.m; sourceTree = ""; }; + 9A7EC3D71B90E4F600D0CFB9 /* CustomTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTableViewCell.h; sourceTree = ""; }; + 9A7EC3D81B90E4F600D0CFB9 /* CustomTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTableViewCell.m; sourceTree = ""; }; + 9A7EC3DA1B90E65B00D0CFB9 /* CreateWorkoutViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CreateWorkoutViewController.h; sourceTree = ""; }; + 9A7EC3DB1B90E65B00D0CFB9 /* CreateWorkoutViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CreateWorkoutViewController.m; sourceTree = ""; }; + 9A8CD5291B87900000A194D9 /* GOStopwatchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GOStopwatchViewController.h; sourceTree = ""; }; + 9A8CD52A1B87900000A194D9 /* GOStopwatchViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GOStopwatchViewController.m; sourceTree = ""; }; + 9ACCFF3B1B8B991000F1693C /* GOWorkoutsTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GOWorkoutsTableViewController.h; sourceTree = ""; }; + 9ACCFF3C1B8B991000F1693C /* GOWorkoutsTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GOWorkoutsTableViewController.m; sourceTree = ""; }; + 9AD5F5761B8A27B3004F25D6 /* GOTimerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GOTimerViewController.h; sourceTree = ""; }; + 9AD5F5771B8A27B3004F25D6 /* GOTimerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GOTimerViewController.m; sourceTree = ""; }; + 9ADCAB671B8D7AC2009E6FF0 /* NikeTotal90.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = NikeTotal90.ttf; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3D2D2EF91B86B5A300E210BA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A553E351B8D101B00A0230B /* AVFoundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D2D2F121B86B5A300E210BA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D2D2F1D1B86B5A400E210BA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3D2883531B8C02A500DE02B8 /* GOCalendar */ = { + isa = PBXGroup; + children = ( + 3D28833D1B8B4DC700DE02B8 /* GOCalendarTableViewController.h */, + 3D28833E1B8B4DC700DE02B8 /* GOCalendarTableViewController.m */, + 3D28833A1B8B49F100DE02B8 /* GOCalendarViewController.h */, + 3D28833B1B8B49F100DE02B8 /* GOCalendarViewController.m */, + 3D2883591B8CBFC200DE02B8 /* GOCalendarResults.h */, + 3D28835A1B8CBFC200DE02B8 /* GOCalendarResults.m */, + ); + name = GOCalendar; + sourceTree = ""; + }; + 3D2883541B8C02AE00DE02B8 /* GOStopwatch */ = { + isa = PBXGroup; + children = ( + 3D2883371B8A716800DE02B8 /* LapTimerTableViewCell.h */, + 3D2883381B8A716800DE02B8 /* LapTimerTableViewCell.m */, + 9A8CD5291B87900000A194D9 /* GOStopwatchViewController.h */, + 9A8CD52A1B87900000A194D9 /* GOStopwatchViewController.m */, + ); + name = GOStopwatch; + sourceTree = ""; + }; + 3D2883551B8C02B400DE02B8 /* GOWorkout */ = { + isa = PBXGroup; + children = ( + 9ACCFF3B1B8B991000F1693C /* GOWorkoutsTableViewController.h */, + 9ACCFF3C1B8B991000F1693C /* GOWorkoutsTableViewController.m */, + 9AD5F5761B8A27B3004F25D6 /* GOTimerViewController.h */, + 9AD5F5771B8A27B3004F25D6 /* GOTimerViewController.m */, + ); + name = GOWorkout; + sourceTree = ""; + }; + 3D2883561B8C02BA00DE02B8 /* GOCustomWorkout */ = { + isa = PBXGroup; + children = ( + 3D29C62D1B8E154A004E33EF /* GOCustomQuestionViewController.h */, + 3D29C62E1B8E154A004E33EF /* GOCustomQuestionViewController.m */, + 3D67F6141B8D89E2008B5E6A /* GOCustomWorkoutTableViewController.h */, + 3D67F6151B8D89E2008B5E6A /* GOCustomWorkoutTableViewController.m */, + 3D67F6171B8D89FB008B5E6A /* GOCustomResultsViewController.h */, + 3D67F6181B8D89FB008B5E6A /* GOCustomResultsViewController.m */, + 3DE05A081B8E4C8C007A66FB /* ExerciseTableViewCell.h */, + 3DE05A091B8E4C8C007A66FB /* ExerciseTableViewCell.m */, + ); + name = GOCustomWorkout; + sourceTree = ""; + }; + 3D2D2EF31B86B5A300E210BA = { + isa = PBXGroup; + children = ( + 9A553E341B8D101B00A0230B /* AVFoundation.framework */, + 3D2D2EFE1B86B5A300E210BA /* go */, + 3D2D2F181B86B5A300E210BA /* go-projectTests */, + 3D2D2F231B86B5A400E210BA /* go-projectUITests */, + 3D2D2EFD1B86B5A300E210BA /* Products */, + ); + sourceTree = ""; + }; + 3D2D2EFD1B86B5A300E210BA /* Products */ = { + isa = PBXGroup; + children = ( + 3D2D2EFC1B86B5A300E210BA /* Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename.app */, + 3D2D2F151B86B5A300E210BA /* Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename.xctest */, + 3D2D2F201B86B5A400E210BA /* Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 3D2D2EFE1B86B5A300E210BA /* go */ = { + isa = PBXGroup; + children = ( + 3D2D2F0B1B86B5A300E210BA /* Assets.xcassets */, + 3D2D2F0D1B86B5A300E210BA /* LaunchScreen.storyboard */, + 3D28835C1B8D268F00DE02B8 /* Main.storyboard */, + 3D2D2F021B86B5A300E210BA /* AppDelegate.h */, + 3DDB60C51B893477008194DB /* Exercises.h */, + 3D2D2F031B86B5A300E210BA /* AppDelegate.m */, + 3DE05A0B1B8E8B48007A66FB /* Singleton & Objects */, + 9A7EC3CD1B90DE3400D0CFB9 /* GOBuild */, + 3D2883561B8C02BA00DE02B8 /* GOCustomWorkout */, + 3D2883551B8C02B400DE02B8 /* GOWorkout */, + 3D2883541B8C02AE00DE02B8 /* GOStopwatch */, + 3D2883531B8C02A500DE02B8 /* GOCalendar */, + 9A553E361B8D125800A0230B /* GOFight */, + 3D2D2EFF1B86B5A300E210BA /* Supporting Files */, + ); + path = go; + sourceTree = ""; + }; + 3D2D2EFF1B86B5A300E210BA /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 3D65B9FF1BA212CD005B22D5 /* KenzoRegular.otf */, + 3D65B9FD1BA2124D005B22D5 /* monofonto.ttf */, + 9A041C221B92786000755002 /* bell.mp3 */, + 9A14C4B31B92338900212C5B /* digital.ttf */, + 9ADCAB671B8D7AC2009E6FF0 /* NikeTotal90.ttf */, + 3D2D2F101B86B5A300E210BA /* Info.plist */, + 3D2D2F001B86B5A300E210BA /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 3D2D2F181B86B5A300E210BA /* go-projectTests */ = { + isa = PBXGroup; + children = ( + 3D2D2F191B86B5A400E210BA /* goprojectTests.m */, + 3D2D2F1B1B86B5A400E210BA /* Info.plist */, + ); + name = "go-projectTests"; + path = goTests; + sourceTree = ""; + }; + 3D2D2F231B86B5A400E210BA /* go-projectUITests */ = { + isa = PBXGroup; + children = ( + 3D2D2F241B86B5A400E210BA /* goprojectUITests.m */, + 3D2D2F261B86B5A400E210BA /* Info.plist */, + ); + name = "go-projectUITests"; + path = goUITests; + sourceTree = ""; + }; + 3DE05A0B1B8E8B48007A66FB /* Singleton & Objects */ = { + isa = PBXGroup; + children = ( + 3DDB60BF1B893332008194DB /* WorkoutManager.h */, + 3DDB60C01B893332008194DB /* WorkoutManager.m */, + 3DDB60C21B893413008194DB /* Workout.h */, + 3DDB60C31B893413008194DB /* Workout.m */, + 3DDB60C61B893477008194DB /* Exercises.m */, + 3D29C62A1B8E009F004E33EF /* BackgroundGradient.h */, + 3D29C62B1B8E009F004E33EF /* BackgroundGradient.m */, + ); + name = "Singleton & Objects"; + sourceTree = ""; + }; + 9A553E361B8D125800A0230B /* GOFight */ = { + isa = PBXGroup; + children = ( + 9A553E251B8CFC0700A0230B /* GOFightViewController.h */, + 9A553E261B8CFC0700A0230B /* GOFightViewController.m */, + ); + name = GOFight; + sourceTree = ""; + }; + 9A7EC3CD1B90DE3400D0CFB9 /* GOBuild */ = { + isa = PBXGroup; + children = ( + 9A7EC3D11B90E3E400D0CFB9 /* BuildManager.h */, + 9A7EC3D21B90E3E400D0CFB9 /* BuildManager.m */, + 9A7EC3D41B90E46600D0CFB9 /* BuildWorkout.h */, + 9A7EC3D51B90E46600D0CFB9 /* BuildWorkout.m */, + 9A7EC3CE1B90DE6600D0CFB9 /* GOBuildTableViewController.h */, + 9A7EC3CF1B90DE6600D0CFB9 /* GOBuildTableViewController.m */, + 9A7EC3D71B90E4F600D0CFB9 /* CustomTableViewCell.h */, + 9A7EC3D81B90E4F600D0CFB9 /* CustomTableViewCell.m */, + 9A7EC3DA1B90E65B00D0CFB9 /* CreateWorkoutViewController.h */, + 9A7EC3DB1B90E65B00D0CFB9 /* CreateWorkoutViewController.m */, + ); + name = GOBuild; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3D2D2EFB1B86B5A300E210BA /* GO */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3D2D2F291B86B5A400E210BA /* Build configuration list for PBXNativeTarget "GO" */; + buildPhases = ( + 3D2D2EF81B86B5A300E210BA /* Sources */, + 3D2D2EF91B86B5A300E210BA /* Frameworks */, + 3D2D2EFA1B86B5A300E210BA /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = GO; + productName = "unit-1-final-project"; + productReference = 3D2D2EFC1B86B5A300E210BA /* Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename.app */; + productType = "com.apple.product-type.application"; + }; + 3D2D2F141B86B5A300E210BA /* GOTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3D2D2F2C1B86B5A400E210BA /* Build configuration list for PBXNativeTarget "GOTests" */; + buildPhases = ( + 3D2D2F111B86B5A300E210BA /* Sources */, + 3D2D2F121B86B5A300E210BA /* Frameworks */, + 3D2D2F131B86B5A300E210BA /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 3D2D2F171B86B5A300E210BA /* PBXTargetDependency */, + ); + name = GOTests; + productName = "unit-1-final-projectTests"; + productReference = 3D2D2F151B86B5A300E210BA /* Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 3D2D2F1F1B86B5A400E210BA /* GOUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3D2D2F2F1B86B5A400E210BA /* Build configuration list for PBXNativeTarget "GOUITests" */; + buildPhases = ( + 3D2D2F1C1B86B5A400E210BA /* Sources */, + 3D2D2F1D1B86B5A400E210BA /* Frameworks */, + 3D2D2F1E1B86B5A400E210BA /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 3D2D2F221B86B5A400E210BA /* PBXTargetDependency */, + ); + name = GOUITests; + productName = "unit-1-final-projectUITests"; + productReference = 3D2D2F201B86B5A400E210BA /* Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 3D2D2EF41B86B5A300E210BA /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0700; + ORGANIZATIONNAME = apps; + TargetAttributes = { + 3D2D2EFB1B86B5A300E210BA = { + CreatedOnToolsVersion = 7.0; + DevelopmentTeam = 3358H79N3F; + }; + 3D2D2F141B86B5A300E210BA = { + CreatedOnToolsVersion = 7.0; + TestTargetID = 3D2D2EFB1B86B5A300E210BA; + }; + 3D2D2F1F1B86B5A400E210BA = { + CreatedOnToolsVersion = 7.0; + TestTargetID = 3D2D2EFB1B86B5A300E210BA; + }; + }; + }; + buildConfigurationList = 3D2D2EF71B86B5A300E210BA /* Build configuration list for PBXProject "Go" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 3D2D2EF31B86B5A300E210BA; + productRefGroup = 3D2D2EFD1B86B5A300E210BA /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 3D2D2EFB1B86B5A300E210BA /* GO */, + 3D2D2F141B86B5A300E210BA /* GOTests */, + 3D2D2F1F1B86B5A400E210BA /* GOUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 3D2D2EFA1B86B5A300E210BA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3D65BA001BA212CD005B22D5 /* KenzoRegular.otf in Resources */, + 9A14C4B51B9236C900212C5B /* digital.ttf in Resources */, + 9ADCAB681B8D7B4A009E6FF0 /* NikeTotal90.ttf in Resources */, + 3D2D2F0F1B86B5A300E210BA /* LaunchScreen.storyboard in Resources */, + 3D2D2F0C1B86B5A300E210BA /* Assets.xcassets in Resources */, + 3D28835E1B8D268F00DE02B8 /* Main.storyboard in Resources */, + 3D65B9FE1BA2124D005B22D5 /* monofonto.ttf in Resources */, + 9A041C231B92786000755002 /* bell.mp3 in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D2D2F131B86B5A300E210BA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D2D2F1E1B86B5A400E210BA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 3D2D2EF81B86B5A300E210BA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A7EC3D91B90E4F600D0CFB9 /* CustomTableViewCell.m in Sources */, + 9A8CD52B1B87900000A194D9 /* GOStopwatchViewController.m in Sources */, + 9ACCFF3D1B8B991000F1693C /* GOWorkoutsTableViewController.m in Sources */, + 9A7EC3D01B90DE6600D0CFB9 /* GOBuildTableViewController.m in Sources */, + 3DDB60C71B893477008194DB /* Exercises.m in Sources */, + 9A7EC3D61B90E46600D0CFB9 /* BuildWorkout.m in Sources */, + 9AD5F5781B8A27B3004F25D6 /* GOTimerViewController.m in Sources */, + 3D28833F1B8B4DC700DE02B8 /* GOCalendarTableViewController.m in Sources */, + 3D2883391B8A716800DE02B8 /* LapTimerTableViewCell.m in Sources */, + 3DDB60C41B893413008194DB /* Workout.m in Sources */, + 3D28833C1B8B49F100DE02B8 /* GOCalendarViewController.m in Sources */, + 3D28835B1B8CBFC200DE02B8 /* GOCalendarResults.m in Sources */, + 3DE05A0A1B8E4C8C007A66FB /* ExerciseTableViewCell.m in Sources */, + 3D67F6161B8D89E2008B5E6A /* GOCustomWorkoutTableViewController.m in Sources */, + 9A7EC3DC1B90E65B00D0CFB9 /* CreateWorkoutViewController.m in Sources */, + 3D2D2F041B86B5A300E210BA /* AppDelegate.m in Sources */, + 3D67F6191B8D89FB008B5E6A /* GOCustomResultsViewController.m in Sources */, + 3D29C62C1B8E009F004E33EF /* BackgroundGradient.m in Sources */, + 3DDB60C11B893332008194DB /* WorkoutManager.m in Sources */, + 3D29C62F1B8E154A004E33EF /* GOCustomQuestionViewController.m in Sources */, + 3D2D2F011B86B5A300E210BA /* main.m in Sources */, + 9A553E271B8CFC0700A0230B /* GOFightViewController.m in Sources */, + 9A7EC3D31B90E3E400D0CFB9 /* BuildManager.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D2D2F111B86B5A300E210BA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3D2D2F1A1B86B5A400E210BA /* goprojectTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D2D2F1C1B86B5A400E210BA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3D2D2F251B86B5A400E210BA /* goprojectUITests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 3D2D2F171B86B5A300E210BA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3D2D2EFB1B86B5A300E210BA /* GO */; + targetProxy = 3D2D2F161B86B5A300E210BA /* PBXContainerItemProxy */; + }; + 3D2D2F221B86B5A400E210BA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3D2D2EFB1B86B5A300E210BA /* GO */; + targetProxy = 3D2D2F211B86B5A400E210BA /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 3D28835C1B8D268F00DE02B8 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 3D28835D1B8D268F00DE02B8 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 3D2D2F0D1B86B5A300E210BA /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 3D2D2F0E1B86B5A300E210BA /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 3D2D2F271B86B5A400E210BA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.4; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 3D2D2F281B86B5A400E210BA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.4; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 3D2D2F2A1B86B5A400E210BA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + INFOPLIST_FILE = go/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = c4q.accesscode.zovfreullia.go; + PRODUCT_NAME = Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename; + PROVISIONING_PROFILE = ""; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + 3D2D2F2B1B86B5A400E210BA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + INFOPLIST_FILE = go/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = c4q.accesscode.zovfreullia.go; + PRODUCT_NAME = Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename; + PROVISIONING_PROFILE = ""; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; + 3D2D2F2D1B86B5A400E210BA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + INFOPLIST_FILE = "unit-1-final-projectTests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "c4q.accesscode.zovfreullia.unit-1-final-projectTests"; + PRODUCT_NAME = Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename.app/Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename"; + }; + name = Debug; + }; + 3D2D2F2E1B86B5A400E210BA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + INFOPLIST_FILE = "unit-1-final-projectTests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "c4q.accesscode.zovfreullia.unit-1-final-projectTests"; + PRODUCT_NAME = Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename.app/Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename"; + }; + name = Release; + }; + 3D2D2F301B86B5A400E210BA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = "unit-1-final-projectUITests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "c4q.accesscode.zovfreullia.unit-1-final-projectUITests"; + PRODUCT_NAME = Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename; + TEST_TARGET_NAME = "unit-1-final-project"; + USES_XCTRUNNER = YES; + }; + name = Debug; + }; + 3D2D2F311B86B5A400E210BA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = "unit-1-final-projectUITests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "c4q.accesscode.zovfreullia.unit-1-final-projectUITests"; + PRODUCT_NAME = Go.temp_caseinsensitive_rename.temp_caseinsensitive_rename; + TEST_TARGET_NAME = "unit-1-final-project"; + USES_XCTRUNNER = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3D2D2EF71B86B5A300E210BA /* Build configuration list for PBXProject "Go" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3D2D2F271B86B5A400E210BA /* Debug */, + 3D2D2F281B86B5A400E210BA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3D2D2F291B86B5A400E210BA /* Build configuration list for PBXNativeTarget "GO" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3D2D2F2A1B86B5A400E210BA /* Debug */, + 3D2D2F2B1B86B5A400E210BA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3D2D2F2C1B86B5A400E210BA /* Build configuration list for PBXNativeTarget "GOTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3D2D2F2D1B86B5A400E210BA /* Debug */, + 3D2D2F2E1B86B5A400E210BA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3D2D2F2F1B86B5A400E210BA /* Build configuration list for PBXNativeTarget "GOUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3D2D2F301B86B5A400E210BA /* Debug */, + 3D2D2F311B86B5A400E210BA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 3D2D2EF41B86B5A300E210BA /* Project object */; +} diff --git a/Time/Time.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/GO.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 64% rename from Time/Time.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to GO.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 85e10aa..406013e 100644 --- a/Time/Time.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/GO.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:/Users/Mima/Desktop/GO/Go.xcodeproj"> diff --git a/README.md b/README.md index 13563c2..5471d3c 100644 --- a/README.md +++ b/README.md @@ -1,69 +1,20 @@ -# Unit 1 Final Project - -**Dates:** -09/01 - Practice demos -09/03 - Final demos - -## Feature Requirements -2 primary screens - -* Stopwatch - * Laps - * Pause - * Reset -* Timer - * User can create preset timers (popcorn, coffee, running, etc) - * User can select from preset timers - * User can set a one time timer - * User can pause timer - * Special events countdown (graduation, birthday, labor day) - -## Technical Requirements -* NSTimer or alternative (CADisplayLink, performSelector:) -* UITabBarController -* UITabBar with UIImage -* Each screen is a separate UIViewController - -## Project Plan -* Outlining tasks based on user stories -* Delegation of tasks amongst team members - * Work should be evenly divided -* Identify checkpoints -* Communcation plan - -## Bonus -* Progress indicator for timer -* Sounds, vibrations -* World Clock (additional tab) -* Themed UI - -## Extra bonus -* Backgrounding -* Local notifications - -User stories define product features -Present for feedback - -## Inspiration - -**[Timer +](https://itunes.apple.com/us/app/timer+/id391564049?mt=8)** - - - - -**[Time Timer](https://itunes.apple.com/us/app/time-timer/id332520417?mt=8)** - - - - -**[Countdown](https://itunes.apple.com/us/app/countdown!!-event-reminders/id424216726?mt=8)** - - - - -**[Hours Time Tracking](https://itunes.apple.com/us/app/hours-time-tracking/id895933956?mt=8)** - - - - - +GO + +mit license + +A workout application available for iPhones. GO is a fitness application that makes tracking time easy for you. + +Description: This is a fully-functional open-source workout application. There are four focuses: cardio, toning, lifting weights, and sparring. Each form of exercise is covered through a timer that targets specific muscle groups. + +Functionality: +* Stopwatch with laps +* Customizable date countdowns +* Available cardio workouts with automatic timer +* Customizable workouts that counts down for you +* Weight training list that can be checked off + +![GO](/images/goshot1.png?raw=true "Optional Title") + +![GO](/images/goshot2.png?raw=true "Optional Title") + +![GO](/images/goshot3.png?raw=true "Optional Title") diff --git a/Time/Time.xcodeproj/project.pbxproj b/Time/Time.xcodeproj/project.pbxproj deleted file mode 100644 index c8743f0..0000000 --- a/Time/Time.xcodeproj/project.pbxproj +++ /dev/null @@ -1,433 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 8D05375E1B86687C00588318 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D05375D1B86687C00588318 /* main.m */; }; - 8D0537611B86687C00588318 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D0537601B86687C00588318 /* AppDelegate.m */; }; - 8D0537641B86687C00588318 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D0537631B86687C00588318 /* ViewController.m */; }; - 8D0537671B86687C00588318 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8D0537651B86687C00588318 /* Main.storyboard */; }; - 8D0537691B86687C00588318 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8D0537681B86687C00588318 /* Images.xcassets */; }; - 8D05376C1B86687C00588318 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8D05376A1B86687C00588318 /* LaunchScreen.xib */; }; - 8D0537781B86687C00588318 /* TimeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D0537771B86687C00588318 /* TimeTests.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 8D0537721B86687C00588318 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8D0537501B86687B00588318 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8D0537571B86687B00588318; - remoteInfo = Time; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 8D0537581B86687B00588318 /* Time.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Time.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 8D05375C1B86687B00588318 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 8D05375D1B86687C00588318 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 8D05375F1B86687C00588318 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 8D0537601B86687C00588318 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 8D0537621B86687C00588318 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; - 8D0537631B86687C00588318 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; - 8D0537661B86687C00588318 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 8D0537681B86687C00588318 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - 8D05376B1B86687C00588318 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 8D0537711B86687C00588318 /* TimeTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TimeTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 8D0537761B86687C00588318 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 8D0537771B86687C00588318 /* TimeTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TimeTests.m; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8D0537551B86687B00588318 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8D05376E1B86687C00588318 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 8D05374F1B86687B00588318 = { - isa = PBXGroup; - children = ( - 8D05375A1B86687B00588318 /* Time */, - 8D0537741B86687C00588318 /* TimeTests */, - 8D0537591B86687B00588318 /* Products */, - ); - sourceTree = ""; - }; - 8D0537591B86687B00588318 /* Products */ = { - isa = PBXGroup; - children = ( - 8D0537581B86687B00588318 /* Time.app */, - 8D0537711B86687C00588318 /* TimeTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 8D05375A1B86687B00588318 /* Time */ = { - isa = PBXGroup; - children = ( - 8D05375F1B86687C00588318 /* AppDelegate.h */, - 8D0537601B86687C00588318 /* AppDelegate.m */, - 8D0537621B86687C00588318 /* ViewController.h */, - 8D0537631B86687C00588318 /* ViewController.m */, - 8D0537651B86687C00588318 /* Main.storyboard */, - 8D0537681B86687C00588318 /* Images.xcassets */, - 8D05376A1B86687C00588318 /* LaunchScreen.xib */, - 8D05375B1B86687B00588318 /* Supporting Files */, - ); - path = Time; - sourceTree = ""; - }; - 8D05375B1B86687B00588318 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 8D05375C1B86687B00588318 /* Info.plist */, - 8D05375D1B86687C00588318 /* main.m */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 8D0537741B86687C00588318 /* TimeTests */ = { - isa = PBXGroup; - children = ( - 8D0537771B86687C00588318 /* TimeTests.m */, - 8D0537751B86687C00588318 /* Supporting Files */, - ); - path = TimeTests; - sourceTree = ""; - }; - 8D0537751B86687C00588318 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 8D0537761B86687C00588318 /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8D0537571B86687B00588318 /* Time */ = { - isa = PBXNativeTarget; - buildConfigurationList = 8D05377B1B86687C00588318 /* Build configuration list for PBXNativeTarget "Time" */; - buildPhases = ( - 8D0537541B86687B00588318 /* Sources */, - 8D0537551B86687B00588318 /* Frameworks */, - 8D0537561B86687B00588318 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Time; - productName = Time; - productReference = 8D0537581B86687B00588318 /* Time.app */; - productType = "com.apple.product-type.application"; - }; - 8D0537701B86687C00588318 /* TimeTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 8D05377E1B86687C00588318 /* Build configuration list for PBXNativeTarget "TimeTests" */; - buildPhases = ( - 8D05376D1B86687C00588318 /* Sources */, - 8D05376E1B86687C00588318 /* Frameworks */, - 8D05376F1B86687C00588318 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 8D0537731B86687C00588318 /* PBXTargetDependency */, - ); - name = TimeTests; - productName = TimeTests; - productReference = 8D0537711B86687C00588318 /* TimeTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 8D0537501B86687B00588318 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0640; - ORGANIZATIONNAME = "Mike Kavouras"; - TargetAttributes = { - 8D0537571B86687B00588318 = { - CreatedOnToolsVersion = 6.4; - }; - 8D0537701B86687C00588318 = { - CreatedOnToolsVersion = 6.4; - TestTargetID = 8D0537571B86687B00588318; - }; - }; - }; - buildConfigurationList = 8D0537531B86687B00588318 /* Build configuration list for PBXProject "Time" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 8D05374F1B86687B00588318; - productRefGroup = 8D0537591B86687B00588318 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 8D0537571B86687B00588318 /* Time */, - 8D0537701B86687C00588318 /* TimeTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 8D0537561B86687B00588318 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D0537671B86687C00588318 /* Main.storyboard in Resources */, - 8D05376C1B86687C00588318 /* LaunchScreen.xib in Resources */, - 8D0537691B86687C00588318 /* Images.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8D05376F1B86687C00588318 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8D0537541B86687B00588318 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D0537641B86687C00588318 /* ViewController.m in Sources */, - 8D0537611B86687C00588318 /* AppDelegate.m in Sources */, - 8D05375E1B86687C00588318 /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8D05376D1B86687C00588318 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D0537781B86687C00588318 /* TimeTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 8D0537731B86687C00588318 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 8D0537571B86687B00588318 /* Time */; - targetProxy = 8D0537721B86687C00588318 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 8D0537651B86687C00588318 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 8D0537661B86687C00588318 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 8D05376A1B86687C00588318 /* LaunchScreen.xib */ = { - isa = PBXVariantGroup; - children = ( - 8D05376B1B86687C00588318 /* Base */, - ); - name = LaunchScreen.xib; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 8D0537791B86687C00588318 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.4; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 8D05377A1B86687C00588318 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.4; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 8D05377C1B86687C00588318 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = Time/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 8D05377D1B86687C00588318 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = Time/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; - 8D05377F1B86687C00588318 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = TimeTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Time.app/Time"; - }; - name = Debug; - }; - 8D0537801B86687C00588318 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - INFOPLIST_FILE = TimeTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Time.app/Time"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 8D0537531B86687B00588318 /* Build configuration list for PBXProject "Time" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8D0537791B86687C00588318 /* Debug */, - 8D05377A1B86687C00588318 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 8D05377B1B86687C00588318 /* Build configuration list for PBXNativeTarget "Time" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8D05377C1B86687C00588318 /* Debug */, - 8D05377D1B86687C00588318 /* Release */, - ); - defaultConfigurationIsVisible = 0; - }; - 8D05377E1B86687C00588318 /* Build configuration list for PBXNativeTarget "TimeTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 8D05377F1B86687C00588318 /* Debug */, - 8D0537801B86687C00588318 /* Release */, - ); - defaultConfigurationIsVisible = 0; - }; -/* End XCConfigurationList section */ - }; - rootObject = 8D0537501B86687B00588318 /* Project object */; -} diff --git a/Time/Time/AppDelegate.h b/Time/Time/AppDelegate.h deleted file mode 100644 index c5a324b..0000000 --- a/Time/Time/AppDelegate.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// AppDelegate.h -// Time -// -// Created by Michael Kavouras on 8/20/15. -// Copyright (c) 2015 Mike Kavouras. All rights reserved. -// - -#import - -@interface AppDelegate : UIResponder - -@property (strong, nonatomic) UIWindow *window; - - -@end - diff --git a/Time/Time/Base.lproj/LaunchScreen.xib b/Time/Time/Base.lproj/LaunchScreen.xib deleted file mode 100644 index f9a54ff..0000000 --- a/Time/Time/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Time/Time/Base.lproj/Main.storyboard b/Time/Time/Base.lproj/Main.storyboard deleted file mode 100644 index f56d2f3..0000000 --- a/Time/Time/Base.lproj/Main.storyboard +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Time/Time/ViewController.h b/Time/Time/ViewController.h deleted file mode 100644 index 9d0e38f..0000000 --- a/Time/Time/ViewController.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// ViewController.h -// Time -// -// Created by Michael Kavouras on 8/20/15. -// Copyright (c) 2015 Mike Kavouras. All rights reserved. -// - -#import - -@interface ViewController : UIViewController - - -@end - diff --git a/Time/Time/ViewController.m b/Time/Time/ViewController.m deleted file mode 100644 index 194fe5f..0000000 --- a/Time/Time/ViewController.m +++ /dev/null @@ -1,27 +0,0 @@ -// -// ViewController.m -// Time -// -// Created by Michael Kavouras on 8/20/15. -// Copyright (c) 2015 Mike Kavouras. All rights reserved. -// - -#import "ViewController.h" - -@interface ViewController () - -@end - -@implementation ViewController - -- (void)viewDidLoad { - [super viewDidLoad]; - // Do any additional setup after loading the view, typically from a nib. -} - -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - -@end diff --git a/finalproject - keynote.key b/finalproject - keynote.key new file mode 100644 index 0000000..98953ec Binary files /dev/null and b/finalproject - keynote.key differ diff --git a/go/AppDelegate.h b/go/AppDelegate.h new file mode 100644 index 0000000..c7506c1 --- /dev/null +++ b/go/AppDelegate.h @@ -0,0 +1,20 @@ +// +// AppDelegate.h +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/20/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import + +//@class GOStopwatchViewController; + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +//@property (strong, nonatomic) GOStopwatchViewController *lapTimer; + +@end + diff --git a/Time/Time/AppDelegate.m b/go/AppDelegate.m similarity index 89% rename from Time/Time/AppDelegate.m rename to go/AppDelegate.m index d59e7a8..643e0e1 100644 --- a/Time/Time/AppDelegate.m +++ b/go/AppDelegate.m @@ -1,22 +1,25 @@ // // AppDelegate.m -// Time +// unit-1-final-project // -// Created by Michael Kavouras on 8/20/15. -// Copyright (c) 2015 Mike Kavouras. All rights reserved. +// Created by Fatima Zenine Villanueva on 8/20/15. +// Copyright © 2015 apps. All rights reserved. // #import "AppDelegate.h" -@interface AppDelegate () +@interface AppDelegate () @end @implementation AppDelegate + + - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - // Override point for customization after application launch. + + return YES; } diff --git a/Time/Time/Images.xcassets/AppIcon.appiconset/Contents.json b/go/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 54% rename from Time/Time/Images.xcassets/AppIcon.appiconset/Contents.json rename to go/Assets.xcassets/AppIcon.appiconset/Contents.json index 36d2c80..118c98f 100644 --- a/Time/Time/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/go/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -29,36 +29,6 @@ "idiom" : "iphone", "size" : "60x60", "scale" : "3x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "76x76", - "scale" : "2x" } ], "info" : { diff --git a/go/Assets.xcassets/Contents.json b/go/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/go/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/addButton.imageset/Contents.json b/go/Assets.xcassets/addButton.imageset/Contents.json new file mode 100644 index 0000000..038e9ef --- /dev/null +++ b/go/Assets.xcassets/addButton.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "addButton.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/addButton.imageset/addButton.png b/go/Assets.xcassets/addButton.imageset/addButton.png new file mode 100644 index 0000000..404be75 Binary files /dev/null and b/go/Assets.xcassets/addButton.imageset/addButton.png differ diff --git a/go/Assets.xcassets/addButtonSelected.imageset/Contents.json b/go/Assets.xcassets/addButtonSelected.imageset/Contents.json new file mode 100644 index 0000000..38293fe --- /dev/null +++ b/go/Assets.xcassets/addButtonSelected.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "addButtonSelected.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/addButtonSelected.imageset/addButtonSelected.png b/go/Assets.xcassets/addButtonSelected.imageset/addButtonSelected.png new file mode 100644 index 0000000..1ce59ef Binary files /dev/null and b/go/Assets.xcassets/addButtonSelected.imageset/addButtonSelected.png differ diff --git a/go/Assets.xcassets/burpees.imageset/Contents.json b/go/Assets.xcassets/burpees.imageset/Contents.json new file mode 100644 index 0000000..547073d --- /dev/null +++ b/go/Assets.xcassets/burpees.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "burpees.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/burpees.imageset/burpees.jpg b/go/Assets.xcassets/burpees.imageset/burpees.jpg new file mode 100644 index 0000000..2ab72cc Binary files /dev/null and b/go/Assets.xcassets/burpees.imageset/burpees.jpg differ diff --git a/go/Assets.xcassets/calendarIcon.imageset/Contents.json b/go/Assets.xcassets/calendarIcon.imageset/Contents.json new file mode 100644 index 0000000..bcabebf --- /dev/null +++ b/go/Assets.xcassets/calendarIcon.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "calendarIcon.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/calendarIcon.imageset/calendarIcon.png b/go/Assets.xcassets/calendarIcon.imageset/calendarIcon.png new file mode 100644 index 0000000..c06b3ed Binary files /dev/null and b/go/Assets.xcassets/calendarIcon.imageset/calendarIcon.png differ diff --git a/go/Assets.xcassets/calendarIconSelected.imageset/Contents.json b/go/Assets.xcassets/calendarIconSelected.imageset/Contents.json new file mode 100644 index 0000000..0808d44 --- /dev/null +++ b/go/Assets.xcassets/calendarIconSelected.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "calendarIconSelected.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/calendarIconSelected.imageset/calendarIconSelected.png b/go/Assets.xcassets/calendarIconSelected.imageset/calendarIconSelected.png new file mode 100644 index 0000000..a929714 Binary files /dev/null and b/go/Assets.xcassets/calendarIconSelected.imageset/calendarIconSelected.png differ diff --git a/go/Assets.xcassets/dips.imageset/Contents.json b/go/Assets.xcassets/dips.imageset/Contents.json new file mode 100644 index 0000000..1903ba7 --- /dev/null +++ b/go/Assets.xcassets/dips.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "dips.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/dips.imageset/dips.jpg b/go/Assets.xcassets/dips.imageset/dips.jpg new file mode 100644 index 0000000..b920d18 Binary files /dev/null and b/go/Assets.xcassets/dips.imageset/dips.jpg differ diff --git a/go/Assets.xcassets/glogo.imageset/Contents.json b/go/Assets.xcassets/glogo.imageset/Contents.json new file mode 100644 index 0000000..fc5f6a6 --- /dev/null +++ b/go/Assets.xcassets/glogo.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "glogo.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/glogo.imageset/glogo.png b/go/Assets.xcassets/glogo.imageset/glogo.png new file mode 100644 index 0000000..6cf8290 Binary files /dev/null and b/go/Assets.xcassets/glogo.imageset/glogo.png differ diff --git a/go/Assets.xcassets/goIcon.imageset/Contents.json b/go/Assets.xcassets/goIcon.imageset/Contents.json new file mode 100644 index 0000000..7721ec8 --- /dev/null +++ b/go/Assets.xcassets/goIcon.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "goIcon.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/goIcon.imageset/goIcon.png b/go/Assets.xcassets/goIcon.imageset/goIcon.png new file mode 100644 index 0000000..2355d1d Binary files /dev/null and b/go/Assets.xcassets/goIcon.imageset/goIcon.png differ diff --git a/go/Assets.xcassets/goIconSelected.imageset/Contents.json b/go/Assets.xcassets/goIconSelected.imageset/Contents.json new file mode 100644 index 0000000..2eba079 --- /dev/null +++ b/go/Assets.xcassets/goIconSelected.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "goIconSelected.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/goIconSelected.imageset/goIconSelected.png b/go/Assets.xcassets/goIconSelected.imageset/goIconSelected.png new file mode 100644 index 0000000..ba618e3 Binary files /dev/null and b/go/Assets.xcassets/goIconSelected.imageset/goIconSelected.png differ diff --git a/go/Assets.xcassets/gohard/Contents.json b/go/Assets.xcassets/gohard/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/go/Assets.xcassets/gohard/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/gohard/burpees.imageset/Contents.json b/go/Assets.xcassets/gohard/burpees.imageset/Contents.json new file mode 100644 index 0000000..547073d --- /dev/null +++ b/go/Assets.xcassets/gohard/burpees.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "burpees.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/gohard/burpees.imageset/burpees.jpg b/go/Assets.xcassets/gohard/burpees.imageset/burpees.jpg new file mode 100644 index 0000000..5d756f1 Binary files /dev/null and b/go/Assets.xcassets/gohard/burpees.imageset/burpees.jpg differ diff --git a/go/Assets.xcassets/gohard/dip.imageset/Contents.json b/go/Assets.xcassets/gohard/dip.imageset/Contents.json new file mode 100644 index 0000000..1743058 --- /dev/null +++ b/go/Assets.xcassets/gohard/dip.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "dip.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/gohard/dip.imageset/dip.jpg b/go/Assets.xcassets/gohard/dip.imageset/dip.jpg new file mode 100644 index 0000000..56d94e0 Binary files /dev/null and b/go/Assets.xcassets/gohard/dip.imageset/dip.jpg differ diff --git a/go/Assets.xcassets/gohard/dips.imageset/Contents.json b/go/Assets.xcassets/gohard/dips.imageset/Contents.json new file mode 100644 index 0000000..1903ba7 --- /dev/null +++ b/go/Assets.xcassets/gohard/dips.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "dips.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/gohard/dips.imageset/dips.jpg b/go/Assets.xcassets/gohard/dips.imageset/dips.jpg new file mode 100644 index 0000000..8b5876c Binary files /dev/null and b/go/Assets.xcassets/gohard/dips.imageset/dips.jpg differ diff --git a/go/Assets.xcassets/gohard/lunges.imageset/Contents.json b/go/Assets.xcassets/gohard/lunges.imageset/Contents.json new file mode 100644 index 0000000..24f1c61 --- /dev/null +++ b/go/Assets.xcassets/gohard/lunges.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "lunges.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/gohard/lunges.imageset/lunges.jpg b/go/Assets.xcassets/gohard/lunges.imageset/lunges.jpg new file mode 100644 index 0000000..d561e61 Binary files /dev/null and b/go/Assets.xcassets/gohard/lunges.imageset/lunges.jpg differ diff --git a/go/Assets.xcassets/gohard/pullups.imageset/Contents.json b/go/Assets.xcassets/gohard/pullups.imageset/Contents.json new file mode 100644 index 0000000..53a8e45 --- /dev/null +++ b/go/Assets.xcassets/gohard/pullups.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "pullups.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/gohard/pullups.imageset/pullups.jpg b/go/Assets.xcassets/gohard/pullups.imageset/pullups.jpg new file mode 100644 index 0000000..463e293 Binary files /dev/null and b/go/Assets.xcassets/gohard/pullups.imageset/pullups.jpg differ diff --git a/go/Assets.xcassets/gohard/pushup.imageset/Contents.json b/go/Assets.xcassets/gohard/pushup.imageset/Contents.json new file mode 100644 index 0000000..04c326f --- /dev/null +++ b/go/Assets.xcassets/gohard/pushup.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "pushup.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/gohard/pushup.imageset/pushup.jpg b/go/Assets.xcassets/gohard/pushup.imageset/pushup.jpg new file mode 100644 index 0000000..9632e67 Binary files /dev/null and b/go/Assets.xcassets/gohard/pushup.imageset/pushup.jpg differ diff --git a/go/Assets.xcassets/gohard/situp.imageset/Contents.json b/go/Assets.xcassets/gohard/situp.imageset/Contents.json new file mode 100644 index 0000000..259ad6d --- /dev/null +++ b/go/Assets.xcassets/gohard/situp.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "situp.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/gohard/situp.imageset/situp.jpg b/go/Assets.xcassets/gohard/situp.imageset/situp.jpg new file mode 100644 index 0000000..734bad7 Binary files /dev/null and b/go/Assets.xcassets/gohard/situp.imageset/situp.jpg differ diff --git a/go/Assets.xcassets/gohard/squat.imageset/Contents.json b/go/Assets.xcassets/gohard/squat.imageset/Contents.json new file mode 100644 index 0000000..3a534bc --- /dev/null +++ b/go/Assets.xcassets/gohard/squat.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "squat.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/gohard/squat.imageset/squat.jpg b/go/Assets.xcassets/gohard/squat.imageset/squat.jpg new file mode 100644 index 0000000..641c76a Binary files /dev/null and b/go/Assets.xcassets/gohard/squat.imageset/squat.jpg differ diff --git a/go/Assets.xcassets/gohard/squats.imageset/Contents.json b/go/Assets.xcassets/gohard/squats.imageset/Contents.json new file mode 100644 index 0000000..28969ee --- /dev/null +++ b/go/Assets.xcassets/gohard/squats.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "squats.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/gohard/squats.imageset/squats.jpg b/go/Assets.xcassets/gohard/squats.imageset/squats.jpg new file mode 100644 index 0000000..168c2d6 Binary files /dev/null and b/go/Assets.xcassets/gohard/squats.imageset/squats.jpg differ diff --git a/go/Assets.xcassets/golean/Contents.json b/go/Assets.xcassets/golean/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/go/Assets.xcassets/golean/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/golean/jog.imageset/Contents.json b/go/Assets.xcassets/golean/jog.imageset/Contents.json new file mode 100644 index 0000000..36fd740 --- /dev/null +++ b/go/Assets.xcassets/golean/jog.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "jog.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/golean/jog.imageset/jog.jpg b/go/Assets.xcassets/golean/jog.imageset/jog.jpg new file mode 100644 index 0000000..89d5e63 Binary files /dev/null and b/go/Assets.xcassets/golean/jog.imageset/jog.jpg differ diff --git a/go/Assets.xcassets/golean/jumprope.imageset/Contents.json b/go/Assets.xcassets/golean/jumprope.imageset/Contents.json new file mode 100644 index 0000000..b81ff01 --- /dev/null +++ b/go/Assets.xcassets/golean/jumprope.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "jumprope.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/golean/jumprope.imageset/jumprope.jpg b/go/Assets.xcassets/golean/jumprope.imageset/jumprope.jpg new file mode 100644 index 0000000..8967036 Binary files /dev/null and b/go/Assets.xcassets/golean/jumprope.imageset/jumprope.jpg differ diff --git a/go/Assets.xcassets/golean/jumpsquats.imageset/Contents.json b/go/Assets.xcassets/golean/jumpsquats.imageset/Contents.json new file mode 100644 index 0000000..bd0dfeb --- /dev/null +++ b/go/Assets.xcassets/golean/jumpsquats.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Jump-Squats.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/golean/jumpsquats.imageset/Jump-Squats.jpg b/go/Assets.xcassets/golean/jumpsquats.imageset/Jump-Squats.jpg new file mode 100644 index 0000000..c8dc507 Binary files /dev/null and b/go/Assets.xcassets/golean/jumpsquats.imageset/Jump-Squats.jpg differ diff --git a/go/Assets.xcassets/golean/mountainclimbers.imageset/Contents.json b/go/Assets.xcassets/golean/mountainclimbers.imageset/Contents.json new file mode 100644 index 0000000..df4e022 --- /dev/null +++ b/go/Assets.xcassets/golean/mountainclimbers.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "mountainclimbers.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/golean/mountainclimbers.imageset/mountainclimbers.jpg b/go/Assets.xcassets/golean/mountainclimbers.imageset/mountainclimbers.jpg new file mode 100644 index 0000000..bb46ab3 Binary files /dev/null and b/go/Assets.xcassets/golean/mountainclimbers.imageset/mountainclimbers.jpg differ diff --git a/go/Assets.xcassets/golean/plank.imageset/Contents.json b/go/Assets.xcassets/golean/plank.imageset/Contents.json new file mode 100644 index 0000000..f888a85 --- /dev/null +++ b/go/Assets.xcassets/golean/plank.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "plank.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/golean/plank.imageset/plank.jpg b/go/Assets.xcassets/golean/plank.imageset/plank.jpg new file mode 100644 index 0000000..f6cfec6 Binary files /dev/null and b/go/Assets.xcassets/golean/plank.imageset/plank.jpg differ diff --git a/go/Assets.xcassets/golean/runstairs.imageset/Contents.json b/go/Assets.xcassets/golean/runstairs.imageset/Contents.json new file mode 100644 index 0000000..398bd73 --- /dev/null +++ b/go/Assets.xcassets/golean/runstairs.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "runstairs.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/golean/runstairs.imageset/runstairs.jpg b/go/Assets.xcassets/golean/runstairs.imageset/runstairs.jpg new file mode 100644 index 0000000..be30ff0 Binary files /dev/null and b/go/Assets.xcassets/golean/runstairs.imageset/runstairs.jpg differ diff --git a/go/Assets.xcassets/golean/sprint.imageset/Contents.json b/go/Assets.xcassets/golean/sprint.imageset/Contents.json new file mode 100644 index 0000000..fbc1222 --- /dev/null +++ b/go/Assets.xcassets/golean/sprint.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "sprint.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/golean/sprint.imageset/sprint.jpg b/go/Assets.xcassets/golean/sprint.imageset/sprint.jpg new file mode 100644 index 0000000..cae671d Binary files /dev/null and b/go/Assets.xcassets/golean/sprint.imageset/sprint.jpg differ diff --git a/go/Assets.xcassets/lunges.imageset/Contents.json b/go/Assets.xcassets/lunges.imageset/Contents.json new file mode 100644 index 0000000..63d66e3 --- /dev/null +++ b/go/Assets.xcassets/lunges.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "lunges.jpeg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/lunges.imageset/lunges.jpeg b/go/Assets.xcassets/lunges.imageset/lunges.jpeg new file mode 100644 index 0000000..24f659d Binary files /dev/null and b/go/Assets.xcassets/lunges.imageset/lunges.jpeg differ diff --git a/go/Assets.xcassets/pullup.imageset/pullups.jpg b/go/Assets.xcassets/pullup.imageset/pullups.jpg new file mode 100644 index 0000000..5209750 Binary files /dev/null and b/go/Assets.xcassets/pullup.imageset/pullups.jpg differ diff --git a/go/Assets.xcassets/situp.imageset/situp.jpg b/go/Assets.xcassets/situp.imageset/situp.jpg new file mode 100644 index 0000000..d628a41 Binary files /dev/null and b/go/Assets.xcassets/situp.imageset/situp.jpg differ diff --git a/go/Assets.xcassets/squats.imageset/Contents.json b/go/Assets.xcassets/squats.imageset/Contents.json new file mode 100644 index 0000000..28969ee --- /dev/null +++ b/go/Assets.xcassets/squats.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "squats.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/squats.imageset/squats.jpg b/go/Assets.xcassets/squats.imageset/squats.jpg new file mode 100644 index 0000000..1c5e9a8 Binary files /dev/null and b/go/Assets.xcassets/squats.imageset/squats.jpg differ diff --git a/go/Assets.xcassets/timerIcon.imageset/Contents.json b/go/Assets.xcassets/timerIcon.imageset/Contents.json new file mode 100644 index 0000000..103cfad --- /dev/null +++ b/go/Assets.xcassets/timerIcon.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "timerIcon.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/timerIcon.imageset/timerIcon.png b/go/Assets.xcassets/timerIcon.imageset/timerIcon.png new file mode 100644 index 0000000..47652d5 Binary files /dev/null and b/go/Assets.xcassets/timerIcon.imageset/timerIcon.png differ diff --git a/go/Assets.xcassets/timerIconSelected.imageset/Contents.json b/go/Assets.xcassets/timerIconSelected.imageset/Contents.json new file mode 100644 index 0000000..89f7dfb --- /dev/null +++ b/go/Assets.xcassets/timerIconSelected.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "timerIconSelected.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/timerIconSelected.imageset/timerIconSelected.png b/go/Assets.xcassets/timerIconSelected.imageset/timerIconSelected.png new file mode 100644 index 0000000..19a6fce Binary files /dev/null and b/go/Assets.xcassets/timerIconSelected.imageset/timerIconSelected.png differ diff --git a/go/Assets.xcassets/warmup.imageset/Contents.json b/go/Assets.xcassets/warmup.imageset/Contents.json new file mode 100644 index 0000000..dd4e8a8 --- /dev/null +++ b/go/Assets.xcassets/warmup.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "warmup.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/warmup.imageset/warmup.jpg b/go/Assets.xcassets/warmup.imageset/warmup.jpg new file mode 100644 index 0000000..f14be01 Binary files /dev/null and b/go/Assets.xcassets/warmup.imageset/warmup.jpg differ diff --git a/go/Assets.xcassets/whitebg.imageset/Contents.json b/go/Assets.xcassets/whitebg.imageset/Contents.json new file mode 100644 index 0000000..a49aac7 --- /dev/null +++ b/go/Assets.xcassets/whitebg.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "whitebg.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/go/Assets.xcassets/whitebg.imageset/whitebg.jpg b/go/Assets.xcassets/whitebg.imageset/whitebg.jpg new file mode 100644 index 0000000..f18a6aa Binary files /dev/null and b/go/Assets.xcassets/whitebg.imageset/whitebg.jpg differ diff --git a/go/BackgroundGradient.h b/go/BackgroundGradient.h new file mode 100644 index 0000000..707a896 --- /dev/null +++ b/go/BackgroundGradient.h @@ -0,0 +1,18 @@ +// +// BackgroundGradient.h +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/26/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import +#import + +@interface BackgroundGradient : NSObject ++(CAGradientLayer*) greyGradient; ++(CAGradientLayer*) blueGradient; ++(CAGradientLayer*) greenGradient; + +@end + diff --git a/go/BackgroundGradient.m b/go/BackgroundGradient.m new file mode 100644 index 0000000..32623a4 --- /dev/null +++ b/go/BackgroundGradient.m @@ -0,0 +1,78 @@ +// +// BackgroundGradient.m +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/26/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "BackgroundGradient.h" +#import + +@implementation BackgroundGradient + +//Metallic grey gradient background ++ (CAGradientLayer*) greyGradient { + + UIColor *colorOne = [UIColor colorWithWhite:0.9 alpha:1.0]; + UIColor *colorTwo = [UIColor colorWithHue:0.625 saturation:0.0 brightness:0.85 alpha:1.0]; + UIColor *colorThree = [UIColor colorWithHue:0.625 saturation:0.0 brightness:0.7 alpha:1.0]; + UIColor *colorFour = [UIColor colorWithHue:0.625 saturation:0.0 brightness:0.4 alpha:1.0]; + + NSArray *colors = [NSArray arrayWithObjects:(id)colorOne.CGColor, colorTwo.CGColor, colorThree.CGColor, colorFour.CGColor, nil]; + + NSNumber *stopOne = [NSNumber numberWithFloat:0.0]; + NSNumber *stopTwo = [NSNumber numberWithFloat:0.02]; + NSNumber *stopThree = [NSNumber numberWithFloat:0.99]; + NSNumber *stopFour = [NSNumber numberWithFloat:1.0]; + + NSArray *locations = [NSArray arrayWithObjects:stopOne, stopTwo, stopThree, stopFour, nil]; + CAGradientLayer *headerLayer = [CAGradientLayer layer]; + headerLayer.colors = colors; + headerLayer.locations = locations; + + return headerLayer; + +} + +//Blue gradient background ++ (CAGradientLayer*) blueGradient { + + UIColor *colorOne = [UIColor colorWithRed:(120/255.0) green:(135/255.0) blue:(150/255.0) alpha:1.0]; + UIColor *colorTwo = [UIColor colorWithRed:(57/255.0) green:(79/255.0) blue:(96/255.0) alpha:1.0]; + + NSArray *colors = [NSArray arrayWithObjects:(id)colorOne.CGColor, colorTwo.CGColor, nil]; + NSNumber *stopOne = [NSNumber numberWithFloat:0.0]; + NSNumber *stopTwo = [NSNumber numberWithFloat:1.0]; + + NSArray *locations = [NSArray arrayWithObjects:stopOne, stopTwo, nil]; + + CAGradientLayer *headerLayer = [CAGradientLayer layer]; + headerLayer.colors = colors; + headerLayer.locations = locations; + + return headerLayer; + +} + ++ (CAGradientLayer*) greenGradient { + + UIColor *colorOne = [UIColor colorWithRed:(255/255.0) green:(255/255.0) blue:(255/255.0) alpha:1.0]; + UIColor *colorTwo = [UIColor colorWithRed:(50/255.0) green:(150/255.0) blue:(110/255.0) alpha:1.0]; + + NSArray *colors = [NSArray arrayWithObjects:(id)colorOne.CGColor, colorTwo.CGColor, nil]; + NSNumber *stopOne = [NSNumber numberWithFloat:0.0]; + NSNumber *stopTwo = [NSNumber numberWithFloat:1.0]; + + NSArray *locations = [NSArray arrayWithObjects:stopOne, stopTwo, nil]; + + CAGradientLayer *headerLayer = [CAGradientLayer layer]; + headerLayer.colors = colors; + headerLayer.locations = locations; + + return headerLayer; + +} + + +@end diff --git a/go/Base.lproj/LaunchScreen.storyboard b/go/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..13e9412 --- /dev/null +++ b/go/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/go/Base.lproj/Main.storyboard b/go/Base.lproj/Main.storyboard new file mode 100644 index 0000000..60eee8a --- /dev/null +++ b/go/Base.lproj/Main.storyboard @@ -0,0 +1,1586 @@ + + + + + + + + + + + + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + Kenzo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/go/BuildManager.h b/go/BuildManager.h new file mode 100644 index 0000000..41d4c95 --- /dev/null +++ b/go/BuildManager.h @@ -0,0 +1,19 @@ +// +// BuildManager.h +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/28/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import + +@interface BuildManager : NSObject + +@property (nonatomic) NSMutableArray * workoutList; + +- (void) initializeModel; + ++ (BuildManager *) sharedInstance; //method that creates an instance of class + +@end diff --git a/go/BuildManager.m b/go/BuildManager.m new file mode 100644 index 0000000..6bed4ee --- /dev/null +++ b/go/BuildManager.m @@ -0,0 +1,32 @@ +// +// BuildManager.m +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/28/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "BuildManager.h" + +@implementation BuildManager + ++ (BuildManager *) sharedInstance{ + + static dispatch_once_t once; + static id sharedInstance; + dispatch_once(&once, ^{ + sharedInstance = [[self alloc] init]; + }); + return sharedInstance; +} +- (void) initializeModel { + + if (self.workoutList == nil){ + self.workoutList = [[NSMutableArray alloc] init]; + } else { + nil; + } +} + + +@end diff --git a/go/BuildWorkout.h b/go/BuildWorkout.h new file mode 100644 index 0000000..96735b8 --- /dev/null +++ b/go/BuildWorkout.h @@ -0,0 +1,20 @@ +// +// BuildWorkout.h +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/28/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import + +@interface BuildWorkout : NSObject + +@property (nonatomic) NSDictionary * exercises; +@property (nonatomic) NSString *exerciseName; +@property (nonatomic) NSInteger sets; +@property (nonatomic) NSInteger reps; +@property (nonatomic) NSInteger weight; +-(void) initializeData; + +@end diff --git a/go/BuildWorkout.m b/go/BuildWorkout.m new file mode 100644 index 0000000..88bf264 --- /dev/null +++ b/go/BuildWorkout.m @@ -0,0 +1,79 @@ +// +// BuildWorkout.m +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/28/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "BuildWorkout.h" + +@implementation BuildWorkout + +-(void) initializeData{ + self.exercises = [[NSDictionary alloc]init]; + + NSArray *legs = [[NSArray alloc]init]; + NSArray *chest = [[NSArray alloc]init]; + NSArray *back = [[NSArray alloc]init]; + NSArray *arms = [[NSArray alloc]init]; + NSArray *shoulders = [[NSArray alloc]init]; + + + legs = @[ + @"squat", + @"leg press", + @"leg curls", + @"calf raises", + @"leg extension", + @"box jumps" + ]; + + chest = @[@"bench press", + @"chest fly", + @"incline dumbell press", + @"push-ups", + @"dips", + @"cable crossovers" + ]; + + + back = @[@"dumbell rows", + @"lat pulldown", + @"deadlifts", + @"barbell rows", + @"close-grip pulldown", + @"pull-ups" + ]; + + arms = @[ + @"dumbell curls", + @"barbell curls", + @"tricep pushdown", + @"tricep extension", + @"tricep kickback", + @"hammer curls", + @"forearm curls" + ]; + + shoulders = @[ + @"barbell press", + @"arnold press", + @"reverse fly", + @"side laterals", + @"front plate raise" + ]; + + + self.exercises = @{ + @"Legs": legs, + @"Chest": chest, + @"Back" : back, + @"Arms" : arms, + @"Shoulders" : shoulders, + }; + +} + + +@end diff --git a/go/CreateWorkoutViewController.h b/go/CreateWorkoutViewController.h new file mode 100644 index 0000000..7d1f748 --- /dev/null +++ b/go/CreateWorkoutViewController.h @@ -0,0 +1,26 @@ +// +// CreateWorkoutViewController.h +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/28/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import +#import "BuildWorkout.h" +#import "BuildManager.h" + +@interface CreateWorkoutViewController : UIViewController + + +@property (nonatomic) NSDictionary * exercises; +@property (nonatomic) NSString *exerciseNameString; +@property (nonatomic) BuildWorkout *model; + +@property (nonatomic) NSInteger setsNumber; +@property (nonatomic) NSInteger repsNumber; +@property (nonatomic) NSInteger weightNumber; + +@property (nonatomic) NSMutableArray * workoutList; + +@end diff --git a/go/CreateWorkoutViewController.m b/go/CreateWorkoutViewController.m new file mode 100644 index 0000000..c940c05 --- /dev/null +++ b/go/CreateWorkoutViewController.m @@ -0,0 +1,184 @@ +// +// CreateWorkoutViewController.m +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/28/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "BackgroundGradient.h" +#import "CreateWorkoutViewController.h" + +@interface CreateWorkoutViewController () + +@property (weak, nonatomic) IBOutlet UIPickerView *picker; +@property (weak, nonatomic) IBOutlet UIPickerView *pickerTwo; + +@property (weak, nonatomic) IBOutlet UILabel *exerciseNameLabel; + +//sets +@property (weak, nonatomic) IBOutlet UIStepper *setsStepper; +@property (weak, nonatomic) IBOutlet UILabel *setsLabel; + +//reps +@property (weak, nonatomic) IBOutlet UIStepper *repsStepper; +@property (weak, nonatomic) IBOutlet UILabel *repsLabel; + +//weights +@property (weak, nonatomic) IBOutlet UILabel *weightsLabel; +@property (weak, nonatomic) IBOutlet UISlider *weightsSlider; + +//add button +@property (weak, nonatomic) IBOutlet UIButton *addButton; + +@property (nonatomic) BuildManager * existingData; + + +@end + +@implementation CreateWorkoutViewController + +- (void)viewWillAppear:(BOOL)animated{ + CAGradientLayer *bgLayer = [BackgroundGradient greenGradient]; + bgLayer.frame = self.view.bounds; + [self.view.layer insertSublayer:bgLayer atIndex:0]; + self.navigationController.navigationBar.hidden = YES; +} +- (void)viewDidLoad { + [super viewDidLoad]; + + self.existingData = [BuildManager sharedInstance]; + [self.existingData initializeModel]; + + + self.model = [[BuildWorkout alloc]init]; + [self.model initializeData]; + + self.picker.delegate = self; + self.picker.dataSource = self; + + self.pickerTwo.delegate = self; + self.pickerTwo.dataSource = self; + + self.model.reps = 10; + self.model.sets = 3; + self.model.weight = 200; + + NSLog(@"%@", self.model.exercises); +} + +//Picker View + +-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ + return 1; +} +-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component + +{ + if ([pickerView isEqual:self.picker]){ + NSArray *workoutTypes = [self.model.exercises allKeys]; + return workoutTypes.count; + } + else if ([pickerView isEqual:self.pickerTwo]){ +// NSIndexPath *indexPath; +// NSArray *workoutTypes = [self.model.exercises allKeys]; +// NSString *workoutType = [workoutTypes objectAtIndex:indexPath.row]; +// NSArray *workoutsForType = [self.model.exercises objectForKey:workoutType]; + NSArray *workoutsForType = [self.model.exercises allValues]; + return workoutsForType.count; + } + return 1; +} +-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ + + if ([pickerView isEqual:self.picker]){ + + [self.pickerTwo reloadAllComponents]; + + return [[self.model.exercises allKeys] objectAtIndex:row]; + } + else if ([pickerView isEqual:self.pickerTwo]){ +// NSIndexPath *indexPath; +// NSArray *workoutTypes = [self.model.exercises allKeys]; +// NSString *workoutType = [workoutTypes objectAtIndex:indexPath.row]; +// return [[self.model.exercises objectForKey:workoutType] objectAtIndex:row]; + + NSInteger typeWorkoutRow = [self.picker selectedRowInComponent:0]; +// NSArray *allExercises = [self.model.exercises allKeys]; +// NSString *allExercisesType = [allExercises objectAtIndex:typeWorkoutRow]; + +// NSString *bodyPartKey = [[self.model.exercises allKeys] objectAtIndex:indexPath.row]; +// NSArray *allExercisesForPart = [self.model.exercises objectForKey:bodyPartKey]; +// NSString *exerciseSelected = [allExercisesForPart objectAtIndex:typeWorkoutRow]; + NSInteger selectedExercise = [self.pickerTwo selectedRowInComponent:0]; + +//get key in string +//get all values of key in array +//get the string of the value selected in the picker + + NSString *keyString = [[self.model.exercises allKeys] objectAtIndex:typeWorkoutRow]; + NSArray *arrayOfValuesFromKey = [self.model.exercises valueForKey:keyString]; + NSString *stringFromArray = [arrayOfValuesFromKey objectAtIndex:selectedExercise]; + + + // NSLog(@"This is key: %@", keyString); + + // NSLog (@"This is exercise: %@",stringFromArray); + + //NSLog(@"%@", workoutsForType); + + self.exerciseNameLabel.text = [[self.model.exercises objectForKey:keyString]objectAtIndex:row]; + self.exerciseNameString = stringFromArray; + self.exerciseNameLabel.text = self.exerciseNameString; + self.model.exerciseName = self.exerciseNameString; +// + // return stringFromArray; + return [[self.model.exercises objectForKey:keyString]objectAtIndex:row]; + + } + + return @""; +} + +- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ + + if ([pickerView isEqual:self.picker]){ + [self.pickerTwo reloadAllComponents]; + + } + +} +- (IBAction)setsValueChanged:(UIStepper *)sender { + self.setsNumber = [sender value]; + self.model.sets = self.setsNumber; + [self.setsLabel setText:[NSString stringWithFormat:@"%d", (int)[sender value]]]; +} + +- (IBAction)repsValueChanged:(UIStepper *)sender { + + self.repsNumber = [sender value]; + self.model.reps = self.repsNumber; + [self.repsLabel setText:[NSString stringWithFormat:@"%d", (int)[sender value]]]; + +} +- (IBAction)weightsSliderValue:(UISlider *)sender { + + [sender setValue:((int)((sender.value + 2.5) / 5) * 5) animated:NO]; + + self.weightNumber = [sender value]; + self.model.weight = self.weightNumber; + [self.weightsLabel setText:[NSString stringWithFormat:@"%d", (int)[sender value]]]; + +} + +- (IBAction)addPressed:(UIButton *)sender { + + [self.existingData.workoutList addObject:self.model]; + + [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES]; + +} +- (void)viewWillDisappear:(BOOL)animated { + self.navigationController.navigationBar.hidden = NO; +} +@end diff --git a/go/CustomTableViewCell.h b/go/CustomTableViewCell.h new file mode 100644 index 0000000..3e9f650 --- /dev/null +++ b/go/CustomTableViewCell.h @@ -0,0 +1,23 @@ +// +// CustomTableViewCell.h +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/28/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "GOBuildTableViewController.h" +#import + +@interface CustomTableViewCell : UITableViewCell + +@property (weak, nonatomic) IBOutlet UILabel *workoutNameLabel; + +@property (weak, nonatomic) IBOutlet UILabel *setLabel; +@property (weak, nonatomic) IBOutlet UILabel *repLabel; +@property (weak, nonatomic) IBOutlet UILabel *weightLabel; + + + + +@end diff --git a/go/CustomTableViewCell.m b/go/CustomTableViewCell.m new file mode 100644 index 0000000..8ea3f3e --- /dev/null +++ b/go/CustomTableViewCell.m @@ -0,0 +1,23 @@ +// +// CustomTableViewCell.m +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/28/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "CustomTableViewCell.h" + +@implementation CustomTableViewCell + +- (void)awakeFromNib { + // Initialization code +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +@end diff --git a/go/ExerciseTableViewCell.h b/go/ExerciseTableViewCell.h new file mode 100644 index 0000000..40ceecd --- /dev/null +++ b/go/ExerciseTableViewCell.h @@ -0,0 +1,14 @@ +// +// ExerciseTableViewCell.h +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/26/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import + +@interface ExerciseTableViewCell : UITableViewCell +@property (weak, nonatomic) IBOutlet UILabel *exerciseTitleLabel; + +@end diff --git a/go/ExerciseTableViewCell.m b/go/ExerciseTableViewCell.m new file mode 100644 index 0000000..ea00cf2 --- /dev/null +++ b/go/ExerciseTableViewCell.m @@ -0,0 +1,23 @@ +// +// ExerciseTableViewCell.m +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/26/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "ExerciseTableViewCell.h" + +@implementation ExerciseTableViewCell + +- (void)awakeFromNib { + // Initialization code +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +@end diff --git a/go/Exercises.h b/go/Exercises.h new file mode 100644 index 0000000..14bc85a --- /dev/null +++ b/go/Exercises.h @@ -0,0 +1,17 @@ +// +// Exercises.h +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/22/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import + +@interface Exercises : NSObject + +@property (nonatomic) NSString * nameOfExercise; +@property (nonatomic) NSTimeInterval exerciseTime; +@property (nonatomic) NSString * exerciseImageString; + +@end diff --git a/go/Exercises.m b/go/Exercises.m new file mode 100644 index 0000000..c0535f2 --- /dev/null +++ b/go/Exercises.m @@ -0,0 +1,16 @@ +// +// Exercises.m +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/22/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "Exercises.h" + +@implementation Exercises +//add preset workouts here + + + +@end diff --git a/go/GOBuildTableViewController.h b/go/GOBuildTableViewController.h new file mode 100644 index 0000000..a973cfd --- /dev/null +++ b/go/GOBuildTableViewController.h @@ -0,0 +1,21 @@ +// +// GOBuildTableViewController.h +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/28/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import +#import "CustomTableViewCell.h" +#import "BuildManager.h" +#import "BuildWorkout.h" + + +@interface GOBuildTableViewController : UITableViewController + +@property (nonatomic) BuildWorkout * exercise; +@property (nonatomic,retain) NSIndexPath * checkedIndexPath; + + +@end diff --git a/go/GOBuildTableViewController.m b/go/GOBuildTableViewController.m new file mode 100644 index 0000000..0b736b3 --- /dev/null +++ b/go/GOBuildTableViewController.m @@ -0,0 +1,203 @@ +// +// GOBuildTableViewController.m +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/28/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "GOBuildTableViewController.h" +#import "BackgroundGradient.h" + +@interface GOBuildTableViewController () + +@property (nonatomic) BuildManager * workoutsData; +@property (weak, nonatomic) IBOutlet UIButton *finishWorkoutButton; + +@property (nonatomic) int checkedWorkouts; +@property (nonatomic) BOOL isSelected; + +@end + +@implementation GOBuildTableViewController + + +- (void)viewDidLoad { + [super viewDidLoad]; + + self.navigationItem.hidesBackButton = YES; + + self.checkedWorkouts = 0; + + if ((self.workoutsData.workoutList.count == 0)||(self.workoutsData.workoutList.count != self.checkedWorkouts)){ + self.finishWorkoutButton.hidden = YES; + } + + self.workoutsData = [BuildManager sharedInstance]; + [self.workoutsData initializeModel]; + + [self.tableView reloadData]; + + NSLog(@"%@", self.workoutsData.workoutList); +} + +#pragma mark - Table view data source + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.workoutsData.workoutList.count; +} + + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + + + CustomTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"GoBuildIdentifier"]; + + if (!cell){ + cell = [[CustomTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"GoBuildIdentifier"]; + } + + BuildWorkout *thisWorkout = [self.workoutsData.workoutList objectAtIndex:indexPath.row]; + + + cell.workoutNameLabel.text = thisWorkout.exerciseName; + cell.setLabel.text = [NSString stringWithFormat:@"%ld sets",(long)thisWorkout.sets]; + cell.repLabel.text = [NSString stringWithFormat:@"%ld reps",(long)thisWorkout.reps]; + cell.weightLabel.text = [NSString stringWithFormat:@"%ld lbs",(long)thisWorkout.weight]; + cell.backgroundColor = [UIColor clearColor]; + + return cell; +} +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{ + + if (editingStyle == UITableViewCellEditingStyleDelete && !self.isSelected){ + [self.workoutsData.workoutList removeObjectAtIndex:indexPath.row]; + + UITableViewCell *tableCell = [tableView cellForRowAtIndexPath:indexPath]; + tableCell.accessoryType = UITableViewCellAccessoryNone; + + self.checkedWorkouts -= 1; + NSLog(@"checked deleted"); + + [self countCheck]; + + [tableView reloadData]; + + } else if (editingStyle == UITableViewCellEditingStyleDelete && self.isSelected){ + [self.workoutsData.workoutList removeObjectAtIndex:indexPath.row]; + NSLog(@"un-checked deleted"); + + [self countCheck]; + + [tableView reloadData]; + } + + NSLog(@"%lu", (unsigned long)self.workoutsData.workoutList.count); +} +- (void) countCheck { + + if (self.workoutsData.workoutList.count == self.checkedWorkouts){ + self.finishWorkoutButton.hidden = NO; + } else { + self.finishWorkoutButton.hidden = YES; + } + + +} + + + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ + + [self.tableView reloadData]; + + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + + UITableViewCell *tableCell = [tableView cellForRowAtIndexPath:indexPath]; + self.isSelected = (tableCell.accessoryType == UITableViewCellAccessoryCheckmark); + + + if (self.isSelected) { + tableCell.accessoryType = UITableViewCellAccessoryNone; + self.checkedWorkouts -= 1; + } + else { + tableCell.accessoryType = UITableViewCellAccessoryCheckmark; + NSLog (@"selected: %ld", (long)indexPath.row); + self.checkedWorkouts += 1; + } + NSLog(@"checked workouts: %d", self.checkedWorkouts); + + if (self.checkedWorkouts == self.workoutsData.workoutList.count){ + self.finishWorkoutButton.hidden = NO; + NSLog(@"YES!"); + NSLog(@"checked workouts: %d", self.checkedWorkouts); + } else { + self.finishWorkoutButton.hidden = YES; + } + + [self.tableView reloadData]; + +} +- (void) viewDidAppear:(BOOL)animated{ + if ((self.workoutsData.workoutList.count == 0)||(self.workoutsData.workoutList.count != self.checkedWorkouts)){ + self.finishWorkoutButton.hidden = YES; + } + [self.tableView reloadData]; +} +- (void) viewWillAppear:(BOOL)animated{ + + + [super viewWillAppear:animated]; + + CAGradientLayer *bgLayer = [BackgroundGradient greenGradient]; + bgLayer.frame = self.view.bounds; + [self.view.layer insertSublayer:bgLayer atIndex:0]; + + [self.navigationController setNavigationBarHidden:NO]; + + self.tabBarController.tabBar.hidden = NO; + + self.navigationController.navigationBar.hidden = NO; +} + +- (IBAction)finishWorkoutPressed:(UIButton *)sender { + + [self clearAccessoryMarks]; + self.workoutsData.workoutList = nil; + self.finishWorkoutButton.hidden = YES; + self.checkedWorkouts = 0; + + [self.tableView reloadData]; + + [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES]; + + + NSLog(@"checked workouts: %d", self.checkedWorkouts); +} +- (void) clearAccessoryMarks { + + NSIndexPath *indexPath; + + NSInteger count = self.workoutsData.workoutList.count; + + // UITableViewCell *tableCell = [self.tableView cellForRowAtIndexPath:indexPath]; + + for (int i = 0; i < count; i++){ + + UITableViewCell *tableCell = [self.tableView cellForRowAtIndexPath:indexPath]; + tableCell.accessoryType = UITableViewCellAccessoryNone; + tableCell.accessoryView = nil; + NSLog(@"deleted check mark"); + + [self.tableView reloadData]; + } + +} + + +@end diff --git a/go/GOCalendarResults.h b/go/GOCalendarResults.h new file mode 100644 index 0000000..c89f6ef --- /dev/null +++ b/go/GOCalendarResults.h @@ -0,0 +1,16 @@ +// +// GOCalendarResults.h +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/25/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import + +@interface GOCalendarResults : UIViewController + +@property (nonatomic) NSString *countdownDate; +@property (nonatomic) NSDate *scheduledDate; + +@end diff --git a/go/GOCalendarResults.m b/go/GOCalendarResults.m new file mode 100644 index 0000000..6230562 --- /dev/null +++ b/go/GOCalendarResults.m @@ -0,0 +1,117 @@ +// +// GOCalendarResults.m +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/25/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "BackgroundGradient.h" +#import "GOCalendarResults.h" + +@interface GOCalendarResults () +@property (weak, nonatomic) IBOutlet UILabel *countdownResultsLabel; +@property (nonatomic) NSDateFormatter *formatter; +@property (nonatomic) NSTimer *timer; +@property (nonatomic) NSDate *date; + +@end + +@implementation GOCalendarResults + +-(void)viewWillAppear:(BOOL)animated{ + + CAGradientLayer *bgLayer = [BackgroundGradient greenGradient]; + bgLayer.frame = self.view.bounds; + [self.view.layer insertSublayer:bgLayer atIndex:0]; + + self.date = self.scheduledDate; // save in property -- this is the start date + + // the timer that counts down the scheduled date + self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 + target:self + selector:@selector(refreshLabel) + userInfo:nil + repeats:YES]; + + [self.navigationController setNavigationBarHidden:YES animated:YES]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [self.navigationController setNavigationBarHidden:NO animated:YES]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + +} +- (IBAction)buttonTapped:(id)sender { + [self.navigationController popToRootViewControllerAnimated:YES]; +} + +-(void)refreshLabel +{ + //the start-up date minus 1 sec. + NSDate *dateCountDown = [NSDate dateWithTimeIntervalSince1970:[self.date timeIntervalSince1970] - 1]; + + // the current date at the moment + NSDate *currentDate = [NSDate date]; + + // the goal date formatter + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; + [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; + [dateFormatter setTimeStyle:NSDateFormatterNoStyle]; + + // the hour formatter + NSDateFormatter *HourFormatter = [[NSDateFormatter alloc]init]; + [HourFormatter setDateFormat:@"HH"]; + [HourFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]]; + + // the minute formatter + NSDateFormatter *MinuteFormatter = [[NSDateFormatter alloc]init]; + [MinuteFormatter setDateFormat:@"mm"]; + [MinuteFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]]; + + // the seconds formatter + NSDateFormatter *SecondFormatter = [[NSDateFormatter alloc]init]; + [SecondFormatter setDateFormat:@"ss"]; + [SecondFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]]; + + // calls the difference method and stores it in a string + NSInteger difference = [self daysBetween:currentDate and:self.date]; + NSString *daysLeftString = @(difference).stringValue; + + // converts the formatter into strings + NSString *formattedDateString = [dateFormatter stringFromDate:self.date]; + NSString *formattedHour = [HourFormatter stringFromDate:self.date]; + NSString *formattedMinute = [MinuteFormatter stringFromDate:self.date]; + NSString *formattedSeconds = [SecondFormatter stringFromDate:self.date]; + + // stores all the strings in one string for the output label + NSString *newLabel = [NSString stringWithFormat:@"%@ \n \n Time Left \n \n Days : %@\n Hours : %@\n Minutes : %@\n Seconds : %@", formattedDateString,daysLeftString, formattedHour, formattedMinute, formattedSeconds]; + + // stores the countdown label into the new string + self.countdownResultsLabel.text = newLabel; + + // updates the output + self.date = dateCountDown; +} + +// This is the method that subtracts the date from now versus the goal date +- (NSInteger)daysBetween:(NSDate *)dt1 and:(NSDate *)dt2 { + NSInteger unitFlags = NSDayCalendarUnit; + NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar]; + NSDateComponents *components = [calendar components:unitFlags fromDate:dt1 toDate:dt2 options:0]; + return [components day]+1; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + [self.timer invalidate]; +} + +@end diff --git a/go/GOCalendarTableViewController.h b/go/GOCalendarTableViewController.h new file mode 100644 index 0000000..b0cbc42 --- /dev/null +++ b/go/GOCalendarTableViewController.h @@ -0,0 +1,15 @@ +// +// GOCalendarTableViewController.h +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/24/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import + +@interface GOCalendarTableViewController : UITableViewController + + + +@end diff --git a/go/GOCalendarTableViewController.m b/go/GOCalendarTableViewController.m new file mode 100644 index 0000000..0f45f34 --- /dev/null +++ b/go/GOCalendarTableViewController.m @@ -0,0 +1,121 @@ +// +// GOCalendarTableViewController.m +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/24/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "GOCalendarTableViewController.h" +#import "GOCalendarResults.h" +#import "BackgroundGradient.h" +#import "WorkoutManager.h" + +@interface GOCalendarTableViewController () + +@end + +@implementation GOCalendarTableViewController + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + if (self = [super initWithCoder:aDecoder]) { + + self.title = @"Go Goals"; + + // non-selected tab bar image + UIImage *defaultImage = [[UIImage imageNamed:@"calendarIcon"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; + + // selected tab bar image + UIImage *selectedImage = [[UIImage imageNamed:@"calendarIconSelected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; + + // set the tab bar item with a title and both images + self.tabBarItem = [[UITabBarItem alloc] initWithTitle:nil + image:defaultImage + selectedImage:selectedImage]; + + self.tabBarItem.title = nil; + + self.tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0); + + self.tabBarItem.titlePositionAdjustment = UIOffsetMake(0.f, 50.f); + + return self; + } + return nil; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + self.title = @"Go Goals"; + // Uncomment the following line to preserve selection between presentations. + // self.clearsSelectionOnViewWillAppear = NO; + + // Uncomment the following line to display an Edit button in the navigation bar for this view controller. + // self.navigationItem.rightBarButtonItem = self.editButtonItem; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self.navigationController setNavigationBarHidden:NO animated:YES]; + + CAGradientLayer *bgLayer = [BackgroundGradient greenGradient]; + bgLayer.frame = self.view.bounds; + [self.tableView.layer insertSublayer:bgLayer atIndex:0]; + [self.tableView reloadData]; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + NSMutableDictionary *calendarDates = [WorkoutManager calendarManager].calendarDates; + NSInteger rowsCalendarDates = [calendarDates count]; + return rowsCalendarDates; +} + + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CalendarList" forIndexPath:indexPath]; + NSMutableDictionary *calendarDates = [WorkoutManager calendarManager].calendarDates; + // NSString *key = [calendarDates obj + + NSArray *keys = [calendarDates allKeys]; + NSString *key = keys[indexPath.row]; + cell.textLabel.text = key; + cell.backgroundColor = [UIColor clearColor]; + return cell; +} + + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + if([segue.identifier isEqualToString:@"CalendarListToResults"]){ + + GOCalendarResults *resultsVC = segue.destinationViewController; + NSIndexPath *indexPath; + NSMutableDictionary *calendarDates = [WorkoutManager calendarManager].calendarDates; + NSArray *values = [calendarDates allValues]; + NSDate *value = values[indexPath.row]; + resultsVC.scheduledDate = value; + + } + +} + +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + NSMutableDictionary *calendarDates = [WorkoutManager calendarManager].calendarDates; + NSArray *keys = [calendarDates allKeys]; + NSString *key = keys[indexPath.row]; + [calendarDates removeObjectForKey:key]; + [self.tableView reloadData]; +} + +@end diff --git a/go/GOCalendarViewController.h b/go/GOCalendarViewController.h new file mode 100644 index 0000000..8ee7b7c --- /dev/null +++ b/go/GOCalendarViewController.h @@ -0,0 +1,13 @@ +// +// GOCalendarViewController.h +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/24/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import + +@interface GOCalendarViewController : UIViewController + +@end diff --git a/go/GOCalendarViewController.m b/go/GOCalendarViewController.m new file mode 100644 index 0000000..a3cb3fa --- /dev/null +++ b/go/GOCalendarViewController.m @@ -0,0 +1,112 @@ +// +// GOCalendarViewController.m +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/24/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "BackgroundGradient.h" +#import "GOCalendarViewController.h" +#import "GOCalendarResults.h" +#import "WorkoutManager.h" + +@interface GOCalendarViewController () +@property (weak, nonatomic) IBOutlet UIDatePicker *goCalendarDatePicker; +@property (weak, nonatomic) IBOutlet UITextField *goCalendarTextField; +@property (nonatomic) NSString *calendarGoalsString; +@property (nonatomic) NSDateFormatter *formatter; +@property (weak, nonatomic) IBOutlet UIButton *addGoalButton; +@property (nonatomic) NSDate *date; +@end + +@implementation GOCalendarViewController + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self.navigationController setNavigationBarHidden:NO]; + CAGradientLayer *bgLayer = [BackgroundGradient greenGradient]; + bgLayer.frame = self.view.bounds; + [self.view.layer insertSublayer:bgLayer atIndex:0]; + [self.navigationController setNavigationBarHidden:YES animated:YES]; + self.addGoalButton.userInteractionEnabled = NO; +} + +- (void)viewWillDisappear:(BOOL)animated { + [self.navigationController setNavigationBarHidden:NO animated:YES]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + self.navigationItem.hidesBackButton = YES; + + // sets the title + self.title = @"Pick a Goal"; + + // stores the text field into the string property + + self.goCalendarTextField.delegate = self; + + +} + +- (BOOL)textFieldShouldReturn:(UITextField *)textField{ + [textField resignFirstResponder]; + return YES; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} +- (IBAction)goCalendarButton:(UIButton *)sender { + + // calendar string grabs whatever is in the text field + self.calendarGoalsString = self.goCalendarTextField.text; + + // calling calendar dates singleton NSMutableArray to store custom dates + NSMutableDictionary *calendarDates = [WorkoutManager calendarManager].calendarDates; + //calendarDates = [[NSMutableDictionary alloc]init]; + + // custom date is stored as date from UIDatePicker + self.date = [self.goCalendarDatePicker date]; + + // calls the NSMutableArray and adds the date + [calendarDates setObject:self.date forKey:self.calendarGoalsString]; + + NSLog(@"%@", calendarDates); +} +- (IBAction)editingChanged:(UITextField *)sender { + BOOL hasGoal = (![self.goCalendarTextField.text isEqualToString:@""]); + + if (hasGoal){ + self.addGoalButton.userInteractionEnabled = YES; + } else { + self.addGoalButton.userInteractionEnabled = NO; + NSLog(@"Add a goal!"); + } +} + +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + + // creates an instance of a view controller for segue + GOCalendarResults *resultsVC = segue.destinationViewController; + + // calls the date property of the VC object and sets it to the custom date + resultsVC.scheduledDate = self.date; +} + +// Forces the text colour of the label to be white only for UIDatePicker and its components + +/* + #pragma mark - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. + } + */ + +@end diff --git a/go/GOCustomQuestionViewController.h b/go/GOCustomQuestionViewController.h new file mode 100644 index 0000000..021b8a1 --- /dev/null +++ b/go/GOCustomQuestionViewController.h @@ -0,0 +1,13 @@ +// +// GOCustomQuestionViewController.h +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/26/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import + +@interface GOCustomQuestionViewController : UIViewController + +@end diff --git a/go/GOCustomQuestionViewController.m b/go/GOCustomQuestionViewController.m new file mode 100644 index 0000000..1b63f90 --- /dev/null +++ b/go/GOCustomQuestionViewController.m @@ -0,0 +1,193 @@ +// +// GOCustomQuestionViewController.m +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/26/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "GOCustomQuestionViewController.h" +#import "GOCustomWorkoutTableViewController.h" +#import "ExerciseTableViewCell.h" +#import "BackgroundGradient.h" +#import "WorkoutManager.h" +#import "Workout.h" +#import "Exercises.h" + +@interface GOCustomQuestionViewController () +@property (weak, nonatomic) IBOutlet UITableView *tableView; +@property (weak, nonatomic) IBOutlet UITextField *enterWorkoutNameField; +@property (weak, nonatomic) IBOutlet UITextField *addExerciseNameField; +@property (weak, nonatomic) IBOutlet UITextField *minutesField; +@property (weak, nonatomic) IBOutlet UITextField *secondsField; +@property (weak, nonatomic) IBOutlet UIButton *addExerciseButton; +@property (nonatomic) Workout *workout; + + + +@end + +@implementation GOCustomQuestionViewController + +#pragma mark - Setup + +- (void)delegateSetup { +// self.addExerciseNameField.delegate = self; +// self.enterWorkoutNameField.delegate = self; + self.minutesField.delegate = self; + self.secondsField.delegate = self; + self.tableView.delegate = self; + self.tableView.dataSource = self; +} + +- (void)backgroundSetup { + CAGradientLayer *bgLayer = [BackgroundGradient greenGradient]; + bgLayer.frame = self.view.bounds; + [self.view.layer insertSublayer:bgLayer atIndex:0]; +} + +- (void)disableInitialButtons{ + self.navigationItem.rightBarButtonItem.enabled = NO; + self.addExerciseButton.userInteractionEnabled = NO; +} + +- (void)creatingACustomRightBarButton { + UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; + [button addTarget:self + action:@selector(addWorkoutButton:) + forControlEvents:UIControlEventTouchUpInside]; + [button setTitle:@"Add to List" forState:UIControlStateNormal]; + button.frame = CGRectMake(100.0, 0.0, 90.0, 30.0); + UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; + self.navigationItem.rightBarButtonItem = barButtonItem; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + [self backgroundSetup]; + + [self disableInitialButtons]; + +} +- (void)viewDidLoad { + [super viewDidLoad]; + + [self.tableView reloadData]; + + [self delegateSetup]; + + self.tableView.backgroundColor = [UIColor clearColor]; + + [self creatingACustomRightBarButton]; + + // alloc init workout + self.workout = [[Workout alloc]init]; + self.workout.exercises = [[NSMutableArray alloc]init]; +} + +#pragma mark - Text Field Conditions + +- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { + // Check for non-numeric characters + NSUInteger lengthOfString = string.length; + for (NSInteger loopIndex = 0; loopIndex < lengthOfString; loopIndex++){ + unichar character = [string characterAtIndex:loopIndex]; + if (character < 48) return NO; // 48 unichar for 0 + if (character > 57) return NO; // 57 unichar for 9 + } + if(range.length + range.location > textField.text.length){ + return NO; + } + NSUInteger newLength = [textField.text length] + [string length] - range.length; + return newLength <= 2; +} + +- (BOOL)textFieldShouldReturn:(UITextField *)textField +{ + [textField resignFirstResponder]; + return YES; +} + +- (IBAction)editingChanged:(UITextField *)sender { + BOOL hasMinutes = ![self.minutesField.text isEqualToString:@""]; + BOOL hasSeconds = ![self.secondsField.text isEqualToString:@""]; + BOOL hasWorkout = ![self.enterWorkoutNameField.text isEqualToString:@""]; + BOOL hasExercise = ![self.addExerciseNameField.text isEqualToString:@""]; + + if (hasMinutes && hasSeconds && hasWorkout && hasExercise){ + self.addExerciseButton.userInteractionEnabled = YES; + self.navigationItem.rightBarButtonItem.enabled = YES; + } else { + self.addExerciseButton.userInteractionEnabled = NO; + self.navigationItem.rightBarButtonItem.enabled = NO; + } +} + + + +#pragma mark - Buttons + +- (IBAction)addExercise:(id)sender { + Exercises *exercise = [[Exercises alloc]init]; + [self.tableView reloadData]; + + // converts text input to float + NSString *seconds = self.secondsField.text; + float thisseconds = [seconds floatValue]; + NSString *minutes = self.minutesField.text; + float thisminutes = [minutes floatValue]; + + // adds both seconds and minutes together + float totalSeconds = (thisminutes * 60) + thisseconds; + exercise.exerciseTime = totalSeconds; + exercise.nameOfExercise = self.addExerciseNameField.text; + [self.workout.exercises addObject :exercise]; + [self.tableView reloadData]; +} + +- (IBAction)addWorkoutButton:(id)sender { + // calls the singleton from the Workout Manager + NSMutableArray *customWorkouts = [WorkoutManager customWorkoutManager].customWorkouts; + self.workout.workoutName = self.enterWorkoutNameField.text; + [customWorkouts addObject:self.workout]; + + // creates a storboard from the "Main" storboard + UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; + UITableViewController *vc = [sb instantiateViewControllerWithIdentifier:@"CustomWorkoutList"]; + [self.navigationController pushViewController:vc animated:YES]; +} + +#pragma mark - Table View + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.workout.exercises.count; +} +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"exerciseList" forIndexPath:indexPath]; + NSMutableArray *allExercises = self.workout.exercises; + Exercises *thisExercise = allExercises[indexPath.row]; + NSString *key = thisExercise.nameOfExercise; + cell.textLabel.text = key; + cell.backgroundColor = [UIColor clearColor]; + return cell; +} +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + NSMutableArray *exercises = self.workout.exercises; + [exercises removeObjectAtIndex:indexPath.row]; + [self.tableView reloadData]; +} + + #pragma mark - Segue + + - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + GOCustomWorkoutTableViewController *resultsVC = segue.destinationViewController; + resultsVC.listofCustomWorkouts = [WorkoutManager customWorkoutManager].customWorkouts; + } + + +@end diff --git a/go/GOCustomResultsViewController.h b/go/GOCustomResultsViewController.h new file mode 100644 index 0000000..4b2aa83 --- /dev/null +++ b/go/GOCustomResultsViewController.h @@ -0,0 +1,19 @@ +// +// GOCustomResultsViewController.h +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/26/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import +#import "Workout.h" +#import + +@interface GOCustomResultsViewController : UIViewController + +@property (nonatomic) Workout *resultsWorkout; +@property (nonatomic) NSInteger currentExerciseIndex; +@property (strong, nonatomic) AVSpeechSynthesizer *synthesizer; + +@end diff --git a/go/GOCustomResultsViewController.m b/go/GOCustomResultsViewController.m new file mode 100644 index 0000000..763a93d --- /dev/null +++ b/go/GOCustomResultsViewController.m @@ -0,0 +1,156 @@ +// +// GOCustomResultsViewController.m +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/26/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "GOCustomResultsViewController.h" +#import "Workout.h" +#import "WorkoutManager.h" +#import "BackgroundGradient.h" +#import + +@interface GOCustomResultsViewController () +@property (weak, nonatomic) IBOutlet UILabel *totalTimeLabel; +@property (weak, nonatomic) IBOutlet UILabel *exerciseNameLabel; +@property (weak, nonatomic) IBOutlet UILabel *exerciseTimeLabel; +@property (nonatomic) NSInteger totalTime; +@property (nonatomic) NSTimer *timer; +@property (nonatomic) Exercises *exercise; +@property (weak, nonatomic) IBOutlet UIButton *continueButton; +@property (weak, nonatomic) IBOutlet UIButton *pauseButton; +@property (weak, nonatomic) IBOutlet UIButton *endButton; + +@end + +@implementation GOCustomResultsViewController + +-(void)backgroundSetup{ + CAGradientLayer *bgLayer = [BackgroundGradient greenGradient]; + bgLayer.frame = self.view.bounds; + [self.view.layer insertSublayer:bgLayer atIndex:0]; +} + +- (void)viewWillAppear:(BOOL)animated{ + [self.navigationController setNavigationBarHidden:YES]; + [self backgroundSetup]; + NSInteger seconds = (self.totalTime % 60); + NSInteger minutes = (self.totalTime / 60) % 60; + self.totalTimeLabel.text = [NSString stringWithFormat:@" %02lu : %02lu", (long)minutes, (long)seconds]; +} + +- (void) initializeMainTimer { + self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 + target:self + selector:@selector(updateExerciseTimer) + userInfo:nil + repeats:YES]; +} + +- (void)setUpOfCustomResults { + if (self.currentExerciseIndex == (NSInteger)nil){ + self.currentExerciseIndex = 0; + } + + self.exercise = [self.resultsWorkout.exercises objectAtIndex: self.currentExerciseIndex]; + + int totalTime = self.exercise.exerciseTime; + self.totalTime = totalTime; + self.totalTimeLabel.text = @(self.totalTime).stringValue; + + NSString *nameOfExercise = self.exercise.nameOfExercise; + self.exerciseNameLabel.text = nameOfExercise; + + self.synthesizer = [[AVSpeechSynthesizer alloc]init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + [self.timer invalidate]; + + [self initializeMainTimer]; + + [self setUpOfCustomResults]; + + [self voiceSpeak: @"Begin Exercise"]; +} + +- (void)updateExerciseTimer{ + NSInteger numberOfExercises = [self.resultsWorkout.exercises count]; + NSInteger one = 1.0; + NSInteger currentExerciseTime = self.totalTime; + NSInteger nextNumber = currentExerciseTime - one; + self.totalTime = nextNumber; + NSInteger seconds = (nextNumber % 60); + NSInteger minutes = (nextNumber / 60) % 60; + self.totalTimeLabel.text = [NSString stringWithFormat:@" %02lu : %02lu", (long)minutes, (long)seconds]; + if (self.totalTime == 7){ + [self voiceSpeak: @"Exercise Ends in 5 Seconds"]; + } + if (self.totalTime == 5){ + [self voiceSpeak: @"5"]; + } + if (self.totalTime == 4){ + [self voiceSpeak: @"4"]; + } + if (self.totalTime == 3){ + [self voiceSpeak: @"3"]; + } + if (self.totalTime == 2){ + [self voiceSpeak: @"2"]; + } + if (self.totalTime == 1){ + [self voiceSpeak: @"1"]; + } + if (self.totalTime == 0 && self.currentExerciseIndex < numberOfExercises - 1){ + GOCustomResultsViewController *nextViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"CustomWorkoutView"]; + nextViewController.resultsWorkout = self.resultsWorkout; + nextViewController.currentExerciseIndex = self.currentExerciseIndex+1; + [self.timer invalidate]; + [self.navigationController pushViewController:nextViewController animated:YES]; + } + else if (nextNumber == 0 && self.currentExerciseIndex == numberOfExercises - 1) { + [self.timer invalidate]; + [self.navigationController popToRootViewControllerAnimated:YES]; + } +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; +} + +- (IBAction)pauseButton:(UIButton *)sender { + [self.timer invalidate]; + self.continueButton.hidden = NO; + self.pauseButton.hidden = YES; + +} + +- (IBAction)continueButton:(UIButton *)sender { + self.pauseButton.hidden = NO; + self.continueButton.hidden = YES; + [self initializeMainTimer]; + +} + +- (IBAction)stopButton:(UIButton *)sender { + [self.timer invalidate]; + [self.navigationController popToRootViewControllerAnimated:YES]; +} + +- (void)viewDidDisappear:(BOOL)animated{ + [self.timer invalidate]; +} + +- (void)voiceSpeak: (NSString *)textToSpeech { + AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:textToSpeech]; + utterance.rate = 0.5; + utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-au"]; + [self.synthesizer speakUtterance:utterance]; +} + + +@end diff --git a/go/GOCustomWorkoutTableViewController.h b/go/GOCustomWorkoutTableViewController.h new file mode 100644 index 0000000..1042360 --- /dev/null +++ b/go/GOCustomWorkoutTableViewController.h @@ -0,0 +1,15 @@ +// +// GOCustomWorkoutTableViewController.h +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/26/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import + +@interface GOCustomWorkoutTableViewController : UITableViewController + +@property (nonatomic) NSMutableArray *listofCustomWorkouts; + +@end diff --git a/go/GOCustomWorkoutTableViewController.m b/go/GOCustomWorkoutTableViewController.m new file mode 100644 index 0000000..7063615 --- /dev/null +++ b/go/GOCustomWorkoutTableViewController.m @@ -0,0 +1,94 @@ +// +// GOCustomWorkoutTableViewController.m +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/26/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "GOCustomWorkoutTableViewController.h" +#import "GOCustomResultsViewController.h" +#import "BackgroundGradient.h" +#import "WorkoutManager.h" +#import "Workout.h" + +@interface GOCustomWorkoutTableViewController () +@end + +@implementation GOCustomWorkoutTableViewController + +- (void)viewWillAppear:(BOOL)animated{ + [self.tableView reloadData]; + [super viewWillAppear:animated]; + [self.navigationController setNavigationBarHidden:NO]; + CAGradientLayer *bgLayer = [BackgroundGradient greenGradient]; + bgLayer.frame = self.view.bounds; + [self.tableView.layer insertSublayer:bgLayer atIndex:0]; + [self.tableView reloadData]; +} +- (void)viewDidLoad { + [super viewDidLoad]; + + // creates a custom right bar button to segue into the results page + UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; + [button addTarget:self + action:@selector(addWorkoutButton:) + forControlEvents:UIControlEventTouchUpInside]; + [button setTitle:@"Add Workout" forState:UIControlStateNormal]; + button.frame = CGRectMake(100.0, 0.0, 90.0, 40.0); + UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; + self.navigationItem.rightBarButtonItem = barButtonItem; + + [self.tableView reloadData]; +} +- (IBAction)addWorkoutButton:(id)sender { + + // creates a storboard from the "Main" storboard + UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; + + // creates an instance of view controller from UI storyboard with identifier "ViewControllerIdentifier" + UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"CustomQuestionVC"]; + + // pushing the navigation controller on a navigation stack + [self.navigationController pushViewController:vc animated:YES]; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + NSMutableArray *workouts = [WorkoutManager customWorkoutManager].customWorkouts; + return workouts.count; +} +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomWorkoutIdentifier" forIndexPath:indexPath]; + NSMutableArray *workouts = [WorkoutManager customWorkoutManager].customWorkouts; + Workout *workout = workouts[indexPath.row]; + NSString *key = workout.workoutName; + NSLog(@"%@", key); + cell.textLabel.text = key; + cell.backgroundColor = [UIColor clearColor]; + return cell; +} + +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; + GOCustomResultsViewController *resultsVC = segue.destinationViewController; + NSMutableArray *workouts = [WorkoutManager customWorkoutManager].customWorkouts; + Workout *workout = workouts[indexPath.row]; + resultsVC.resultsWorkout = workout; +} + +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + NSMutableArray *customWorkouts = [WorkoutManager customWorkoutManager].customWorkouts; + [customWorkouts removeObjectAtIndex:indexPath.row]; + [self.tableView reloadData]; +} + +@end diff --git a/go/GOFightViewController.h b/go/GOFightViewController.h new file mode 100644 index 0000000..ca8d961 --- /dev/null +++ b/go/GOFightViewController.h @@ -0,0 +1,14 @@ +// +// GOFightViewController.h +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/25/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import +#import + +@interface GOFightViewController : UIViewController + +@end diff --git a/go/GOFightViewController.m b/go/GOFightViewController.m new file mode 100644 index 0000000..12b30f3 --- /dev/null +++ b/go/GOFightViewController.m @@ -0,0 +1,257 @@ +// +// GOFightViewController.m +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/25/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "GOFightViewController.h" +#import "BackgroundGradient.h" + +@interface GOFightViewController () +@property (weak, nonatomic) IBOutlet UISlider *roundSlider; +@property (weak, nonatomic) IBOutlet UILabel *counterLabel; +@property (weak, nonatomic) IBOutlet UILabel *restLabel; +@property (weak, nonatomic) IBOutlet UILabel *roundNumberLabel; +//Buttons +@property (weak, nonatomic) IBOutlet UIButton *startButton; +@property (weak, nonatomic) IBOutlet UIButton *stopButton; +@property (weak, nonatomic) IBOutlet UIButton *resetButton; +//Timer +@property (nonatomic) NSTimer * mainTimer; +@property (nonatomic) NSTimer * restTimer; +@property (nonatomic) NSTimeInterval roundTime; +@property (nonatomic) NSTimeInterval restTime; +@property (nonatomic) NSTimeInterval sliderValue; +@property (nonatomic) int numberOfRounds; +@property (nonatomic) NSString * counterString; +@property (nonatomic) NSString * restString; +@property (nonatomic) BOOL isAtRest; +//Audio Player +@property (nonatomic) AVAudioPlayer *bellPlayer; + +@end + +@implementation GOFightViewController + +- (void)viewWillAppear:(BOOL)animated{ + [super viewWillAppear:animated]; + [self.navigationController setNavigationBarHidden:YES]; + CAGradientLayer *bgLayer = [BackgroundGradient greenGradient]; + bgLayer.frame = self.view.bounds; + [self.view.layer insertSublayer:bgLayer atIndex:0]; +} + +- (void)viewWillDisappear:(BOOL)animated{ + [self.navigationController setNavigationBarHidden:NO]; +} +- (void)viewDidLoad { + // self.counterLabel.font = [UIFont fontWithName:@"digital" size:60]; + // self.restLabel.font = [UIFont fontWithName:@"digital" size:25]; + self.isAtRest = FALSE; + self.sliderValue = 90; + +//set round time + self.roundTime = self.sliderValue; + [self updateCounterLabel]; + +//set rest time + self.restTime = 30.0; + [self updateRestLabel]; + +//set Number of Rounds + self.numberOfRounds = 0; + self.roundNumberLabel.text = [NSString stringWithFormat:@"%d", self.numberOfRounds]; + +//Creating AV Files - code helps clarify what sound file is and of what type + NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"bell" + ofType:@"mp3"]; + NSURL *soundUrl = [NSURL fileURLWithPath:soundFilePath]; + +// Create audio player object and initialize with URL to sound + NSError *error; + NSData *songFile = [[NSData alloc] initWithContentsOfURL:soundUrl options:NSDataReadingMappedIfSafe error:&error]; + self.bellPlayer = [[AVAudioPlayer alloc] initWithData:songFile error:&error]; + +//sets button interaction at first state + self.startButton.userInteractionEnabled = YES; + self.resetButton.userInteractionEnabled = NO; + self.stopButton.userInteractionEnabled = NO; + + +} +- (IBAction)roundSliderChanged:(UISlider *)sender { + +//increments slider by 10 + [sender setValue:((int)((sender.value + 2.5) / 10) * 10) animated:YES]; + self.sliderValue = [sender value]; + self.roundTime = self.sliderValue; + [self updateCounterLabel]; + +} + +- (void) initializeMainTimer { + + self.mainTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 + target:self + selector:@selector(updateTimer) + userInfo:NULL + repeats:YES]; + + self.isAtRest = FALSE; + [self.restLabel setAlpha:0.5]; + [self.counterLabel setAlpha:1.0]; +// initializes main timer and sets the label states +} +- (void) initializeRestTimer { + + self.restTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 + target:self + selector:@selector(updateRestTimer) + userInfo:NULL + repeats:YES]; + + + self.isAtRest = TRUE; + [self.restLabel setAlpha:1.0]; + [self.counterLabel setAlpha:0.5]; + +} + +- (void) updateCounterLabel { + + NSDate *timeDate = [NSDate dateWithTimeIntervalSince1970:self.roundTime]; + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; + [dateFormatter setDateFormat:@"mm:ss"]; + [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]]; + self.counterString = [dateFormatter stringFromDate:timeDate]; + self.counterLabel.text = self.counterString; + + +} +- (void) updateRestLabel { + + NSDate *timeDate = [NSDate dateWithTimeIntervalSince1970:self.restTime]; + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; + [dateFormatter setDateFormat:@"ss"]; + [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]]; + self.restString = [dateFormatter stringFromDate:timeDate]; + self.restLabel.text = self.restString; + + +} +- (void) updateRoundTime{ + self.roundTime = self.sliderValue; + [self updateCounterLabel]; +} +- (void) updateRestTime{ + self.restTime = 30.0; + [self updateRestLabel]; +} +- (void) updateNumberOfRounds { + + self.numberOfRounds ++; + self.roundNumberLabel.text = [NSString stringWithFormat:@"%d", self.numberOfRounds]; + [self updateRoundTime]; +} + + +- (IBAction)startPressed:(UIButton *)sender { + self.startButton.hidden = YES; + self.stopButton.hidden = NO; + + if (self.mainTimer == nil && !self.isAtRest){ + [self initializeMainTimer]; + [self playBellAtRoundStart]; + } else if (self.mainTimer && !self.isAtRest){ + [self initializeMainTimer]; + } else if (self.isAtRest){ + [self initializeRestTimer]; + } + + self.roundSlider.userInteractionEnabled = NO; + self.startButton.userInteractionEnabled = NO; + self.resetButton.userInteractionEnabled = NO; + self.stopButton.userInteractionEnabled = YES; +} + +- (IBAction)stopPressed:(UIButton *)sender { + + self.startButton.hidden = NO; + self.stopButton.hidden = YES; + self.startButton.userInteractionEnabled = YES; + self.resetButton.userInteractionEnabled = YES; + self.stopButton.userInteractionEnabled = NO; + self.roundSlider.userInteractionEnabled = NO; + + [self.mainTimer invalidate]; + [self.restTimer invalidate]; + + +} +- (IBAction)resetPressed:(UIButton *)sender { + + self.isAtRest = FALSE; + + [self.mainTimer invalidate]; + [self.restTimer invalidate]; + self.mainTimer = nil; + self.restTimer = nil; + + self.roundTime = self.sliderValue; + self.restTime = 30.0; + self.numberOfRounds = 0; + + [self.restLabel setAlpha:1.0]; + [self.counterLabel setAlpha:1.0]; + + + [self updateRoundTime]; + [self updateRestTime]; + + self.roundNumberLabel.text = [NSString stringWithFormat:@"%d", self.numberOfRounds]; + + self.roundSlider.userInteractionEnabled = YES; + self.startButton.userInteractionEnabled = YES; + self.stopButton.userInteractionEnabled = NO; + self.resetButton.userInteractionEnabled = NO; + + [self reloadInputViews]; +} + +- (void) updateTimer { + self.roundTime -= 1; + [self updateCounterLabel]; + NSLog(@"Time in round: %f",self.roundTime); + + if (self.roundTime == 0){ + [self.mainTimer invalidate]; + [self updateNumberOfRounds]; + [self initializeRestTimer]; + [self playBellAtRoundStart]; + [self updateRestTime]; + + } +} +- (void) updateRestTimer { + self.restTime -= 1; + [self updateRestLabel]; + NSLog(@"Rest time: %f", self.restTime); + + if (self.restTime == 0){ + [self.restTimer invalidate]; + [self initializeMainTimer]; + [self playBellAtRoundStart]; + } + +} +- (void) playBellAtRoundStart { + [self.bellPlayer play]; +} +- (void)viewDidDisappear:(BOOL)animated{ + [self.mainTimer invalidate]; + [self.restTimer invalidate]; +} + +@end diff --git a/go/GOStopwatchViewController.h b/go/GOStopwatchViewController.h new file mode 100644 index 0000000..ac9bcdd --- /dev/null +++ b/go/GOStopwatchViewController.h @@ -0,0 +1,14 @@ +// +// GOStopwatchViewController.h +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/21/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import + + +@interface GOStopwatchViewController : UIViewController + +@end diff --git a/go/GOStopwatchViewController.m b/go/GOStopwatchViewController.m new file mode 100644 index 0000000..ae5bc03 --- /dev/null +++ b/go/GOStopwatchViewController.m @@ -0,0 +1,263 @@ +// +//1. create bool is running so Start button can be touched once +//2. hide reset button so can only be pressed when stopped +//3. create bool for Lap button so cannot be pressed while paused +// +//GOStopwatchViewController.m +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/21/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "GOStopwatchViewController.h" +#import "LapTimerTableViewCell.h" +#import "BackgroundGradient.h" + +@interface GOStopwatchViewController () + +@property (nonatomic) NSMutableArray *laps; +@property (nonatomic) NSMutableArray *numberOfLaps; +@property (nonatomic) NSInteger lapNumber; +@property (nonatomic, retain) NSDate* start; +@property (nonatomic) NSDate *mainDate; +@property (nonatomic) NSTimer *stopwatch; +@property (nonatomic) BOOL isRunning; +@property (nonatomic) BOOL isPause; +@property (weak, nonatomic) IBOutlet UITableView *tableView; + +@property (nonatomic) NSTimer *mainStopwatch; + +@property (nonatomic, assign) NSTimeInterval pauseTime; + +@property (weak, nonatomic) IBOutlet UIButton *startButton; +@property (weak, nonatomic) IBOutlet UIButton *stopButton; +@property (weak, nonatomic) IBOutlet UIButton *lapButton; +@property (weak, nonatomic) IBOutlet UIButton *resetButton; + + +@property (nonatomic) float mainTotalTime; +@property (nonatomic) float lapTotalTime; +@property (nonatomic) NSDate *mainPreviousTime; +@property (nonatomic,retain) NSDate *lapPreviousTime; + +@property (weak, nonatomic) IBOutlet UILabel *stopwatchTimerLabel; +@property (weak, nonatomic) IBOutlet UILabel *mainStopwatchLabel; + + +@end + +@implementation GOStopwatchViewController + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + if (self = [super initWithCoder:aDecoder]) { + + self.title = @"Go Goals"; + + // non-selected tab bar image + UIImage *defaultImage = [[UIImage imageNamed:@"timerIcon"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; + + // selected tab bar image + UIImage *selectedImage = [[UIImage imageNamed:@"timerIconSelected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; + + // set the tab bar item with a title and both images + self.tabBarItem = [[UITabBarItem alloc] initWithTitle:nil + image:defaultImage + selectedImage:selectedImage]; + + self.tabBarItem.title = nil; + + self.tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0); + + self.tabBarItem.titlePositionAdjustment = UIOffsetMake(0.f, 50.f); + + return self; + } + return nil; +} + + +- (void)viewDidLoad { + + self.title = @"Go Stopwatch"; + + self.tableView.delegate = self; + self.tableView.dataSource = self; + self.tableView.backgroundColor = [UIColor clearColor]; + + [super viewDidLoad]; + + self.stopwatchTimerLabel.font = [UIFont fontWithName:@"Monofonto" size:20.0]; + self.mainStopwatchLabel.font = [UIFont fontWithName:@"Monofonto" size:30.0]; + + self.laps = [[NSMutableArray alloc]init]; + + self.start = [[NSDate alloc]init]; + + self.numberOfLaps = [[NSMutableArray alloc]init]; + + self.resetButton.hidden = YES; + self.stopButton.hidden = YES; + + self.lapButton.userInteractionEnabled = NO; + +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + [self.navigationController setNavigationBarHidden:YES animated:YES]; + + CAGradientLayer *bgLayer = [BackgroundGradient greenGradient]; + bgLayer.frame = self.view.bounds; + [self.view.layer insertSublayer:bgLayer atIndex:0]; +} + +- (IBAction)startStopwatchButton:(UIButton *)sender { + + self.startButton.hidden = YES; + self.stopButton.hidden = NO; + self.resetButton.hidden = YES; + self.lapButton.hidden = NO; + + self.stopwatch = [NSTimer scheduledTimerWithTimeInterval:1.0/100.0 + target:self + selector:@selector(updateStopwatchTimer) + userInfo:nil repeats:YES]; + + self.mainStopwatch = [NSTimer scheduledTimerWithTimeInterval:1.0/100.0 + target:self + selector:@selector(updateMainStopwatchTimer) + userInfo:nil repeats:YES]; + + self.mainPreviousTime = [[NSDate alloc] init]; + self.lapPreviousTime = [[NSDate alloc] init]; + + self.lapButton.userInteractionEnabled = YES; + +} + +-(void) updateMainStopwatchTimer { + + NSDate *currentTime = [[NSDate alloc] init]; + + NSTimeInterval elapsedTime = [currentTime timeIntervalSinceDate: self.mainPreviousTime]; + self.mainPreviousTime = currentTime; + + self.mainTotalTime += elapsedTime; + + NSDate *timeDate = [NSDate dateWithTimeIntervalSince1970:self.mainTotalTime]; + + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; + [dateFormatter setDateFormat:@"mm : ss : SS"]; + [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]]; + NSString *timeString = [dateFormatter stringFromDate:timeDate]; + self.mainStopwatchLabel.text = timeString; + + + NSLog(@"%f", self.mainTotalTime); +} + +- (void) updateStopwatchTimer { + NSDate *currentTime = [NSDate date]; + NSTimeInterval elapsedTime = [currentTime timeIntervalSinceDate:self.lapPreviousTime]; + self.lapPreviousTime = currentTime; + + self.lapTotalTime += elapsedTime; + + NSDate *timeDate = [NSDate dateWithTimeIntervalSince1970:self.lapTotalTime]; + + + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; + [dateFormatter setDateFormat:@"mm : ss : SS"]; + [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]]; + NSString *timeString = [dateFormatter stringFromDate:timeDate]; + self.stopwatchTimerLabel.text = timeString; +} + + +- (IBAction)stopStopwatchButton:(UIButton *)sender { + + self.stopButton.hidden = YES; + self.lapButton.hidden = YES; + self.startButton.hidden = NO; + self.resetButton.hidden = NO; + + [self.mainStopwatch invalidate]; + [self.stopwatch invalidate]; +} + +- (IBAction)lapStopwatchButton:(UIButton *)sender { + self.lapTotalTime = 0.0; + + [self.laps insertObject:self.stopwatchTimerLabel.text atIndex:0]; + + [self.tableView reloadData]; + + + NSIndexPath* ipath = [NSIndexPath indexPathForRow:[self.laps count]-1 inSection:0]; + //[self.tableView scrollToRowAtIndexPath:ipath atScrollPosition: UITableViewScrollPositionTop animated: YES]; + + self.lapNumber = ipath.row + 1; + + [self.numberOfLaps insertObject: [NSNumber numberWithInteger:self.lapNumber] atIndex:0]; +} +- (IBAction)resetStopwatchButton:(UIButton *)sender { + + self.resetButton.hidden = YES; + self.lapButton.hidden = NO; + self.startButton.hidden = NO; + self.stopButton.hidden = YES; + + self.lapButton.userInteractionEnabled = NO; + + [self.mainStopwatch invalidate]; + [self.stopwatch invalidate]; + + self.lapTotalTime = 0; + self.mainTotalTime = 0; + + self.mainStopwatchLabel.text = @"00 : 00 : 00"; + self.stopwatchTimerLabel.text = @"00 : 00 : 00"; + + [self.laps removeAllObjects]; + [self.numberOfLaps removeAllObjects]; + + [self.tableView reloadData]; + + //[self stopStopwatchButton:sender]; +} + + +// UI TABLE VIEW + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.laps.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TimeLap" forIndexPath:indexPath]; + + if (!cell) { + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"TimeLap"]; + } + + NSString *key = [self.laps objectAtIndex:indexPath.row]; + NSString *lap = [self.numberOfLaps objectAtIndex:indexPath.row]; + + cell.detailTextLabel.text = key; + cell.textLabel.text = [NSString stringWithFormat:@"Lap %@",lap]; + cell.backgroundColor = [UIColor clearColor]; + + return cell; +} + + + + +@end diff --git a/go/GOTimerViewController.h b/go/GOTimerViewController.h new file mode 100644 index 0000000..bfcbd8a --- /dev/null +++ b/go/GOTimerViewController.h @@ -0,0 +1,34 @@ +// +// GOTimerViewController.h +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/23/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import +#import "Exercises.h" +#import "Workout.h" +#import + +@interface GOTimerViewController : UIViewController + +@property (nonatomic) Workout *currentWorkout; +@property (nonatomic) NSInteger currentExerciseIndex; +@property (nonatomic) Exercises *exercise; +@property (nonatomic) NSString * currentExerciseName; +@property (nonatomic) NSString *currentExerciseImage; +//timeIntervals +@property (nonatomic) NSTimeInterval currentExerciseTime; +//@property (nonatomic) NSTimeInterval nextNumber; +@property (nonatomic) NSTimeInterval totalTime; + +//Properties of ViewController +@property (weak, nonatomic) IBOutlet UIImageView *exerciseImageView; +@property (weak, nonatomic) IBOutlet UILabel *totalTimeExerciseLabel; +@property (weak, nonatomic) IBOutlet UILabel *exerciseTimeLabel; +@property (weak, nonatomic) IBOutlet UILabel *exerciseNameLabel; + +@property (strong, nonatomic) AVSpeechSynthesizer *synthesizer; + +@end diff --git a/go/GOTimerViewController.m b/go/GOTimerViewController.m new file mode 100644 index 0000000..2ad5449 --- /dev/null +++ b/go/GOTimerViewController.m @@ -0,0 +1,264 @@ +// +// GOTimerViewController.m +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/23/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "GOTimerViewController.h" +#import "Exercises.h" +#import + +@interface GOTimerViewController () + +@property (nonatomic) NSTimer *timer; +@property (nonatomic) NSTimer *totalTimer; +@property (nonatomic) float mainTotalTime; +@property (nonatomic) float previousMainTotalTime; + +@property (nonatomic) NSDate *mainPreviousTime; +@property (nonatomic) NSDate *currentTime; +//for exercise timer +@property (nonatomic) NSDate *timerMainPreviousTime; +@property (nonatomic) NSDate *timerCurrentTime; +@property (nonatomic) NSDate *timerDate; +@property (nonatomic) float timerMainTotalTime; + +@property (nonatomic) Exercises *thisExercise; +@property (nonatomic) BOOL isRunning; + +@property (weak, nonatomic) IBOutlet UIButton *endButton; +@property (weak, nonatomic) IBOutlet UIButton *pauseButton; +@property (weak, nonatomic) IBOutlet UIButton *continueButton; + +@end + +@implementation GOTimerViewController + +- (void)voiceSpeak: (NSString *)textToSpeech { + AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:textToSpeech]; + utterance.rate = 0.5; + utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-au"]; + [self.synthesizer speakUtterance:utterance]; +} + + +- (void)viewDidLoad { + [super viewDidLoad]; + + self.synthesizer = [[AVSpeechSynthesizer alloc]init]; + + [self.navigationController setNavigationBarHidden:YES animated:YES]; + + + self.continueButton.hidden = YES; + + [self initializeTimer]; + + NSLog(@"previous total time: %f", self.previousMainTotalTime); + + self.totalTimeExerciseLabel.font = [UIFont fontWithName:@"Kenzo" size:20.0]; + self.exerciseNameLabel.font = [UIFont fontWithName:@"Kenzo" size:20.0]; + self.exerciseTimeLabel.font = [UIFont fontWithName:@"Kenzon" size:20.0]; + + self.thisExercise = [self.currentWorkout.exercises objectAtIndex: (NSUInteger)self.currentExerciseIndex]; + self.currentExerciseName = self.thisExercise.nameOfExercise; + self.currentExerciseTime = self.thisExercise.exerciseTime; + + [self voiceSpeak:self.currentExerciseName]; + + self.timerDate = [NSDate dateWithTimeIntervalSince1970:self.currentExerciseTime]; + + NSDateFormatter *timerFormatter = [[NSDateFormatter alloc]init]; + [timerFormatter setDateFormat:@"mm : ss"]; + [timerFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]]; + NSString *timerString = [timerFormatter stringFromDate:self.timerDate]; + self.exerciseTimeLabel.text = timerString; + + + + self.exerciseNameLabel.text = self.thisExercise.nameOfExercise; + + NSString *imageName = self.thisExercise.exerciseImageString; + UIImageView *view = [[UIImageView alloc]initWithImage:[UIImage imageNamed:imageName]]; + self.exerciseImageView.image = view.image; + + + self.mainTotalTime = self.mainTotalTime + self.previousMainTotalTime; + + self.currentTime = [NSDate dateWithTimeIntervalSince1970:self.mainTotalTime]; + [timerFormatter setDateFormat:@"mm : ss"]; + [timerFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]]; + NSString *totalTimerString = [timerFormatter stringFromDate:self.currentTime]; + + self.totalTimeExerciseLabel.text = totalTimerString; + + if (self.currentExerciseIndex == (NSInteger)nil){ + self.currentExerciseIndex = 0; + } + + if (self.currentExerciseIndex == 0){ + [self.totalTimer invalidate]; + self.totalTimeExerciseLabel.text = @"Get ready to GO!"; + self.mainTotalTime = self.mainTotalTime - 1; + } else if (self.currentExerciseIndex >= 1){ + [self initializeTotalTimer]; + } + +} + +//method to initialize Total Workout Timer +- (void) initializeTotalTimer{ + self.totalTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 + target:self + selector:@selector(updateTotalTimer) + userInfo:nil + repeats:YES]; + + self.mainPreviousTime = [[NSDate alloc] init]; +} +//method to initialze Exercise Timer +- (void) initializeTimer { + self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 + target:self + selector:@selector(updateExerciseTimer) + userInfo:nil + repeats:YES]; + + self.timerMainPreviousTime = [[NSDate alloc]init]; +} + +- (void) updateTotalTimer { + + self.currentTime = [[NSDate alloc] init]; + + NSTimeInterval elapsedTime = [self.currentTime timeIntervalSinceDate: self.mainPreviousTime]; + self.mainPreviousTime = self.currentTime; + // double one = 1.0; + + self.mainTotalTime += elapsedTime; + + NSDate *timeDate = [NSDate dateWithTimeIntervalSince1970:self.mainTotalTime]; + + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; + [dateFormatter setDateFormat:@"mm : ss"]; + [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]]; + NSString *timeString = [dateFormatter stringFromDate:timeDate]; + self.totalTimeExerciseLabel.text = timeString; + + +// NSLog(@"main total: %f", self.mainTotalTime); + + + +} +- (void) updateExerciseTimer { + + double one = 1.0; + + self.currentExerciseTime -= one; + + NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:self.currentExerciseTime]; + + NSDateFormatter *timerFormatter = [[NSDateFormatter alloc]init]; + [timerFormatter setDateFormat:@"mm : ss"]; + [timerFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]]; + NSString *timerString = [timerFormatter stringFromDate:timerDate]; + self.exerciseTimeLabel.text = timerString; + + NSInteger count = [self.currentWorkout.exercises count]; + + if (self.currentExerciseTime == 7 && count > 0){ + [self voiceSpeak: @"Exercise Ends in 5 Seconds"]; + } + if (self.currentExerciseTime == 5){ + [self voiceSpeak: @"5"]; + } + if (self.currentExerciseTime == 4){ + [self voiceSpeak: @"4"]; + } + if (self.currentExerciseTime == 3){ + [self voiceSpeak: @"3"]; + } + if (self.currentExerciseTime == 2){ + [self voiceSpeak: @"2"]; + } + if (self.currentExerciseTime == 1){ + [self voiceSpeak: @"1"]; + } + + + if (self.currentExerciseTime == 0 && self.currentExerciseIndex < count - 1) { + NSLog(@"Next exercise"); + + [self initializeNextExerciseScreen]; + + } else if (self.currentExerciseTime == 0 && self.currentExerciseIndex == count - 1) { + + [self.timer invalidate]; + [self.navigationController popToRootViewControllerAnimated:YES]; + } + +} +//method pushes to next exercise in array +- (void) initializeNextExerciseScreen { + + GOTimerViewController *nextViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"WorkoutController"]; + nextViewController.currentWorkout = self.currentWorkout; + nextViewController.currentExerciseIndex = self.currentExerciseIndex+1; + [self.timer invalidate]; + [self.navigationController pushViewController:nextViewController animated:YES]; + nextViewController.previousMainTotalTime = self.mainTotalTime + 1; + NSLog(@"main total time: %f", (self.mainTotalTime + self.previousMainTotalTime)); + +} + +- (IBAction)pausePressed:(UIButton *)sender { + + [self.timer invalidate]; + [self.totalTimer invalidate]; + + self.pauseButton.hidden = YES; + self.continueButton.hidden = NO; + +} +- (IBAction)continuePressed:(UIButton *)sender { + [self initializeTimer]; + + + if (self.currentExerciseIndex >= 1){ + [self initializeTotalTimer]; + } + + + self.pauseButton.hidden = NO; + self.continueButton.hidden = YES; + +} + +- (IBAction)end:(UIButton *)sender { + [self.timer invalidate]; + [self.totalTimer invalidate]; + [self.navigationController popToRootViewControllerAnimated:YES]; +} + +- (void) viewDidDisappear:(BOOL)animated { + [self.timer invalidate]; + [self.totalTimer invalidate]; + +} + + + +/* + #pragma mark - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. + } + */ + +@end diff --git a/go/GOWorkoutsTableViewController.h b/go/GOWorkoutsTableViewController.h new file mode 100644 index 0000000..25b8cac --- /dev/null +++ b/go/GOWorkoutsTableViewController.h @@ -0,0 +1,13 @@ +// +// GOWorkoutsTableViewController.h +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/24/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import + +@interface GOWorkoutsTableViewController : UITableViewController + +@end diff --git a/go/GOWorkoutsTableViewController.m b/go/GOWorkoutsTableViewController.m new file mode 100644 index 0000000..604ddf5 --- /dev/null +++ b/go/GOWorkoutsTableViewController.m @@ -0,0 +1,167 @@ +// +// GOWorkoutsTableViewController.m +// unit-1-final-project +// +// Created by Jamaal Sedayao on 8/24/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "GOWorkoutsTableViewController.h" +#import "GOTimerViewController.h" +#import "WorkoutManager.h" +#import "Workout.h" +#import "GOFightViewController.h" +#import "BackgroundGradient.h" + +@interface GOWorkoutsTableViewController () + +@property (weak, nonatomic) IBOutlet UILabel *goLeanLabel; +@property (weak, nonatomic) IBOutlet UILabel *goHardLabel; +@property (weak, nonatomic) IBOutlet UILabel *goFightLabel; +@property (weak, nonatomic) IBOutlet UILabel *goDeepLabel; + +@end + +@implementation GOWorkoutsTableViewController + + +// In each tabbed view controller + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + if (self = [super initWithCoder:aDecoder]) { + + self.title = @"Go"; + + // non-selected tab bar image + UIImage *defaultImage = [[UIImage imageNamed:@"goIcon"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; + + // selected tab bar image + UIImage *selectedImage = [[UIImage imageNamed:@"goIconSelected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; + + // set the tab bar item with a title and both images + self.tabBarItem = [[UITabBarItem alloc] initWithTitle:nil + image:defaultImage + selectedImage:selectedImage]; + + self.tabBarItem.title = nil; + + self.tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0); + + self.tabBarItem.titlePositionAdjustment = UIOffsetMake(0.f, 50.f); + + return self; + } + return nil; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self.navigationController setNavigationBarHidden:NO]; + CAGradientLayer *bgLayer = [BackgroundGradient greenGradient]; + bgLayer.frame = self.view.bounds; + [self.tableView.layer insertSublayer:bgLayer atIndex:0]; + + self.tabBarController.tabBar.hidden = NO; + + [self.tableView reloadData]; +} + +- (void)viewDidLoad { + + [super viewDidLoad]; + + // creates a custom right bar button to segue into the results page + UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; + [button addTarget:self + action:@selector(addWorkoutButton:) + forControlEvents:UIControlEventTouchUpInside]; + [button setTitle:@"Your Workouts" forState:UIControlStateNormal]; + button.frame = CGRectMake(100.0, 0.0, 110.0, 40.0); + UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; + self.navigationItem.rightBarButtonItem = barButtonItem; + + [self.tableView reloadData]; + + self.goHardLabel.font = [UIFont fontWithName:@"NikeTotal90" size:80.0]; + self.goLeanLabel.font = [UIFont fontWithName:@"NikeTotal90" size:80.0]; + + self.goFightLabel.font = [UIFont fontWithName:@"NikeTotal90" size:80.0]; + + self.goDeepLabel.font = [UIFont fontWithName:@"NikeTotal90" size:80.0]; + + + + self.tableView.delegate = self; + + self.tableView.separatorColor = [UIColor clearColor]; +} + +- (IBAction)addWorkoutButton:(id)sender { + // creates a storboard from the "Main" storboard + UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; + + // creates an instance of view controller from UI storyboard with identifier "ViewControllerIdentifier" + UITableViewController *vc = [sb instantiateViewControllerWithIdentifier:@"CustomWorkoutList"]; + + // pushing the navigation controller on a navigation stack + [self.navigationController pushViewController:vc animated:YES]; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +#pragma mark - Table View Data Source + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + + +#pragma mark - Navigation + +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + NSLog(@"Preparing for Segue"); + if([segue.identifier isEqualToString:@"timerSegue"]) + { + NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; + NSMutableArray *workouts = [WorkoutManager sharedManager].workouts; + Workout *workout = workouts[indexPath.row]; + + GOTimerViewController *sublistVC = segue.destinationViewController; + sublistVC.currentWorkout = [workouts objectAtIndex:0]; + + NSLog(@"%@", sublistVC.currentWorkout); + NSLog(@"%@", workout.workoutName); + } + if([segue.identifier isEqualToString:@"timerSegueTwo"]) + { + NSLog(@"Success!"); + NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; + NSMutableArray *workouts = [WorkoutManager sharedManager].workouts; + Workout *workout = workouts[indexPath.row]; + + GOTimerViewController *sublistVC = segue.destinationViewController; + sublistVC.currentWorkout = [workouts objectAtIndex:1]; + + NSLog(@"%@", sublistVC.currentWorkout); + NSLog(@"%@", workout.workoutName); + } + if([segue.identifier isEqualToString:@"timerSegueThree"]) + { + NSLog(@"GoFight!"); + + } + if([segue.identifier isEqualToString:@"timerSegueFour"]) + { + NSLog(@"GoBuild!"); + + self.hidesBottomBarWhenPushed = NO; + + GOFightViewController *sublistVC = segue.destinationViewController; + [self.navigationController pushViewController:sublistVC animated:YES]; + } + +} +@end diff --git a/Time/Time/Info.plist b/go/Info.plist similarity index 77% rename from Time/Time/Info.plist rename to go/Info.plist index 62e151f..f465150 100644 --- a/Time/Time/Info.plist +++ b/go/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.mikekavouras.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -20,8 +20,16 @@ ???? CFBundleVersion 1 + LSApplicationCategoryType + LSRequiresIPhoneOS + UIAppFonts + + monofonto.ttf + Kenzo Regular.otf + NikeTotal90.ttf + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -36,12 +44,5 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - diff --git a/go/LapTimerTableViewCell.h b/go/LapTimerTableViewCell.h new file mode 100644 index 0000000..6bb9073 --- /dev/null +++ b/go/LapTimerTableViewCell.h @@ -0,0 +1,16 @@ +// +// LapTimerTableViewCell.h +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/23/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import + +@interface LapTimerTableViewCell : UITableViewCell + +@property (weak, nonatomic) IBOutlet UILabel *lapTimeLabel; + + +@end diff --git a/go/LapTimerTableViewCell.m b/go/LapTimerTableViewCell.m new file mode 100644 index 0000000..9992a3a --- /dev/null +++ b/go/LapTimerTableViewCell.m @@ -0,0 +1,23 @@ +// +// LapTimerTableViewCell.m +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/23/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "LapTimerTableViewCell.h" + +@implementation LapTimerTableViewCell + +- (void)awakeFromNib { + // Initialization code +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +@end diff --git a/go/NikeTotal90.ttf b/go/NikeTotal90.ttf new file mode 100755 index 0000000..5cdc15c Binary files /dev/null and b/go/NikeTotal90.ttf differ diff --git a/go/Workout.h b/go/Workout.h new file mode 100644 index 0000000..c708b0a --- /dev/null +++ b/go/Workout.h @@ -0,0 +1,20 @@ +// +// Workout.h +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/22/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import + +#import "Exercises.h" + +@interface Workout : NSObject + +@property (nonatomic) NSMutableArray *exercises; +@property (nonatomic) NSString *workoutName; +//- (void) initializeData; + +@end + diff --git a/go/Workout.m b/go/Workout.m new file mode 100644 index 0000000..ec62c32 --- /dev/null +++ b/go/Workout.m @@ -0,0 +1,20 @@ +// +// Workout.m +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/22/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "Workout.h" +#import "Exercises.h" +#import "WorkoutManager.h" + + +@implementation Workout + + + +@end + + diff --git a/go/WorkoutManager.h b/go/WorkoutManager.h new file mode 100644 index 0000000..788467a --- /dev/null +++ b/go/WorkoutManager.h @@ -0,0 +1,24 @@ +// +// WorkoutManager.h +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/22/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import + +@interface WorkoutManager : NSObject + +@property (nonatomic,strong) NSMutableArray *workouts; +@property (nonatomic,strong) NSMutableDictionary *calendarDates; +@property (nonatomic,strong) NSMutableArray *customWorkouts; + ++ (WorkoutManager *) sharedManager; + ++ (WorkoutManager *) calendarManager; + ++ (WorkoutManager *) customWorkoutManager; + + +@end diff --git a/go/WorkoutManager.m b/go/WorkoutManager.m new file mode 100644 index 0000000..6cf599d --- /dev/null +++ b/go/WorkoutManager.m @@ -0,0 +1,179 @@ +// +// WorkoutManager.m +// unit-1-final-project +// +// Created by Fatima Zenine Villanueva on 8/22/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import "WorkoutManager.h" +#import "Workout.h" +#import "Exercises.h" + +@implementation WorkoutManager + +#pragma mark Singleton Methods + +@synthesize workouts; +@synthesize calendarDates; + ++ (WorkoutManager *) sharedManager{ + static WorkoutManager *sharedMyManager = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + sharedMyManager = [[self alloc] init]; + sharedMyManager.workouts = [[NSMutableArray alloc] init]; + [sharedMyManager preLoadedWorkouts]; + }); + return sharedMyManager; +} + ++ (WorkoutManager *) calendarManager{ + static WorkoutManager *calendarMyManager = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + calendarMyManager = [[self alloc] init]; + calendarMyManager.calendarDates = [[NSMutableDictionary alloc] init]; + }); + return calendarMyManager; +} + ++ (WorkoutManager *) customWorkoutManager{ + static WorkoutManager *customWorkoutMyManager = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + customWorkoutMyManager = [[self alloc] init]; + customWorkoutMyManager.customWorkouts = [[NSMutableArray alloc] init]; + }); + return customWorkoutMyManager; +} + +- (void)preLoadedWorkouts { + +//Exercise List - GO HARD + + + Exercises *warmup = [[Exercises alloc] init]; + warmup.nameOfExercise = @"Warm-Up"; + warmup.exerciseTime = 10.0; + warmup.exerciseImageString = @"warmup"; + + + Exercises *gohard1 = [[Exercises alloc] init]; + gohard1.nameOfExercise = @"Push-ups"; + gohard1.exerciseTime = 15.0; + gohard1.exerciseImageString = @"pushup"; + + Exercises *gohard2 = [[Exercises alloc] init]; + gohard2.nameOfExercise = @"Pull-ups"; + gohard2.exerciseTime = 15.0; + gohard2.exerciseImageString = @"pullups"; + + Exercises *gohard3 = [[Exercises alloc] init]; + gohard3.nameOfExercise = @"Sit-ups"; + gohard3.exerciseTime = 15.0; + gohard3.exerciseImageString = @"situp"; + + Exercises *gohard4 = [[Exercises alloc] init]; + gohard4.nameOfExercise = @"Squats"; + gohard4.exerciseTime = 20.0; + gohard4.exerciseImageString = @"squats"; + + Exercises *gohard5 = [[Exercises alloc] init]; + gohard5.nameOfExercise = @"Burpees"; + gohard5.exerciseTime = 15.0; + gohard5.exerciseImageString = @"burpees"; + + Exercises *gohard6 = [[Exercises alloc] init]; + gohard6.nameOfExercise = @"Lunges"; + gohard6.exerciseTime = 12.0; + gohard6.exerciseImageString = @"lunges"; + + Exercises *gohard7 = [[Exercises alloc] init]; + gohard7.nameOfExercise = @"Dips"; + gohard7.exerciseTime = 10.0; + gohard7.exerciseImageString = @"dips"; + + + +//Exercise List - GO LEAN + + Exercises *golean1 = [[Exercises alloc]init]; + golean1.nameOfExercise = @"Jog"; + golean1.exerciseTime = 15.0; + golean1.exerciseImageString = @"jog"; + + Exercises *golean2 = [[Exercises alloc]init]; + golean2.nameOfExercise = @"Jump Rope"; + golean2.exerciseTime = 10.0; + golean2.exerciseImageString = @"jumprope"; + + Exercises *golean3 = [[Exercises alloc]init]; + golean3.nameOfExercise = @"Jump-squat"; + golean3.exerciseTime = 10.0; + golean3.exerciseImageString = @"jumpsquats"; + + Exercises *golean4 = [[Exercises alloc]init]; + golean4.nameOfExercise = @"Plank"; + golean4.exerciseTime = 10.0; + golean4.exerciseImageString = @"plank"; + + Exercises *golean5 = [[Exercises alloc]init]; + golean5.nameOfExercise = @"Mountain-Climbers"; + golean5.exerciseTime = 10.0; + golean5.exerciseImageString = @"mountainclimbers"; + + Exercises *golean6 = [[Exercises alloc]init]; + golean6.nameOfExercise = @"Sprints"; + golean6.exerciseTime = 10.0; + golean6.exerciseImageString = @"sprint"; + + Exercises *golean7 = [[Exercises alloc]init]; + golean7.nameOfExercise = @"Step Runs"; + golean7.exerciseTime = 10.0; + golean7.exerciseImageString = @"runstairs"; + +//Workout List - (Array of Exercises) + + // 1st Workout + + Workout *workout1 = [[Workout alloc] init]; + workout1.exercises = [[NSMutableArray alloc] init]; + workout1.workoutName = @"Go Hard!"; + + [workout1.exercises addObject:warmup]; + [workout1.exercises addObject:gohard1]; + [workout1.exercises addObject:gohard2]; + [workout1.exercises addObject:gohard3]; + [workout1.exercises addObject:gohard4]; + [workout1.exercises addObject:gohard5]; + [workout1.exercises addObject:gohard6]; + [workout1.exercises addObject:gohard7]; + + + // 2nd Workout + + Workout *workout2 = [[Workout alloc] init]; + workout2.exercises = [[NSMutableArray alloc] init]; + workout2.workoutName = @"Go Lean!"; + + [workout2.exercises addObject: warmup]; + [workout2.exercises addObject:golean1]; + [workout2.exercises addObject:golean2]; + [workout2.exercises addObject:golean3]; + [workout2.exercises addObject:golean4]; + [workout2.exercises addObject:golean5]; + [workout2.exercises addObject:golean6]; + [workout2.exercises addObject:golean7]; + + + // Adding Workouts to GOWorkoutViewController Array + + [self.workouts addObject:workout1]; + [self.workouts addObject:workout2]; +} + + + + +@end diff --git a/go/bell.mp3 b/go/bell.mp3 new file mode 100644 index 0000000..c4e7d89 Binary files /dev/null and b/go/bell.mp3 differ diff --git a/go/digital.ttf b/go/digital.ttf new file mode 100755 index 0000000..a481b97 Binary files /dev/null and b/go/digital.ttf differ diff --git a/Time/Time/main.m b/go/main.m similarity index 64% rename from Time/Time/main.m rename to go/main.m index 9583fe1..acc840d 100644 --- a/Time/Time/main.m +++ b/go/main.m @@ -1,9 +1,9 @@ // // main.m -// Time +// unit-1-final-project // -// Created by Michael Kavouras on 8/20/15. -// Copyright (c) 2015 Mike Kavouras. All rights reserved. +// Created by Fatima Zenine Villanueva on 8/20/15. +// Copyright © 2015 apps. All rights reserved. // #import diff --git a/go/monofonto.ttf b/go/monofonto.ttf new file mode 100755 index 0000000..9d65196 Binary files /dev/null and b/go/monofonto.ttf differ diff --git a/Time/TimeTests/Info.plist b/goTests/Info.plist similarity index 90% rename from Time/TimeTests/Info.plist rename to goTests/Info.plist index 54624a4..ba72822 100644 --- a/Time/TimeTests/Info.plist +++ b/goTests/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.mikekavouras.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/Time/TimeTests/TimeTests.m b/goTests/goprojectTests.m similarity index 63% rename from Time/TimeTests/TimeTests.m rename to goTests/goprojectTests.m index 944060f..9361c04 100644 --- a/Time/TimeTests/TimeTests.m +++ b/goTests/goprojectTests.m @@ -1,19 +1,18 @@ // -// TimeTests.m -// TimeTests +// unit_1_final_projectTests.m +// unit-1-final-projectTests // -// Created by Michael Kavouras on 8/20/15. -// Copyright (c) 2015 Mike Kavouras. All rights reserved. +// Created by Fatima Zenine Villanueva on 8/20/15. +// Copyright © 2015 apps. All rights reserved. // -#import #import -@interface TimeTests : XCTestCase +@interface unit_1_final_projectTests : XCTestCase @end -@implementation TimeTests +@implementation unit_1_final_projectTests - (void)setUp { [super setUp]; @@ -27,7 +26,7 @@ - (void)tearDown { - (void)testExample { // This is an example of a functional test case. - XCTAssert(YES, @"Pass"); + // Use XCTAssert and related functions to verify your tests produce the correct results. } - (void)testPerformanceExample { diff --git a/goUITests/Info.plist b/goUITests/Info.plist new file mode 100644 index 0000000..ba72822 --- /dev/null +++ b/goUITests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/goUITests/goprojectUITests.m b/goUITests/goprojectUITests.m new file mode 100644 index 0000000..26beaa4 --- /dev/null +++ b/goUITests/goprojectUITests.m @@ -0,0 +1,38 @@ +// +// unit_1_final_projectUITests.m +// unit-1-final-projectUITests +// +// Created by Fatima Zenine Villanueva on 8/20/15. +// Copyright © 2015 apps. All rights reserved. +// + +#import + +@interface unit_1_final_projectUITests : XCTestCase + +@end + +@implementation unit_1_final_projectUITests + +- (void)setUp { + [super setUp]; + + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + self.continueAfterFailure = NO; + // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. + [[[XCUIApplication alloc] init] launch]; +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. + [super tearDown]; +} + +- (void)testExample { + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. +} + +@end diff --git a/groups.md b/groups.md deleted file mode 100644 index c098f91..0000000 --- a/groups.md +++ /dev/null @@ -1,18 +0,0 @@ -Person | Person -:------|:------ -Varindra Hart | Jackie Meggesto -Jamaal Sedayao | Kaira Villanueva -Eric Sze | Umar Mahmud -Zoufishan Mehdi | Justine Gartner -Derek Netto | Jovanny Espinal -Bereket Ghebremedhin | Charles H Kang -Artur Lan | Jason Wang -Brian Blanco | Daniel Distant -Eric Sanchez | Diana Elezaj -Christian Maldonado | Lauren Caponong -Elber Carneiro | Mesfin Bekele Mekonnen -Ayuna Vogel | Christella Dolmo -Natalia Estrella | krishna picart -Kaisha Jones | Henna Ahmed -Xiulan Shi | Shena Yoshida -Felicia Weathers | Chris David diff --git a/images/goshot1.png b/images/goshot1.png new file mode 100644 index 0000000..061ce27 Binary files /dev/null and b/images/goshot1.png differ diff --git a/images/goshot2.png b/images/goshot2.png new file mode 100644 index 0000000..de12e31 Binary files /dev/null and b/images/goshot2.png differ diff --git a/images/goshot3.png b/images/goshot3.png new file mode 100644 index 0000000..afc0978 Binary files /dev/null and b/images/goshot3.png differ