From 5e71576701f45889184441b77a7188440db17b2a Mon Sep 17 00:00:00 2001 From: Ax333l Date: Thu, 29 Jun 2023 22:05:43 +0200 Subject: [PATCH] feat: licenses screen (#47) --- app/build.gradle.kts | 4 ++ .../ui/destination/SettingsDestination.kt | 3 ++ .../manager/ui/screen/SettingsScreen.kt | 7 +++- .../ui/screen/settings/AboutSettingsScreen.kt | 7 +++- .../ui/screen/settings/LicensesScreen.kt | 41 +++++++++++++++++++ app/src/main/res/values/strings.xml | 2 + 6 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/app/revanced/manager/ui/screen/settings/LicensesScreen.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 00313a4..edc963d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -4,6 +4,7 @@ plugins { id("com.google.devtools.ksp") id("kotlin-parcelize") kotlin("plugin.serialization") version "1.8.21" + id("com.mikepenz.aboutlibraries.plugin") version "10.8.0" } android { @@ -116,6 +117,9 @@ dependencies { // Compose Navigation implementation("dev.olshevski.navigation:reimagined:1.4.0") + // Licenses + implementation("com.mikepenz:aboutlibraries-compose:10.8.0") + // Ktor val ktorVersion = "2.3.0" implementation("io.ktor:ktor-client-core:$ktorVersion") diff --git a/app/src/main/java/app/revanced/manager/ui/destination/SettingsDestination.kt b/app/src/main/java/app/revanced/manager/ui/destination/SettingsDestination.kt index df18a2e..2b83fcf 100644 --- a/app/src/main/java/app/revanced/manager/ui/destination/SettingsDestination.kt +++ b/app/src/main/java/app/revanced/manager/ui/destination/SettingsDestination.kt @@ -29,4 +29,7 @@ sealed interface SettingsDestination : Parcelable { @Parcelize object Contributors: SettingsDestination + @Parcelize + object Licenses: SettingsDestination + } \ No newline at end of file diff --git a/app/src/main/java/app/revanced/manager/ui/screen/SettingsScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/SettingsScreen.kt index 3701052..52207dd 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/SettingsScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/SettingsScreen.kt @@ -111,7 +111,8 @@ fun SettingsScreen( is SettingsDestination.About -> AboutSettingsScreen( onBackClick = { navController.pop() }, - onContributorsClick = { navController.navigate(SettingsDestination.Contributors) } + onContributorsClick = { navController.navigate(SettingsDestination.Contributors) }, + onLicensesClick = { navController.navigate(SettingsDestination.Licenses) } ) is SettingsDestination.UpdateProgress -> UpdateProgressScreen( @@ -122,6 +123,10 @@ fun SettingsScreen( onBackClick = { navController.pop() }, ) + is SettingsDestination.Licenses -> LicensesScreen( + onBackClick = { navController.pop() }, + ) + is SettingsDestination.Settings -> { Scaffold( topBar = { diff --git a/app/src/main/java/app/revanced/manager/ui/screen/settings/AboutSettingsScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/settings/AboutSettingsScreen.kt index e89fe1b..b47e8fd 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/settings/AboutSettingsScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/settings/AboutSettingsScreen.kt @@ -33,6 +33,7 @@ import dev.olshevski.navigation.reimagined.navigate fun AboutSettingsScreen( onBackClick: () -> Unit, onContributorsClick: () -> Unit, + onLicensesClick: () -> Unit, ) { val context = LocalContext.current val icon = rememberDrawablePainter(context.packageManager.getApplicationIcon(context.packageName)) @@ -62,6 +63,8 @@ fun AboutSettingsScreen( third = onContributorsClick), Triple(stringResource(R.string.developer_options), stringResource(R.string.developer_options_description), third = { /*TODO*/ }), + Triple(stringResource(R.string.opensource_licenses), stringResource(R.string.opensource_licenses_description), + third = onLicensesClick) ) Scaffold( @@ -79,7 +82,9 @@ fun AboutSettingsScreen( .verticalScroll(rememberScrollState()) ) { Column( - modifier = Modifier.fillMaxWidth().padding(vertical = 16.dp), + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 16.dp), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(4.dp) ) { diff --git a/app/src/main/java/app/revanced/manager/ui/screen/settings/LicensesScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/settings/LicensesScreen.kt new file mode 100644 index 0000000..70d433d --- /dev/null +++ b/app/src/main/java/app/revanced/manager/ui/screen/settings/LicensesScreen.kt @@ -0,0 +1,41 @@ +package app.revanced.manager.ui.screen.settings + +import androidx.compose.foundation.layout.* +import androidx.compose.material3.* +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import app.revanced.manager.R +import app.revanced.manager.ui.component.AppScaffold +import app.revanced.manager.ui.component.AppTopBar +import com.mikepenz.aboutlibraries.ui.compose.LibrariesContainer +import com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun LicensesScreen( + onBackClick: () -> Unit, +) { + AppScaffold( + topBar = { scrollBehavior -> + AppTopBar( + title = stringResource(R.string.opensource_licenses), + scrollBehavior = scrollBehavior, + onBackClick = onBackClick + ) + } + ) { paddingValues -> + Column(modifier = Modifier.padding(paddingValues)) { + LibrariesContainer( + modifier = Modifier + .fillMaxSize(), + colors = LibraryDefaults.libraryColors( + backgroundColor = MaterialTheme.colorScheme.background, + contentColor = MaterialTheme.colorScheme.onBackground, + badgeBackgroundColor = MaterialTheme.colorScheme.primary, + badgeContentColor = MaterialTheme.colorScheme.onPrimary, + ) + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 16bc080..bd015d7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -15,6 +15,8 @@ General settings Updates Updates for ReVanced Manager + Open source licenses + View all the libraries used to make this application Downloads Manage downloaded content Import & export