--- 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<TInt>* 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