diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000..1e6bc2ba Binary files /dev/null and b/.DS_Store differ diff --git a/EggTimer.xcodeproj/project.xcworkspace/xcuserdata/rishavgupta.xcuserdatad/UserInterfaceState.xcuserstate b/EggTimer.xcodeproj/project.xcworkspace/xcuserdata/rishavgupta.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 00000000..60e9947c Binary files /dev/null and b/EggTimer.xcodeproj/project.xcworkspace/xcuserdata/rishavgupta.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/EggTimer.xcodeproj/xcuserdata/rishavgupta.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/EggTimer.xcodeproj/xcuserdata/rishavgupta.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 00000000..3977a4bf --- /dev/null +++ b/EggTimer.xcodeproj/xcuserdata/rishavgupta.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,24 @@ + + + + + + + + + diff --git a/EggTimer.xcodeproj/xcuserdata/rishavgupta.xcuserdatad/xcschemes/xcschememanagement.plist b/EggTimer.xcodeproj/xcuserdata/rishavgupta.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000..0f61c311 --- /dev/null +++ b/EggTimer.xcodeproj/xcuserdata/rishavgupta.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + EggTimer.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/EggTimer/Base.lproj/Main.storyboard b/EggTimer/Base.lproj/Main.storyboard index 2df29d93..fb7934c2 100644 --- a/EggTimer/Base.lproj/Main.storyboard +++ b/EggTimer/Base.lproj/Main.storyboard @@ -1,9 +1,11 @@ - + - + + + @@ -16,13 +18,13 @@ - + - + - - + - + + + + - - - @@ -62,16 +67,19 @@ - + + + + - - - @@ -85,16 +93,19 @@ - + + + + - - - @@ -110,11 +121,28 @@ - + + + + + + + + + + + + + + + + + + @@ -122,8 +150,11 @@ - + + + + @@ -134,5 +165,11 @@ + + + + + + diff --git a/EggTimer/ViewController.swift b/EggTimer/ViewController.swift index 0d9d8d79..2d94ae5d 100644 --- a/EggTimer/ViewController.swift +++ b/EggTimer/ViewController.swift @@ -7,9 +7,73 @@ // import UIKit +import AVFoundation class ViewController: UIViewController { + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var timerProgressView: UIProgressView! + + let eggTimerDic = ["Soft": 3, "Medium": 4, "Hard": 7] + var timer: Timer? + var countdown = 0 + var selectedCookingMethod = "" + var alarm: AVAudioPlayer? + + override func viewDidLoad() { + self.timerProgressView.isHidden = true + } + + @IBAction func hardnessSelected(_ sender: UIButton) { + self.selectedCookingMethod = sender.currentTitle! + self.titleLabel.text = self.selectedCookingMethod + self.countdown = eggTimerDic[self.selectedCookingMethod]! + self.startTimer() + self.timerProgressView.isHidden = false + } + +} +// MARK: - TIMER +extension ViewController { + + func startTimer() { + self.timerProgressView.progress = 0.0 + self.stopTimer() + self.timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateTime), userInfo: nil, repeats: true) + } + + func stopTimer() { + self.timer?.invalidate() + self.timer = nil + } + + @objc func updateTime() { + if self.countdown > 0 { + print(countdown) + self.countdown -= 1 + let totalTime = eggTimerDic[self.selectedCookingMethod]! + let progress = Float(totalTime - countdown) / Float(totalTime) + self.timerProgressView.progress = progress + } else { + self.stopTimer() + self.titleLabel.text = "DONE!" + self.timerProgressView.isHidden = true + + // PLAY ALARM + guard let url = Bundle.main.url(forResource: "alarm_sound", withExtension: "mp3") else { return } + do { + self.alarm = try AVAudioPlayer(contentsOf: url) + self.alarm?.play() + } catch { + print("Error playing sound: \(error.localizedDescription)") + } + + DispatchQueue.main.asyncAfter(deadline: .now() + 3) { + self.titleLabel.text = "How do you like you like your eggs?" + self.alarm?.stop() + } + } + } }