From 606d3b95e941f48c8963d3996920472145da1200 Mon Sep 17 00:00:00 2001 From: PliablePixels Date: Tue, 15 Sep 2015 09:32:35 -0400 Subject: Added pindialog plugin --- plugins/android.json | 7 ++ plugins/fetch.json | 9 ++ plugins/hu.dpal.phonegap.plugins.PinDialog/LICENSE | 20 ++++ .../hu.dpal.phonegap.plugins.PinDialog/README.md | 43 +++++++ .../hu.dpal.phonegap.plugins.PinDialog/plugin.xml | 44 ++++++++ .../src/android/PinDialog.java | 124 +++++++++++++++++++++ .../src/ios/CDVPinDialog.h | 19 ++++ .../src/ios/CDVPinDialog.m | 61 ++++++++++ .../hu.dpal.phonegap.plugins.PinDialog/www/pin.js | 13 +++ plugins/ios.json | 7 ++ 10 files changed, 347 insertions(+) create mode 100644 plugins/hu.dpal.phonegap.plugins.PinDialog/LICENSE create mode 100644 plugins/hu.dpal.phonegap.plugins.PinDialog/README.md create mode 100644 plugins/hu.dpal.phonegap.plugins.PinDialog/plugin.xml create mode 100644 plugins/hu.dpal.phonegap.plugins.PinDialog/src/android/PinDialog.java create mode 100644 plugins/hu.dpal.phonegap.plugins.PinDialog/src/ios/CDVPinDialog.h create mode 100644 plugins/hu.dpal.phonegap.plugins.PinDialog/src/ios/CDVPinDialog.m create mode 100644 plugins/hu.dpal.phonegap.plugins.PinDialog/www/pin.js (limited to 'plugins') diff --git a/plugins/android.json b/plugins/android.json index 14796dcc..c51ce331 100644 --- a/plugins/android.json +++ b/plugins/android.json @@ -40,6 +40,10 @@ "xml": "", "count": 1 }, + { + "xml": "", + "count": 1 + }, { "xml": "", "count": 1 @@ -100,6 +104,9 @@ "de.appplant.cordova.plugin.email-composer": { "PACKAGE_NAME": "com.pliablepixels.zmninja" }, + "hu.dpal.phonegap.plugins.PinDialog": { + "PACKAGE_NAME": "com.pliablepixels.zmninja" + }, "nl.x-services.plugins.insomnia": { "PACKAGE_NAME": "com.pliablepixels.zmninja" }, diff --git a/plugins/fetch.json b/plugins/fetch.json index c3ce7777..748a4c08 100644 --- a/plugins/fetch.json +++ b/plugins/fetch.json @@ -120,5 +120,14 @@ }, "is_top_level": true, "variables": {} + }, + "hu.dpal.phonegap.plugins.PinDialog": { + "source": { + "type": "git", + "url": "https://github.com/Paldom/PinDialog.git", + "subdir": "." + }, + "is_top_level": true, + "variables": {} } } \ No newline at end of file diff --git a/plugins/hu.dpal.phonegap.plugins.PinDialog/LICENSE b/plugins/hu.dpal.phonegap.plugins.PinDialog/LICENSE new file mode 100644 index 00000000..3b489884 --- /dev/null +++ b/plugins/hu.dpal.phonegap.plugins.PinDialog/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2014 Paldom + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/plugins/hu.dpal.phonegap.plugins.PinDialog/README.md b/plugins/hu.dpal.phonegap.plugins.PinDialog/README.md new file mode 100644 index 00000000..0f5ba3b3 --- /dev/null +++ b/plugins/hu.dpal.phonegap.plugins.PinDialog/README.md @@ -0,0 +1,43 @@ +PinDialog +========= + +PhoneGap numeric password dialog plugin for Android and iOS. Forked from https://github.com/apache/cordova-plugin-dialogs.git + +## Installation + +Latest stable release: ```phonegap local plugin add hu.dpal.phonegap.plugins.pindialog``` +or ```cordova plugin add hu.dpal.phonegap.plugins.pindialog``` + +Current state from git: ```phonegap local plugin add https://github.com/Paldom/PinDialog.git``` +or ```cordova plugin add https://github.com/Paldom/PinDialog.git``` + +## Installation - PhoneGap Build + +Add following to config.xml: `````` +or `````` + +## Supported Platforms + +- Android +- iOS + +## Usage: + + // Show pin dialog + window.plugins.pinDialog.prompt("message", callback, "title", ["OK","Cancel"]); + +Callback: + + function callback(results) + { + if(results.buttonIndex == 1) + { + // OK clicked, show input value + alert(results.input1); + } + if(results.buttonIndex == 2) + { + // Cancel clicked + alert("Cancel"); + } + }; diff --git a/plugins/hu.dpal.phonegap.plugins.PinDialog/plugin.xml b/plugins/hu.dpal.phonegap.plugins.PinDialog/plugin.xml new file mode 100644 index 00000000..95c37524 --- /dev/null +++ b/plugins/hu.dpal.phonegap.plugins.PinDialog/plugin.xml @@ -0,0 +1,44 @@ + + + + + PinDialog + + + PhoneGap numeric password dialog plugin for Android and iOS. Forked from https://github.com/apache/cordova-plugin-dialogs.git + + MIT + phonegap,android,ios,numeric,password,pin,dialog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 diff --git a/plugins/hu.dpal.phonegap.plugins.PinDialog/src/ios/CDVPinDialog.h b/plugins/hu.dpal.phonegap.plugins.PinDialog/src/ios/CDVPinDialog.h new file mode 100644 index 00000000..415195d5 --- /dev/null +++ b/plugins/hu.dpal.phonegap.plugins.PinDialog/src/ios/CDVPinDialog.h @@ -0,0 +1,19 @@ +// +// CDVPinDialog.h +// HelloWorld +// +// +// + +#import +#import +#import + + +@interface CDVPinDialog : CDVPlugin {} +@property (nonatomic, copy) NSString* callbackId; + +- (void)prompt:(CDVInvokedUrlCommand*)command; + +@end + diff --git a/plugins/hu.dpal.phonegap.plugins.PinDialog/src/ios/CDVPinDialog.m b/plugins/hu.dpal.phonegap.plugins.PinDialog/src/ios/CDVPinDialog.m new file mode 100644 index 00000000..bd33a205 --- /dev/null +++ b/plugins/hu.dpal.phonegap.plugins.PinDialog/src/ios/CDVPinDialog.m @@ -0,0 +1,61 @@ +// +// CDVPinDialog.m +// HelloWorld +// +// +// + +#import "CDVPinDialog.h" + +@implementation CDVPinDialog + +- (void)prompt:(CDVInvokedUrlCommand*)command +{ + self.callbackId = command.callbackId; + NSString* message = [command argumentAtIndex:0]; + NSString* title = [command argumentAtIndex:1]; + NSArray* buttons = [command argumentAtIndex:2]; + + UIAlertView* alertView = [[UIAlertView alloc] + initWithTitle:title + message:message + delegate:self + cancelButtonTitle:nil + otherButtonTitles:nil]; + + //alertView.callbackId = callbackId; + + int count = [buttons count]; + + for (int n = 0; n < count; n++) { + [alertView addButtonWithTitle:[buttons objectAtIndex:n]]; + } + + alertView.alertViewStyle = UIAlertViewStyleSecureTextInput; + UITextField* textField = [alertView textFieldAtIndex:0]; + + [alertView show]; + + [textField resignFirstResponder]; + [textField setKeyboardType:UIKeyboardTypeNumberPad]; + [textField becomeFirstResponder]; + +} + + +- (void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex +{ + CDVPluginResult* result; + + NSString* value0 = [[alertView textFieldAtIndex:0] text]; + NSDictionary* info = @{ + @"buttonIndex":@(buttonIndex + 1), + @"input1":(value0 ? value0 : [NSNull null]) + }; + result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:info]; + + [self.commandDelegate sendPluginResult:result callbackId:self.callbackId]; +} + + +@end diff --git a/plugins/hu.dpal.phonegap.plugins.PinDialog/www/pin.js b/plugins/hu.dpal.phonegap.plugins.PinDialog/www/pin.js new file mode 100644 index 00000000..0633748b --- /dev/null +++ b/plugins/hu.dpal.phonegap.plugins.PinDialog/www/pin.js @@ -0,0 +1,13 @@ +var exec = require('cordova/exec'); + + +module.exports = { + + prompt: function(message, resultCallback, title, buttonLabels) { + var _message = (message || "Message"); + var _title = (title || "Title"); + var _buttonLabels = (buttonLabels || ["OK","Cancel"]); + cordova.exec(resultCallback, null, "PinDialog", "prompt", [_message, _title, _buttonLabels]); + } + +}; \ No newline at end of file diff --git a/plugins/ios.json b/plugins/ios.json index b390a6f9..56f3a34e 100644 --- a/plugins/ios.json +++ b/plugins/ios.json @@ -28,6 +28,10 @@ "xml": "", "count": 1 }, + { + "xml": "", + "count": 1 + }, { "xml": "", "count": 1 @@ -118,6 +122,9 @@ "de.appplant.cordova.plugin.email-composer": { "PACKAGE_NAME": "com.pliablepixels.zmninja" }, + "hu.dpal.phonegap.plugins.PinDialog": { + "PACKAGE_NAME": "com.pliablepixels.zmninja" + }, "nl.x-services.plugins.insomnia": { "PACKAGE_NAME": "com.pliablepixels.zmninja" }, -- cgit v1.2.3