Minor cleanup

Mostly just addressing comments from #8452
This commit is contained in:
arkon
2022-11-13 12:24:52 -05:00
parent 3407eb84c5
commit b1ccebf329
15 changed files with 102 additions and 127 deletions
@@ -62,7 +62,7 @@ fun SourceIcon(
} }
else -> { else -> {
Image( Image(
painter = painterResource(id = R.mipmap.ic_local_source), painter = painterResource(R.mipmap.ic_local_source),
contentDescription = null, contentDescription = null,
modifier = modifier.then(defaultModifier), modifier = modifier.then(defaultModifier),
) )
@@ -95,7 +95,7 @@ private fun NotDownloadedIndicator(
contentAlignment = Alignment.Center, contentAlignment = Alignment.Center,
) { ) {
Icon( Icon(
painter = painterResource(id = R.drawable.ic_download_chapter_24dp), painter = painterResource(R.drawable.ic_download_chapter_24dp),
contentDescription = stringResource(R.string.manga_download), contentDescription = stringResource(R.string.manga_download),
modifier = Modifier.size(IndicatorSize), modifier = Modifier.size(IndicatorSize),
tint = MaterialTheme.colorScheme.onSurfaceVariant, tint = MaterialTheme.colorScheme.onSurfaceVariant,
@@ -0,0 +1,34 @@
package eu.kanade.presentation.components
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import eu.kanade.tachiyomi.data.track.TrackService
@Composable
fun TrackLogoIcon(
service: TrackService,
) {
Box(
modifier = Modifier
.size(48.dp)
.background(color = Color(service.getLogoColor()), shape = MaterialTheme.shapes.medium)
.padding(4.dp),
contentAlignment = Alignment.Center,
) {
Image(
painter = painterResource(service.getLogo()),
contentDescription = stringResource(service.nameRes()),
)
}
}
@@ -72,7 +72,7 @@ fun CrashScreen(
}, },
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
) { ) {
Text(text = stringResource(id = R.string.pref_dump_crash_logs)) Text(text = stringResource(R.string.pref_dump_crash_logs))
} }
OutlinedButton( OutlinedButton(
onClick = onRestartClick, onClick = onRestartClick,
@@ -102,7 +102,7 @@ fun CrashScreen(
style = MaterialTheme.typography.titleLarge, style = MaterialTheme.typography.titleLarge,
) )
Text( Text(
text = stringResource(R.string.crash_screen_description, stringResource(id = R.string.app_name)), text = stringResource(R.string.crash_screen_description, stringResource(R.string.app_name)),
modifier = Modifier modifier = Modifier
.padding(vertical = MaterialTheme.padding.small), .padding(vertical = MaterialTheme.padding.small),
) )
@@ -208,12 +208,12 @@ private fun SetAsDefaultDialog(
var optionalChecked by rememberSaveable { mutableStateOf(false) } var optionalChecked by rememberSaveable { mutableStateOf(false) }
AlertDialog( AlertDialog(
onDismissRequest = onDismissRequest, onDismissRequest = onDismissRequest,
title = { Text(text = stringResource(id = R.string.chapter_settings)) }, title = { Text(text = stringResource(R.string.chapter_settings)) },
text = { text = {
Column( Column(
verticalArrangement = Arrangement.spacedBy(12.dp), verticalArrangement = Arrangement.spacedBy(12.dp),
) { ) {
Text(text = stringResource(id = R.string.confirm_set_chapter_settings)) Text(text = stringResource(R.string.confirm_set_chapter_settings))
Row( Row(
modifier = Modifier modifier = Modifier
@@ -227,13 +227,13 @@ private fun SetAsDefaultDialog(
checked = optionalChecked, checked = optionalChecked,
onCheckedChange = null, onCheckedChange = null,
) )
Text(text = stringResource(id = R.string.also_set_chapter_settings_for_library)) Text(text = stringResource(R.string.also_set_chapter_settings_for_library))
} }
} }
}, },
dismissButton = { dismissButton = {
TextButton(onClick = onDismissRequest) { TextButton(onClick = onDismissRequest) {
Text(text = stringResource(id = android.R.string.cancel)) Text(text = stringResource(android.R.string.cancel))
} }
}, },
confirmButton = { confirmButton = {
@@ -242,7 +242,7 @@ private fun SetAsDefaultDialog(
onConfirmed(optionalChecked) onConfirmed(optionalChecked)
}, },
) { ) {
Text(text = stringResource(id = android.R.string.ok)) Text(text = stringResource(android.R.string.ok))
} }
}, },
) )
@@ -257,7 +257,7 @@ private fun MoreMenu(
IconButton(onClick = { expanded = true }) { IconButton(onClick = { expanded = true }) {
Icon( Icon(
imageVector = Icons.Default.MoreVert, imageVector = Icons.Default.MoreVert,
contentDescription = stringResource(id = R.string.label_more), contentDescription = stringResource(R.string.label_more),
) )
} }
DropdownMenu( DropdownMenu(
@@ -292,17 +292,17 @@ private fun FilterPage(
.verticalScroll(rememberScrollState()), .verticalScroll(rememberScrollState()),
) { ) {
FilterPageItem( FilterPageItem(
label = stringResource(id = R.string.action_filter_downloaded), label = stringResource(R.string.action_filter_downloaded),
state = downloadFilter, state = downloadFilter,
onClick = onDownloadFilterChanged, onClick = onDownloadFilterChanged,
) )
FilterPageItem( FilterPageItem(
label = stringResource(id = R.string.action_filter_unread), label = stringResource(R.string.action_filter_unread),
state = unreadFilter, state = unreadFilter,
onClick = onUnreadFilterChanged, onClick = onUnreadFilterChanged,
) )
FilterPageItem( FilterPageItem(
label = stringResource(id = R.string.action_filter_bookmarked), label = stringResource(R.string.action_filter_bookmarked),
state = bookmarkedFilter, state = bookmarkedFilter,
onClick = onBookmarkedFilterChanged, onClick = onBookmarkedFilterChanged,
) )
@@ -372,17 +372,17 @@ private fun SortPage(
} }
SortPageItem( SortPageItem(
label = stringResource(id = R.string.sort_by_source), label = stringResource(R.string.sort_by_source),
statusIcon = arrowIcon.takeIf { sortingMode == Manga.CHAPTER_SORTING_SOURCE }, statusIcon = arrowIcon.takeIf { sortingMode == Manga.CHAPTER_SORTING_SOURCE },
onClick = { onItemSelected(Manga.CHAPTER_SORTING_SOURCE) }, onClick = { onItemSelected(Manga.CHAPTER_SORTING_SOURCE) },
) )
SortPageItem( SortPageItem(
label = stringResource(id = R.string.sort_by_number), label = stringResource(R.string.sort_by_number),
statusIcon = arrowIcon.takeIf { sortingMode == Manga.CHAPTER_SORTING_NUMBER }, statusIcon = arrowIcon.takeIf { sortingMode == Manga.CHAPTER_SORTING_NUMBER },
onClick = { onItemSelected(Manga.CHAPTER_SORTING_NUMBER) }, onClick = { onItemSelected(Manga.CHAPTER_SORTING_NUMBER) },
) )
SortPageItem( SortPageItem(
label = stringResource(id = R.string.sort_by_upload_date), label = stringResource(R.string.sort_by_upload_date),
statusIcon = arrowIcon.takeIf { sortingMode == Manga.CHAPTER_SORTING_UPLOAD_DATE }, statusIcon = arrowIcon.takeIf { sortingMode == Manga.CHAPTER_SORTING_UPLOAD_DATE },
onClick = { onItemSelected(Manga.CHAPTER_SORTING_UPLOAD_DATE) }, onClick = { onItemSelected(Manga.CHAPTER_SORTING_UPLOAD_DATE) },
) )
@@ -432,12 +432,12 @@ private fun DisplayPage(
.verticalScroll(rememberScrollState()), .verticalScroll(rememberScrollState()),
) { ) {
DisplayPageItem( DisplayPageItem(
label = stringResource(id = R.string.show_title), label = stringResource(R.string.show_title),
selected = displayMode == Manga.CHAPTER_DISPLAY_NAME, selected = displayMode == Manga.CHAPTER_DISPLAY_NAME,
onClick = { onItemSelected(Manga.CHAPTER_DISPLAY_NAME) }, onClick = { onItemSelected(Manga.CHAPTER_DISPLAY_NAME) },
) )
DisplayPageItem( DisplayPageItem(
label = stringResource(id = R.string.show_chapter_number), label = stringResource(R.string.show_chapter_number),
selected = displayMode == Manga.CHAPTER_DISPLAY_NUMBER, selected = displayMode == Manga.CHAPTER_DISPLAY_NUMBER,
onClick = { onItemSelected(Manga.CHAPTER_DISPLAY_NUMBER) }, onClick = { onItemSelected(Manga.CHAPTER_DISPLAY_NUMBER) },
) )
@@ -1,9 +1,6 @@
package eu.kanade.presentation.manga package eu.kanade.presentation.manga
import androidx.annotation.ColorInt
import androidx.annotation.DrawableRes
import androidx.compose.animation.animateContentSize import androidx.compose.animation.animateContentSize
import androidx.compose.foundation.Image
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
@@ -15,15 +12,12 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Delete
import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material.icons.filled.MoreVert
import androidx.compose.material.icons.filled.OpenInBrowser
import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
@@ -39,15 +33,15 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.alpha
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import eu.kanade.presentation.components.Divider import eu.kanade.presentation.components.Divider
import eu.kanade.presentation.components.DropdownMenu import eu.kanade.presentation.components.DropdownMenu
import eu.kanade.presentation.components.TrackLogoIcon
import eu.kanade.presentation.components.VerticalDivider import eu.kanade.presentation.components.VerticalDivider
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.track.TrackService
import eu.kanade.tachiyomi.ui.manga.track.TrackItem import eu.kanade.tachiyomi.ui.manga.track.TrackItem
import java.text.DateFormat import java.text.DateFormat
@@ -82,8 +76,7 @@ fun TrackInfoDialogHome(
val supportsReadingDates = item.service.supportsReadingDates val supportsReadingDates = item.service.supportsReadingDates
TrackInfoItem( TrackInfoItem(
title = item.track.title, title = item.track.title,
logoRes = item.service.getLogo(), service = item.service,
logoColor = item.service.getLogoColor(),
status = item.service.getStatus(item.track.status), status = item.service.getStatus(item.track.status),
onStatusClick = { onStatusClick(item) }, onStatusClick = { onStatusClick(item) },
chapters = "${item.track.last_chapter_read.toInt()}".let { chapters = "${item.track.last_chapter_read.toInt()}".let {
@@ -114,8 +107,7 @@ fun TrackInfoDialogHome(
) )
} else { } else {
TrackInfoItemEmpty( TrackInfoItemEmpty(
logoRes = item.service.getLogo(), service = item.service,
logoColor = item.service.getLogoColor(),
onNewSearch = { onNewSearch(item) }, onNewSearch = { onNewSearch(item) },
) )
} }
@@ -126,8 +118,7 @@ fun TrackInfoDialogHome(
@Composable @Composable
private fun TrackInfoItem( private fun TrackInfoItem(
title: String, title: String,
@DrawableRes logoRes: Int, service: TrackService,
@ColorInt logoColor: Int,
status: String, status: String,
onStatusClick: () -> Unit, onStatusClick: () -> Unit,
chapters: String, chapters: String,
@@ -146,20 +137,7 @@ private fun TrackInfoItem(
Row( Row(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Box( TrackLogoIcon(service)
modifier = Modifier
.clip(RoundedCornerShape(12.dp))
.clickable(onClick = onOpenInBrowser)
.size(48.dp)
.background(color = Color(logoColor))
.padding(4.dp),
contentAlignment = Alignment.Center,
) {
Image(
painter = painterResource(id = logoRes),
contentDescription = null,
)
}
Box( Box(
modifier = Modifier modifier = Modifier
.height(48.dp) .height(48.dp)
@@ -185,7 +163,7 @@ private fun TrackInfoItem(
Box( Box(
modifier = Modifier modifier = Modifier
.padding(top = 12.dp) .padding(top = 12.dp)
.clip(RoundedCornerShape(12.dp)) .clip(MaterialTheme.shapes.medium)
.background(MaterialTheme.colorScheme.surface) .background(MaterialTheme.colorScheme.surface)
.padding(8.dp) .padding(8.dp)
.clip(RoundedCornerShape(6.dp)), .clip(RoundedCornerShape(6.dp)),
@@ -209,7 +187,7 @@ private fun TrackInfoItem(
modifier = Modifier modifier = Modifier
.weight(1f) .weight(1f)
.alpha(if (score == null) UnsetStatusTextAlpha else 1f), .alpha(if (score == null) UnsetStatusTextAlpha else 1f),
text = score ?: stringResource(id = R.string.score), text = score ?: stringResource(R.string.score),
onClick = onScoreClick, onClick = onScoreClick,
) )
} }
@@ -219,18 +197,16 @@ private fun TrackInfoItem(
Divider() Divider()
Row(modifier = Modifier.height(IntrinsicSize.Min)) { Row(modifier = Modifier.height(IntrinsicSize.Min)) {
TrackDetailsItem( TrackDetailsItem(
modifier = Modifier modifier = Modifier.weight(1F),
.weight(1F) text = startDate,
.alpha(if (startDate == null) UnsetStatusTextAlpha else 1f), placeholder = stringResource(R.string.track_started_reading_date),
text = startDate ?: stringResource(id = R.string.track_started_reading_date),
onClick = onStartDateClick, onClick = onStartDateClick,
) )
VerticalDivider() VerticalDivider()
TrackDetailsItem( TrackDetailsItem(
modifier = Modifier modifier = Modifier.weight(1F),
.weight(1F) text = endDate,
.alpha(if (endDate == null) UnsetStatusTextAlpha else 1f), placeholder = stringResource(R.string.track_finished_reading_date),
text = endDate ?: stringResource(id = R.string.track_finished_reading_date),
onClick = onEndDateClick, onClick = onEndDateClick,
) )
} }
@@ -243,17 +219,19 @@ private fun TrackInfoItem(
@Composable @Composable
private fun TrackDetailsItem( private fun TrackDetailsItem(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
text: String, text: String?,
placeholder: String = "",
onClick: () -> Unit, onClick: () -> Unit,
) { ) {
Box( Box(
modifier = modifier modifier = modifier
.clickable(onClick = onClick) .clickable(onClick = onClick)
.alpha(if (text == null) UnsetStatusTextAlpha else 1f)
.padding(12.dp), .padding(12.dp),
contentAlignment = Alignment.Center, contentAlignment = Alignment.Center,
) { ) {
Text( Text(
text = text, text = text ?: placeholder,
maxLines = 1, maxLines = 1,
style = MaterialTheme.typography.bodyMedium, style = MaterialTheme.typography.bodyMedium,
) )
@@ -262,33 +240,20 @@ private fun TrackDetailsItem(
@Composable @Composable
private fun TrackInfoItemEmpty( private fun TrackInfoItemEmpty(
@DrawableRes logoRes: Int, service: TrackService,
@ColorInt logoColor: Int,
onNewSearch: () -> Unit, onNewSearch: () -> Unit,
) { ) {
Row( Row(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Box( TrackLogoIcon(service)
modifier = Modifier
.clip(RoundedCornerShape(12.dp))
.size(48.dp)
.background(color = Color(logoColor))
.padding(4.dp),
contentAlignment = Alignment.Center,
) {
Image(
painter = painterResource(id = logoRes),
contentDescription = null,
)
}
TextButton( TextButton(
onClick = onNewSearch, onClick = onNewSearch,
modifier = Modifier modifier = Modifier
.padding(start = 16.dp) .padding(start = 16.dp)
.weight(1f), .weight(1f),
) { ) {
Text(text = stringResource(id = R.string.add_tracking)) Text(text = stringResource(R.string.add_tracking))
} }
} }
} }
@@ -303,7 +268,7 @@ private fun TrackInfoItemMenu(
IconButton(onClick = { expanded = true }) { IconButton(onClick = { expanded = true }) {
Icon( Icon(
imageVector = Icons.Default.MoreVert, imageVector = Icons.Default.MoreVert,
contentDescription = stringResource(id = R.string.label_more), contentDescription = stringResource(R.string.label_more),
) )
} }
DropdownMenu( DropdownMenu(
@@ -312,9 +277,6 @@ private fun TrackInfoItemMenu(
) { ) {
DropdownMenuItem( DropdownMenuItem(
text = { Text(stringResource(R.string.action_open_in_browser)) }, text = { Text(stringResource(R.string.action_open_in_browser)) },
leadingIcon = {
Icon(imageVector = Icons.Default.OpenInBrowser, contentDescription = null)
},
onClick = { onClick = {
onOpenInBrowser() onOpenInBrowser()
expanded = false expanded = false
@@ -322,9 +284,6 @@ private fun TrackInfoItemMenu(
) )
DropdownMenuItem( DropdownMenuItem(
text = { Text(stringResource(R.string.action_remove)) }, text = { Text(stringResource(R.string.action_remove)) },
leadingIcon = {
Icon(imageVector = Icons.Default.Delete, contentDescription = null)
},
onClick = { onClick = {
onRemoved() onRemoved()
expanded = false expanded = false
@@ -50,7 +50,7 @@ fun TrackStatusSelector(
) { ) {
BaseSelector( BaseSelector(
contentPadding = contentPadding, contentPadding = contentPadding,
title = stringResource(id = R.string.status), title = stringResource(R.string.status),
content = { content = {
val state = rememberLazyListState() val state = rememberLazyListState()
ScrollbarLazyColumn(state = state) { ScrollbarLazyColumn(state = state) {
@@ -100,7 +100,7 @@ fun TrackChapterSelector(
) { ) {
BaseSelector( BaseSelector(
contentPadding = contentPadding, contentPadding = contentPadding,
title = stringResource(id = R.string.chapters), title = stringResource(R.string.chapters),
content = { content = {
WheelTextPicker( WheelTextPicker(
modifier = Modifier.align(Alignment.Center), modifier = Modifier.align(Alignment.Center),
@@ -128,7 +128,7 @@ fun TrackScoreSelector(
) { ) {
BaseSelector( BaseSelector(
contentPadding = contentPadding, contentPadding = contentPadding,
title = stringResource(id = R.string.score), title = stringResource(R.string.score),
content = { content = {
WheelTextPicker( WheelTextPicker(
modifier = Modifier.align(Alignment.Center), modifier = Modifier.align(Alignment.Center),
@@ -185,7 +185,7 @@ fun TrackDateSelector(
thirdButton = if (onRemove != null) { thirdButton = if (onRemove != null) {
{ {
TextButton(onClick = onRemove) { TextButton(onClick = onRemove) {
Text(text = stringResource(id = R.string.action_remove)) Text(text = stringResource(R.string.action_remove))
} }
} }
} else { } else {
@@ -224,10 +224,10 @@ private fun BaseSelector(
Spacer(modifier = Modifier.weight(1f)) Spacer(modifier = Modifier.weight(1f))
} }
TextButton(onClick = onDismissRequest) { TextButton(onClick = onDismissRequest) {
Text(text = stringResource(id = android.R.string.cancel)) Text(text = stringResource(android.R.string.cancel))
} }
TextButton(onClick = onConfirm) { TextButton(onClick = onConfirm) {
Text(text = stringResource(id = android.R.string.ok)) Text(text = stringResource(android.R.string.ok))
} }
} }
}, },
@@ -165,7 +165,7 @@ fun TrackServiceSearch(
.fillMaxWidth(), .fillMaxWidth(),
elevation = ButtonDefaults.elevatedButtonElevation(), elevation = ButtonDefaults.elevatedButtonElevation(),
) { ) {
Text(text = stringResource(id = R.string.action_track)) Text(text = stringResource(R.string.action_track))
} }
} }
}, },
@@ -206,7 +206,7 @@ fun TrackServiceSearch(
EmptyScreen( EmptyScreen(
modifier = Modifier.padding(innerPadding), modifier = Modifier.padding(innerPadding),
message = queryResult.exceptionOrNull()?.message message = queryResult.exceptionOrNull()?.message
?: stringResource(id = R.string.unknown_error), ?: stringResource(R.string.unknown_error),
) )
} }
} }
@@ -264,19 +264,19 @@ private fun SearchResultItem(
) )
if (type.isNotBlank()) { if (type.isNotBlank()) {
SearchResultItemDetails( SearchResultItemDetails(
title = stringResource(id = R.string.track_type), title = stringResource(R.string.track_type),
text = type, text = type,
) )
} }
if (startDate.isNotBlank()) { if (startDate.isNotBlank()) {
SearchResultItemDetails( SearchResultItemDetails(
title = stringResource(id = R.string.track_start_date), title = stringResource(R.string.track_start_date),
text = startDate, text = startDate,
) )
} }
if (status.isNotBlank()) { if (status.isNotBlank()) {
SearchResultItemDetails( SearchResultItemDetails(
title = stringResource(id = R.string.track_status), title = stringResource(R.string.track_status),
text = status, text = status,
) )
} }
@@ -156,9 +156,7 @@ internal fun PreferenceItem(
.collectAsState() .collectAsState()
item.service.run { item.service.run {
TrackingPreferenceWidget( TrackingPreferenceWidget(
title = item.title, service = this,
logoRes = getLogo(),
logoColor = getLogoColor(),
checked = uName.isNotEmpty(), checked = uName.isNotEmpty(),
onClick = { if (isLogged) item.logout() else item.login() }, onClick = { if (isLogged) item.logout() else item.login() },
) )
@@ -96,7 +96,7 @@ sealed class Preference {
v.map { e[it] } v.map { e[it] }
.takeIf { it.isNotEmpty() } .takeIf { it.isNotEmpty() }
?.joinToString() ?.joinToString()
} ?: stringResource(id = R.string.none) } ?: stringResource(R.string.none)
subtitle?.format(combined) subtitle?.format(combined)
}, },
override val icon: ImageVector? = null, override val icon: ImageVector? = null,
@@ -23,7 +23,7 @@ fun PreferenceScaffold(
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBar( TopAppBar(
title = { Text(text = stringResource(id = titleRes)) }, title = { Text(text = stringResource(titleRes)) },
navigationIcon = { navigationIcon = {
if (onBackPressed != null) { if (onBackPressed != null) {
IconButton(onClick = onBackPressed) { IconButton(onClick = onBackPressed) {
@@ -52,7 +52,7 @@ internal fun InfoWidget(text: String) {
private fun InfoWidgetPreview() { private fun InfoWidgetPreview() {
TachiyomiTheme { TachiyomiTheme {
Surface { Surface {
InfoWidget(text = stringResource(id = R.string.download_ahead_info)) InfoWidget(text = stringResource(R.string.download_ahead_info))
} }
} }
} }
@@ -1,9 +1,5 @@
package eu.kanade.presentation.more.settings.widget package eu.kanade.presentation.more.settings.widget
import androidx.annotation.ColorInt
import androidx.annotation.DrawableRes
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
@@ -19,18 +15,17 @@ import androidx.compose.runtime.Composable
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.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import eu.kanade.presentation.components.TrackLogoIcon
import eu.kanade.presentation.more.settings.LocalPreferenceHighlighted import eu.kanade.presentation.more.settings.LocalPreferenceHighlighted
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.track.TrackService
@Composable @Composable
fun TrackingPreferenceWidget( fun TrackingPreferenceWidget(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
title: String, service: TrackService,
@DrawableRes logoRes: Int,
@ColorInt logoColor: Int,
checked: Boolean, checked: Boolean,
onClick: (() -> Unit)? = null, onClick: (() -> Unit)? = null,
) { ) {
@@ -43,20 +38,9 @@ fun TrackingPreferenceWidget(
.padding(horizontal = PrefsHorizontalPadding, vertical = 8.dp), .padding(horizontal = PrefsHorizontalPadding, vertical = 8.dp),
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
) { ) {
Box( TrackLogoIcon(service)
modifier = Modifier
.size(48.dp)
.background(color = Color(logoColor), shape = MaterialTheme.shapes.small)
.padding(4.dp),
contentAlignment = Alignment.Center,
) {
Image(
painter = painterResource(id = logoRes),
contentDescription = null,
)
}
Text( Text(
text = title, text = stringResource(service.nameRes()),
modifier = Modifier modifier = Modifier
.weight(1f) .weight(1f)
.padding(horizontal = 16.dp), .padding(horizontal = 16.dp),
@@ -244,7 +244,7 @@ class LocalSource(
val comicInfo = AndroidXmlReader(stream, StandardCharsets.UTF_8.name()).use { val comicInfo = AndroidXmlReader(stream, StandardCharsets.UTF_8.name()).use {
xml.decodeFromReader<ComicInfo>(it) xml.decodeFromReader<ComicInfo>(it)
} }
manga.copyFromComicInfo(comicInfo) manga.copyFromComicInfo(comicInfo)
} }
@@ -427,9 +427,9 @@ private data class TrackDateSelectorScreen(
TrackDateSelector( TrackDateSelector(
contentPadding = LocalNavigatorContentPadding.current, contentPadding = LocalNavigatorContentPadding.current,
title = if (start) { title = if (start) {
stringResource(id = R.string.track_started_reading_date) stringResource(R.string.track_started_reading_date)
} else { } else {
stringResource(id = R.string.track_finished_reading_date) stringResource(R.string.track_finished_reading_date)
}, },
selection = state.selection, selection = state.selection,
onSelectionChange = sm::setSelection, onSelectionChange = sm::setSelection,
@@ -509,7 +509,7 @@ private data class TrackDateRemoverScreen(
}, },
title = { title = {
Text( Text(
text = stringResource(id = R.string.track_remove_date_conf_title), text = stringResource(R.string.track_remove_date_conf_title),
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
) )
}, },
@@ -517,9 +517,9 @@ private data class TrackDateRemoverScreen(
val serviceName = stringResource(sm.getServiceNameRes()) val serviceName = stringResource(sm.getServiceNameRes())
Text( Text(
text = if (start) { text = if (start) {
stringResource(id = R.string.track_remove_start_date_conf_text, serviceName) stringResource(R.string.track_remove_start_date_conf_text, serviceName)
} else { } else {
stringResource(id = R.string.track_remove_finish_date_conf_text, serviceName) stringResource(R.string.track_remove_finish_date_conf_text, serviceName)
}, },
) )
}, },
@@ -529,7 +529,7 @@ private data class TrackDateRemoverScreen(
horizontalArrangement = Arrangement.spacedBy(8.dp, Alignment.End), horizontalArrangement = Arrangement.spacedBy(8.dp, Alignment.End),
) { ) {
TextButton(onClick = navigator::pop) { TextButton(onClick = navigator::pop) {
Text(text = stringResource(id = android.R.string.cancel)) Text(text = stringResource(android.R.string.cancel))
} }
FilledTonalButton( FilledTonalButton(
onClick = { sm.removeDate(); navigator.popUntilRoot() }, onClick = { sm.removeDate(); navigator.popUntilRoot() },
@@ -538,7 +538,7 @@ private data class TrackDateRemoverScreen(
contentColor = MaterialTheme.colorScheme.onErrorContainer, contentColor = MaterialTheme.colorScheme.onErrorContainer,
), ),
) { ) {
Text(text = stringResource(id = R.string.action_remove)) Text(text = stringResource(R.string.action_remove))
} }
} }
}, },