--- a/pushmtm/MtmUiSrc/PushViewMessageOp.cpp Thu Aug 19 09:57:56 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,316 +0,0 @@
-/*
-* 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 CPushViewMessageOp.
-*
-*/
-
-
-
-// INCLUDE FILES
-
-#include "PushViewMessageOp.h"
-#include "PushMtmUiDef.h"
-#include "PushMtmUiPanic.h"
-#include "PushMtmLog.h"
-#include "PushMtmUtil.h"
-#include <push/CSIPushMsgEntry.h>
-#include <eikenv.h>
-#include <aknappui.h>
-#include <uikon.hrh>
-#include <apmstd.h>
-#include <DocumentHandler.h>
-//#include <PushMtmUi.rsg>
-#include <AknNoteWrappers.h>
-#include <data_caging_path_literals.hrh>
-#include <f32file.h>
-
-// CONSTANTS
-
-_LIT8( KTextPlainString, "text/plain" );
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CPushLoadServiceOp::NewL
-// ---------------------------------------------------------
-//
-CPushViewMessageOp* CPushViewMessageOp::NewL( CMsvSession& aSession,
- TMsvId aEntryId,
- TRequestStatus& aObserverStatus )
- {
- PUSHLOG_ENTERFN("CPushViewMessageOp::NewL")
-
- CPushViewMessageOp* self =
- new (ELeave) CPushViewMessageOp( aSession, aEntryId, aObserverStatus );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
-
- PUSHLOG_LEAVEFN("CPushViewMessageOp::NewL")
- return self;
- }
-
-// ---------------------------------------------------------
-// CPushViewMessageOp::~CPushViewMessageOp
-// ---------------------------------------------------------
-//
-CPushViewMessageOp::~CPushViewMessageOp()
- {
- PUSHLOG_ENTERFN("CPushViewMessageOp::~CPushViewMessageOp")
-
- Cancel();
- delete iDocHandler;
-
- PUSHLOG_LEAVEFN("CPushViewMessageOp::~CPushViewMessageOp")
- }
-
-// ---------------------------------------------------------
-// CPushViewMessageOp::StartL
-// ---------------------------------------------------------
-//
-void CPushViewMessageOp::StartL()
- {
- PUSHLOG_WRITE("CPushViewMessageOp StartL")
-
- Cancel();
-
- // Mark service read.
- iMtmUtil->MarkServiceUnreadL( iEntryId, EFalse );
-
- CPushMtmUiOperation::StartL();
- }
-
-// ---------------------------------------------------------
-// CPushViewMessageOp::CPushViewMessageOp
-// ---------------------------------------------------------
-//
-CPushViewMessageOp::CPushViewMessageOp( CMsvSession& aSession,
- TMsvId aEntryId,
- TRequestStatus& aObserverStatus )
-: CPushMtmUiOperation( aSession, aEntryId, aObserverStatus ),
- iIsCancelled( EFalse )
- {
- PUSHLOG_WRITE("CPushViewMessageOp constructing")
- }
-
-// ---------------------------------------------------------
-// CPushViewMessageOp::ConstructL
-// ---------------------------------------------------------
-//
-void CPushViewMessageOp::ConstructL()
- {
- CPushMtmUiOperation::ConstructL();
- }
-
-// ---------------------------------------------------------
-// CPushViewMessageOp::RunL
-// ---------------------------------------------------------
-//
-void CPushViewMessageOp::RunL()
- {
- PUSHLOG_ENTERFN("CPushViewMessageOp::RunL");
-
- if ( iDocHandler )
- {
- // Content handler is running; we just need to close it,
- // NotifyExit has already been called.
- delete iDocHandler;
- iDocHandler = NULL;
- CancelObserveEntryEvent();
-
- // Ready.
- SignalObserver( KErrNone );
- }
- else
- {
- // Lauch the content handler.
- TMsvEntry tEntry;
- TMsvId service;
- User::LeaveIfError( iMsvSession.GetEntry( iEntryId, service, tEntry ) );
-
- __ASSERT_ALWAYS( tEntry.iMtm == KUidMtmWapPush,
- UiPanic( EPushMtmUiPanBadMtm ) );
-
- CSIPushMsgEntry* si = NULL;
- const TInt32 bioType( tEntry.iBioType );
-
- if ( bioType == KUidWapPushMsgSI.iUid )
- {
- si = CSIPushMsgEntry::NewL();
- }
- else
- {
- __ASSERT_DEBUG( EFalse, UiPanic( EPushMtmUiPanBadBioType ) );
- User::Leave( KErrNotSupported );
- }
-
- CleanupStack::PushL( si );
- si->RetrieveL( iMsvSession, iEntryId );
-
- PUSHLOG_WRITE("CPushViewMessageOp SI retrieved")
-
- __ASSERT_DEBUG( !iDocHandler, UiPanic( EPushMtmUiPanAlreadyInitialized ) );
- iDocHandler = CDocumentHandler::NewL( CEikonEnv::Static()->Process() );
-
- iDocHandler->SetExitObserver( this ); // (1)
- const TPtrC text = si->Text();
- // Copy the text to an 8-bit buffer:
- HBufC8* text8 = HBufC8::NewMaxLC( text.Length() );
- text8->Des().Copy( text );
- TDataType dataType( KTextPlainString );
-
- CAiwGenericParamList& paramList = iDocHandler->InParamListL();
- RFile tempFile;
- iDocHandler->SaveTempFileL
- ( *text8, 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, si ); // text8, si
- PUSHLOG_WRITE(" PopAndDestroy( 2, si ) OK");
-
- // Signal the observer when the viewer is terminated.
- // Until then we are observeing the message
- // (delete & replacement notification).
- //ObserveEntryEventL(); // (2)
- // Now we are observing two things: the viewer (1) and the entry (2).
-
- iStatus = KRequestPending;
- SetActive();
- }
-
- PUSHLOG_LEAVEFN("CPushViewMessageOp::RunL")
- }
-
-// ---------------------------------------------------------
-// CPushViewMessageOp::DoCancel
-// ---------------------------------------------------------
-//
-void CPushViewMessageOp::DoCancel()
- {
- PUSHLOG_ENTERFN("CPushViewMessageOp::DoCancel");
-
- iIsCancelled = ETrue;
-
- CancelObserveEntryEvent();
- // If there is DocHandler, then it means that we are active and
- // waiting for NotifyExit to be called.
- if ( iDocHandler )
- {
- // Terminate the embedded viewer. TODO
- // Complete us.
- InvokeRun();
- }
-
- SignalObserver( KErrCancel );
-
- PUSHLOG_LEAVEFN("CPushViewMessageOp::DoCancel");
- }
-
-// ---------------------------------------------------------
-// CPushViewMessageOp::RunError
-// ---------------------------------------------------------
-//
-TInt CPushViewMessageOp::RunError( TInt aError )
- {
- PUSHLOG_WRITE_FORMAT("CPushViewMessageOp::RunError: %d",aError);
-
- CancelObserveEntryEvent();
-
- delete iDocHandler;
- iDocHandler = NULL;
-
- TRAP_IGNORE( ShowGlobalErrorNoteL( aError ) );
- return CPushMtmUiOperation::RunError( aError );
- }
-
-// ---------------------------------------------------------
-// CPushViewMessageOp::HandleEntryEventL
-// ---------------------------------------------------------
-//
-void CPushViewMessageOp::HandleEntryEventL( TMsvEntryEvent aEvent,
- TAny* /*aArg1*/, TAny* /*aArg2*/, TAny* /*aArg3*/ )
- {
- PUSHLOG_ENTERFN("CPushViewMessageOp::HandleEntryEventL");
-
- if ( aEvent == EMsvEntryChanged )
- {
- PUSHLOG_WRITE(" Changed");
- // We don't have to bother with such case that the
- // content changes, but the entry is saved as 'read' in
- // this case, because this operation handles only SI messages.
- //TODO NotifyAndCancelL( R_PUSHMISC_INFO_REPLACED );
- }
- else if ( aEvent == EMsvEntryDeleted )
- {
- PUSHLOG_WRITE(" Deleted");
- //TODO NotifyAndCancelL( R_PUSHLS_EXPIRED_NOTE );
- }
- else
- {
- // Nothing to do.
- }
-
- PUSHLOG_LEAVEFN("CPushViewMessageOp::HandleEntryEventL");
- }
-
-// ---------------------------------------------------------
-// CPushViewMessageOp::NotifyAndCancelL
-// ---------------------------------------------------------
-//
-void CPushViewMessageOp::NotifyAndCancelL( TInt aResId )
- {
- PUSHLOG_ENTERFN("CPushViewMessageOp::NotifyAndCancelL");
-
- // Add resource file.
- TParse* fileParser = new (ELeave) TParse;
- CleanupStack::PushL( fileParser );
- fileParser->Set( KPushMtmUiResourceFileAndDrive, &KDC_MTM_RESOURCE_DIR, NULL );
- AssureResourceL( fileParser->FullName() );
- CleanupStack::PopAndDestroy( fileParser ); // fileParser
- fileParser = NULL;
-
- // Show note about the message deletion.
- HBufC* noteText = iCoeEnv.AllocReadResourceLC( aResId );
- CAknInformationNote* note = new (ELeave) CAknInformationNote( ETrue );
- note->ExecuteLD( *noteText );
- CleanupStack::PopAndDestroy( noteText ); // noteText
-
- // Close the dialog.
- Cancel();
-
- PUSHLOG_LEAVEFN("CPushViewMessageOp::NotifyAndCancelL");
- }
-
-// -----------------------------------------------------------------------------
-// CPushViewMessageOp::HandleServerAppExit
-// -----------------------------------------------------------------------------
-//
-void CPushViewMessageOp::HandleServerAppExit( TInt LOG_ONLY( aReason ) )
- {
- PUSHLOG_WRITE_FORMAT("CPushViewMessageOp::HandleServerAppExit: %d",aReason);
-
- if ( !iIsCancelled )
- {
- // Ready. The application was terminated normally.
- InvokeRun();
- }
- }
-
-// End of file.
-