mirror of
https://github.com/tachiyomiorg/tachiyomi.git
synced 2024-06-28 07:46:04 +02:00
![arkon](/assets/img/avatar_default.png)
Also renaming the helper composables so it's a bit easier to find/replace everything in forks.
82 lines
2.8 KiB
Kotlin
82 lines
2.8 KiB
Kotlin
package eu.kanade.presentation.more.settings.screen.about
|
|
|
|
import androidx.compose.foundation.layout.Column
|
|
import androidx.compose.foundation.layout.padding
|
|
import androidx.compose.foundation.rememberScrollState
|
|
import androidx.compose.foundation.verticalScroll
|
|
import androidx.compose.material.icons.Icons
|
|
import androidx.compose.material.icons.filled.Public
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.compose.ui.platform.LocalUriHandler
|
|
import androidx.compose.ui.unit.dp
|
|
import androidx.compose.ui.viewinterop.AndroidView
|
|
import androidx.core.text.HtmlCompat
|
|
import cafe.adriel.voyager.navigator.LocalNavigator
|
|
import cafe.adriel.voyager.navigator.currentOrThrow
|
|
import com.google.android.material.textview.MaterialTextView
|
|
import eu.kanade.presentation.components.AppBar
|
|
import eu.kanade.presentation.components.AppBarActions
|
|
import eu.kanade.presentation.util.Screen
|
|
import kotlinx.collections.immutable.persistentListOf
|
|
import tachiyomi.i18n.MR
|
|
import tachiyomi.presentation.core.components.material.Scaffold
|
|
import tachiyomi.presentation.core.i18n.stringResource
|
|
|
|
class OpenSourceLibraryLicenseScreen(
|
|
private val name: String,
|
|
private val website: String?,
|
|
private val license: String,
|
|
) : Screen() {
|
|
|
|
@Composable
|
|
override fun Content() {
|
|
val navigator = LocalNavigator.currentOrThrow
|
|
val uriHandler = LocalUriHandler.current
|
|
|
|
Scaffold(
|
|
topBar = {
|
|
AppBar(
|
|
title = name,
|
|
navigateUp = navigator::pop,
|
|
actions = {
|
|
if (!website.isNullOrEmpty()) {
|
|
AppBarActions(
|
|
persistentListOf(
|
|
AppBar.Action(
|
|
title = stringResource(MR.strings.website),
|
|
icon = Icons.Default.Public,
|
|
onClick = { uriHandler.openUri(website) },
|
|
),
|
|
),
|
|
)
|
|
}
|
|
},
|
|
scrollBehavior = it,
|
|
)
|
|
},
|
|
) { contentPadding ->
|
|
Column(
|
|
modifier = Modifier
|
|
.verticalScroll(rememberScrollState())
|
|
.padding(contentPadding)
|
|
.padding(16.dp),
|
|
) {
|
|
HtmlLicenseText(html = license)
|
|
}
|
|
}
|
|
}
|
|
|
|
@Composable
|
|
private fun HtmlLicenseText(html: String) {
|
|
AndroidView(
|
|
factory = {
|
|
MaterialTextView(it)
|
|
},
|
|
update = {
|
|
it.text = HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_COMPACT)
|
|
},
|
|
)
|
|
}
|
|
}
|