From c9b028804cc4eed313ffe67baba3a60b02995166 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Fri, 1 Aug 2014 17:47:07 +0200 Subject: Add user id with dialog --- .../keychain/ui/adapter/SubkeysAdapter.java | 2 +- .../keychain/ui/adapter/UserIdsAdapter.java | 21 ++- .../keychain/ui/adapter/UserIdsAddedAdapter.java | 181 ++++++--------------- 3 files changed, 60 insertions(+), 144 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java index e5dbebe01..c2a882fdb 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/SubkeysAdapter.java @@ -114,7 +114,7 @@ public class SubkeysAdapter extends CursorAdapter { ImageView vEncryptIcon = (ImageView) view.findViewById(R.id.ic_encryptKey); ImageView vSignIcon = (ImageView) view.findViewById(R.id.ic_signKey); ImageView vRevokedKeyIcon = (ImageView) view.findViewById(R.id.ic_revokedKey); - ImageView vEditImage = (ImageView) view.findViewById(R.id.edit_image); + ImageView vEditImage = (ImageView) view.findViewById(R.id.user_id_item_edit_image); long keyId = cursor.getLong(INDEX_KEY_ID); String keyIdStr = PgpKeyHelper.convertKeyIdToHex(keyId); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java index 6d46f3c8f..ee3341c08 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAdapter.java @@ -102,11 +102,14 @@ public class UserIdsAdapter extends CursorAdapter implements AdapterView.OnItemC @Override public void bindView(View view, Context context, Cursor cursor) { - TextView vName = (TextView) view.findViewById(R.id.userId); - TextView vAddress = (TextView) view.findViewById(R.id.address); - TextView vComment = (TextView) view.findViewById(R.id.comment); - ImageView vVerified = (ImageView) view.findViewById(R.id.certified); - ImageView vEditImage = (ImageView) view.findViewById(R.id.edit_image); + TextView vName = (TextView) view.findViewById(R.id.user_id_item_name); + TextView vAddress = (TextView) view.findViewById(R.id.user_id_item_address); + TextView vComment = (TextView) view.findViewById(R.id.user_id_item_comment); + ImageView vVerified = (ImageView) view.findViewById(R.id.user_id_item_certified); + View vVerifiedLayout = view.findViewById(R.id.user_id_item_certified_layout); + ImageView vEditImage = (ImageView) view.findViewById(R.id.user_id_item_edit_image); + ImageView vDeleteButton = (ImageView) view.findViewById(R.id.user_id_item_delete_button); + vDeleteButton.setVisibility(View.GONE); // not used String userId = cursor.getString(INDEX_USER_ID); String[] splitUserId = KeyRing.splitUserId(userId); @@ -152,8 +155,10 @@ public class UserIdsAdapter extends CursorAdapter implements AdapterView.OnItemC } vEditImage.setVisibility(View.VISIBLE); + vVerifiedLayout.setVisibility(View.GONE); } else { vEditImage.setVisibility(View.GONE); + vVerifiedLayout.setVisibility(View.VISIBLE); } if (isRevoked) { @@ -211,7 +216,7 @@ public class UserIdsAdapter extends CursorAdapter implements AdapterView.OnItemC return; } - final CheckBox vCheckBox = (CheckBox) view.findViewById(R.id.checkBox); + final CheckBox vCheckBox = (CheckBox) view.findViewById(R.id.user_id_item_check_box); final int position = cursor.getPosition(); vCheckBox.setOnCheckedChangeListener(null); vCheckBox.setChecked(mCheckStates.get(position)); @@ -225,7 +230,7 @@ public class UserIdsAdapter extends CursorAdapter implements AdapterView.OnItemC } public void onItemClick(AdapterView adapter, View view, int position, long id) { - CheckBox box = ((CheckBox) view.findViewById(R.id.checkBox)); + CheckBox box = ((CheckBox) view.findViewById(R.id.user_id_item_check_box)); if (box != null) { box.toggle(); } @@ -251,7 +256,7 @@ public class UserIdsAdapter extends CursorAdapter implements AdapterView.OnItemC public View newView(Context context, Cursor cursor, ViewGroup parent) { View view = mInflater.inflate(R.layout.view_key_user_id_item, null); // only need to do this once ever, since mShowCheckBoxes is final - view.findViewById(R.id.checkBox).setVisibility(mCheckStates != null ? View.VISIBLE : View.GONE); + view.findViewById(R.id.user_id_item_check_box).setVisibility(mCheckStates != null ? View.VISIBLE : View.GONE); return view; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAddedAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAddedAdapter.java index 3fe5574ee..15ac11e0b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAddedAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/UserIdsAddedAdapter.java @@ -19,162 +19,65 @@ package org.sufficientlysecure.keychain.ui.adapter; import android.app.Activity; import android.content.Context; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.util.Patterns; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; -import android.widget.AutoCompleteTextView; -import android.widget.EditText; +import android.widget.CheckBox; import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.TextView; import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.helper.ContactHelper; +import org.sufficientlysecure.keychain.pgp.KeyRing; -import java.util.ArrayList; import java.util.List; -import java.util.regex.Matcher; -public class UserIdsAddedAdapter extends ArrayAdapter { +public class UserIdsAddedAdapter extends ArrayAdapter { private LayoutInflater mInflater; - private Activity mActivity; - - private ArrayAdapter mAutoCompleteNameAdapter; - private ArrayAdapter mAutoCompleteEmailAdapter; // hold a private reference to the underlying data List - private List mData; - - public static class UserIdModel { - String name = ""; - String address = ""; - String comment = ""; - - @Override - public String toString() { - String userId = name; - if (!TextUtils.isEmpty(comment)) { - userId += " (" + comment + ")"; - } - if (!TextUtils.isEmpty(address)) { - userId += " <" + address + ">"; - } - return userId; - } - } + private List mData; - public UserIdsAddedAdapter(Activity activity, List data) { + public UserIdsAddedAdapter(Activity activity, List data) { super(activity, -1, data); - mActivity = activity; mInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mData = data; - mAutoCompleteNameAdapter = new ArrayAdapter - (mActivity, android.R.layout.simple_spinner_dropdown_item, - ContactHelper.getPossibleUserNames(mActivity) - ); - mAutoCompleteEmailAdapter = new ArrayAdapter - (mActivity, android.R.layout.simple_spinner_dropdown_item, - ContactHelper.getPossibleUserEmails(mActivity) - ); } - public ArrayList getDataAsStringList() { - ArrayList out = new ArrayList(); - for (UserIdModel id : mData) { - // ignore empty user ids - if (!TextUtils.isEmpty(id.toString())) { - out.add(id.toString()); - } - } - - return out; + public List getData() { + return mData; } static class ViewHolder { - public AutoCompleteTextView vAddress; - public AutoCompleteTextView vName; - public EditText vComment; + public TextView vAddress; + public TextView vName; + public TextView vComment; public ImageButton vDelete; // also hold a reference to the model item - public UserIdModel mModel; + public String mModel; } public View getView(final int position, View convertView, ViewGroup parent) { if (convertView == null) { // Not recycled, inflate a new view - convertView = mInflater.inflate(R.layout.edit_key_user_id_added_item, null); + convertView = mInflater.inflate(R.layout.view_key_user_id_item, null); final ViewHolder holder = new ViewHolder(); - holder.vAddress = (AutoCompleteTextView) convertView.findViewById(R.id.user_id_added_item_address); - holder.vName = (AutoCompleteTextView) convertView.findViewById(R.id.user_id_added_item_name); - holder.vComment = (EditText) convertView.findViewById(R.id.user_id_added_item_comment); - holder.vDelete = (ImageButton) convertView.findViewById(R.id.user_id_added_item_delete); - convertView.setTag(holder); - - holder.vAddress.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 s) { - // update referenced item in view holder - holder.mModel.address = s.toString(); - - // show icon on valid email addresses - if (holder.mModel.address.length() > 0) { - Matcher emailMatcher = Patterns.EMAIL_ADDRESS.matcher(holder.mModel.address); - if (emailMatcher.matches()) { - holder.vAddress.setCompoundDrawablesWithIntrinsicBounds(0, 0, - R.drawable.uid_mail_ok, 0); - } else { - holder.vAddress.setCompoundDrawablesWithIntrinsicBounds(0, 0, - R.drawable.uid_mail_bad, 0); - } - } else { - // remove drawable if email is empty - holder.vAddress.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); - } - } - }); - - holder.vName.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 s) { - // update referenced item in view holder - holder.mModel.name = s.toString(); - } - }); - - holder.vComment.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) { - } + holder.vAddress = (TextView) convertView.findViewById(R.id.user_id_item_address); + holder.vName = (TextView) convertView.findViewById(R.id.user_id_item_name); + holder.vComment = (TextView) convertView.findViewById(R.id.user_id_item_comment); + holder.vDelete = (ImageButton) convertView.findViewById(R.id.user_id_item_delete_button); + holder.vDelete.setVisibility(View.VISIBLE); // always visible + + // not used: + CheckBox checkBox = (CheckBox) convertView.findViewById(R.id.user_id_item_check_box); + View certifiedLayout = convertView.findViewById(R.id.user_id_item_certified_layout); + ImageView editImage = (ImageView) convertView.findViewById(R.id.user_id_item_edit_image); + checkBox.setVisibility(View.GONE); + certifiedLayout.setVisibility(View.GONE); + editImage.setVisibility(View.GONE); - @Override - public void afterTextChanged(Editable s) { - // update referenced item in view holder - holder.mModel.comment = s.toString(); - } - }); + convertView.setTag(holder); holder.vDelete.setOnClickListener(new View.OnClickListener() { @Override @@ -183,22 +86,30 @@ public class UserIdsAddedAdapter extends ArrayAdapter