From ebf86229d0c9eb54dac006cbf6e85297a7bb1bdf Mon Sep 17 00:00:00 2001 From: acclorite Date: Mon, 10 Jun 2024 17:43:36 +0300 Subject: [PATCH] HelpScreen: How do I use tooltips?, How do I set up translator?, How do I use translator? (v1.0.1) --- .../presentation/screens/help/HelpScreen.kt | 24 ++++++++ .../components/items/HelpSetUpTranslator.kt | 56 +++++++++++++++++++ .../help/components/items/HelpUseTooltips.kt | 36 ++++++++++++ .../components/items/HelpUseTranslator.kt | 36 ++++++++++++ .../screens/help/data/HelpState.kt | 3 + app/src/main/res/values-uk/strings.xml | 50 +++++++++++++++++ app/src/main/res/values/strings.xml | 50 +++++++++++++++++ 7 files changed, 255 insertions(+) create mode 100644 app/src/main/java/ua/acclorite/book_story/presentation/screens/help/components/items/HelpSetUpTranslator.kt create mode 100644 app/src/main/java/ua/acclorite/book_story/presentation/screens/help/components/items/HelpUseTooltips.kt create mode 100644 app/src/main/java/ua/acclorite/book_story/presentation/screens/help/components/items/HelpUseTranslator.kt diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/HelpScreen.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/HelpScreen.kt index 3fb16c52..cfc4c664 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/HelpScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/HelpScreen.kt @@ -52,7 +52,10 @@ import ua.acclorite.book_story.presentation.screens.help.components.items.HelpFi import ua.acclorite.book_story.presentation.screens.help.components.items.HelpManageHistory import ua.acclorite.book_story.presentation.screens.help.components.items.HelpMoveOrDeleteBooks import ua.acclorite.book_story.presentation.screens.help.components.items.HelpReadBook +import ua.acclorite.book_story.presentation.screens.help.components.items.HelpSetUpTranslator import ua.acclorite.book_story.presentation.screens.help.components.items.HelpUpdateBook +import ua.acclorite.book_story.presentation.screens.help.components.items.HelpUseTooltips +import ua.acclorite.book_story.presentation.screens.help.components.items.HelpUseTranslator import ua.acclorite.book_story.presentation.screens.help.data.HelpEvent import ua.acclorite.book_story.presentation.screens.help.data.HelpState import ua.acclorite.book_story.presentation.screens.help.data.HelpViewModel @@ -253,6 +256,27 @@ private fun HelpScreen( ) } + item { + HelpUseTooltips( + state = state, + onEvent = onEvent + ) + } + + item { + HelpSetUpTranslator( + state = state, + onEvent = onEvent + ) + } + + item { + HelpUseTranslator( + state = state, + onEvent = onEvent + ) + } + item { Spacer( modifier = Modifier diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/components/items/HelpSetUpTranslator.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/components/items/HelpSetUpTranslator.kt new file mode 100644 index 00000000..6058036c --- /dev/null +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/components/items/HelpSetUpTranslator.kt @@ -0,0 +1,56 @@ +package ua.acclorite.book_story.presentation.screens.help.components.items + +import androidx.compose.foundation.lazy.LazyItemScope +import androidx.compose.runtime.Composable +import androidx.compose.runtime.State +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.buildAnnotatedString +import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.data.LocalNavigator +import ua.acclorite.book_story.presentation.data.Screen +import ua.acclorite.book_story.presentation.screens.help.components.HelpAnnotation +import ua.acclorite.book_story.presentation.screens.help.components.HelpItem +import ua.acclorite.book_story.presentation.screens.help.data.HelpEvent +import ua.acclorite.book_story.presentation.screens.help.data.HelpState + +@Composable +fun LazyItemScope.HelpSetUpTranslator( + state: State, + onEvent: (HelpEvent) -> Unit +) { + val navigator = LocalNavigator.current + + HelpItem( + title = stringResource(id = R.string.help_title_how_to_set_up_translator), + description = buildAnnotatedString { + append(stringResource(id = R.string.help_desc_how_to_set_up_translator_1) + " ") + + HelpAnnotation(tag = "reader_settings") { + append(stringResource(id = R.string.help_desc_how_to_set_up_translator_2)) + } + append(". ") + + append(stringResource(id = R.string.help_desc_how_to_set_up_translator_3)) + }, + tags = listOf("reader_settings"), + shouldShowDescription = state.value.showHelpItem11, + onTitleClick = { + onEvent( + HelpEvent.OnUpdateState { + it.copy( + showHelpItem11 = !it.showHelpItem11 + ) + } + ) + }, + onTagClick = { tag -> + when (tag) { + "reader_settings" -> { + if (!state.value.fromStart) { + navigator.navigate(Screen.READER_SETTINGS, true) + } + } + } + } + ) +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/components/items/HelpUseTooltips.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/components/items/HelpUseTooltips.kt new file mode 100644 index 00000000..a1f47a56 --- /dev/null +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/components/items/HelpUseTooltips.kt @@ -0,0 +1,36 @@ +package ua.acclorite.book_story.presentation.screens.help.components.items + +import androidx.compose.foundation.lazy.LazyItemScope +import androidx.compose.runtime.Composable +import androidx.compose.runtime.State +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.buildAnnotatedString +import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.screens.help.components.HelpItem +import ua.acclorite.book_story.presentation.screens.help.data.HelpEvent +import ua.acclorite.book_story.presentation.screens.help.data.HelpState + +@Composable +fun LazyItemScope.HelpUseTooltips( + state: State, + onEvent: (HelpEvent) -> Unit +) { + HelpItem( + title = stringResource(id = R.string.help_title_how_to_use_tooltip), + description = buildAnnotatedString { + append(stringResource(id = R.string.help_desc_how_to_use_tooltip_1)) + }, + tags = emptyList(), + shouldShowDescription = state.value.showHelpItem10, + onTitleClick = { + onEvent( + HelpEvent.OnUpdateState { + it.copy( + showHelpItem10 = !it.showHelpItem10 + ) + } + ) + }, + onTagClick = {} + ) +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/components/items/HelpUseTranslator.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/components/items/HelpUseTranslator.kt new file mode 100644 index 00000000..672f5879 --- /dev/null +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/components/items/HelpUseTranslator.kt @@ -0,0 +1,36 @@ +package ua.acclorite.book_story.presentation.screens.help.components.items + +import androidx.compose.foundation.lazy.LazyItemScope +import androidx.compose.runtime.Composable +import androidx.compose.runtime.State +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.buildAnnotatedString +import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.screens.help.components.HelpItem +import ua.acclorite.book_story.presentation.screens.help.data.HelpEvent +import ua.acclorite.book_story.presentation.screens.help.data.HelpState + +@Composable +fun LazyItemScope.HelpUseTranslator( + state: State, + onEvent: (HelpEvent) -> Unit +) { + HelpItem( + title = stringResource(id = R.string.help_title_how_to_use_translator), + description = buildAnnotatedString { + append(stringResource(id = R.string.help_desc_how_to_use_translator_1)) + }, + tags = emptyList(), + shouldShowDescription = state.value.showHelpItem12, + onTitleClick = { + onEvent( + HelpEvent.OnUpdateState { + it.copy( + showHelpItem12 = !it.showHelpItem12 + ) + } + ) + }, + onTagClick = {} + ) +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/data/HelpState.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/data/HelpState.kt index 94abdcc6..f29d69c9 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/data/HelpState.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/help/data/HelpState.kt @@ -20,4 +20,7 @@ data class HelpState( val showHelpItem7: Boolean = false, val showHelpItem8: Boolean = false, val showHelpItem9: Boolean = false, + val showHelpItem10: Boolean = false, + val showHelpItem11: Boolean = false, + val showHelpItem12: Boolean = false, ) \ No newline at end of file diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index daa84e2d..1e8d7cc2 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -461,6 +461,56 @@ Остання відкрита книга завжди є першою в Бібліотеці та Історії. + Як використовувати підказки? + + Більшість кнопок-іконок мають підказки, вони можуть допомогти якщо ви не знаєте, що робить кнопка-іконка. + Щоб показати підказку, ви можете затиснути кнопку-іконку. + + + Як мені налаштувати перекладач? + + Ви можете налаштувати перекладач двома шляхами. + Перший - налаштувати його для окремої книги. + Другий - налаштувати його глобально для всіх нових книг. + + Щоб налаштувати перекладач окремо, почніть читати книгу(див: Як мені читати книгу?). + Після цього покажіть верхню і нижню панелі, натиснувши в будь-якому місці екрану. + Натисніть на іконку перекладача у верхньому правому куті. + Тепер ви можете налаштувати перекладач для окремої книги. + + Щоб налаштувати перекладач глобально, перейдіть в + + Налаштування Читача + + Знайдіть категорію «Перекладач». + Тепер ви можете налаштувати параметри перекладача за замовчуванням для всіх новододаних книг. + + + Як використовувати перекладач? + + Існує два способи використання вбудованого перекладача. + Перший спосіб - це переклад одного абзацу, при цьому буде перекладено + лише один абзац за раз. Рекомендується використовувати саме цей спосіб, + оскільки це майже не займає часу(порівняно з другим способом). + Другий спосіб - повний переклад тексту, при цьому буде перекладено + весь текст книги. Не рекомендується для великих книг, + займає значну кількість часу(до декількох хвилин). + + Спочатку почніть читати книгу(див: Як мені читати книгу?). + Щоб використовувати переклад одного абзацу у вас має бути + ввімкнено «Переклад подвійним кліком» та перекладач для поточної книги. + Щоб перекласти, двічі клацніть потрібний абзац, + щоб скасувати переклад, двічі клацніть його ще раз. + + Для перекладу всього тексту вам потрібно відкрити налаштування + перекладача для окремої книги(див: Як мені налаштувати перекладач?). + Після цього натиснути кнопку «Перекласти». Переклад почнеться, + якщо для «Перекласти з» ви вибрали «Визначити», + ви можете побачити діалогове вікно для завантаження необхідних мов. + Зверніть увагу, що переклад всього тексту може зайняти значну кількість часу, + тому перевага надається перекладу одного абзацу. + + Вітаємо в Історія Книги! diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 42cb001f..90b9e38f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -481,6 +481,56 @@ Last opened book is always the first in Library and History. + How do I use tooltips? + + Most icon-buttons have tooltips, they can help you if you don\'t know what an icon-button does. + To show tooltip you can hold on an icon-button. + + + How do I set up translator? + + You can set up translator in two ways. + First is to set it up individually for a book. + Second is to set it up globally for all newly added books. + + To set translator up individually start reading the book(see: How do I read a book?). + After that bring top and bottom bars by clicking anywhere on the screen. + Click the translator icon in the upper right corner. + Now you can set up your preferences for the individual book. + + To set translator up globally go to the + + Reader Settings + + Find «Translator» category. + Now you can set up default translator settings for all newly added books. + + + How do I use translator? + + There are two ways to use built-in translator. + First way is one paragraph translation, this will translate + only one paragraph at a time. Recommended to use it, + as it takes almost no time to translate(compared to the second way). + Second way is full text translation, this will translate + the whole text of the book. Not recommended for large books, + takes significant amount of time(up to a couple of minutes). + + First, start reading the book(see: How do I read a book?). + To be able to use one paragraph translation + you should have «Double click translation» and translator enabled for your current book. + To translate, double click the desired paragraph, + to cancel translation double click it again. + + For the whole text translation + you need to open translator settings for individual book(see: How do I set up translator?). + After that, click the «Translate» button. Translation will start, + if you chose «Detect» for «Translate from», + you may see the dialog to download required languages. + Please note, that the whole text translation may take a significant amount of time, + therefore one paragraph translation is preferred. + + Welcome to Book\'s Story!