Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.Scaffold
import androidx.compose.material.SnackbarHost
import androidx.compose.material.Text
import androidx.compose.material.rememberScaffoldState
import androidx.compose.material3.Scaffold
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
Expand All @@ -21,7 +21,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import io.homeassistant.companion.android.common.R as commonR
import io.homeassistant.companion.android.common.compose.theme.HATheme
import io.homeassistant.companion.android.common.compose.theme.LocalHAColorScheme
import io.homeassistant.companion.android.common.data.integration.Entity
import io.homeassistant.companion.android.common.data.integration.friendlyName
import io.homeassistant.companion.android.settings.wear.SettingsWearViewModel
Expand Down Expand Up @@ -65,20 +65,20 @@ fun LoadWearFavoritesSettings(
}
}

val scaffoldState = rememberScaffoldState()
val snackbarHostState = remember { SnackbarHostState() }
LaunchedEffect("snackbar") {
events.onEach { message ->
scaffoldState.snackbarHostState.currentSnackbarData?.dismiss() // in case of rapid-fire events
scaffoldState.snackbarHostState.showSnackbar(message)
snackbarHostState.currentSnackbarData?.dismiss() // in case of rapid-fire events
snackbarHostState.showSnackbar(message)
}.launchIn(this)
}

Scaffold(
modifier = modifier,
scaffoldState = scaffoldState,
containerColor = LocalHAColorScheme.current.colorSurfaceDefault,
snackbarHost = {
SnackbarHost(
hostState = scaffoldState.snackbarHostState,
hostState = snackbarHostState,
modifier = Modifier.windowInsetsPadding(safeBottomWindowInsets()),
)
},
Expand All @@ -101,25 +101,23 @@ fun LoadWearFavoritesSettings(
text = stringResource(commonR.string.wear_set_favorites),
fontWeight = FontWeight.Bold,
modifier = Modifier.padding(horizontal = 16.dp),
color = LocalHAColorScheme.current.colorTextPrimary,
)
}
item {
// TODO use new theme for Material3 components https://github.com/home-assistant/android/issues/6300
HATheme {
EntityPicker(
entities = validEntities,
selectedEntityId = null,
onEntityCleared = { /* Nothing */ },
onEntitySelectedId = {
settingsWearViewModel.onEntitySelected(true, it)
},
addButtonText = stringResource(commonR.string.add_favorite),
modifier = Modifier.padding(all = 16.dp),
// In order to have the info about the area/device/zone we need the websocket, it would
// requires SettingsWearRepository to be able to use the WebSocket which is a significant
// work.
)
}
EntityPicker(
entities = validEntities,
selectedEntityId = null,
onEntityCleared = { /* Nothing */ },
onEntitySelectedId = {
settingsWearViewModel.onEntitySelected(true, it)
},
addButtonText = stringResource(commonR.string.add_favorite),
modifier = Modifier.padding(all = 16.dp),
// In order to have the info about the area/device/zone we need the websocket, it would
// requires SettingsWearRepository to be able to use the WebSocket which is a significant
// work.
)
}
items(favoriteEntities.size, { favoriteEntities[it] }) { index ->
val favoriteEntityID = favoriteEntities[index].replace("[", "").replace("]", "")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,13 @@ package io.homeassistant.companion.android.settings.wear.views

import android.content.Intent
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.material.IconButton
import androidx.compose.material.TopAppBar
import androidx.compose.material3.IconButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.stringResource
import androidx.core.net.toUri
import androidx.navigation.NavType
Expand All @@ -21,8 +19,10 @@ import androidx.navigation.navArgument
import com.mikepenz.iconics.compose.Image
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import io.homeassistant.companion.android.common.R as commonR
import io.homeassistant.companion.android.common.compose.composable.HATopBar
import io.homeassistant.companion.android.common.compose.theme.HATheme
import io.homeassistant.companion.android.common.compose.theme.LocalHAColorScheme
import io.homeassistant.companion.android.settings.wear.SettingsWearViewModel
import io.homeassistant.companion.android.util.compose.HomeAssistantAppTheme
import io.homeassistant.companion.android.util.safeTopWindowInsets

const val WEAR_DOCS_LINK = "https://companion.home-assistant.io/docs/wear-os/"
Expand All @@ -35,7 +35,7 @@ fun LoadSettingsHomeView(
onStartBackClicked: () -> Unit,
modifier: Modifier = Modifier,
) {
HomeAssistantAppTheme {
HATheme {
val navController = rememberNavController()
NavHost(
navController = navController,
Expand Down Expand Up @@ -114,14 +114,14 @@ fun SettingsWearTopAppBar(
docsLink: String? = null,
) {
val context = LocalContext.current
TopAppBar(
HATopBar(
title = title,
modifier = modifier.windowInsetsPadding(safeTopWindowInsets()),
navigationIcon = {
IconButton(onClick = onBackClicked) {
Image(
asset = CommunityMaterial.Icon.cmd_arrow_left,
colorFilter = ColorFilter.tint(colorResource(commonR.color.colorOnBackground)),
colorFilter = ColorFilter.tint(LocalHAColorScheme.current.colorOnNeutralQuiet),
)
}
},
Expand All @@ -136,12 +136,12 @@ fun SettingsWearTopAppBar(
Image(
asset = CommunityMaterial.Icon2.cmd_help_circle_outline,
contentDescription = stringResource(commonR.string.help),
colorFilter = ColorFilter.tint(colorResource(commonR.color.colorOnBackground)),
colorFilter = ColorFilter.tint(LocalHAColorScheme.current.colorOnNeutralQuiet),
)
}
}
},
backgroundColor = colorResource(id = commonR.color.colorBackground),
contentColor = colorResource(id = commonR.color.colorOnBackground),
containerColor = LocalHAColorScheme.current.colorSurfaceDefault,
contentColor = LocalHAColorScheme.current.colorTextPrimary,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,16 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.Button
import androidx.compose.material.CircularProgressIndicator
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Scaffold
import androidx.compose.material.SnackbarHost
import androidx.compose.material.Text
import androidx.compose.material.rememberScaffoldState
import androidx.compose.material3.Button
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
Expand All @@ -25,6 +26,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
import io.homeassistant.companion.android.common.R as commonR
import io.homeassistant.companion.android.common.compose.theme.LocalHAColorScheme
import io.homeassistant.companion.android.settings.views.SettingsRow
import io.homeassistant.companion.android.util.safeBottomPaddingValues
import io.homeassistant.companion.android.util.safeBottomWindowInsets
Expand All @@ -46,19 +48,19 @@ fun SettingWearLandingView(
events: Flow<String>,
modifier: Modifier = Modifier,
) {
val scaffoldState = rememberScaffoldState()
val snackbarHostState = remember { SnackbarHostState() }
LaunchedEffect("snackbar") {
events.onEach { message ->
scaffoldState.snackbarHostState.showSnackbar(message)
snackbarHostState.showSnackbar(message)
}.launchIn(this)
}

Scaffold(
modifier = modifier,
scaffoldState = scaffoldState,
containerColor = LocalHAColorScheme.current.colorSurfaceDefault,
snackbarHost = {
SnackbarHost(
hostState = scaffoldState.snackbarHostState,
hostState = snackbarHostState,
modifier = Modifier.windowInsetsPadding(safeBottomWindowInsets()),
)
},
Expand All @@ -85,9 +87,9 @@ fun SettingWearLandingView(
) {
Text(
text = stringResource(id = commonR.string.manage_wear_device, deviceName),
style = MaterialTheme.typography.body2,
style = MaterialTheme.typography.bodyMedium,
fontWeight = FontWeight.Bold,
color = MaterialTheme.colors.primary,
color = LocalHAColorScheme.current.colorOnNeutralQuiet,
)
}
when {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Button
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Scaffold
import androidx.compose.material.Text
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
Expand All @@ -21,6 +21,8 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import io.homeassistant.companion.android.common.R as commonR
import io.homeassistant.companion.android.common.compose.theme.HATheme
import io.homeassistant.companion.android.common.compose.theme.LocalHAColorScheme
import io.homeassistant.companion.android.settings.wear.SettingsWearViewModel
import io.homeassistant.companion.android.util.compose.HomeAssistantAppTheme
import io.homeassistant.companion.android.util.safeBottomPaddingValues
Expand All @@ -32,20 +34,22 @@ internal fun SettingsWearOnboardingView(
onFinishInstallOnDevices: () -> Unit,
onBackClicked: () -> Unit,
) {
val uiState by settingsWearViewModel.settingsWearOnboardingViewUiState.collectAsStateWithLifecycle(
SettingsWearViewModel.SettingsWearOnboardingViewUiState(),
)
HATheme {
val uiState by settingsWearViewModel.settingsWearOnboardingViewUiState.collectAsStateWithLifecycle(
SettingsWearViewModel.SettingsWearOnboardingViewUiState(),
)

if (uiState.installedOnDevices) {
onFinishInstallOnDevices()
}
if (uiState.installedOnDevices) {
onFinishInstallOnDevices()
}

SettingsWearOnboardingViewContent(
infoTextTitleResource = uiState.infoTextResourceId,
shouldDisplayRemoteAppInstallButton = uiState.shouldShowRemoteInstallButton,
onInstallOnWearDeviceClicked = onInstallOnWearDeviceClicked,
onBackClicked = onBackClicked,
)
SettingsWearOnboardingViewContent(
infoTextTitleResource = uiState.infoTextResourceId,
shouldDisplayRemoteAppInstallButton = uiState.shouldShowRemoteInstallButton,
onInstallOnWearDeviceClicked = onInstallOnWearDeviceClicked,
onBackClicked = onBackClicked,
)
}
}

@Composable
Expand All @@ -56,6 +60,7 @@ internal fun SettingsWearOnboardingViewContent(
onBackClicked: () -> Unit,
) {
Scaffold(
containerColor = LocalHAColorScheme.current.colorSurfaceDefault,
topBar = {
SettingsWearTopAppBar(
title = {
Expand All @@ -81,7 +86,7 @@ internal fun SettingsWearOnboardingViewContent(
style = TextStyle(
fontSize = 20.sp,
fontWeight = FontWeight.Light,
color = colorResource(commonR.color.colorHeadline1),
color = LocalHAColorScheme.current.colorTextPrimary,
),
modifier = Modifier.padding(start = 15.dp, top = 50.dp, end = 15.dp),
)
Expand All @@ -91,13 +96,11 @@ internal fun SettingsWearOnboardingViewContent(
onClick = onInstallOnWearDeviceClicked,
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 50.dp),
.padding(bottom = 50.dp, start = 16.dp, end = 16.dp),
) {
Text(
text = stringResource(commonR.string.install_app).uppercase(),
letterSpacing = 1.sp,
style = MaterialTheme.typography.body2,
color = colorResource(commonR.color.colorBackground),
text = stringResource(commonR.string.install_app),
style = MaterialTheme.typography.labelLarge,
fontWeight = FontWeight.Bold,
)
}
Expand Down
Loading