diff --git a/AndroidManifest-common.xml b/AndroidManifest-common.xml
index f30d596856..1fc337c818 100644
--- a/AndroidManifest-common.xml
+++ b/AndroidManifest-common.xml
@@ -194,5 +194,13 @@
+
+
+
+
diff --git a/build.gradle b/build.gradle
index 50bed535b9..f0457a4ee6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -12,6 +12,7 @@ buildscript {
classpath 'com.android.tools.build:gradle:7.0.0-alpha10'
classpath PROTOBUF_CLASS_PATH
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ classpath 'com.google.android.gms:oss-licenses-plugin:0.10.2'
}
}
@@ -45,6 +46,7 @@ allprojects {
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'com.google.protobuf'
+apply plugin: 'com.google.android.gms.oss-licenses-plugin'
final def commitHash = { ->
final def stdout = new ByteArrayOutputStream()
@@ -228,6 +230,7 @@ allprojects {
}
dependencies {
+ implementation 'com.google.android.gms:play-services-oss-licenses:17.0.0'
implementation "androidx.dynamicanimation:dynamicanimation:${ANDROID_X_VERSION}"
implementation "androidx.recyclerview:recyclerview:${ANDROID_X_VERSION}"
implementation "androidx.preference:preference-ktx:${ANDROID_X_VERSION}"
diff --git a/lawnchair/res/values/strings.xml b/lawnchair/res/values/strings.xml
index 2d3b30c2f5..480dd7d113 100644
--- a/lawnchair/res/values/strings.xml
+++ b/lawnchair/res/values/strings.xml
@@ -44,7 +44,7 @@
Twitter
GitHub
Team Members
- Open-Source Licenses
+ Acknowledgements
To be determined.
To be determined.
DevOps Engineer
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/About.kt b/lawnchair/src/app/lawnchair/ui/preferences/About.kt
index 7c99994607..001fca560d 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/About.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/About.kt
@@ -1,5 +1,6 @@
package app.lawnchair.ui.preferences
+import android.content.Intent
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
@@ -17,9 +18,12 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import app.lawnchair.util.preferences.getFormattedVersionName
import com.android.launcher3.R
+import com.google.android.gms.oss.licenses.OssLicensesMenuActivity
@Composable
fun About() {
+ val context = LocalContext.current
+
Column(
modifier = Modifier
.fillMaxWidth()
@@ -115,5 +119,12 @@ fun About() {
url = "https://twitter.com/skittles9823"
)
}
+ PreferenceGroup(useTopPadding = true) {
+ ClickListenerPreference(label = stringResource(id = R.string.acknowledgements), showDivider = false, onClick = {
+ val intent = Intent(context, OssLicensesMenuActivity::class.java)
+ OssLicensesMenuActivity.setActivityTitle(context.getString(R.string.acknowledgements))
+ context.startActivity(intent)
+ })
+ }
}
}
\ No newline at end of file
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/ClickListenerPreference.kt b/lawnchair/src/app/lawnchair/ui/preferences/ClickListenerPreference.kt
new file mode 100644
index 0000000000..4b2c7a35b2
--- /dev/null
+++ b/lawnchair/src/app/lawnchair/ui/preferences/ClickListenerPreference.kt
@@ -0,0 +1,39 @@
+package app.lawnchair.ui.preferences
+
+import androidx.compose.foundation.clickable
+import androidx.compose.foundation.layout.*
+import androidx.compose.material.ContentAlpha
+import androidx.compose.material.LocalContentAlpha
+import androidx.compose.material.MaterialTheme
+import androidx.compose.material.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import androidx.navigation.NavController
+import androidx.navigation.compose.navigate
+
+@Composable
+fun ClickListenerPreference(
+ label: String,
+ subtitle: String? = null,
+ onClick: () -> Unit,
+ showDivider: Boolean = true
+) =
+ PreferenceTemplate(height = if (subtitle != null) 72.dp else 52.dp, showDivider = showDivider) {
+ Column(
+ verticalArrangement = Arrangement.Center,
+ modifier = Modifier
+ .fillMaxWidth()
+ .fillMaxHeight()
+ .clickable(onClick = onClick)
+ .padding(start = 16.dp, end = 16.dp),
+ ) {
+ Text(text = label, style = MaterialTheme.typography.subtitle1, color = MaterialTheme.colors.onBackground)
+ subtitle?.let {
+ CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) {
+ Text(text = it, style = MaterialTheme.typography.body2, color = MaterialTheme.colors.onBackground)
+ }
+ }
+ }
+ }
\ No newline at end of file