--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/mmsui/viewersrc/MmsViewerChangeSlideOperation.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,299 @@
+/*
+* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* CMmsViewerChangeSlideOperation, Storage for single attachment in presentation.
+*
+*/
+
+
+
+// ========== INCLUDE FILES ================================
+
+#include <txtrich.h>
+#include <eikrted.h>
+
+#include <MuiuMsvUiServiceUtilities.h>
+
+#include <MsgEditorView.h>
+
+#include <mmsclient.h>
+#include <mmsconst.h>
+#include "MmsMtmConst.h" // File logger
+
+#include <MmsViewer.rsg>
+
+#include <unidatamodel.h>
+#include <unidatautils.h>
+#include <unismilmodel.h>
+#include <unitextobject.h>
+
+#include "MmsViewerHeader.h"
+#include "MmsViewerChangeSlideOperation.h"
+
+// ========== EXTERNAL DATA STRUCTURES =====================
+
+// ========== EXTERNAL FUNCTION PROTOTYPES =================
+
+// ========== CONSTANTS ====================================
+
+// ========== MACROS =======================================
+
+// ========== LOCAL CONSTANTS AND MACROS ===================
+
+// ========== MODULE DATA STRUCTURES =======================
+
+// ========== LOCAL FUNCTION PROTOTYPES ====================
+
+// ========== LOCAL FUNCTIONS ==============================
+
+// ========== MEMBER FUNCTIONS =============================
+
+// ---------------------------------------------------------
+// CMmsViewerChangeSlideOperation::CMmsViewerChangeSlideOperation
+//
+// Constructor.
+// ---------------------------------------------------------
+//
+CMmsViewerChangeSlideOperation::CMmsViewerChangeSlideOperation(
+ MMmsViewerOperationObserver& aOperationObserver,
+ CMmsViewerDocument& aDocument,
+ CMmsViewerHeader& aHeader,
+ CUniSlideLoader& aSlideLoader,
+ CMsgEditorView& aView,
+ RFs& aFs ) :
+ CMmsViewerOperation( aOperationObserver, aDocument, aFs ),
+ iHeader( aHeader ),
+ iSlideLoader( aSlideLoader ),
+ iView( aView )
+ {
+ }
+
+
+// ---------------------------------------------------------
+// CMmsViewerChangeSlideOperation::CMmsViewerChangeSlideOperation
+//
+// Destructor.
+// ---------------------------------------------------------
+//
+CMmsViewerChangeSlideOperation::~CMmsViewerChangeSlideOperation()
+ {
+ Cancel();
+ }
+
+// ---------------------------------------------------------
+// CMmsViewerChangeSlideOperation::ChangeSlide
+//
+// ChangeSlideL
+// ---------------------------------------------------------
+//
+void CMmsViewerChangeSlideOperation::ChangeSlide(
+ TInt aNextNum )
+ {
+ iNextNum = aNextNum;
+ iNextState = EMmsViewerChangeSlideResetView;
+ CompleteSelf( KErrNone );
+ }
+
+// ---------------------------------------------------------
+// CMmsViewerChangeSlideOperation::ReLoadControlL
+// ---------------------------------------------------------
+//
+void CMmsViewerChangeSlideOperation::ReLoadControlL( CMsgMediaControl* aControl, CUniObject* aObject )
+ {
+ // this is not async operation
+ iSlideLoader.ReLoadControlL( aControl, aObject );
+ iNextState = EMmsViewerChangeSlideEnd;
+ CompleteSelf( KErrNone );
+ }
+
+
+// ---------------------------------------------------------
+// CMmsViewerChangeSlideOperation::DoChangeSlideStepL
+// ---------------------------------------------------------
+//
+void CMmsViewerChangeSlideOperation::DoChangeSlideStepL()
+ {
+ switch ( iNextState )
+ {
+ case EMmsViewerChangeSlideResetView:
+ {
+ // Have to do this first since we cannot
+ // have to video clips open at the same time.
+ LOGTEXT(_L8("CMmsViewerChangeSlideOperation::DoChangeSlideStepL DoResetViewL") );
+ DoResetViewL();
+ break;
+ }
+ case EMmsViewerChangeSlideLoad:
+ {
+ LOGTEXT(_L8("CMmsViewerChangeSlideOperation::DoChangeSlideStepL DoLoadL()") );
+ DoLoadL();
+ break;
+ }
+ case EMmsViewerChangeSlideFinalize:
+ {
+ LOGTEXT(_L8("CMmsViewerChangeSlideOperation::DoChangeSlideStepL DoLoadL()") );
+ DoFinalizeL();
+ break;
+ }
+ case EMmsViewerChangeSlideEnd:
+ {
+ LOGTEXT(_L8("CMmsViewerChangeSlideOperation::DoChangeSlideStepL EMmsViewerChangeSlideEnd") );
+ iObserver.ViewerOperationEvent(
+ EMmsViewerOperationChangeSlide,
+ EMmsViewerOperationComplete,
+ KErrNone );
+ break;
+ }
+ default:
+ {
+ // Shouldn't be here!
+ iObserver.ViewerOperationEvent(
+ EMmsViewerOperationChangeSlide,
+ EMmsViewerOperationError,
+ KErrUnknown );
+ break;
+ }
+ }
+ }
+
+// ---------------------------------------------------------
+// CMmsViewerChangeSlideOperation::DoResetViewL
+// ---------------------------------------------------------
+void CMmsViewerChangeSlideOperation::DoResetViewL()
+ {
+ iSlideLoader.ResetViewL();
+ iNextState = EMmsViewerChangeSlideLoad;
+ CompleteSelf( KErrNone );
+ }
+
+// ---------------------------------------------------------
+// CMmsViewerChangeSlideOperation::DoLoadL
+// ---------------------------------------------------------
+void CMmsViewerChangeSlideOperation::DoLoadL()
+ {
+ iNextState = EMmsViewerChangeSlideFinalize;
+ iSlideLoader.LoadSlideL( *this, iNextNum );
+ SetActiveNoCompleteSelf( );
+ }
+
+// ---------------------------------------------------------
+// CMmsViewerChangeSlideOperation::DoFinalizeL
+// ---------------------------------------------------------
+void CMmsViewerChangeSlideOperation::DoFinalizeL()
+ {
+ CUniObject* obj = iDocument.SmilModel()->GetObject( iDocument.CurrentSlide(), EUniRegionText );
+ if ( obj &&
+ ( obj->MediaType() == EMsgMediaText ||
+ obj->MediaType() == EMsgMediaXhtml ) )
+ {
+ static_cast<CUniTextObject*>( obj )->SetText( NULL );
+ }
+
+ iView.SetCurrentPart( iNextNum );
+ iDocument.SetCurrentSlide( iNextNum );
+
+ if ( iNextNum )
+ {
+ // without this change Japanese pictographs in subject field
+ // appear on slides 2,...
+ iHeader.RemoveSubjectContentL();
+ iHeader.RemoveFromViewL();
+ }
+ else
+ {
+ // restore mms subject, as it has been removed, if changing slide 2->1.
+ iHeader.RestoreSubjectContentL();
+ iHeader.AddToViewL();
+ }
+
+ iNextState = EMmsViewerChangeSlideEnd;
+ CompleteSelf( KErrNone );
+ }
+
+// ---------------------------------------------------------
+// CMmsViewerChangeSlideOperation::DoCancel
+//
+// ---------------------------------------------------------
+//
+void CMmsViewerChangeSlideOperation::DoCancel()
+ {
+ LOGTEXT(_L8("CMmsViewerChangeSlideOperation::DoCancel") );
+ iSlideLoader.Cancel();
+ iObserver.ViewerOperationEvent(
+ EMmsViewerOperationChangeSlide,
+ EMmsViewerOperationCancel,
+ KErrNone );
+ CompleteActiveSelf( KErrCancel );
+ }
+
+// ---------------------------------------------------------
+// CMmsViewerChangeSlideOperation::RunL
+//
+// ---------------------------------------------------------
+//
+void CMmsViewerChangeSlideOperation::RunL()
+ {
+ if ( iStatus.Int() == KErrCancel )
+ {
+ iObserver.ViewerOperationEvent(
+ EMmsViewerOperationChangeSlide,
+ EMmsViewerOperationCancel,
+ iStatus.Int() );
+ return;
+ }
+
+ if ( iStatus.Int() != KErrNone )
+ {
+ LOGTEXT2(_L("CMmsViewerChangeSlideOperation::RunL iStatus=%d"), iStatus.Int() );
+ iObserver.ViewerOperationEvent(
+ EMmsViewerOperationChangeSlide,
+ EMmsViewerOperationError,
+ iStatus.Int() );
+ }
+ else
+ {
+ DoChangeSlideStepL();
+ }
+ }
+
+// ---------------------------------------------------------
+// CMmsViewerChangeSlideOperation::RunError
+//
+// ---------------------------------------------------------
+//
+TInt CMmsViewerChangeSlideOperation::RunError( TInt aError )
+ {
+ LOGTEXT2(_L("CMmsViewerChangeSlideOperation::RunError aError"), aError );
+ if ( aError == KLeaveExit )
+ {
+ return KLeaveExit;
+ }
+ iObserver.ViewerOperationEvent(
+ EMmsViewerOperationChangeSlide,
+ EMmsViewerOperationError,
+ aError );
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------
+// UiSlideEvent
+// ---------------------------------------------------------
+void CMmsViewerChangeSlideOperation::SlideLoadReady( TInt aError )
+ {
+ LOGTEXT2(_L("CMmsViewerChangeSlideOperation::SlideLoadReady aError %d"), aError );
+ CompleteActiveSelf( aError );
+ }
+
+
+// EOF