|
@@ -6,21 +6,23 @@ import androidx.compose.foundation.layout.WindowInsets
|
|
|
import androidx.compose.foundation.layout.asPaddingValues
|
|
|
import androidx.compose.foundation.layout.fillMaxWidth
|
|
|
import androidx.compose.foundation.layout.navigationBars
|
|
|
+import androidx.compose.foundation.layout.statusBarsPadding
|
|
|
import androidx.compose.material.icons.Icons
|
|
|
import androidx.compose.material.icons.outlined.Public
|
|
|
import androidx.compose.runtime.Composable
|
|
|
import androidx.compose.ui.Modifier
|
|
|
import androidx.compose.ui.graphics.vector.rememberVectorPainter
|
|
|
-import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
|
|
|
-import androidx.compose.ui.input.nestedscroll.nestedScroll
|
|
|
import androidx.compose.ui.platform.LocalContext
|
|
|
import androidx.compose.ui.platform.LocalUriHandler
|
|
|
import androidx.compose.ui.res.painterResource
|
|
|
import androidx.compose.ui.res.stringResource
|
|
|
import eu.kanade.presentation.components.LinkIcon
|
|
|
import eu.kanade.presentation.components.PreferenceRow
|
|
|
+import eu.kanade.presentation.components.Scaffold
|
|
|
import eu.kanade.presentation.components.ScrollbarLazyColumn
|
|
|
+import eu.kanade.presentation.components.TopAppBar
|
|
|
import eu.kanade.presentation.more.LogoHeader
|
|
|
+import eu.kanade.presentation.util.plus
|
|
|
import eu.kanade.tachiyomi.BuildConfig
|
|
|
import eu.kanade.tachiyomi.R
|
|
|
import eu.kanade.tachiyomi.data.updater.RELEASE_URL
|
|
@@ -29,7 +31,7 @@ import eu.kanade.tachiyomi.util.system.copyToClipboard
|
|
|
|
|
|
@Composable
|
|
|
fun AboutScreen(
|
|
|
- nestedScrollInterop: NestedScrollConnection,
|
|
|
+ navigateUp: () -> Unit,
|
|
|
checkVersion: () -> Unit,
|
|
|
getFormattedBuildTime: () -> String,
|
|
|
onClickLicenses: () -> Unit,
|
|
@@ -37,109 +39,118 @@ fun AboutScreen(
|
|
|
val context = LocalContext.current
|
|
|
val uriHandler = LocalUriHandler.current
|
|
|
|
|
|
- ScrollbarLazyColumn(
|
|
|
- modifier = Modifier.nestedScroll(nestedScrollInterop),
|
|
|
- contentPadding = WindowInsets.navigationBars.asPaddingValues(),
|
|
|
- ) {
|
|
|
- item {
|
|
|
- LogoHeader()
|
|
|
- }
|
|
|
-
|
|
|
- item {
|
|
|
- PreferenceRow(
|
|
|
- title = stringResource(R.string.version),
|
|
|
- subtitle = when {
|
|
|
- BuildConfig.DEBUG -> {
|
|
|
- "Debug ${BuildConfig.COMMIT_SHA} (${getFormattedBuildTime()})"
|
|
|
- }
|
|
|
- BuildConfig.PREVIEW -> {
|
|
|
- "Preview r${BuildConfig.COMMIT_COUNT} (${BuildConfig.COMMIT_SHA}, ${getFormattedBuildTime()})"
|
|
|
- }
|
|
|
- else -> {
|
|
|
- "Stable ${BuildConfig.VERSION_NAME} (${getFormattedBuildTime()})"
|
|
|
- }
|
|
|
- },
|
|
|
- onClick = {
|
|
|
- val deviceInfo = CrashLogUtil(context).getDebugInfo()
|
|
|
- context.copyToClipboard("Debug information", deviceInfo)
|
|
|
- },
|
|
|
+ Scaffold(
|
|
|
+ modifier = Modifier.statusBarsPadding(),
|
|
|
+ topBar = {
|
|
|
+ TopAppBar(
|
|
|
+ title = stringResource(R.string.pref_category_about),
|
|
|
+ navigateUp = navigateUp,
|
|
|
)
|
|
|
- }
|
|
|
+ },
|
|
|
+ ) { paddingValues ->
|
|
|
+ ScrollbarLazyColumn(
|
|
|
+ contentPadding = paddingValues + WindowInsets.navigationBars.asPaddingValues(),
|
|
|
+ ) {
|
|
|
+ item {
|
|
|
+ LogoHeader()
|
|
|
+ }
|
|
|
|
|
|
- if (BuildConfig.INCLUDE_UPDATER) {
|
|
|
item {
|
|
|
PreferenceRow(
|
|
|
- title = stringResource(R.string.check_for_updates),
|
|
|
- onClick = checkVersion,
|
|
|
+ title = stringResource(R.string.version),
|
|
|
+ subtitle = when {
|
|
|
+ BuildConfig.DEBUG -> {
|
|
|
+ "Debug ${BuildConfig.COMMIT_SHA} (${getFormattedBuildTime()})"
|
|
|
+ }
|
|
|
+ BuildConfig.PREVIEW -> {
|
|
|
+ "Preview r${BuildConfig.COMMIT_COUNT} (${BuildConfig.COMMIT_SHA}, ${getFormattedBuildTime()})"
|
|
|
+ }
|
|
|
+ else -> {
|
|
|
+ "Stable ${BuildConfig.VERSION_NAME} (${getFormattedBuildTime()})"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onClick = {
|
|
|
+ val deviceInfo = CrashLogUtil(context).getDebugInfo()
|
|
|
+ context.copyToClipboard("Debug information", deviceInfo)
|
|
|
+ },
|
|
|
)
|
|
|
}
|
|
|
- }
|
|
|
- if (!BuildConfig.DEBUG) {
|
|
|
+
|
|
|
+ if (BuildConfig.INCLUDE_UPDATER) {
|
|
|
+ item {
|
|
|
+ PreferenceRow(
|
|
|
+ title = stringResource(R.string.check_for_updates),
|
|
|
+ onClick = checkVersion,
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!BuildConfig.DEBUG) {
|
|
|
+ item {
|
|
|
+ PreferenceRow(
|
|
|
+ title = stringResource(R.string.whats_new),
|
|
|
+ onClick = { uriHandler.openUri(RELEASE_URL) },
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
item {
|
|
|
PreferenceRow(
|
|
|
- title = stringResource(R.string.whats_new),
|
|
|
- onClick = { uriHandler.openUri(RELEASE_URL) },
|
|
|
+ title = stringResource(R.string.help_translate),
|
|
|
+ onClick = { uriHandler.openUri("https://tachiyomi.org/help/contribution/#translation") },
|
|
|
)
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- item {
|
|
|
- PreferenceRow(
|
|
|
- title = stringResource(R.string.help_translate),
|
|
|
- onClick = { uriHandler.openUri("https://tachiyomi.org/help/contribution/#translation") },
|
|
|
- )
|
|
|
- }
|
|
|
-
|
|
|
- item {
|
|
|
- PreferenceRow(
|
|
|
- title = stringResource(R.string.licenses),
|
|
|
- onClick = onClickLicenses,
|
|
|
- )
|
|
|
- }
|
|
|
|
|
|
- item {
|
|
|
- PreferenceRow(
|
|
|
- title = stringResource(R.string.privacy_policy),
|
|
|
- onClick = { uriHandler.openUri("https://tachiyomi.org/privacy") },
|
|
|
- )
|
|
|
- }
|
|
|
-
|
|
|
- item {
|
|
|
- Row(
|
|
|
- modifier = Modifier.fillMaxWidth(),
|
|
|
- horizontalArrangement = Arrangement.Center,
|
|
|
- ) {
|
|
|
- LinkIcon(
|
|
|
- label = stringResource(R.string.website),
|
|
|
- painter = rememberVectorPainter(Icons.Outlined.Public),
|
|
|
- url = "https://tachiyomi.org",
|
|
|
- )
|
|
|
- LinkIcon(
|
|
|
- label = "Discord",
|
|
|
- painter = painterResource(R.drawable.ic_discord_24dp),
|
|
|
- url = "https://discord.gg/tachiyomi",
|
|
|
- )
|
|
|
- LinkIcon(
|
|
|
- label = "Twitter",
|
|
|
- painter = painterResource(R.drawable.ic_twitter_24dp),
|
|
|
- url = "https://twitter.com/tachiyomiorg",
|
|
|
- )
|
|
|
- LinkIcon(
|
|
|
- label = "Facebook",
|
|
|
- painter = painterResource(R.drawable.ic_facebook_24dp),
|
|
|
- url = "https://facebook.com/tachiyomiorg",
|
|
|
- )
|
|
|
- LinkIcon(
|
|
|
- label = "Reddit",
|
|
|
- painter = painterResource(R.drawable.ic_reddit_24dp),
|
|
|
- url = "https://www.reddit.com/r/Tachiyomi",
|
|
|
+ item {
|
|
|
+ PreferenceRow(
|
|
|
+ title = stringResource(R.string.licenses),
|
|
|
+ onClick = onClickLicenses,
|
|
|
)
|
|
|
- LinkIcon(
|
|
|
- label = "GitHub",
|
|
|
- painter = painterResource(R.drawable.ic_github_24dp),
|
|
|
- url = "https://github.com/tachiyomiorg",
|
|
|
+ }
|
|
|
+
|
|
|
+ item {
|
|
|
+ PreferenceRow(
|
|
|
+ title = stringResource(R.string.privacy_policy),
|
|
|
+ onClick = { uriHandler.openUri("https://tachiyomi.org/privacy") },
|
|
|
)
|
|
|
}
|
|
|
+
|
|
|
+ item {
|
|
|
+ Row(
|
|
|
+ modifier = Modifier.fillMaxWidth(),
|
|
|
+ horizontalArrangement = Arrangement.Center,
|
|
|
+ ) {
|
|
|
+ LinkIcon(
|
|
|
+ label = stringResource(R.string.website),
|
|
|
+ painter = rememberVectorPainter(Icons.Outlined.Public),
|
|
|
+ url = "https://tachiyomi.org",
|
|
|
+ )
|
|
|
+ LinkIcon(
|
|
|
+ label = "Discord",
|
|
|
+ painter = painterResource(R.drawable.ic_discord_24dp),
|
|
|
+ url = "https://discord.gg/tachiyomi",
|
|
|
+ )
|
|
|
+ LinkIcon(
|
|
|
+ label = "Twitter",
|
|
|
+ painter = painterResource(R.drawable.ic_twitter_24dp),
|
|
|
+ url = "https://twitter.com/tachiyomiorg",
|
|
|
+ )
|
|
|
+ LinkIcon(
|
|
|
+ label = "Facebook",
|
|
|
+ painter = painterResource(R.drawable.ic_facebook_24dp),
|
|
|
+ url = "https://facebook.com/tachiyomiorg",
|
|
|
+ )
|
|
|
+ LinkIcon(
|
|
|
+ label = "Reddit",
|
|
|
+ painter = painterResource(R.drawable.ic_reddit_24dp),
|
|
|
+ url = "https://www.reddit.com/r/Tachiyomi",
|
|
|
+ )
|
|
|
+ LinkIcon(
|
|
|
+ label = "GitHub",
|
|
|
+ painter = painterResource(R.drawable.ic_github_24dp),
|
|
|
+ url = "https://github.com/tachiyomiorg",
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|