diff --git a/Clocker/Panel/Data Layer/TimezoneData.swift b/Clocker/Panel/Data Layer/TimezoneData.swift index 31eef2d..fbf8ab7 100644 --- a/Clocker/Panel/Data Layer/TimezoneData.swift +++ b/Clocker/Panel/Data Layer/TimezoneData.swift @@ -27,12 +27,18 @@ class TimezoneData: NSObject, NSCoding { } enum TimezoneOverride: Int { + case globalFormat = 0 case twelveHourFormat case twentyFourFormat - case globalFormat + case twelveHourWithSeconds + case twentyHourWithSeconds + case twelveHourPrecedingZero + case twelveHourPrecedingZeroSeconds + case twelveHourWithoutSuffix + case twelveHourWithoutSuffixAndSeconds } - let values = [ + static let values = [ NSNumber(integerLiteral: 0): DateFormat.twelveHour, NSNumber(integerLiteral: 1): DateFormat.twelveHourWithSeconds, NSNumber(integerLiteral: 2): DateFormat.twentyFourHour, @@ -237,12 +243,16 @@ class TimezoneData: NSObject, NSCoding { let newTimezone = TimezoneData(with: oldModel) newModels.append(newTimezone) } else if let newModel = old as? TimezoneData { + if UserDefaults.standard.object(forKey: "migrateOverrideFormat") == nil { + print("Resetting Global Format") + newModel.setShouldOverrideGlobalTimeFormat(0) + } newModels.append(newModel) } } - if UserDefaults.standard.object(forKey: "shouldOverrideSecondsFormatBug") == nil { - UserDefaults.standard.set("YES", forKey: "shouldOverrideSecondsFormatBug") + if UserDefaults.standard.object(forKey: "migrateOverrideFormat") == nil { + UserDefaults.standard.set("YES", forKey: "migrateOverrideFormat") } // Do the serialization @@ -317,7 +327,7 @@ class TimezoneData: NSObject, NSCoding { func setShouldOverrideGlobalTimeFormat(_ shouldOverride: Int) { if shouldOverride == 0 { - overrideFormat = .twelveHourFormat + overrideFormat = .globalFormat } else if shouldOverride == 1 { overrideFormat = .twentyFourFormat } else { @@ -351,8 +361,7 @@ class TimezoneData: NSObject, NSCoding { func timezoneFormat() -> String { let chosenDefault = DataStore.shared().timezoneFormat() - - return values[chosenDefault] ?? DateFormat.twelveHour + return TimezoneData.values[chosenDefault] ?? DateFormat.twelveHour // var timeFormat = DateFormat.twentyFourHour // @@ -380,11 +389,11 @@ class TimezoneData: NSObject, NSCoding { func shouldShowSeconds() -> Bool { if overrideFormat == .globalFormat { let currentFormat = DataStore.shared().timezoneFormat() - let formatInString = values[currentFormat] ?? DateFormat.twelveHour + let formatInString = TimezoneData.values[currentFormat] ?? DateFormat.twelveHour return formatInString.contains("ss") } - let formatInString = values[NSNumber(integerLiteral: overrideFormat.rawValue)] ?? DateFormat.twelveHour + let formatInString = TimezoneData.values[NSNumber(integerLiteral: overrideFormat.rawValue)] ?? DateFormat.twelveHour return formatInString.contains("ss") } diff --git a/Clocker/Panel/Notes Popover/NotesPopover.swift b/Clocker/Panel/Notes Popover/NotesPopover.swift index e706a5f..ce10a05 100644 --- a/Clocker/Panel/Notes Popover/NotesPopover.swift +++ b/Clocker/Panel/Notes Popover/NotesPopover.swift @@ -34,7 +34,7 @@ class NotesPopover: NSViewController { @IBOutlet var remindersButton: NSButton! - @IBOutlet var timeFormatControl: NSSegmentedControl! + @IBOutlet var timeFormatControl: NSPopUpButton! @IBOutlet var notesTextView: TextViewWithPlaceholder! @@ -66,6 +66,29 @@ class NotesPopover: NSViewController { alertPopupButton.addItems(withTitles: titles) alertPopupButton.selectItem(at: 1) + // Set up time control + let chosenFormat: Int = dataObject?.overrideFormat.rawValue ?? 0 + let supportedTimeFormats = ["Respect Global Preference", + "h:mm a (7:08 PM)", + "HH:mm (19:08)", + "-- With Seconds --", + "h:mm:ss a (7:08:09 PM)", + "HH:mm:ss (19:08:09)", + "-- 12 Hour with Preceding 0 --", + "hh:mm a (07:08 PM)", + "hh:mm:ss a (07:08:09 PM)", + "-- 12 Hour w/o AM/PM --", + "hh:mm (07:08)", + "hh:mm:ss (07:08:09)"] + timeFormatControl.removeAllItems() + timeFormatControl.addItems(withTitles: supportedTimeFormats) + + timeFormatControl.item(at: 3)?.isEnabled = false + timeFormatControl.item(at: 6)?.isEnabled = false + timeFormatControl.item(at: 9)?.isEnabled = false + timeFormatControl.autoenablesItems = false + timeFormatControl.selectItem(at: chosenFormat) + // Set Accessibility Identifiers for UI tests customLabel.setAccessibilityIdentifier("CustomLabel") saveButton.setAccessibilityIdentifier("SaveButton") @@ -212,7 +235,7 @@ class NotesPopover: NSViewController { updateLabel() dataObject?.note = notesTextView.string - dataObject?.setShouldOverrideGlobalTimeFormat(timeFormatControl.selectedSegment) + dataObject?.setShouldOverrideGlobalTimeFormat(timeFormatControl.indexOfSelectedItem) insertTimezoneInDefaultPreferences() if setReminderCheckbox.state == .on { @@ -452,7 +475,7 @@ extension NotesPopover { private func updateTimeFormat() { if let overrideFormat = dataObject?.overrideFormat.rawValue { - timeFormatControl.setSelected(true, forSegment: overrideFormat) + timeFormatControl.selectItem(at: overrideFormat) } } diff --git a/Clocker/Panel/Notes Popover/NotesPopover.xib b/Clocker/Panel/Notes Popover/NotesPopover.xib index 48278f6..0e727c3 100644 --- a/Clocker/Panel/Notes Popover/NotesPopover.xib +++ b/Clocker/Panel/Notes Popover/NotesPopover.xib @@ -17,14 +17,14 @@ - + - + @@ -185,22 +185,22 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -209,13 +209,12 @@ - + + - - - - + +