123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- package eu.kanade.presentation.browse.components
- import androidx.compose.foundation.clickable
- import androidx.compose.foundation.layout.Arrangement
- import androidx.compose.foundation.layout.Box
- import androidx.compose.foundation.layout.Column
- import androidx.compose.foundation.layout.Row
- import androidx.compose.foundation.layout.fillMaxWidth
- import androidx.compose.foundation.layout.padding
- import androidx.compose.foundation.layout.size
- import androidx.compose.material.icons.Icons
- import androidx.compose.material.icons.outlined.ArrowForward
- import androidx.compose.material.icons.outlined.Error
- import androidx.compose.material3.CircularProgressIndicator
- import androidx.compose.material3.Icon
- import androidx.compose.material3.IconButton
- import androidx.compose.material3.MaterialTheme
- import androidx.compose.material3.Text
- import androidx.compose.runtime.Composable
- import androidx.compose.ui.Alignment
- import androidx.compose.ui.Modifier
- import androidx.compose.ui.res.stringResource
- import androidx.compose.ui.unit.dp
- import eu.kanade.presentation.util.padding
- import eu.kanade.tachiyomi.R
- @Composable
- fun GlobalSearchResultItem(
- title: String,
- subtitle: String,
- onClick: () -> Unit,
- content: @Composable () -> Unit,
- ) {
- Column {
- Row(
- modifier = Modifier
- .padding(
- start = MaterialTheme.padding.medium,
- end = MaterialTheme.padding.tiny,
- )
- .fillMaxWidth()
- .clickable(onClick = onClick),
- horizontalArrangement = Arrangement.SpaceBetween,
- verticalAlignment = Alignment.CenterVertically,
- ) {
- Column {
- Text(
- text = title,
- style = MaterialTheme.typography.titleMedium,
- )
- Text(text = subtitle)
- }
- IconButton(onClick = onClick) {
- Icon(imageVector = Icons.Outlined.ArrowForward, contentDescription = null)
- }
- }
- content()
- }
- }
- @Composable
- fun GlobalSearchEmptyResultItem() {
- Text(
- text = stringResource(id = R.string.no_results_found),
- modifier = Modifier
- .padding(
- horizontal = MaterialTheme.padding.medium,
- vertical = MaterialTheme.padding.small,
- ),
- )
- }
- @Composable
- fun GlobalSearchLoadingResultItem() {
- Box(
- modifier = Modifier
- .fillMaxWidth()
- .padding(vertical = MaterialTheme.padding.medium),
- ) {
- CircularProgressIndicator(
- modifier = Modifier
- .size(16.dp)
- .align(Alignment.Center),
- strokeWidth = 2.dp,
- )
- }
- }
- @Composable
- fun GlobalSearchErrorResultItem(message: String?) {
- Column(
- modifier = Modifier
- .padding(vertical = MaterialTheme.padding.medium)
- .fillMaxWidth(),
- horizontalAlignment = Alignment.CenterHorizontally,
- verticalArrangement = Arrangement.Center,
- ) {
- Icon(imageVector = Icons.Outlined.Error, contentDescription = null)
- Text(text = message ?: stringResource(id = R.string.unknown_error))
- }
- }
|