From 17947823235c366b03d32e0ffcd7390fde21f4c3 Mon Sep 17 00:00:00 2001
From: len <len@kanade.eu>
Date: Sun, 11 Jun 2017 11:36:12 +0200
Subject: [PATCH] Add option to invert volume keys. Closes #834

---
 app/build.gradle                                            | 4 ----
 .../eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt   | 2 ++
 .../kanade/tachiyomi/data/preference/PreferencesHelper.kt   | 2 ++
 .../java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt    | 6 ++++--
 .../kanade/tachiyomi/ui/setting/SettingsReaderController.kt | 5 +++++
 app/src/main/res/values/strings.xml                         | 1 +
 build.gradle                                                | 2 +-
 7 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index 055a57277..cce2cb636 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -92,10 +92,6 @@ android {
         checkReleaseBuilds false
     }
 
-    sourceSets {
-        main.java.srcDirs += 'src/main/kotlin'
-    }
-
 }
 
 dependencies {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt
index fb4f6f45b..15a092b39 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt
@@ -41,6 +41,8 @@ object PreferenceKeys {
 
     const val readWithVolumeKeys = "reader_volume_keys"
 
+    const val readWithVolumeKeysInverted = "reader_volume_keys_inverted"
+
     const val portraitColumns = "pref_library_columns_portrait_key"
 
     const val landscapeColumns = "pref_library_columns_landscape_key"
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 4559c6ab9..13057e295 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
@@ -69,6 +69,8 @@ class PreferencesHelper(val context: Context) {
 
     fun readWithVolumeKeys() = rxPrefs.getBoolean(Keys.readWithVolumeKeys, false)
 
+    fun readWithVolumeKeysInverted() = rxPrefs.getBoolean(Keys.readWithVolumeKeysInverted, false)
+
     fun portraitColumns() = rxPrefs.getInteger(Keys.portraitColumns, 0)
 
     fun landscapeColumns() = rxPrefs.getInteger(Keys.landscapeColumns, 0)
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 07964dfd6..70ee64520 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
@@ -84,6 +84,8 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
 
     private val volumeKeysEnabled by lazy { preferences.readWithVolumeKeys().getOrDefault() }
 
+    private val volumeKeysInverted by lazy { preferences.readWithVolumeKeysInverted().getOrDefault() }
+
     val preferences by injectLazy<PreferencesHelper>()
 
     private var systemUi: SystemUiHelper? = null
@@ -194,7 +196,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
                 KeyEvent.KEYCODE_VOLUME_DOWN -> {
                     if (volumeKeysEnabled) {
                         if (event.action == KeyEvent.ACTION_UP) {
-                            viewer?.moveDown()
+                            if (!volumeKeysInverted) viewer?.moveDown() else viewer?.moveUp()
                         }
                         return true
                     }
@@ -202,7 +204,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
                 KeyEvent.KEYCODE_VOLUME_UP -> {
                     if (volumeKeysEnabled) {
                         if (event.action == KeyEvent.ACTION_UP) {
-                            viewer?.moveUp()
+                            if (!volumeKeysInverted) viewer?.moveUp() else viewer?.moveDown()
                         }
                         return true
                     }
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt
index 229a709a6..03ec76a74 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt
@@ -100,6 +100,11 @@ class SettingsReaderController : SettingsController() {
                 titleRes = R.string.pref_read_with_volume_keys
                 defaultValue = false
             }
+            switchPreference {
+                key = Keys.readWithVolumeKeysInverted
+                titleRes = R.string.pref_read_with_volume_keys_inverted
+                defaultValue = false
+            }.apply { dependency = Keys.readWithVolumeKeys }
         }
     }
 
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 718d9a345..8fed988aa 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -150,6 +150,7 @@
     <string name="pref_keep_screen_on">Keep screen on</string>
     <string name="pref_reader_navigation">Navigation</string>
     <string name="pref_read_with_volume_keys">Volume keys</string>
+    <string name="pref_read_with_volume_keys_inverted">Invert volume keys</string>
     <string name="pref_read_with_tapping">Tapping</string>
     <string name="pref_reader_theme">Background color</string>
     <string name="white_background">White</string>
diff --git a/build.gradle b/build.gradle
index 66b50e6c4..495a1cf78 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,7 +6,7 @@ buildscript {
         jcenter()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.1'
+        classpath 'com.android.tools.build:gradle:2.3.3'
         classpath 'com.github.ben-manes:gradle-versions-plugin:0.15.0'
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files