From 4637acdb07af4ded2c2d1f6ee6235f93d0990ee0 Mon Sep 17 00:00:00 2001 From: Sven Jacobs Date: Sat, 1 Jun 2024 17:41:12 +0200 Subject: [PATCH] feat: provide text selection action (#410) --- app/src/main/AndroidManifest.xml | 12 ++++ .../app/leon/ProcessTextActivity.kt | 65 +++++++++++++++++++ app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-pl/strings.xml | 1 + app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values-vi/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 7 files changed, 82 insertions(+) create mode 100644 app/src/main/kotlin/com/svenjacobs/app/leon/ProcessTextActivity.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2ca759f4..30231283 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -29,6 +29,7 @@ android:supportsRtl="false" android:theme="@style/Theme.App" tools:targetApi="tiramisu"> + + + + + + + + + . + */ + +package com.svenjacobs.app.leon + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.annotation.RequiresApi +import com.svenjacobs.app.leon.core.domain.CleanerService +import kotlinx.coroutines.runBlocking + +@RequiresApi(Build.VERSION_CODES.M) +class ProcessTextActivity : ComponentActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + val text = intent.getCharSequenceExtra(Intent.EXTRA_PROCESS_TEXT)?.toString() + val readonly = intent.getBooleanExtra(Intent.EXTRA_PROCESS_TEXT_READONLY, false) + + when { + // If readonly, delegate to MainActivity + readonly -> startActivity( + Intent(this, MainActivity::class.java).apply { + action = Intent.ACTION_SEND + type = "text/plain" + putExtra(Intent.EXTRA_TEXT, text) + }, + ) + + text.isNullOrBlank() -> setResult(RESULT_CANCELED) + + // Needs to run with runBlocking or else setResult() won't work + else -> runBlocking { + val result = CleanerService().clean(text) + + setResult( + RESULT_OK, + Intent().apply { + putExtra(Intent.EXTRA_PROCESS_TEXT, result.cleanedText) + }, + ) + } + } + + finish() + } +} diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 0ce8d0e5..5b59b973 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -43,4 +43,5 @@ Teilenmenü öffnen URL öffnen In Zwischenablage kopieren + URL säubern (Léon) diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 734f9c52..0c0db30e 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -43,4 +43,5 @@ Open share menu Open URL Copy to clipboard + Clean URL (Léon) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 28f4fda1..c627ce97 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -43,4 +43,5 @@ Open share menu Open URL Copy to clipboard + Clean URL (Léon) diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 0f238807..fddb8248 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -44,4 +44,5 @@ Mở menu chia sẻ Mở URL Sao chép vào clipboard + Clean URL (Léon) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ebe5f0bd..6737b0f9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -44,4 +44,5 @@ Open share menu Open URL Copy to clipboard + Clean URL (Léon)