diff options
4 files changed, 80 insertions, 1 deletions
| diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java index 8aa9fa6db..d3b6cb36c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java @@ -32,6 +32,7 @@ import android.widget.AutoCompleteTextView;  import android.widget.EditText;  import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.ui.widget.passwordstrengthindicator.PasswordStrengthView;  import org.sufficientlysecure.keychain.util.ContactHelper;  import java.util.regex.Matcher; @@ -40,6 +41,7 @@ public class CreateKeyInputFragment extends Fragment {      CreateKeyActivity mCreateKeyActivity; +    PasswordStrengthView mPassphraseStrengthView;      AutoCompleteTextView mNameEdit;      AutoCompleteTextView mEmailEdit;      EditText mPassphraseEdit; @@ -68,6 +70,8 @@ public class CreateKeyInputFragment extends Fragment {      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {          View view = inflater.inflate(R.layout.create_key_input_fragment, container, false); +        mPassphraseStrengthView = (PasswordStrengthView) view.findViewById(R.id +                .create_key_passphrase_strength);          mNameEdit = (AutoCompleteTextView) view.findViewById(R.id.create_key_name);          mEmailEdit = (AutoCompleteTextView) view.findViewById(R.id.create_key_email);          mPassphraseEdit = (EditText) view.findViewById(R.id.create_key_passphrase); @@ -130,6 +134,22 @@ public class CreateKeyInputFragment extends Fragment {                          )          ); +        mPassphraseEdit.addTextChangedListener(new TextWatcher() { +            @Override +            public void beforeTextChanged(CharSequence s, int start, int count, int after) { +            } + +            @Override +            public void onTextChanged(CharSequence s, int start, int before, int count) { +            } + +            @Override +            public void afterTextChanged(Editable editable) { +                String passphrase = editable.toString(); +                mPassphraseStrengthView.setPassword(passphrase); +            } +        }); +          mCreateButton.setOnClickListener(new View.OnClickListener() {              @Override              public void onClick(View v) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/passwordstrengthindicator/PasswordStrengthBarView.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/passwordstrengthindicator/PasswordStrengthBarView.java index ad431875e..c1db823b3 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/passwordstrengthindicator/PasswordStrengthBarView.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/passwordstrengthindicator/PasswordStrengthBarView.java @@ -1,3 +1,27 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2014 Matt Allen + * + * 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. + */ +  package org.sufficientlysecure.keychain.ui.widget.passwordstrengthindicator;  import android.content.Context; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/passwordstrengthindicator/PasswordStrengthView.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/passwordstrengthindicator/PasswordStrengthView.java index da7b0b5d5..47e6d9527 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/passwordstrengthindicator/PasswordStrengthView.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/passwordstrengthindicator/PasswordStrengthView.java @@ -1,3 +1,27 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2014 Matt Allen + * + * 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. + */ +  package org.sufficientlysecure.keychain.ui.widget.passwordstrengthindicator;  import android.content.Context; diff --git a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml index f678825aa..76a58acb1 100644 --- a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml +++ b/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml @@ -1,5 +1,6 @@  <?xml version="1.0" encoding="UTF-8"?>  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" +                xmlns:custom="http://schemas.android.com/apk/res-auto"      android:layout_width="match_parent"      android:layout_height="match_parent"> @@ -63,13 +64,23 @@                  android:layout_width="match_parent"                  android:layout_height="wrap_content"                  android:layout_marginTop="8dp" -                android:layout_marginBottom="8dp"                  android:imeOptions="actionNext"                  android:inputType="textPassword"                  android:hint="@string/label_passphrase"                  android:ems="10"                  android:layout_gravity="center_horizontal" /> +            <org.sufficientlysecure.keychain.ui.widget.passwordstrengthindicator.PasswordStrengthBarView +                android:id="@+id/create_key_passphrase_strength" +                android:layout_width="match_parent" +                android:layout_height="8dp" +                android:layout_marginBottom="8dp" +                custom:strength="medium" +                custom:showGuides="false" +                custom:color_fail="@color/android_red_light" +                custom:color_weak="@color/android_orange_light" +                custom:color_strong="@color/android_green_light"/> +              <EditText                  android:id="@+id/create_key_passphrase_again"                  android:layout_width="match_parent" | 
