Update of /cvsroot/mahogany/M/src/gui
In directory usw-pr-cvs1:/tmp/cvs-serv18437/src/gui

Modified Files:
        wxComposeView.cpp 
Log Message:
1. added MailFolder::SaveMEssageAsMBOX()
2. made resuming interrupted messages work


Index: wxComposeView.cpp
===================================================================
RCS file: /cvsroot/mahogany/M/src/gui/wxComposeView.cpp,v
retrieving revision 1.260
retrieving revision 1.261
diff -b -u -2 -r1.260 -r1.261
--- wxComposeView.cpp   18 Mar 2002 22:37:42 -0000      1.260
+++ wxComposeView.cpp   19 Mar 2002 01:43:44 -0000      1.261
@@ -3309,4 +3309,9 @@
 }
 
+void wxComposeView::SetDirty()
+{
+   m_isModified = true;
+}
+
 bool wxComposeView::IsModified() const
 {
@@ -3586,6 +3591,14 @@
    }
 
-   // false means don't append, truncate
-   if ( !msg->WriteToFile(m_filenameAutoSave, false) )
+   String contents;
+   if ( !msg->WriteToString(contents) )
+   {
+      // this is completely unexpected
+      FAIL_MSG( "Failed to get the message text?" );
+
+      return false;
+   }
+
+   if ( !MailFolder::SaveMessageAsMBOX(m_filenameAutoSave, contents) )
    {
       // TODO: disable autosaving? we risk to give many such messages if
@@ -3643,5 +3656,12 @@
       filename = name + filename;
 
-      MFolder_obj folder(MFolder::CreateTemp("", MF_FILE, 0, filename));
+      MFolder_obj folder(MFolder::CreateTemp
+                         (
+                           String::Format(_("Interrupted message %d"),
+                                          nResumed + 1),
+                           MF_FILE,
+                           MF_FLAGS_TEMPORARY,
+                           filename
+                         ));
 
       cont = dir.GetNext(&filename);
@@ -3654,16 +3674,26 @@
             // FIXME: assume UID of the first message in a new MBX folder is
             //        always 1
-            Message_obj msg = mf->GetMessage(1);
+            Message *msg = mf->GetMessage(1);
             if ( msg )
             {
-               if ( EditMessage(mApplication->GetProfile(), msg.operator->()) )
+               // EditMessage takes ownership of the pointer
+               Composer *composer = EditMessage(mApplication->GetProfile(), msg);
+               if ( composer )
                {
                   // ok!
                   nResumed++;
 
+                  // mark the message as dirty to prevent the window from being
+                  // closed without confirmation (thus loosing the message we
+                  // had saved!)
+                  composer->SetDirty();
+
                   continue;
                }
             }
          }
+
+         // don't delete the file if we failed to restore the message!
+         folder->ResetFlags(MF_FLAGS_TEMPORARY);
       }
 


_______________________________________________
Mahogany-cvsupdates mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/mahogany-cvsupdates

Reply via email to