diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 05ff76ad..ae9f380e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,26 +17,6 @@ android:name="ua.acclorite.book_story.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION" tools:node="remove" /> - - - - - - - - - - - - - - - - - - - - Unit)? = null, error: () -> Unit ) { + val intent = if (createChooser) Intent.createChooser(this, "") else this if (openInNewWindow) { - this.flags = Intent.FLAG_ACTIVITY_NEW_TASK + intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK } try { - activity.baseContext.startActivity(this) + activity.baseContext.startActivity(intent) } catch (e: Exception) { error() return diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/ReaderScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/ReaderScreen.kt index 2dbff153..951a0c19 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/ReaderScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/ReaderScreen.kt @@ -277,7 +277,8 @@ private fun ReaderScreen( onTranslateRequested = { textToTranslate -> onEvent( ReaderEvent.OnOpenTranslator( - textToTranslate, + textToTranslate = textToTranslate, + translateWholeParagraph = false, context, noAppsFound = { Toast.makeText( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/ReaderTextParagraph.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/ReaderTextParagraph.kt index a12be257..d05fb875 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/ReaderTextParagraph.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/ReaderTextParagraph.kt @@ -85,6 +85,7 @@ fun LazyItemScope.ReaderTextParagraph( onEvent( ReaderEvent.OnOpenTranslator( textToTranslate = line, + translateWholeParagraph = true, context = context as ComponentActivity, noAppsFound = { Toast.makeText( diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/data/ReaderEvent.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/data/ReaderEvent.kt index 9134a288..1fc25861 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/data/ReaderEvent.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/data/ReaderEvent.kt @@ -46,6 +46,7 @@ sealed class ReaderEvent { data class OnOpenTranslator( val textToTranslate: String, + val translateWholeParagraph: Boolean, val context: ComponentActivity, val noAppsFound: () -> Unit ) : ReaderEvent() diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/data/ReaderViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/data/ReaderViewModel.kt index 2ab068c5..98dccf54 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/data/ReaderViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/data/ReaderViewModel.kt @@ -2,6 +2,7 @@ package ua.acclorite.book_story.presentation.screens.reader.data import android.app.SearchManager import android.content.Intent +import android.net.Uri import android.util.Log import androidx.activity.ComponentActivity import androidx.compose.runtime.snapshotFlow @@ -337,7 +338,10 @@ class ReaderViewModel @Inject constructor( ) var translatorFailure = false - translatorIntent.launchActivity(event.context) { + translatorIntent.launchActivity( + event.context, + createChooser = !event.translateWholeParagraph + ) { translatorFailure = true } if (!translatorFailure) { @@ -358,20 +362,34 @@ class ReaderViewModel @Inject constructor( is ReaderEvent.OnOpenDictionary -> { launch { + val dictionaryIntent = Intent() val browserIntent = Intent() - browserIntent.action = Intent.ACTION_WEB_SEARCH - browserIntent.putExtra( - SearchManager.QUERY, - "dictionary" + - ": ${event.textToDefine.trim()}" + dictionaryIntent.type = "text/plain" + dictionaryIntent.action = Intent.ACTION_PROCESS_TEXT + dictionaryIntent.putExtra( + Intent.EXTRA_PROCESS_TEXT, + event.textToDefine.trim() ) + dictionaryIntent.putExtra(Intent.EXTRA_PROCESS_TEXT_READONLY, true) - var failure = false - browserIntent.launchActivity(event.context) { - failure = true + browserIntent.action = Intent.ACTION_VIEW + val text = event.textToDefine.trim().replace(" ", "+") + browserIntent.data = Uri.parse("https://www.onelook.com/?w=$text") + + var dictionaryFailure = false + dictionaryIntent.launchActivity(event.context, createChooser = true) { + dictionaryFailure = true } - if (!failure) { + if (!dictionaryFailure) { + return@launch + } + + var browserFailure = false + browserIntent.launchActivity(event.context) { + browserFailure = true + } + if (!browserFailure) { return@launch }