--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/mmsui/viewersrc/MmsViewerLaunchOperation.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,367 @@
+/*
+* 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:
+* CMmsViewerLaunchOperation, Storage for single attachment in presentation.
+*
+*/
+
+
+
+// ========== INCLUDE FILES ================================
+
+#include <AknsConstants.h>
+#include <data_caging_path_literals.hrh>
+#include <MsgEditorView.h> // for CMsgEditorView
+#include <MsgBodyControl.h>
+#include <MuiuMsgEditorLauncher.h>
+
+#include <mmsconst.h>
+#include <mmsclient.h>
+#include <MmsViewer.rsg>
+
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <AknUtils.h>
+#include <MsgEditorCommon.h>
+#include <MsgMediaInfo.h>
+#include <msgimagecontrol.h>
+#include <unislideloader.h>
+#include "UniMmsViewerDocument.h"
+
+#include <mmsui.mbg>
+#include "MmsMtmConst.h" // File logger
+
+#include "MmsMtmUi.h"
+#include "MmsViewerHeader.h"
+#include "MmsViewerLaunchOperation.h"
+
+_LIT( KMmsUiMbmFile, "mmsui.mbm" );
+
+// ========== EXTERNAL DATA STRUCTURES =====================
+
+// ========== EXTERNAL FUNCTION PROTOTYPES =================
+
+// ========== CONSTANTS ====================================
+
+// ========== MACROS =======================================
+
+// ========== LOCAL CONSTANTS AND MACROS ===================
+
+// ========== MODULE DATA STRUCTURES =======================
+
+// ========== LOCAL FUNCTION PROTOTYPES ====================
+
+// ========== LOCAL FUNCTIONS ==============================
+
+// ========== MEMBER FUNCTIONS =============================
+
+// ---------------------------------------------------------
+// CMmsViewerLaunchOperation::CMmsViewerLaunchOperation
+//
+// Constructor.
+// ---------------------------------------------------------
+//
+CMmsViewerLaunchOperation::CMmsViewerLaunchOperation(
+ MUniObjectObserver* aUniObjectObserver,
+ MMsgAsyncControlObserver& aControlObserver,
+ MMmsViewerOperationObserver& aOperationObserver,
+ CMmsViewerDocument& aDocument,
+ CMsgEditorView& aView,
+ RFs& aFs ) :
+ CMmsViewerOperation( aOperationObserver, aDocument, aFs ),
+ iControlObserver( aControlObserver ),
+ iView( aView ),
+ iUniObjectObserver( aUniObjectObserver )
+ {
+ }
+
+
+// ---------------------------------------------------------
+// CMmsViewerLaunchOperation::CMmsViewerLaunchOperation
+//
+// Destructor.
+// ---------------------------------------------------------
+//
+CMmsViewerLaunchOperation::~CMmsViewerLaunchOperation()
+ {
+#ifdef CANCEL_TEST_CODE
+ CancelCancelTest( );
+#endif
+ Cancel();
+ delete iSlideLoader;
+ delete iHeader;
+ }
+
+// ---------------------------------------------------------
+// CMmsViewerLaunchOperation::Launch
+//
+// ---------------------------------------------------------
+//
+void CMmsViewerLaunchOperation::Launch()
+ {
+ iNextState = EMmsLaunchInitialize;
+ CompleteSelf( KErrNone );
+ }
+
+// ---------------------------------------------------------
+// CMmsViewerLaunchOperation::Launch
+//
+// SaveL
+// ---------------------------------------------------------
+//
+void CMmsViewerLaunchOperation::DoLaunchStepL()
+ {
+ switch ( iNextState )
+ {
+ case EMmsLaunchInitialize:
+ {
+ LOGTEXT(_L8("CMmsViewerLaunchOperation::DoLaunchStepL EMmsLaunchInitialize") );
+ DoInitializeL();
+ break;
+ }
+ case EMmsLaunchPrepareHeader:
+ {
+ LOGTEXT(_L8("CMmsViewerLaunchOperation::DoLaunchStepL EMmsLaunchPrepareHeader") );
+ DoPrepareHeaderL();
+ break;
+ }
+ case EMmsLaunchPrepareBody:
+ {
+ LOGTEXT(_L8("CMmsViewerLaunchOperation::DoLaunchStepL EMmsLaunchPrepareBody") );
+ DoPrepareBodyL();
+ break;
+ }
+ case EMmsLaunchEnd:
+ {
+ LOGTEXT(_L8("CMmsViewerLaunchOperation::DoLaunchStepL EMmsLaunchEnd") );
+ iObserver.ViewerOperationEvent(
+ EMmsViewerOperationLaunch,
+ EMmsViewerOperationComplete,
+ KErrNone );
+ break;
+ }
+ default:
+ iObserver.ViewerOperationEvent(
+ EMmsViewerOperationLaunch,
+ EMmsViewerOperationError,
+ KErrUnknown );
+ break;
+ }
+
+ iNextState++;
+ }
+
+// ---------------------------------------------------------
+// DoInitializeL
+// ---------------------------------------------------------
+void CMmsViewerLaunchOperation::DoInitializeL()
+ {
+ // For messages without SMIL iDocument.InitializeL() completes immediately even before
+ // call of SetActiveNoCompleteSelf
+ iDocument.InitializeL( *this );
+ if ( !iIsInitialised )
+ {
+ SetActiveNoCompleteSelf();
+ }
+ }
+
+
+// ---------------------------------------------------------
+// DoPrepareHeaderL
+// ---------------------------------------------------------
+void CMmsViewerLaunchOperation::DoPrepareHeaderL()
+ {
+ // Header is always drawn and populated
+ iHeader = CMmsViewerHeader::NewL(
+ iDocument.Mtm(),
+ iDocument.DataModel().AttachmentList(),
+ iView,
+ iFs );
+ CompleteSelf( KErrNone );
+ }
+
+// ---------------------------------------------------------
+// DoPrepareBodyL
+// ---------------------------------------------------------
+void CMmsViewerLaunchOperation::DoPrepareBodyL()
+ {
+ // Determine whether body objects should be drawn
+ // NOTE: Viewable if conformant even if forwarded.
+ if ( iDocument.ErrorResponseMessage() )
+ {
+ DoPrepareErrorResponseMessageL();
+ CompleteSelf( KErrNone );
+ }
+ else if ( iDocument.SmilType() == EMmsSmil )
+ {
+ if ( !iDocument.SmilModel()->SlideCount() )
+ {
+ iDocument.SmilModel()->AddSlideL();
+ }
+
+ iSlideLoader = CUniSlideLoader::NewL(
+ iUniObjectObserver,
+ iControlObserver,
+ iDocument.DataModel(),
+ iView,
+ EUniControlViewerMode );
+
+ iSlideLoader->LoadSlideL( *this, 0 );
+ SetActiveNoCompleteSelf( );
+ }
+ else
+ {
+ DoPrepare3GPPBodyL();
+ CompleteSelf( KErrNone );
+ }
+ }
+
+// ---------------------------------------------------------
+// DoPrepareErrorResponseMessageL
+// ---------------------------------------------------------
+void CMmsViewerLaunchOperation::DoPrepareErrorResponseMessageL()
+ {
+ CMsgBodyControl* textControl = CMsgBodyControl::NewL( &iView );
+ CleanupStack::PushL( textControl );
+ textControl->SetControlId( EMsgComponentIdBody );
+
+ textControl->InsertTextL(
+ static_cast<CMmsClientMtm&>( iDocument.Mtm() ).ResponseText() );
+
+ iView.AddControlL( textControl, EMsgComponentIdBody, EMsgFirstControl, EMsgBody );
+ CleanupStack::Pop( textControl );
+ }
+
+// ---------------------------------------------------------
+// DoPrepare3GPPBodyL
+// ---------------------------------------------------------
+void CMmsViewerLaunchOperation::DoPrepare3GPPBodyL()
+ {
+ CMsgImageControl* imageControl = CMsgImageControl::NewL(
+ iView,
+ &iControlObserver );
+ CleanupStack::PushL( imageControl );
+
+ TParse fileParse;
+
+ fileParse.Set( KMmsUiMbmFile, &KDC_APP_BITMAP_DIR, NULL );
+ imageControl->LoadIconL(
+ fileParse.FullName( ),
+ KAknsIIDQgnGrafMmsPlay,
+ EMbmMmsuiQgn_graf_mms_play,
+ EMbmMmsuiQgn_graf_mms_play_mask );
+
+ TAknWindowLineLayout layOut( AknLayoutScalable_Apps::msg_data_pane_g7().LayoutLine() );
+ TAknLayoutRect iconLayout;
+ iconLayout.LayoutRect( MsgEditorCommons::MsgDataPane(),
+ layOut );
+
+ imageControl->SetIconSizeL( iconLayout.Rect().Size() );
+ imageControl->SetIconVisible( ETrue );
+
+ imageControl->SetControlId( EMsgComponentIdImage );
+ //The ownership of imageControl is transferred to iView
+ iView.AddControlL( imageControl, EMsgComponentIdImage, EMsgFirstControl, EMsgBody );
+ CleanupStack::Pop( imageControl );
+ }
+
+// ---------------------------------------------------------
+// CMmsViewerLaunchOperation::DoCancel
+//
+// ---------------------------------------------------------
+//
+void CMmsViewerLaunchOperation::DoCancel()
+ {
+ LOGTEXT(_L8("CMmsViewerLaunchOperation::DoCancel") );
+ if ( iSlideLoader )
+ {
+ iSlideLoader->Cancel();
+ }
+ iObserver.ViewerOperationEvent(
+ EMmsViewerOperationLaunch,
+ EMmsViewerOperationCancel,
+ KErrNone );
+ CompleteActiveSelf( KErrCancel );
+ }
+
+// ---------------------------------------------------------
+// CMmsViewerLaunchOperation::RunL
+//
+// ---------------------------------------------------------
+//
+void CMmsViewerLaunchOperation::RunL()
+ {
+ LOGTEXT2( _L("CMmsViewerLaunchOperation::RunL iStatus=%d"), iStatus.Int() );
+ if ( iStatus.Int() == KErrCancel )
+ {
+ iObserver.ViewerOperationEvent(
+ EMmsViewerOperationLaunch,
+ EMmsViewerOperationCancel,
+ iStatus.Int() );
+ return;
+ }
+ else if ( iStatus.Int() != KErrNone )
+ {
+ User::Leave( iStatus.Int() );
+ }
+
+ DoLaunchStepL();
+ }
+
+// ---------------------------------------------------------
+// CMmsViewerLaunchOperation::RunError
+//
+// ---------------------------------------------------------
+//
+TInt CMmsViewerLaunchOperation::RunError( TInt aError )
+ {
+ LOGTEXT2(_L("CMmsViewerLaunchOperation::RunError aError %d"), aError );
+ if ( aError == KLeaveExit )
+ {
+ return KLeaveExit;
+ }
+ iObserver.ViewerOperationEvent(
+ EMmsViewerOperationLaunch,
+ EMmsViewerOperationError,
+ aError );
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------
+// InitializeReady
+// ---------------------------------------------------------
+//
+void CMmsViewerLaunchOperation::InitializeReady( TInt aParseResult, TInt aError )
+ {
+ LOGTEXT2(_L("CMmsViewerLaunchOperation::InitializeReady aError %d"), aError );
+ iIsInitialised = ETrue;
+ iParseResult = aParseResult;
+ if ( !IsActive() )
+ {
+ SetActiveNoCompleteSelf();
+ }
+ CompleteActiveSelf( aError );
+ }
+
+// ---------------------------------------------------------
+// UiSlideEvent
+// ---------------------------------------------------------
+//
+void CMmsViewerLaunchOperation::SlideLoadReady( TInt aError )
+ {
+ LOGTEXT2(_L("CMmsViewerLaunchOperation::SlideLoadReady aError %d"), aError );
+ CompleteActiveSelf( aError );
+ }
+
+// EOF