--- a/pushmtm/MtmUiSrc/PushMessageInfoOp.cpp Tue Feb 02 00:12:41 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,262 +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 CPushMessageInfoOp.
-*
-*/
-
-// INCLUDE FILES
-
-#include "PushMessageInfoOp.h"
-#include "PushMessageInfoDialog.h"
-#include "PushMtmUtil.h"
-#include "PushMtmUiDef.h"
-#include "PushMtmUiPanic.h"
-#include "PushMtmLog.h"
-#include <AknNoteWrappers.h>
-#include <PushMtmUi.rsg>
-#include <data_caging_path_literals.hrh>
-#include <f32file.h>
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CPushMessageInfoOp::CPushMessageInfoOp
-// ---------------------------------------------------------
-//
-CPushMessageInfoOp::CPushMessageInfoOp( CMsvSession& aSession,
- TMsvId aEntryId,
- TBool aDontShowNotification,
- TRequestStatus& aObserverStatus )
-: CPushMtmUiOperation( aSession, aEntryId, aObserverStatus ),
- iDontShowNotification( aDontShowNotification ),
- iObserverCompleted( EFalse )
- {
- }
-
-// ---------------------------------------------------------
-// CPushMessageInfoOp::~CPushMessageInfoOp
-// ---------------------------------------------------------
-//
-CPushMessageInfoOp::~CPushMessageInfoOp()
- {
- Cancel();
- delete iDialog;
- if ( iDeletedFlag )
- {
- *iDeletedFlag = ETrue;
- }
- }
-
-// ---------------------------------------------------------
-// CPushMessageInfoOp::StartL
-// ---------------------------------------------------------
-//
-void CPushMessageInfoOp::StartL()
- {
- Cancel();
- iObserverCompleted = EFalse;
- CPushMtmOperation::StartL();
- }
-
-// ---------------------------------------------------------
-// CPushMessageInfoOp::RunL
-// ---------------------------------------------------------
-//
-void CPushMessageInfoOp::RunL()
- {
- __ASSERT_DEBUG( !iDialog, UiPanic( EPushMtmUiPanAlreadyInitialized ) );
-
- if ( iObserverCompleted )
- {
- return;
- }
-
- TBool deleted( EFalse );
- iDeletedFlag = &deleted;
-
- // Time to set up entry observation (delete & replacement case).
- ObserveEntryEventL();
-
- iDialog = new (ELeave) CPushMessageInfoDialog;
- // Workaround for Cancel(): SetActive() is called.
- // CMsvSingleOpWatcher::DoCancel() will wait for this observed object to
- // complete that. iDialog->ExecuteLD() allows other RunL's to run, so
- // that it may happen that CMsvSingleOpWatcher::DoCancel() is called
- // when iDialog->ExecuteLD() is running. It means that this object must
- // be active in that time in order DoCancel() will be called.
- iStatus = KRequestPending;
- SetActive();
- iDialog->ExecuteLD( iMsvSession, iEntryId );
-
- // Ready.
- if ( !deleted )
- {
- iDialog = NULL;
- iDeletedFlag = NULL;
- // Consider what happens if this object is cancelled in ExecuteLD!
- // In this case the observer is already completed (DoCancel), so
- // avoid completeing it twice. iObserverCompleted indicates it.
- if ( !iObserverCompleted )
- {
- SignalObserver( KErrNone );
- iObserverCompleted = ETrue;
- // Due to SetActive() call RunL again, but it will do nothing
- // (see above).
- InvokeRun();
- }
- }
- }
-
-// ---------------------------------------------------------
-// CPushMessageInfoOp::DoCancel
-// ---------------------------------------------------------
-//
-void CPushMessageInfoOp::DoCancel()
- {
- PUSHLOG_WRITE("CPushMessageInfoOp::DoCancel");
- CancelObserveEntryEvent();
-
- if ( iDialog )
- {
- delete iDialog;
- iDialog = NULL;
- // Due to SetActive() in RunL we must call InvokeRun(): the dialog
- // does not completes this operation.
- InvokeRun();
- }
- if ( !iObserverCompleted )
- {
- SignalObserver( KErrCancel );
- iObserverCompleted = ETrue;
- }
- }
-
-// ---------------------------------------------------------
-// CPushMessageInfoOp::RunError
-// ---------------------------------------------------------
-//
-TInt CPushMessageInfoOp::RunError( TInt aError )
- {
- PUSHLOG_WRITE_FORMAT("CPushMessageInfoOp::RunError: %d",aError);
- CancelObserveEntryEvent();
-
- if ( !iObserverCompleted )
- {
- SignalObserver( aError );
- iObserverCompleted = ETrue;
- }
- return aError;
- }
-
-// ---------------------------------------------------------
-// CPushMessageInfoOp::HandleEntryEventL
-// ---------------------------------------------------------
-//
-void CPushMessageInfoOp::HandleEntryEventL( TMsvEntryEvent aEvent,
- TAny* /*aArg1*/, TAny* /*aArg2*/, TAny* /*aArg3*/ )
- {
- PUSHLOG_ENTERFN("CPushMessageInfoOp::HandleEntryEventL");
-
- if ( aEvent == EMsvEntryChanged )
- {
- PUSHLOG_WRITE(" Changed");
- HandleEntryChangeL();
- }
- else if ( aEvent == EMsvEntryDeleted )
- {
- PUSHLOG_WRITE(" Deleted");
- NotifyAndCancelL( R_PUSHLS_EXPIRED_NOTE );
- }
- else
- {
- // Nothing to do.
- }
-
- PUSHLOG_LEAVEFN("CPushMessageInfoOp::HandleEntryEventL");
- }
-
-// ---------------------------------------------------------
-// CPushMessageInfoOp::HandleEntryChangeL
-// ---------------------------------------------------------
-//
-void CPushMessageInfoOp::HandleEntryChangeL()
- {
- PUSHLOG_ENTERFN("CPushMessageInfoOp::HandleEntryChangeL");
-
- // We have to act only in case of such changes where the content
- // of the message changes, not only the unread/read flag.
- // The content handlers and the Push subsystem behave so that
- // the content is changed only when the entry becomes 'unread',
- // except one case where the CH changes the content, but the
- // message becomes 'read' (SL-execute-high). In this case
- // a flag indicates that the content was changed.
-
- // Get an up-to-date entry and check the necessary flags:
- TMsvEntry tEntry;
- TMsvId service;
- User::LeaveIfError( iMsvSession.GetEntry( iEntryId, service, tEntry ) );
- TBool isChangeToUnread = tEntry.Unread();
- TBool contentChangedFlagSet =
- CPushMtmUtil::Attrs( tEntry ) & EPushMtmReadButContentChanged;
-
- if ( !isChangeToUnread && !contentChangedFlagSet )
- {
- // Nothing to do. Somebody has just marked it 'read'.
- PUSHLOG_WRITE(" Content not changed");
- }
- else
- {
- NotifyAndCancelL( R_PUSHMISC_INFO_REPLACED );
- }
-
- PUSHLOG_LEAVEFN("CPushMessageInfoOp::HandleEntryChangeL")
- }
-
-// ---------------------------------------------------------
-// CPushMessageInfoOp::NotifyAndCancelL
-// ---------------------------------------------------------
-//
-void CPushMessageInfoOp::NotifyAndCancelL( TInt aResId )
- {
- PUSHLOG_ENTERFN("CPushMessageInfoOp::NotifyAndCancelL");
-
- if ( iDontShowNotification )
- {
- // Don't show.
- }
- else
- {
- // 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 anyway.
- Cancel();
-
- PUSHLOG_LEAVEFN("CPushMessageInfoOp::NotifyAndCancelL");
- }
-
-// End of file.
-