mirror of
https://github.com/ckaczor/HomeMonitor.git
synced 2026-01-14 01:25:38 -05:00
More work on weather display
This commit is contained in:
@@ -22,7 +22,7 @@ buildscript {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
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"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,9 @@ import java.net.URL
|
|||||||
import java.sql.Timestamp
|
import java.sql.Timestamp
|
||||||
|
|
||||||
data class WeatherStatus(
|
data class WeatherStatus(
|
||||||
|
@Json(name = "temperature")
|
||||||
|
val temperature: Double,
|
||||||
|
|
||||||
@Json(name = "humidity")
|
@Json(name = "humidity")
|
||||||
val humidity: Double,
|
val humidity: Double,
|
||||||
|
|
||||||
|
|||||||
@@ -31,8 +31,9 @@ private val VERTICAL_SPACING_HEIGHT = dp(8f)
|
|||||||
|
|
||||||
// identifiers
|
// identifiers
|
||||||
private const val ID_IMAGE_REFRESH = "image_refresh"
|
private const val ID_IMAGE_REFRESH = "image_refresh"
|
||||||
private const val ID_IMAGE_GENERATION = "image_generation"
|
private const val ID_IMAGE_TEMPERATURE = "image_temperature"
|
||||||
private const val ID_IMAGE_CONSUMPTION = "image_consumption"
|
private const val ID_IMAGE_HUMIDITY = "image_humidity"
|
||||||
|
private const val ID_IMAGE_PRESSURE = "image_pressure"
|
||||||
private const val ID_CLICK_REFRESH = "click_refresh"
|
private const val ID_CLICK_REFRESH = "click_refresh"
|
||||||
|
|
||||||
class WeatherTileService : TileService() {
|
class WeatherTileService : TileService() {
|
||||||
@@ -72,16 +73,25 @@ class WeatherTileService : TileService() {
|
|||||||
).build()
|
).build()
|
||||||
)
|
)
|
||||||
.addIdToImageMapping(
|
.addIdToImageMapping(
|
||||||
ID_IMAGE_GENERATION,
|
ID_IMAGE_HUMIDITY,
|
||||||
ImageResource.Builder()
|
ImageResource.Builder()
|
||||||
.setAndroidResourceByResId(
|
.setAndroidResourceByResId(
|
||||||
AndroidImageResourceByResId.Builder()
|
AndroidImageResourceByResId.Builder()
|
||||||
.setResourceId(R.drawable.ic_sun)
|
.setResourceId(R.drawable.ic_humidity)
|
||||||
.build()
|
.build()
|
||||||
).build()
|
).build()
|
||||||
)
|
)
|
||||||
.addIdToImageMapping(
|
.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()
|
ImageResource.Builder()
|
||||||
.setAndroidResourceByResId(
|
.setAndroidResourceByResId(
|
||||||
AndroidImageResourceByResId.Builder()
|
AndroidImageResourceByResId.Builder()
|
||||||
@@ -103,17 +113,21 @@ class WeatherTileService : TileService() {
|
|||||||
.addContent(
|
.addContent(
|
||||||
Column.Builder()
|
Column.Builder()
|
||||||
.addContent(
|
.addContent(
|
||||||
generationLayout(goalProgress?.humidity ?: -1.0, deviceParameters)
|
temperatureLayout(goalProgress?.temperature ?: -1.0, deviceParameters)
|
||||||
|
)
|
||||||
|
|
||||||
|
.addContent(
|
||||||
|
humidityLayout(goalProgress?.humidity ?: -1.0, deviceParameters)
|
||||||
)
|
)
|
||||||
.addContent(
|
.addContent(
|
||||||
consumptionLayout(goalProgress?.pressure ?: -1.0, deviceParameters)
|
pressureLayout((goalProgress?.pressure ?: -100.0) / 100, deviceParameters)
|
||||||
)
|
)
|
||||||
.addContent(Spacer.Builder().setHeight(VERTICAL_SPACING_HEIGHT).build())
|
.addContent(Spacer.Builder().setHeight(VERTICAL_SPACING_HEIGHT).build())
|
||||||
.addContent(refreshButton())
|
.addContent(refreshButton())
|
||||||
.build()
|
.build()
|
||||||
).build()
|
).build()
|
||||||
|
|
||||||
private fun generationLayout(generation: Double, deviceParameters: DeviceParameters) =
|
private fun temperatureLayout(temperature: Double, deviceParameters: DeviceParameters) =
|
||||||
Row.Builder()
|
Row.Builder()
|
||||||
.addContent(
|
.addContent(
|
||||||
Image.Builder()
|
Image.Builder()
|
||||||
@@ -131,17 +145,17 @@ class WeatherTileService : TileService() {
|
|||||||
)
|
)
|
||||||
.build()
|
.build()
|
||||||
)
|
)
|
||||||
.setResourceId(ID_IMAGE_GENERATION)
|
.setResourceId(ID_IMAGE_TEMPERATURE)
|
||||||
.build()
|
.build()
|
||||||
)
|
)
|
||||||
.addContent(
|
.addContent(
|
||||||
Text.Builder()
|
Text.Builder()
|
||||||
.setText(if (generation <= 0) "0" else generation.toString())
|
.setText(String.format("%.02f", temperature))
|
||||||
.setFontStyle(FontStyles.display3(deviceParameters).build())
|
.setFontStyle(FontStyles.display3(deviceParameters).build())
|
||||||
.build()
|
.build()
|
||||||
).build()
|
).build()
|
||||||
|
|
||||||
private fun consumptionLayout(consumption: Double, deviceParameters: DeviceParameters) =
|
private fun humidityLayout(humidity: Double, deviceParameters: DeviceParameters) =
|
||||||
Row.Builder()
|
Row.Builder()
|
||||||
.addContent(
|
.addContent(
|
||||||
Image.Builder()
|
Image.Builder()
|
||||||
@@ -159,12 +173,40 @@ class WeatherTileService : TileService() {
|
|||||||
)
|
)
|
||||||
.build()
|
.build()
|
||||||
)
|
)
|
||||||
.setResourceId(ID_IMAGE_CONSUMPTION)
|
.setResourceId(ID_IMAGE_HUMIDITY)
|
||||||
.build()
|
.build()
|
||||||
)
|
)
|
||||||
.addContent(
|
.addContent(
|
||||||
Text.Builder()
|
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())
|
.setFontStyle(FontStyles.display3(deviceParameters).build())
|
||||||
.build()
|
.build()
|
||||||
).build()
|
).build()
|
||||||
|
|||||||
10
WearOS/src/src/main/res/drawable/ic_humidity.xml
Normal file
10
WearOS/src/src/main/res/drawable/ic_humidity.xml
Normal 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>
|
||||||
10
WearOS/src/src/main/res/drawable/ic_temperature.xml
Normal file
10
WearOS/src/src/main/res/drawable/ic_temperature.xml
Normal 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>
|
||||||
Reference in New Issue
Block a user