From d501c02f8bdc666e5701518da2e0845d7b494e9e Mon Sep 17 00:00:00 2001
From: arkon <eugcheung94@gmail.com>
Date: Sun, 28 Mar 2021 16:25:53 -0400
Subject: [PATCH] Add crop borders shortcut

---
 .../data/preference/PreferencesHelper.kt        |  4 ++++
 .../tachiyomi/ui/reader/ReaderActivity.kt       | 14 ++++++++++++++
 .../ui/reader/setting/ReadingModeType.kt        |  5 +++++
 app/src/main/res/drawable/ic_crop_free_24dp.xml |  9 +++++++++
 app/src/main/res/layout/reader_activity.xml     | 17 +++++++++++++++--
 5 files changed, 47 insertions(+), 2 deletions(-)
 create mode 100644 app/src/main/res/drawable/ic_crop_free_24dp.xml

diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
index 65b02c323..be65ddfdf 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
@@ -36,6 +36,10 @@ operator fun <T> Preference<Set<T>>.minusAssign(item: T) {
     set(get() - item)
 }
 
+fun Preference<Boolean>.toggle() {
+    set(!get())
+}
+
 class PreferencesHelper(val context: Context) {
 
     private val prefs = PreferenceManager.getDefaultSharedPreferences(context)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
index 79d9c3a0e..b1517f91e 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
@@ -34,6 +34,7 @@ import eu.kanade.tachiyomi.data.notification.NotificationReceiver
 import eu.kanade.tachiyomi.data.notification.Notifications
 import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 import eu.kanade.tachiyomi.data.preference.asImmediateFlow
+import eu.kanade.tachiyomi.data.preference.toggle
 import eu.kanade.tachiyomi.databinding.ReaderActivityBinding
 import eu.kanade.tachiyomi.ui.base.activity.BaseRxActivity
 import eu.kanade.tachiyomi.ui.main.MainActivity
@@ -375,6 +376,19 @@ class ReaderActivity : BaseRxActivity<ReaderActivityBinding, ReaderPresenter>()
             }
             .launchIn(lifecycleScope)
 
+        with(binding.actionCropBorders) {
+            setTooltip(R.string.pref_crop_borders)
+
+            setOnClickListener {
+                val isPagerType = ReadingModeType.isPagerType(presenter.getMangaViewer())
+                if (isPagerType) {
+                    preferences.cropBorders().toggle()
+                } else {
+                    preferences.cropBordersWebtoon().toggle()
+                }
+            }
+        }
+
         with(binding.actionSettings) {
             setTooltip(R.string.action_settings)
 
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReadingModeType.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReadingModeType.kt
index 7e54c74c7..4f0c1a3f8 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReadingModeType.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReadingModeType.kt
@@ -21,5 +21,10 @@ enum class ReadingModeType(val prefValue: Int, @StringRes val stringRes: Int, @D
             val current = fromPreference(preference)
             return current.next()
         }
+
+        fun isPagerType(preference: Int): Boolean {
+            val mode = fromPreference(preference)
+            return mode == LEFT_TO_RIGHT || mode == RIGHT_TO_LEFT || mode == VERTICAL
+        }
     }
 }
diff --git a/app/src/main/res/drawable/ic_crop_free_24dp.xml b/app/src/main/res/drawable/ic_crop_free_24dp.xml
new file mode 100644
index 000000000..0b681872e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_crop_free_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path
+        android:fillColor="@android:color/black"
+        android:pathData="M3,5v4h2L5,5h4L9,3L5,3c-1.1,0 -2,0.9 -2,2zM5,15L3,15v4c0,1.1 0.9,2 2,2h4v-2L5,19v-4zM19,19h-4v2h4c1.1,0 2,-0.9 2,-2v-4h-2v4zM19,3h-4v2h4v4h2L21,5c0,-1.1 -0.9,-2 -2,-2z" />
+</vector>
diff --git a/app/src/main/res/layout/reader_activity.xml b/app/src/main/res/layout/reader_activity.xml
index a134f2a71..d2d968a20 100644
--- a/app/src/main/res/layout/reader_activity.xml
+++ b/app/src/main/res/layout/reader_activity.xml
@@ -171,12 +171,25 @@
                     android:background="?selectableItemBackgroundBorderless"
                     android:contentDescription="@string/pref_rotation_type"
                     android:padding="@dimen/material_layout_keylines_screen_edge_margin"
-                    app:layout_constraintEnd_toStartOf="@id/action_settings"
+                    app:layout_constraintEnd_toStartOf="@id/action_crop_borders"
                     app:layout_constraintStart_toEndOf="@+id/action_reader_mode"
                     app:layout_constraintTop_toTopOf="parent"
                     app:srcCompat="@drawable/ic_screen_rotation_24dp"
                     app:tint="?attr/colorOnPrimary" />
 
+                <ImageButton
+                    android:id="@+id/action_crop_borders"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent"
+                    android:background="?selectableItemBackgroundBorderless"
+                    android:contentDescription="@string/pref_crop_borders"
+                    android:padding="@dimen/material_layout_keylines_screen_edge_margin"
+                    app:layout_constraintEnd_toStartOf="@id/action_settings"
+                    app:layout_constraintStart_toEndOf="@+id/action_rotation"
+                    app:layout_constraintTop_toTopOf="parent"
+                    app:srcCompat="@drawable/ic_crop_free_24dp"
+                    app:tint="?attr/colorOnPrimary" />
+
                 <ImageButton
                     android:id="@+id/action_settings"
                     android:layout_width="wrap_content"
@@ -185,7 +198,7 @@
                     android:contentDescription="@string/action_settings"
                     android:padding="@dimen/material_layout_keylines_screen_edge_margin"
                     app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintStart_toEndOf="@id/action_rotation"
+                    app:layout_constraintStart_toEndOf="@id/action_crop_borders"
                     app:layout_constraintTop_toTopOf="parent"
                     app:srcCompat="@drawable/ic_settings_24dp"
                     app:tint="?attr/colorOnPrimary" />