diff options
Diffstat (limited to 'plugins/hu.dpal.phonegap.plugins.PinDialog/src/android')
| -rw-r--r-- | plugins/hu.dpal.phonegap.plugins.PinDialog/src/android/PinDialog.java | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/plugins/hu.dpal.phonegap.plugins.PinDialog/src/android/PinDialog.java b/plugins/hu.dpal.phonegap.plugins.PinDialog/src/android/PinDialog.java new file mode 100644 index 00000000..6be1d6e3 --- /dev/null +++ b/plugins/hu.dpal.phonegap.plugins.PinDialog/src/android/PinDialog.java @@ -0,0 +1,124 @@ +package hu.dpal.phonegap.plugins; + +import org.apache.cordova.CallbackContext; +import org.apache.cordova.CordovaInterface; +import org.apache.cordova.CordovaPlugin; +import org.apache.cordova.PluginResult; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import android.app.AlertDialog; +import android.app.ProgressDialog; +import android.content.DialogInterface; +import android.text.InputType; +import android.text.method.PasswordTransformationMethod; +import android.widget.EditText; + + +public class PinDialog extends CordovaPlugin { + + public ProgressDialog spinnerDialog = null; + + public PinDialog() { + } + + public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException { + if (action.equals("prompt")) { + + final String message = args.getString(0); + final String title = args.getString(1); + final JSONArray buttonLabels = args.getJSONArray(2); + + final CordovaInterface cordova = this.cordova; + final EditText promptInput = new EditText(cordova.getActivity()); + promptInput.setInputType(InputType.TYPE_CLASS_NUMBER); + promptInput.setTransformationMethod(PasswordTransformationMethod.getInstance()); + + Runnable runnable = new Runnable() { + public void run() { + AlertDialog.Builder dlg = new AlertDialog.Builder(cordova.getActivity()); + dlg.setMessage(message); + dlg.setTitle(title); + dlg.setCancelable(true); + + dlg.setView(promptInput); + + final JSONObject result = new JSONObject(); + + // First button + if (buttonLabels.length() > 0) { + try { + dlg.setNegativeButton(buttonLabels.getString(0), + new AlertDialog.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + try { + result.put("buttonIndex",1); + result.put("input1", promptInput.getText().toString().trim().length()==0 ? "" : promptInput.getText()); + } catch (JSONException e) { e.printStackTrace(); } + callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result)); + } + }); + } catch (JSONException e) { } + } + + // Second button + if (buttonLabels.length() > 1) { + try { + dlg.setNeutralButton(buttonLabels.getString(1), + new AlertDialog.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + try { + result.put("buttonIndex",2); + result.put("input1", promptInput.getText().toString().trim().length()==0 ? "" : promptInput.getText()); + } catch (JSONException e) { e.printStackTrace(); } + callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result)); + } + }); + } catch (JSONException e) { } + } + + // Third button + if (buttonLabels.length() > 2) { + try { + dlg.setPositiveButton(buttonLabels.getString(2), + new AlertDialog.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + try { + result.put("buttonIndex",3); + result.put("input1", promptInput.getText().toString().trim().length()==0 ? "" : promptInput.getText()); + } catch (JSONException e) { e.printStackTrace(); } + callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result)); + } + }); + } catch (JSONException e) { } + } + + dlg.setOnCancelListener(new AlertDialog.OnCancelListener() { + public void onCancel(DialogInterface dialog){ + dialog.dismiss(); + try { + result.put("buttonIndex",0); + result.put("input1", promptInput.getText().toString().trim().length()==0 ? "" : promptInput.getText()); + } catch (JSONException e) { e.printStackTrace(); } + callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result)); + } + }); + + dlg.create(); + dlg.show(); + + }; + }; + this.cordova.getActivity().runOnUiThread(runnable); + + + } + + return true; + } + +}
\ No newline at end of file |
