More work on weather display

This commit is contained in:
2022-03-21 15:31:57 -04:00
parent d9b1bcc177
commit bfa921cfc1
5 changed files with 79 additions and 14 deletions

View File

@@ -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"
}
}

View File

@@ -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,

View File

@@ -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()

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M12,2c-5.33,4.55 -8,8.48 -8,11.8c0,4.98 3.8,8.2 8,8.2s8,-3.22 8,-8.2C20,10.48 17.33,6.55 12,2zM12,20c-3.35,0 -6,-2.57 -6,-6.2c0,-2.34 1.95,-5.44 6,-9.14c4.05,3.7 6,6.79 6,9.14C18,17.43 15.35,20 12,20zM7.83,14c0.37,0 0.67,0.26 0.74,0.62c0.41,2.22 2.28,2.98 3.64,2.87c0.43,-0.02 0.79,0.32 0.79,0.75c0,0.4 -0.32,0.73 -0.72,0.75c-2.13,0.13 -4.62,-1.09 -5.19,-4.12C7.01,14.42 7.37,14 7.83,14z"/>
</vector>

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M15,13L15,5c0,-1.66 -1.34,-3 -3,-3S9,3.34 9,5v8c-1.21,0.91 -2,2.37 -2,4 0,2.76 2.24,5 5,5s5,-2.24 5,-5c0,-1.63 -0.79,-3.09 -2,-4zM11,5c0,-0.55 0.45,-1 1,-1s1,0.45 1,1h-1v1h1v2h-1v1h1v2h-2L11,5z"/>
</vector>