|
|
@ -6,7 +6,7 @@ import androidx.compose.foundation.layout.PaddingValues
|
|
|
|
import androidx.compose.foundation.layout.Row
|
|
|
|
import androidx.compose.foundation.layout.Row
|
|
|
|
import androidx.compose.foundation.layout.height
|
|
|
|
import androidx.compose.foundation.layout.height
|
|
|
|
import androidx.compose.foundation.lazy.LazyColumn
|
|
|
|
import androidx.compose.foundation.lazy.LazyColumn
|
|
|
|
import androidx.compose.foundation.lazy.rememberLazyListState
|
|
|
|
import androidx.compose.foundation.lazy.LazyItemScope
|
|
|
|
import androidx.compose.material.icons.Icons
|
|
|
|
import androidx.compose.material.icons.Icons
|
|
|
|
import androidx.compose.material.icons.outlined.CollectionsBookmark
|
|
|
|
import androidx.compose.material.icons.outlined.CollectionsBookmark
|
|
|
|
import androidx.compose.material.icons.outlined.LocalLibrary
|
|
|
|
import androidx.compose.material.icons.outlined.LocalLibrary
|
|
|
@ -18,10 +18,10 @@ import androidx.compose.ui.Modifier
|
|
|
|
import androidx.compose.ui.platform.LocalContext
|
|
|
|
import androidx.compose.ui.platform.LocalContext
|
|
|
|
import eu.kanade.presentation.more.stats.components.StatsItem
|
|
|
|
import eu.kanade.presentation.more.stats.components.StatsItem
|
|
|
|
import eu.kanade.presentation.more.stats.components.StatsOverviewItem
|
|
|
|
import eu.kanade.presentation.more.stats.components.StatsOverviewItem
|
|
|
|
import eu.kanade.presentation.more.stats.components.StatsSection
|
|
|
|
|
|
|
|
import eu.kanade.presentation.more.stats.data.StatsData
|
|
|
|
import eu.kanade.presentation.more.stats.data.StatsData
|
|
|
|
import eu.kanade.presentation.util.toDurationString
|
|
|
|
import eu.kanade.presentation.util.toDurationString
|
|
|
|
import tachiyomi.i18n.MR
|
|
|
|
import tachiyomi.i18n.MR
|
|
|
|
|
|
|
|
import tachiyomi.presentation.core.components.SectionCard
|
|
|
|
import tachiyomi.presentation.core.components.material.padding
|
|
|
|
import tachiyomi.presentation.core.components.material.padding
|
|
|
|
import tachiyomi.presentation.core.i18n.stringResource
|
|
|
|
import tachiyomi.presentation.core.i18n.stringResource
|
|
|
|
import java.util.Locale
|
|
|
|
import java.util.Locale
|
|
|
@ -33,9 +33,7 @@ fun StatsScreenContent(
|
|
|
|
state: StatsScreenState.Success,
|
|
|
|
state: StatsScreenState.Success,
|
|
|
|
paddingValues: PaddingValues,
|
|
|
|
paddingValues: PaddingValues,
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
val statListState = rememberLazyListState()
|
|
|
|
|
|
|
|
LazyColumn(
|
|
|
|
LazyColumn(
|
|
|
|
state = statListState,
|
|
|
|
|
|
|
|
contentPadding = paddingValues,
|
|
|
|
contentPadding = paddingValues,
|
|
|
|
verticalArrangement = Arrangement.spacedBy(MaterialTheme.padding.small),
|
|
|
|
verticalArrangement = Arrangement.spacedBy(MaterialTheme.padding.small),
|
|
|
|
) {
|
|
|
|
) {
|
|
|
@ -55,7 +53,7 @@ fun StatsScreenContent(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
@Composable
|
|
|
|
private fun OverviewSection(
|
|
|
|
private fun LazyItemScope.OverviewSection(
|
|
|
|
data: StatsData.Overview,
|
|
|
|
data: StatsData.Overview,
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
val none = stringResource(MR.strings.none)
|
|
|
|
val none = stringResource(MR.strings.none)
|
|
|
@ -65,7 +63,7 @@ private fun OverviewSection(
|
|
|
|
.toDuration(DurationUnit.MILLISECONDS)
|
|
|
|
.toDuration(DurationUnit.MILLISECONDS)
|
|
|
|
.toDurationString(context, fallback = none)
|
|
|
|
.toDurationString(context, fallback = none)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
StatsSection(MR.strings.label_overview_section) {
|
|
|
|
SectionCard(MR.strings.label_overview_section) {
|
|
|
|
Row(
|
|
|
|
Row(
|
|
|
|
modifier = Modifier.height(IntrinsicSize.Min),
|
|
|
|
modifier = Modifier.height(IntrinsicSize.Min),
|
|
|
|
) {
|
|
|
|
) {
|
|
|
@ -89,10 +87,10 @@ private fun OverviewSection(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
@Composable
|
|
|
|
private fun TitlesStats(
|
|
|
|
private fun LazyItemScope.TitlesStats(
|
|
|
|
data: StatsData.Titles,
|
|
|
|
data: StatsData.Titles,
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
StatsSection(MR.strings.label_titles_section) {
|
|
|
|
SectionCard(MR.strings.label_titles_section) {
|
|
|
|
Row {
|
|
|
|
Row {
|
|
|
|
StatsItem(
|
|
|
|
StatsItem(
|
|
|
|
data.globalUpdateItemCount.toString(),
|
|
|
|
data.globalUpdateItemCount.toString(),
|
|
|
@ -111,10 +109,10 @@ private fun TitlesStats(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
@Composable
|
|
|
|
private fun ChapterStats(
|
|
|
|
private fun LazyItemScope.ChapterStats(
|
|
|
|
data: StatsData.Chapters,
|
|
|
|
data: StatsData.Chapters,
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
StatsSection(MR.strings.chapters) {
|
|
|
|
SectionCard(MR.strings.chapters) {
|
|
|
|
Row {
|
|
|
|
Row {
|
|
|
|
StatsItem(
|
|
|
|
StatsItem(
|
|
|
|
data.totalChapterCount.toString(),
|
|
|
|
data.totalChapterCount.toString(),
|
|
|
@ -133,7 +131,7 @@ private fun ChapterStats(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
@Composable
|
|
|
|
private fun TrackerStats(
|
|
|
|
private fun LazyItemScope.TrackerStats(
|
|
|
|
data: StatsData.Trackers,
|
|
|
|
data: StatsData.Trackers,
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
val notApplicable = stringResource(MR.strings.not_applicable)
|
|
|
|
val notApplicable = stringResource(MR.strings.not_applicable)
|
|
|
@ -145,7 +143,7 @@ private fun TrackerStats(
|
|
|
|
notApplicable
|
|
|
|
notApplicable
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
StatsSection(MR.strings.label_tracker_section) {
|
|
|
|
SectionCard(MR.strings.label_tracker_section) {
|
|
|
|
Row {
|
|
|
|
Row {
|
|
|
|
StatsItem(
|
|
|
|
StatsItem(
|
|
|
|
data.trackedTitleCount.toString(),
|
|
|
|
data.trackedTitleCount.toString(),
|
|
|
|