aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeySelectableAdapter.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-06-26 01:57:36 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2015-06-26 01:59:11 +0200
commit88c86e19455471b30096c1a705eb8ea8b00ab7fb (patch)
tree687a20062c7b51d3270e9fb8c99c38e9e7c584ec /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeySelectableAdapter.java
parent3af5ba034399eb6b468de35708e051b52289b3a1 (diff)
downloadopen-keychain-88c86e19455471b30096c1a705eb8ea8b00ab7fb.tar.gz
open-keychain-88c86e19455471b30096c1a705eb8ea8b00ab7fb.tar.bz2
open-keychain-88c86e19455471b30096c1a705eb8ea8b00ab7fb.zip
use KeyAdapter for AllowedKeysListFragment
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeySelectableAdapter.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeySelectableAdapter.java87
1 files changed, 87 insertions, 0 deletions
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<Long> mSelectedItems = new HashSet<>();
+
+ public KeySelectableAdapter(Context context, Cursor c, int flags, Set<Long> 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<Long> checked) {
+ mSelectedItems.clear();
+ mSelectedItems.addAll(checked);
+ notifyDataSetChanged();
+ }
+
+ public Set<Long> 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();
+ }
+
+}