Author: phoudoin Date: 2011-04-19 11:38:37 +0200 (Tue, 19 Apr 2011) New Revision: 41266 Changeset: https://dev.haiku-os.org/changeset/41266 Ticket: https://dev.haiku-os.org/ticket/4789 Modified: haiku/trunk/src/apps/mail/Header.cpp haiku/trunk/src/apps/mail/MailWindow.cpp Log: Patch by Sean "jalopeura" Healy: save and restore account and encoding of draft mails. This fix #4789. Thanks. Modified: haiku/trunk/src/apps/mail/Header.cpp =================================================================== --- haiku/trunk/src/apps/mail/Header.cpp 2011-04-18 23:44:20 UTC (rev 41265) +++ haiku/trunk/src/apps/mail/Header.cpp 2011-04-19 09:38:37 UTC (rev 41266) @@ -640,6 +640,13 @@ int32 account; if (msg->FindInt32("id",(int32 *)&account) >= B_OK) fAccountID = account; + + BMessage message(FIELD_CHANGED); + // field doesn't matter; no special processing for this field + // it's just to turn on the save button + message.AddInt32("bitmask", 0); + Window()->PostMessage(&message, Window()); + break; } @@ -654,6 +661,13 @@ message.what = CHARSET_CHOICE_MADE; message.AddInt32 ("charset", fCharacterSetUserSees); Window()->PostMessage (&message, Window()); + + BMessage message2(FIELD_CHANGED); + // field doesn't matter; no special processing for this field + // it's just to turn on the save button + message2.AddInt32("bitmask", 0); + Window()->PostMessage(&message2, Window()); + break; } } Modified: haiku/trunk/src/apps/mail/MailWindow.cpp =================================================================== --- haiku/trunk/src/apps/mail/MailWindow.cpp 2011-04-18 23:44:20 UTC (rev 41265) +++ haiku/trunk/src/apps/mail/MailWindow.cpp 2011-04-19 09:38:37 UTC (rev 41266) @@ -2545,6 +2545,18 @@ WriteAttrString(&draft, B_MAIL_ATTR_CC, fHeaderView->fCc->Text()); if (fHeaderView->fBcc != NULL) WriteAttrString(&draft, B_MAIL_ATTR_BCC, fHeaderView->fBcc->Text()); + + // Add account + //BMenuItem* accountItem = fHeaderView->fAccountMenu->FindMarked(); + //WriteAttrString(&draft, B_MAIL_ATTR_ACCOUNT, accountItem->Label()); + WriteAttrString(&draft, B_MAIL_ATTR_ACCOUNT, + fHeaderView->fAccountMenu->FindMarked()->Label()); + + // Add encoding + //BMenuItem* encodingItem = fHeaderView->fEncodingMenu->FindMarked(); + //WriteAttrString(&draft, "MAIL:encoding", encodingItem->Label()); + WriteAttrString(&draft, "MAIL:encoding", + fHeaderView->fEncodingMenu->FindMarked()->Label()); // Add the draft attribute for indexing uint32 draftAttr = true; @@ -2785,7 +2797,21 @@ fHeaderView->fCc->SetText(string.String()); if (node.ReadAttrString(B_MAIL_ATTR_BCC, &string) == B_OK) fHeaderView->fBcc->SetText(string.String()); - + + // Restore account + if (node.ReadAttrString(B_MAIL_ATTR_ACCOUNT, &string) == B_OK) { + BMenuItem* accountItem = fHeaderView->fAccountMenu->FindItem(string.String()); + if (accountItem != NULL) + accountItem->SetMarked(true); + } + + // Restore encoding + if (node.ReadAttrString("MAIL:encoding", &string) == B_OK) { + BMenuItem* encodingItem = fHeaderView->fEncodingMenu->FindItem(string.String()); + if (encodingItem != NULL) + encodingItem->SetMarked(true); + } + // Restore attachments if (node.ReadAttrString("MAIL:attachments", &string) == B_OK) { BMessage msg(REFS_RECEIVED);