Merge "Revert "Oops; forgot my latest changes...""
diff --git a/src/com/android/mail/compose/ComposeActivity.java b/src/com/android/mail/compose/ComposeActivity.java
index 459d3cf..5b18349 100644
--- a/src/com/android/mail/compose/ComposeActivity.java
+++ b/src/com/android/mail/compose/ComposeActivity.java
@@ -118,6 +118,8 @@
 
     private static final String EXTRA_BODY = "body";
 
+    private static final String EXTRA_FROM_ACCOUNT_STRING = "fromAccountString";
+
     // Extra that we can get passed from other activities
     private static final String EXTRA_TO = "to";
     private static final String EXTRA_CC = "cc";
@@ -494,8 +496,8 @@
         message.snippet = null;
         message.from = selectedReplyFromAccount.name;
         message.to = mTo.getText().toString();
-        message.cc = mTo.getText().toString();
-        message.bcc = mTo.getText().toString();
+        message.cc = mCc.getText().toString();
+        message.bcc = mBcc.getText().toString();
         message.replyTo = null;
         message.dateReceivedMs = 0;
         String htmlBody = Html.toHtml(mBodyView.getText());
@@ -534,13 +536,19 @@
     }
 
     private void initFromSpinner(Bundle bundle, int action) {
+        String accountString = null;
         if (action == EDIT_DRAFT && mDraft.draftType == UIProvider.DraftType.COMPOSE) {
             action = COMPOSE;
         }
         mFromSpinner.asyncInitFromSpinner(action, mAccount);
-        if (bundle != null && bundle.containsKey(EXTRA_SELECTED_REPLY_FROM_ACCOUNT)) {
-            mReplyFromAccount = ReplyFromAccount.deserialize(mAccount,
-                    bundle.getString(EXTRA_SELECTED_REPLY_FROM_ACCOUNT));
+        if (bundle != null) {
+            if (bundle.containsKey(EXTRA_SELECTED_REPLY_FROM_ACCOUNT)) {
+                mReplyFromAccount = ReplyFromAccount.deserialize(mAccount,
+                        bundle.getString(EXTRA_SELECTED_REPLY_FROM_ACCOUNT));
+            } else if (bundle.containsKey(EXTRA_FROM_ACCOUNT_STRING)) {
+                accountString = bundle.getString(EXTRA_FROM_ACCOUNT_STRING);
+                mReplyFromAccount = mFromSpinner.getMatchingReplyFromAccount(accountString);
+            }
         }
         if (mReplyFromAccount == null) {
             if (mDraft != null) {
@@ -553,7 +561,9 @@
             mReplyFromAccount = new ReplyFromAccount(mAccount, mAccount.uri, mAccount.name,
                     mAccount.name, true, false);
         }
+
         mFromSpinner.setCurrentAccount(mReplyFromAccount);
+
         if (mFromSpinner.getCount() > 1) {
             // If there is only 1 account, just show that account.
             // Otherwise, give the user the ability to choose which account to
diff --git a/src/com/android/mail/compose/FromAddressSpinner.java b/src/com/android/mail/compose/FromAddressSpinner.java
index 2abafd6..ec8cd11 100644
--- a/src/com/android/mail/compose/FromAddressSpinner.java
+++ b/src/com/android/mail/compose/FromAddressSpinner.java
@@ -71,6 +71,17 @@
         }
     }
 
+    public ReplyFromAccount getMatchingReplyFromAccount(String accountString) {
+        if (!TextUtils.isEmpty(accountString)) {
+            for (ReplyFromAccount acct : mReplyFromAccounts) {
+                if (accountString.equals(acct.name)) {
+                    return acct;
+                }
+            }
+        }
+        return null;
+    }
+
     public ReplyFromAccount getCurrentAccount() {
         return mAccount;
     }