From 02c370a04af473bb2d966deccc096bd31d349bbe Mon Sep 17 00:00:00 2001
From: str4d <str4d@mail.i2p>
Date: Wed, 28 Aug 2013 02:48:05 +0000
Subject: [PATCH] Added input validation support to SingleTextFieldPage

---
 .../fragment_wizard_page_single_text_field.xml   |  4 ++++
 .../wizard/model/SingleTextFieldPage.java        | 16 +++++++++++++++-
 .../wizard/ui/SingleTextFieldFragment.java       |  7 +++++++
 3 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/res/layout/fragment_wizard_page_single_text_field.xml b/res/layout/fragment_wizard_page_single_text_field.xml
index 6f6e8fcbe..9a76c502b 100644
--- a/res/layout/fragment_wizard_page_single_text_field.xml
+++ b/res/layout/fragment_wizard_page_single_text_field.xml
@@ -37,6 +37,10 @@
                 android:inputType="text"
                 android:layout_marginBottom="16dp" />
 
+            <TextView android:id="@+id/wizard_text_field_feedback"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
+
             <TextView style="@style/WizardFormLabel"
                 android:id="@+id/wizard_text_field_desc" />
 
diff --git a/src/net/i2p/android/wizard/model/SingleTextFieldPage.java b/src/net/i2p/android/wizard/model/SingleTextFieldPage.java
index c86bba6da..30e75958a 100644
--- a/src/net/i2p/android/wizard/model/SingleTextFieldPage.java
+++ b/src/net/i2p/android/wizard/model/SingleTextFieldPage.java
@@ -47,7 +47,7 @@ public class SingleTextFieldPage extends Page {
 
     @Override
     public boolean isCompleted() {
-        return !TextUtils.isEmpty(mData.getString(SIMPLE_DATA_KEY));
+        return (!TextUtils.isEmpty(mData.getString(SIMPLE_DATA_KEY))) && isValid();
     }
 
     public SingleTextFieldPage setDefault(String def) {
@@ -67,4 +67,18 @@ public class SingleTextFieldPage extends Page {
     public String getDesc() {
         return mDesc;
     }
+
+    // Override these in subclasses to add content verification.
+
+    public boolean isValid() {
+        return true;
+    }
+
+    public boolean showFeedback() {
+        return false;
+    }
+
+    public String getFeedback() {
+        return "";
+    }
 }
diff --git a/src/net/i2p/android/wizard/ui/SingleTextFieldFragment.java b/src/net/i2p/android/wizard/ui/SingleTextFieldFragment.java
index 12007a33f..6566f1785 100644
--- a/src/net/i2p/android/wizard/ui/SingleTextFieldFragment.java
+++ b/src/net/i2p/android/wizard/ui/SingleTextFieldFragment.java
@@ -39,6 +39,7 @@ public class SingleTextFieldFragment extends Fragment {
     private String mKey;
     private SingleTextFieldPage mPage;
     private TextView mFieldView;
+    private TextView mFeedbackView;
 
     public static SingleTextFieldFragment create(String key) {
         Bundle args = new Bundle();
@@ -76,6 +77,9 @@ public class SingleTextFieldFragment extends Fragment {
             mFieldView.setText(mPage.getDefault());
             mPage.getData().putString(Page.SIMPLE_DATA_KEY, mPage.getDefault());
         }
+
+        mFeedbackView = (TextView) rootView.findViewById(R.id.wizard_text_field_feedback);
+
         return rootView;
     }
 
@@ -112,6 +116,9 @@ public class SingleTextFieldFragment extends Fragment {
                 mPage.getData().putString(Page.SIMPLE_DATA_KEY,
                         (editable != null) ? editable.toString() : null);
                 mPage.notifyDataChanged();
+                if (mPage.showFeedback()) {
+                    mFeedbackView.setText(mPage.getFeedback());
+                }
             }
         });
     }
-- 
GitLab