Put FloawRow list stanzas list 75% width & Change verse on drag left/right

This commit is contained in:
Hasinjato 2026-10-05 10:12:08 +03:00
parent 373eed0b0e
commit 47350c6286

View file

@ -2,6 +2,7 @@ package mg.dot.feufaro
import SharedScreenModel
import androidx.compose.foundation.background
import androidx.compose.foundation.gestures.detectHorizontalDragGestures
import androidx.compose.foundation.gestures.detectTapGestures
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
@ -52,6 +53,7 @@ object ScreenSolfa : Screen {
val tuoList by sharedScreenModel.tuoList.collectAsState()
val measure by sharedScreenModel.measure.collectAsState()
val stanza by sharedScreenModel.stanza.collectAsState()
val nbStanzas: Int by sharedScreenModel.nbStanzas.collectAsState()
val gridTUOData = remember(tuoList, measure, stanza) { GridTUOData(measure, tuoList, stanza) }
val coroutineScope = rememberCoroutineScope()
val scrollState = rememberScrollState()
@ -147,6 +149,38 @@ object ScreenSolfa : Screen {
}
)
}
.pointerInput(stanza, nbStanzas) {
var totalDragX = 0f
detectHorizontalDragGestures(
onDragStart = { totalDragX = 0f },
onDragEnd = {
val currentStanza = stanza.toString().toIntOrNull() ?: 1
val threshold = 70f
if (totalDragX < -threshold) {
// Droite -> Gauche
if (currentStanza < nbStanzas) {
sharedScreenModel.setStanza(currentStanza + 1)
coroutineScope.launch {
scrollState.animateScrollTo(0)
}
}
} else if (totalDragX > threshold) {
// Gauche -> Droite
if (currentStanza > 1) {
sharedScreenModel.setStanza(currentStanza - 1)
coroutineScope.launch {
scrollState.animateScrollTo(0)
}
}
}
},
onHorizontalDrag = { change, dragAmount ->
change.consume()
totalDragX += dragAmount
}
)
}
.onGloballyPositioned { coordinates ->
viewportHeight = coordinates.size.height
},
@ -253,7 +287,7 @@ object ScreenSolfa : Screen {
}
}
FlowRow(
modifier = Modifier.fillMaxWidth()
modifier = Modifier.fillMaxWidth(0.75f)
//.windowInsetsPadding(WindowInsets.safeDrawing)
.padding(start = 8.dp, end = 8.dp, top = 8.dp),
horizontalArrangement = Arrangement.spacedBy(16.dp),