mobilemessaging/mmsui/viewersrc/MmsViewerChangeSlideOperation.cpp
changeset 0 72b543305e3a
--- /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