emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp
branchRCL_3
changeset 19 b13141f05c3d
parent 17 8592a65ad3fb
child 24 b5fbb9b25d57
--- a/emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp	Wed Apr 14 15:42:15 2010 +0300
+++ b/emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp	Tue Apr 27 16:20:14 2010 +0300
@@ -135,6 +135,7 @@
     iEmbeddedMessages = new (ELeave) CStack<CFSMailMessage, EFalse>();
     iNextOrPrevMessageSelected = EFalse; 
     iForwardingMessage = EFalse;
+    iMessageIsDeleted = EFalse;
     }
 
 // -----------------------------------------------------------------------------
@@ -757,7 +758,10 @@
             }
         case EFsEmailUiTbCmdDelete:
             {
-            HandleCommandL(EFsEmailUiCmdActionsDelete);
+            iAsyncCallback->Cancel();
+            iAsyncCallback->Set( TCallBack( DeleteMail, this ) );
+            iAsyncCallback->SetPriority( CActive::EPriorityHigh );
+            iAsyncCallback->CallBack();
             break;
             }
         case EFsEmailUiTbCmdReplyAll:
@@ -911,12 +915,15 @@
     // In usual case we use the base view implementation
     else
         {
-        
         iMessage = NULL;
-        
         CancelFetchings();
-             
         CFsEmailUiViewBase::NavigateBackL();
+
+        if ( iContainer )
+            {
+            HideContainer();
+            iContainer->ResetContent();
+            }
         }
     }
 
@@ -1169,7 +1176,16 @@
         }
     }
 
-void CFsEmailUiHtmlViewerView::DeleteMailL(TBool aSilentDelete)
+TInt CFsEmailUiHtmlViewerView::DeleteMail( TAny* aSelf )
+    {
+    FUNC_LOG;
+    CFsEmailUiHtmlViewerView* self =
+        static_cast<CFsEmailUiHtmlViewerView*>( aSelf );
+    TRAP_IGNORE( self->DeleteMailL( EFalse ) );
+    return KErrNone;
+    }
+
+void CFsEmailUiHtmlViewerView::DeleteMailL( TBool aSilentDelete )
     {
     FUNC_LOG;
 
@@ -1228,7 +1244,11 @@
             //Open the previous message or navigate back to list viewer
             if ( available )
                 {
-                iAppUi.MoveToPreviousMsgAfterDeleteL( prevMsgId );              
+				iMessageIsDeleted = ETrue;
+                TRAPD( err, iAppUi.MoveToPreviousMsgAfterDeleteL( prevMsgId ) );
+                iMessageIsDeleted = EFalse;
+                
+                User::LeaveIfError( err );
                 }   
             else
                 {
@@ -1264,7 +1284,7 @@
                 {                
                 cont = EFalse;
                 ChangeMskCommandL( R_FSE_QTN_MSK_EMPTY );
-                if(aEvent == TFSEventMailDeleted)
+                if( aEvent == TFSEventMailDeleted  && !iMessageIsDeleted )
                     {   //Delete event came from server; close the viewer.
                 	HandleCommandL( EAknSoftkeyBack );
                 	// The message we are viewing was deleted => stop here
@@ -1962,7 +1982,10 @@
             iAppUi.MoveToNextMsgL( currentMsgId, nextMsgId );
             // Next message is displayed in this view through doactivate, because view is re-activate by mail list
 
-            RestoreZoomLevelL();
+            if ( iContainer )
+                {
+			    RestoreZoomLevelL();
+                }
             }
         }
     }
@@ -2011,7 +2034,10 @@
             iAppUi.MoveToPreviousMsgL( currentMsgId, prevMsgId );
             // Previous message is displayed in this view through doactivate, because view is re-activate by mail list
 
-            RestoreZoomLevelL();
+            if ( iContainer )
+                {
+                RestoreZoomLevelL();
+                }
             }
         }
     }
@@ -2062,6 +2088,7 @@
                     iMoveDestinationFolder = aSelectedFolderId;
                     iAsyncCallback->Cancel(); // cancel any outstanding callback just to be safe
                     iAsyncCallback->Set( TCallBack( MoveToFolderAndExitL, this ) );
+                    iAsyncCallback->SetPriority( CActive::EPriorityLow );
                     iAsyncCallback->CallBack();
                     }
                     break;