From 51fa5d2fd884655536a40e32572f00717a400ed1 Mon Sep 17 00:00:00 2001 From: zackhow Date: Sat, 11 Aug 2018 21:47:49 -0400 Subject: [PATCH] Android: Clear controller binding by long press on TV The TV interface can't 'click' the clear button, this gives TV a way to clear --- .../dolphinemu/dialogs/MotionAlertDialog.java | 28 ++++++++++++++++++- .../src/main/res/values-notouch/strings.xml | 4 +++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 Source/Android/app/src/main/res/values-notouch/strings.xml diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/MotionAlertDialog.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/MotionAlertDialog.java index cd97b77197..8f86db31d3 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/MotionAlertDialog.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/MotionAlertDialog.java @@ -11,6 +11,7 @@ import android.view.MotionEvent; import org.dolphinemu.dolphinemu.features.settings.model.view.InputBindingSetting; import org.dolphinemu.dolphinemu.utils.ControllerMappingHelper; import org.dolphinemu.dolphinemu.utils.Log; +import org.dolphinemu.dolphinemu.utils.TvUtil; import java.util.ArrayList; import java.util.List; @@ -45,7 +46,7 @@ public final class MotionAlertDialog extends AlertDialog Log.debug("[MotionAlertDialog] Received key event: " + event.getAction()); switch (event.getAction()) { - case KeyEvent.ACTION_DOWN: + case KeyEvent.ACTION_UP: if (!ControllerMappingHelper.shouldKeyBeIgnored(event.getDevice(), keyCode)) { saveKeyInput(event); @@ -58,6 +59,21 @@ public final class MotionAlertDialog extends AlertDialog } } + @Override + public boolean onKeyLongPress(int keyCode, KeyEvent event) + { + // Option to clear by long back is only needed on the TV interface + if (TvUtil.isLeanback(getContext())) + { + if (keyCode == KeyEvent.KEYCODE_BACK) + { + clearBinding(); + return true; + } + } + return super.onKeyLongPress(keyCode, event); + } + @Override public boolean dispatchKeyEvent(KeyEvent event) { @@ -197,4 +213,14 @@ public final class MotionAlertDialog extends AlertDialog dismiss(); } + + private void clearBinding() + { + setting.setValue(""); + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getContext()); + SharedPreferences.Editor editor = preferences.edit(); + editor.remove(setting.getKey()); + editor.apply(); + dismiss(); + } } diff --git a/Source/Android/app/src/main/res/values-notouch/strings.xml b/Source/Android/app/src/main/res/values-notouch/strings.xml new file mode 100644 index 0000000000..426f610e0c --- /dev/null +++ b/Source/Android/app/src/main/res/values-notouch/strings.xml @@ -0,0 +1,4 @@ + + + Hold back to clear +