From 592aeb0b037d16e32bab974090850013b41389ea Mon Sep 17 00:00:00 2001 From: Sander Bogaert Date: Tue, 21 Aug 2012 10:42:45 -0400 Subject: [PATCH] Add forward, reply, reply all, same sender back in the MessageList context actionbar. --- .../ic_action_single_message_options.png | Bin 0 -> 1090 bytes .../ic_action_single_message_options.png | Bin 0 -> 544 bytes .../ic_action_single_message_options.png | Bin 0 -> 682 bytes .../ic_action_single_message_options.png | Bin 0 -> 1369 bytes res/menu/message_list_context.xml | 23 +++++++ res/values/strings.xml | 1 + src/com/fsck/k9/activity/MessageList.java | 65 ++++++++++++++++-- 7 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 res/drawable-hdpi/ic_action_single_message_options.png create mode 100644 res/drawable-ldpi/ic_action_single_message_options.png create mode 100644 res/drawable-mdpi/ic_action_single_message_options.png create mode 100644 res/drawable-xhdpi/ic_action_single_message_options.png diff --git a/res/drawable-hdpi/ic_action_single_message_options.png b/res/drawable-hdpi/ic_action_single_message_options.png new file mode 100644 index 0000000000000000000000000000000000000000..ff9dbdda915b42cc44f6a37f066e631e43f07ef5 GIT binary patch literal 1090 zcmV-I1ikx-P)XlKCAfXN8hC1f&yrXM$*f&TvfeJ+>lXd;oA)>Gs6`!CGS&b~9PSmnSJ0EzGF z>beJ?Gx2zQN=sZI5IBvoYp}V~HUNm|9*4s*R;g5WLe!)dKrk3Q1)Cw*NU*ux765&H zefxWQdPZgOq=^f_iYKGC03h*HHj*UmW}?{upcda203MHLZ)a!c119ncLmdFh>jVIA zV9>#qjHMZXr~?o+3PIaBbzB3G#owfwSKCclB+J2SG<#7o2@XE&067qVz2c1smeJ%0G$RaWm27njhxn*M+0EtKBscfjv zH(U_Bi1FuzLcxnc5??oAdC#n_t`4*J(TXdvSgeS9l~&gW?n*4Luw#0WM=NbgJP8DJ zNhOqo7Z9X>$mH*0v6x22=W%ZyU?=K>m^XoPXz18Yqf3N z95CuU5dC9qZEakx{|zr8&V+vnh!}gnVG4 z=M1R zXfudl3>h^Dy!R=x@YN8244T-?1>ty5FDOO;^gj7Rh%%~ql}e?FWHR|d2tcr$lrTmZU>2%f{AE9wA=0-$VsM zX39gvw&fBMalRQgHo#^?dEMKn)uP$=+a+XmHtY=8888`v|2omhKme%Fz5oCK07*qo IM6N<$g0ceb#Q*>R literal 0 HcmV?d00001 diff --git a/res/drawable-ldpi/ic_action_single_message_options.png b/res/drawable-ldpi/ic_action_single_message_options.png new file mode 100644 index 0000000000000000000000000000000000000000..17952fc0a5235e05071808f2dd7a82107823b9e6 GIT binary patch literal 544 zcmV+*0^j|KP)T3qzECwL?GF@D5e1*%5BUBF@dsS_9ip_A;#P2_O}Z(K3q|dsh>vZ- zlEiaEri|?*l$5R-7-r_q+;i@nxpyKZhWtrG#!rj@K{}nDv~ByFmok&dOw?+%pMK@L>HUluU7v37=&eE!oGsi>=}y3g)`q=It;^K~91xMaW3Q0e2TR4R|X zi(P?~af+*+N*1N5EXyB(T#TnDO`*Up78imIZS)0_N%&OI6M-mC_(DS>tZ?btLx9sy zp;k_D$q(qSQJj=n;m@_`sle%01Gz+nrod;qTCGy{b-p-{-5Plh{MfM&M9;Oz7M8ms i@JH*XY@_xJU7|lW!|xeHG53-H0000=351!sbME=R^PR^X#qq{J<&E(jZ31ltnpPkf40d}w zp22K3dulD*SS&V%^^;Z#x+ww#?(_NPRaL#sWHP^4plCEY>~uP3vHsoSi}>s^5J z0sPNd0tPq%zY2jsAkgFY`{#9V!Z8Uz_8~=4z8O*5PCy5z$om;-H3B;LSFD>Uw3UDW z+<_YS4bTomUI%V#3KEG#Ppww_36M{0QDJQx#a6`{$^N8xZBak~j=2 z;Ug9sZtQJ6DU5~4YPshL8=6Lp2B zC=Y1Q)k2~0M|c`?&H?hFjpBGbK8pKk)~Sd5AM&3lFjzGl QsQ>@~07*qoM6N<$g5te08vp+GQIvvO3Z*qlMMWik)fz!;^`Wo6_|ivTON+IJ7!{#~ zA|eQ4)QIhFHeUv`%|lV}LBW8qk|vwo{*LUF$z(q6y*qI->;&c^JNKS*&;S2F=iIq7 zsfIfLOVxS&4G92=0_q%rBn9eR07(%{QXolzI!7Q$fu#~adwctbjg5`zd_MnB)kjxX z*XNACt~x%9aZ93rmX?6^x$(oXp1-05|4?0AS8Wz&Ri}@66L!DWJ8rwYjOO z>4aVO_JG_J(AL(rf%drH%K6v=fP`CE{86rVysE7e012KBanOzVSfzk44~yUU1@A0^ zLCnVn02St|!IVp-(%JFx@y9C6#{vLV<_V^P{4cQyx~JHmJiq0r&GXHzdIm z;32NGpISWb{p|KTK$fsS%T=72nVFuPoP23ud(jl%X8{f7QGL0OoWEaX{s0SZ3S)sD zHYxxi06f9ZV~XuVitTd~f1UskNGApl2g#m=lvqR`(tS`P^Cs)J&zS;B()t$%bA8(2Iz@S+7Uu?Fn$(L|m%R{NlmZ%U@BiW_Adq*mNiu1BrtGTD1B1#%*_gRaa4mv5O2FtZ zRtF$8mb(3^2JIX-OHDZA)+#;QppFu%r@wFZ0M*tR>RF>{)Q)+1i2BiKE3A!>Jp5dc zjgXx7Ah{mhEpSLd`kATB&CQ*in3#BE9~8(GouL(Jf6XM%gAXw%oq?bSxF;D{>a#cI+JlgbDzb4U-n^Jf>3yKvxO21CdQgcaJJl zIsnL;bPF$OaE~C;cPa@HuwL5n5(GsZ({&-lwg+| zOl@KA?jR-TDnQng&1Tn-cBg#+c*eb7u|4h_6Uc~{QNI@=)*NTP(NR93MhFO=eoX)n zf4rUg9(k{}ub2N{ab07pJ~TW$Jm(gRF#uJk3tomg9eBJL`IL0n=>>u*0D$`y;L1i! zTJmdle%Fh|;^5TO)W3eIQ4;`S*yPn1)muQ=<+dH_d00d7;(-lLbUQCjlU82BP+#C?IMEqV}ICAZiAp_Ma#qY6hbApC}+|2BP*~ b_X_wA%2V@SDE~p-00000NkvXXu0mjfKlFcd literal 0 HcmV?d00001 diff --git a/res/menu/message_list_context.xml b/res/menu/message_list_context.xml index 2711c6b97..9a27d8b6e 100644 --- a/res/menu/message_list_context.xml +++ b/res/menu/message_list_context.xml @@ -1,5 +1,28 @@ + + + + + + + + + Forward Move Move or Copy + Message Options Continue Back Done diff --git a/src/com/fsck/k9/activity/MessageList.java b/src/com/fsck/k9/activity/MessageList.java index f46173d98..d68a7e0d7 100644 --- a/src/com/fsck/k9/activity/MessageList.java +++ b/src/com/fsck/k9/activity/MessageList.java @@ -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() { Prefs.actionPrefs(this); } @@ -2408,10 +2424,8 @@ public class MessageList extends K9ListActivity implements mAdapter.notifyDataSetChanged(); mActionMode.setTitle(String.format(getString(R.string.actionbar_selected), mSelectedCount)); - if (mQueryString != null) { - // we might have to disable some options - mActionMode.invalidate(); - } + // make sure the onPrepareActionMode is called + mActionMode.invalidate(); } /** @@ -2757,6 +2771,11 @@ public class MessageList extends K9ListActivity implements @Override 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) { // show all menu.findItem(R.id.move).setVisible(true); @@ -2801,6 +2820,14 @@ public class MessageList extends K9ListActivity implements 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) { /* * TODO get rid of this when we finally split the messagelist into @@ -2867,6 +2894,8 @@ public class MessageList extends K9ListActivity implements onToggleFlag(selection); break; } + + // only if the account supports this case R.id.archive: { onArchive(selection); mSelectedCount = 0; @@ -2887,6 +2916,34 @@ public class MessageList extends K9ListActivity implements mSelectedCount = 0; 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) {