From 88c86e19455471b30096c1a705eb8ea8b00ab7fb Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Fri, 26 Jun 2015 01:57:36 +0200 Subject: use KeyAdapter for AllowedKeysListFragment --- .../keychain/ui/adapter/KeySelectableAdapter.java | 87 ++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeySelectableAdapter.java (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeySelectableAdapter.java') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeySelectableAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeySelectableAdapter.java new file mode 100644 index 000000000..471a20411 --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeySelectableAdapter.java @@ -0,0 +1,87 @@ +package org.sufficientlysecure.keychain.ui.adapter; + + +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +import android.content.Context; +import android.database.Cursor; +import android.support.v7.internal.widget.AdapterViewCompat; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.CheckBox; + +import org.sufficientlysecure.keychain.Constants; +import org.sufficientlysecure.keychain.R; +import org.sufficientlysecure.keychain.util.Log; + + +public class KeySelectableAdapter extends KeyAdapter implements OnItemClickListener { + + HashSet mSelectedItems = new HashSet<>(); + + public KeySelectableAdapter(Context context, Cursor c, int flags, Set initialChecked) { + super(context, c, flags); + if (initialChecked != null) { + mSelectedItems.addAll(initialChecked); + } + } + + public static class KeySelectableItemViewHolder extends KeyItemViewHolder { + + public CheckBox mCheckbox; + + public KeySelectableItemViewHolder(View view) { + super(view); + mCheckbox = (CheckBox) view.findViewById(R.id.selected); + } + + public void setCheckedState(boolean checked) { + mCheckbox.setChecked(checked); + } + + } + + @Override + public View newView(Context context, Cursor cursor, ViewGroup parent) { + View view = mInflater.inflate(R.layout.key_list_selectable_item, parent, false); + KeySelectableItemViewHolder holder = new KeySelectableItemViewHolder(view); + view.setTag(holder); + return view; + } + + @Override + public void bindView(View view, Context context, Cursor cursor) { + super.bindView(view, context, cursor); + + KeySelectableItemViewHolder h = (KeySelectableItemViewHolder) view.getTag(); + h.setCheckedState(mSelectedItems.contains(h.mDisplayedItem.mKeyId)); + + } + + public void setCheckedStates(Set checked) { + mSelectedItems.clear(); + mSelectedItems.addAll(checked); + notifyDataSetChanged(); + } + + public Set getSelectedMasterKeyIds() { + return Collections.unmodifiableSet(mSelectedItems); + } + + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + Log.d(Constants.TAG, "clicked id: " + id); + long masterKeyId = getMasterKeyId(position); + if (mSelectedItems.contains(masterKeyId)) { + mSelectedItems.remove(masterKeyId); + } else { + mSelectedItems.add(masterKeyId); + } + notifyDataSetChanged(); + } + +} -- cgit v1.2.3