diff options
| author | Markus Wick <degasus@users.noreply.github.com> | 2018-08-13 13:42:48 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-08-13 13:42:48 +0200 |
| commit | 9322c0edfa41d6a12ef04a9e447b388d5a748119 (patch) | |
| tree | d5fa76a8da487ad66fa1233ab956a42c37644a1c /Source/Android/app/src/main/java/org | |
| parent | 15ef7d6fb8288d8447d25db4186615b720e72169 (diff) | |
| parent | 51fa5d2fd884655536a40e32572f00717a400ed1 (diff) | |
Merge pull request #7320 from zackhow/leanback-button-clear
Android: Clear controller binding by long press on TV
Diffstat (limited to 'Source/Android/app/src/main/java/org')
| -rw-r--r-- | Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/MotionAlertDialog.java | 28 |
1 files changed, 27 insertions, 1 deletions
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); @@ -59,6 +60,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) { // Handle this key if we care about it, otherwise pass it down the framework @@ -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(); + } } |
