diff --git a/ProjectClock/AddAlarmViewController.swift b/ProjectClock/AddAlarmViewController.swift index d69c902..c72724e 100644 --- a/ProjectClock/AddAlarmViewController.swift +++ b/ProjectClock/AddAlarmViewController.swift @@ -71,23 +71,14 @@ class AddAlarmViewController: UIViewController // Pickers @IBOutlet weak var timePicker: UIDatePicker! @IBOutlet weak var wvmPicker: UIPickerView! + @IBOutlet weak var ringtonePicker: UIPickerView! // UI Elements @IBOutlet weak var repeatWeekdaysSwitch: UISwitch! @IBOutlet weak var repeatWeekendsSwitch: UISwitch! @IBOutlet weak var alarmNameTextField: UITextField! @IBOutlet weak var timeTillAlarmLabel: UILabel! - - @IBAction func defaultRingtonesButton(_ sender: Any) - { - - } - - @IBAction func soundLibraryButton(_ sender: Any) - { - - } - + /** Called when the time for the alarm is changed. Sets the time away at the top of the View. @@ -138,7 +129,7 @@ class AddAlarmViewController: UIViewController let alarm = Alarm(hour: h, minute: m, text: alarmNameTextField.text ?? "Alarm", wakeMethod: wvms[wvmPicker.selectedRow(inComponent: 0)], - lastActivate: Date()) + lastActivate: Date(), alarmTone: ringtones[ringtonePicker.selectedRow(inComponent: 0)].tone) // Set alarm.repeats to correspond with what the user selects (0...6).forEach { alarm.repeats[$0] = false } @@ -166,7 +157,7 @@ class AddAlarmViewController: UIViewController let a = Alarm(hour: h, minute: m, text: alarmNameTextField.text ?? "Alarm", wakeMethod: wvms[wvmPicker.selectedRow(inComponent: 0)], - lastActivate: Date()) + lastActivate: Date(), alarmTone: ringtones[ringtonePicker.selectedRow(inComponent: 0)].tone) // Set alarm.repeats to correspond with what the user selects (0...6).forEach { a.repeats[$0] = false } if repeatWeekdaysSwitch.isOn { (1...5).forEach { a.repeats[$0] = true } } @@ -204,3 +195,29 @@ class WVMDataSource: UIPickerView, UIPickerViewDelegate, UIPickerViewDataSource return wvms[r].name + " - " + wvms[r].desc } } + +class RingtonesDataSource: UIPickerView, UIPickerViewDelegate, UIPickerViewDataSource +{ + required init?(coder: NSCoder) + { + super.init(coder: coder) + delegate = self + dataSource = self + } + + func numberOfComponents(in pickerView: UIPickerView) -> Int + { + return 1 + } + + func pickerView(_ v: UIPickerView, numberOfRowsInComponent: Int) -> Int + { + return ringtones.count + } + + func pickerView(_ v: UIPickerView, titleForRow r: Int, forComponent: Int) -> String? + { + return ringtones[r].name + + } +} diff --git a/ProjectClock/Base.lproj/Main.storyboard b/ProjectClock/Base.lproj/Main.storyboard index f03659c..c968a0e 100644 --- a/ProjectClock/Base.lproj/Main.storyboard +++ b/ProjectClock/Base.lproj/Main.storyboard @@ -476,44 +476,36 @@ - + - - + + + + + + - + - + @@ -632,6 +624,7 @@ + diff --git a/ProjectClock/Models.swift b/ProjectClock/Models.swift index 5e36f6b..e14bf17 100644 --- a/ProjectClock/Models.swift +++ b/ProjectClock/Models.swift @@ -37,6 +37,7 @@ struct WVM: Codable let desc: String } + let wvms = [ WVM(name: "Factor", desc: "Factor a binomial"), WVM(name: "RPS", desc: "Win a game of rock paper scissors"), @@ -46,7 +47,16 @@ let wvms = [ //WVM(name: "Jump", desc: "Make a few jumps") ] -class Alarm: Codable, Equatable + +struct Tone{ + + let name: String + let tone: SystemSoundID + +} +let ringtones : [Tone] = [Tone(name: "Item One", tone: SystemSoundID(1005)), Tone(name: "Item Two", tone: SystemSoundID(1254))] //SystemSoundID(1255),SystemSoundID(1256),SystemSoundID(1257)] + +class Alarm: Codable { static func == (lhs: Alarm, rhs: Alarm) -> Bool { return lhs.hour == rhs.hour && lhs.minute == rhs.minute && lhs.text == rhs.text && @@ -73,7 +83,8 @@ class Alarm: Codable, Equatable hour: Int, minute: Int, text: String, wakeMethod: WVM, repeats: [Bool] = [false, true, true, true, true, true, false], lastActivate: Date = Date(), - alarmTone: SystemSoundID = SystemSoundID(1005) + alarmTone: SystemSoundID = ringtones[0].tone + ) { self.enabled = enabled