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