From 1cf912de2b388fbe996e3014a00a0d91f22194a5 Mon Sep 17 00:00:00 2001 From: uberspot Date: Thu, 6 Mar 2014 20:32:10 +0200 Subject: [PATCH] Multiselect: Create 'select all' in public and secret keylist --- .../keychain/ui/KeyListPublicFragment.java | 15 +++++++++------ .../keychain/ui/KeyListSecretFragment.java | 14 +++++++++----- .../ui/adapter/KeyListPublicAdapter.java | 2 +- .../res/drawable-hdpi/ic_action_select_all.png | Bin 0 -> 507 bytes .../res/drawable-mdpi/ic_action_select_all.png | Bin 0 -> 292 bytes .../res/drawable-xhdpi/ic_action_select_all.png | Bin 0 -> 351 bytes .../res/drawable-xxhdpi/ic_action_select_all.png | Bin 0 -> 563 bytes .../src/main/res/menu/key_list_public_multi.xml | 4 ++++ .../src/main/res/menu/key_list_secret_multi.xml | 4 ++++ OpenPGP-Keychain/src/main/res/values/strings.xml | 1 + 10 files changed, 28 insertions(+), 12 deletions(-) create mode 100644 OpenPGP-Keychain/src/main/res/drawable-hdpi/ic_action_select_all.png create mode 100644 OpenPGP-Keychain/src/main/res/drawable-mdpi/ic_action_select_all.png create mode 100644 OpenPGP-Keychain/src/main/res/drawable-xhdpi/ic_action_select_all.png create mode 100644 OpenPGP-Keychain/src/main/res/drawable-xxhdpi/ic_action_select_all.png diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java index 95267e01f..f2cb8a265 100644 --- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java +++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java @@ -144,8 +144,6 @@ public class KeyListPublicFragment extends Fragment implements SearchView.OnQuer mStickyList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); mStickyList.getWrappedList().setMultiChoiceModeListener(new MultiChoiceModeListener() { - private int count = 0; - @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { android.view.MenuInflater inflater = getActivity().getMenuInflater(); @@ -179,13 +177,20 @@ public class KeyListPublicFragment extends Fragment implements SearchView.OnQuer showDeleteKeyDialog(mode, ids); break; } + case R.id.menu_key_list_public_multi_select_all: { + //Select all + int localCount = mStickyList.getCount(); + for(int k = 0; k < localCount; k++) { + mStickyList.setItemChecked(k, true); + } + break; + } } return true; } @Override public void onDestroyActionMode(ActionMode mode) { - count = 0; mAdapter.clearSelection(); } @@ -193,13 +198,11 @@ public class KeyListPublicFragment extends Fragment implements SearchView.OnQuer public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { if (checked) { - count++; mAdapter.setNewSelection(position, checked); } else { - count--; mAdapter.removeSelection(position); } - + int count = mAdapter.getCurrentCheckedPosition().size(); String keysSelected = getResources().getQuantityString( R.plurals.key_list_selected_keys, count, count); mode.setTitle(keysSelected); diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListSecretFragment.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListSecretFragment.java index 7bb77b60f..eaac6d8b1 100644 --- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListSecretFragment.java +++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListSecretFragment.java @@ -82,8 +82,6 @@ public class KeyListSecretFragment extends ListFragment implements getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); getListView().setMultiChoiceModeListener(new MultiChoiceModeListener() { - private int count = 0; - @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { android.view.MenuInflater inflater = getActivity().getMenuInflater(); @@ -113,13 +111,20 @@ public class KeyListSecretFragment extends ListFragment implements showDeleteKeyDialog(mode, ids); break; } + case R.id.menu_key_list_public_multi_select_all: { + //Select all + int localCount = getListView().getCount(); + for(int k = 0; k < localCount; k++) { + getListView().setItemChecked(k, true); + } + break; + } } return true; } @Override public void onDestroyActionMode(ActionMode mode) { - count = 0; mAdapter.clearSelection(); } @@ -127,13 +132,12 @@ public class KeyListSecretFragment extends ListFragment implements public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { if (checked) { - count++; mAdapter.setNewSelection(position, checked); } else { - count--; mAdapter.removeSelection(position); } + int count = getListView().getCheckedItemCount(); String keysSelected = getResources().getQuantityString( R.plurals.key_list_selected_keys, count, count); mode.setTitle(keysSelected); diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyListPublicAdapter.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyListPublicAdapter.java index 257136cbd..ac505adfb 100644 --- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyListPublicAdapter.java +++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/KeyListPublicAdapter.java @@ -223,7 +223,7 @@ public class KeyListPublicAdapter extends CursorAdapter implements StickyListHea */ // default color v.setBackgroundColor(Color.TRANSPARENT); - if (mSelection.get(position) != null) { + if (mSelection.get(position) != null && mSelection.get(position).booleanValue()) { // this is a selected position, change color! v.setBackgroundColor(parent.getResources().getColor(R.color.emphasis)); } diff --git a/OpenPGP-Keychain/src/main/res/drawable-hdpi/ic_action_select_all.png b/OpenPGP-Keychain/src/main/res/drawable-hdpi/ic_action_select_all.png new file mode 100644 index 0000000000000000000000000000000000000000..fc0dd57b6034e4712d7f5d7d3b885fd95a32a8b8 GIT binary patch literal 507 zcmVJNRCwC#STT--Fbw2YGyCTP%v&`tgq=gJ&e0~Eucla$=X*uPZGn3w@{9uQ=!NKhc7T^ zibqPUZ_w5OU+|gZAvq9p4pg}JI!k_Bn0t@&zIB~%JSPKlwejF`phWv>;l;R4L3z%f zkuf|-2UG+*IiW726Ll$P+KUEU<-Y6JSYeH2ppI= z9#jr=5#+#Rt3GRT;7-ZdopK=O~)na0S~pupp*YvV0@Ap44?Rq*o-*%b{|zS0>T zYjvVRw(u*}rk?y3qpA99ch?nzV_yt-|7|QhS9&MzkDad!mwCT=_3b9%?FL%!LXv%Y z=KfOMxVV!Z literal 0 HcmV?d00001 diff --git a/OpenPGP-Keychain/src/main/res/drawable-xhdpi/ic_action_select_all.png b/OpenPGP-Keychain/src/main/res/drawable-xhdpi/ic_action_select_all.png new file mode 100644 index 0000000000000000000000000000000000000000..af37a368081003cbf3cd2aa5afda06832f4bc9e1 GIT binary patch literal 351 zcmV-l0igbgP)7G1HJtNO@}-2o+tZe&0RRAiy>eLV;GDb0!_j*`WXk%` zbdTeZU2nHIlr_}S2AQJpd zf~`<$!@qsiaL+fjFGGNpAQgZFksw0=2~q*c5?p)JDQkPS!?5jkxPO+_H`B|;5#}vp``xms$zR>lG>h2^vYTGLRq=M1n{V2{Hr#*bXB>BnV(G x!3^1(w5&6030h}M(z4EwAOHXWz?{1P0{|lg>gJl|dJ6ym002ovPDHLkV1l(~i>&|v literal 0 HcmV?d00001 diff --git a/OpenPGP-Keychain/src/main/res/drawable-xxhdpi/ic_action_select_all.png b/OpenPGP-Keychain/src/main/res/drawable-xxhdpi/ic_action_select_all.png new file mode 100644 index 0000000000000000000000000000000000000000..aa5937eab9ad68967f833abb3be988f198cb5f6d GIT binary patch literal 563 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGok|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+7_WM|IEGZ*dUNMs?jZw-qlHn03ym*iizSGMB``cY!N7Br zY3DS_Q(ITIZ0K}QDwLl5iBB8m_5R)0KJ_RQ&>A3E`r+F4!)co>k9fA-g ziw-=0XZ?M5lllj%P=37*UftP>-T}_rw9~5?G}iFFIJUmDe_#9lAD8--?*Fg*H~0MS z9R1r1t9b6VXn+28N-LD#EJStz-wSWwZQ9F2Y^(SkPCmRXtGh3l+tB;Mm1zovUwXwJ zy*Sgc_+~&)p7YKH4n;DyN7_~~H;KisENxIdA(z1a;&m$dl zgN2pxql{7pxAj2#8J90^yqNpqu*EMwo9cZsab3B$wf=F&|GP57`~I8467zYvR@qOs yCEtGKdLroAh3%`^#gDWdf + + Beam settings Cancel Encrypt to… + Select all Sign