|
@@ -31,6 +31,7 @@ import androidx.compose.ui.text.style.TextOverflow
|
|
|
import androidx.compose.ui.unit.dp
|
|
import androidx.compose.ui.unit.dp
|
|
|
import coil.compose.AsyncImage
|
|
import coil.compose.AsyncImage
|
|
|
import coil.request.ImageRequest
|
|
import coil.request.ImageRequest
|
|
|
|
|
+import com.sirekanian.spacetime.MainState
|
|
|
import com.sirekanian.spacetime.R
|
|
import com.sirekanian.spacetime.R
|
|
|
import com.sirekanian.spacetime.ext.DefaultAnimatedVisibility
|
|
import com.sirekanian.spacetime.ext.DefaultAnimatedVisibility
|
|
|
import com.sirekanian.spacetime.ext.VectorIconButton
|
|
import com.sirekanian.spacetime.ext.VectorIconButton
|
|
@@ -39,13 +40,14 @@ import com.sirekanian.spacetime.model.ImagePage
|
|
|
@Composable
|
|
@Composable
|
|
|
fun ImagePageContent(
|
|
fun ImagePageContent(
|
|
|
insets: PaddingValues,
|
|
insets: PaddingValues,
|
|
|
|
|
+ state: MainState,
|
|
|
page: ImagePage,
|
|
page: ImagePage,
|
|
|
onDelete: () -> Unit,
|
|
onDelete: () -> Unit,
|
|
|
onDone: (ImagePage) -> Unit,
|
|
onDone: (ImagePage) -> Unit,
|
|
|
) {
|
|
) {
|
|
|
- var isEditMode by remember { mutableStateOf(false) }
|
|
|
|
|
|
|
+ val isEditMode = state.editablePage == page.id
|
|
|
BackHandler(isEditMode) {
|
|
BackHandler(isEditMode) {
|
|
|
- isEditMode = false
|
|
|
|
|
|
|
+ state.editablePage = null
|
|
|
}
|
|
}
|
|
|
var name by remember(isEditMode) { mutableStateOf(page.name) }
|
|
var name by remember(isEditMode) { mutableStateOf(page.name) }
|
|
|
var date by remember(isEditMode) { mutableStateOf(page.date) }
|
|
var date by remember(isEditMode) { mutableStateOf(page.date) }
|
|
@@ -81,7 +83,7 @@ fun ImagePageContent(
|
|
|
)
|
|
)
|
|
|
DefaultAnimatedVisibility(visible = isEditMode) {
|
|
DefaultAnimatedVisibility(visible = isEditMode) {
|
|
|
Row(Modifier.padding(insets)) {
|
|
Row(Modifier.padding(insets)) {
|
|
|
- VectorIconButton(Icons.Default.Close, onClick = { isEditMode = false })
|
|
|
|
|
|
|
+ VectorIconButton(Icons.Default.Close, onClick = { state.editablePage = null })
|
|
|
Spacer(Modifier.weight(1f))
|
|
Spacer(Modifier.weight(1f))
|
|
|
if (name.isBlank() && date.value.isEmpty()) {
|
|
if (name.isBlank() && date.value.isEmpty()) {
|
|
|
TextButton(onClick = { onDelete() }) {
|
|
TextButton(onClick = { onDelete() }) {
|
|
@@ -91,7 +93,7 @@ fun ImagePageContent(
|
|
|
VectorIconButton(Icons.Default.Done, onClick = {
|
|
VectorIconButton(Icons.Default.Done, onClick = {
|
|
|
if (date.isValid()) {
|
|
if (date.isValid()) {
|
|
|
onDone(ImagePage(page.id, name, page.url, date, blur))
|
|
onDone(ImagePage(page.id, name, page.url, date, blur))
|
|
|
- isEditMode = false
|
|
|
|
|
|
|
+ state.editablePage = null
|
|
|
} else {
|
|
} else {
|
|
|
isDateValid = false
|
|
isDateValid = false
|
|
|
}
|
|
}
|
|
@@ -143,7 +145,7 @@ fun ImagePageContent(
|
|
|
.fillMaxWidth()
|
|
.fillMaxWidth()
|
|
|
.clip(MaterialTheme.shapes.small)
|
|
.clip(MaterialTheme.shapes.small)
|
|
|
.combinedClickable(onLongClick = {
|
|
.combinedClickable(onLongClick = {
|
|
|
- isEditMode = true
|
|
|
|
|
|
|
+ state.editablePage = page.id
|
|
|
haptic.performHapticFeedback(HapticFeedbackType.LongPress)
|
|
haptic.performHapticFeedback(HapticFeedbackType.LongPress)
|
|
|
}) {}
|
|
}) {}
|
|
|
.padding(16.dp),
|
|
.padding(16.dp),
|
|
@@ -164,7 +166,7 @@ fun ImagePageContent(
|
|
|
.fillMaxWidth()
|
|
.fillMaxWidth()
|
|
|
.clip(MaterialTheme.shapes.small)
|
|
.clip(MaterialTheme.shapes.small)
|
|
|
.combinedClickable(onLongClick = {
|
|
.combinedClickable(onLongClick = {
|
|
|
- isEditMode = true
|
|
|
|
|
|
|
+ state.editablePage = page.id
|
|
|
haptic.performHapticFeedback(HapticFeedbackType.LongPress)
|
|
haptic.performHapticFeedback(HapticFeedbackType.LongPress)
|
|
|
}) {}
|
|
}) {}
|
|
|
.padding(16.dp),
|
|
.padding(16.dp),
|