Pārlūkot izejas kodu

[新增] 新增漫画音量键翻页反转设置

HapeLee 10 mēneši atpakaļ
vecāks
revīzija
4ff5ab461e

+ 1 - 1
app/src/main/java/io/legado/app/constant/PreferKey.kt

@@ -191,7 +191,7 @@ object PreferKey {
     const val mangaScrollMode = "mangaScrollMode"
     const val mangaScrollMode = "mangaScrollMode"
     const val webtoonSidePaddingDp = "webtoonSidePaddingDp"
     const val webtoonSidePaddingDp = "webtoonSidePaddingDp"
     const val mangaVolumeKeyPage = "mangaVolumeKeyPage"
     const val mangaVolumeKeyPage = "mangaVolumeKeyPage"
-
+    const val reverseVolumeKeyPage = "reverseVolumeKeyPage"
     const val mangaClickActionTL = "mangaClickActionTopLeft"
     const val mangaClickActionTL = "mangaClickActionTopLeft"
     const val mangaClickActionTC = "mangaClickActionTopCenter"
     const val mangaClickActionTC = "mangaClickActionTopCenter"
     const val mangaClickActionTR = "mangaClickActionTopRight"
     const val mangaClickActionTR = "mangaClickActionTopRight"

+ 6 - 0
app/src/main/java/io/legado/app/help/config/AppConfig.kt

@@ -869,6 +869,12 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
             appCtx.putPrefBoolean(PreferKey.mangaVolumeKeyPage, value)
             appCtx.putPrefBoolean(PreferKey.mangaVolumeKeyPage, value)
         }
         }
 
 
+    var reverseVolumeKeyPage: Boolean
+        get() = appCtx.getPrefBoolean(PreferKey.reverseVolumeKeyPage, false)
+        set(value) {
+            appCtx.putPrefBoolean(PreferKey.reverseVolumeKeyPage, value)
+        }
+
     var tabletInterface
     var tabletInterface
         get() = appCtx.getPrefString(PreferKey.tabletInterface, "auto")
         get() = appCtx.getPrefString(PreferKey.tabletInterface, "auto")
         set(value) {
         set(value) {

+ 22 - 9
app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt

@@ -11,7 +11,6 @@ import android.view.MenuItem
 import android.view.WindowManager
 import android.view.WindowManager
 import android.view.animation.LinearInterpolator
 import android.view.animation.LinearInterpolator
 import androidx.activity.addCallback
 import androidx.activity.addCallback
-import androidx.activity.result.contract.ActivityResultContracts
 import androidx.activity.viewModels
 import androidx.activity.viewModels
 import androidx.appcompat.app.AlertDialog
 import androidx.appcompat.app.AlertDialog
 import androidx.core.view.doOnLayout
 import androidx.core.view.doOnLayout
@@ -31,7 +30,6 @@ import io.legado.app.BuildConfig
 import io.legado.app.R
 import io.legado.app.R
 import io.legado.app.base.VMBaseActivity
 import io.legado.app.base.VMBaseActivity
 import io.legado.app.constant.AppLog
 import io.legado.app.constant.AppLog
-import io.legado.app.constant.BookType
 import io.legado.app.constant.EventBus
 import io.legado.app.constant.EventBus
 import io.legado.app.data.appDb
 import io.legado.app.data.appDb
 import io.legado.app.data.entities.Book
 import io.legado.app.data.entities.Book
@@ -45,7 +43,6 @@ import io.legado.app.help.AppFreezeMonitor.handler
 import io.legado.app.help.book.BookHelp
 import io.legado.app.help.book.BookHelp
 import io.legado.app.help.book.isImage
 import io.legado.app.help.book.isImage
 import io.legado.app.help.book.isLocal
 import io.legado.app.help.book.isLocal
-import io.legado.app.help.book.removeType
 import io.legado.app.help.config.AppConfig
 import io.legado.app.help.config.AppConfig
 import io.legado.app.help.coroutine.Coroutine
 import io.legado.app.help.coroutine.Coroutine
 import io.legado.app.help.source.getSourceType
 import io.legado.app.help.source.getSourceType
@@ -815,6 +812,10 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
         AppConfig.MangaVolumeKeyPage = enable
         AppConfig.MangaVolumeKeyPage = enable
     }
     }
 
 
+    override fun onReverseVolumeKeyPageChanged(enable: Boolean) {
+        AppConfig.reverseVolumeKeyPage = enable
+    }
+
     override fun onHideMangaTitleChanged(hide: Boolean) {
     override fun onHideMangaTitleChanged(hide: Boolean) {
         AppConfig.hideMangaTitle = hide
         AppConfig.hideMangaTitle = hide
         ReadManga.loadContent()
         ReadManga.loadContent()
@@ -1069,17 +1070,29 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
     }
     }
 
 
     override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
     override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
-        if (AppConfig.MangaVolumeKeyPage) {
-            when (keyCode) {
-                KeyEvent.KEYCODE_VOLUME_UP -> {
+        if (!AppConfig.MangaVolumeKeyPage) {
+            return super.onKeyDown(keyCode, event)
+        }
+
+        val isReverse = AppConfig.reverseVolumeKeyPage
+
+        when (keyCode) {
+            KeyEvent.KEYCODE_VOLUME_UP -> {
+                if (isReverse) {
+                    scrollToNext()
+                } else {
                     scrollToPrev()
                     scrollToPrev()
-                    return true
                 }
                 }
+                return true
+            }
 
 
-                KeyEvent.KEYCODE_VOLUME_DOWN -> {
+            KeyEvent.KEYCODE_VOLUME_DOWN -> {
+                if (isReverse) {
+                    scrollToPrev()
+                } else {
                     scrollToNext()
                     scrollToNext()
-                    return true
                 }
                 }
+                return true
             }
             }
         }
         }
 
 

+ 8 - 3
app/src/main/java/io/legado/app/ui/book/manga/config/MangaFooterSettingDialog.kt

@@ -4,7 +4,6 @@ import android.content.DialogInterface
 import android.os.Bundle
 import android.os.Bundle
 import android.view.Gravity
 import android.view.Gravity
 import android.view.View
 import android.view.View
-import androidx.core.graphics.toColorInt
 import androidx.core.view.isVisible
 import androidx.core.view.isVisible
 import androidx.transition.TransitionManager
 import androidx.transition.TransitionManager
 import com.google.android.material.chip.Chip
 import com.google.android.material.chip.Chip
@@ -14,9 +13,7 @@ import io.legado.app.base.BaseBottomSheetDialogFragment
 import io.legado.app.constant.EventBus
 import io.legado.app.constant.EventBus
 import io.legado.app.databinding.DialogMangaFooterSettingBinding
 import io.legado.app.databinding.DialogMangaFooterSettingBinding
 import io.legado.app.help.config.AppConfig
 import io.legado.app.help.config.AppConfig
-import io.legado.app.help.config.ReadBookConfig
 import io.legado.app.ui.book.manga.entities.MangaFooterConfig
 import io.legado.app.ui.book.manga.entities.MangaFooterConfig
-import io.legado.app.ui.book.read.config.TipConfigDialog.Companion.B_COLOR
 import io.legado.app.ui.widget.ReaderInfoBarView
 import io.legado.app.ui.widget.ReaderInfoBarView
 import io.legado.app.utils.GSON
 import io.legado.app.utils.GSON
 import io.legado.app.utils.fromJsonObject
 import io.legado.app.utils.fromJsonObject
@@ -134,6 +131,13 @@ class MangaFooterSettingDialog :
             }
             }
         }
         }
 
 
+        binding.reverseVolumeKeyPage.apply {
+            isChecked = AppConfig.reverseVolumeKeyPage
+            setOnCheckedChangeListener { _, isChecked ->
+                callback?.onReverseVolumeKeyPageChanged(isChecked)
+            }
+        }
+
         binding.checkboxMangaLongClick.apply {
         binding.checkboxMangaLongClick.apply {
             isChecked = AppConfig.mangaLongClick
             isChecked = AppConfig.mangaLongClick
             setOnCheckedChangeListener { _, isChecked ->
             setOnCheckedChangeListener { _, isChecked ->
@@ -303,6 +307,7 @@ class MangaFooterSettingDialog :
         fun onMangaScaleDisabledChanged(disabled: Boolean)
         fun onMangaScaleDisabledChanged(disabled: Boolean)
         fun onHideMangaTitleChanged(hide: Boolean)
         fun onHideMangaTitleChanged(hide: Boolean)
         fun onVolumeKeyPageChanged(enable: Boolean)
         fun onVolumeKeyPageChanged(enable: Boolean)
+        fun onReverseVolumeKeyPageChanged(enable: Boolean)
         fun onMangaLongClickChanged(checked: Boolean)
         fun onMangaLongClickChanged(checked: Boolean)
     }
     }
 
 

+ 6 - 0
app/src/main/res/layout/dialog_manga_footer_setting.xml

@@ -268,6 +268,12 @@
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/volume_key_page" />
                 android:text="@string/volume_key_page" />
 
 
+            <com.google.android.material.checkbox.MaterialCheckBox
+                android:id="@+id/reverseVolumeKeyPage"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/reverse_volume_key_page" />
+
             <com.google.android.material.checkbox.MaterialCheckBox
             <com.google.android.material.checkbox.MaterialCheckBox
                 android:id="@+id/checkboxMangaLongClick"
                 android:id="@+id/checkboxMangaLongClick"
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"

+ 1 - 0
app/src/main/res/values-zh-rCN/strings.xml

@@ -1366,4 +1366,5 @@
     <string name="auto_check_new_backup_t">自动检查新备份</string>
     <string name="auto_check_new_backup_t">自动检查新备份</string>
     <string name="text_accent_color">强调</string>
     <string name="text_accent_color">强调</string>
     <string name="read_color">颜色样式</string>
     <string name="read_color">颜色样式</string>
+    <string name="reverse_volume_key_page">反转音量键翻页方向</string>
 </resources>
 </resources>

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -1371,4 +1371,5 @@
     <string name="select_operation">选择操作</string>
     <string name="select_operation">选择操作</string>
     <string name="text_accent_color">强调</string>
     <string name="text_accent_color">强调</string>
     <string name="read_color">颜色样式</string>
     <string name="read_color">颜色样式</string>
+    <string name="reverse_volume_key_page">反转音量键翻页方向</string>
 </resources>
 </resources>