1
0
mirror of https://github.com/moparisthebest/k-9 synced 2025-02-21 05:01:54 -05:00

Added "select all" to action mode menu

This commit is contained in:
cketti 2012-09-13 06:27:58 +02:00
parent ea04339ca6
commit d9fad383eb
2 changed files with 42 additions and 14 deletions

View File

@ -40,4 +40,10 @@
android:showAsAction="ifRoom" android:showAsAction="ifRoom"
android:icon="?attr/iconActionSpam" android:icon="?attr/iconActionSpam"
/> />
<item
android:id="@+id/select_all"
android:icon="?attr/iconMenuSelectAll"
android:showAsAction="never"
android:title="@string/batch_select_all"
/>
</menu> </menu>

View File

@ -326,6 +326,8 @@ public class MessageList extends K9ListActivity implements OnItemClickListener {
private TextView mActionBarSubTitle; private TextView mActionBarSubTitle;
private TextView mActionBarUnread; private TextView mActionBarUnread;
private ActionModeCallback mActionModeCallback = new ActionModeCallback();
private final class StorageListenerImplementation implements StorageManager.StorageListener { private final class StorageListenerImplementation implements StorageManager.StorageListener {
@Override @Override
public void onUnmount(String providerId) { public void onUnmount(String providerId) {
@ -1824,6 +1826,7 @@ public class MessageList extends K9ListActivity implements OnItemClickListener {
resetUnreadCount(); resetUnreadCount();
notifyDataSetChanged(); notifyDataSetChanged();
computeSelectAllVisibility();
} }
/** /**
@ -1863,6 +1866,7 @@ public class MessageList extends K9ListActivity implements OnItemClickListener {
resetUnreadCount(); resetUnreadCount();
notifyDataSetChanged(); notifyDataSetChanged();
computeSelectAllVisibility();
} }
public void changeMessageUid(MessageReference ref, String newUid) { public void changeMessageUid(MessageReference ref, String newUid) {
@ -2045,8 +2049,6 @@ public class MessageList extends K9ListActivity implements OnItemClickListener {
} }
} }
private final OnClickListener flagClickListener = new OnClickListener() { private final OnClickListener flagClickListener = new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
@ -2455,6 +2457,7 @@ public class MessageList extends K9ListActivity implements OnItemClickListener {
} }
mAdapter.notifyDataSetChanged(); mAdapter.notifyDataSetChanged();
computeSelectAllVisibility();
} }
/** /**
@ -2475,6 +2478,7 @@ public class MessageList extends K9ListActivity implements OnItemClickListener {
mSelectedCount = mAdapter.getCount(); mSelectedCount = mAdapter.getCount();
mActionMode = MessageList.this.startActionMode(mActionModeCallback); mActionMode = MessageList.this.startActionMode(mActionModeCallback);
mActionMode.setTitle(String.format(getString(R.string.actionbar_selected), mSelectedCount)); mActionMode.setTitle(String.format(getString(R.string.actionbar_selected), mSelectedCount));
computeSelectAllVisibility();
} else { } else {
mSelectedCount = 0; mSelectedCount = 0;
mActionMode.finish(); mActionMode.finish();
@ -2489,6 +2493,7 @@ public class MessageList extends K9ListActivity implements OnItemClickListener {
} }
} }
mAdapter.notifyDataSetChanged(); mAdapter.notifyDataSetChanged();
computeSelectAllVisibility();
} }
private void toggleMessageSelect(final MessageInfoHolder holder){ private void toggleMessageSelect(final MessageInfoHolder holder){
@ -2501,8 +2506,6 @@ public class MessageList extends K9ListActivity implements OnItemClickListener {
mActionMode = MessageList.this.startActionMode(mActionModeCallback); mActionMode = MessageList.this.startActionMode(mActionModeCallback);
} }
if (holder.selected) { if (holder.selected) {
holder.selected = false; holder.selected = false;
mSelectedCount -= 1; mSelectedCount -= 1;
@ -2515,6 +2518,12 @@ public class MessageList extends K9ListActivity implements OnItemClickListener {
// make sure the onPrepareActionMode is called // make sure the onPrepareActionMode is called
mActionMode.invalidate(); mActionMode.invalidate();
computeSelectAllVisibility();
}
private void computeSelectAllVisibility() {
mActionModeCallback.showSelectAll(mSelectedCount != mAdapter.getCount());
} }
/** /**
@ -2824,10 +2833,12 @@ public class MessageList extends K9ListActivity implements OnItemClickListener {
} }
private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() { class ActionModeCallback implements ActionMode.Callback {
private MenuItem mSelectAll;
@Override @Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) { public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
mSelectAll = menu.findItem(R.id.select_all);
if (mQueryString != null) { if (mQueryString != null) {
// show all // show all
@ -2856,6 +2867,7 @@ public class MessageList extends K9ListActivity implements OnItemClickListener {
@Override @Override
public void onDestroyActionMode(ActionMode mode) { public void onDestroyActionMode(ActionMode mode) {
mActionMode = null; mActionMode = null;
mSelectAll = null;
setAllSelected(false); setAllSelected(false);
} }
@ -2915,6 +2927,12 @@ public class MessageList extends K9ListActivity implements OnItemClickListener {
} }
} }
public void showSelectAll(boolean show) {
if (mActionMode != null) {
mSelectAll.setVisible(show);
}
}
@Override @Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) { public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
final List<MessageInfoHolder> selection = getSelectionFromCheckboxes(); final List<MessageInfoHolder> selection = getSelectionFromCheckboxes();
@ -2940,6 +2958,10 @@ public class MessageList extends K9ListActivity implements OnItemClickListener {
onToggleFlag(selection); onToggleFlag(selection);
break; break;
} }
case R.id.select_all: {
setAllSelected(true);
break;
}
// only if the account supports this // only if the account supports this
case R.id.archive: { case R.id.archive: {