HelpScreen: How do I use tooltips?, How do I set up translator?, How do I use translator? (v1.0.1)

This commit is contained in:
acclorite 2024-06-10 17:43:36 +03:00
parent 21bb739499
commit ebf86229d0
7 changed files with 255 additions and 0 deletions

View file

@ -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.HelpManageHistory
import ua.acclorite.book_story.presentation.screens.help.components.items.HelpMoveOrDeleteBooks 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.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.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.HelpEvent
import ua.acclorite.book_story.presentation.screens.help.data.HelpState import ua.acclorite.book_story.presentation.screens.help.data.HelpState
import ua.acclorite.book_story.presentation.screens.help.data.HelpViewModel 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 { item {
Spacer( Spacer(
modifier = Modifier modifier = Modifier

View file

@ -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<HelpState>,
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)
}
}
}
}
)
}

View file

@ -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<HelpState>,
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 = {}
)
}

View file

@ -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<HelpState>,
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 = {}
)
}

View file

@ -20,4 +20,7 @@ data class HelpState(
val showHelpItem7: Boolean = false, val showHelpItem7: Boolean = false,
val showHelpItem8: Boolean = false, val showHelpItem8: Boolean = false,
val showHelpItem9: Boolean = false, val showHelpItem9: Boolean = false,
val showHelpItem10: Boolean = false,
val showHelpItem11: Boolean = false,
val showHelpItem12: Boolean = false,
) )

View file

@ -461,6 +461,56 @@
Остання відкрита книга завжди є першою в Бібліотеці та Історії. Остання відкрита книга завжди є першою в Бібліотеці та Історії.
</string> </string>
<string name="help_title_how_to_use_tooltip">Як використовувати підказки?</string>
<string name="help_desc_how_to_use_tooltip_1">
Більшість кнопок-іконок мають підказки, вони можуть допомогти якщо ви не знаєте, що робить кнопка-іконка.
Щоб показати підказку, ви можете затиснути кнопку-іконку.
</string>
<string name="help_title_how_to_set_up_translator">Як мені налаштувати перекладач?</string>
<string name="help_desc_how_to_set_up_translator_1">
Ви можете налаштувати перекладач двома шляхами.
Перший - налаштувати його для окремої книги.
Другий - налаштувати його глобально для всіх нових книг.
Щоб налаштувати перекладач окремо, почніть читати книгу(див: Як мені читати книгу?).
Після цього покажіть верхню і нижню панелі, натиснувши в будь-якому місці екрану.
Натисніть на іконку перекладача у верхньому правому куті.
Тепер ви можете налаштувати перекладач для окремої книги.
Щоб налаштувати перекладач глобально, перейдіть в
</string>
<string name="help_desc_how_to_set_up_translator_2">Налаштування Читача</string>
<string name="help_desc_how_to_set_up_translator_3">
Знайдіть категорію «Перекладач».
Тепер ви можете налаштувати параметри перекладача за замовчуванням для всіх новододаних книг.
</string>
<string name="help_title_how_to_use_translator">Як використовувати перекладач?</string>
<string name="help_desc_how_to_use_translator_1">
Існує два способи використання вбудованого перекладача.
Перший спосіб - це переклад одного абзацу, при цьому буде перекладено
лише один абзац за раз. Рекомендується використовувати саме цей спосіб,
оскільки це майже не займає часу(порівняно з другим способом).
Другий спосіб - повний переклад тексту, при цьому буде перекладено
весь текст книги. Не рекомендується для великих книг,
займає значну кількість часу(до декількох хвилин).
Спочатку почніть читати книгу(див: Як мені читати книгу?).
Щоб використовувати переклад одного абзацу у вас має бути
ввімкнено «Переклад подвійним кліком» та перекладач для поточної книги.
Щоб перекласти, двічі клацніть потрібний абзац,
щоб скасувати переклад, двічі клацніть його ще раз.
Для перекладу всього тексту вам потрібно відкрити налаштування
перекладача для окремої книги(див: Як мені налаштувати перекладач?).
Після цього натиснути кнопку «Перекласти». Переклад почнеться,
якщо для «Перекласти з» ви вибрали «Визначити»,
ви можете побачити діалогове вікно для завантаження необхідних мов.
Зверніть увагу, що переклад всього тексту може зайняти значну кількість часу,
тому перевага надається перекладу одного абзацу.
</string>
<!-- Start --> <!-- Start -->
<string name="start_welcome">Вітаємо в Історія Книги!</string> <string name="start_welcome">Вітаємо в Історія Книги!</string>

View file

@ -481,6 +481,56 @@
Last opened book is always the first in Library and History. Last opened book is always the first in Library and History.
</string> </string>
<string name="help_title_how_to_use_tooltip">How do I use tooltips?</string>
<string name="help_desc_how_to_use_tooltip_1">
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.
</string>
<string name="help_title_how_to_set_up_translator">How do I set up translator?</string>
<string name="help_desc_how_to_set_up_translator_1">
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
</string>
<string name="help_desc_how_to_set_up_translator_2">Reader Settings</string>
<string name="help_desc_how_to_set_up_translator_3">
Find «Translator» category.
Now you can set up default translator settings for all newly added books.
</string>
<string name="help_title_how_to_use_translator">How do I use translator?</string>
<string name="help_desc_how_to_use_translator_1">
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.
</string>
<!-- Start --> <!-- Start -->
<string name="start_welcome">Welcome to Book\'s Story!</string> <string name="start_welcome">Welcome to Book\'s Story!</string>