From 0ab4b3196d3ea7af0857ace54ab876a813556641 Mon Sep 17 00:00:00 2001 From: althafvly Date: Tue, 9 Jul 2024 10:40:51 +0530 Subject: [PATCH] parental: add parental docs link --- app/build.gradle.kts | 1 + .../e/parentalcontrol/MainActivity.kt | 76 +++++++++++++++---- app/src/main/res/values/config.xml | 1 + app/src/main/res/values/strings.xml | 3 +- gradle/libs.versions.toml | 2 + 5 files changed, 66 insertions(+), 17 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 23a1f96..ea0a4f5 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -127,6 +127,7 @@ android { } dependencies { + implementation(libs.androidx.browser) compileOnly(fileTree(mapOf("dir" to "../prebuilts", "include" to listOf("*.jar")))) implementation(libs.androidx.core.ktx) diff --git a/app/src/main/java/foundation/e/parentalcontrol/MainActivity.kt b/app/src/main/java/foundation/e/parentalcontrol/MainActivity.kt index 5b2649c..2e3d321 100644 --- a/app/src/main/java/foundation/e/parentalcontrol/MainActivity.kt +++ b/app/src/main/java/foundation/e/parentalcontrol/MainActivity.kt @@ -11,6 +11,7 @@ import android.app.admin.DevicePolicyManager import android.content.ComponentName import android.content.Context import android.content.Intent +import android.net.Uri import android.os.Build import android.os.Bundle import android.os.Handler @@ -21,7 +22,9 @@ import android.widget.Toast import androidx.activity.ComponentActivity import androidx.activity.compose.BackHandler import androidx.activity.compose.setContent +import androidx.browser.customtabs.CustomTabsIntent import androidx.compose.foundation.clickable +import androidx.compose.foundation.gestures.detectTapGestures import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -57,14 +60,19 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb +import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.platform.LocalClipboardManager import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @@ -539,14 +547,7 @@ class MainActivity : ComponentActivity() { ) } - Text( - text = stringResource(R.string.activate_admin_summary), - color = colorResource(foundation.e.elib.R.color.e_primary_text_color), - fontSize = 15.sp, - maxLines = Int.MAX_VALUE, - overflow = TextOverflow.Clip, - modifier = Modifier.padding(bottom = Dimens.SCREEN_PADDING / 2) - ) + ActivateAdminSummary() var checkedState by remember { mutableStateOf(false) } var moveToNext by remember { mutableStateOf(false) } @@ -576,6 +577,56 @@ class MainActivity : ComponentActivity() { } } + @Composable + fun ActivateAdminSummary() { + val clipboardManager = LocalClipboardManager.current + + Text( + text = stringResource(R.string.activate_admin_summary), + color = colorResource(foundation.e.elib.R.color.e_primary_text_color), + fontSize = 15.sp, + maxLines = Int.MAX_VALUE, + overflow = TextOverflow.Clip, + modifier = Modifier.padding(bottom = Dimens.SCREEN_PADDING / 2) + ) + + val docUrl = stringResource(R.string.e_foundation_docs_link) + Text( + text = docUrl, + fontSize = 15.sp, + color = colorResource(foundation.e.elib.R.color.e_accent), + maxLines = Int.MAX_VALUE, + overflow = TextOverflow.Clip, + style = TextStyle(textDecoration = TextDecoration.Underline), + modifier = + Modifier.padding(bottom = 8.dp).pointerInput(Unit) { + detectTapGestures( + onTap = { + try { + val customTabsIntent = + CustomTabsIntent.Builder().setShowTitle(true).build() + customTabsIntent.launchUrl(mActivity, Uri.parse(docUrl)) + } catch (e: Exception) { + // Fallback to default browser + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(docUrl)) + startActivity(intent) + } + }, + onLongPress = { + // Copy to clipboard + clipboardManager.setText(AnnotatedString(docUrl)) + Toast.makeText( + mActivity, + getString(R.string.link_copied_to_clipboard), + Toast.LENGTH_SHORT + ) + .show() + } + ) + } + ) + } + @Composable fun ActivateAdmin() { BackHandler(onBack = { onExitApp() }) @@ -671,14 +722,7 @@ class MainActivity : ComponentActivity() { ) } - Text( - text = stringResource(R.string.activate_admin_summary), - color = colorResource(foundation.e.elib.R.color.e_primary_text_color), - fontSize = 15.sp, - maxLines = Int.MAX_VALUE, - overflow = TextOverflow.Clip, - modifier = Modifier.padding(bottom = Dimens.SCREEN_PADDING / 2) - ) + ActivateAdminSummary() ToggleWithText( text = stringResource(R.string.activate_parental_control), diff --git a/app/src/main/res/values/config.xml b/app/src/main/res/values/config.xml index ab9dff6..9392111 100644 --- a/app/src/main/res/values/config.xml +++ b/app/src/main/res/values/config.xml @@ -1,4 +1,5 @@ family.cloudflare-dns.com + https://doc.e.foundation/support-topics/parental-control \ 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 4e35120..a220f47 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -17,7 +17,7 @@ Must be at least 8 characters Enter the same password Enter the same pin - This app offers protection against inappropriate content for your children and teenagers. You can activate this feature when lending your phone to your kid or if this is their device. + This app offers protection against inappropriate content for your children and teenagers. You can activate this feature when lending your phone to your kid or if this is their device. To know more about it please go to Activate Parental Control Age group of the child Please select the age group of your child so the protection enabled by Parental Control is appropriate. @@ -47,4 +47,5 @@ "Security > More security settings > Device admin apps" "Security > Device admin apps" Open settings + Link copied to clipboard \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1d00e59..12c8c4e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,6 +11,7 @@ material = "1.12.0" parentalcontroldata = "1.0.0" spotless = "6.19.0" elib = "0.0.1-alpha11" +browser = "1.8.0" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -26,6 +27,7 @@ material = { module = "com.google.android.material:material", version.ref = "mat parentalcontroldata = { module = "foundation.e.apps:ParentalControlData", version.ref = "parentalcontroldata" } spotless = { module = "com.diffplug.spotless:spotless-plugin-gradle", version.ref = "spotless" } elib = { module = "foundation.e:elib", version.ref = "elib" } +androidx-browser = { group = "androidx.browser", name = "browser", version.ref = "browser" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } -- GitLab