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/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/Time/TimerStopwatch.xcodeproj/project.pbxproj b/Time/TimerStopwatch.xcodeproj/project.pbxproj new file mode 100644 index 0000000..f101648 --- /dev/null +++ b/Time/TimerStopwatch.xcodeproj/project.pbxproj @@ -0,0 +1,557 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + AB19AFAA1B97CFC000648DDE /* PresetTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = AB19AFA91B97CFC000648DDE /* PresetTimer.m */; }; + AB19AFAD1B97D3AD00648DDE /* PresetTimersSingleton.m in Sources */ = {isa = PBXBuildFile; fileRef = AB19AFAC1B97D3AD00648DDE /* PresetTimersSingleton.m */; }; + AB19AFB01B97D9C100648DDE /* TimerDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AB19AFAF1B97D9C100648DDE /* TimerDetailViewController.m */; }; + AB31A5E31B8E7BC800F63EBE /* StopWatchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AB31A5E21B8E7BC800F63EBE /* StopWatchViewController.m */; }; + AB5791F91B955DB500F4EBAB /* PresetTimersTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AB5791F81B955DB500F4EBAB /* PresetTimersTableViewController.m */; }; + ABA086A41B97CD1500897BDD /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BF6C16E31B8FE29F00103CC2 /* Main.storyboard */; }; + ABE0B27A1B97CDC0009224A0 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ABE0B2791B97CDC0009224A0 /* ViewController.m */; }; + BF3D67411B8E7A72005D9CFA /* PresetsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BF3D67401B8E7A72005D9CFA /* PresetsTableViewController.m */; }; + BF3D67491B8E9824005D9CFA /* NewPresetsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BF3D67481B8E9824005D9CFA /* NewPresetsViewController.m */; }; + BF5A03731B88C0AD00FDF71D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = BF5A03721B88C0AD00FDF71D /* main.m */; }; + BF5A03761B88C0AD00FDF71D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = BF5A03751B88C0AD00FDF71D /* AppDelegate.m */; }; + BF5A037E1B88C0AD00FDF71D /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BF5A037D1B88C0AD00FDF71D /* Images.xcassets */; }; + BF5A038D1B88C0AD00FDF71D /* TimerStopwatchTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BF5A038C1B88C0AD00FDF71D /* TimerStopwatchTests.m */; }; + BF5A039E1B88CCD600FDF71D /* TimerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BF5A039D1B88CCD600FDF71D /* TimerViewController.m */; }; + BF5A03A01B88D49400FDF71D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF5A039F1B88D49400FDF71D /* QuartzCore.framework */; }; + BF6C16E71B8FEF2800103CC2 /* EventsCountdownViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BF6C16E61B8FEF2800103CC2 /* EventsCountdownViewController.m */; }; + BFE6F3FB1B92187000350E51 /* Gravity-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BFE6F3FA1B92187000350E51 /* Gravity-Light.ttf */; }; + BFE6F3FC1B92187000350E51 /* Gravity-Light.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BFE6F3FA1B92187000350E51 /* Gravity-Light.ttf */; }; + BFE6F3FE1B92187F00350E51 /* LANENAR_.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BFE6F3FD1B92187F00350E51 /* LANENAR_.ttf */; }; + BFE6F3FF1B92187F00350E51 /* LANENAR_.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BFE6F3FD1B92187F00350E51 /* LANENAR_.ttf */; }; + BFE6F4011B92188900350E51 /* HYPE.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BFE6F4001B92188900350E51 /* HYPE.ttf */; }; + BFE6F4021B92188900350E51 /* HYPE.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BFE6F4001B92188900350E51 /* HYPE.ttf */; }; + BFE6F4041B92196D00350E51 /* LANEUP__.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BFE6F4031B92196D00350E51 /* LANEUP__.ttf */; }; + BFE6F4051B92196D00350E51 /* LANEUP__.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BFE6F4031B92196D00350E51 /* LANEUP__.ttf */; }; + BFE6F4071B9219BD00350E51 /* Gravity-Book.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BFE6F4061B9219BD00350E51 /* Gravity-Book.ttf */; }; + BFE6F4081B9219BD00350E51 /* Gravity-Book.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BFE6F4061B9219BD00350E51 /* Gravity-Book.ttf */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + BF5A03871B88C0AD00FDF71D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BF5A03651B88C0AD00FDF71D /* Project object */; + proxyType = 1; + remoteGlobalIDString = BF5A036C1B88C0AD00FDF71D; + remoteInfo = TimerStopwatch; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + AB19AFA81B97CFC000648DDE /* PresetTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PresetTimer.h; sourceTree = ""; }; + AB19AFA91B97CFC000648DDE /* PresetTimer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PresetTimer.m; sourceTree = ""; }; + AB19AFAB1B97D3AD00648DDE /* PresetTimersSingleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PresetTimersSingleton.h; sourceTree = ""; }; + AB19AFAC1B97D3AD00648DDE /* PresetTimersSingleton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PresetTimersSingleton.m; sourceTree = ""; }; + AB19AFAE1B97D9C100648DDE /* TimerDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TimerDetailViewController.h; sourceTree = ""; }; + AB19AFAF1B97D9C100648DDE /* TimerDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TimerDetailViewController.m; sourceTree = ""; }; + AB31A5E11B8E7BC800F63EBE /* StopWatchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StopWatchViewController.h; sourceTree = ""; }; + AB31A5E21B8E7BC800F63EBE /* StopWatchViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StopWatchViewController.m; sourceTree = ""; }; + AB5791F71B955DB500F4EBAB /* PresetTimersTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PresetTimersTableViewController.h; sourceTree = ""; }; + AB5791F81B955DB500F4EBAB /* PresetTimersTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PresetTimersTableViewController.m; sourceTree = ""; }; + ABE0B2781B97CDC0009224A0 /* ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + ABE0B2791B97CDC0009224A0 /* ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + BF3D673F1B8E7A72005D9CFA /* PresetsTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PresetsTableViewController.h; sourceTree = ""; }; + BF3D67401B8E7A72005D9CFA /* PresetsTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PresetsTableViewController.m; sourceTree = ""; }; + BF3D67471B8E9824005D9CFA /* NewPresetsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NewPresetsViewController.h; sourceTree = ""; }; + BF3D67481B8E9824005D9CFA /* NewPresetsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NewPresetsViewController.m; sourceTree = ""; }; + BF3D674A1B8E9864005D9CFA /* NewPresetsViewControllerDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NewPresetsViewControllerDelegate.h; sourceTree = ""; }; + BF3D674B1B8E9879005D9CFA /* PresetsTableViewControllerDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PresetsTableViewControllerDelegate.h; sourceTree = ""; }; + BF5A036D1B88C0AD00FDF71D /* TimerStopwatch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TimerStopwatch.app; sourceTree = BUILT_PRODUCTS_DIR; }; + BF5A03711B88C0AD00FDF71D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + BF5A03721B88C0AD00FDF71D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + BF5A03741B88C0AD00FDF71D /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + BF5A03751B88C0AD00FDF71D /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + BF5A037D1B88C0AD00FDF71D /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + BF5A03801B88C0AD00FDF71D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + BF5A03861B88C0AD00FDF71D /* TimerStopwatchTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TimerStopwatchTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + BF5A038B1B88C0AD00FDF71D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + BF5A038C1B88C0AD00FDF71D /* TimerStopwatchTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TimerStopwatchTests.m; sourceTree = ""; }; + BF5A039C1B88CCD600FDF71D /* TimerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TimerViewController.h; sourceTree = ""; }; + BF5A039D1B88CCD600FDF71D /* TimerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TimerViewController.m; sourceTree = ""; }; + BF5A039F1B88D49400FDF71D /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + BF6C16E31B8FE29F00103CC2 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; + BF6C16E51B8FEF2800103CC2 /* EventsCountdownViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventsCountdownViewController.h; sourceTree = ""; }; + BF6C16E61B8FEF2800103CC2 /* EventsCountdownViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EventsCountdownViewController.m; sourceTree = ""; }; + BFE6F3FA1B92187000350E51 /* Gravity-Light.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Gravity-Light.ttf"; sourceTree = ""; }; + BFE6F3FD1B92187F00350E51 /* LANENAR_.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = LANENAR_.ttf; sourceTree = ""; }; + BFE6F4001B92188900350E51 /* HYPE.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = HYPE.ttf; sourceTree = ""; }; + BFE6F4031B92196D00350E51 /* LANEUP__.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = LANEUP__.ttf; sourceTree = ""; }; + BFE6F4061B9219BD00350E51 /* Gravity-Book.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Gravity-Book.ttf"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + BF5A036A1B88C0AD00FDF71D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BF5A03A01B88D49400FDF71D /* QuartzCore.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BF5A03831B88C0AD00FDF71D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + BF3D67431B8E7EB4005D9CFA /* Stopwatch */ = { + isa = PBXGroup; + children = ( + AB31A5E21B8E7BC800F63EBE /* StopWatchViewController.m */, + AB31A5E11B8E7BC800F63EBE /* StopWatchViewController.h */, + ); + name = Stopwatch; + sourceTree = ""; + }; + BF5A03641B88C0AD00FDF71D = { + isa = PBXGroup; + children = ( + BF5A039F1B88D49400FDF71D /* QuartzCore.framework */, + BF5A036F1B88C0AD00FDF71D /* TimerStopwatch */, + BF5A03891B88C0AD00FDF71D /* TimerStopwatchTests */, + BF5A036E1B88C0AD00FDF71D /* Products */, + ); + sourceTree = ""; + }; + BF5A036E1B88C0AD00FDF71D /* Products */ = { + isa = PBXGroup; + children = ( + BF5A036D1B88C0AD00FDF71D /* TimerStopwatch.app */, + BF5A03861B88C0AD00FDF71D /* TimerStopwatchTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + BF5A036F1B88C0AD00FDF71D /* TimerStopwatch */ = { + isa = PBXGroup; + children = ( + BF5A03741B88C0AD00FDF71D /* AppDelegate.h */, + BF5A03751B88C0AD00FDF71D /* AppDelegate.m */, + BF3D67431B8E7EB4005D9CFA /* Stopwatch */, + BFAF42A81B8CF51700772E20 /* Timer */, + BF5A037D1B88C0AD00FDF71D /* Images.xcassets */, + BF5A037F1B88C0AD00FDF71D /* LaunchScreen.xib */, + BF6C16E31B8FE29F00103CC2 /* Main.storyboard */, + BF5A03701B88C0AD00FDF71D /* Supporting Files */, + ); + path = TimerStopwatch; + sourceTree = ""; + }; + BF5A03701B88C0AD00FDF71D /* Supporting Files */ = { + isa = PBXGroup; + children = ( + BF5A03711B88C0AD00FDF71D /* Info.plist */, + BF5A03721B88C0AD00FDF71D /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + BF5A03891B88C0AD00FDF71D /* TimerStopwatchTests */ = { + isa = PBXGroup; + children = ( + BF5A038C1B88C0AD00FDF71D /* TimerStopwatchTests.m */, + BF5A038A1B88C0AD00FDF71D /* Supporting Files */, + ); + path = TimerStopwatchTests; + sourceTree = ""; + }; + BF5A038A1B88C0AD00FDF71D /* Supporting Files */ = { + isa = PBXGroup; + children = ( + BF5A038B1B88C0AD00FDF71D /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + BFAF42A81B8CF51700772E20 /* Timer */ = { + isa = PBXGroup; + children = ( + BF5A039C1B88CCD600FDF71D /* TimerViewController.h */, + BF5A039D1B88CCD600FDF71D /* TimerViewController.m */, + BF6C16E51B8FEF2800103CC2 /* EventsCountdownViewController.h */, + BF6C16E61B8FEF2800103CC2 /* EventsCountdownViewController.m */, + BF3D673F1B8E7A72005D9CFA /* PresetsTableViewController.h */, + BF3D67401B8E7A72005D9CFA /* PresetsTableViewController.m */, + BF3D674B1B8E9879005D9CFA /* PresetsTableViewControllerDelegate.h */, + BF3D67471B8E9824005D9CFA /* NewPresetsViewController.h */, + BF3D67481B8E9824005D9CFA /* NewPresetsViewController.m */, + BF3D674A1B8E9864005D9CFA /* NewPresetsViewControllerDelegate.h */, + AB5791F71B955DB500F4EBAB /* PresetTimersTableViewController.h */, + AB5791F81B955DB500F4EBAB /* PresetTimersTableViewController.m */, + ABE0B2781B97CDC0009224A0 /* ViewController.h */, + ABE0B2791B97CDC0009224A0 /* ViewController.m */, + AB19AFA81B97CFC000648DDE /* PresetTimer.h */, + AB19AFA91B97CFC000648DDE /* PresetTimer.m */, + AB19AFAB1B97D3AD00648DDE /* PresetTimersSingleton.h */, + AB19AFAC1B97D3AD00648DDE /* PresetTimersSingleton.m */, + AB19AFAE1B97D9C100648DDE /* TimerDetailViewController.h */, + AB19AFAF1B97D9C100648DDE /* TimerDetailViewController.m */, + BFE6F3F91B92186100350E51 /* Fonts */, + ); + name = Timer; + sourceTree = ""; + }; + BFE6F3F91B92186100350E51 /* Fonts */ = { + isa = PBXGroup; + children = ( + BFE6F3FA1B92187000350E51 /* Gravity-Light.ttf */, + BFE6F4061B9219BD00350E51 /* Gravity-Book.ttf */, + BFE6F3FD1B92187F00350E51 /* LANENAR_.ttf */, + BFE6F4031B92196D00350E51 /* LANEUP__.ttf */, + BFE6F4001B92188900350E51 /* HYPE.ttf */, + ); + name = Fonts; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + BF5A036C1B88C0AD00FDF71D /* TimerStopwatch */ = { + isa = PBXNativeTarget; + buildConfigurationList = BF5A03901B88C0AD00FDF71D /* Build configuration list for PBXNativeTarget "TimerStopwatch" */; + buildPhases = ( + BF5A03691B88C0AD00FDF71D /* Sources */, + BF5A036A1B88C0AD00FDF71D /* Frameworks */, + BF5A036B1B88C0AD00FDF71D /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TimerStopwatch; + productName = TimerStopwatch; + productReference = BF5A036D1B88C0AD00FDF71D /* TimerStopwatch.app */; + productType = "com.apple.product-type.application"; + }; + BF5A03851B88C0AD00FDF71D /* TimerStopwatchTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = BF5A03931B88C0AD00FDF71D /* Build configuration list for PBXNativeTarget "TimerStopwatchTests" */; + buildPhases = ( + BF5A03821B88C0AD00FDF71D /* Sources */, + BF5A03831B88C0AD00FDF71D /* Frameworks */, + BF5A03841B88C0AD00FDF71D /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BF5A03881B88C0AD00FDF71D /* PBXTargetDependency */, + ); + name = TimerStopwatchTests; + productName = TimerStopwatchTests; + productReference = BF5A03861B88C0AD00FDF71D /* TimerStopwatchTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + BF5A03651B88C0AD00FDF71D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0700; + ORGANIZATIONNAME = "Charles Kang "; + TargetAttributes = { + BF5A036C1B88C0AD00FDF71D = { + CreatedOnToolsVersion = 6.4; + DevelopmentTeam = FP79X83Q3E; + }; + BF5A03851B88C0AD00FDF71D = { + CreatedOnToolsVersion = 6.4; + TestTargetID = BF5A036C1B88C0AD00FDF71D; + }; + }; + }; + buildConfigurationList = BF5A03681B88C0AD00FDF71D /* Build configuration list for PBXProject "TimerStopwatch" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = BF5A03641B88C0AD00FDF71D; + productRefGroup = BF5A036E1B88C0AD00FDF71D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + BF5A036C1B88C0AD00FDF71D /* TimerStopwatch */, + BF5A03851B88C0AD00FDF71D /* TimerStopwatchTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + BF5A036B1B88C0AD00FDF71D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ABA086A41B97CD1500897BDD /* Main.storyboard in Resources */, + BFE6F3FE1B92187F00350E51 /* LANENAR_.ttf in Resources */, + BFE6F4011B92188900350E51 /* HYPE.ttf in Resources */, + BF5A037E1B88C0AD00FDF71D /* Images.xcassets in Resources */, + BFE6F4071B9219BD00350E51 /* Gravity-Book.ttf in Resources */, + BFE6F3FB1B92187000350E51 /* Gravity-Light.ttf in Resources */, + BFE6F4041B92196D00350E51 /* LANEUP__.ttf in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BF5A03841B88C0AD00FDF71D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BFE6F4081B9219BD00350E51 /* Gravity-Book.ttf in Resources */, + BFE6F4021B92188900350E51 /* HYPE.ttf in Resources */, + BFE6F3FF1B92187F00350E51 /* LANENAR_.ttf in Resources */, + BFE6F3FC1B92187000350E51 /* Gravity-Light.ttf in Resources */, + BFE6F4051B92196D00350E51 /* LANEUP__.ttf in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + BF5A03691B88C0AD00FDF71D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ABE0B27A1B97CDC0009224A0 /* ViewController.m in Sources */, + AB19AFB01B97D9C100648DDE /* TimerDetailViewController.m in Sources */, + AB19AFAD1B97D3AD00648DDE /* PresetTimersSingleton.m in Sources */, + BF3D67411B8E7A72005D9CFA /* PresetsTableViewController.m in Sources */, + BF5A039E1B88CCD600FDF71D /* TimerViewController.m in Sources */, + BF5A03761B88C0AD00FDF71D /* AppDelegate.m in Sources */, + AB19AFAA1B97CFC000648DDE /* PresetTimer.m in Sources */, + AB31A5E31B8E7BC800F63EBE /* StopWatchViewController.m in Sources */, + BF3D67491B8E9824005D9CFA /* NewPresetsViewController.m in Sources */, + BF6C16E71B8FEF2800103CC2 /* EventsCountdownViewController.m in Sources */, + AB5791F91B955DB500F4EBAB /* PresetTimersTableViewController.m in Sources */, + BF5A03731B88C0AD00FDF71D /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BF5A03821B88C0AD00FDF71D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BF5A038D1B88C0AD00FDF71D /* TimerStopwatchTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + BF5A03881B88C0AD00FDF71D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BF5A036C1B88C0AD00FDF71D /* TimerStopwatch */; + targetProxy = BF5A03871B88C0AD00FDF71D /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + BF5A037F1B88C0AD00FDF71D /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + BF5A03801B88C0AD00FDF71D /* Base */, + ); + name = LaunchScreen.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + BF5A038E1B88C0AD00FDF71D /* 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; + 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_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; + }; + BF5A038F1B88C0AD00FDF71D /* 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; + }; + BF5A03911B88C0AD00FDF71D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + INFOPLIST_FILE = TimerStopwatch/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "nyc.c4q.charleshkang.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + }; + name = Debug; + }; + BF5A03921B88C0AD00FDF71D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + INFOPLIST_FILE = TimerStopwatch/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "nyc.c4q.charleshkang.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + }; + name = Release; + }; + BF5A03941B88C0AD00FDF71D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = TimerStopwatchTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "nyc.c4q.charleshkang.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TimerStopwatch.app/TimerStopwatch"; + }; + name = Debug; + }; + BF5A03951B88C0AD00FDF71D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + INFOPLIST_FILE = TimerStopwatchTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "nyc.c4q.charleshkang.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TimerStopwatch.app/TimerStopwatch"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + BF5A03681B88C0AD00FDF71D /* Build configuration list for PBXProject "TimerStopwatch" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BF5A038E1B88C0AD00FDF71D /* Debug */, + BF5A038F1B88C0AD00FDF71D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + BF5A03901B88C0AD00FDF71D /* Build configuration list for PBXNativeTarget "TimerStopwatch" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BF5A03911B88C0AD00FDF71D /* Debug */, + BF5A03921B88C0AD00FDF71D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + BF5A03931B88C0AD00FDF71D /* Build configuration list for PBXNativeTarget "TimerStopwatchTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BF5A03941B88C0AD00FDF71D /* Debug */, + BF5A03951B88C0AD00FDF71D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = BF5A03651B88C0AD00FDF71D /* Project object */; +} diff --git a/Time/Time.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Time/TimerStopwatch.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 68% rename from Time/Time.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Time/TimerStopwatch.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 85e10aa..9a3d330 100644 --- a/Time/Time.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/Time/TimerStopwatch.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:TimerStopwatch.xcodeproj"> diff --git a/Time/Time/AppDelegate.h b/Time/TimerStopwatch/AppDelegate.h similarity index 58% rename from Time/Time/AppDelegate.h rename to Time/TimerStopwatch/AppDelegate.h index c5a324b..41bdbf2 100644 --- a/Time/Time/AppDelegate.h +++ b/Time/TimerStopwatch/AppDelegate.h @@ -1,9 +1,9 @@ // // AppDelegate.h -// Time +// TimerStopwatch // -// Created by Michael Kavouras on 8/20/15. -// Copyright (c) 2015 Mike Kavouras. All rights reserved. +// Created by Charles Kang on 8/22/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. // #import diff --git a/Time/Time/AppDelegate.m b/Time/TimerStopwatch/AppDelegate.m similarity index 94% rename from Time/Time/AppDelegate.m rename to Time/TimerStopwatch/AppDelegate.m index d59e7a8..2116b59 100644 --- a/Time/Time/AppDelegate.m +++ b/Time/TimerStopwatch/AppDelegate.m @@ -1,9 +1,9 @@ // // AppDelegate.m -// Time +// TimerStopwatch // -// Created by Michael Kavouras on 8/20/15. -// Copyright (c) 2015 Mike Kavouras. All rights reserved. +// Created by Charles Kang on 8/22/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. // #import "AppDelegate.h" diff --git a/Time/Time/Base.lproj/LaunchScreen.xib b/Time/TimerStopwatch/Base.lproj/LaunchScreen.xib similarity index 81% rename from Time/Time/Base.lproj/LaunchScreen.xib rename to Time/TimerStopwatch/Base.lproj/LaunchScreen.xib index f9a54ff..757c207 100644 --- a/Time/Time/Base.lproj/LaunchScreen.xib +++ b/Time/TimerStopwatch/Base.lproj/LaunchScreen.xib @@ -1,7 +1,7 @@ - + - + @@ -11,16 +11,16 @@ - diff --git a/Time/TimerStopwatch/EventsCountdownViewController.h b/Time/TimerStopwatch/EventsCountdownViewController.h new file mode 100644 index 0000000..ed98d89 --- /dev/null +++ b/Time/TimerStopwatch/EventsCountdownViewController.h @@ -0,0 +1,18 @@ +// +// EventsCountdownViewController.h +// TimerStopwatch +// +// Created by Charles Kang on 8/27/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. +// + +#import + +@interface EventsCountdownViewController : UIViewController +@property (strong, nonatomic) IBOutlet UIButton *birthdayStartButton; +@property (strong, nonatomic) IBOutlet UIButton *christmasStartButton; +@property (strong, nonatomic) IBOutlet UIButton *ACStartButton; + +@property (strong, nonatomic) IBOutlet UIButton *stopBirthdayLabelButton; + +@end diff --git a/Time/TimerStopwatch/EventsCountdownViewController.m b/Time/TimerStopwatch/EventsCountdownViewController.m new file mode 100644 index 0000000..d1b68c8 --- /dev/null +++ b/Time/TimerStopwatch/EventsCountdownViewController.m @@ -0,0 +1,160 @@ +// +// EventsCountdownViewController.m +// TimerStopwatch +// +// Created by Charles Kang on 8/27/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. +// + +#import "EventsCountdownViewController.h" +#import "TimerViewController.h" + +@interface EventsCountdownViewController () + +@property (strong, nonatomic) IBOutlet UIDatePicker *datePicker; + +@property (strong, nonatomic) IBOutlet UILabel *birthdayCountdownLabel; +@property (strong, nonatomic) IBOutlet UILabel *christmasCountdownLabel; +@property (strong, nonatomic) IBOutlet UILabel *accessCodeCountdownLabel; + +@property (nonatomic) NSDate *birthday; +@property (nonatomic) NSDate *christmas; +@property (nonatomic) NSDate *accessCode; + +@end + +@implementation EventsCountdownViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + + [self.birthdayCountdownLabel setHidden:YES]; + [self.christmasCountdownLabel setHidden:YES]; + [self.accessCodeCountdownLabel setHidden:YES]; + + [self.stopBirthdayLabelButton setHidden:YES]; + + self.birthdayStartButton.layer.borderWidth = 2.0; + self.birthdayStartButton.layer.cornerRadius = 11.0; + self.birthdayStartButton.layer.borderColor = [UIColor colorWithRed:32/255.0 green:44/255.0 blue:49/255.0 alpha: 1].CGColor; + [self.birthdayStartButton setClipsToBounds:YES]; + + self.christmasStartButton.layer.borderWidth = 2.0; + self.christmasStartButton.layer.cornerRadius = 11.0; + self.christmasStartButton.layer.borderColor = [UIColor colorWithRed:32/255.0 green:44/255.0 blue:49/255.0 alpha: 1].CGColor;[self.christmasStartButton setClipsToBounds:YES]; + + self.ACStartButton.layer.borderWidth = 2.0; + self.ACStartButton.layer.cornerRadius = 11.0; + self.ACStartButton.layer.borderColor = [UIColor colorWithRed:32/255.0 green:44/255.0 blue:49/255.0 alpha: 1].CGColor; + [self.ACStartButton setClipsToBounds:YES]; +} + +- (IBAction)startBirthdayCountdown:(id)sender { + + [self.birthdayCountdownLabel setHidden:NO]; + [self.birthdayStartButton setHidden:YES]; + [self.stopBirthdayLabelButton setHidden:NO]; + + NSDateFormatter *birthdayFormatter = [[NSDateFormatter alloc] init]; + [birthdayFormatter setDateFormat:@"yyy-MM-dd"]; + self.birthday = [birthdayFormatter dateFromString:@"2016-02-21"]; + [birthdayFormatter setDateStyle:NSDateFormatterLongStyle]; + [birthdayFormatter setTimeStyle:NSDateFormatterLongStyle]; + + [self.datePicker setDate:self.birthday animated:NO]; + + NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar]; + NSUInteger preservedComponents = (NSCalendarUnitYear | NSCalendarUnitDay | NSCalendarUnitDay); + self.datePicker.date = self.birthday; + [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateBirthdayTime) userInfo:nil repeats:YES]; +} + +- (IBAction)startChristmasCountdown:(id)sender { + + [self.christmasCountdownLabel setHidden:NO]; + [self.christmasStartButton setHidden:YES]; + + NSDateFormatter *christmasFormatter = [[NSDateFormatter alloc] init]; + [christmasFormatter setDateFormat:@"yyy-MM-dd"]; + self.christmas = [christmasFormatter dateFromString:@"2015-12-25"]; + [christmasFormatter setDateStyle:NSDateFormatterLongStyle]; + [christmasFormatter setTimeStyle:NSDateFormatterLongStyle]; + + [self.datePicker setDate:self.christmas animated:NO]; + + NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar]; + NSUInteger preservedComponents = (NSCalendarUnitYear | NSCalendarUnitDay | NSCalendarUnitDay); + self.datePicker.date = self.christmas; + [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateChristmasTime) userInfo:nil repeats:YES]; +} + +- (IBAction)startACCountdown:(id)sender { + + [self.accessCodeCountdownLabel setHidden:NO]; + [self.ACStartButton setHidden:YES]; + + NSDateFormatter *accessCodeFormatter = [[NSDateFormatter alloc] init]; + [accessCodeFormatter setDateFormat:@"yyy-MM-dd"]; + self.accessCode = [accessCodeFormatter dateFromString:@"2016-02-28"]; + [accessCodeFormatter setDateStyle:NSDateFormatterLongStyle]; + [accessCodeFormatter setTimeStyle:NSDateFormatterLongStyle]; + + [self.datePicker setDate:self.accessCode animated:NO]; + + NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar]; + NSUInteger preservedComponents = (NSCalendarUnitYear | NSCalendarUnitDay | NSCalendarUnitDay); + self.datePicker.date = self.accessCode; + [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateAccessCodeTime) userInfo:nil repeats:YES]; +} + +-(void)updateBirthdayTime + +{ + NSInteger time = ((NSInteger)[self.birthday timeIntervalSinceNow]); + NSInteger seconds = time % 60; + NSInteger minutes = (time / 60) % 60; + NSInteger hours = (time / 3600) % 24; + NSInteger days = (time / 86400); + + NSLog(@"%ld", (long)time); + NSLog(@"%ld, %ld, %ld, %ld", days, hours, minutes, seconds); + NSString *timeDisplay = [[NSString alloc] initWithFormat:@"%02ldd: %02ldh: %02ldm: %02lds", (long)days, (long)hours, (long)minutes, (long) seconds]; + + self.birthdayCountdownLabel.text = timeDisplay; +} + +-(void)updateChristmasTime + +{ + NSInteger time = ((NSInteger)[self.christmas timeIntervalSinceNow]); + NSInteger seconds = time % 60; + NSInteger minutes = (time / 60) % 60; + NSInteger hours = (time / 3600) % 24; + NSInteger days = (time / 86400); + + NSLog(@"%ld", (long)time); + NSLog(@"%ld, %ld, %ld, %ld", days, hours, minutes, seconds); + NSString *timeDisplay = [[NSString alloc] initWithFormat:@"%02ldd: %02ldh: %02ldm: %02lds", (long)days, (long)hours, (long)minutes, (long) seconds]; + + self.christmasCountdownLabel.text = timeDisplay; +} + +-(void)updateAccessCodeTime + +{ + NSInteger time = ((NSInteger)[self.accessCode timeIntervalSinceNow]); + NSInteger seconds = time % 60; + NSInteger minutes = (time / 60) % 60; + NSInteger hours = (time / 3600) % 24; + NSInteger days = (time / 86400); + + NSLog(@"%ld", (long)time); + NSLog(@"%ld, %ld, %ld, %ld", days, hours, minutes, seconds); + NSString *timeDisplay = [[NSString alloc] initWithFormat:@"%02ldd: %02ldh: %02ldm: %02lds", (long)days, (long)hours, (long)minutes, (long) seconds]; + + self.accessCodeCountdownLabel.text = timeDisplay; +} +- (IBAction)stopBirthdayLabel:(id)sender { +} + +@end diff --git a/Time/TimerStopwatch/Gravity-Book.ttf b/Time/TimerStopwatch/Gravity-Book.ttf new file mode 100755 index 0000000..3572964 Binary files /dev/null and b/Time/TimerStopwatch/Gravity-Book.ttf differ diff --git a/Time/TimerStopwatch/Gravity-Light.ttf b/Time/TimerStopwatch/Gravity-Light.ttf new file mode 100755 index 0000000..9883bbc Binary files /dev/null and b/Time/TimerStopwatch/Gravity-Light.ttf differ diff --git a/Time/TimerStopwatch/HYPE.ttf b/Time/TimerStopwatch/HYPE.ttf new file mode 100755 index 0000000..09c7883 Binary files /dev/null and b/Time/TimerStopwatch/HYPE.ttf differ diff --git a/Time/Time/Images.xcassets/AppIcon.appiconset/Contents.json b/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 87% rename from Time/Time/Images.xcassets/AppIcon.appiconset/Contents.json rename to Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Contents.json index 36d2c80..3298b37 100644 --- a/Time/Time/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Contents.json @@ -11,23 +11,27 @@ "scale" : "3x" }, { - "idiom" : "iphone", "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-40@2x.png", "scale" : "2x" }, { - "idiom" : "iphone", "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-40@3x.png", "scale" : "3x" }, { - "idiom" : "iphone", "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-Small@2x.png", "scale" : "2x" }, { - "idiom" : "iphone", "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-60@3x.png", "scale" : "3x" }, { diff --git a/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png b/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png new file mode 100644 index 0000000..c8b441f Binary files /dev/null and b/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png differ diff --git a/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png b/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png new file mode 100644 index 0000000..442203b Binary files /dev/null and b/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png differ diff --git a/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png b/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png new file mode 100644 index 0000000..217361d Binary files /dev/null and b/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png differ diff --git a/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png b/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png new file mode 100644 index 0000000..7dc6a83 Binary files /dev/null and b/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png differ diff --git a/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png b/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png new file mode 100644 index 0000000..12294ba Binary files /dev/null and b/Time/TimerStopwatch/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png differ diff --git a/Time/TimerStopwatch/Images.xcassets/Contents.json b/Time/TimerStopwatch/Images.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/Time/TimerStopwatch/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Time/TimerStopwatch/Images.xcassets/Image.imageset/Contents.json b/Time/TimerStopwatch/Images.xcassets/Image.imageset/Contents.json new file mode 100644 index 0000000..d8ff869 --- /dev/null +++ b/Time/TimerStopwatch/Images.xcassets/Image.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Image.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Time/TimerStopwatch/Images.xcassets/Image.imageset/Image.png b/Time/TimerStopwatch/Images.xcassets/Image.imageset/Image.png new file mode 100644 index 0000000..70af049 Binary files /dev/null and b/Time/TimerStopwatch/Images.xcassets/Image.imageset/Image.png differ diff --git a/Time/TimerStopwatch/Images.xcassets/clock-alarm-7.imageset/Contents.json b/Time/TimerStopwatch/Images.xcassets/clock-alarm-7.imageset/Contents.json new file mode 100644 index 0000000..8085444 --- /dev/null +++ b/Time/TimerStopwatch/Images.xcassets/clock-alarm-7.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "clock-alarm-7.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Time/TimerStopwatch/Images.xcassets/clock-alarm-7.imageset/clock-alarm-7.png b/Time/TimerStopwatch/Images.xcassets/clock-alarm-7.imageset/clock-alarm-7.png new file mode 100644 index 0000000..86ba1f7 Binary files /dev/null and b/Time/TimerStopwatch/Images.xcassets/clock-alarm-7.imageset/clock-alarm-7.png differ diff --git a/Time/TimerStopwatch/Images.xcassets/clock-stopwatch-7.imageset/Contents.json b/Time/TimerStopwatch/Images.xcassets/clock-stopwatch-7.imageset/Contents.json new file mode 100644 index 0000000..96ca77c --- /dev/null +++ b/Time/TimerStopwatch/Images.xcassets/clock-stopwatch-7.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "clock-stopwatch-7.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Time/TimerStopwatch/Images.xcassets/clock-stopwatch-7.imageset/clock-stopwatch-7.png b/Time/TimerStopwatch/Images.xcassets/clock-stopwatch-7.imageset/clock-stopwatch-7.png new file mode 100644 index 0000000..409e119 Binary files /dev/null and b/Time/TimerStopwatch/Images.xcassets/clock-stopwatch-7.imageset/clock-stopwatch-7.png differ diff --git a/Time/TimerStopwatch/Images.xcassets/crown-7.imageset/Contents.json b/Time/TimerStopwatch/Images.xcassets/crown-7.imageset/Contents.json new file mode 100644 index 0000000..f780ace --- /dev/null +++ b/Time/TimerStopwatch/Images.xcassets/crown-7.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "crown-7.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Time/TimerStopwatch/Images.xcassets/crown-7.imageset/crown-7.png b/Time/TimerStopwatch/Images.xcassets/crown-7.imageset/crown-7.png new file mode 100644 index 0000000..6a63586 Binary files /dev/null and b/Time/TimerStopwatch/Images.xcassets/crown-7.imageset/crown-7.png differ diff --git a/Time/TimerStopwatch/Images.xcassets/green-circle.imageset/Contents.json b/Time/TimerStopwatch/Images.xcassets/green-circle.imageset/Contents.json new file mode 100644 index 0000000..26786f2 --- /dev/null +++ b/Time/TimerStopwatch/Images.xcassets/green-circle.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "green-circle.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Time/TimerStopwatch/Images.xcassets/green-circle.imageset/green-circle.png b/Time/TimerStopwatch/Images.xcassets/green-circle.imageset/green-circle.png new file mode 100644 index 0000000..fa24fe4 Binary files /dev/null and b/Time/TimerStopwatch/Images.xcassets/green-circle.imageset/green-circle.png differ diff --git a/Time/TimerStopwatch/Images.xcassets/list-simple-star-7.imageset/Contents.json b/Time/TimerStopwatch/Images.xcassets/list-simple-star-7.imageset/Contents.json new file mode 100644 index 0000000..ec7215b --- /dev/null +++ b/Time/TimerStopwatch/Images.xcassets/list-simple-star-7.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "list-simple-star-7.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/Time/TimerStopwatch/Images.xcassets/list-simple-star-7.imageset/list-simple-star-7.png b/Time/TimerStopwatch/Images.xcassets/list-simple-star-7.imageset/list-simple-star-7.png new file mode 100644 index 0000000..b77538f Binary files /dev/null and b/Time/TimerStopwatch/Images.xcassets/list-simple-star-7.imageset/list-simple-star-7.png differ diff --git a/Time/TimerStopwatch/Images.xcassets/red-circle.imageset/Contents.json b/Time/TimerStopwatch/Images.xcassets/red-circle.imageset/Contents.json new file mode 100644 index 0000000..c341b15 --- /dev/null +++ b/Time/TimerStopwatch/Images.xcassets/red-circle.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "red-circle.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Time/TimerStopwatch/Images.xcassets/red-circle.imageset/red-circle.png b/Time/TimerStopwatch/Images.xcassets/red-circle.imageset/red-circle.png new file mode 100644 index 0000000..ec9a0fa Binary files /dev/null and b/Time/TimerStopwatch/Images.xcassets/red-circle.imageset/red-circle.png differ diff --git a/Time/Time/Info.plist b/Time/TimerStopwatch/Info.plist similarity index 95% rename from Time/Time/Info.plist rename to Time/TimerStopwatch/Info.plist index 62e151f..40c6215 100644 --- a/Time/Time/Info.plist +++ b/Time/TimerStopwatch/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/TimerStopwatch/LANENAR_.ttf b/Time/TimerStopwatch/LANENAR_.ttf new file mode 100755 index 0000000..66c4963 Binary files /dev/null and b/Time/TimerStopwatch/LANENAR_.ttf differ diff --git a/Time/TimerStopwatch/LANEUP__.ttf b/Time/TimerStopwatch/LANEUP__.ttf new file mode 100755 index 0000000..3018b56 Binary files /dev/null and b/Time/TimerStopwatch/LANEUP__.ttf differ diff --git a/Time/TimerStopwatch/Main.storyboard b/Time/TimerStopwatch/Main.storyboard new file mode 100644 index 0000000..9627a4d --- /dev/null +++ b/Time/TimerStopwatch/Main.storyboard @@ -0,0 +1,887 @@ + + + + + + + + + + Gravity-Book + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Time/TimerStopwatch/NewPresetsViewController.h b/Time/TimerStopwatch/NewPresetsViewController.h new file mode 100644 index 0000000..95c4874 --- /dev/null +++ b/Time/TimerStopwatch/NewPresetsViewController.h @@ -0,0 +1,14 @@ +// +// NewPresetsViewController.h +// TimerStopwatch +// +// Created by Charles Kang on 8/26/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. +// + +#import +#import "NewPresetsViewControllerDelegate.h" + +@interface NewPresetsViewController : UIViewController +@property (nonatomic) id delegate; +@end diff --git a/Time/TimerStopwatch/NewPresetsViewController.m b/Time/TimerStopwatch/NewPresetsViewController.m new file mode 100644 index 0000000..a9af0d9 --- /dev/null +++ b/Time/TimerStopwatch/NewPresetsViewController.m @@ -0,0 +1,14 @@ +// +// NewPresetsViewController.m +// TimerStopwatch +// +// Created by Charles Kang on 8/26/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. +// + +#import "NewPresetsViewController.h" +#import + +@implementation NewPresetsViewController + +@end diff --git a/Time/TimerStopwatch/NewPresetsViewControllerDelegate.h b/Time/TimerStopwatch/NewPresetsViewControllerDelegate.h new file mode 100644 index 0000000..9ef0c75 --- /dev/null +++ b/Time/TimerStopwatch/NewPresetsViewControllerDelegate.h @@ -0,0 +1,13 @@ +// +// NewPresetsViewControllerDelegate.h +// TimerStopwatch +// +// Created by Charles Kang on 8/26/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. +// + +#import + +@protocol NewPresetsViewControllerDelegate +- (void)createPreset:(NSArray *)countdownTime withName:(NSString *)timerName; +@end diff --git a/Time/TimerStopwatch/PresetTimer.h b/Time/TimerStopwatch/PresetTimer.h new file mode 100644 index 0000000..673dcab --- /dev/null +++ b/Time/TimerStopwatch/PresetTimer.h @@ -0,0 +1,20 @@ +// +// PresetTimer.h +// TimerStopwatch +// +// Created by Bereket on 9/2/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. +// + +#import + +@interface PresetTimer : NSObject + +@property (nonatomic) NSString* timerName; +@property (nonatomic) NSTimer* timer; +@property (nonatomic) NSTimeInterval timeInterval; + +@property (nonatomic) NSInteger hours; +@property (nonatomic) NSInteger minutes; +@property (nonatomic) NSInteger seconds; +@end diff --git a/Time/TimerStopwatch/PresetTimer.m b/Time/TimerStopwatch/PresetTimer.m new file mode 100644 index 0000000..c44eb04 --- /dev/null +++ b/Time/TimerStopwatch/PresetTimer.m @@ -0,0 +1,15 @@ +// +// PresetTimer.m +// TimerStopwatch +// +// Created by Bereket on 9/2/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. +// + +#import "PresetTimer.h" + +@implementation PresetTimer + + + +@end diff --git a/Time/TimerStopwatch/PresetTimersSingleton.h b/Time/TimerStopwatch/PresetTimersSingleton.h new file mode 100644 index 0000000..88524be --- /dev/null +++ b/Time/TimerStopwatch/PresetTimersSingleton.h @@ -0,0 +1,17 @@ +// +// PresetTimersSingleton.h +// TimerStopwatch +// +// Created by Bereket on 9/2/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. +// + +#import + +@interface PresetTimersSingleton : NSObject + +@property (nonatomic) NSMutableArray *presetTimersArray; + ++ (instancetype)sharedInstance; + +@end diff --git a/Time/TimerStopwatch/PresetTimersSingleton.m b/Time/TimerStopwatch/PresetTimersSingleton.m new file mode 100644 index 0000000..cce59a8 --- /dev/null +++ b/Time/TimerStopwatch/PresetTimersSingleton.m @@ -0,0 +1,32 @@ +// +// PresetTimersSingleton.m +// TimerStopwatch +// +// Created by Bereket on 9/2/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. +// + +#import "PresetTimersSingleton.h" + +@implementation PresetTimersSingleton + ++ (instancetype)sharedInstance { + static PresetTimersSingleton *sharedInstance = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + sharedInstance = [[PresetTimersSingleton alloc] init]; + // Do any other initialisation stuff here + }); + return sharedInstance; +} + +- (instancetype)init { + self = [super init]; + if (self) { + _presetTimersArray = [NSMutableArray new]; + } + return self; +} + + +@end diff --git a/Time/TimerStopwatch/PresetTimersTableViewController.h b/Time/TimerStopwatch/PresetTimersTableViewController.h new file mode 100644 index 0000000..0eae236 --- /dev/null +++ b/Time/TimerStopwatch/PresetTimersTableViewController.h @@ -0,0 +1,16 @@ +//// +//// PresetTimersTableViewController.h +//// PresetTimerPracticeProject +//// +//// Created by Bereket on 8/29/15. +//// Copyright (c) 2015 Bereket . All rights reserved. +//// + +#import + +@interface PresetTimersTableViewController : UITableViewController + +@property NSString* transferredTimeString; + +@property NSMutableArray* arrayOfTimes; +@end diff --git a/Time/TimerStopwatch/PresetTimersTableViewController.m b/Time/TimerStopwatch/PresetTimersTableViewController.m new file mode 100644 index 0000000..d48c6be --- /dev/null +++ b/Time/TimerStopwatch/PresetTimersTableViewController.m @@ -0,0 +1,142 @@ +//// +//// PresetTimersTableViewController.m +//// PresetTimerPracticeProject +//// +//// Created by Bereket on 8/29/15. +//// Copyright (c) 2015 Bereket . All rights reserved. +//// + +#import "PresetTimersTableViewController.h" +#import "ViewController.h" +#import "PresetTimersSingleton.h" +#import "PresetTimer.h" +#import "TimerDetailViewController.h" + + +@interface PresetTimersTableViewController () + +@end + +@implementation PresetTimersTableViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + + + [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"ListOfTimersIdentifier"]; + + + + // 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)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +//#pragma mark - Table view data source + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + + // Return the number of sections. + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + + // Return the number of rows in the section. + NSMutableArray *array = [[PresetTimersSingleton sharedInstance] presetTimersArray]; + return array.count; +} + + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ListOfTimersIdentifier" forIndexPath:indexPath]; + + PresetTimer *currentTimer = [[[PresetTimersSingleton sharedInstance] presetTimersArray]objectAtIndex:indexPath.row]; + NSString *timerName = currentTimer.timerName; + + cell.textLabel.text=timerName; + // Configure the cell... + + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + + PresetTimer *timer = [[[PresetTimersSingleton sharedInstance] presetTimersArray] objectAtIndex:indexPath.row]; + + UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; + TimerDetailViewController *timerDetailVC = (TimerDetailViewController *)[sb instantiateViewControllerWithIdentifier:@"timerDetailViewControllerID"]; + timerDetailVC.presetTimer = timer; + [self.navigationController pushViewController:timerDetailVC animated:YES]; +} + +//- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { +// if ([segue.identifier isEqualToString:@"showDetailIdentifier"]) { +// +// NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; +// PresetTimer *timer = [[[PresetTimersSingleton sharedInstance] presetTimersArray] objectAtIndex:indexPath.row]; +// +// TimerDetailViewController *timerDetailVC = (TimerDetailViewController *)segue.destinationViewController; +// timerDetailVC.timer = timer; +// } +//} + + +///* +// // Override to support conditional editing of the table view. +// - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { +// // Return NO if you do not want the specified item to be editable. +// return YES; +// } +// */ +// +///* +// // Override to support editing the table view. +// - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { +// if (editingStyle == UITableViewCellEditingStyleDelete) { +// // Delete the row from the data source +// [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; +// } else if (editingStyle == UITableViewCellEditingStyleInsert) { +// // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view +// } +// } +// */ +// +///* +// // Override to support rearranging the table view. +// - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { +// } +// */ +// +///* +// // Override to support conditional rearranging of the table view. +// - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { +// // Return NO if you do not want the item to be re-orderable. +// return YES; +// } +// */ +// +// +//#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/Time/TimerStopwatch/PresetsTableViewController.h b/Time/TimerStopwatch/PresetsTableViewController.h new file mode 100644 index 0000000..8145db8 --- /dev/null +++ b/Time/TimerStopwatch/PresetsTableViewController.h @@ -0,0 +1,15 @@ +// +// PresetsTableViewController.h +// TimerStopwatch +// +// Created by Charles Kang on 8/26/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. +// + +#import +#import "NewPresetsViewControllerDelegate.h" +#import "PresetsTableViewControllerDelegate.h" + +@interface PresetsTableViewController : UITableViewController +@property (nonatomic) id delegate; +@end \ No newline at end of file diff --git a/Time/TimerStopwatch/PresetsTableViewController.m b/Time/TimerStopwatch/PresetsTableViewController.m new file mode 100644 index 0000000..7f8d455 --- /dev/null +++ b/Time/TimerStopwatch/PresetsTableViewController.m @@ -0,0 +1,119 @@ +// +// PresetsTableViewController.m +// TimerStopwatch +// +// Created by Charles Kang on 8/26/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. +// + +#import "PresetsTableViewController.h" + +@interface PresetsTableViewController () + +@end + +@implementation PresetsTableViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.navigationItem.title = @"Timer"; + + UIBarButtonItem *countdownTimeButton=[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(btnClick)]; + self.navigationItem.leftBarButtonItem=countdownTimeButton; +} + + +// this will be for you bereket, not sure if it works though + +//- (IBAction)addPresetTimer:(id)sender { +// self.navigationItem.rightBarButtonItem.title = @"Add"; +// UIViewController *PresetsTableViewController = [[UIViewController alloc] init]; +// [self.navigationController pushViewController:PresetsTableViewController animated:YES]; +//} + +//- (void)addBackButtonWithTitle:(NSString *)title +//{ +// UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"back" style:UIBarButtonItemStylePlain target:self action:@selector(backButtonPressed)]; +// self.navigationItem.leftBarButtonItem = backButton; +//} + +-(void)btnClick +{ + [self dismissViewControllerAnimated:YES completion:nil]; + NSLog(@"testing"); +} + +//- (void)backButtonPressed +//{ +// // write your code to prepare popview +// [self.navigationController popViewControllerAnimated:YES]; +//} + + +#pragma mark - Table view data source + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + // Return the number of sections. + return 0; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + // Return the number of rows in the section. + return 0; +} + +/* + - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:<#@"reuseIdentifier"#> forIndexPath:indexPath]; + + // Configure the cell... + + return cell; + } + */ + +/* + // Override to support conditional editing of the table view. + - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { + // Return NO if you do not want the specified item to be editable. + return YES; + } + */ + +/* + // Override to support editing the table view. + - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + if (editingStyle == UITableViewCellEditingStyleDelete) { + // Delete the row from the data source + [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; + } else if (editingStyle == UITableViewCellEditingStyleInsert) { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } + } + */ + +/* + // Override to support rearranging the table view. + - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { + } + */ + +/* + // Override to support conditional rearranging of the table view. + - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { + // Return NO if you do not want the item to be re-orderable. + return YES; + } + */ + +/* + #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/Time/TimerStopwatch/PresetsTableViewControllerDelegate.h b/Time/TimerStopwatch/PresetsTableViewControllerDelegate.h new file mode 100644 index 0000000..ef1fc77 --- /dev/null +++ b/Time/TimerStopwatch/PresetsTableViewControllerDelegate.h @@ -0,0 +1,14 @@ +// +// PresetsTableViewControllerDelegate.h +// TimerStopwatch +// +// Created by Charles Kang on 8/26/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. +// + + +#import + +@protocol PresetsTableViewControllerDelegate +- (void)presetTime:(NSArray *)presetTime; +@end diff --git a/Time/TimerStopwatch/StopWatchViewController.h b/Time/TimerStopwatch/StopWatchViewController.h new file mode 100644 index 0000000..56f435f --- /dev/null +++ b/Time/TimerStopwatch/StopWatchViewController.h @@ -0,0 +1,42 @@ + + + + + + + +#import + + +@interface StopWatchViewController : UIViewController { + +} + +//--------------------------------------------------------------------------------- +@property (strong, nonatomic) IBOutlet UIButton *startTime; + +@property (strong, nonatomic) IBOutlet UIButton *pauseTime; +@property (strong, nonatomic) IBOutlet UIButton *resetTime; + +@property (strong, nonatomic) IBOutlet UIButton *addLapToTableView; + +//--------------------------------------------------------------------------------- + +@property (nonatomic) NSTimer* timer; +@property (nonatomic) NSDate* beginTime; + + +@property (nonatomic) NSTimeInterval totalSessonTime; //records the time between each "Start and "Pause." +@property (nonatomic) NSTimeInterval totalTime; //adds the total time between all session times. + + + +//---------------------------------------------------------------------------------- + +@property (nonatomic, strong) NSMutableArray* heldLapsForTableView; + +@property (strong, nonatomic) IBOutlet UILabel *timeLabel; + +@property (strong, nonatomic) IBOutlet UITableView *lapsTableView; + +@end \ No newline at end of file diff --git a/Time/TimerStopwatch/StopWatchViewController.m b/Time/TimerStopwatch/StopWatchViewController.m new file mode 100644 index 0000000..76b27b1 --- /dev/null +++ b/Time/TimerStopwatch/StopWatchViewController.m @@ -0,0 +1,102 @@ + + + + + + + +#import "StopWatchViewController.h" + +@interface StopWatchViewController () + +@end + +// bereket this is a comment our code is working + +// bereket what have you done? + +// I DONT KNOW! + +@implementation StopWatchViewController + + +-(void)viewDidLoad{ + [super viewDidLoad]; + self.lapsTableView.delegate = self; + self.lapsTableView.dataSource=self; + self.heldLapsForTableView = [[NSMutableArray alloc] init]; +} + +-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ + + return 1; +} + +-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ + + return self.heldLapsForTableView.count; +} + +-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + + NSString* lapsCell= @"lapsIdentifier"; + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:lapsCell forIndexPath:(indexPath)]; + + cell.textLabel.text = [NSString stringWithFormat:@"%@", self.heldLapsForTableView[indexPath.row]]; + + return cell; +} + + +- (IBAction)buttonTapped:(id)sender { + if (sender == self.startTime){ + self.beginTime = [[NSDate alloc] init]; + + self.timer=[NSTimer timerWithTimeInterval:1/60.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES]; + + //adds timer to run loop + [[NSRunLoop currentRunLoop] addTimer:self.timer forMode: NSRunLoopCommonModes]; + } + else if(sender == self.pauseTime){ + self.totalTime = self.totalTime + self.totalSessonTime; + [self.timer invalidate]; + } + else if(sender == self.resetTime){ + [self.timer invalidate]; + self.beginTime= [[NSDate alloc] init]; + self.totalTime=00.00; + self.timeLabel.text= @"00.00"; + + [self.heldLapsForTableView removeAllObjects]; + [self.lapsTableView reloadData]; + + } + + else if (sender == self.addLapToTableView){ + + [self.heldLapsForTableView addObject:self.timeLabel.text]; + + + [self.lapsTableView reloadData]; + + NSLog(@"added lap"); + } +} +- (void)timerFired:(NSTimer*)timer { + + NSDate *now = [[NSDate alloc] init]; + + self.totalSessonTime = [now timeIntervalSinceDate:self.beginTime]; + NSTimeInterval distance = self.totalTime + self.totalSessonTime; + + self.timeLabel.text = [NSString stringWithFormat:@"%0.2f", distance]; + NSLog(@"%f", distance); + + } + + - (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. + } + +@end \ No newline at end of file diff --git a/Time/TimerStopwatch/TimerDetailViewController.h b/Time/TimerStopwatch/TimerDetailViewController.h new file mode 100644 index 0000000..3fa5b00 --- /dev/null +++ b/Time/TimerStopwatch/TimerDetailViewController.h @@ -0,0 +1,32 @@ +// +// TimerDetailViewController.h +// TimerStopwatch +// +// Created by Bereket on 9/2/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. +// + +#import +#import "PresetTimer.h" +#import "PresetTimersSingleton.h" +@interface TimerDetailViewController : UIViewController + + + +@property (strong, nonatomic) IBOutlet UILabel *detailTimeLabel; + +@property (strong, nonatomic) IBOutlet UIButton *startDetailTime; + +@property (strong, nonatomic) IBOutlet UIButton *pauseDetailTime; + +@property (nonatomic) PresetTimer* presetTimer; + +@property (nonatomic) NSDate* startNow; + + +@property (nonatomic) NSTimeInterval totalSessonTime; //records the time between each "Start and "Pause." +@property (nonatomic) NSTimeInterval totalTime; //adds the total time between all session times. + + + +@end diff --git a/Time/TimerStopwatch/TimerDetailViewController.m b/Time/TimerStopwatch/TimerDetailViewController.m new file mode 100644 index 0000000..238d584 --- /dev/null +++ b/Time/TimerStopwatch/TimerDetailViewController.m @@ -0,0 +1,96 @@ +// +// TimerDetailViewController.m +// TimerStopwatch +// +// Created by Bereket on 9/2/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. +// + + +#import "PresetTimer.h" +#import "TimerDetailViewController.h" + + + +@interface TimerDetailViewController () + + + + + + +@end + +@implementation TimerDetailViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + + + + + // Do any additional setup after loading the view. + + +// self.presetTimer.timer = [NSTimer ... + +} + + +- (IBAction)buttonTapped:(id)sender { + + if (sender == self.startDetailTime) { + self.startNow = [[NSDate alloc] init]; + self.presetTimer.timer= [NSTimer timerWithTimeInterval:1/1.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES]; + + [[NSRunLoop currentRunLoop] addTimer:self.presetTimer.timer forMode: NSRunLoopCommonModes]; + } + + if (sender == self.pauseDetailTime) { + + self.totalTime = self.totalTime - self.totalSessonTime; + [self.presetTimer.timer invalidate]; + self.presetTimer.timer= nil; + + } + + +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +- (void)timerFired: (NSTimer *)timer { + + NSDate *now = [[NSDate alloc] init]; + + self.totalSessonTime = [now timeIntervalSinceDate:self.startNow]; + self.presetTimer.timeInterval = self.presetTimer.seconds -1; + self.presetTimer.seconds=self.presetTimer.timeInterval; + + if(self.presetTimer.timeInterval==0){ + [self.presetTimer.timer invalidate]; + self.presetTimer.timer=nil; + } + + int hours = (int)(self.self.presetTimer.timeInterval/(60*60)); + int mins = (int)(((int)self.presetTimer.timeInterval/60) - (hours * 60)); + int secs = (int)(((int)self.presetTimer.timeInterval - (60 *mins) - (60 * hours * 60))); + self.detailTimeLabel.text = [[NSString alloc] initWithFormat:@"%02u:%02u:%02u", hours, mins, secs]; + + // update label +} + +/* +#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/Time/TimerStopwatch/TimerViewController.h b/Time/TimerStopwatch/TimerViewController.h new file mode 100644 index 0000000..ea769f5 --- /dev/null +++ b/Time/TimerStopwatch/TimerViewController.h @@ -0,0 +1,30 @@ +// +// TimerViewController.h +// TimerStopwatch +// +// Created by Charles Kang on 8/22/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. +// + +#import +#import +#import "PresetsTableViewControllerDelegate.h" + + + +@interface TimerViewController : UIViewController + +@property (nonatomic) NSTimer *timer; +@property (strong, nonatomic) IBOutlet UILabel *timerLabel; + +@property (strong, nonatomic) IBOutlet UIButton *startButton; +@property (strong, nonatomic) IBOutlet UIButton *pauseButton; +@property (strong, nonatomic) IBOutlet UIButton *resetButton; + +@property (strong, nonatomic) IBOutlet UIDatePicker *countDownTimer; + +@property (nonatomic) NSTimeInterval totalTime; +@property (nonatomic) NSInteger *secondsLeft; + +@end + diff --git a/Time/TimerStopwatch/TimerViewController.m b/Time/TimerStopwatch/TimerViewController.m new file mode 100644 index 0000000..2236a58 --- /dev/null +++ b/Time/TimerStopwatch/TimerViewController.m @@ -0,0 +1,129 @@ +// +// TimerViewController.m +// TimerStopwatch +// +// Created by Charles Kang on 8/22/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. +// + +#import "TimerViewController.h" +#import "AppDelegate.h" +#import "NewPresetsViewController.h" + +@interface TimerViewController () + +@property (nonatomic) NSTimeInterval countDownInterval; +@property (nonatomic) NSTimeInterval totalSessionTime; +@property (nonatomic) NSDate *startTime; +@property (nonatomic) int countDownDuration; +@property (nonatomic) int afterRemainder; +@property (nonatomic) int remainder; + + + +// FYI, pressing "create preset timer" will cause app to crash +//- (IBAction)createPresetButtonPressed:(id)sender; + +//@property (nonatomic) NSArray *presetTime; + + +@end + +@implementation TimerViewController + +- (IBAction)startTimer:(id)sender { + if(!self.timer){ + self.countDownInterval = (NSTimeInterval)self.countDownTimer.countDownDuration; + self.remainder = self.countDownInterval; + self.afterRemainder = self.countDownInterval - self.remainder%60; + + + + self.timer = [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateCountDown) userInfo:nil repeats:YES]; + + self.afterRemainder++; + [self updateCountDown]; + [self.countDownTimer setHidden:YES]; + + [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes]; + + self.startTime = [[NSDate alloc] init]; + } +} + +// pressing start after pausing will cause it to start over from the original time selected +- (IBAction)pauseTimer:(id)sender { + [self.timer invalidate]; + self.timer = nil; +} + +- (IBAction)resetTimer:(id)sender { + if (sender == self.resetButton) { + self.timerLabel.text = @"0:00:00"; + [self.timer invalidate]; + [self.countDownTimer setHidden:NO]; + } +} + +- (void) updateCountDown { + self.afterRemainder --; + + int hours = (int)(self.afterRemainder/(60*60)); + int mins = (int)(((int)self.afterRemainder/60) - (hours * 60)); + int secs = (int)(((int)self.afterRemainder - (60 *mins) - (60 * hours * 60))); + NSString *timeDisplay = [[NSString alloc] initWithFormat:@"%02u:%02u:%02u", hours, mins, secs]; + + self.timerLabel.text = timeDisplay; +} + +- (void)timerFired:(NSTimer *)timer { + + NSDate *now = [[NSDate alloc] init]; + + self.totalSessionTime = [now timeIntervalSinceDate:self.startTime]; + NSTimeInterval distance = self.totalTime + self.totalSessionTime; + + self.timerLabel.text = [NSString stringWithFormat:@"%0.2f", distance]; + NSLog(@"%f", distance); +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + + self.countDownTimer.datePickerMode = UIDatePickerModeCountDownTimer; + self.countDownTimer.countDownDuration = 60; + self.navigationItem.title = @"Timer"; + + self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(presetTimerButtonTapped:)]; + + self.startButton.layer.borderWidth = 3.0; + self.startButton.layer.borderColor = [UIColor lightGrayColor].CGColor; + self.startButton.layer.cornerRadius = self.startButton.bounds.size.width/2; + self.startButton.layer.borderColor = [UIColor colorWithRed:47/255.0 green:68/255.0 blue:80/255.0 alpha: 1].CGColor; + + [self.startButton setClipsToBounds:YES]; + + self.pauseButton.layer.borderWidth = 3.0; + self.pauseButton.layer.borderColor = [UIColor lightGrayColor].CGColor; + self.pauseButton.layer.cornerRadius = self.pauseButton.bounds.size.width/2; + self.pauseButton.layer.borderColor = [UIColor colorWithRed:47/255.0 green:68/255.0 blue:80/255.0 alpha: 1].CGColor; + [self.pauseButton setClipsToBounds:YES]; + + self.resetButton.layer.borderWidth = 3.0; + self.resetButton.layer.borderColor = [UIColor lightGrayColor].CGColor; + self.resetButton.layer.cornerRadius = self.resetButton.bounds.size.width/2; + self.resetButton.layer.borderColor = [UIColor colorWithRed:47/255.0 green:68/255.0 blue:80/255.0 alpha: 1].CGColor; + [self.resetButton setClipsToBounds:YES]; + +} + +- (void)presetTimerButtonTapped:(UIBarButtonItem *)button { + NSLog(@"charles"); + + UINavigationController *navigationController = [self.storyboard instantiateViewControllerWithIdentifier:@"newPresetController"]; + [self presentViewController:navigationController animated:YES completion:nil]; + +} + +@end diff --git a/Time/TimerStopwatch/ViewController.h b/Time/TimerStopwatch/ViewController.h new file mode 100644 index 0000000..f2b5a1e --- /dev/null +++ b/Time/TimerStopwatch/ViewController.h @@ -0,0 +1,37 @@ +//// +//// ViewController.h +//// PresetTimerPracticeProject +//// +//// Created by Bereket on 8/29/15. +//// Copyright (c) 2015 Bereket . All rights reserved. +// + +#import +#import "PresetTimer.h" + +@interface ViewController : UIViewController + +@property (strong, nonatomic) IBOutlet UIButton *timeTableButton; + +@property (strong, nonatomic) IBOutlet UIDatePicker *datePicker; + +@property (strong, nonatomic) IBOutlet UITextField *textField; + +@property (strong, nonatomic) IBOutlet UIButton *setButton; + +// +// +//@property (strong, nonatomic) IBOutlet UIPickerView *timerPickerView; +//@property (strong, nonatomic) IBOutlet NSLayoutConstraint *timeLabel; +// +//@property (nonatomic, strong) NSMutableArray* myStoredTimeFromPickerView; +// +//@property (nonatomic,strong) NSArray* pickerViewArrayHours; +//@property (nonatomic,strong) NSMutableArray* minAndSecArray; +// +//@property (strong, nonatomic) IBOutlet UIButton *setTimeButton; +//@property (nonatomic) NSString* timeString; +// +//@property (nonatomic) NSMutableArray* arrayForTimes; +@end +// diff --git a/Time/TimerStopwatch/ViewController.m b/Time/TimerStopwatch/ViewController.m new file mode 100644 index 0000000..55681eb --- /dev/null +++ b/Time/TimerStopwatch/ViewController.m @@ -0,0 +1,337 @@ + +// ViewController.m +// PresetTimerPracticeProject +// +// Created by Bereket on 8/29/15. +// Copyright (c) 2015 Bereket . All rights reserved. +// + +#import "ViewController.h" +#import "PresetTimersTableViewController.h" +#import "PresetTimersSingleton.h" + +@interface ViewController () + +@end + +@implementation ViewController + + +- (IBAction)setActivityAndTime:(id)sender { + + PresetTimer* myTimer= [[PresetTimer alloc] init]; + myTimer.timerName=self.textField.text; + myTimer.timeInterval= self.datePicker.countDownDuration; + NSInteger hours = (myTimer.timeInterval/3600); + NSInteger minutes = (myTimer.timeInterval - (hours*3600))/60; + NSInteger seconds = minutes*60; + + myTimer.hours = hours; + myTimer.minutes = minutes; + myTimer.seconds = seconds; + + NSLog(@"Hours:%ld and Minutes: %ld",(long)hours, (long)minutes); + + + [[PresetTimersSingleton sharedInstance].presetTimersArray addObject:myTimer]; + + NSLog(@"%f", self.datePicker.countDownDuration); +} + + +// +// +// +// +- (void)viewDidLoad { + [super viewDidLoad]; + + [self.timeTableButton addTarget:self action:@selector(pushPresetTimersViewController:) forControlEvents:UIControlEventTouchUpInside]; + +// self.arrayForTimes= [[NSMutableArray alloc] init]; +// +// // Do any additional setup after loading the view, typically from a nib. +// +// self.timerPickerView.delegate=self; +// self.timerPickerView.dataSource=self; +// self.pickerViewArrayHours= @[@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17",@"18",@"19",@"20",@"21",@"22",@"23",@"24"]; +// +// self.minAndSecArray= [NSMutableArray arrayWithCapacity:60]; +// +// for(int counter= 0; counter<=60; counter++){ +// +// self.minAndSecArray[counter] = [NSString stringWithFormat:@"%d",counter]; +// +// +// } +// +// +// self.myStoredTimeFromPickerView= [[NSMutableArray alloc] initWithObjects:@00,@00,@00, nil]; +} +// +////returns the number of pickers +//-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ +// return 3; +//} +// +// +////return the number of picker rows in each picker +//-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ +// +// if (component == 0) { +// return self.pickerViewArrayHours.count; +// } +// else if(component == 1) { +// return 60; +// } +// else if(component == 2){ +// return 60; +// } +// +// else { +// NSLog(@"WTH? :/ "); +// return 0; +// } +// +// +// +// +//} +// +//-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ +// if (component==0){ +// +// return self.pickerViewArrayHours[row]; +// } +// else{ +// +// return self.minAndSecArray[row]; +// } +//} +// +// +//- (IBAction)storeTimeFromPickerInAnArray:(id)sender { +// +// +// +// +// +// +// +// NSInteger selectedHourComponent = [self.timerPickerView selectedRowInComponent:0]; +// NSString *hourString = self.pickerViewArrayHours[selectedHourComponent]; +// +// NSInteger selectedMinuteComponent = [self.timerPickerView selectedRowInComponent:1]; +// NSString *minuteString = self.minAndSecArray[selectedMinuteComponent]; +// +// NSInteger selectedSecondComponent = [self.timerPickerView selectedRowInComponent:2]; +// NSString *secondString = self.minAndSecArray[selectedSecondComponent]; +// +// self.timeString = [NSString stringWithFormat:@"%@:%@:%@", hourString, minuteString, secondString]; +// +// +// +// +// NSLog(@"%@", self.timeString); +//} +// +//-(void)trackCountdown{ +// +//} +// +// +// +// +// +//- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { +// +// +// +// +// if ([[segue identifier] isEqualToString: @"segueToTableViewIdentifier"]) { +// [self.arrayForTimes addObject:self.timeString]; +// PresetTimersTableViewController *tableViewController = (PresetTimersTableViewController *)[segue destinationViewController]; +// tableViewController.arrayOfTimes = self.arrayForTimes; +// +// +// NSLog(@"%@", tableViewController.transferredTimeString); +// } +// +//} +//// +//// PresetTimersTableViewController* PresetTimersTableViewControllerInstance= [[PresetTimersTableViewController alloc] init]; +// +//// +//// PresetTimersTableViewControllerInstance.transferredTimeString=self.timeString; +//// PresetTimersTableViewController *PresetTimersViewController = (PresetTimersTableViewController *)[segue destinationViewController]; +//// +// +//// Get the new view controller using [segue destinationViewController]. +//// Pass the selected object to the new view controller. +// +// +// +// +////- (NSInteger)selectedRowInComponent:(NSInteger) component{ +//// +//// return component; +//======= +////#import "ViewController.h" +//////#import "NSTimersForTableViews.h" // what is this? can't find a viewcontroller for this +////#import "PresetTimersTableViewController.h" +//// +////@interface ViewController () +//// +////@end +//// +////@implementation ViewController +//// +//// +//// +//// +////- (void)viewDidLoad { +//// [super viewDidLoad]; +//// self.arrayForTimes= [[NSMutableArray alloc] init]; +//// +//// // Do any additional setup after loading the view, typically from a nib. +//// +//// self.timerPickerView.delegate=self; +//// self.timerPickerView.dataSource=self; +//// self.pickerViewArrayHours= @[@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17",@"18",@"19",@"20",@"21",@"22",@"23",@"24"]; +//// +//// self.minAndSecArray= [NSMutableArray arrayWithCapacity:60]; +//// +//// for(int counter= 0; counter<=60; counter++){ +//// +//// self.minAndSecArray[counter] = [NSString stringWithFormat:@"%d",counter]; +//// +//// +//// } +//// +//// +//// self.myStoredTimeFromPickerView= [[NSMutableArray alloc] initWithObjects:@00,@00,@00, nil]; +////} +//// +//////returns the number of pickers +////-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ +//// return 3; +////} +//// +//// +//////return the number of picker rows in each picker +////-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ +//// +//// if (component == 0) { +//// return self.pickerViewArrayHours.count; +//// } +//// else if(component == 1) { +//// return 60; +//// } +//// else if(component == 2){ +//// return 60; +//// } +//// +//// else { +//// NSLog(@"WTH? :/ "); +//// return 0; +//// } +//// +//// +//// +//// +////} +//// +////-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ +//// if (component==0){ +//// +//// return self.pickerViewArrayHours[row]; +//// } +//// else{ +//// +//// return self.minAndSecArray[row]; +//// } +////} +//// +//// +////- (IBAction)storeTimeFromPickerInAnArray:(id)sender { +//// +//// +//// +//// +//// +//// +//// +//// NSInteger selectedHourComponent = [self.timerPickerView selectedRowInComponent:0]; +//// NSString *hourString = self.pickerViewArrayHours[selectedHourComponent]; +//// +//// NSInteger selectedMinuteComponent = [self.timerPickerView selectedRowInComponent:1]; +//// NSString *minuteString = self.minAndSecArray[selectedMinuteComponent]; +//// +//// NSInteger selectedSecondComponent = [self.timerPickerView selectedRowInComponent:2]; +//// NSString *secondString = self.minAndSecArray[selectedSecondComponent]; +//// +//// self.timeString = [NSString stringWithFormat:@"%@:%@:%@", hourString, minuteString, secondString]; +//// +//// +//// +//// +//// NSLog(@"%@", self.timeString); +//>>>>>>> 91cf5c3db81ea2f2634d11614d5286afa2bd7d23 +////} +//// +////-(void)trackCountdown{ +//// +////} +//// +//// +//// +//// +//// + +- (void)pushPresetTimersViewController:(id)sender { + PresetTimersTableViewController *tableViewController = [[PresetTimersTableViewController alloc] initWithNibName:nil bundle:nil]; + [self.navigationController pushViewController:tableViewController animated:YES]; + + NSLog(@"%@", tableViewController.transferredTimeString); + +} + +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + + + + + if ([[segue identifier] isEqualToString: @"showPresetTimersIdentifier"]) { +// [self.arrayForTimes addObject:self.timeString]; + PresetTimersTableViewController *tableViewController = (PresetTimersTableViewController *)[segue destinationViewController]; +// tableViewController.arrayOfTimes = self.arrayForTimes; + + NSLog(@"%@", tableViewController.transferredTimeString); + } + +} +// +////// PresetTimersTableViewController* PresetTimersTableViewControllerInstance= [[PresetTimersTableViewController alloc] init]; +//// +////// +////// PresetTimersTableViewControllerInstance.transferredTimeString=self.timeString; +////// PresetTimersTableViewController *PresetTimersViewController = (PresetTimersTableViewController *)[segue destinationViewController]; +////// +//// +////// Get the new view controller using [segue destinationViewController]. +////// Pass the selected object to the new view controller. +//// +//// +//// +//// +//////- (NSInteger)selectedRowInComponent:(NSInteger) component{ +////// +////// return component; +//////} +//// +////- (void)didReceiveMemoryWarning { +//// [super didReceiveMemoryWarning]; +//// // Dispose of any resources that can be recreated. +////} + +@end diff --git a/Time/Time/main.m b/Time/TimerStopwatch/main.m similarity index 65% rename from Time/Time/main.m rename to Time/TimerStopwatch/main.m index 9583fe1..924bb6f 100644 --- a/Time/Time/main.m +++ b/Time/TimerStopwatch/main.m @@ -1,9 +1,9 @@ // // main.m -// Time +// TimerStopwatch // -// Created by Michael Kavouras on 8/20/15. -// Copyright (c) 2015 Mike Kavouras. All rights reserved. +// Created by Charles Kang on 8/22/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. // #import diff --git a/Time/TimeTests/Info.plist b/Time/TimerStopwatchTests/Info.plist similarity index 90% rename from Time/TimeTests/Info.plist rename to Time/TimerStopwatchTests/Info.plist index 54624a4..ba72822 100644 --- a/Time/TimeTests/Info.plist +++ b/Time/TimerStopwatchTests/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/Time/TimerStopwatchTests/TimerStopwatchTests.m similarity index 74% rename from Time/TimeTests/TimeTests.m rename to Time/TimerStopwatchTests/TimerStopwatchTests.m index 944060f..8ab53fe 100644 --- a/Time/TimeTests/TimeTests.m +++ b/Time/TimerStopwatchTests/TimerStopwatchTests.m @@ -1,19 +1,19 @@ // -// TimeTests.m -// TimeTests +// TimerStopwatchTests.m +// TimerStopwatchTests // -// Created by Michael Kavouras on 8/20/15. -// Copyright (c) 2015 Mike Kavouras. All rights reserved. +// Created by Charles Kang on 8/22/15. +// Copyright (c) 2015 Charles Kang . All rights reserved. // #import #import -@interface TimeTests : XCTestCase +@interface TimerStopwatchTests : XCTestCase @end -@implementation TimeTests +@implementation TimerStopwatchTests - (void)setUp { [super setUp];