merge(feat): 189-disable-image-captions into develop
This commit is contained in:
commit
7c4d8e88ca
13 changed files with 76 additions and 5 deletions
|
|
@ -95,7 +95,7 @@ class DocumentParser @Inject constructor(
|
||||||
|
|
||||||
val alt = element.attr("alt").trim().takeIf {
|
val alt = element.attr("alt").trim().takeIf {
|
||||||
it.clearMarkdown().containsVisibleText()
|
it.clearMarkdown().containsVisibleText()
|
||||||
} ?: src.substringBeforeLast(".")
|
} ?: "Image"
|
||||||
|
|
||||||
element.append("\n[[$src|$alt]]\n")
|
element.append("\n[[$src|$alt]]\n")
|
||||||
}
|
}
|
||||||
|
|
@ -113,7 +113,7 @@ class DocumentParser @Inject constructor(
|
||||||
} == true
|
} == true
|
||||||
} ?: return@forEach
|
} ?: return@forEach
|
||||||
|
|
||||||
val alt = src.substringBeforeLast(".")
|
val alt = "Image"
|
||||||
|
|
||||||
element.append("\n[[$src|$alt]]\n")
|
element.append("\n[[$src|$alt]]\n")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,7 @@ sealed class MainEvent {
|
||||||
data class OnChangeHighlightedReadingThickness(val value: Int) : MainEvent()
|
data class OnChangeHighlightedReadingThickness(val value: Int) : MainEvent()
|
||||||
data class OnChangeChapterTitleAlignment(val value: String) : MainEvent()
|
data class OnChangeChapterTitleAlignment(val value: String) : MainEvent()
|
||||||
data class OnChangeImages(val value: Boolean) : MainEvent()
|
data class OnChangeImages(val value: Boolean) : MainEvent()
|
||||||
|
data class OnChangeImagesCaptions(val value: Boolean) : MainEvent()
|
||||||
data class OnChangeImagesCornersRoundness(val value: Int) : MainEvent()
|
data class OnChangeImagesCornersRoundness(val value: Int) : MainEvent()
|
||||||
data class OnChangeImagesAlignment(val value: String) : MainEvent()
|
data class OnChangeImagesAlignment(val value: String) : MainEvent()
|
||||||
data class OnChangeImagesWidth(val value: Float) : MainEvent()
|
data class OnChangeImagesWidth(val value: Float) : MainEvent()
|
||||||
|
|
|
||||||
|
|
@ -416,6 +416,14 @@ class MainModel @Inject constructor(
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
is MainEvent.OnChangeImagesCaptions -> handleDatastoreUpdate(
|
||||||
|
key = DataStoreData.IMAGES_CAPTIONS,
|
||||||
|
value = event.value,
|
||||||
|
updateState = {
|
||||||
|
it.copy(imagesCaptions = this)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
is MainEvent.OnChangeImagesCornersRoundness -> handleDatastoreUpdate(
|
is MainEvent.OnChangeImagesCornersRoundness -> handleDatastoreUpdate(
|
||||||
key = DataStoreData.IMAGES_CORNERS_ROUNDNESS,
|
key = DataStoreData.IMAGES_CORNERS_ROUNDNESS,
|
||||||
value = event.value,
|
value = event.value,
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,7 @@ data class MainState(
|
||||||
val highlightedReadingThickness: Int = provideDefaultValue { 2 },
|
val highlightedReadingThickness: Int = provideDefaultValue { 2 },
|
||||||
val chapterTitleAlignment: ReaderTextAlignment = provideDefaultValue { ReaderTextAlignment.JUSTIFY },
|
val chapterTitleAlignment: ReaderTextAlignment = provideDefaultValue { ReaderTextAlignment.JUSTIFY },
|
||||||
val images: Boolean = provideDefaultValue { true },
|
val images: Boolean = provideDefaultValue { true },
|
||||||
|
val imagesCaptions: Boolean = provideDefaultValue { true },
|
||||||
val imagesCornersRoundness: Int = provideDefaultValue { 8 },
|
val imagesCornersRoundness: Int = provideDefaultValue { 8 },
|
||||||
val imagesAlignment: HorizontalAlignment = provideDefaultValue { HorizontalAlignment.START },
|
val imagesAlignment: HorizontalAlignment = provideDefaultValue { HorizontalAlignment.START },
|
||||||
val imagesWidth: Float = provideDefaultValue { 0.8f },
|
val imagesWidth: Float = provideDefaultValue { 0.8f },
|
||||||
|
|
@ -327,6 +328,10 @@ data class MainState(
|
||||||
IMAGES
|
IMAGES
|
||||||
) { images },
|
) { images },
|
||||||
|
|
||||||
|
imagesCaptions = provideValue(
|
||||||
|
IMAGES_CAPTIONS
|
||||||
|
) { imagesCaptions },
|
||||||
|
|
||||||
imagesCornersRoundness = provideValue(
|
imagesCornersRoundness = provideValue(
|
||||||
IMAGES_CORNERS_ROUNDNESS
|
IMAGES_CORNERS_ROUNDNESS
|
||||||
) { imagesCornersRoundness },
|
) { imagesCornersRoundness },
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,7 @@ object DataStoreData {
|
||||||
val HIGHLIGHTED_READING_THICKNESS = intPreferencesKey("highlighted_reading_thickness")
|
val HIGHLIGHTED_READING_THICKNESS = intPreferencesKey("highlighted_reading_thickness")
|
||||||
val CHAPTER_TITLE_ALIGNMENT = stringPreferencesKey("chapter_title_alignment")
|
val CHAPTER_TITLE_ALIGNMENT = stringPreferencesKey("chapter_title_alignment")
|
||||||
val IMAGES = booleanPreferencesKey("images")
|
val IMAGES = booleanPreferencesKey("images")
|
||||||
|
val IMAGES_CAPTIONS = booleanPreferencesKey("images_captions")
|
||||||
val IMAGES_CORNERS_ROUNDNESS = intPreferencesKey("images_corners_roundness")
|
val IMAGES_CORNERS_ROUNDNESS = intPreferencesKey("images_corners_roundness")
|
||||||
val IMAGES_ALIGNMENT = stringPreferencesKey("images_alignment")
|
val IMAGES_ALIGNMENT = stringPreferencesKey("images_alignment")
|
||||||
val IMAGES_WIDTH = doublePreferencesKey("images_width")
|
val IMAGES_WIDTH = doublePreferencesKey("images_width")
|
||||||
|
|
|
||||||
|
|
@ -439,6 +439,7 @@ data class ReaderScreen(val bookId: Int) : Screen, Parcelable {
|
||||||
backgroundColor = backgroundColor.value,
|
backgroundColor = backgroundColor.value,
|
||||||
fontColor = fontColor.value,
|
fontColor = fontColor.value,
|
||||||
images = mainState.value.images,
|
images = mainState.value.images,
|
||||||
|
imagesCaptions = mainState.value.imagesCaptions,
|
||||||
imagesCornersRoundness = imagesCornersRoundness,
|
imagesCornersRoundness = imagesCornersRoundness,
|
||||||
imagesAlignment = mainState.value.imagesAlignment,
|
imagesAlignment = mainState.value.imagesAlignment,
|
||||||
imagesWidth = imagesWidth,
|
imagesWidth = imagesWidth,
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,7 @@ fun ReaderContent(
|
||||||
backgroundColor: Color,
|
backgroundColor: Color,
|
||||||
fontColor: Color,
|
fontColor: Color,
|
||||||
images: Boolean,
|
images: Boolean,
|
||||||
|
imagesCaptions: Boolean,
|
||||||
imagesCornersRoundness: Dp,
|
imagesCornersRoundness: Dp,
|
||||||
imagesAlignment: HorizontalAlignment,
|
imagesAlignment: HorizontalAlignment,
|
||||||
imagesWidth: Float,
|
imagesWidth: Float,
|
||||||
|
|
@ -150,6 +151,7 @@ fun ReaderContent(
|
||||||
backgroundColor = backgroundColor,
|
backgroundColor = backgroundColor,
|
||||||
fontColor = fontColor,
|
fontColor = fontColor,
|
||||||
images = images,
|
images = images,
|
||||||
|
imagesCaptions = imagesCaptions,
|
||||||
imagesCornersRoundness = imagesCornersRoundness,
|
imagesCornersRoundness = imagesCornersRoundness,
|
||||||
imagesAlignment = imagesAlignment,
|
imagesAlignment = imagesAlignment,
|
||||||
imagesWidth = imagesWidth,
|
imagesWidth = imagesWidth,
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,7 @@ fun ReaderLayout(
|
||||||
backgroundColor: Color,
|
backgroundColor: Color,
|
||||||
fontColor: Color,
|
fontColor: Color,
|
||||||
images: Boolean,
|
images: Boolean,
|
||||||
|
imagesCaptions: Boolean,
|
||||||
imagesCornersRoundness: Dp,
|
imagesCornersRoundness: Dp,
|
||||||
imagesAlignment: HorizontalAlignment,
|
imagesAlignment: HorizontalAlignment,
|
||||||
imagesWidth: Float,
|
imagesWidth: Float,
|
||||||
|
|
@ -187,8 +188,11 @@ fun ReaderLayout(
|
||||||
text,
|
text,
|
||||||
key = { index, _ -> index }
|
key = { index, _ -> index }
|
||||||
) { index, entry ->
|
) { index, entry ->
|
||||||
|
val previousEntry = text.getOrNull(index - 1)
|
||||||
|
|
||||||
when {
|
when {
|
||||||
!images && entry is ReaderText.Image -> return@itemsIndexed
|
!images && (entry is ReaderText.Image || previousEntry is ReaderText.Image) -> return@itemsIndexed
|
||||||
|
!imagesCaptions && previousEntry is ReaderText.Image -> return@itemsIndexed
|
||||||
else -> {
|
else -> {
|
||||||
SpacedItem(
|
SpacedItem(
|
||||||
index = index,
|
index = index,
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,7 @@ fun ReaderScaffold(
|
||||||
backgroundColor: Color,
|
backgroundColor: Color,
|
||||||
fontColor: Color,
|
fontColor: Color,
|
||||||
images: Boolean,
|
images: Boolean,
|
||||||
|
imagesCaptions: Boolean,
|
||||||
imagesCornersRoundness: Dp,
|
imagesCornersRoundness: Dp,
|
||||||
imagesAlignment: HorizontalAlignment,
|
imagesAlignment: HorizontalAlignment,
|
||||||
imagesWidth: Float,
|
imagesWidth: Float,
|
||||||
|
|
@ -180,6 +181,7 @@ fun ReaderScaffold(
|
||||||
backgroundColor = backgroundColor,
|
backgroundColor = backgroundColor,
|
||||||
fontColor = fontColor,
|
fontColor = fontColor,
|
||||||
images = images,
|
images = images,
|
||||||
|
imagesCaptions = imagesCaptions,
|
||||||
imagesCornersRoundness = imagesCornersRoundness,
|
imagesCornersRoundness = imagesCornersRoundness,
|
||||||
imagesAlignment = imagesAlignment,
|
imagesAlignment = imagesAlignment,
|
||||||
imagesWidth = imagesWidth,
|
imagesWidth = imagesWidth,
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import androidx.compose.ui.res.stringResource
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.ui.settings.components.SettingsSubcategory
|
import ua.acclorite.book_story.ui.settings.components.SettingsSubcategory
|
||||||
import ua.acclorite.book_story.ui.settings.reader.images.components.ImagesAlignmentOption
|
import ua.acclorite.book_story.ui.settings.reader.images.components.ImagesAlignmentOption
|
||||||
|
import ua.acclorite.book_story.ui.settings.reader.images.components.ImagesCaptionsOption
|
||||||
import ua.acclorite.book_story.ui.settings.reader.images.components.ImagesColorEffectsOption
|
import ua.acclorite.book_story.ui.settings.reader.images.components.ImagesColorEffectsOption
|
||||||
import ua.acclorite.book_story.ui.settings.reader.images.components.ImagesCornersRoundnessOption
|
import ua.acclorite.book_story.ui.settings.reader.images.components.ImagesCornersRoundnessOption
|
||||||
import ua.acclorite.book_story.ui.settings.reader.images.components.ImagesOption
|
import ua.acclorite.book_story.ui.settings.reader.images.components.ImagesOption
|
||||||
|
|
@ -37,6 +38,10 @@ fun LazyListScope.ImagesSubcategory(
|
||||||
ImagesOption()
|
ImagesOption()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
item {
|
||||||
|
ImagesCaptionsOption()
|
||||||
|
}
|
||||||
|
|
||||||
item {
|
item {
|
||||||
ImagesColorEffectsOption()
|
ImagesColorEffectsOption()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Book's Story — free and open-source Material You eBook reader.
|
||||||
|
* Copyright (C) 2024-2025 Acclorite
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
package ua.acclorite.book_story.ui.settings.reader.images.components
|
||||||
|
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.res.stringResource
|
||||||
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||||
|
import ua.acclorite.book_story.R
|
||||||
|
import ua.acclorite.book_story.presentation.main.MainEvent
|
||||||
|
import ua.acclorite.book_story.presentation.main.MainModel
|
||||||
|
import ua.acclorite.book_story.ui.common.components.settings.SwitchWithTitle
|
||||||
|
import ua.acclorite.book_story.ui.theme.ExpandingTransition
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ImagesCaptionsOption() {
|
||||||
|
val mainModel = hiltViewModel<MainModel>()
|
||||||
|
val state = mainModel.state.collectAsStateWithLifecycle()
|
||||||
|
|
||||||
|
ExpandingTransition(visible = state.value.images) {
|
||||||
|
SwitchWithTitle(
|
||||||
|
selected = state.value.imagesCaptions,
|
||||||
|
title = stringResource(id = R.string.images_captions_option),
|
||||||
|
description = stringResource(id = R.string.images_captions_option_desc),
|
||||||
|
onClick = {
|
||||||
|
mainModel.onEvent(
|
||||||
|
MainEvent.OnChangeImagesCaptions(
|
||||||
|
!state.value.imagesCaptions
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -212,7 +212,9 @@
|
||||||
<string name="highlighted_reading_option_desc">Підсвічувати початок кожного слова</string>
|
<string name="highlighted_reading_option_desc">Підсвічувати початок кожного слова</string>
|
||||||
<string name="highlighted_reading_thickness_option">Товщина підсвічування</string>
|
<string name="highlighted_reading_thickness_option">Товщина підсвічування</string>
|
||||||
<string name="images_option">Зображення</string>
|
<string name="images_option">Зображення</string>
|
||||||
<string name="images_option_desc">Показувати зображення разом із написами до них</string>
|
<string name="images_option_desc">Показувати зображення</string>
|
||||||
|
<string name="images_captions_option">Написи</string>
|
||||||
|
<string name="images_captions_option_desc">Показувати написи під зображеннями</string>
|
||||||
<string name="images_corners_roundness_option">Округлість кутків</string>
|
<string name="images_corners_roundness_option">Округлість кутків</string>
|
||||||
<string name="images_alignment_option">Розташування</string>
|
<string name="images_alignment_option">Розташування</string>
|
||||||
<string name="images_width_option">Розмір</string>
|
<string name="images_width_option">Розмір</string>
|
||||||
|
|
|
||||||
|
|
@ -236,7 +236,9 @@
|
||||||
<string name="highlighted_reading_option_desc">Highlight the beginning of each word</string>
|
<string name="highlighted_reading_option_desc">Highlight the beginning of each word</string>
|
||||||
<string name="highlighted_reading_thickness_option">Highlight thickness</string>
|
<string name="highlighted_reading_thickness_option">Highlight thickness</string>
|
||||||
<string name="images_option">Images</string>
|
<string name="images_option">Images</string>
|
||||||
<string name="images_option_desc">Display images along with their captions</string>
|
<string name="images_option_desc">Display images</string>
|
||||||
|
<string name="images_captions_option">Captions</string>
|
||||||
|
<string name="images_captions_option_desc">Display captions under images</string>
|
||||||
<string name="images_corners_roundness_option">Corners roundness</string>
|
<string name="images_corners_roundness_option">Corners roundness</string>
|
||||||
<string name="images_alignment_option">Alignment</string>
|
<string name="images_alignment_option">Alignment</string>
|
||||||
<string name="images_width_option">Size</string>
|
<string name="images_width_option">Size</string>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue