diff --git a/app/src/main/java/ani/dantotsu/media/novel/novelreader/NovelReaderActivity.kt b/app/src/main/java/ani/dantotsu/media/novel/novelreader/NovelReaderActivity.kt
index 069fef28..1ea357fa 100644
--- a/app/src/main/java/ani/dantotsu/media/novel/novelreader/NovelReaderActivity.kt
+++ b/app/src/main/java/ani/dantotsu/media/novel/novelreader/NovelReaderActivity.kt
@@ -36,7 +36,7 @@ import ani.dantotsu.saveData
import ani.dantotsu.setSafeOnClickListener
import ani.dantotsu.settings.CurrentNovelReaderSettings
import ani.dantotsu.settings.CurrentReaderSettings
-import ani.dantotsu.settings.NovelReaderSettings
+import ani.dantotsu.settings.ReaderSettings
import ani.dantotsu.settings.UserInterfaceSettings
import ani.dantotsu.snackString
import ani.dantotsu.themes.ThemeManager
@@ -62,7 +62,7 @@ class NovelReaderActivity : AppCompatActivity(), EbookReaderEventListener {
private lateinit var binding: ActivityNovelReaderBinding
private val scope = lifecycleScope
- lateinit var settings: NovelReaderSettings
+ lateinit var settings: ReaderSettings
private lateinit var uiSettings: UserInterfaceSettings
private var notchHeight: Int? = null
@@ -159,9 +159,8 @@ class NovelReaderActivity : AppCompatActivity(), EbookReaderEventListener {
ThemeManager(this).applyTheme()
binding = ActivityNovelReaderBinding.inflate(layoutInflater)
setContentView(binding.root)
-
- settings = loadData("novel_reader_settings", this)
- ?: NovelReaderSettings().apply { saveData("novel_reader_settings", this) }
+ settings = loadData("reader_settings", this)
+ ?: ReaderSettings().apply { saveData("reader_settings", this) }
uiSettings = loadData("ui_settings", this)
?: UserInterfaceSettings().also { saveData("ui_settings", it) }
@@ -271,7 +270,7 @@ class NovelReaderActivity : AppCompatActivity(), EbookReaderEventListener {
binding.bookReader.getAppearance {
currentTheme = it
themes.add(0, it)
- settings.default = loadData("${sanitizedBookId}_current_settings") ?: settings.default
+ settings.defaultLN = loadData("${sanitizedBookId}_current_settings") ?: settings.defaultLN
applySettings()
}
@@ -323,7 +322,7 @@ class NovelReaderActivity : AppCompatActivity(), EbookReaderEventListener {
return when (event.keyCode) {
KeyEvent.KEYCODE_VOLUME_UP, KeyEvent.KEYCODE_DPAD_UP, KeyEvent.KEYCODE_PAGE_UP -> {
if (event.keyCode == KeyEvent.KEYCODE_VOLUME_UP)
- if (!settings.default.volumeButtons)
+ if (!settings.defaultLN.volumeButtons)
return false
if (event.action == KeyEvent.ACTION_DOWN) {
onVolumeUp?.invoke()
@@ -333,7 +332,7 @@ class NovelReaderActivity : AppCompatActivity(), EbookReaderEventListener {
KeyEvent.KEYCODE_VOLUME_DOWN, KeyEvent.KEYCODE_DPAD_DOWN, KeyEvent.KEYCODE_PAGE_DOWN -> {
if (event.keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
- if (!settings.default.volumeButtons)
+ if (!settings.defaultLN.volumeButtons)
return false
if (event.action == KeyEvent.ACTION_DOWN) {
onVolumeDown?.invoke()
@@ -349,13 +348,13 @@ class NovelReaderActivity : AppCompatActivity(), EbookReaderEventListener {
fun applySettings() {
- saveData("${sanitizedBookId}_current_settings", settings.default)
+ saveData("${sanitizedBookId}_current_settings", settings.defaultLN)
hideBars()
currentTheme =
- themes.first { it.name.equals(settings.default.currentThemeName, ignoreCase = true) }
+ themes.first { it.name.equals(settings.defaultLN.currentThemeName, ignoreCase = true) }
- when (settings.default.layout) {
+ when (settings.defaultLN.layout) {
CurrentNovelReaderSettings.Layouts.PAGED -> {
currentTheme?.flow = ReaderFlow.PAGINATED
}
@@ -366,22 +365,22 @@ class NovelReaderActivity : AppCompatActivity(), EbookReaderEventListener {
}
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER
- when (settings.default.dualPageMode) {
+ when (settings.defaultLN.dualPageMode) {
CurrentReaderSettings.DualPageModes.No -> currentTheme?.maxColumnCount = 1
CurrentReaderSettings.DualPageModes.Automatic -> currentTheme?.maxColumnCount = 2
CurrentReaderSettings.DualPageModes.Force -> requestedOrientation =
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
}
- currentTheme?.lineHeight = settings.default.lineHeight
- currentTheme?.gap = settings.default.margin
- currentTheme?.maxInlineSize = settings.default.maxInlineSize
- currentTheme?.maxBlockSize = settings.default.maxBlockSize
- currentTheme?.useDark = settings.default.useDarkTheme
+ currentTheme?.lineHeight = settings.defaultLN.lineHeight
+ currentTheme?.gap = settings.defaultLN.margin
+ currentTheme?.maxInlineSize = settings.defaultLN.maxInlineSize
+ currentTheme?.maxBlockSize = settings.defaultLN.maxBlockSize
+ currentTheme?.useDark = settings.defaultLN.useDarkTheme
currentTheme?.let { binding.bookReader.setAppearance(it) }
- if (settings.default.keepScreenOn) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
+ if (settings.defaultLN.keepScreenOn) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
else window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
diff --git a/app/src/main/java/ani/dantotsu/media/novel/novelreader/NovelReaderSettingsDialogFragment.kt b/app/src/main/java/ani/dantotsu/media/novel/novelreader/NovelReaderSettingsDialogFragment.kt
index 27a9caaa..e9b12c74 100644
--- a/app/src/main/java/ani/dantotsu/media/novel/novelreader/NovelReaderSettingsDialogFragment.kt
+++ b/app/src/main/java/ani/dantotsu/media/novel/novelreader/NovelReaderSettingsDialogFragment.kt
@@ -30,7 +30,7 @@ class NovelReaderSettingsDialogFragment : BottomSheetDialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val activity = requireActivity() as NovelReaderActivity
- val settings = activity.settings.default
+ val settings = activity.settings.defaultLN
val themeLabels = activity.themes.map { it.name }
binding.themeSelect.adapter =
@@ -173,6 +173,20 @@ class NovelReaderSettingsDialogFragment : BottomSheetDialogFragment() {
binding.maxBlockSize.setText(value.toString())
activity.applySettings()
}
+
+ }
+ binding.incrementMaxBlockSize.setOnClickListener {
+ val value = binding.maxBlockSize.text.toString().toIntOrNull() ?: 720
+ settings.maxBlockSize = value + 10
+ binding.maxBlockSize.setText(settings.maxBlockSize.toString())
+ activity.applySettings()
+ }
+
+ binding.decrementMaxBlockSize.setOnClickListener {
+ val value = binding.maxBlockSize.text.toString().toIntOrNull() ?: 720
+ settings.maxBlockSize = value - 10
+ binding.maxBlockSize.setText(settings.maxBlockSize.toString())
+ activity.applySettings()
}
binding.useDarkTheme.isChecked = settings.useDarkTheme
diff --git a/app/src/main/java/ani/dantotsu/settings/NovelReaderSettings.kt b/app/src/main/java/ani/dantotsu/settings/NovelReaderSettings.kt
deleted file mode 100644
index 7c72c7e9..00000000
--- a/app/src/main/java/ani/dantotsu/settings/NovelReaderSettings.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package ani.dantotsu.settings
-
-import java.io.Serializable
-
-data class NovelReaderSettings(
- var showSource: Boolean = true,
- var showSystemBars: Boolean = false,
- var default: CurrentNovelReaderSettings = CurrentNovelReaderSettings(),
- var askIndividual: Boolean = true,
-) : Serializable
\ No newline at end of file
diff --git a/app/src/main/java/ani/dantotsu/settings/ReaderSettings.kt b/app/src/main/java/ani/dantotsu/settings/ReaderSettings.kt
index 8a249dd7..e0a91af8 100644
--- a/app/src/main/java/ani/dantotsu/settings/ReaderSettings.kt
+++ b/app/src/main/java/ani/dantotsu/settings/ReaderSettings.kt
@@ -8,6 +8,7 @@ data class ReaderSettings(
var autoDetectWebtoon: Boolean = true,
var default: CurrentReaderSettings = CurrentReaderSettings(),
+ var defaultLN: CurrentNovelReaderSettings = CurrentNovelReaderSettings(),
var askIndividual: Boolean = true,
var updateForH: Boolean = false
diff --git a/app/src/main/java/ani/dantotsu/settings/ReaderSettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/ReaderSettingsActivity.kt
index 61c87afe..999b35a5 100644
--- a/app/src/main/java/ani/dantotsu/settings/ReaderSettingsActivity.kt
+++ b/app/src/main/java/ani/dantotsu/settings/ReaderSettingsActivity.kt
@@ -1,13 +1,17 @@
package ani.dantotsu.settings
import android.os.Bundle
+import android.view.View
import android.view.ViewGroup
+import android.widget.AdapterView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.updateLayoutParams
+import ani.dantotsu.NoPaddingArrayAdapter
import ani.dantotsu.R
import ani.dantotsu.databinding.ActivityReaderSettingsBinding
import ani.dantotsu.initActivity
import ani.dantotsu.loadData
+import ani.dantotsu.media.novel.novelreader.NovelReaderActivity
import ani.dantotsu.navBarHeight
import ani.dantotsu.others.LangSet
import ani.dantotsu.saveData
@@ -42,7 +46,7 @@ class ReaderSettingsActivity : AppCompatActivity() {
onBackPressedDispatcher.onBackPressed()
}
- //General
+ //Manga Settings
binding.readerSettingsSourceName.isChecked = settings.showSource
binding.readerSettingsSourceName.setOnCheckedChangeListener { _, isChecked ->
settings.showSource = isChecked
@@ -54,14 +58,14 @@ class ReaderSettingsActivity : AppCompatActivity() {
settings.showSystemBars = isChecked
saveData(reader, settings)
}
-
+ //Default Manga
binding.readerSettingsAutoWebToon.isChecked = settings.autoDetectWebtoon
binding.readerSettingsAutoWebToon.setOnCheckedChangeListener { _, isChecked ->
settings.autoDetectWebtoon = isChecked
saveData(reader, settings)
}
- //Default
+
val layoutList = listOf(
binding.readerSettingsPaged,
binding.readerSettingsContinuousPaged,
@@ -185,6 +189,163 @@ class ReaderSettingsActivity : AppCompatActivity() {
saveData(reader, settings)
}
+ //LN settings
+ val layoutListLN = listOf(
+ binding.LNpaged,
+ binding.LNcontinuous
+ )
+
+ binding.LNlayoutText.text = settings.defaultLN.layout.string
+ var selectedLN = layoutListLN[settings.defaultLN.layout.ordinal]
+ selectedLN.alpha = 1f
+
+ layoutListLN.forEachIndexed { index, imageButton ->
+ imageButton.setOnClickListener {
+ selectedLN.alpha = 0.33f
+ selectedLN = imageButton
+ selectedLN.alpha = 1f
+ settings.defaultLN.layout = CurrentNovelReaderSettings.Layouts[index]
+ ?: CurrentNovelReaderSettings.Layouts.PAGED
+ binding.LNlayoutText.text = settings.defaultLN.layout.string
+ saveData(reader, settings)
+ }
+ }
+
+ val dualListLN = listOf(
+ binding.LNdualNo,
+ binding.LNdualAuto,
+ binding.LNdualForce
+ )
+
+ binding.LNdualPageText.text = settings.defaultLN.dualPageMode.toString()
+ var selectedDualLN = dualListLN[settings.defaultLN.dualPageMode.ordinal]
+ selectedDualLN.alpha = 1f
+
+ dualListLN.forEachIndexed { index, imageButton ->
+ imageButton.setOnClickListener {
+ selectedDualLN.alpha = 0.33f
+ selectedDualLN = imageButton
+ selectedDualLN.alpha = 1f
+ settings.defaultLN.dualPageMode = CurrentReaderSettings.DualPageModes[index]
+ ?: CurrentReaderSettings.DualPageModes.Automatic
+ binding.LNdualPageText.text = settings.defaultLN.dualPageMode.toString()
+ saveData(reader, settings)
+ }
+ }
+
+ binding.LNlineHeight.setText(settings.defaultLN.lineHeight.toString())
+ binding.LNlineHeight.setOnFocusChangeListener { _, hasFocus ->
+ if (!hasFocus) {
+ val value = binding.LNlineHeight.text.toString().toFloatOrNull() ?: 1.4f
+ settings.defaultLN.lineHeight = value
+ binding.LNlineHeight.setText(value.toString())
+ saveData(reader, settings)
+ }
+ }
+
+ binding.LNincrementLineHeight.setOnClickListener {
+ val value = binding.LNlineHeight.text.toString().toFloatOrNull() ?: 1.4f
+ settings.defaultLN.lineHeight = value + 0.1f
+ binding.LNlineHeight.setText(settings.defaultLN.lineHeight.toString())
+ saveData(reader, settings)
+ }
+
+ binding.LNdecrementLineHeight.setOnClickListener {
+ val value = binding.LNlineHeight.text.toString().toFloatOrNull() ?: 1.4f
+ settings.defaultLN.lineHeight = value - 0.1f
+ binding.LNlineHeight.setText(settings.defaultLN.lineHeight.toString())
+ saveData(reader, settings)
+ }
+
+ binding.LNmargin.setText(settings.defaultLN.margin.toString())
+ binding.LNmargin.setOnFocusChangeListener { _, hasFocus ->
+ if (!hasFocus) {
+ val value = binding.LNmargin.text.toString().toFloatOrNull() ?: 0.06f
+ settings.defaultLN.margin = value
+ binding.LNmargin.setText(value.toString())
+ saveData(reader, settings)
+ }
+ }
+
+ binding.LNincrementMargin.setOnClickListener {
+ val value = binding.LNmargin.text.toString().toFloatOrNull() ?: 0.06f
+ settings.defaultLN.margin = value + 0.01f
+ binding.LNmargin.setText(settings.defaultLN.margin.toString())
+ saveData(reader, settings)
+ }
+
+ binding.LNdecrementMargin.setOnClickListener {
+ val value = binding.LNmargin.text.toString().toFloatOrNull() ?: 0.06f
+ settings.defaultLN.margin = value - 0.01f
+ binding.LNmargin.setText(settings.defaultLN.margin.toString())
+ saveData(reader, settings)
+ }
+
+ binding.LNmaxInlineSize.setText(settings.defaultLN.maxInlineSize.toString())
+ binding.LNmaxInlineSize.setOnFocusChangeListener { _, hasFocus ->
+ if (!hasFocus) {
+ val value = binding.LNmaxInlineSize.text.toString().toIntOrNull() ?: 720
+ settings.defaultLN.maxInlineSize = value
+ binding.LNmaxInlineSize.setText(value.toString())
+ saveData(reader, settings)
+ }
+ }
+
+ binding.LNincrementMaxInlineSize.setOnClickListener {
+ val value = binding.LNmaxInlineSize.text.toString().toIntOrNull() ?: 720
+ settings.defaultLN.maxInlineSize = value + 10
+ binding.LNmaxInlineSize.setText(settings.defaultLN.maxInlineSize.toString())
+ saveData(reader, settings)
+ }
+
+ binding.LNdecrementMaxInlineSize.setOnClickListener {
+ val value = binding.LNmaxInlineSize.text.toString().toIntOrNull() ?: 720
+ settings.defaultLN.maxInlineSize = value - 10
+ binding.LNmaxInlineSize.setText(settings.defaultLN.maxInlineSize.toString())
+ saveData(reader, settings)
+ }
+
+ binding.LNmaxBlockSize.setText(settings.defaultLN.maxBlockSize.toString())
+ binding.LNmaxBlockSize.setOnFocusChangeListener { _, hasFocus ->
+ if (!hasFocus) {
+ val value = binding.LNmaxBlockSize.text.toString().toIntOrNull() ?: 720
+ settings.defaultLN.maxBlockSize = value
+ binding.LNmaxBlockSize.setText(value.toString())
+ saveData(reader, settings)
+ }
+ }
+ binding.LNincrementMaxBlockSize.setOnClickListener {
+ val value = binding.LNmaxBlockSize.text.toString().toIntOrNull() ?: 720
+ settings.defaultLN.maxInlineSize = value + 10
+ binding.LNmaxBlockSize.setText(settings.defaultLN.maxInlineSize.toString())
+ saveData(reader, settings)
+ }
+
+ binding.LNdecrementMaxBlockSize.setOnClickListener {
+ val value = binding.LNmaxBlockSize.text.toString().toIntOrNull() ?: 720
+ settings.defaultLN.maxBlockSize = value - 10
+ binding.LNmaxBlockSize.setText(settings.defaultLN.maxBlockSize.toString())
+ saveData(reader, settings)
+ }
+
+ binding.LNuseDarkTheme.isChecked = settings.defaultLN.useDarkTheme
+ binding.LNuseDarkTheme.setOnCheckedChangeListener { _, isChecked ->
+ settings.defaultLN.useDarkTheme = isChecked
+ saveData(reader, settings)
+ }
+
+ binding.LNkeepScreenOn.isChecked = settings.defaultLN.keepScreenOn
+ binding.LNkeepScreenOn.setOnCheckedChangeListener { _, isChecked ->
+ settings.defaultLN.keepScreenOn = isChecked
+ saveData(reader, settings)
+ }
+
+ binding.LNvolumeButton.isChecked = settings.defaultLN.volumeButtons
+ binding.LNvolumeButton.setOnCheckedChangeListener { _, isChecked ->
+ settings.defaultLN.volumeButtons = isChecked
+ saveData(reader, settings)
+ }
+
//Update Progress
binding.readerSettingsAskUpdateProgress.isChecked = settings.askIndividual
binding.readerSettingsAskUpdateProgress.setOnCheckedChangeListener { _, isChecked ->
diff --git a/app/src/main/res/layout/activity_reader_settings.xml b/app/src/main/res/layout/activity_reader_settings.xml
index 0600341a..49e999f9 100644
--- a/app/src/main/res/layout/activity_reader_settings.xml
+++ b/app/src/main/res/layout/activity_reader_settings.xml
@@ -73,6 +73,1098 @@
android:clipToPadding="false"
android:orientation="vertical">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-