1
0
mirror of https://github.com/moparisthebest/k-9 synced 2024-11-30 13:12:25 -05:00

Add forward, reply, reply all, same sender back in the MessageList context actionbar.

This commit is contained in:
Sander Bogaert 2012-08-21 10:42:45 -04:00 committed by Andrew Chen
parent 10c733606e
commit 592aeb0b03
7 changed files with 85 additions and 4 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 682 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1,5 +1,28 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/single_message_options"
android:icon="@drawable/ic_action_single_message_options"
android:showAsAction="always"
android:title="@string/single_message_options_action">
<menu>
<item
android:id="@+id/forward"
android:title="@string/forward_action"/>
<item
android:id="@+id/reply_all"
android:title="@string/reply_all_action"/>
<item
android:id="@+id/reply"
android:title="@string/reply_action"/>
<item
android:id="@+id/send_again"
android:title="@string/send_again_action"/>
<item
android:id="@+id/same_sender"
android:title="@string/from_same_sender" />
</menu>
</item>
<item <item
android:id="@+id/delete" android:id="@+id/delete"
android:title="@string/delete_action" android:title="@string/delete_action"

View File

@ -118,6 +118,7 @@ http://k9mail.googlecode.com/
<string name="forward_action">Forward</string> <string name="forward_action">Forward</string>
<string name="move_action">Move</string> <string name="move_action">Move</string>
<string name="move_or_copy_action">Move or Copy</string> <string name="move_or_copy_action">Move or Copy</string>
<string name="single_message_options_action">Message Options</string>
<string name="continue_action">Continue</string> <string name="continue_action">Continue</string>
<string name="back_action">Back</string> <string name="back_action">Back</string>
<string name="done_action">Done</string> <!-- Used to complete a multi-step process --> <string name="done_action">Done</string> <!-- Used to complete a multi-step process -->

View File

@ -1156,6 +1156,22 @@ public class MessageList extends K9ListActivity implements
} }
} }
private void onReply(MessageInfoHolder holder) {
MessageCompose.actionReply(this, holder.message.getFolder().getAccount(), holder.message, false, null);
}
private void onReplyAll(MessageInfoHolder holder) {
MessageCompose.actionReply(this, holder.message.getFolder().getAccount(), holder.message, true, null);
}
private void onForward(MessageInfoHolder holder) {
MessageCompose.actionForward(this, holder.message.getFolder().getAccount(), holder.message, null);
}
private void onResendMessage(MessageInfoHolder message) {
MessageCompose.actionEditDraft(this, message.message.getFolder().getAccount(), message.message);
}
private void onEditPrefs() { private void onEditPrefs() {
Prefs.actionPrefs(this); Prefs.actionPrefs(this);
} }
@ -2408,10 +2424,8 @@ public class MessageList extends K9ListActivity implements
mAdapter.notifyDataSetChanged(); mAdapter.notifyDataSetChanged();
mActionMode.setTitle(String.format(getString(R.string.actionbar_selected), mSelectedCount)); mActionMode.setTitle(String.format(getString(R.string.actionbar_selected), mSelectedCount));
if (mQueryString != null) { // make sure the onPrepareActionMode is called
// we might have to disable some options mActionMode.invalidate();
mActionMode.invalidate();
}
} }
/** /**
@ -2757,6 +2771,11 @@ public class MessageList extends K9ListActivity implements
@Override @Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) { public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// enable or disable forward, reply,....
menu.findItem(R.id.single_message_options)
.setVisible(mSelectedCount > 1 ? false : true);
if (mQueryString != null) { if (mQueryString != null) {
// show all // show all
menu.findItem(R.id.move).setVisible(true); menu.findItem(R.id.move).setVisible(true);
@ -2801,6 +2820,14 @@ public class MessageList extends K9ListActivity implements
return true; return true;
} }
/**
* Disables menu options based on if the account supports it or not.
* It also checks the controller and for now the 'mode' the messagelist
* is operation in ( query or not ).
*
* @param mAccount Account to check capabilities of.
* @param menu Menu to adapt.
*/
private void setContextCapabilities(Account mAccount, Menu menu) { private void setContextCapabilities(Account mAccount, Menu menu) {
/* /*
* TODO get rid of this when we finally split the messagelist into * TODO get rid of this when we finally split the messagelist into
@ -2867,6 +2894,8 @@ public class MessageList extends K9ListActivity implements
onToggleFlag(selection); onToggleFlag(selection);
break; break;
} }
// only if the account supports this
case R.id.archive: { case R.id.archive: {
onArchive(selection); onArchive(selection);
mSelectedCount = 0; mSelectedCount = 0;
@ -2887,6 +2916,34 @@ public class MessageList extends K9ListActivity implements
mSelectedCount = 0; mSelectedCount = 0;
break; break;
} }
// only if a single message is selected
case R.id.reply: {
onReply(selection.get(0));
mSelectedCount = 0;
break;
}
case R.id.reply_all: {
onReplyAll(selection.get(0));
mSelectedCount = 0;
break;
}
case R.id.forward: {
onForward(selection.get(0));
mSelectedCount = 0;
break;
}
case R.id.send_again: {
onResendMessage(selection.get(0));
mSelectedCount = 0;
break;
}
case R.id.same_sender: {
MessageList.actionHandle(MessageList.this, "From " + selection.get(0).sender,
selection.get(0).senderAddress, false, null, null);
mSelectedCount = 0;
break;
}
} }
if (mSelectedCount == 0) { if (mSelectedCount == 0) {