diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WeatherHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WeatherHelper.kt index f0ac243..cad4a8f 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WeatherHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WeatherHelper.kt @@ -322,78 +322,78 @@ object WeatherHelper { } } - fun getWeatherGovIcon(iconString: String, isDaytime: Boolean): String = when { - iconString.contains("skc") -> "01" - iconString.contains("few") -> "02" - iconString.contains("sct") -> "03" - iconString.contains("bkn") -> "04" - iconString.contains("ovc") -> "04" - iconString.contains("wind_skc") -> "01" - iconString.contains("wind_few") -> "02" - iconString.contains("wind_sct") -> "03" - iconString.contains("wind_bkn") -> "04" - iconString.contains("wind_ovc") -> "04" - iconString.contains("snow") -> "13" - iconString.contains("rain_snow") -> "81" - iconString.contains("rain_sleet") -> "81" - iconString.contains("snow_sleet") -> "81" - iconString.contains("fzra") -> "81" - iconString.contains("rain_fzra") -> "81" - iconString.contains("snow_fzra") -> "81" - iconString.contains("sleet") -> "81" - iconString.contains("rain") -> "10" - iconString.contains("rain_showers") -> "10" - iconString.contains("rain_showers_hi") -> "10" - iconString.contains("tsra") -> "82" - iconString.contains("tsra_sct") -> "82" - iconString.contains("tsra_hi") -> "82" - iconString.contains("tornado") -> "80" - iconString.contains("hurricane") -> "80" - iconString.contains("tropical_storm") -> "09" - iconString.contains("dust") -> "Dust" - iconString.contains("smoke") -> "Smoke" - iconString.contains("haze") -> "50" - iconString.contains("hot") -> "01" - iconString.contains("cold") -> "13" - iconString.contains("blizzard") -> "80" - iconString.contains("fog") -> "82" + fun getWeatherGovIcon(iconString: String, isDaytime: Boolean): String = when (iconString.substringBefore('?').substringAfterLast('/')) { + "skc" -> "01" + "few" -> "02" + "sct" -> "03" + "bkn" -> "04" + "ovc" -> "04" + "wind_skc" -> "01" + "wind_few" -> "02" + "wind_sct" -> "03" + "wind_bkn" -> "04" + "wind_ovc" -> "04" + "snow" -> "13" + "rain_snow" -> "81" + "rain_sleet" -> "81" + "snow_sleet" -> "81" + "fzra" -> "81" + "rain_fzra" -> "81" + "snow_fzra" -> "81" + "sleet" -> "81" + "rain" -> "10" + "rain_showers" -> "10" + "rain_showers_hi" -> "10" + "tsra" -> "82" + "tsra_sct" -> "82" + "tsra_hi" -> "82" + "tornado" -> "80" + "hurricane" -> "80" + "tropical_storm" -> "09" + "dust" -> "Dust" + "smoke" -> "Smoke" + "haze" -> "50" + "hot" -> "01" + "cold" -> "13" + "blizzard" -> "80" + "fog" -> "82" else -> "" } + if (isDaytime) "d" else "n" - fun getWeatherBitIcon(iconString: String): String = when { - iconString.contains("t01") -> "11" - iconString.contains("t02") -> "09" - iconString.contains("t03") -> "09" - iconString.contains("t04") -> "09" - iconString.contains("t05") -> "09" - iconString.contains("d01") -> "10" - iconString.contains("d02") -> "10" - iconString.contains("d03") -> "10" - iconString.contains("r01") -> "10" - iconString.contains("r02") -> "10" - iconString.contains("r03") -> "10" - iconString.contains("f01") -> "10" - iconString.contains("r04") -> "10" - iconString.contains("r05") -> "10" - iconString.contains("r06") -> "10" - iconString.contains("s01") -> "13" - iconString.contains("s02") -> "13" - iconString.contains("s03") -> "13" - iconString.contains("s04") -> "81" - iconString.contains("s05") -> "90" - iconString.contains("s06") -> "13" - iconString.contains("a01") -> "82" - iconString.contains("a02") -> "82" - iconString.contains("a03") -> "82" - iconString.contains("a04") -> "82" - iconString.contains("a05") -> "82" - iconString.contains("a06") -> "82" - iconString.contains("c01") -> "01" - iconString.contains("c02") -> "02" - iconString.contains("c03") -> "04" - iconString.contains("c04") -> "04" + fun getWeatherBitIcon(iconString: String): String = when (iconString.substring(0, 3)) { + "t01" -> "11" + "t02" -> "09" + "t03" -> "09" + "t04" -> "09" + "t05" -> "09" + "d01" -> "10" + "d02" -> "10" + "d03" -> "10" + "r01" -> "10" + "r02" -> "10" + "r03" -> "10" + "f01" -> "10" + "r04" -> "10" + "r05" -> "10" + "r06" -> "10" + "s01" -> "13" + "s02" -> "13" + "s03" -> "13" + "s04" -> "81" + "s05" -> "90" + "s06" -> "13" + "a01" -> "82" + "a02" -> "82" + "a03" -> "82" + "a04" -> "82" + "a05" -> "82" + "a06" -> "82" + "c01" -> "01" + "c02" -> "02" + "c03" -> "04" + "c04" -> "04" else -> "" - } + if (iconString.contains("d")) "d" else "n" + } + iconString.substring(3) fun getWeatherApiIcon(icon: Int, isDaytime: Boolean): String = when(icon) { 1000 -> "01" @@ -447,49 +447,49 @@ object WeatherHelper { else -> "" } + if (isDaytime) "d" else "n" - fun getYRIcon(iconCode: String, isDaytime: Boolean): String = when { - iconCode.contains("clearsky") -> "01" - iconCode.contains("cloudy") -> "04" - iconCode.contains("fair") -> "02" - iconCode.contains("fog") -> "82" - iconCode.contains("heavyrain") -> "10" - iconCode.contains("heavyrainandthunder") -> "11" - iconCode.contains("heavyrainshowers") -> "10" - iconCode.contains("heavyrainshowersandthunder") -> "11" - iconCode.contains("heavysleet") -> "10" - iconCode.contains("heavysleetandthunder") -> "11" - iconCode.contains("heavysleetshowers") -> "10" - iconCode.contains("heavysleetshowersandthunder") -> "11" - iconCode.contains("heavysnow") -> "13" - iconCode.contains("heavysnowandthunder") -> "13" - iconCode.contains("heavysnowshowers") -> "13" - iconCode.contains("heavysnowshowersandthunder") -> "13" - iconCode.contains("lightrain") -> "10" - iconCode.contains("lightrainandthunder") -> "11" - iconCode.contains("lightrainshowers") -> "10" - iconCode.contains("lightrainshowersandthunder") -> "11" - iconCode.contains("lightsleet") -> "10" - iconCode.contains("lightsleetandthunder") -> "11" - iconCode.contains("lightsleetshowers") -> "10" - iconCode.contains("lightsnow") -> "13" - iconCode.contains("lightsnowandthunder") -> "13" - iconCode.contains("lightsnowshowers") -> "13" - iconCode.contains("lightssleetshowersandthunder") -> "81" - iconCode.contains("lightssnowshowersandthunder") -> "81" - iconCode.contains("partlycloudy") -> "03" - iconCode.contains("rain") -> "10" - iconCode.contains("rainandthunder") -> "11" - iconCode.contains("rainshowers") -> "10" - iconCode.contains("rainshowersandthunder") -> "11" - iconCode.contains("sleet") -> "10" - iconCode.contains("sleetandthunder") -> "11" - iconCode.contains("sleetshowers") -> "10" - iconCode.contains("sleetshowersandthunder") -> "11" - iconCode.contains("snow") -> "13" - iconCode.contains("snowandthunder") -> "13" - iconCode.contains("snowshowers") -> "13" - iconCode.contains("snowshowersandthunder") -> "13" + fun getYRIcon(iconCode: String): String = when (iconCode.substringBefore('_')) { + "clearsky" -> "01" + "cloudy" -> "04" + "fair" -> "02" + "fog" -> "82" + "heavyrain" -> "10" + "heavyrainandthunder" -> "11" + "heavyrainshowers" -> "10" + "heavyrainshowersandthunder" -> "11" + "heavysleet" -> "10" + "heavysleetandthunder" -> "11" + "heavysleetshowers" -> "10" + "heavysleetshowersandthunder" -> "11" + "heavysnow" -> "13" + "heavysnowandthunder" -> "13" + "heavysnowshowers" -> "13" + "heavysnowshowersandthunder" -> "13" + "lightrain" -> "10" + "lightrainandthunder" -> "11" + "lightrainshowers" -> "10" + "lightrainshowersandthunder" -> "11" + "lightsleet" -> "10" + "lightsleetandthunder" -> "11" + "lightsleetshowers" -> "10" + "lightsnow" -> "13" + "lightsnowandthunder" -> "13" + "lightsnowshowers" -> "13" + "lightssleetshowersandthunder" -> "81" + "lightssnowshowersandthunder" -> "81" + "partlycloudy" -> "03" + "rain" -> "10" + "rainandthunder" -> "11" + "rainshowers" -> "10" + "rainshowersandthunder" -> "11" + "sleet" -> "10" + "sleetandthunder" -> "11" + "sleetshowers" -> "10" + "sleetshowersandthunder" -> "11" + "snow" -> "13" + "snowandthunder" -> "13" + "snowshowers" -> "13" + "snowshowersandthunder" -> "13" else -> "" - } + if (isDaytime) "d" else "n" + } + if (iconCode.substringAfter('_', "day") == "day") "d" else "n" -} \ No newline at end of file +} diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/network/WeatherNetworkApi.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/network/WeatherNetworkApi.kt index 3b2c513..dd12842 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/network/WeatherNetworkApi.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/network/WeatherNetworkApi.kt @@ -395,7 +395,7 @@ class WeatherNetworkApi(val context: Context) { val pp = response.body["properties"] as LinkedTreeMap<*, *> val data = pp["timeseries"] as List>? data?.let { - val format = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") + val format = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").apply { timeZone = TimeZone.getTimeZone("UTC") } for (item in data) { val time = Calendar.getInstance().apply { time = format.parse(item["time"] as String)!! } val now = Calendar.getInstance() @@ -411,7 +411,7 @@ class WeatherNetworkApi(val context: Context) { val iconCode = summary["symbol_code"] as String Preferences.weatherTemp = temp.toFloat() - Preferences.weatherIcon = WeatherHelper.getYRIcon(iconCode, now.get(Calendar.HOUR_OF_DAY) >= 22 || now.get(Calendar.HOUR_OF_DAY) <= 8) + Preferences.weatherIcon = WeatherHelper.getYRIcon(iconCode) Preferences.weatherTempUnit = "C" Preferences.weatherRealTempUnit = Preferences.weatherTempUnit MainWidget.updateWidget(context)