--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pushmtm/MtmUiSrc/PushViewServiceOp.cpp Mon Mar 30 12:49:49 2009 +0300
@@ -0,0 +1,163 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: Implementation of CPushViewServiceOp.
+*
+*/
+
+
+
+// INCLUDE FILES
+
+#include "PushViewServiceOp.h"
+#include "PushMtmUiPanic.h"
+#include "PushMtmLog.h"
+#include <PushEntry.h>
+#include <CUnknownPushMsgEntry.h>
+#include <eikenv.h>
+#include <apmstd.h>
+#include <DocumentHandler.h>
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CPushViewServiceOp::CPushViewServiceOp
+// ---------------------------------------------------------
+//
+CPushViewServiceOp::CPushViewServiceOp( CMsvSession& aSession,
+ TMsvId aEntryId,
+ TRequestStatus& aObserverStatus )
+: CPushMtmUiOperation( aSession, aEntryId, aObserverStatus )
+ {
+ PUSHLOG_WRITE("CPushViewServiceOp constructing")
+ }
+
+// ---------------------------------------------------------
+// CPushViewServiceOp::~CPushViewServiceOp
+// ---------------------------------------------------------
+//
+CPushViewServiceOp::~CPushViewServiceOp()
+ {
+ Cancel();
+ delete iDocHandler;
+ }
+
+// ---------------------------------------------------------
+// CPushViewServiceOp::StartL
+// ---------------------------------------------------------
+//
+void CPushViewServiceOp::StartL()
+ {
+ PUSHLOG_ENTERFN("CPushViewServiceOp::~CPushViewServiceOp")
+
+ Cancel();
+ CPushMtmOperation::StartL();
+
+ PUSHLOG_LEAVEFN("CPushViewServiceOp::~CPushViewServiceOp")
+ }
+
+// ---------------------------------------------------------
+// CPushViewServiceOp::RunL
+// ---------------------------------------------------------
+//
+void CPushViewServiceOp::RunL()
+ {
+ PUSHLOG_ENTERFN("CPushViewServiceOp::RunL")
+
+ TMsvEntry tEntry;
+ TMsvId service;
+ User::LeaveIfError( iMsvSession.GetEntry( iEntryId, service, tEntry ) );
+
+ __ASSERT_ALWAYS( tEntry.iMtm == KUidMtmWapPush,
+ UiPanic( EPushMtmUiPanBadMtm ) );
+
+ CUnknownPushMsgEntry* context = NULL;
+ const TInt32 bioType( tEntry.iBioType );
+
+ if ( bioType == KUidWapPushMsgUnknown.iUid )
+ {
+ context = CUnknownPushMsgEntry::NewL();
+ }
+ else
+ {
+ __ASSERT_DEBUG( EFalse, UiPanic( EPushMtmUiPanBadBioType ) );
+ User::Leave( KErrNotSupported );
+ }
+
+ CleanupStack::PushL( context );
+ context->RetrieveL( iMsvSession, iEntryId );
+
+ const TPtrC contentType = context->ContentType();
+ const TPtrC8 content = context->MessageData();
+
+ __ASSERT_DEBUG( !iDocHandler, UiPanic( EPushMtmUiPanAlreadyInitialized ) );
+ iDocHandler = CDocumentHandler::NewL( CEikonEnv::Static()->Process() );
+
+ iDocHandler->SetExitObserver( this );
+ HBufC8* contentType8 = HBufC8::NewMaxLC( contentType.Length() );
+ contentType8->Des().Copy( contentType );
+ TDataType dataType( *contentType8 );
+
+ CAiwGenericParamList& paramList = iDocHandler->InParamListL();
+ RFile tempFile;
+ iDocHandler->SaveTempFileL
+ ( content, dataType, KNullDesC, tempFile );
+ PUSHLOG_WRITE(" SaveTempFileL OK");
+ CleanupClosePushL( tempFile );
+ iDocHandler->OpenFileEmbeddedL( tempFile, dataType, paramList );
+ PUSHLOG_WRITE(" OpenFileEmbeddedL OK");
+ CleanupStack::PopAndDestroy( &tempFile ); // tempFile
+ PUSHLOG_WRITE(" PopAndDestroy( &tempFile ) OK");
+
+ CleanupStack::PopAndDestroy( 2, context ); // contentType8, context
+
+ // Signal the observer when the viewer is terminated.
+
+ PUSHLOG_LEAVEFN("CPushViewServiceOp::RunL")
+ }
+
+// ---------------------------------------------------------
+// CPushViewServiceOp::DoCancel
+// ---------------------------------------------------------
+//
+void CPushViewServiceOp::DoCancel()
+ {
+ PUSHLOG_WRITE("CPushViewServiceOp::DoCancel")
+ SignalObserver( KErrCancel );
+ }
+
+// ---------------------------------------------------------
+// CPushViewServiceOp::RunError
+// ---------------------------------------------------------
+//
+TInt CPushViewServiceOp::RunError( TInt aError )
+ {
+ PUSHLOG_WRITE_FORMAT("CPushViewServiceOp::RunError <%d>",aError)
+ TRAP_IGNORE( ShowGlobalErrorNoteL( aError ) );
+ return CPushMtmOperation::RunError( aError );
+ }
+
+// -----------------------------------------------------------------------------
+// CPushViewServiceOp::HandleServerAppExit
+// -----------------------------------------------------------------------------
+//
+void CPushViewServiceOp::HandleServerAppExit( TInt aReason )
+ {
+ PUSHLOG_WRITE_FORMAT("CPushViewServiceOp::HandleServerAppExit <%d>",aReason)
+ aReason = 0; // Just to avoid warnings.
+ // Ready.
+ SignalObserver( KErrNone );
+ }
+
+// End of file.
+