diff -r 4baee4f15982 -r 6385c4c93049 pushmtm/MtmUiSrc/PushViewMessageOp.cpp --- 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 -#include -#include -#include -#include -#include -//#include -#include -#include -#include - -// 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. -