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 119d3084..e7af3f1b 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
@@ -330,6 +330,7 @@ private fun ReaderScreen(
) { line ->
ReaderTextParagraph(
line = line.second,
+ context = context,
fontFamily = fontFamily,
fontColor = fontColor,
lineHeight = lineHeight,
@@ -337,6 +338,9 @@ private fun ReaderScreen(
fontSize = mainState.value.fontSize!!.sp,
sidePadding = sidePadding,
paragraphIndentation = mainState.value.paragraphIndentation!!,
+ doubleClickTranslationEnabled = mainState.value.doubleClickTranslation!!,
+ toolbarHidden = toolbarHidden,
+ onEvent = onEvent
)
}
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 b953fa18..e4284eb9 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
@@ -1,5 +1,10 @@
package ua.acclorite.book_story.presentation.screens.reader.components
+import android.content.Context
+import android.widget.Toast
+import androidx.activity.ComponentActivity
+import androidx.compose.foundation.ExperimentalFoundationApi
+import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
@@ -15,13 +20,16 @@ import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.style.LineBreak
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.TextUnit
+import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.model.FontWithName
import ua.acclorite.book_story.domain.model.ReaderLine
+import ua.acclorite.book_story.presentation.screens.reader.data.ReaderEvent
/**
* Reader Text Paragraph item.
*
* @param line Current line.
+ * @param context Context.
* @param fontFamily Line's font family.
* @param fontColor Line's font color.
* @param lineHeight Line's line height.
@@ -29,17 +37,25 @@ import ua.acclorite.book_story.domain.model.ReaderLine
* @param fontSize Line's font size.
* @param sidePadding Line's side padding.
* @param paragraphIndentation Whether Paragraph Indentation is enabled for this line.
+ * @param doubleClickTranslationEnabled Whether Double Click Translation is enabled.
+ * @param toolbarHidden Whether selection toolBar is hidden.
+ * @param onEvent [ReaderEvent] callback.
*/
+@OptIn(ExperimentalFoundationApi::class)
@Composable
fun LazyItemScope.ReaderTextParagraph(
line: ReaderLine,
+ context: Context,
fontFamily: FontWithName,
fontColor: Color,
lineHeight: TextUnit,
fontStyle: FontStyle,
fontSize: TextUnit,
sidePadding: Dp,
- paragraphIndentation: Boolean
+ paragraphIndentation: Boolean,
+ doubleClickTranslationEnabled: Boolean,
+ toolbarHidden: Boolean,
+ onEvent: (ReaderEvent) -> Unit
) {
Column(
modifier = Modifier
@@ -58,6 +74,39 @@ fun LazyItemScope.ReaderTextParagraph(
append(line.line)
},
+ modifier = Modifier.then(
+ if (
+ doubleClickTranslationEnabled &&
+ toolbarHidden
+ ) {
+ Modifier.combinedClickable(
+ interactionSource = null,
+ indication = null,
+ onDoubleClick = {
+ onEvent(
+ ReaderEvent.OnOpenTranslator(
+ textToTranslate = line.line,
+ context = context as ComponentActivity,
+ noAppsFound = {
+ Toast.makeText(
+ context,
+ context.getString(R.string.error_no_translator),
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ )
+ )
+ },
+ onClick = {
+ onEvent(
+ ReaderEvent.OnShowHideMenu(context = context as ComponentActivity)
+ )
+ }
+ )
+ } else {
+ Modifier
+ }
+ ),
style = TextStyle(
fontFamily = fontFamily.font,
fontStyle = fontStyle,
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/settings_bottom_sheet/ReaderSettingsBottomSheet.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/settings_bottom_sheet/ReaderSettingsBottomSheet.kt
index 211953d8..3ae59952 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/settings_bottom_sheet/ReaderSettingsBottomSheet.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/components/settings_bottom_sheet/ReaderSettingsBottomSheet.kt
@@ -249,6 +249,34 @@ fun ReaderSettingsBottomSheet(
)
}
}
+
+ item {
+ Spacer(modifier = Modifier.height(22.dp))
+ }
+ item {
+ CategoryTitle(
+ title = stringResource(id = R.string.translator_reader_settings),
+ color = MaterialTheme.colorScheme.onSurface
+ )
+ }
+ item {
+ Spacer(modifier = Modifier.height(8.dp))
+ }
+
+ item {
+ SwitchWithTitle(
+ selected = mainState.value.doubleClickTranslation!!,
+ title = stringResource(id = R.string.translator_double_click_to_translate_option),
+ description = stringResource(id = R.string.translator_double_click_to_translate_option_desc),
+ onClick = {
+ onMainEvent(
+ MainEvent.OnChangeDoubleClickTranslation(
+ !mainState.value.doubleClickTranslation!!
+ )
+ )
+ }
+ )
+ }
}
if (page == 1) {
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/ReaderSettings.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/ReaderSettings.kt
index 9faadb65..c0771c9c 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/ReaderSettings.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/settings/nested/reader/ReaderSettings.kt
@@ -238,6 +238,34 @@ private fun ReaderSettings(
}
}
+ item {
+ Spacer(modifier = Modifier.height(22.dp))
+ }
+ item {
+ CategoryTitle(
+ title = stringResource(id = R.string.translator_reader_settings),
+ color = MaterialTheme.colorScheme.primary
+ )
+ }
+ item {
+ Spacer(modifier = Modifier.height(8.dp))
+ }
+
+ item {
+ SwitchWithTitle(
+ selected = state.value.doubleClickTranslation!!,
+ title = stringResource(id = R.string.translator_double_click_to_translate_option),
+ description = stringResource(id = R.string.translator_double_click_to_translate_option_desc),
+ onClick = {
+ onMainEvent(
+ MainEvent.OnChangeDoubleClickTranslation(
+ !state.value.doubleClickTranslation!!
+ )
+ )
+ }
+ )
+ }
+
item { Spacer(modifier = Modifier.height(48.dp)) }
}
}
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 70fee74e..89bd8781 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -184,7 +184,7 @@
Зовнішній вигляд
Тема, кольори
Читач
- Перекладач, шрифт, текст
+ Шрифт, текст, перекладач
Шрифт
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f2a609da..2008a05e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -202,7 +202,7 @@
Appearance
Theme, colors
Reader
- Translator, font, text
+ Font, text, translator
Font