summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaurus Cuelenaere <mcuelenaere@gmail.com>2010-11-06 01:18:32 +0000
committerMaurus Cuelenaere <mcuelenaere@gmail.com>2010-11-06 01:18:32 +0000
commitc31a2f3bbb5e30c49e39b6ebc71bafa77ff3f655 (patch)
treea331187f2ca8727b918c7409ebe5310ed7060070
parent988bdc1cc4d4cbe88da848de80d79aeac195464e (diff)
downloadrockbox-c31a2f3bbb5e30c49e39b6ebc71bafa77ff3f655.tar.gz
rockbox-c31a2f3bbb5e30c49e39b6ebc71bafa77ff3f655.zip
Android: greatly simplify Android YesNo and KeyboardInput widgets
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28513 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--android/AndroidManifest.xml8
-rw-r--r--android/src/org/rockbox/HostCallback.java8
-rw-r--r--android/src/org/rockbox/KeyboardActivity.java49
-rw-r--r--android/src/org/rockbox/RockboxActivity.java17
-rw-r--r--android/src/org/rockbox/RockboxKeyboardInput.java58
-rw-r--r--android/src/org/rockbox/RockboxYesno.java37
-rw-r--r--android/src/org/rockbox/YesnoActivity.java36
7 files changed, 69 insertions, 144 deletions
diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml
index a05f382584..e0fc106ca7 100644
--- a/android/AndroidManifest.xml
+++ b/android/AndroidManifest.xml
@@ -19,14 +19,6 @@
19 </intent-filter> 19 </intent-filter>
20 </activity> 20 </activity>
21 21
22 <activity android:name="KeyboardActivity"
23 android:theme="@android:style/Theme.Dialog">
24 </activity>
25
26 <activity android:name="YesnoActivity"
27 android:theme="@android:style/Theme.Dialog">
28 </activity>
29
30 <service android:name=".RockboxService"/> 22 <service android:name=".RockboxService"/>
31 23
32 <receiver android:name=".Helper.MediaButtonReceiver$MediaReceiver" 24 <receiver android:name=".Helper.MediaButtonReceiver$MediaReceiver"
diff --git a/android/src/org/rockbox/HostCallback.java b/android/src/org/rockbox/HostCallback.java
deleted file mode 100644
index 8584fedd6a..0000000000
--- a/android/src/org/rockbox/HostCallback.java
+++ /dev/null
@@ -1,8 +0,0 @@
1package org.rockbox;
2
3import android.content.Intent;
4
5public interface HostCallback
6{
7 public void onComplete(int resultCode, Intent data);
8}
diff --git a/android/src/org/rockbox/KeyboardActivity.java b/android/src/org/rockbox/KeyboardActivity.java
deleted file mode 100644
index 7436031f9d..0000000000
--- a/android/src/org/rockbox/KeyboardActivity.java
+++ /dev/null
@@ -1,49 +0,0 @@
1package org.rockbox;
2
3import android.app.Activity;
4import android.app.AlertDialog;
5import android.app.Dialog;
6import android.content.DialogInterface;
7import android.os.Bundle;
8import android.text.Editable;
9import android.view.LayoutInflater;
10import android.view.View;
11import android.widget.EditText;
12
13public class KeyboardActivity extends Activity
14{
15 public void onCreate(Bundle savedInstanceState)
16 {
17 super.onCreate(savedInstanceState);
18 LayoutInflater inflater=LayoutInflater.from(this);
19 View addView=inflater.inflate(R.layout.keyboardinput, null);
20 EditText input = (EditText) addView.findViewById(R.id.KbdInput);
21 input.setText(getIntent().getStringExtra("value"));
22 new AlertDialog.Builder(this)
23 .setTitle(R.string.KbdInputTitle)
24 .setView(addView)
25 .setIcon(R.drawable.icon)
26 .setCancelable(false)
27 .setPositiveButton(R.string.OK, new DialogInterface.OnClickListener()
28 {
29 public void onClick(DialogInterface dialog, int whichButton) {
30 EditText input = (EditText)((Dialog)dialog)
31 .findViewById(R.id.KbdInput);
32 Editable s = input.getText();
33 getIntent().putExtra("value", s.toString());
34 setResult(RESULT_OK, getIntent());
35 finish();
36 }
37 })
38
39 .setNegativeButton(R.string.Cancel, new DialogInterface.OnClickListener()
40 {
41 public void onClick(DialogInterface dialog, int whichButton)
42 {
43 setResult(RESULT_CANCELED, getIntent());
44 finish();
45 }
46 })
47 .show();
48 }
49}
diff --git a/android/src/org/rockbox/RockboxActivity.java b/android/src/org/rockbox/RockboxActivity.java
index c9681e306c..f5c658871f 100644
--- a/android/src/org/rockbox/RockboxActivity.java
+++ b/android/src/org/rockbox/RockboxActivity.java
@@ -145,23 +145,6 @@ public class RockboxActivity extends Activity
145 super.onDestroy(); 145 super.onDestroy();
146 rbservice.set_activity(null); 146 rbservice.set_activity(null);
147 } 147 }
148
149 private HostCallback hostcallback = null;
150 public void waitForActivity(Intent i, HostCallback callback)
151 {
152 if (hostcallback != null)
153 {
154 LOG("Something has gone wrong");
155 }
156 hostcallback = callback;
157 startActivityForResult(i, 0);
158 }
159
160 public void onActivityResult(int requestCode, int resultCode, Intent data)
161 {
162 hostcallback.onComplete(resultCode, data);
163 hostcallback = null;
164 }
165 148
166 private void LOG(CharSequence text) 149 private void LOG(CharSequence text)
167 { 150 {
diff --git a/android/src/org/rockbox/RockboxKeyboardInput.java b/android/src/org/rockbox/RockboxKeyboardInput.java
index 210cbbd258..b7dd812f35 100644
--- a/android/src/org/rockbox/RockboxKeyboardInput.java
+++ b/android/src/org/rockbox/RockboxKeyboardInput.java
@@ -23,33 +23,57 @@ package org.rockbox;
23 23
24 24
25import android.app.Activity; 25import android.app.Activity;
26import android.content.Intent; 26import android.app.AlertDialog;
27import android.app.Dialog;
28import android.content.DialogInterface;
29import android.text.Editable;
30import android.view.LayoutInflater;
31import android.view.View;
32import android.widget.EditText;
27 33
28public class RockboxKeyboardInput 34public class RockboxKeyboardInput
29{ 35{
30 private String result; 36 public void kbd_input(final String text)
31
32 public RockboxKeyboardInput()
33 { 37 {
34 result = null; 38 final Activity c = RockboxService.get_instance().get_activity();
35 }
36 39
37 public void kbd_input(String text) 40 c.runOnUiThread(new Runnable() {
38 { 41 @Override
39 RockboxActivity a = (RockboxActivity) RockboxService.get_instance().get_activity(); 42 public void run()
40 Intent kbd = new Intent(a, KeyboardActivity.class);
41 kbd.putExtra("value", text);
42 a.waitForActivity(kbd, new HostCallback()
43 {
44 public void onComplete(int resultCode, Intent data)
45 { 43 {
46 put_result(resultCode == Activity.RESULT_OK, 44 LayoutInflater inflater = LayoutInflater.from(c);
47 data.getStringExtra("value")); 45 View addView = inflater.inflate(R.layout.keyboardinput, null);
46 EditText input = (EditText) addView.findViewById(R.id.KbdInput);
47 input.setText(text);
48 new AlertDialog.Builder(c)
49 .setTitle(R.string.KbdInputTitle)
50 .setView(addView)
51 .setIcon(R.drawable.icon)
52 .setCancelable(false)
53 .setPositiveButton(R.string.OK, new DialogInterface.OnClickListener()
54 {
55 public void onClick(DialogInterface dialog, int whichButton) {
56 EditText input = (EditText)((Dialog)dialog)
57 .findViewById(R.id.KbdInput);
58 Editable s = input.getText();
59 put_result(true, s.toString());
60 }
61 })
62 .setNegativeButton(R.string.Cancel, new DialogInterface.OnClickListener()
63 {
64 public void onClick(DialogInterface dialog, int whichButton)
65 {
66 put_result(false, "");
67 }
68 })
69 .show();
48 } 70 }
49 }); 71 });
50 } 72 }
51 73
52 private native void put_result(boolean accepted, String new_string); 74 private native void put_result(boolean accepted, String new_string);
75
76 @SuppressWarnings("unused")
53 public boolean is_usable() 77 public boolean is_usable()
54 { 78 {
55 return RockboxService.get_instance().get_activity() != null; 79 return RockboxService.get_instance().get_activity() != null;
diff --git a/android/src/org/rockbox/RockboxYesno.java b/android/src/org/rockbox/RockboxYesno.java
index aa5e83d749..9481d69d01 100644
--- a/android/src/org/rockbox/RockboxYesno.java
+++ b/android/src/org/rockbox/RockboxYesno.java
@@ -22,21 +22,40 @@
22package org.rockbox; 22package org.rockbox;
23 23
24import android.app.Activity; 24import android.app.Activity;
25import android.content.Intent; 25import android.app.AlertDialog;
26import android.content.DialogInterface;
26 27
27public class RockboxYesno 28public class RockboxYesno
28{ 29{
29 @SuppressWarnings("unused") 30 @SuppressWarnings("unused")
30 private void yesno_display(String text) 31 private void yesno_display(final String text)
31 { 32 {
32 RockboxActivity a = (RockboxActivity) RockboxService.get_instance().get_activity(); 33 final Activity c = RockboxService.get_instance().get_activity();
33 Intent kbd = new Intent(a, YesnoActivity.class); 34
34 kbd.putExtra("value", text); 35 c.runOnUiThread(new Runnable() {
35 a.waitForActivity(kbd, new HostCallback() 36 @Override
36 { 37 public void run()
37 public void onComplete(int resultCode, Intent data)
38 { 38 {
39 put_result(resultCode == Activity.RESULT_OK); 39 new AlertDialog.Builder(c)
40 .setTitle(R.string.KbdInputTitle)
41 .setIcon(R.drawable.icon)
42 .setCancelable(false)
43 .setMessage(text)
44 .setPositiveButton(R.string.Yes, new DialogInterface.OnClickListener()
45 {
46 public void onClick(DialogInterface dialog, int whichButton)
47 {
48 put_result(true);
49 }
50 })
51 .setNegativeButton(R.string.No, new DialogInterface.OnClickListener()
52 {
53 public void onClick(DialogInterface dialog, int whichButton)
54 {
55 put_result(false);
56 }
57 })
58 .show();
40 } 59 }
41 }); 60 });
42 } 61 }
diff --git a/android/src/org/rockbox/YesnoActivity.java b/android/src/org/rockbox/YesnoActivity.java
deleted file mode 100644
index 35e064fef5..0000000000
--- a/android/src/org/rockbox/YesnoActivity.java
+++ /dev/null
@@ -1,36 +0,0 @@
1package org.rockbox;
2
3import android.app.Activity;
4import android.app.AlertDialog;
5import android.content.DialogInterface;
6import android.os.Bundle;
7
8public class YesnoActivity extends Activity
9{
10 public void onCreate(Bundle savedInstanceState)
11 {
12 super.onCreate(savedInstanceState);
13 new AlertDialog.Builder(this)
14 .setTitle(R.string.KbdInputTitle)
15 .setIcon(R.drawable.icon)
16 .setCancelable(false)
17 .setMessage(getIntent().getStringExtra("value"))
18 .setPositiveButton(R.string.Yes, new DialogInterface.OnClickListener()
19 {
20 public void onClick(DialogInterface dialog, int whichButton) {
21 setResult(RESULT_OK, getIntent());
22 finish();
23 }
24 })
25
26 .setNegativeButton(R.string.No, new DialogInterface.OnClickListener()
27 {
28 public void onClick(DialogInterface dialog, int whichButton)
29 {
30 setResult(RESULT_CANCELED, getIntent());
31 finish();
32 }
33 })
34 .show();
35 }
36}