Commit 40eab966 by Demid Merzlyakov

IOS-22: humidity smart text.

parent dd5b89b8
...@@ -17,6 +17,8 @@ private enum Macro: String { ...@@ -17,6 +17,8 @@ private enum Macro: String {
case windType = "#WIND_TYPE#" case windType = "#WIND_TYPE#"
case windSpeed = "#WIND_SPEED#" case windSpeed = "#WIND_SPEED#"
case windDirection = "#WIND_DIRECTION#" case windDirection = "#WIND_DIRECTION#"
case humidityType = "#HUMIDITY_TYPE#"
case humidity = "#HUMIDITY#"
static let hourFormatter: DateFormatter = { static let hourFormatter: DateFormatter = {
let dateFormatter = DateFormatter() let dateFormatter = DateFormatter()
...@@ -108,6 +110,24 @@ private enum Macro: String { ...@@ -108,6 +110,24 @@ private enum Macro: String {
return location.today?.windSpeed?.settingsConverted.string return location.today?.windSpeed?.settingsConverted.string
case .windDirection: case .windDirection:
return location.today?.windDirection?.fullLocalized return location.today?.windDirection?.fullLocalized
case .humidityType:
guard let humidity = location.today?.humidity else {
return nil
}
if humidity > 50 {
return "humidity.type.high".localized()
}
else if humidity < 30 {
return "humidity.type.low".localized()
}
else {
return nil
}
case .humidity:
guard let humidity = location.today?.humidity else {
return nil
}
return "\(humidity)"
} }
} }
} }
...@@ -189,11 +209,24 @@ fileprivate struct StrongWindSmartText: SmartText { ...@@ -189,11 +209,24 @@ fileprivate struct StrongWindSmartText: SmartText {
} }
} }
fileprivate struct HumiditySmartText: SmartText {
let templateKey: String = "today.smart.humidity"
let requiredMacros: [Macro] = [.feelsLikeTemp, .humidity, .humidityType]
func applicable(to location: Location) -> Bool {
guard let humidity = location.today?.humidity else {
return false
}
return humidity > 50 || humidity < 30
}
}
class SmartTextProvider { class SmartTextProvider {
private var prioritizedSmartTexts: [SmartText] = [ private var prioritizedSmartTexts: [SmartText] = [
OngoingPrecipitationSmartText(), OngoingPrecipitationSmartText(),
ApproachingPrecipitationSmartText(), ApproachingPrecipitationSmartText(),
StrongWindSmartText(), StrongWindSmartText(),
HumiditySmartText(),
//Continue adding here. //Continue adding here.
DefaultSmartText()] DefaultSmartText()]
......
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
"today.smart.ongoingPrecipitation" = "#WEATHER_TYPE# until #WEATHER_TYPE_CHANGE_HOUR#."; "today.smart.ongoingPrecipitation" = "#WEATHER_TYPE# until #WEATHER_TYPE_CHANGE_HOUR#.";
"today.smart.approachingPrecipitation" = "#EXPECTED_PRECIPITATION_PROBABILITY#% chance of #EXPECTED_PRECIPITATION_WEATHER_TYPE# by #EXPECTED_PRECIPITATION_HOUR#."; "today.smart.approachingPrecipitation" = "#EXPECTED_PRECIPITATION_PROBABILITY#% chance of #EXPECTED_PRECIPITATION_WEATHER_TYPE# by #EXPECTED_PRECIPITATION_HOUR#.";
"today.smart.strongWind" = "#WIND_TYPE# - #WIND_SPEED# blowing from #WIND_DIRECTION#."; "today.smart.strongWind" = "#WIND_TYPE# - #WIND_SPEED# blowing from #WIND_DIRECTION#.";
"today.smart.humidity" = "Feels like #FEELS_LIKE_TEMP# due to #HUMIDITY_TYPE# humidity (#HUMIDITY#%).";
//Forecast //Forecast
"forecast.sunny" = "Sunny"; "forecast.sunny" = "Sunny";
...@@ -258,3 +259,7 @@ ...@@ -258,3 +259,7 @@
"wind.type.storm" = "Storm"; "wind.type.storm" = "Storm";
"wind.type.violentStorm" = "Violent storm"; "wind.type.violentStorm" = "Violent storm";
"wind.type.hurricane" = "Hurricane"; "wind.type.hurricane" = "Hurricane";
// Humidity type, for smart texts
"humidity.type.high" = "high";
"humidity.type.low" = "low";
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment