mirror of
https://github.com/home-assistant/android
synced 2024-10-02 22:34:46 +00:00
Add preview functions for easy UI viewing in Android Studio (#1901)
This commit is contained in:
parent
f419778e80
commit
b060f0c7f4
|
@ -99,6 +99,7 @@ dependencies {
|
|||
implementation("androidx.activity:activity-compose:1.4.0")
|
||||
implementation("androidx.compose.compiler:compiler:1.0.5")
|
||||
implementation("androidx.compose.foundation:foundation:1.0.5")
|
||||
implementation("androidx.compose.ui:ui-tooling:1.0.5")
|
||||
implementation("androidx.wear.compose:compose-foundation:1.0.0-alpha10")
|
||||
implementation("androidx.wear.compose:compose-material:1.0.0-alpha10")
|
||||
implementation("androidx.wear.compose:compose-navigation:1.0.0-alpha10")
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package io.homeassistant.companion.android.home.views
|
||||
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.runtime.Composable
|
||||
|
@ -8,6 +9,7 @@ import androidx.compose.ui.graphics.Color
|
|||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.colorResource
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.wear.compose.material.Chip
|
||||
import androidx.wear.compose.material.Text
|
||||
|
@ -19,6 +21,8 @@ import io.homeassistant.companion.android.R
|
|||
import io.homeassistant.companion.android.common.data.integration.Entity
|
||||
import io.homeassistant.companion.android.home.HomePresenterImpl
|
||||
import io.homeassistant.companion.android.util.getIcon
|
||||
import io.homeassistant.companion.android.util.previewEntity1
|
||||
import io.homeassistant.companion.android.util.previewEntity2
|
||||
import io.homeassistant.companion.android.util.setChipDefaults
|
||||
|
||||
@Composable
|
||||
|
@ -76,3 +80,18 @@ fun EntityUi(
|
|||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
private fun PreviewEntityUI() {
|
||||
Column {
|
||||
EntityUi(
|
||||
entity = previewEntity1,
|
||||
onEntityClicked = {}
|
||||
)
|
||||
EntityUi(
|
||||
entity = previewEntity2,
|
||||
onEntityClicked = {}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import androidx.compose.runtime.CompositionLocalProvider
|
|||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.wear.compose.material.Chip
|
||||
import androidx.wear.compose.material.ExperimentalWearMaterialApi
|
||||
|
@ -96,3 +97,10 @@ fun LoadHomePage(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ExperimentalWearMaterialApi
|
||||
@Preview
|
||||
@Composable
|
||||
private fun PreviewHomeView() {
|
||||
LoadHomePage(mainViewModel = MainViewModel())
|
||||
}
|
||||
|
|
|
@ -6,8 +6,10 @@ import androidx.compose.runtime.Composable
|
|||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.wear.compose.material.ListHeader
|
||||
import androidx.wear.compose.material.Text
|
||||
import io.homeassistant.companion.android.R
|
||||
|
||||
@Composable
|
||||
fun ListHeader(
|
||||
|
@ -39,3 +41,13 @@ fun ListHeader(id: Int) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
private fun PreviewListHeader() {
|
||||
ListHeader(
|
||||
stringId = R.string.other,
|
||||
expanded = true,
|
||||
onExpandChanged = {}
|
||||
)
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.fillMaxSize
|
|||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
|
@ -17,6 +18,7 @@ import androidx.compose.ui.res.colorResource
|
|||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.wear.compose.material.Chip
|
||||
import androidx.wear.compose.material.ChipDefaults
|
||||
|
@ -32,8 +34,11 @@ import com.mikepenz.iconics.compose.Image
|
|||
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
||||
import io.homeassistant.companion.android.R
|
||||
import io.homeassistant.companion.android.common.data.integration.Entity
|
||||
import io.homeassistant.companion.android.util.LocalRotaryEventDispatcher
|
||||
import io.homeassistant.companion.android.util.RotaryEventDispatcher
|
||||
import io.homeassistant.companion.android.util.RotaryEventState
|
||||
import io.homeassistant.companion.android.util.previewEntityList
|
||||
import io.homeassistant.companion.android.util.previewFavoritesList
|
||||
import io.homeassistant.companion.android.util.setChipDefaults
|
||||
|
||||
@ExperimentalWearMaterialApi
|
||||
|
@ -233,3 +238,21 @@ fun MainView(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ExperimentalWearMaterialApi
|
||||
@Preview
|
||||
@Composable
|
||||
private fun PreviewMainView() {
|
||||
val rotaryEventDispatcher = RotaryEventDispatcher()
|
||||
|
||||
CompositionLocalProvider(
|
||||
LocalRotaryEventDispatcher provides rotaryEventDispatcher
|
||||
) {
|
||||
MainView(
|
||||
entities = previewEntityList,
|
||||
favoriteEntityIds = previewFavoritesList,
|
||||
onEntityClicked = {},
|
||||
onSettingsClicked = {}
|
||||
) {}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import androidx.compose.runtime.Composable
|
|||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.wear.compose.material.Chip
|
||||
import androidx.wear.compose.material.ChipDefaults
|
||||
|
@ -59,3 +60,12 @@ fun OtherSection(
|
|||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
private fun PreviewOtherSection() {
|
||||
OtherSection(
|
||||
onSettingsClicked = {},
|
||||
onLogoutClicked = {}
|
||||
)
|
||||
}
|
||||
|
|
|
@ -5,12 +5,14 @@ import androidx.compose.foundation.layout.fillMaxSize
|
|||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.colorResource
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.wear.compose.material.ExperimentalWearMaterialApi
|
||||
import androidx.wear.compose.material.PositionIndicator
|
||||
|
@ -26,8 +28,13 @@ import com.mikepenz.iconics.compose.Image
|
|||
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
||||
import io.homeassistant.companion.android.R
|
||||
import io.homeassistant.companion.android.common.data.integration.Entity
|
||||
import io.homeassistant.companion.android.util.LocalRotaryEventDispatcher
|
||||
import io.homeassistant.companion.android.util.RotaryEventDispatcher
|
||||
import io.homeassistant.companion.android.util.RotaryEventHandlerSetup
|
||||
import io.homeassistant.companion.android.util.RotaryEventState
|
||||
import io.homeassistant.companion.android.util.getIcon
|
||||
import io.homeassistant.companion.android.util.previewEntityList
|
||||
import io.homeassistant.companion.android.util.previewFavoritesList
|
||||
|
||||
@ExperimentalWearMaterialApi
|
||||
@Composable
|
||||
|
@ -104,3 +111,20 @@ fun SetFavoritesView(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ExperimentalWearMaterialApi
|
||||
@Preview
|
||||
@Composable
|
||||
private fun PreviewSetFavoriteView() {
|
||||
val rotaryEventDispatcher = RotaryEventDispatcher()
|
||||
CompositionLocalProvider(
|
||||
LocalRotaryEventDispatcher provides rotaryEventDispatcher
|
||||
) {
|
||||
RotaryEventHandlerSetup(rotaryEventDispatcher)
|
||||
SetFavoritesView(
|
||||
validEntities = previewEntityList,
|
||||
favoriteEntityIds = previewFavoritesList,
|
||||
onFavoriteSelected = { _, _ -> }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import androidx.compose.runtime.Composable
|
|||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.wear.compose.material.Chip
|
||||
import androidx.wear.compose.material.ChipDefaults
|
||||
|
@ -14,6 +15,7 @@ import androidx.wear.compose.material.Text
|
|||
import com.mikepenz.iconics.compose.Image
|
||||
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
||||
import io.homeassistant.companion.android.R
|
||||
import io.homeassistant.companion.android.util.previewFavoritesList
|
||||
|
||||
@Composable
|
||||
fun SettingsView(
|
||||
|
@ -64,3 +66,13 @@ fun SettingsView(
|
|||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
private fun PreviewSettingsView() {
|
||||
SettingsView(
|
||||
favorites = previewFavoritesList,
|
||||
onClickSetFavorites = { /*TODO*/ },
|
||||
onClearFavorites = {}
|
||||
)
|
||||
}
|
||||
|
|
20
wear/src/main/java/io/homeassistant/companion/android/util/PreviewData.kt
Executable file
20
wear/src/main/java/io/homeassistant/companion/android/util/PreviewData.kt
Executable file
|
@ -0,0 +1,20 @@
|
|||
package io.homeassistant.companion.android.util
|
||||
|
||||
import io.homeassistant.companion.android.common.data.integration.Entity
|
||||
import java.util.Calendar
|
||||
|
||||
val attributes: Map<*, *> = mapOf(
|
||||
"friendly_name" to "Testing",
|
||||
"icon" to "mdi:cellphone"
|
||||
)
|
||||
|
||||
private val calendar: Calendar = Calendar.getInstance()
|
||||
|
||||
val previewEntity1 = Entity("light.test", "on", attributes, calendar, calendar, mapOf())
|
||||
val previewEntity2 = Entity("scene.test", "on", attributes, calendar, calendar, mapOf())
|
||||
|
||||
val previewEntityList = listOf(
|
||||
previewEntity1, previewEntity2
|
||||
)
|
||||
|
||||
val previewFavoritesList = listOf("light.test")
|
Loading…
Reference in a new issue