From 4cad3679a9bb0e9fb8c0d9608739366e37447184 Mon Sep 17 00:00:00 2001 From: Nedifinita Date: Fri, 1 Aug 2025 17:44:26 +0800 Subject: [PATCH] fix: improve TRAIN_OR_LOCO merge display and settings scroll --- .../lbjconsole/ui/screens/HistoryScreen.kt | 24 +++++++++++++++++++ .../lbjconsole/ui/screens/SettingsScreen.kt | 5 ++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/noxylva/lbjconsole/ui/screens/HistoryScreen.kt b/app/src/main/java/org/noxylva/lbjconsole/ui/screens/HistoryScreen.kt index eeb60bc..b8438a1 100644 --- a/app/src/main/java/org/noxylva/lbjconsole/ui/screens/HistoryScreen.kt +++ b/app/src/main/java/org/noxylva/lbjconsole/ui/screens/HistoryScreen.kt @@ -771,6 +771,30 @@ fun MergedTrainRecordItem( "${recordItem.locoType}-${recordItem.loco}" } else null } + GroupBy.TRAIN_OR_LOCO -> { + val latestTrain = mergedRecord.latestRecord.train.trim() + val latestLoco = mergedRecord.latestRecord.loco.trim() + val recordTrain = recordItem.train.trim() + val recordLoco = recordItem.loco.trim() + + when { + latestTrain.isNotEmpty() && latestTrain != "" && + recordTrain.isNotEmpty() && recordTrain != "" && + latestTrain == recordTrain -> { + if (recordLoco.isNotEmpty() && recordLoco != "") { + "${recordItem.locoType}-${recordLoco}" + } else null + } + latestLoco.isNotEmpty() && latestLoco != "" && + recordLoco.isNotEmpty() && recordLoco != "" && + latestLoco == recordLoco -> { + if (recordTrain.isNotEmpty() && recordTrain != "") { + recordTrain + } else null + } + else -> null + } + } else -> null } diff --git a/app/src/main/java/org/noxylva/lbjconsole/ui/screens/SettingsScreen.kt b/app/src/main/java/org/noxylva/lbjconsole/ui/screens/SettingsScreen.kt index 8cb370a..40d4246 100644 --- a/app/src/main/java/org/noxylva/lbjconsole/ui/screens/SettingsScreen.kt +++ b/app/src/main/java/org/noxylva/lbjconsole/ui/screens/SettingsScreen.kt @@ -47,13 +47,12 @@ fun SettingsScreen( val scrollState = rememberScrollState() LaunchedEffect(scrollPosition) { - if (scrollState.value != scrollPosition) { - scrollState.scrollTo(scrollPosition) + if (scrollPosition > 0 && scrollState.value != scrollPosition) { + scrollState.animateScrollTo(scrollPosition) } } LaunchedEffect(scrollState.value) { - delay(50) onScrollPositionChange(scrollState.value) }