diff -r 52d61119153d -r e00582ce7ecd mobilemessaging/unieditor/application/src/UniEditorAppUi.cpp --- a/mobilemessaging/unieditor/application/src/UniEditorAppUi.cpp Wed Apr 14 15:53:21 2010 +0300 +++ b/mobilemessaging/unieditor/application/src/UniEditorAppUi.cpp Tue Apr 27 16:33:37 2010 +0300 @@ -2968,19 +2968,31 @@ resourceId = R_QTN_WAIT_MSG_SAVED_OUTBOX; } - iSendOperation = CUniEditorSendOperation::NewL( *this, - *Document(), - *iHeader, - *plugin, - *iView, - FsSession() ); - ActivateInputBlockerL( iSendOperation ); - - ShowWaitNoteL( resourceId ); - - iEditorFlags |= EEditorClosing; - - iSendOperation->Send(); + if (IsObjectsPathValidL()) + { + iSendOperation = CUniEditorSendOperation::NewL( *this, + *Document(), + *iHeader, + *plugin, + *iView, + FsSession() ); + ActivateInputBlockerL(iSendOperation); + + ShowWaitNoteL(resourceId); + + iEditorFlags |= EEditorClosing; + + iSendOperation->Send(); + } + else + { + if (ShowConfirmationQueryL(R_UNIEDITOR_QUEST_CLOSE_OOD)) + { + // Exit without saving. + Exit(EAknSoftkeyClose); + } + //else nothing. + } } @@ -3017,7 +3029,7 @@ } else if ( ( Document()->Modified() || Document()->PrevSaveType() < EClosingSave ) && - CanSaveMessageL() ) + CanSaveMessageL()) { // Needs saving if ( IsForeground() ) @@ -3060,14 +3072,24 @@ { iEditorFlags |= ERunAppShutterAtExit; } - - if ( iEditorFlags & ELaunchSuccessful && - Document()->MediaAvailable() ) - { - DoMsgSaveExitL(); - } - - Exit(); + if (IsObjectsPathValidL()) + { + if (iEditorFlags & ELaunchSuccessful && Document()->MediaAvailable()) + { + DoMsgSaveExitL(); + } + + Exit(); + } + else + { + if (ShowConfirmationQueryL(R_UNIEDITOR_QUEST_CLOSE_OOD)) + { + // Exit without saving. + Exit(EAknSoftkeyClose); + } + } + } // --------------------------------------------------------- @@ -3102,7 +3124,7 @@ // Message has data if ( Document()->Modified() || Document()->PrevSaveType() < EClosingSave ) { - if ( CanSaveMessageL() ) + if ( CanSaveMessageL() && IsObjectsPathValidL()) { TInt resId = Document()->Saved() ? R_QTN_UNI_WAIT_SAVING_MESSAGE : R_QTN_UNI_WAIT_SAVING_MESSAGE_NEW; @@ -9857,6 +9879,28 @@ iTapConsumed = ETrue; } } - } + } + +// --------------------------------------------------------- +// CUniEditorAppUi::IsObjectPathValidL +// Checks whether all inserted object's path are valid +// message. +// --------------------------------------------------------- +// +TBool CUniEditorAppUi::IsObjectsPathValidL() const + { + TBool bCanSave = ETrue; + if ( Document()->DataModel()->SmilType() == EMmsSmil ) + { + bCanSave = Document()->DataModel()->ObjectList().IsListValid(); + + if(bCanSave) + { + bCanSave = Document()->DataModel()->AttachmentList().IsListValid(); + } + } + return bCanSave; + } + // End of file