From 041e58a0381823ca65c7420c04ca9c9dc009f1f1 Mon Sep 17 00:00:00 2001 From: Nullptr <52071314+Dr-TSNG@users.noreply.github.com> Date: Sun, 6 Mar 2022 23:07:14 +0800 Subject: [PATCH] Add support card --- .../org/lsposed/lspatch/ui/page/HomePage.kt | 34 +++++++++++++++++++ .../lsposed/lspatch/ui/page/NewPatchPage.kt | 16 ++++----- .../org/lsposed/lspatch/ui/util/HtmlText.kt | 20 +++++++++++ manager/src/main/res/values/strings.xml | 11 +++--- 4 files changed, 69 insertions(+), 12 deletions(-) create mode 100644 manager/src/main/java/org/lsposed/lspatch/ui/util/HtmlText.kt diff --git a/manager/src/main/java/org/lsposed/lspatch/ui/page/HomePage.kt b/manager/src/main/java/org/lsposed/lspatch/ui/page/HomePage.kt index e040150..8724bca 100644 --- a/manager/src/main/java/org/lsposed/lspatch/ui/page/HomePage.kt +++ b/manager/src/main/java/org/lsposed/lspatch/ui/page/HomePage.kt @@ -22,6 +22,7 @@ import androidx.compose.ui.unit.dp import kotlinx.coroutines.launch import org.lsposed.lspatch.BuildConfig import org.lsposed.lspatch.R +import org.lsposed.lspatch.ui.util.HtmlText @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -38,6 +39,8 @@ fun HomePage() { .verticalScroll(rememberScrollState()) ) { InfoCard(snackbarHostState) + Spacer(Modifier.height(16.dp)) + SupportCard() } } } @@ -120,3 +123,34 @@ private fun InfoCard(snackbarHostState: SnackbarHostState) { } } } + +@OptIn(ExperimentalMaterial3Api::class) +@Preview +@Composable +private fun SupportCard() { + Card { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(24.dp) + ) { + Text( + text = stringResource(R.string.home_support), + fontWeight = FontWeight.SemiBold, + style = MaterialTheme.typography.titleMedium + ) + Text( + modifier = Modifier.padding(vertical = 8.dp), + text = stringResource(R.string.home_description), + style = MaterialTheme.typography.bodyMedium + ) + HtmlText( + stringResource( + R.string.home_view_source_code, + "GitHub", + "Telegram" + ) + ) + } + } +} diff --git a/manager/src/main/java/org/lsposed/lspatch/ui/page/NewPatchPage.kt b/manager/src/main/java/org/lsposed/lspatch/ui/page/NewPatchPage.kt index c52abcf..86d4180 100644 --- a/manager/src/main/java/org/lsposed/lspatch/ui/page/NewPatchPage.kt +++ b/manager/src/main/java/org/lsposed/lspatch/ui/page/NewPatchPage.kt @@ -17,10 +17,7 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Api -import androidx.compose.material.icons.outlined.AutoFixHigh -import androidx.compose.material.icons.outlined.BugReport -import androidx.compose.material.icons.outlined.WorkOutline +import androidx.compose.material.icons.outlined.* import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable @@ -165,9 +162,9 @@ private fun ConfiguringFab(onClick: () -> Unit) { @Composable private fun sigBypassLvStr(level: Int) = when (level) { - 0 -> stringResource(R.string.patch_sigbypasslv_0) - 1 -> stringResource(R.string.patch_sigbypasslv_1) - 2 -> stringResource(R.string.patch_sigbypasslv_2) + 0 -> stringResource(R.string.patch_sigbypasslv0) + 1 -> stringResource(R.string.patch_sigbypasslv1) + 2 -> stringResource(R.string.patch_sigbypasslv2) else -> throw IllegalArgumentException("Invalid sigBypassLv: $level") } @@ -239,6 +236,7 @@ private fun PatchOptionsBody( SettingsCheckBox( checked = viewModel.overrideVersionCode, onClick = { viewModel.overrideVersionCode = !viewModel.overrideVersionCode }, + icon = Icons.Outlined.Layers, title = stringResource(R.string.patch_override_version_code), desc = stringResource(R.string.patch_override_version_code_desc) ) @@ -246,6 +244,7 @@ private fun PatchOptionsBody( var expanded by remember { mutableStateOf(false) } SettingsItem( onClick = { expanded = true }, + icon = Icons.Outlined.Edit, title = stringResource(R.string.patch_sign), desc = viewModel.sign.mapIndexedNotNull { index, on -> if (on) "V" + (index + 1) else null }.joinToString(" + ").ifEmpty { "None" } ) @@ -267,7 +266,8 @@ private fun PatchOptionsBody( var expanded by remember { mutableStateOf(false) } SettingsItem( onClick = { expanded = true }, - title = stringResource(R.string.patch_sigbypasslv), + icon = Icons.Outlined.RemoveModerator, + title = stringResource(R.string.patch_sigbypass), desc = sigBypassLvStr(viewModel.sigBypassLevel) ) DropdownMenu(expanded = expanded, onDismissRequest = { expanded = false }) { diff --git a/manager/src/main/java/org/lsposed/lspatch/ui/util/HtmlText.kt b/manager/src/main/java/org/lsposed/lspatch/ui/util/HtmlText.kt new file mode 100644 index 0000000..56a5299 --- /dev/null +++ b/manager/src/main/java/org/lsposed/lspatch/ui/util/HtmlText.kt @@ -0,0 +1,20 @@ +package org.lsposed.lspatch.ui.util + +import android.text.method.LinkMovementMethod +import android.widget.TextView +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.viewinterop.AndroidView +import androidx.core.text.HtmlCompat + +@Composable +fun HtmlText(html: String, modifier: Modifier = Modifier) { + AndroidView( + modifier = modifier, + factory = { context -> TextView(context) }, + update = { + it.movementMethod = LinkMovementMethod.getInstance() + it.text = HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_COMPACT) + } + ) +} diff --git a/manager/src/main/res/values/strings.xml b/manager/src/main/res/values/strings.xml index e980d60..66a04e0 100644 --- a/manager/src/main/res/values/strings.xml +++ b/manager/src/main/res/values/strings.xml @@ -14,6 +14,9 @@ Device System ABI Copied to clipboard + Support + LSPatch is a free non-root Xposed framework based on LSPosed core. + Join our %2$s channel]]> Manage @@ -30,10 +33,10 @@ Embed modules Debuggable Sign - Signature bypass level - lv0: Off - lv1: Bypass PM - lv2: Bypass PM + openat (libc) + Signature bypass + lv0: Off + lv1: Bypass PM + lv2: Bypass PM + openat (libc) Override version code Override the patched app\'s version code to 1\nThis allows downgrade installation Start Patch