diff options
author | Pawit Pornkitprasan <p.pawit@gmail.com> | 2011-10-27 22:22:15 +0700 |
---|---|---|
committer | Pawit Pornkitprasan <p.pawit@gmail.com> | 2011-10-27 22:22:15 +0700 |
commit | 7a108b6a8a98b51638e2edae9d028a6478a68008 (patch) | |
tree | 96c6206dd5405b0bcea0871b7748401ae78fd78f | |
parent | 84eaf6f9151216251c63caa0e7e4427640b2946d (diff) | |
download | android_packages_apps_SamsungServiceMode-7a108b6a8a98b51638e2edae9d028a6478a68008.tar.gz android_packages_apps_SamsungServiceMode-7a108b6a8a98b51638e2edae9d028a6478a68008.tar.bz2 android_packages_apps_SamsungServiceMode-7a108b6a8a98b51638e2edae9d028a6478a68008.zip |
SamsungServiceMode: Add input support and option menu.
Input is used for AUDIO menus.
Change-Id: I70d846ab9bb23573a73c5176170f9943b813a29d
-rw-r--r-- | res/menu/menu.xml | 8 | ||||
-rw-r--r-- | res/values/strings.xml | 4 | ||||
-rw-r--r-- | src/com/cyanogenmod/samsungservicemode/SamsungServiceModeActivity.java | 64 |
3 files changed, 74 insertions, 2 deletions
diff --git a/res/menu/menu.xml b/res/menu/menu.xml new file mode 100644 index 0000000..62760a5 --- /dev/null +++ b/res/menu/menu.xml @@ -0,0 +1,8 @@ +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:id="@+id/menu_input" + android:icon="@android:drawable/ic_menu_edit" + android:title="@string/input" /> + <item android:id="@+id/menu_quit" + android:icon="@android:drawable/ic_menu_close_clear_cancel" + android:title="@string/quit" /> +</menu>
\ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index d033037..2875b84 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <string name="hello">Hello World, SamsungServiceModeActivity!</string> <string name="app_name">Service Mode</string> - <string name="send">Send</string> + <string name="input">Input</string> + <string name="quit">Quit</string> </resources> diff --git a/src/com/cyanogenmod/samsungservicemode/SamsungServiceModeActivity.java b/src/com/cyanogenmod/samsungservicemode/SamsungServiceModeActivity.java index 59c0139..a882796 100644 --- a/src/com/cyanogenmod/samsungservicemode/SamsungServiceModeActivity.java +++ b/src/com/cyanogenmod/samsungservicemode/SamsungServiceModeActivity.java @@ -1,15 +1,22 @@ package com.cyanogenmod.samsungservicemode; import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.DialogInterface; import android.os.AsyncResult; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; +import android.widget.EditText; import android.widget.ListView; import com.android.internal.telephony.Phone; @@ -25,10 +32,13 @@ public class SamsungServiceModeActivity extends Activity implements AdapterView. private static final int ID_SERVICE_MODE_REQUEST = 1008; private static final int ID_SERVICE_MODE_END = 1009; + private static final int DIALOG_INPUT = 0; + private static final int CHARS_PER_LINE = 34; private static final int LINES = 11; private ListView mListView; + private EditText mInputText; private String[] mDisplay = new String[LINES]; private int mCurrentSvcMode; @@ -139,6 +149,7 @@ public class SamsungServiceModeActivity extends Activity implements AdapterView. super.onCreate(savedInstanceState); setContentView(R.layout.main); + mInputText = new EditText(this); mListView = (ListView)findViewById(R.id.displayList); mListView.setOnItemClickListener(this); @@ -213,6 +224,45 @@ public class SamsungServiceModeActivity extends Activity implements AdapterView. } @Override + protected Dialog onCreateDialog(int id) { + switch (id) { + case DIALOG_INPUT: + return new AlertDialog.Builder(this) + .setTitle(R.string.input) + .setView(mInputText) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + sendString(mInputText.getText().toString()); + mInputText.setText(""); + } + }) + .setNegativeButton(android.R.string.cancel, null) + .create(); + } + return null; + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.menu_input: + showDialog(DIALOG_INPUT); + break; + case R.id.menu_quit: + endServiceMode(); + break; + } + return true; + } + + @Override public void onBackPressed() { if (!mAllowBack && mDisplay[0].equals(mFirstPageHead)) { Log.v(TAG, "Back disabled. Ending service mode."); @@ -225,6 +275,13 @@ public class SamsungServiceModeActivity extends Activity implements AdapterView. @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String str = mDisplay[position]; + + if (str.equals("Input ?")) { + // This one asks for input, show the input dialog for convenience + showDialog(DIALOG_INPUT); + return; + } + int start = str.indexOf('['); int end = str.indexOf(']'); @@ -269,6 +326,13 @@ public class SamsungServiceModeActivity extends Activity implements AdapterView. sendRequest(data, ID_SERVICE_MODE_REQUEST); } + private void sendString(String str) { + for (char chr : str.toCharArray()) { + sendChar(chr); + } + sendChar((char) 83); // End + } + private void sendRequest(byte[] data, int id) { Message msg = mHandler.obtainMessage(id); mPhone.invokeOemRilRequestRaw(data, msg); |