Explorar o código

阅读进度条开关 #125

HapeLee hai 1 ano
pai
achega
135afb4a1f

+ 1 - 0
app/src/main/java/io/legato/kazusa/constant/PreferKey.kt

@@ -53,6 +53,7 @@ object PreferKey {
     const val threadCount = "threadCount"
     const val threadCount = "threadCount"
     const val webPort = "webPort"
     const val webPort = "webPort"
     const val keepLight = "keep_light"
     const val keepLight = "keep_light"
+    const val readSliderMode = "read_slider_mode"
     const val webService = "webService"
     const val webService = "webService"
     const val webDavUrl = "web_dav_url"
     const val webDavUrl = "web_dav_url"
     const val webDavAccount = "web_dav_account"
     const val webDavAccount = "web_dav_account"

+ 7 - 1
app/src/main/java/io/legato/kazusa/help/config/AppConfig.kt

@@ -820,10 +820,16 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
             appCtx.putPrefString(PreferKey.labelVisibilityMode, value)
             appCtx.putPrefString(PreferKey.labelVisibilityMode, value)
         }
         }
 
 
-    var menuAlpha
+    var menuAlpha: Int
         get() = appCtx.getPrefInt(PreferKey.menuAlpha, 100)
         get() = appCtx.getPrefInt(PreferKey.menuAlpha, 100)
         set(value) {
         set(value) {
             appCtx.putPrefInt(PreferKey.menuAlpha, value)
             appCtx.putPrefInt(PreferKey.menuAlpha, value)
         }
         }
+
+    var readSliderMode
+        get() = appCtx.getPrefString(PreferKey.readSliderMode, "0")
+        set(value) {
+            appCtx.putPrefString(PreferKey.readSliderMode, value)
+        }
 }
 }
 
 

+ 52 - 11
app/src/main/java/io/legato/kazusa/ui/book/read/ReadMenu.kt

@@ -5,6 +5,7 @@ import android.content.Context
 import android.content.res.Configuration
 import android.content.res.Configuration
 import android.graphics.drawable.GradientDrawable
 import android.graphics.drawable.GradientDrawable
 import android.util.AttributeSet
 import android.util.AttributeSet
+import android.view.Gravity
 import android.view.LayoutInflater
 import android.view.LayoutInflater
 import android.view.WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE
 import android.view.WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE
 import android.view.animation.AlphaAnimation
 import android.view.animation.AlphaAnimation
@@ -36,6 +37,7 @@ import io.legato.kazusa.utils.activity
 import io.legato.kazusa.utils.applyNavigationBarPadding
 import io.legato.kazusa.utils.applyNavigationBarPadding
 import io.legato.kazusa.utils.dpToPx
 import io.legato.kazusa.utils.dpToPx
 import io.legato.kazusa.utils.getPrefBoolean
 import io.legato.kazusa.utils.getPrefBoolean
+import io.legato.kazusa.utils.getPrefString
 import io.legato.kazusa.utils.gone
 import io.legato.kazusa.utils.gone
 import io.legato.kazusa.utils.invisible
 import io.legato.kazusa.utils.invisible
 import io.legato.kazusa.utils.loadAnimation
 import io.legato.kazusa.utils.loadAnimation
@@ -172,7 +174,7 @@ class ReadMenu @JvmOverloads constructor(
 
 
     private fun initView() = binding.run {
     private fun initView() = binding.run {
         initAnimation()
         initAnimation()
-
+        updateSliderVisibility()
         binding.bottomView.post {
         binding.bottomView.post {
             val allButtons = getUserButtons()
             val allButtons = getUserButtons()
             renderButtons(binding.bottomView, allButtons)
             renderButtons(binding.bottomView, allButtons)
@@ -435,23 +437,62 @@ class ReadMenu @JvmOverloads constructor(
             }
             }
         })
         })
 
 
-
-        //替换
-        //fabReplaceRule.setOnClickListener { callBack.openReplaceRule() }
-
-        //夜间模式
-//        fabNightTheme.setOnClickListener {
-//            AppConfig.isNightTheme = !AppConfig.isNightTheme
-//            ThemeConfig.applyDayNight(context)
-//        }
-
         //上一章
         //上一章
         tvPre.setOnClickListener { ReadBook.moveToPrevChapter(upContent = true, toLast = false) }
         tvPre.setOnClickListener { ReadBook.moveToPrevChapter(upContent = true, toLast = false) }
 
 
         //下一章
         //下一章
         tvNext.setOnClickListener { ReadBook.moveToNextChapter(true) }
         tvNext.setOnClickListener { ReadBook.moveToNextChapter(true) }
+    }
+
+    private fun updateSliderVisibility() {
+        when (AppConfig.readSliderMode) {
+            "0" -> {
+                binding.llSlider.gravity = Gravity.CENTER
+                binding.llSlider.isVisible = true
+                binding.cdSlider.isVisible = true
+                binding.tvPre.isVisible = true
+                binding.tvNext.isVisible = true
+            }
 
 
+            "1" -> {
+                binding.llSlider.gravity = Gravity.CENTER
+                binding.llSlider.isVisible = false
+                binding.cdSlider.isVisible = false
+                binding.tvPre.isVisible = false
+                binding.tvNext.isVisible = false
+            }
 
 
+            "2" -> {
+                binding.llSlider.gravity = Gravity.START
+                binding.llSlider.isVisible = true
+                binding.cdSlider.isVisible = false
+                binding.tvPre.isVisible = true
+                binding.tvNext.isVisible = true
+            }
+
+            "3" -> {
+                binding.llSlider.gravity = Gravity.END
+                binding.llSlider.isVisible = true
+                binding.cdSlider.isVisible = false
+                binding.tvPre.isVisible = true
+                binding.tvNext.isVisible = true
+            }
+
+            "4" -> {
+                binding.llSlider.gravity = Gravity.CENTER
+                binding.llSlider.isVisible = true
+                binding.cdSlider.isVisible = true
+                binding.tvPre.isVisible = false
+                binding.tvNext.isVisible = false
+            }
+
+            else -> {
+                binding.llSlider.isVisible = true
+                binding.cdSlider.isVisible = true
+                binding.tvPre.isVisible = true
+                binding.tvNext.isVisible = true
+            }
+        }
     }
     }
 
 
     private val buttonMap = mutableMapOf<String, MaterialButton>()
     private val buttonMap = mutableMapOf<String, MaterialButton>()

+ 1 - 0
app/src/main/java/io/legato/kazusa/ui/book/read/config/MoreConfigDialog.kt

@@ -89,6 +89,7 @@ class MoreConfigDialog : BaseBottomSheetDialogFragment(R.layout.dialog_more_conf
                 }
                 }
 
 
                 PreferKey.keepLight -> postEvent(key, true)
                 PreferKey.keepLight -> postEvent(key, true)
+                PreferKey.readSliderMode -> postEvent(EventBus.UPDATE_READ_ACTION_BAR, true)
                 PreferKey.textSelectAble -> postEvent(key, getPrefBoolean(key))
                 PreferKey.textSelectAble -> postEvent(key, getPrefBoolean(key))
                 PreferKey.screenOrientation -> {
                 PreferKey.screenOrientation -> {
                     (activity as? ReadBookActivity)?.setOrientation()
                     (activity as? ReadBookActivity)?.setOrientation()

+ 1 - 0
app/src/main/res/layout-land/view_read_menu.xml

@@ -153,6 +153,7 @@
                 tools:ignore="TouchTargetSizeCheck" />
                 tools:ignore="TouchTargetSizeCheck" />
 
 
             <com.google.android.material.card.MaterialCardView
             <com.google.android.material.card.MaterialCardView
+                android:id="@+id/cd_slider"
                 android:layout_width="0dp"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:layout_weight="1"

+ 10 - 13
app/src/main/res/layout/view_read_menu.xml

@@ -120,7 +120,6 @@
         android:orientation="vertical"
         android:orientation="vertical"
         app:layout_constraintBottom_toBottomOf="parent">
         app:layout_constraintBottom_toBottomOf="parent">
 
 
-        <!--章节设置-->
         <LinearLayout
         <LinearLayout
             android:id="@+id/ll_slider"
             android:id="@+id/ll_slider"
             android:layout_width="match_parent"
             android:layout_width="match_parent"
@@ -144,6 +143,7 @@
                 tools:ignore="TouchTargetSizeCheck" />
                 tools:ignore="TouchTargetSizeCheck" />
 
 
             <com.google.android.material.card.MaterialCardView
             <com.google.android.material.card.MaterialCardView
+                android:id="@+id/cd_slider"
                 android:layout_width="0dp"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:layout_weight="1"
@@ -157,8 +157,6 @@
                     android:layout_gravity="center_vertical"/>
                     android:layout_gravity="center_vertical"/>
             </com.google.android.material.card.MaterialCardView>
             </com.google.android.material.card.MaterialCardView>
 
 
-
-
             <com.google.android.material.button.MaterialButton
             <com.google.android.material.button.MaterialButton
                 android:id="@+id/tv_next"
                 android:id="@+id/tv_next"
                 style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
                 style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
@@ -172,16 +170,15 @@
                 tools:ignore="TouchTargetSizeCheck"/>
                 tools:ignore="TouchTargetSizeCheck"/>
         </LinearLayout>
         </LinearLayout>
 
 
-            <com.google.android.material.button.MaterialButtonGroup
-                android:id="@+id/bottom_view"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                app:overflowMode="menu"
-                android:paddingVertical="8dp"
-                android:paddingHorizontal="16dp"
-                android:background="?attr/colorSurfaceContainer"
-                android:orientation="horizontal"/>
-
+        <com.google.android.material.button.MaterialButtonGroup
+            android:id="@+id/bottom_view"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:overflowMode="menu"
+            android:paddingVertical="8dp"
+            android:paddingHorizontal="16dp"
+            android:background="?attr/colorSurfaceContainer"
+            android:orientation="horizontal"/>
 
 
     </LinearLayout>
     </LinearLayout>
 
 

+ 8 - 0
app/src/main/res/values-zh/arrays.xml

@@ -160,4 +160,12 @@
         <item>不显示</item>
         <item>不显示</item>
     </string-array>
     </string-array>
 
 
+    <string-array name="read_slider_mode">
+        <item>常驻</item>
+        <item>不显示</item>
+        <item>按钮置左</item>
+        <item>按钮置右</item>
+        <item>仅显示滑动条</item>
+    </string-array>
+
 </resources>
 </resources>

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

@@ -1303,4 +1303,5 @@
     <string name="day_night_switch">深浅色模式开关</string>
     <string name="day_night_switch">深浅色模式开关</string>
     <string name="manga_long_click">长按保存图片</string>
     <string name="manga_long_click">长按保存图片</string>
     <string name="read_type_long">长按设置为全局默认模式</string>
     <string name="read_type_long">长按设置为全局默认模式</string>
+    <string name="read_slider_mode">滑动条显示样式</string>
 </resources>
 </resources>

+ 8 - 0
app/src/main/res/values/array_values.xml

@@ -89,4 +89,12 @@
         <item>unlabeled</item>
         <item>unlabeled</item>
     </string-array>
     </string-array>
 
 
+    <string-array name="read_slider_mode_value">
+        <item>0</item>
+        <item>1</item>
+        <item>2</item>
+        <item>3</item>
+        <item>4</item>
+    </string-array>
+
 </resources>
 </resources>

+ 8 - 0
app/src/main/res/values/arrays.xml

@@ -85,6 +85,14 @@
 		<item>Always</item>
 		<item>Always</item>
 	</string-array>
 	</string-array>
 
 
+	<string-array name="read_slider_mode">
+		<item>Always</item>
+		<item>Disable</item>
+		<item>Left button</item>
+		<item>Right button</item>
+		<item>Only slider</item>
+	</string-array>
+
 	<string-array name="screen_direction_title">
 	<string-array name="screen_direction_title">
 		<item>@string/screen_unspecified</item>
 		<item>@string/screen_unspecified</item>
 		<item>@string/screen_portrait</item>
 		<item>@string/screen_portrait</item>

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

@@ -1304,4 +1304,5 @@
     <string name="day_night_switch">深浅色模式开关</string>
     <string name="day_night_switch">深浅色模式开关</string>
     <string name="manga_long_click">长按保存图片</string>
     <string name="manga_long_click">长按保存图片</string>
     <string name="read_type_long">长按设置为全局默认模式</string>
     <string name="read_type_long">长按设置为全局默认模式</string>
+    <string name="read_slider_mode">滑动条显示样式</string>
 </resources>
 </resources>

+ 9 - 0
app/src/main/res/xml/pref_config_read.xml

@@ -28,6 +28,15 @@
         app:iconSpaceReserved="false"
         app:iconSpaceReserved="false"
         app:isBottomBackground="true" />
         app:isBottomBackground="true" />
 
 
+    <io.legato.kazusa.lib.prefs.NameListPreference
+        android:defaultValue="0"
+        android:entries="@array/read_slider_mode"
+        android:entryValues="@array/read_slider_mode_value"
+        android:key="read_slider_mode"
+        android:title="@string/read_slider_mode"
+        app:iconSpaceReserved="false"
+        app:isBottomBackground="true" />
+
     <io.legato.kazusa.lib.prefs.Preference
     <io.legato.kazusa.lib.prefs.Preference
         android:key="menuAlpha"
         android:key="menuAlpha"
         android:summary="@string/menu_alpha_sum"
         android:summary="@string/menu_alpha_sum"