From bfa921cfc17c8ad567e85b69c65fde3486c3e781 Mon Sep 17 00:00:00 2001 From: Chris Kaczor Date: Mon, 21 Mar 2022 15:31:57 -0400 Subject: [PATCH] More work on weather display --- WearOS/build.gradle | 2 +- .../wear/weather/WeatherRepository.kt | 3 + .../wear/weather/WeatherTileService.kt | 68 +++++++++++++++---- .../src/src/main/res/drawable/ic_humidity.xml | 10 +++ .../src/main/res/drawable/ic_temperature.xml | 10 +++ 5 files changed, 79 insertions(+), 14 deletions(-) create mode 100644 WearOS/src/src/main/res/drawable/ic_humidity.xml create mode 100644 WearOS/src/src/main/res/drawable/ic_temperature.xml diff --git a/WearOS/build.gradle b/WearOS/build.gradle index 6ac70ee..b5e7d60 100644 --- a/WearOS/build.gradle +++ b/WearOS/build.gradle @@ -22,7 +22,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.0.2' + classpath 'com.android.tools.build:gradle:7.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/WearOS/src/src/main/java/com/chriskaczor/homemonitor/wear/weather/WeatherRepository.kt b/WearOS/src/src/main/java/com/chriskaczor/homemonitor/wear/weather/WeatherRepository.kt index 14467f3..1d35014 100644 --- a/WearOS/src/src/main/java/com/chriskaczor/homemonitor/wear/weather/WeatherRepository.kt +++ b/WearOS/src/src/main/java/com/chriskaczor/homemonitor/wear/weather/WeatherRepository.kt @@ -6,6 +6,9 @@ import java.net.URL import java.sql.Timestamp data class WeatherStatus( + @Json(name = "temperature") + val temperature: Double, + @Json(name = "humidity") val humidity: Double, diff --git a/WearOS/src/src/main/java/com/chriskaczor/homemonitor/wear/weather/WeatherTileService.kt b/WearOS/src/src/main/java/com/chriskaczor/homemonitor/wear/weather/WeatherTileService.kt index f8fdd6c..a9e25d9 100644 --- a/WearOS/src/src/main/java/com/chriskaczor/homemonitor/wear/weather/WeatherTileService.kt +++ b/WearOS/src/src/main/java/com/chriskaczor/homemonitor/wear/weather/WeatherTileService.kt @@ -31,8 +31,9 @@ private val VERTICAL_SPACING_HEIGHT = dp(8f) // identifiers private const val ID_IMAGE_REFRESH = "image_refresh" -private const val ID_IMAGE_GENERATION = "image_generation" -private const val ID_IMAGE_CONSUMPTION = "image_consumption" +private const val ID_IMAGE_TEMPERATURE = "image_temperature" +private const val ID_IMAGE_HUMIDITY = "image_humidity" +private const val ID_IMAGE_PRESSURE = "image_pressure" private const val ID_CLICK_REFRESH = "click_refresh" class WeatherTileService : TileService() { @@ -72,16 +73,25 @@ class WeatherTileService : TileService() { ).build() ) .addIdToImageMapping( - ID_IMAGE_GENERATION, + ID_IMAGE_HUMIDITY, ImageResource.Builder() .setAndroidResourceByResId( AndroidImageResourceByResId.Builder() - .setResourceId(R.drawable.ic_sun) + .setResourceId(R.drawable.ic_humidity) .build() ).build() ) .addIdToImageMapping( - ID_IMAGE_CONSUMPTION, + ID_IMAGE_TEMPERATURE, + ImageResource.Builder() + .setAndroidResourceByResId( + AndroidImageResourceByResId.Builder() + .setResourceId(R.drawable.ic_temperature) + .build() + ).build() + ) + .addIdToImageMapping( + ID_IMAGE_PRESSURE, ImageResource.Builder() .setAndroidResourceByResId( AndroidImageResourceByResId.Builder() @@ -103,17 +113,21 @@ class WeatherTileService : TileService() { .addContent( Column.Builder() .addContent( - generationLayout(goalProgress?.humidity ?: -1.0, deviceParameters) + temperatureLayout(goalProgress?.temperature ?: -1.0, deviceParameters) + ) + + .addContent( + humidityLayout(goalProgress?.humidity ?: -1.0, deviceParameters) ) .addContent( - consumptionLayout(goalProgress?.pressure ?: -1.0, deviceParameters) + pressureLayout((goalProgress?.pressure ?: -100.0) / 100, deviceParameters) ) .addContent(Spacer.Builder().setHeight(VERTICAL_SPACING_HEIGHT).build()) .addContent(refreshButton()) .build() ).build() - private fun generationLayout(generation: Double, deviceParameters: DeviceParameters) = + private fun temperatureLayout(temperature: Double, deviceParameters: DeviceParameters) = Row.Builder() .addContent( Image.Builder() @@ -131,17 +145,17 @@ class WeatherTileService : TileService() { ) .build() ) - .setResourceId(ID_IMAGE_GENERATION) + .setResourceId(ID_IMAGE_TEMPERATURE) .build() ) .addContent( Text.Builder() - .setText(if (generation <= 0) "0" else generation.toString()) + .setText(String.format("%.02f", temperature)) .setFontStyle(FontStyles.display3(deviceParameters).build()) .build() ).build() - private fun consumptionLayout(consumption: Double, deviceParameters: DeviceParameters) = + private fun humidityLayout(humidity: Double, deviceParameters: DeviceParameters) = Row.Builder() .addContent( Image.Builder() @@ -159,12 +173,40 @@ class WeatherTileService : TileService() { ) .build() ) - .setResourceId(ID_IMAGE_CONSUMPTION) + .setResourceId(ID_IMAGE_HUMIDITY) .build() ) .addContent( Text.Builder() - .setText(if (consumption <= 0) "0" else consumption.toString()) + .setText(if (humidity <= 0) "0" else String.format("%.02f", humidity)) + .setFontStyle(FontStyles.display3(deviceParameters).build()) + .build() + ).build() + + private fun pressureLayout(pressure: Double, deviceParameters: DeviceParameters) = + Row.Builder() + .addContent( + Image.Builder() + .setHeight(dp(36f)) + .setWidth(dp(36f)) + .setModifiers( + Modifiers.Builder() + .setPadding( + Padding.Builder() + .setStart(dp(0f)) + .setEnd(dp(10f)) + .setTop(dp(1f)) + .setBottom(dp(0f)) + .build() + ) + .build() + ) + .setResourceId(ID_IMAGE_PRESSURE) + .build() + ) + .addContent( + Text.Builder() + .setText(if (pressure <= 0) "0" else String.format("%.02f", pressure)) .setFontStyle(FontStyles.display3(deviceParameters).build()) .build() ).build() diff --git a/WearOS/src/src/main/res/drawable/ic_humidity.xml b/WearOS/src/src/main/res/drawable/ic_humidity.xml new file mode 100644 index 0000000..5e49745 --- /dev/null +++ b/WearOS/src/src/main/res/drawable/ic_humidity.xml @@ -0,0 +1,10 @@ + + + diff --git a/WearOS/src/src/main/res/drawable/ic_temperature.xml b/WearOS/src/src/main/res/drawable/ic_temperature.xml new file mode 100644 index 0000000..b67ee87 --- /dev/null +++ b/WearOS/src/src/main/res/drawable/ic_temperature.xml @@ -0,0 +1,10 @@ + + +