diff -r 1367103c24e2 -r 696bfeff199e mobilemessaging/unieditor/application/src/UniEditorLaunchOperation.cpp --- a/mobilemessaging/unieditor/application/src/UniEditorLaunchOperation.cpp Mon Jun 21 15:36:19 2010 +0300 +++ b/mobilemessaging/unieditor/application/src/UniEditorLaunchOperation.cpp Thu Jul 15 18:34:37 2010 +0300 @@ -115,7 +115,8 @@ CUniEditorOperation( aOperationObserver, aDocument, aFs, EUniEditorOperationLaunch ), iControlObserver( aControlObserver ), iView( aView ), - iAppUi( aAppUi ) + iAppUi( aAppUi ), + iOptimizedFlow(EFalse) { } @@ -401,9 +402,13 @@ // void CUniEditorLaunchOperation::DoPrepareHeaderL() { - // Header is always drawn and populated - iHeader = CUniEditorHeader::NewL( iDocument.Mtm(), iDocument, iView, iFs ); - CompleteSelf( KErrNone ); + if(!iHeader) + { + // Header is always drawn and populated + iHeader = CUniEditorHeader::NewL( iDocument.Mtm(), iDocument, iView, iFs ); + } + if(!iOptimizedFlow) + CompleteSelf( KErrNone ); } // --------------------------------------------------------- @@ -412,21 +417,28 @@ // void CUniEditorLaunchOperation::DoPrepareBodyL() { - iSlideLoader = CUniSlideLoader::NewL( - iControlObserver, - *iDocument.DataModel(), - iView, - EUniControlEditorMode ); - + if(!iSlideLoader) + { + iSlideLoader = CUniSlideLoader::NewL( + iControlObserver, + *iDocument.DataModel(), + iView, + EUniControlEditorMode ); + } + if ( iDocument.DataModel()->SmilType() == EMmsSmil ) { - if ( !iDocument.DataModel()->SmilModel().SlideCount() ) + if(!iOptimizedFlow) { - iDocument.DataModel()->SmilModel().AddSlideL(); + if ( !iDocument.DataModel()->SmilModel().SlideCount() ) + { + iDocument.DataModel()->SmilModel().AddSlideL(); + } + + iSlideLoader->LoadSlideL( *this, 0 ); + + SetPending(); } - - iSlideLoader->LoadSlideL( *this, 0 ); - SetPending(); } else { @@ -608,10 +620,25 @@ // --------------------------------------------------------- // void CUniEditorLaunchOperation::HandleOperationEvent( TUniEditorOperationType aOperation, - TUniEditorOperationEvent /*aEvent*/ ) + TUniEditorOperationEvent aEvent ) { if ( aOperation == EUniEditorOperationSendUi ) { + iOptimizedFlow = EFalse; + if(aEvent == EUniEditorOperationPartialComplete) + { + iOptimizedFlow = iSendUiOperation->IsOptimizedFlagSet(); + if(iOptimizedFlow) + { + DoPrepareHeaderL(); + DoPrepareBodyL(); + iObserver.EditorOperationEvent( + EUniEditorOperationLaunch, + EUniEditorOperationComplete ); + iOptimizedFlow = EFalse; + } + return; + } CArrayFixFlat* errors = iSendUiOperation->GetErrors(); for ( TInt i = 0; i < errors->Count(); i++ ) { @@ -654,6 +681,14 @@ return parseResult; } - + +// --------------------------------------------------------- +// CUniEditorLaunchOperation::IsOptimizedFlagSet +// --------------------------------------------------------- +// +TBool CUniEditorLaunchOperation::IsOptimizedFlagSet() + { + return iOptimizedFlow; + } // EOF