use KeyAdapter for AllowedKeysListFragment
This commit is contained in:
@@ -95,6 +95,8 @@ public class KeyAdapter extends CursorAdapter {
|
||||
public View mSlinger;
|
||||
public ImageButton mSlingerButton;
|
||||
|
||||
public KeyItem mDisplayedItem;
|
||||
|
||||
public KeyItemViewHolder(View view) {
|
||||
mView = view;
|
||||
mMainUserId = (TextView) view.findViewById(R.id.key_list_item_name);
|
||||
@@ -107,6 +109,8 @@ public class KeyAdapter extends CursorAdapter {
|
||||
|
||||
public void setData(Context context, KeyItem item, Highlighter highlighter) {
|
||||
|
||||
mDisplayedItem = item;
|
||||
|
||||
{ // set name and stuff, common to both key types
|
||||
KeyRing.UserId userIdSplit = item.mUserId;
|
||||
if (userIdSplit.name != null) {
|
||||
@@ -143,6 +147,9 @@ public class KeyAdapter extends CursorAdapter {
|
||||
} else if (item.mIsSecret) {
|
||||
mStatus.setVisibility(View.GONE);
|
||||
if (mSlingerButton.hasOnClickListeners()) {
|
||||
mSlingerButton.setColorFilter(
|
||||
context.getResources().getColor(R.color.tertiary_text_light),
|
||||
PorterDuff.Mode.SRC_IN);
|
||||
mSlinger.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mSlinger.setVisibility(View.GONE);
|
||||
@@ -192,8 +199,6 @@ public class KeyAdapter extends CursorAdapter {
|
||||
View view = mInflater.inflate(R.layout.key_list_item, parent, false);
|
||||
KeyItemViewHolder holder = new KeyItemViewHolder(view);
|
||||
view.setTag(holder);
|
||||
holder.mSlingerButton.setColorFilter(context.getResources().getColor(R.color.tertiary_text_light),
|
||||
PorterDuff.Mode.SRC_IN);
|
||||
return view;
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user