diff --git a/Localizable.xcstrings b/Localizable.xcstrings
index ad7d063d..d019ab3e 100644
--- a/Localizable.xcstrings
+++ b/Localizable.xcstrings
@@ -1512,6 +1512,9 @@
}
}
}
+ },
+ "12 Hour Clock" : {
+
},
"25" : {
"localizations" : {
@@ -27693,6 +27696,9 @@
}
}
}
+ },
+ "Sets the screen clock format to 12-hour." : {
+
},
"Settings" : {
"localizations" : {
diff --git a/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 53.xcdatamodel/contents b/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 53.xcdatamodel/contents
index 8f1c7f57..c1ee4271 100644
--- a/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 53.xcdatamodel/contents
+++ b/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 53.xcdatamodel/contents
@@ -97,6 +97,7 @@
+
diff --git a/Meshtastic/Persistence/UpdateCoreData.swift b/Meshtastic/Persistence/UpdateCoreData.swift
index 7aba8899..c241831a 100644
--- a/Meshtastic/Persistence/UpdateCoreData.swift
+++ b/Meshtastic/Persistence/UpdateCoreData.swift
@@ -581,6 +581,7 @@ func upsertDisplayConfigPacket(config: Config.DisplayConfig, nodeNum: Int64, ses
newDisplayConfig.displayMode = Int32(config.displaymode.rawValue)
newDisplayConfig.units = Int32(config.units.rawValue)
newDisplayConfig.headingBold = config.headingBold
+ newDisplayConfig.use12HClock = config.use12HClock
fetchedNode[0].displayConfig = newDisplayConfig
} else {
@@ -592,6 +593,7 @@ func upsertDisplayConfigPacket(config: Config.DisplayConfig, nodeNum: Int64, ses
fetchedNode[0].displayConfig?.oledType = Int32(config.oled.rawValue)
fetchedNode[0].displayConfig?.displayMode = Int32(config.displaymode.rawValue)
fetchedNode[0].displayConfig?.units = Int32(config.units.rawValue)
+ fetchedNode[0].displayConfig?.use12HClock = config.use12HClock
fetchedNode[0].displayConfig?.headingBold = config.headingBold
}
if sessionPasskey != nil {
diff --git a/Meshtastic/Views/Settings/Config/DisplayConfig.swift b/Meshtastic/Views/Settings/Config/DisplayConfig.swift
index 20a7c521..682bfd45 100644
--- a/Meshtastic/Views/Settings/Config/DisplayConfig.swift
+++ b/Meshtastic/Views/Settings/Config/DisplayConfig.swift
@@ -27,6 +27,7 @@ struct DisplayConfig: View {
@State var oledType = 0
@State var displayMode = 0
@State var units = 0
+ @State var use12HourClock = false
var body: some View {
Form {
@@ -74,6 +75,11 @@ struct DisplayConfig: View {
.font(.callout)
}
.pickerStyle(DefaultPickerStyle())
+ Toggle(isOn: $use12HourClock) {
+ Label("12 Hour Clock", systemImage: "clock")
+ Text("Sets the screen clock format to 12-hour.")
+ }
+ .tint(Color.accentColor)
}
Section(header: Text("Timing & Format")) {
VStack(alignment: .leading) {
@@ -141,6 +147,7 @@ struct DisplayConfig: View {
dc.oled = OledTypes(rawValue: oledType)!.protoEnumValue()
dc.displaymode = DisplayModes(rawValue: displayMode)!.protoEnumValue()
dc.units = Units(rawValue: units)!.protoEnumValue()
+ dc.use12HClock = use12HourClock
let adminMessageId = bleManager.saveDisplayConfig(config: dc, fromUser: connectedNode!.user!, toUser: node!.user!)
if adminMessageId > 0 {
@@ -211,6 +218,9 @@ struct DisplayConfig: View {
.onChange(of: units) { oldUnits, newUnits in
if oldUnits != newUnits && newUnits != node?.displayConfig?.units ?? -1 { hasChanges = true }
}
+ .onChange(of: use12HourClock) { oldUse12HourClock, newUse12HourClock in
+ if oldUse12HourClock != newUse12HourClock && newUse12HourClock != node?.displayConfig?.use12HClock { hasChanges = true }
+ }
}
func setDisplayValues() {
self.gpsFormat = Int(node?.displayConfig?.gpsFormat ?? 0)
@@ -222,6 +232,7 @@ struct DisplayConfig: View {
self.oledType = Int(node?.displayConfig?.oledType ?? 0)
self.displayMode = Int(node?.displayConfig?.displayMode ?? 0)
self.units = Int(node?.displayConfig?.units ?? 0)
- self.hasChanges = false
+ self.use12HourClock = node?.displayConfig?.use12HClock ?? false
+ self.hasChanges = node?.displayConfig?.use12HClock ?? false
}
}