DocumentScreen: highlight which page is currently selected

This commit is contained in:
Pierre-Yves Nicolas
2025-06-08 13:47:17 +02:00
parent a855dca5a8
commit 840c2f1233

View File

@@ -18,6 +18,7 @@ import android.graphics.Bitmap
import android.graphics.BitmapFactory import android.graphics.BitmapFactory
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
@@ -32,6 +33,7 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Add
@@ -57,6 +59,7 @@ import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
@@ -72,6 +75,7 @@ fun DocumentScreen(
onSharePressed: () -> Unit, onSharePressed: () -> Unit,
onDeleteImage: (String) -> Unit, onDeleteImage: (String) -> Unit,
) { ) {
// TODO Check how often images are loaded
val currentPageIndex = rememberSaveable { mutableIntStateOf(0) } val currentPageIndex = rememberSaveable { mutableIntStateOf(0) }
if (currentPageIndex.intValue >= pageIds.size) { if (currentPageIndex.intValue >= pageIds.size) {
currentPageIndex.intValue = pageIds.size - 1 currentPageIndex.intValue = pageIds.size - 1
@@ -183,12 +187,15 @@ private fun PageList(
itemsIndexed (pageIds) { index, id -> itemsIndexed (pageIds) { index, id ->
// TODO Use small images rather than big ones // TODO Use small images rather than big ones
val bitmap = imageLoader(id).asImageBitmap() val bitmap = imageLoader(id).asImageBitmap()
val isSelected = index == currentPageIndex.value
val borderColor = if (isSelected) MaterialTheme.colorScheme.primary else Color.Transparent
Image( Image(
bitmap = bitmap, bitmap = bitmap,
contentDescription = null, contentDescription = null,
modifier = Modifier modifier = Modifier
.height(120.dp) .height(120.dp)
.padding(4.dp) .padding(4.dp)
.border(2.dp, borderColor)
.clickable { currentPageIndex.value = index } .clickable { currentPageIndex.value = index }
) )
} }