Common buttons

This commit is contained in:
Pierre-Yves Nicolas
2025-07-06 14:37:00 +02:00
parent da78c1a57c
commit 2455f2cfc7
3 changed files with 42 additions and 43 deletions

View File

@@ -15,9 +15,13 @@
package org.mydomain.myscan.view
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.material3.Button
import androidx.compose.material3.FilledIconButton
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButtonDefaults
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
@@ -39,3 +43,26 @@ fun MainActionButton(
Text(text)
}
}
@Composable
fun SecondaryActionButton(
icon: ImageVector,
contentDescription: String,
onClick: () -> Unit,
modifier: Modifier = Modifier
) {
FilledIconButton (
onClick = onClick,
colors = IconButtonDefaults.outlinedIconButtonColors(
containerColor = MaterialTheme.colorScheme.secondaryContainer.copy(alpha = 0.6f),
contentColor = MaterialTheme.colorScheme.primary
),
modifier = modifier.size(40.dp)
) {
Icon(
imageVector = icon,
contentDescription = contentDescription,
tint = MaterialTheme.colorScheme.primary
)
}
}

View File

@@ -43,8 +43,9 @@ import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Done
import androidx.compose.material3.BottomAppBar
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Surface
@@ -407,13 +408,12 @@ fun CameraScreenFooter(
style = MaterialTheme.typography.bodyMedium,
modifier = Modifier.clickable(onClick = onPageCountClick)
)
Button (
MainActionButton(
onClick = onFinalizePressed,
enabled = pageCount > 0
) {
Text("Finish")
}
enabled = pageCount > 0,
text = "Finish",
icon = Icons.Default.Done,
)
}
}
}

View File

@@ -27,7 +27,6 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
@@ -37,12 +36,9 @@ import androidx.compose.material.icons.filled.PictureAsPdf
import androidx.compose.material.icons.filled.RestartAlt
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.FilledIconButton
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.IconButtonDefaults
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
@@ -60,7 +56,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Size
import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
@@ -168,7 +163,7 @@ private fun DocumentPreview(
)
}
}
MyIconButton(
SecondaryActionButton(
Icons.Outlined.Delete,
contentDescription = "Delete page",
onClick = { onDeleteImage(imageId) },
@@ -205,7 +200,7 @@ private fun PageList(
onPageClick = { index -> currentPageIndex.value = index },
currentPageIndex = currentPageIndex.value,
)
MyIconButton(
SecondaryActionButton(
icon = Icons.Default.Add,
onClick = toCameraScreen,
contentDescription = "Add page",
@@ -229,13 +224,13 @@ private fun BottomBar(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.End
) {
Button(onClick = { showPdfDialog.value = true }) {
Icon(Icons.Default.PictureAsPdf, contentDescription = "Generate PDF")
Spacer(Modifier.width(8.dp))
Text("Generate PDF")
}
MainActionButton(
onClick = { showPdfDialog.value = true },
icon = Icons.Default.PictureAsPdf,
text = "Generate PDF",
)
Spacer(modifier = Modifier.width(8.dp))
MyIconButton(
SecondaryActionButton(
icon = Icons.Default.RestartAlt,
contentDescription = "Restart",
onClick = { showNewDocDialog.value = true },
@@ -266,29 +261,6 @@ fun NewDocumentDialog(onConfirm: () -> Unit, showDialog: MutableState<Boolean>)
)
}
@Composable
fun MyIconButton(
icon: ImageVector,
contentDescription: String,
onClick: () -> Unit,
modifier: Modifier = Modifier
) {
FilledIconButton (
onClick = onClick,
colors = IconButtonDefaults.outlinedIconButtonColors(
containerColor = MaterialTheme.colorScheme.secondaryContainer.copy(alpha = 0.6f),
contentColor = MaterialTheme.colorScheme.primary
),
modifier = modifier.size(40.dp)
) {
Icon(
imageVector = icon,
contentDescription = contentDescription,
tint = MaterialTheme.colorScheme.primary
)
}
}
@Composable
@Preview
fun DocumentScreenPreview() {