diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/ImportKeyResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/ImportKeyResult.java index af9f67114..1438ad698 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/ImportKeyResult.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/ImportKeyResult.java @@ -162,7 +162,7 @@ public class ImportKeyResult extends OperationResult { if (isOkWithErrors()) { // definitely switch to warning-style message in this case! duration = 0; - style = Style.ERROR; + style = Style.WARN; str += " " + activity.getResources().getQuantityString( R.plurals.import_keys_with_errors, mBadKeys, mBadKeys); } @@ -175,7 +175,10 @@ public class ImportKeyResult extends OperationResult { ? R.string.import_error_nothing_cancelled : R.string.import_error_nothing); } else { - str = activity.getResources().getQuantityString(R.plurals.import_error, mBadKeys); + str = activity.getResources().getQuantityString( + R.plurals.import_error, + mBadKeys, + mBadKeys); } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyEmailFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyEmailFragment.java index 2e8a1f370..7e2e1c31c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyEmailFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyEmailFragment.java @@ -39,6 +39,7 @@ import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction; import org.sufficientlysecure.keychain.ui.dialog.AddEmailDialogFragment; import org.sufficientlysecure.keychain.ui.dialog.SetPassphraseDialogFragment; +import org.sufficientlysecure.keychain.ui.util.Notify; import org.sufficientlysecure.keychain.ui.widget.EmailEditText; import java.util.ArrayList; @@ -122,16 +123,22 @@ public class CreateKeyEmailFragment extends Fragment { mEmailsRecyclerView.setItemAnimator(new DefaultItemAnimator()); // initial values - mAdditionalEmailModels = new ArrayList<>(); - if (mCreateKeyActivity.mAdditionalEmails != null) { - setAdditionalEmails(mCreateKeyActivity.mAdditionalEmails); - } - mEmailAdapter = new EmailAdapter(mAdditionalEmailModels, new View.OnClickListener() { - @Override - public void onClick(View v) { - addEmail(); + if (mAdditionalEmailModels == null) { + mAdditionalEmailModels = new ArrayList<>(); + if (mCreateKeyActivity.mAdditionalEmails != null) { + setAdditionalEmails(mCreateKeyActivity.mAdditionalEmails); } - }); + } + + if (mEmailAdapter == null) { + mEmailAdapter = new EmailAdapter(mAdditionalEmailModels, new View.OnClickListener() { + @Override + public void onClick(View v) { + addEmail(); + } + }); + } + mEmailsRecyclerView.setAdapter(mEmailAdapter); return view; @@ -144,10 +151,27 @@ public class CreateKeyEmailFragment extends Fragment { if (message.what == SetPassphraseDialogFragment.MESSAGE_OKAY) { Bundle data = message.getData(); + String email = data.getString(AddEmailDialogFragment.MESSAGE_DATA_EMAIL); + + if (email.length() > 0 && mEmailEdit.getText().length() > 0 && + email.equals(mEmailEdit.getText().toString())) { + Notify.create(getActivity(), + getString(R.string.create_key_email_already_exists_text), + Notify.LENGTH_LONG, Notify.Style.ERROR).show(); + return; + } + //check for duplicated emails inside the adapter + for (EmailAdapter.ViewModel model : mAdditionalEmailModels) { + if (email.equals(model.email)) { + Notify.create(getActivity(), + getString(R.string.create_key_email_already_exists_text), + Notify.LENGTH_LONG, Notify.Style.ERROR).show(); + return; + } + } + // add new user id - mEmailAdapter.add( - data.getString(AddEmailDialogFragment.MESSAGE_DATA_EMAIL) - ); + mEmailAdapter.add(email); } } }; diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index f6fbd132c..274504315 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -630,6 +630,7 @@ "Change key configuration" "Add email address" "Additional email addresses are also associated to this key and can be used for secure communication." + "Email has already been added" "Revoked: Key must not be used anymore!"