diff -r a3a1ae9acec6 -r da5135c61bad emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp --- a/emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp Mon Mar 15 12:39:10 2010 +0200 +++ b/emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp Wed Mar 31 21:08:33 2010 +0300 @@ -252,13 +252,6 @@ params.iMailboxId = iAppUi.GetActiveMailboxId(); params.iMsgId = iMessage->GetMessageId(); params.iActivatedExternally = EFalse; - - if ( iContainer ) - { - HideContainer(); - iContainer->ResetContent(); - } - iAppUi.LaunchEditorL( KEditorCmdReply, params ); } } @@ -272,13 +265,6 @@ params.iMailboxId = iAppUi.GetActiveMailboxId(); params.iMsgId = iMessage->GetMessageId(); params.iActivatedExternally = EFalse; - - if ( iContainer ) - { - HideContainer(); - iContainer->ResetContent(); - } - iAppUi.LaunchEditorL( KEditorCmdReplyAll, params ); } } @@ -292,13 +278,6 @@ params.iMailboxId = iAppUi.GetActiveMailboxId(); params.iMsgId = iMessage->GetMessageId(); params.iActivatedExternally = EFalse; - - if ( iContainer ) - { - HideContainer(); - iContainer->ResetContent(); - } - iForwardingMessage = ETrue; iAppUi.LaunchEditorL( KEditorCmdForward, params ); } @@ -338,14 +317,18 @@ break; case EFsEmailUiCmdOpenAttachmentList: { - TAttachmentListActivationData params; - params.iMailBoxId = iMessage->GetMailBoxId(); - params.iFolderId = iMessage->GetFolderId(); - params.iMessageId = iMessage->GetMessageId(); - // use package buffer to pass the params - TPckgBuf buf( params ); - TUid emptyCustomMessageId = { 0 }; - iAppUi.EnterFsEmailViewL( AttachmentMngrViewId, emptyCustomMessageId, buf ); + if( iMessage ) + { + TAttachmentListActivationData params; + params.iMailBoxId = iMessage->GetMailBoxId(); + params.iFolderId = iMessage->GetFolderId(); + params.iMessageId = iMessage->GetMessageId(); + + // use package buffer to pass the params + TPckgBuf buf( params ); + TUid emptyCustomMessageId = { 0 }; + iAppUi.EnterFsEmailViewL( AttachmentMngrViewId, emptyCustomMessageId, buf ); + } } break; @@ -529,6 +512,7 @@ if ( !iMessage && iContainer ) { + iContainer->ResetContent(); iAppUi.RemoveFromStack( iContainer ); iContainer->CancelFetch(); iContainer->ClearCacheAndLoadEmptyContent(); @@ -619,7 +603,7 @@ User::Leave( KErrNotFound ); } - if ( aCustomMessageId != KStartViewerReturnToPreviousMsg ) + if ( aCustomMessageId != KStartViewerReturnToPreviousMsg && iMessage ) { delete iMailBox; iMailBox = NULL; iMailBox = iAppUi.GetMailClient()->GetMailBoxByUidL( iMessage->GetMailBoxId() ); @@ -743,6 +727,12 @@ iNextOrPrevMessageSelected = EFalse; iForwardingMessage = EFalse; + //update rect only if it has changed from previous time. + if ( iContainer->Rect() != ContainerRect() ) + { + iContainer->SetRect( ContainerRect() ); + } + TIMESTAMP( "Html viewer opened" ); } @@ -839,7 +829,11 @@ iContainer->ResetContent(ETrue); iAppUi.RemoveFromStack(iContainer); iContainer->CancelFetch(); - iContainer->ClearCacheAndLoadEmptyContent(); + if ( !iAppUi.AppUiExitOngoing() ) + { + // if app ui is exiting, a call to this function causes a KERN-EXEC 3 crash in iBrCtlInterface->ClearCache(); + iContainer->ClearCacheAndLoadEmptyContent(); + } } Toolbar()->SetToolbarObserver( this ); iMessage = NULL; @@ -875,6 +869,7 @@ if( iContainer ) { iContainer->StopObserving(); + iContainer->ResetContent(); } CFSMailMessage* tmp = PopMessage(); if( tmp ) @@ -1038,56 +1033,6 @@ { DynInitZoomMenuL( aMenuPane ); } - else if ( aResourceId == R_FSEMAILUI_MAILVIEWER_SUBMENU_MORE ) - { - if( iActivationData.iEmbeddedMessageMode ) - { - aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkAsRead, ETrue ); - aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkAsUnread, ETrue ); - aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsMoveMessage, ETrue ); - aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsFlag, ETrue ); - } - else - { - CFSMailFolder* currentFolder = NULL; - if ( iMessage ) - { - TRAP_IGNORE( currentFolder = - iAppUi.GetMailClient()->GetFolderByUidL( - iMessage->GetMailBoxId(), - iMessage->GetFolderId() ) ); - } - - if ( currentFolder && - currentFolder->GetFolderType() != EFSOutbox ) - { - // Mark as read/unread options - TBool messageIsRead( iMessage->IsFlagSet( EFSMsgFlag_Read ) ); - aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkAsRead, messageIsRead ); - aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkAsUnread, !messageIsRead ); - - // Move to another folder option - aMenuPane->SetItemDimmed( - EFsEmailUiCmdActionsMoveMessage, - !iAppUi.GetActiveMailbox()->HasCapability( EFSMBoxCapaMoveToFolder ) ); - - // Follow-up flag option - aMenuPane->SetItemDimmed( - EFsEmailUiCmdActionsFlag, - !( iMailBox && TFsEmailUiUtility::IsFollowUpSupported( *iMailBox ) ) ); - } - else - { - // In case of outbox, all these are dimmed - aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkAsUnread, ETrue ); - aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkAsRead, ETrue ); - aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsMoveMessage, ETrue ); - aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsFlag, ETrue ); - } - delete currentFolder; - } - aMenuPane->SetItemDimmed( EFsEmailUiCmdMessageDetails, ETrue ); - } iAppUi.ShortcutBinding().AppendShortcutHintsL( *aMenuPane, CFSEmailUiShortcutBinding::EContextHtmlViewer ); } @@ -1107,7 +1052,7 @@ ///any init required? UpdateMessagePtrL( aMailboxId, aFolderId, aMessageId ); - if ( aCommandId == EFsEmailUiCmdCalRemoveFromCalendar ) + if ( aCommandId == EFsEmailUiCmdCalRemoveFromCalendar && iMessage ) { iAppUi.MrViewerInstanceL()->RemoveMeetingRequestFromCalendarL( *iMessage, *this ); @@ -1127,8 +1072,11 @@ { respondStatus = EESMRAttendeeStatusDecline; } - iAppUi.MrViewerInstanceL()->ResponseToMeetingRequestL( - respondStatus, *iMessage, *this ); + if( iMessage ) + { + iAppUi.MrViewerInstanceL()->ResponseToMeetingRequestL( + respondStatus, *iMessage, *this ); + } } } @@ -1324,12 +1272,29 @@ } } - if (iContainer && iMessage && aMailbox.Id() == iAppUi.GetActiveMailboxId().Id() && - ( aEvent == TFSEventNewMail || - aEvent == TFSEventMailDeleted || - aEvent == TFSEventMailChanged ) ) + if ( iContainer && iMessage && aMailbox.Id() == iAppUi.GetActiveMailboxId().Id() ) { - iContainer->MailListModelUpdatedL(); + if ( aEvent == TFSEventNewMail || + aEvent == TFSEventMailDeleted || + aEvent == TFSEventMailChanged ) + { + iContainer->MailListModelUpdatedL(); + } + + // DSW fix for FAMZ-82YJQ2 + // Dismiss the download status dialog after sync has been finished or cancelled + + if ( aEvent == TFSEventMailboxSyncStateChanged ) + { + TSSMailSyncState* newSyncState = static_cast( aParam1 ); + if ( newSyncState && ( *newSyncState == FinishedSuccessfully || + *newSyncState == SyncCancelled || + *newSyncState == Idle || + *newSyncState == SyncError )) + { + iContainer->HideDownloadStatus(); + } + } } } @@ -2187,7 +2152,7 @@ { FUNC_LOG; TBool retVal = ETrue; - if( aFetchedContentType == EMessagePlainTextBodyPart ) + if( aFetchedContentType == EMessagePlainTextBodyPart && iMessage ) { CFSMailMessagePart* textPart = iMessage->PlainTextBodyPartL(); if( textPart ) @@ -2200,7 +2165,7 @@ } delete textPart; } - else if( aFetchedContentType == EMessageHtmlBodyPart ) + else if( aFetchedContentType == EMessageHtmlBodyPart && iMessage ) { CFSMailMessagePart* htmlPart = iMessage->HtmlBodyPartL(); if( htmlPart ) @@ -2213,7 +2178,7 @@ } delete htmlPart; } - else if( aFetchedContentType == EMessageStructure ) + else if( aFetchedContentType == EMessageStructure && iMessage ) { retVal = MessageStructureKnown( *iMessage ); } @@ -2519,8 +2484,11 @@ iWaitDialog->SetCallback(this); iDialogNotDismissed = ETrue; iWaitDialog->ExecuteLD(R_FSE_FETCHING_WAIT_DIALOG); - */ + */ + if( iMessage ) + { StartFetchingMessagePartL( *iMessage, iStartAsyncFetchType ); + } // iFetchingAlready = ETrue; // } @@ -3190,58 +3158,65 @@ */ void CFsEmailUiHtmlViewerView::StartFetchingMessageL() { - CFSMailMessagePart* htmlBodyPart = iMessage->HtmlBodyPartL(); - TFetchedType type; - if( htmlBodyPart ) - { - type = EMessageHtmlBodyPart; - } - else - { - type = EMessagePlainTextBodyPart; - } - - if ( !MessagePartFullyFetchedL( type )) - { - iAsyncProcessComplete = EFalse; - iStartAsyncFetchType = type; - //check to make sure we don't kick off fetch twice for the cases where bodypart - //not found(OZ) - if(iMessage && !GetAsyncFetchStatus()) + if( iMessage ) + { + CFSMailMessagePart* htmlBodyPart = iMessage->HtmlBodyPartL(); + TFetchedType type; + if( htmlBodyPart ) + { + type = EMessageHtmlBodyPart; + } + else { - StartFetchingMessagePartL( *iMessage, type ); + type = EMessagePlainTextBodyPart; + } + + + if ( !MessagePartFullyFetchedL( type )) + { + iAsyncProcessComplete = EFalse; + iStartAsyncFetchType = type; + //check to make sure we don't kick off fetch twice for the cases where bodypart + //not found(OZ) + if(iMessage && !GetAsyncFetchStatus()) + { + StartFetchingMessagePartL( *iMessage, type ); + } } } } void CFsEmailUiHtmlViewerView::CheckMessageBodyL( CFSMailMessage& /*aMessage*/, TBool& aMessageBodyStructurePresent, TBool& aMessageBodyContentPresent) { - CFSMailMessagePart* bodyPart = iMessage->HtmlBodyPartL(); - if ( !bodyPart ) + if( iMessage ) { - bodyPart = iMessage->PlainTextBodyPartL(); - } + CFSMailMessagePart* bodyPart = iMessage->HtmlBodyPartL(); + if ( !bodyPart ) + { + bodyPart = iMessage->PlainTextBodyPartL(); + } + + if ( bodyPart ) + { + aMessageBodyStructurePresent = ETrue; + CleanupStack::PushL( bodyPart ); - if ( bodyPart ) - { - aMessageBodyStructurePresent = ETrue; - CleanupStack::PushL( bodyPart ); - - if ( bodyPart->FetchedContentSize() == 0 && bodyPart->ContentSize() != 0 ) - { - aMessageBodyContentPresent = EFalse; + if ( bodyPart->FetchedContentSize() == 0 && bodyPart->ContentSize() != 0 ) + { + aMessageBodyContentPresent = EFalse; + } + else + { + aMessageBodyContentPresent = ETrue; + } + + CleanupStack::PopAndDestroy( bodyPart ); } else { - aMessageBodyContentPresent = ETrue; + aMessageBodyStructurePresent = EFalse; + aMessageBodyContentPresent = EFalse; } - - CleanupStack::PopAndDestroy( bodyPart ); - } - else - { - aMessageBodyStructurePresent = EFalse; - aMessageBodyContentPresent = EFalse; } }