Skip to content

Commit b6e6b97

Browse files
committed
Replace text-based evaluation symbols with Material Design icons in OverviewScreen and TableScreen. Specifically, replace strings like "!", "▲", "▼", and "●" with Icons.Filled.Warning and Icons.Filled.Circle, adjusting icon sizes and alignment for consistent visual representation of evaluation states.
1 parent 4902ce9 commit b6e6b97

2 files changed

Lines changed: 50 additions & 19 deletions

File tree

android_app/app/src/main/java/com/health/openscale/ui/screen/overview/OverviewScreen.kt

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
*/
1818
package com.health.openscale.ui.screen.overview
1919

20-
import android.content.Context
2120
import android.widget.Toast
2221
import androidx.compose.animation.AnimatedVisibility
2322
import androidx.compose.foundation.BorderStroke
@@ -49,13 +48,15 @@ import androidx.compose.material.icons.filled.ArrowDownward
4948
import androidx.compose.material.icons.filled.ArrowUpward
5049
import androidx.compose.material.icons.filled.Assessment
5150
import androidx.compose.material.icons.filled.ChevronRight
51+
import androidx.compose.material.icons.filled.Circle
5252
import androidx.compose.material.icons.filled.Delete
5353
import androidx.compose.material.icons.filled.Edit
5454
import androidx.compose.material.icons.filled.Error
5555
import androidx.compose.material.icons.filled.ExpandLess
5656
import androidx.compose.material.icons.filled.ExpandMore
5757
import androidx.compose.material.icons.filled.PersonAdd
5858
import androidx.compose.material.icons.filled.PersonSearch
59+
import androidx.compose.material.icons.filled.Warning
5960
import androidx.compose.material.icons.outlined.Link
6061
import androidx.compose.material3.Button
6162
import androidx.compose.material3.ButtonDefaults
@@ -81,13 +82,13 @@ import androidx.compose.runtime.remember
8182
import androidx.compose.runtime.rememberCoroutineScope
8283
import androidx.compose.runtime.saveable.rememberSaveable
8384
import androidx.compose.runtime.setValue
84-
import androidx.compose.runtime.snapshotFlow
8585
import androidx.compose.ui.Alignment
8686
import androidx.compose.ui.Modifier
8787
import androidx.compose.ui.draw.clip
8888
import androidx.compose.ui.graphics.Color
8989
import androidx.compose.ui.graphics.compositeOver
9090
import androidx.compose.ui.graphics.luminance
91+
import androidx.compose.ui.graphics.vector.ImageVector
9192
import androidx.compose.ui.input.pointer.pointerInput
9293
import androidx.compose.ui.platform.LocalContext
9394
import androidx.compose.ui.res.stringResource
@@ -131,8 +132,6 @@ import com.health.openscale.ui.screen.settings.BluetoothViewModel
131132
import com.health.openscale.ui.shared.SharedViewModel
132133
import com.health.openscale.ui.shared.TopBarAction
133134
import kotlinx.coroutines.delay
134-
import kotlinx.coroutines.flow.filter
135-
import kotlinx.coroutines.flow.first
136135
import kotlinx.coroutines.launch
137136
import java.text.DateFormat
138137
import java.util.Date
@@ -976,12 +975,21 @@ fun MeasurementValueRow(
976975

977976
val flagged = noAgeBand || outOfPlausibleRange
978977
val evalState = evalResult?.state ?: EvaluationState.UNDEFINED
979-
val evalSymbol = if (flagged) "!" else when (evalState) {
980-
EvaluationState.LOW -> ""
981-
EvaluationState.NORMAL -> ""
982-
EvaluationState.HIGH -> ""
983-
EvaluationState.UNDEFINED -> ""
978+
val evalIcon: ImageVector? = if (flagged) Icons.Filled.Warning
979+
else when (evalState) {
980+
EvaluationState.LOW -> Icons.Filled.Circle
981+
EvaluationState.NORMAL -> Icons.Filled.Circle
982+
EvaluationState.HIGH -> Icons.Filled.Circle
983+
EvaluationState.UNDEFINED -> null
984984
}
985+
val iconSize = if (flagged) 14.dp
986+
else when (evalState) {
987+
EvaluationState.LOW -> 10.dp
988+
EvaluationState.NORMAL -> 10.dp
989+
EvaluationState.HIGH -> 10.dp
990+
EvaluationState.UNDEFINED -> 10.dp
991+
}
992+
985993
val evalColor = if (flagged) MaterialTheme.colorScheme.error else evalState.toColor()
986994

987995
Row(
@@ -1053,7 +1061,16 @@ fun MeasurementValueRow(
10531061
textAlign = TextAlign.End,
10541062
)
10551063
Spacer(Modifier.width(6.dp))
1056-
Text(text = evalSymbol, color = evalColor, style = MaterialTheme.typography.bodyLarge)
1064+
if (evalIcon != null) {
1065+
Icon(
1066+
imageVector = evalIcon,
1067+
contentDescription = null,
1068+
tint = evalColor,
1069+
modifier = Modifier.size(iconSize),
1070+
)
1071+
} else {
1072+
Spacer(modifier = Modifier.size(iconSize))
1073+
}
10571074
}
10581075
}
10591076
}

android_app/app/src/main/java/com/health/openscale/ui/screen/table/TableScreen.kt

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,12 @@ import androidx.compose.material.icons.Icons
4646
import androidx.compose.material.icons.filled.ArrowDownward
4747
import androidx.compose.material.icons.filled.ArrowUpward
4848
import androidx.compose.material.icons.filled.ChevronRight
49+
import androidx.compose.material.icons.filled.Circle
4950
import androidx.compose.material.icons.filled.Close
5051
import androidx.compose.material.icons.filled.Delete
5152
import androidx.compose.material.icons.filled.FileDownload
5253
import androidx.compose.material.icons.filled.SupervisorAccount
54+
import androidx.compose.material.icons.filled.Warning
5355
import androidx.compose.material.icons.outlined.CheckBox
5456
import androidx.compose.material3.Checkbox
5557
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -975,7 +977,7 @@ fun TableDataCellInternal(
975977
text = "",
976978
style = MaterialTheme.typography.bodyLarge,
977979
fontWeight = if (isAggregated) FontWeight.SemiBold else FontWeight.Normal,
978-
modifier = Modifier.alignByBaseline().padding(end = 2.dp),
980+
modifier = Modifier.padding(end = 2.dp),
979981
)
980982
}
981983
Text(
@@ -985,19 +987,31 @@ fun TableDataCellInternal(
985987
textAlign = alignment,
986988
maxLines = 2,
987989
overflow = TextOverflow.Ellipsis,
988-
modifier = Modifier.alignByBaseline(),
989990
)
990991
if (cellData.evalState != null) {
991-
val symbol = when {
992-
cellData.flagged -> "!"
993-
cellData.evalState == EvaluationState.HIGH -> ""
994-
cellData.evalState == EvaluationState.LOW -> ""
995-
else -> ""
992+
val evalIcon = when {
993+
cellData.flagged -> Icons.Filled.Warning
994+
cellData.evalState == EvaluationState.HIGH -> Icons.Filled.Circle
995+
cellData.evalState == EvaluationState.LOW -> Icons.Filled.Circle
996+
else -> Icons.Filled.Circle
996997
}
998+
999+
val iconSize = when {
1000+
cellData.flagged -> 14.dp
1001+
cellData.evalState == EvaluationState.HIGH -> 10.dp
1002+
cellData.evalState == EvaluationState.LOW -> 10.dp
1003+
else -> 10.dp
1004+
}
1005+
9971006
val color = if (cellData.flagged) MaterialTheme.colorScheme.error
9981007
else cellData.evalState.toColor()
999-
Box(Modifier.width(symbolColWidth).alignByBaseline(), Alignment.CenterEnd) {
1000-
Text(text = symbol, color = color, style = MaterialTheme.typography.bodyLarge)
1008+
Box(Modifier.width(symbolColWidth), Alignment.Center) {
1009+
Icon(
1010+
imageVector = evalIcon,
1011+
contentDescription = null,
1012+
tint = color,
1013+
modifier = Modifier.size(iconSize),
1014+
)
10011015
}
10021016
} else {
10031017
Spacer(Modifier.width(symbolColWidth))

0 commit comments

Comments
 (0)