diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/AbstractFlashcardViewer.java b/AnkiDroid/src/main/java/com/ichi2/anki/AbstractFlashcardViewer.java index 095a94d8352d..8b65b2d18600 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/AbstractFlashcardViewer.java +++ b/AnkiDroid/src/main/java/com/ichi2/anki/AbstractFlashcardViewer.java @@ -1920,8 +1920,8 @@ protected SharedPreferences restorePreferences() { mLinkOverridesTouchGesture = preferences.getBoolean("linkOverridesTouchGesture", false); if (mGesturesEnabled) { mGestureProcessor.init(preferences); - mGestureVolumeUp = ViewerCommand.fromString(preferences.getString("gestureVolumeUp", "0")); - mGestureVolumeDown = ViewerCommand.fromString(preferences.getString("gestureVolumeDown", "0")); + mGestureVolumeUp = Gesture.VOLUME_UP.fromPreference(preferences); + mGestureVolumeDown = Gesture.VOLUME_DOWN.fromPreference(preferences); } if (preferences.getBoolean("keepScreenOn", false)) { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/Gesture.kt b/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/Gesture.kt index 26b5d05824bd..040a5f8e7231 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/Gesture.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/Gesture.kt @@ -15,22 +15,38 @@ */ package com.ichi2.anki.cardviewer +import android.content.SharedPreferences import com.ichi2.anki.R -enum class Gesture(@get:JvmName("getResourceId") val mResourceId: Int) { - SWIPE_UP(R.string.gestures_swipe_up), - SWIPE_DOWN(R.string.gestures_swipe_down), - SWIPE_LEFT(R.string.gestures_swipe_left), - SWIPE_RIGHT(R.string.gestures_swipe_right), - LONG_TAP(R.string.gestures_long_tap), - DOUBLE_TAP(R.string.gestures_double_tap), - TAP_TOP_LEFT(R.string.gestures_corner_tap_top_left), - TAP_TOP(R.string.gestures_tap_top), - TAP_TOP_RIGHT(R.string.gestures_corner_tap_top_right), - TAP_LEFT(R.string.gestures_tap_left), - TAP_CENTER(R.string.gestures_corner_tap_middle_center), - TAP_RIGHT(R.string.gestures_tap_right), - TAP_BOTTOM_LEFT(R.string.gestures_corner_tap_bottom_left), - TAP_BOTTOM(R.string.gestures_tap_bottom), - TAP_BOTTOM_RIGHT(R.string.gestures_corner_tap_bottom_right); +// TODO: Code and preference defaults are inconsistent: #8066 +enum class Gesture( + @get:JvmName("getResourceId") val mResourceId: Int, + private val mPreferenceKey: String, + private val mPreferenceDefault: ViewerCommand +) { + SWIPE_UP(R.string.gestures_swipe_up, "gestureSwipeUp", ViewerCommand.COMMAND_EDIT), + SWIPE_DOWN(R.string.gestures_swipe_down, "gestureSwipeDown", ViewerCommand.COMMAND_NOTHING), + SWIPE_LEFT(R.string.gestures_swipe_left, "gestureSwipeLeft", ViewerCommand.COMMAND_UNDO), + SWIPE_RIGHT(R.string.gestures_swipe_right, "gestureSwipeRight", ViewerCommand.COMMAND_EXIT), + LONG_TAP(R.string.gestures_long_tap, "gestureLongclick", ViewerCommand.COMMAND_LOOKUP), + DOUBLE_TAP(R.string.gestures_double_tap, "gestureDoubleTap", ViewerCommand.COMMAND_FLIP_OR_ANSWER_BETTER_THAN_RECOMMENDED), + TAP_TOP_LEFT(R.string.gestures_corner_tap_top_left, "gestureTapTopLeft", ViewerCommand.COMMAND_NOTHING), + TAP_TOP(R.string.gestures_tap_top, "gestureTapTop", ViewerCommand.COMMAND_BURY_CARD), + TAP_TOP_RIGHT(R.string.gestures_corner_tap_top_right, "gestureTapTopRight", ViewerCommand.COMMAND_NOTHING), + TAP_LEFT(R.string.gestures_tap_left, "gestureTapLeft", ViewerCommand.COMMAND_FLIP_OR_ANSWER_EASE2), + TAP_CENTER(R.string.gestures_corner_tap_middle_center, "gestureTapCenter", ViewerCommand.COMMAND_NOTHING), + TAP_RIGHT(R.string.gestures_tap_right, "gestureTapRight", ViewerCommand.COMMAND_FLIP_OR_ANSWER_RECOMMENDED), + TAP_BOTTOM_LEFT(R.string.gestures_corner_tap_bottom_left, "gestureTapBottomLeft", ViewerCommand.COMMAND_NOTHING), + TAP_BOTTOM(R.string.gestures_tap_bottom, "gestureTapBottom", ViewerCommand.COMMAND_FLIP_OR_ANSWER_EASE1), + TAP_BOTTOM_RIGHT(R.string.gestures_corner_tap_bottom_right, "gestureTapBottomRight", ViewerCommand.COMMAND_NOTHING), + VOLUME_UP(R.string.gestures_volume_up, "gestureVolumeUp", ViewerCommand.COMMAND_NOTHING), + VOLUME_DOWN(R.string.gestures_volume_down, "gestureVolumeDown", ViewerCommand.COMMAND_NOTHING); + + fun fromPreference(prefs: SharedPreferences): ViewerCommand { + val value = prefs.getString(mPreferenceKey, null) ?: return mPreferenceDefault + + val valueAsInt = Integer.parseInt(value) + + return ViewerCommand.fromInt(valueAsInt) ?: mPreferenceDefault + } } diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/GestureProcessor.java b/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/GestureProcessor.java index 0b6004602fa8..50c5496ad435 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/GestureProcessor.java +++ b/AnkiDroid/src/main/java/com/ichi2/anki/cardviewer/GestureProcessor.java @@ -51,28 +51,28 @@ public GestureProcessor(ViewerCommand.CommandProcessor processor) { public void init(SharedPreferences preferences) { mEnabled = preferences.getBoolean("gestures", false); - mGestureDoubleTap = ViewerCommand.fromString(preferences.getString("gestureDoubleTap", "7")); - mGestureLongclick = ViewerCommand.fromString(preferences.getString("gestureLongclick", "11")); + mGestureDoubleTap = Gesture.DOUBLE_TAP.fromPreference(preferences); + mGestureLongclick = Gesture.LONG_TAP.fromPreference(preferences); - mGestureSwipeUp = ViewerCommand.fromString(preferences.getString("gestureSwipeUp", "9")); - mGestureSwipeDown = ViewerCommand.fromString(preferences.getString("gestureSwipeDown", "0")); - mGestureSwipeLeft = ViewerCommand.fromString(preferences.getString("gestureSwipeLeft", "8")); - mGestureSwipeRight = ViewerCommand.fromString(preferences.getString("gestureSwipeRight", "17")); + mGestureSwipeUp = Gesture.SWIPE_UP.fromPreference(preferences); + mGestureSwipeDown = Gesture.SWIPE_DOWN.fromPreference(preferences); + mGestureSwipeLeft = Gesture.SWIPE_LEFT.fromPreference(preferences); + mGestureSwipeRight = Gesture.SWIPE_RIGHT.fromPreference(preferences); mGestureMapper.init(preferences); - mGestureTapLeft = ViewerCommand.fromString(preferences.getString("gestureTapLeft", "3")); - mGestureTapRight = ViewerCommand.fromString(preferences.getString("gestureTapRight", "6")); - mGestureTapTop = ViewerCommand.fromString(preferences.getString("gestureTapTop", "12")); - mGestureTapBottom = ViewerCommand.fromString(preferences.getString("gestureTapBottom", "2")); + mGestureTapLeft = Gesture.TAP_LEFT.fromPreference(preferences); + mGestureTapRight = Gesture.TAP_RIGHT.fromPreference(preferences); + mGestureTapTop = Gesture.TAP_TOP.fromPreference(preferences); + mGestureTapBottom = Gesture.TAP_BOTTOM.fromPreference(preferences); boolean useCornerTouch = preferences.getBoolean("gestureCornerTouch", false); if (useCornerTouch) { - mGestureTapTopLeft = ViewerCommand.fromString(preferences.getString("gestureTapTopLeft", "0")); - mGestureTapTopRight = ViewerCommand.fromString(preferences.getString("gestureTapTopRight", "0")); - mGestureTapCenter = ViewerCommand.fromString(preferences.getString("gestureTapCenter", "0")); - mGestureTapBottomLeft = ViewerCommand.fromString(preferences.getString("gestureTapBottomLeft", "0")); - mGestureTapBottomRight = ViewerCommand.fromString(preferences.getString("gestureTapBottomRight", "0")); + mGestureTapTopLeft = Gesture.TAP_TOP_LEFT.fromPreference(preferences); + mGestureTapTopRight = Gesture.TAP_TOP_RIGHT.fromPreference(preferences); + mGestureTapCenter = Gesture.TAP_CENTER.fromPreference(preferences); + mGestureTapBottomLeft = Gesture.TAP_BOTTOM_LEFT.fromPreference(preferences); + mGestureTapBottomRight = Gesture.TAP_BOTTOM_RIGHT.fromPreference(preferences); } }