diff --git a/android_app/app/src/main/java/com/health/openscale/ui/navigation/AppNavigation.kt b/android_app/app/src/main/java/com/health/openscale/ui/navigation/AppNavigation.kt index b342f6c4..511b1381 100644 --- a/android_app/app/src/main/java/com/health/openscale/ui/navigation/AppNavigation.kt +++ b/android_app/app/src/main/java/com/health/openscale/ui/navigation/AppNavigation.kt @@ -92,6 +92,7 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.Lifecycle @@ -486,7 +487,11 @@ fun AppNavigation(sharedViewModel: SharedViewModel) { }, topBar = { TopAppBar( - title = { Text(topBarTitle) }, + title = { Text( + text = topBarTitle, + maxLines = 1, + overflow = TextOverflow.Ellipsis + ) }, colors = TopAppBarDefaults.topAppBarColors( containerColor = Black, titleContentColor = White, diff --git a/android_app/app/src/main/java/com/health/openscale/ui/screen/components/MeasurementTypeFilterRow.kt b/android_app/app/src/main/java/com/health/openscale/ui/screen/components/MeasurementTypeFilterRow.kt index da717476..141bda14 100644 --- a/android_app/app/src/main/java/com/health/openscale/ui/screen/components/MeasurementTypeFilterRow.kt +++ b/android_app/app/src/main/java/com/health/openscale/ui/screen/components/MeasurementTypeFilterRow.kt @@ -184,7 +184,7 @@ fun MeasurementTypeFilterRow( modifier = modifier .fillMaxWidth() .horizontalScroll(rememberScrollState()) - .padding(horizontal = 8.dp, vertical = 12.dp), + .padding(horizontal = 8.dp, vertical = 8.dp), horizontalArrangement = Arrangement.spacedBy(spaceBetweenItems), verticalAlignment = Alignment.CenterVertically ) { diff --git a/android_app/app/src/main/java/com/health/openscale/ui/screen/overview/OverviewScreen.kt b/android_app/app/src/main/java/com/health/openscale/ui/screen/overview/OverviewScreen.kt index 15198d3f..126379ba 100644 --- a/android_app/app/src/main/java/com/health/openscale/ui/screen/overview/OverviewScreen.kt +++ b/android_app/app/src/main/java/com/health/openscale/ui/screen/overview/OverviewScreen.kt @@ -621,7 +621,6 @@ fun OverviewScreen( Box( modifier = Modifier .fillMaxWidth() - .height(16.dp) .pointerInput(Unit) { detectDragGestures ( onDrag = { change, dragAmount -> @@ -643,7 +642,6 @@ fun OverviewScreen( contentAlignment = Alignment.Center ) { HorizontalDivider( - modifier = Modifier.padding(vertical = 6.dp), thickness = 1.dp, color = MaterialTheme.colorScheme.outline.copy(alpha = 0.5f) ) @@ -651,7 +649,7 @@ fun OverviewScreen( // Goals Section if (userGoals.isNotEmpty()) { - Column(modifier = Modifier.padding(bottom = 8.dp)) { + Column { Row( modifier = Modifier .fillMaxWidth() @@ -661,7 +659,7 @@ fun OverviewScreen( sharedViewModel.setMyGoalsExpandedOverview(newIsGoalsSectionExpanded) } } - .padding(horizontal = 16.dp, vertical = 12.dp), + .padding(horizontal = 16.dp, vertical = 8.dp), verticalAlignment = Alignment.CenterVertically, ) { Box( @@ -674,7 +672,6 @@ fun OverviewScreen( style = MaterialTheme.typography.titleMedium ) if (!isGoalsSectionExpanded && userGoals.isNotEmpty()) { - Spacer(Modifier.width(6.dp)) Text( text = "(${userGoals.size})", style = MaterialTheme.typography.titleMedium, @@ -698,7 +695,6 @@ fun OverviewScreen( modifier = Modifier.fillMaxWidth(), contentPadding = PaddingValues( horizontal = 16.dp, - vertical = 8.dp ), horizontalArrangement = Arrangement.spacedBy(10.dp) ) { diff --git a/android_app/app/src/main/java/com/health/openscale/ui/widget/MeasurementWidget.kt b/android_app/app/src/main/java/com/health/openscale/ui/widget/MeasurementWidget.kt index c07b93bd..0729347a 100644 --- a/android_app/app/src/main/java/com/health/openscale/ui/widget/MeasurementWidget.kt +++ b/android_app/app/src/main/java/com/health/openscale/ui/widget/MeasurementWidget.kt @@ -62,12 +62,16 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.withContext import java.text.DecimalFormat import androidx.compose.ui.graphics.Color +import androidx.glance.LocalSize +import androidx.glance.appwidget.SizeMode import androidx.glance.appwidget.state.updateAppWidgetState import com.health.openscale.core.data.IconResource +import kotlin.collections.firstOrNull class MeasurementWidget : GlanceAppWidget() { // Enable currentState() inside provideContent override val stateDefinition = PreferencesGlanceStateDefinition + override val sizeMode = SizeMode.Exact companion object { /** Recompose all widget instances. */ @@ -192,7 +196,7 @@ class MeasurementWidget : GlanceAppWidget() { label = t.getDisplayName(context), icon = t.icon, badgeColor = if (t.color != 0) - ColorProvider(androidx.compose.ui.graphics.Color(t.color)) else null, + ColorProvider(Color(t.color)) else null, symbol = symbol, evaluationState = evalState, valueWithUnit = valueWithUnit, @@ -206,10 +210,17 @@ class MeasurementWidget : GlanceAppWidget() { val themeColors = GlanceTheme.colors val launch = Intent(context, MainActivity::class.java) + val size = LocalSize.current + + val scaleFactor = minOf( + size.width.value / 110f, + size.height.value / 40f, + 4f + ).coerceAtLeast(0.5f) + Box( modifier = GlanceModifier .fillMaxSize() - .padding(8.dp) .clickable(actionStartActivity(launch)), contentAlignment = Alignment.Center ) { @@ -234,7 +245,8 @@ class MeasurementWidget : GlanceAppWidget() { circleColor = uiPayload!!.badgeColor ?: themeColors.secondary, textColor = textColor, subTextColor = subTextColor, - symbolColor = ColorProvider(uiPayload!!.evaluationState.toColor()) + symbolColor = ColorProvider(uiPayload!!.evaluationState.toColor()), + scaleFactor = scaleFactor ) } } @@ -278,20 +290,22 @@ private fun ValueWithDeltaRow( circleColor: ColorProvider, textColor: ColorProvider, subTextColor: ColorProvider, - symbolColor: ColorProvider + symbolColor: ColorProvider, + scaleFactor : Float ) { - Row(modifier = GlanceModifier.padding(12.dp), verticalAlignment = Alignment.CenterVertically) { - GlanceRoundMeasurementIcon(icon, iconContentDescription, 28.dp, circleColor, R.drawable.ic_weight) - Spacer(GlanceModifier.size(10.dp)) + Row(verticalAlignment = Alignment.CenterVertically) { + val fontSize = 8.sp + GlanceRoundMeasurementIcon(icon, iconContentDescription, 21.dp * scaleFactor, circleColor, R.drawable.ic_weight) + Spacer(GlanceModifier.size(10.dp * scaleFactor)) Column { - Text(text = label, style = TextStyle(fontWeight = FontWeight.Medium, color = textColor)) + Text(text = label, style = TextStyle(fontSize = fontSize * scaleFactor, fontWeight = FontWeight.Medium, color = textColor)) Row(verticalAlignment = Alignment.CenterVertically) { - Text(text = valueWithUnit, style = TextStyle(color = textColor)) - Spacer(GlanceModifier.size(6.dp)) - Text(text = symbol, style = TextStyle(color = symbolColor)) + Text(text = valueWithUnit, style = TextStyle(fontSize = fontSize * scaleFactor, color = textColor)) + Spacer(GlanceModifier.size(6.dp*scaleFactor)) + Text(text = symbol, style = TextStyle(fontSize = fontSize * scaleFactor, color = symbolColor)) } if (deltaText.isNotBlank()) { - Text(text = deltaText, style = TextStyle(fontSize = 12.sp, color = subTextColor)) + Text(text = deltaText, style = TextStyle(fontSize = fontSize * scaleFactor, color = subTextColor)) } } } @@ -312,8 +326,8 @@ private fun GlanceRoundMeasurementIcon( } Box( modifier = GlanceModifier - .size(size + 18.dp) - .cornerRadius((size + 18.dp) / 2) + .size(size + 24.dp) + .cornerRadius((size + 18.dp) / 2f) .background(circleColor), contentAlignment = Alignment.Center ) {