Skip to content

Commit

Permalink
Merge branch 'plateaukao:main' into android-studio
Browse files Browse the repository at this point in the history
  • Loading branch information
Myron472 authored Oct 12, 2024
2 parents 121ecaf + 0a95a31 commit 4e74edc
Show file tree
Hide file tree
Showing 7 changed files with 110 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ import info.plateaukao.einkbro.activity.SettingRoute.valueOf
import info.plateaukao.einkbro.browser.AdBlockV2
import info.plateaukao.einkbro.preference.ConfigManager
import info.plateaukao.einkbro.preference.HighlightStyle
import info.plateaukao.einkbro.preference.TranslationTextStyle
import info.plateaukao.einkbro.setting.ActionSettingItem
import info.plateaukao.einkbro.setting.BooleanSettingItem
import info.plateaukao.einkbro.setting.DividerSettingItem
Expand Down Expand Up @@ -821,6 +822,13 @@ class SettingActivity : FragmentActivity() {
options = HighlightStyle.entries.filter { it != HighlightStyle.BACKGROUND_NONE }
.map { it.stringResId },
),
ListSettingWithEnumItem(
R.string.setting_title_translation_style,
0,
R.string.setting_summary_translation_style,
config = config::translationTextStyle,
options = TranslationTextStyle.entries.map { it.stringResId },
),
NavigateSettingItem(
R.string.setting_title_userAgent,
0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -610,6 +610,10 @@ class ConfigManager(
get() = HighlightStyle.entries[sp.getInt(K_HIGHLIGHT_STYLE, 0)]
set(value) = sp.edit { putInt(K_HIGHLIGHT_STYLE, value.ordinal) }

var translationTextStyle: TranslationTextStyle
get() = TranslationTextStyle.entries[sp.getInt("K_TRANSLATION_TEXT_STYLE", 1)]
set(value) = sp.edit { putInt("K_TRANSLATION_TEXT_STYLE", value.ordinal) }

var adSites: MutableSet<String>
get() = sp.getStringSet(K_ADBLOCK_SITES, mutableSetOf()) ?: mutableSetOf()
set(value) = sp.edit { putStringSet(K_ADBLOCK_SITES, value) }
Expand Down Expand Up @@ -1136,6 +1140,16 @@ enum class HighlightStyle(
)
}

enum class TranslationTextStyle(
val stringResId: Int,
) {
NONE(R.string.none),
DASHED_BORDER(R.string.dashed_border),
VERTICAL_LINE(R.string.vertical_line),
GRAY(R.string.gray),
BOLD(R.string.bold),
}

enum class SaveHistoryMode {
SAVE_WHEN_OPEN, SAVE_WHEN_CLOSE, DISABLED
}
Expand Down
65 changes: 64 additions & 1 deletion app/src/main/java/info/plateaukao/einkbro/view/NinjaWebView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import info.plateaukao.einkbro.preference.DarkMode
import info.plateaukao.einkbro.preference.FontType
import info.plateaukao.einkbro.preference.HighlightStyle
import info.plateaukao.einkbro.preference.TranslationMode
import info.plateaukao.einkbro.preference.TranslationTextStyle
import info.plateaukao.einkbro.unit.BrowserUnit
import info.plateaukao.einkbro.unit.HelperUnit
import info.plateaukao.einkbro.unit.ViewUnit.dp
Expand Down Expand Up @@ -792,6 +793,14 @@ open class NinjaWebView(
}

fun translateByParagraphInPlace() {
val textBlockStyle = when (config.translationTextStyle) {
TranslationTextStyle.NONE -> translatedPCssNone
TranslationTextStyle.DASHED_BORDER -> translatedPCssDashedBorder
TranslationTextStyle.VERTICAL_LINE -> translatedPCssVerticalLine
TranslationTextStyle.GRAY -> translatedPCssGray
TranslationTextStyle.BOLD -> translatedPCssBold
}
injectCss(textBlockStyle.toByteArray())
evaluateJavascript(translateParagraphJs) {
evaluateJavascript(textNodesMonitorJs, null)
isTranslateByParagraph = true
Expand Down Expand Up @@ -1173,14 +1182,68 @@ open class NinjaWebView(
})()
"""

private const val translatedPCssNone = """
.translated {
padding: 5px;
display: inline-block;
line-height: 1.5;
}
"""

private const val translatedPCssGray = """
.translated {
color: gray;
padding: 5px;
display: inline-block;
line-height: 1.5;
}
"""

private const val translatedPCssBold = """
.translated {
font-weight: bold;
padding: 5px;
display: inline-block;
line-height: 1.5;
}
"""

private const val translatedPCssDashedBorder = """
.translated {
border: 1px dashed lightgray;
padding: 5px;
display: inline-block;
position: relative;
line-height: 1.5;
}
"""
private const val translatedPCssVerticalLine = """
.translated {
padding: 2px;
padding-left: 5px;
display: inline-block;
position: relative;
line-height: 1.5;
}
.translated::before {
content: '';
display: inline-block;
width: 2px;
height: 90%;
background-color: lightgray;
position: absolute;
left: -5px;
}
"""

const val textNodesMonitorJs = """
//const bridge = window.android = new androidApp(context, webView);
function myCallback(elementId, responseString) {
//console.log("Element ID:", elementId, "Response string:", responseString);
node = document.getElementById(elementId).nextElementSibling;
node.textContent = responseString;
node.style = "border: 1px dashed lightgray; padding: 5px; display: inline-block; line-height: 1.5;"
node.classList.add("translated");
}
// Create a new IntersectionObserver object
Expand Down
5 changes: 5 additions & 0 deletions app/src/main/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -585,4 +585,9 @@
<string name="openai">OpenAI</string>
<string name="openai_compatible_server">Совместимый сервер OpenAI</string>
<string name="google_gemini">Google Gemini</string>
<string name="vertical_line">Vertical line</string>
<string name="setting_title_translation_style">Translation text block style</string>
<string name="setting_summary_translation_style">Choose the style you like for paragraph translation</string>
<string name="gray">Gray</string>
<string name="bold">Bold</string>
</resources>
6 changes: 6 additions & 0 deletions app/src/main/res/values-zh-rCN/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -566,4 +566,10 @@
<string name="gesture_on_floating_button">Gesture on floating button</string>
<string name="openai">OpenAI</string>
<string name="openai_compatible_server">OpenAI Compatible Server</string>
<string name="dashed_border">Dashed border</string>
<string name="vertical_line">Vertical line</string>
<string name="setting_title_translation_style">Translation text block style</string>
<string name="setting_summary_translation_style">Choose the style you like for paragraph translation</string>
<string name="gray">Gray</string>
<string name="bold">Bold</string>
</resources>
6 changes: 6 additions & 0 deletions app/src/main/res/values-zh-rTW/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -498,4 +498,10 @@
<string name="gesture_on_floating_button">浮動按鈕上的手勢</string>
<string name="openai">OpenAI</string>
<string name="openai_compatible_server">與 OpenAI 相容的服務</string>
<string name="dashed_border">虛線邊框</string>
<string name="vertical_line">引用格式</string>
<string name="setting_title_translation_style">沉浸式翻譯文字外觀</string>
<string name="setting_summary_translation_style">選擇想要的文字區塊外觀</string>
<string name="gray">灰色字體</string>
<string name="bold">粗體字</string>
</resources>
7 changes: 7 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -586,4 +586,11 @@
<string name="openai">OpenAI</string>
<string name="openai_compatible_server">OpenAI Compatible Server</string>
<string name="google_gemini">Google Gemini</string>
<string name="none">None</string>
<string name="dashed_border">Dashed border</string>
<string name="vertical_line">Vertical line</string>
<string name="setting_title_translation_style">Translation text block style</string>
<string name="setting_summary_translation_style">Choose the style you like for paragraph translation</string>
<string name="gray">Gray</string>
<string name="bold">Bold</string>
</resources>

0 comments on commit 4e74edc

Please sign in to comment.