diff options
-rw-r--r-- | android/src/org/rockbox/RockboxYesno.java | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/android/src/org/rockbox/RockboxYesno.java b/android/src/org/rockbox/RockboxYesno.java index de8f88ab5f..c7ab729cfc 100644 --- a/android/src/org/rockbox/RockboxYesno.java +++ b/android/src/org/rockbox/RockboxYesno.java | |||
@@ -27,6 +27,29 @@ import android.content.DialogInterface; | |||
27 | 27 | ||
28 | public class RockboxYesno | 28 | public class RockboxYesno |
29 | { | 29 | { |
30 | private class Listener implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener | ||
31 | { | ||
32 | /* default to "No" if onClick isn't called at all */ | ||
33 | private boolean result = false; | ||
34 | |||
35 | /* called when the user presses the Yes or the No button */ | ||
36 | @Override | ||
37 | public void onClick(DialogInterface dialog, int which) | ||
38 | { | ||
39 | result = (which == DialogInterface.BUTTON_POSITIVE); | ||
40 | } | ||
41 | |||
42 | /* onDismiss is (hopefully) also called when the dialog is closed | ||
43 | * for any reason other than clicking yes or no. This should | ||
44 | * avoid the native code waiting for the result indefinitely in | ||
45 | * case the dialog just disappears */ | ||
46 | @Override | ||
47 | public void onDismiss(DialogInterface dialog) | ||
48 | { | ||
49 | put_result(result); | ||
50 | } | ||
51 | } | ||
52 | |||
30 | private void yesno_display(final String text, final String yes, final String no) | 53 | private void yesno_display(final String text, final String yes, final String no) |
31 | { | 54 | { |
32 | final Activity c = RockboxService.getInstance().getActivity(); | 55 | final Activity c = RockboxService.getInstance().getActivity(); |
@@ -34,26 +57,15 @@ public class RockboxYesno | |||
34 | c.runOnUiThread(new Runnable() { | 57 | c.runOnUiThread(new Runnable() { |
35 | public void run() | 58 | public void run() |
36 | { | 59 | { |
60 | Listener l = new Listener(); | ||
37 | new AlertDialog.Builder(c) | 61 | new AlertDialog.Builder(c) |
38 | .setTitle(R.string.KbdInputTitle) | 62 | .setTitle(R.string.KbdInputTitle) |
39 | .setIcon(R.drawable.icon) | 63 | .setIcon(R.drawable.icon) |
40 | .setCancelable(false) | ||
41 | .setMessage(text) | 64 | .setMessage(text) |
42 | .setPositiveButton(yes, new DialogInterface.OnClickListener() | 65 | .setPositiveButton(yes, l) |
43 | { | 66 | .setNegativeButton(no, l) |
44 | public void onClick(DialogInterface dialog, int whichButton) | 67 | .show() |
45 | { | 68 | .setOnDismissListener(l); |
46 | put_result(true); | ||
47 | } | ||
48 | }) | ||
49 | .setNegativeButton(no, new DialogInterface.OnClickListener() | ||
50 | { | ||
51 | public void onClick(DialogInterface dialog, int whichButton) | ||
52 | { | ||
53 | put_result(false); | ||
54 | } | ||
55 | }) | ||
56 | .show(); | ||
57 | } | 69 | } |
58 | }); | 70 | }); |
59 | } | 71 | } |