From 05d5b27917428848c090424f069dca7fefe94a0b Mon Sep 17 00:00:00 2001 From: Jeff Brateman Date: Wed, 16 Dec 2015 16:23:42 -0600 Subject: [PATCH] add numeric-only postal code extra --- .../main/java/org/my/scanExample/MyScanActivity.java | 1 + .../card/development/CardIOSimpleExampleActivity.java | 6 ++++++ card.io/src/androidTest/res/layout/demo.xml | 7 +++++++ .../src/main/java/io/card/payment/CardIOActivity.java | 7 +++++++ .../main/java/io/card/payment/DataEntryActivity.java | 10 +++++++++- 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/SampleApp/src/main/java/org/my/scanExample/MyScanActivity.java b/SampleApp/src/main/java/org/my/scanExample/MyScanActivity.java index 19ff7531..507f87b6 100644 --- a/SampleApp/src/main/java/org/my/scanExample/MyScanActivity.java +++ b/SampleApp/src/main/java/org/my/scanExample/MyScanActivity.java @@ -53,6 +53,7 @@ public void onScanPress(View v) { scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_EXPIRY, true); // default: false scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_CVV, false); // default: false scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_POSTAL_CODE, false); // default: false + scanIntent.putExtra(CardIOActivity.EXTRA_RESTRICT_POSTAL_CODE_TO_NUMERIC_ONLY, false); // default: false scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_CARDHOLDER_NAME, false); // default: false // hides the manual entry button diff --git a/card.io/src/androidTest/java/io/card/development/CardIOSimpleExampleActivity.java b/card.io/src/androidTest/java/io/card/development/CardIOSimpleExampleActivity.java index c099d064..959e1f8a 100644 --- a/card.io/src/androidTest/java/io/card/development/CardIOSimpleExampleActivity.java +++ b/card.io/src/androidTest/java/io/card/development/CardIOSimpleExampleActivity.java @@ -54,6 +54,7 @@ public class CardIOSimpleExampleActivity extends Activity { private CheckBox mScanExpiryToggle; private CheckBox mCvvToggle; private CheckBox mPostalCodeToggle; + private CheckBox mPostalCodeNumericOnlyToggle; private CheckBox mCardholderNameToggle; private CheckBox mSuppressManualToggle; private CheckBox mSuppressConfirmationToggle; @@ -97,6 +98,7 @@ public void onCreate(Bundle b) { mScanExpiryToggle = (CheckBox) findViewById(R.id.scanExpiry); mCvvToggle = (CheckBox) findViewById(R.id.gatherCvv); mPostalCodeToggle = (CheckBox) findViewById(R.id.gatherPostalCode); + mPostalCodeNumericOnlyToggle = (CheckBox) findViewById(R.id.postalCodeNumericOnly); mCardholderNameToggle = (CheckBox) findViewById(R.id.gatherCardholderName); mSuppressManualToggle = (CheckBox) findViewById(R.id.suppressManual); mSuppressConfirmationToggle = (CheckBox) findViewById(R.id.suppressConfirmation); @@ -192,6 +194,8 @@ public void onItemSelected(AdapterView parent, View content, int pos, long id intent.putExtra(CardIOActivity.EXTRA_REQUIRE_CVV, mCvvToggle.isChecked()); intent.putExtra(CardIOActivity.EXTRA_REQUIRE_POSTAL_CODE, mPostalCodeToggle.isChecked()); + intent.putExtra(CardIOActivity.EXTRA_RESTRICT_POSTAL_CODE_TO_NUMERIC_ONLY, + mPostalCodeNumericOnlyToggle.isChecked()); intent.putExtra(CardIOActivity.EXTRA_REQUIRE_CARDHOLDER_NAME, mCardholderNameToggle.isChecked()); @@ -225,6 +229,8 @@ public void onScanPressed(@SuppressWarnings("unused") View pressed) { intent.putExtra(CardIOActivity.EXTRA_SCAN_EXPIRY, mScanExpiryToggle.isChecked()); intent.putExtra(CardIOActivity.EXTRA_REQUIRE_CVV, mCvvToggle.isChecked()); intent.putExtra(CardIOActivity.EXTRA_REQUIRE_POSTAL_CODE, mPostalCodeToggle.isChecked()); + intent.putExtra(CardIOActivity.EXTRA_RESTRICT_POSTAL_CODE_TO_NUMERIC_ONLY, + mPostalCodeNumericOnlyToggle.isChecked()); intent.putExtra(CardIOActivity.EXTRA_REQUIRE_CARDHOLDER_NAME, mCardholderNameToggle.isChecked()); intent.putExtra(CardIOActivity.EXTRA_SUPPRESS_MANUAL_ENTRY, mSuppressManualToggle.isChecked()); diff --git a/card.io/src/androidTest/res/layout/demo.xml b/card.io/src/androidTest/res/layout/demo.xml index 3fb52fda..1960b930 100644 --- a/card.io/src/androidTest/res/layout/demo.xml +++ b/card.io/src/androidTest/res/layout/demo.xml @@ -46,6 +46,13 @@ android:layout_height="wrap_content" android:text="Cardholder Name"/> + + + false. If set, the postal code will only collect numeric + * input. Set this if you know the expected country's + * postal code has only numeric postal codes. + */ + public static final String EXTRA_RESTRICT_POSTAL_CODE_TO_NUMERIC_ONLY = "io.card.payment.restrictPostalCodeToNumericOnly"; + /** * Boolean extra. Optional. Defaults to false. If set, the user will be prompted * for the cardholder name. diff --git a/card.io/src/main/java/io/card/payment/DataEntryActivity.java b/card.io/src/main/java/io/card/payment/DataEntryActivity.java index a782d731..bc99b18d 100644 --- a/card.io/src/main/java/io/card/payment/DataEntryActivity.java +++ b/card.io/src/main/java/io/card/payment/DataEntryActivity.java @@ -314,13 +314,21 @@ protected void onCreate(Bundle savedInstanceState) { postalCodeLayout .addView(zipLabel, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); + boolean postalCodeNumericOnly = + getIntent().getBooleanExtra(CardIOActivity.EXTRA_RESTRICT_POSTAL_CODE_TO_NUMERIC_ONLY, false); + postalCodeEdit = new EditText(this); postalCodeEdit.setId(editTextIdCounter++); postalCodeEdit.setMaxLines(1); postalCodeEdit.setImeOptions(EditorInfo.IME_ACTION_DONE); postalCodeEdit.setTextAppearance(getApplicationContext(), android.R.attr.textAppearanceLarge); - postalCodeEdit.setInputType(InputType.TYPE_CLASS_TEXT); + if (postalCodeNumericOnly) { + // class is phone to be consistent with other numeric fields. Perhaps this could be improved. + postalCodeEdit.setInputType(InputType.TYPE_CLASS_PHONE); + } else { + postalCodeEdit.setInputType(InputType.TYPE_CLASS_TEXT); + } if(! useApplicationTheme ) { postalCodeEdit.setHintTextColor(Appearance.TEXT_COLOR_EDIT_TEXT_HINT); }