diff -r 4baee4f15982 -r 6385c4c93049 pushmtm/MtmUiSrc/PushMtmUi.cpp --- a/pushmtm/MtmUiSrc/PushMtmUi.cpp Thu Aug 19 09:57:56 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,635 +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: Ui Mtm class definition -* -*/ - - - -// INCLUDE FILES - -#include -#include "PushMtmUi.h" -#include "PushMtmUiPanic.h" -#include "PushMtmUiDef.h" -#include "PushViewerDef.h" -#include "PushMtmCommands.hrh" -#include "PushMtmSettings.h" -#include "PushSettingsDialog.h" -#include "PushMessageInfoOp.h" -#include "PushLoadServiceOp.h" -#ifdef __SERIES60_PUSH_SP -#include "PushViewServiceOp.h" -#endif // __SERIES60_PUSH_SP -#include "PushViewMessageOp.h" -#include "PushMtmLog.h" -#include "PushMtmDef.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "PushMtmPrivateCRKeys.h" -#include - -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------- -// CPushMtmUi::NewL -// --------------------------------------------------------- -// -EXPORT_C CPushMtmUi* CPushMtmUi::NewL( CBaseMtm& aBaseMtm, - CRegisteredMtmDll& aRegisteredMtmDll ) - { - CPushMtmUi* ui = new (ELeave) CPushMtmUi( aBaseMtm, aRegisteredMtmDll ); - CleanupStack::PushL( ui ); - ui->ConstructL(); - CleanupStack::Pop(); // ui - return ui; - } - -// --------------------------------------------------------- -// CPushMtmUi::~CPushMtmUi -// --------------------------------------------------------- -// -CPushMtmUi::~CPushMtmUi() - { - } - -// --------------------------------------------------------- -// CPushMtmUi::CPushMtmUi -// --------------------------------------------------------- -// -CPushMtmUi::CPushMtmUi( CBaseMtm& aBaseMtm, - CRegisteredMtmDll& aRegisteredMtmDll ) -: CBaseMtmUi( aBaseMtm, aRegisteredMtmDll ) - { - CRepository* PushSL = CRepository::NewL( KCRUidPushMtm ); - CleanupStack::PushL( PushSL ); - User::LeaveIfError( PushSL->Get( KPushMtmServiceEnabled , iPushSLEnabled ) ); - CleanupStack::PopAndDestroy( PushSL ); - } - -// --------------------------------------------------------- -// CPushMtmUi::SetProgressSuccess -// --------------------------------------------------------- -// -void CPushMtmUi::SetProgressSuccess -( TPckgBuf& aProgress, TMsvId aId ) - { - aProgress().iTotalNumberOfEntries = 1; - aProgress().iNumberCompleted = 1; - aProgress().iId = aId; - } - -// --------------------------------------------------------- -// CPushMtmUi::CompletedOperationL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::CompletedOperationL -( TRequestStatus& aObserverStatus ) - { - TPckgBuf progress; - SetProgressSuccess( progress, BaseMtm().Entry().Entry().Id() ); - CMsvCompletedOperation* operation = - CMsvCompletedOperation::NewL( Session(), Type(), progress, - KMsvLocalServiceIndexEntryId, aObserverStatus ); - - return operation; - } - -// --------------------------------------------------------- -// CPushMtmUi::EnsureServiceEntryL -// --------------------------------------------------------- -// -void CPushMtmUi::EnsureServiceEntryL() const - { - PUSHLOG_ENTERFN("CPushMtmUi::EnsureServiceEntryL") - - // Get root entry. - CMsvEntry* rootMsvEntry = Session().GetEntryL( KMsvRootIndexEntryId ); - CleanupStack::PushL( rootMsvEntry ); - - // The Push MTM service entry is invisible. Set selection ordering - // to find the invisible entries also. - TMsvSelectionOrdering msvSelectionOrdering = rootMsvEntry->SortType();; - msvSelectionOrdering.SetShowInvisibleEntries( ETrue ); - rootMsvEntry->SetSortTypeL( msvSelectionOrdering ); - - // The service entry is the child entry of the root entry. - // KUidMtmWapPush is used to identify the mtm type of the service entry! - CMsvEntrySelection* msvEntrySelection = - rootMsvEntry->ChildrenWithMtmL( KUidMtmWapPush ); - CleanupStack::PushL( msvEntrySelection ); - - const TInt serviceEntryCount = msvEntrySelection->Count(); - PUSHLOG_WRITE_FORMAT(" serviceEntryCount <%d>",serviceEntryCount) - __ASSERT_DEBUG( serviceEntryCount <= 1, - UiPanic( EPushMtmUiPanTooManyServiceEntries ) ); - // If there is no push service entry in Message Server, create one. - // If there is more than one, then delete the unnecessary entries. - if ( serviceEntryCount == 0 ) - { - TMsvEntry newEntryData; - newEntryData.iType = KUidMsvServiceEntry; - newEntryData.iMtm = KUidMtmWapPush; - newEntryData.SetVisible( EFalse ); - rootMsvEntry->CreateL( newEntryData ); - } - else if ( 1 < serviceEntryCount ) - { - for ( TInt i = 1; i < serviceEntryCount; ++i ) // i starts from 1. - { - rootMsvEntry->DeleteL( msvEntrySelection->At(i) ); - } - } - - CleanupStack::PopAndDestroy( 2, rootMsvEntry ); - // msvEntrySelection, rootMsvEntry - - PUSHLOG_LEAVEFN("CPushMtmUi::EnsureServiceEntryL") - } - -// --------------------------------------------------------- -// CPushMtmUi::CreateL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::CreateL( - const TMsvEntry& /*aEntry*/, - CMsvEntry& /*aParent*/, - TRequestStatus& /*aStatus*/ ) - { - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------- -// CPushMtmUi::OpenL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::OpenL( TRequestStatus& aStatus ) - { - __ASSERT_DEBUG( BaseMtm().Entry().Entry().iMtm == Type(), - UiPanic( EPushMtmUiPanBadMtm ) ); - - const TUid type( BaseMtm().Entry().Entry().iType ); - - CMsvOperation* operation = NULL; - - if ( type == KUidMsvMessageEntry ) - { - operation = ViewL( aStatus ); - } - else - { - User::Leave( KErrNotSupported ); - } - - return operation; - } - -// --------------------------------------------------------- -// CPushMtmUi::CloseL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::CloseL( TRequestStatus& aStatus ) - { - __ASSERT_DEBUG( BaseMtm().Entry().Entry().iType == KUidMsvMessageEntry, - UiPanic( EPushMtmUiPanBadType ) ); - return CompletedOperationL( aStatus ); - } - -// --------------------------------------------------------- -// CPushMtmUi::EditL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::EditL( TRequestStatus& aStatus ) - { - __ASSERT_DEBUG( BaseMtm().Entry().Entry().iMtm == Type(), - UiPanic( EPushMtmUiPanBadMtm ) ); - - if ( BaseMtm().Entry().Entry().iType != KUidMsvServiceEntry ) - { - // All push messages are read only ones. - User::Leave( KErrNotSupported ); - } - - CPushSettingsDialog* dlg = new (ELeave) CPushSettingsDialog( Session() ); - dlg->ExecuteLD(); - return CompletedOperationL( aStatus ); - } - -// --------------------------------------------------------- -// CPushMtmUi::ViewL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::ViewL( TRequestStatus& aStatus ) - { - const TMsvEntry tEntry( BaseMtm().Entry().Entry() ); - - __ASSERT_DEBUG( tEntry.iMtm == Type(), UiPanic( EPushMtmUiPanBadMtm ) ); - __ASSERT_DEBUG( tEntry.iType == KUidMsvMessageEntry, - UiPanic( EPushMtmUiPanBadType ) ); - - if ( tEntry.iType != KUidMsvMessageEntry ) - { - User::Leave( KErrNotSupported ); - } - - CMsvOperation* operation = NULL; - - if ( - tEntry.iBioType == KUidWapPushMsgSI.iUid || (iPushSLEnabled && tEntry.iBioType == KUidWapPushMsgSL.iUid) - ) - { - TEditorParameters editorParameters; - editorParameters.iId = tEntry.Id(); - editorParameters.iFlags = EMsgLaunchEditorThenWait | - EMsgReadOnly | - EMsgLaunchEditorEmbedded; - - // Get the application name. - HBufC* appFileName = - MsvUiEditorUtilities::ResolveAppFileNameL( KUidPushViewerApp ); - CleanupStack::PushL( appFileName ); - - operation = MsgEditorLauncher::LaunchEditorApplicationL - ( BaseMtm().Session(), - tEntry.iMtm, - aStatus, - editorParameters, - *appFileName ); - - CleanupStack::PopAndDestroy( appFileName ); // appFileName - } - -#ifdef __SERIES60_PUSH_SP - - else if ( tEntry.iBioType == KUidWapPushMsgUnknown.iUid ) - { - // Don't launch the PushViewer, but the embedded viewer. - // It's unnecessary to call - // BaseMtm().SwitchCurrentEntryL( tEntry.Id() ); - TBuf8<1> dummyPar; - CMsvEntrySelection* dummySel = new (ELeave) CMsvEntrySelection; - CleanupStack::PushL( dummySel ); - - operation = InvokeAsyncFunctionL( EPushMtmCmdViewService, - *dummySel, - aStatus, - dummyPar ); - - CleanupStack::PopAndDestroy( dummySel ); // dummySel - } - -#endif // __SERIES60_PUSH_SP - - else - { - __ASSERT_DEBUG( EFalse, UiPanic( EPushMtmUiPanBadBioType ) ); - User::Leave( KErrNotSupported ); - } - - return operation; - } - -// --------------------------------------------------------- -// CPushMtmUi::OpenL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::OpenL -( TRequestStatus& /*aStatus*/, const CMsvEntrySelection& /*aSelection*/ ) - { - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------- -// CPushMtmUi::CloseL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::CloseL -( TRequestStatus& /*aStatus*/, const CMsvEntrySelection& /*aSelection*/ ) - { - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------- -// CPushMtmUi::EditL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::EditL -( TRequestStatus& /*aStatus*/, const CMsvEntrySelection& /*aSelection*/ ) - { - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------- -// CPushMtmUi::ViewL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::ViewL -( TRequestStatus& /*aStatus*/, const CMsvEntrySelection& /*aSelection*/ ) - { - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------- -// CPushMtmUi::CancelL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::CancelL -( TRequestStatus& /*aStatus*/, const CMsvEntrySelection& /*aSelection*/ ) - { - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------- -// CPushMtmUi::DeleteFromL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::DeleteFromL -( const CMsvEntrySelection& /*aSelection*/, TRequestStatus& /*aStatus*/ ) - { - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------- -// CPushMtmUi::UnDeleteFromL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::UnDeleteFromL -( const CMsvEntrySelection& /*aSelection*/, TRequestStatus& /*aStatus*/ ) - { - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------- -// CPushMtmUi::DeleteServiceL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::DeleteServiceL -( const TMsvEntry& /*aService*/, TRequestStatus& /*aStatus*/ ) - { - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------- -// CPushMtmUi::ReplyL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::ReplyL( - TMsvId /*aDestination*/, - TMsvPartList /*aPartlist*/, - TRequestStatus& /*aCompletionStatus*/ ) - { - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------- -// CPushMtmUi::ForwardL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::ForwardL( - TMsvId /*aDestination*/, - TMsvPartList /*aPartlist*/, - TRequestStatus& /*aCompletionStatus*/ ) - { - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------- -// CPushMtmUi::CopyToL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::CopyToL -( const CMsvEntrySelection& /*aSelection*/, TRequestStatus& /*aStatus*/ ) - { - User::Leave( KErrNotSupported ); - return NULL; - } - - -// --------------------------------------------------------- -// CPushMtmUi::MoveToL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::MoveToL -( const CMsvEntrySelection& /*aSelection*/, TRequestStatus& /*aStatus*/ ) - { - User::Leave( KErrNotSupported ); - return NULL; - } - - -// --------------------------------------------------------- -// CPushMtmUi::CopyFromL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::CopyFromL( - const CMsvEntrySelection& /*aSelection*/, - TMsvId /*aTargetId*/, - TRequestStatus& /*aStatus*/ ) - { - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------- -// CPushMtmUi::MoveFromL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::MoveFromL( - const CMsvEntrySelection& /*aSelection*/, - TMsvId /*aTargetId*/, - TRequestStatus& /*aStatus*/ ) - { - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------- -// CPushMtmUi::QueryCapability -// --------------------------------------------------------- -// -TInt CPushMtmUi::QueryCapability( TUid aCapability, TInt& aResponse ) - { - TInt ret( KErrNone ); - - switch ( aCapability.iUid ) - { - case KUidMsvMtmUiQueryMessagingInitialisation: - case KUidMsvMtmQueryFactorySettings: - case KUidMsvMtmQueryMessageInfo: - { - aResponse = ETrue; - break; - } - default: - { - ret = BaseMtm().QueryCapability( aCapability, aResponse ); - break; - } - } - - return ret; - } - -// --------------------------------------------------------- -// CPushMtmUi::InvokeSyncFunctionL -// --------------------------------------------------------- -// -void CPushMtmUi::InvokeSyncFunctionL( TInt aFunctionId, - const CMsvEntrySelection& /*aSelection*/, - TDes8& /*aParameter*/ ) - { - PUSHLOG_WRITE_FORMAT - ("CPushMtmUi::InvokeSyncFunctionL <%d>",aFunctionId) - - if ( aFunctionId == KMtmUiMessagingInitialisation || - aFunctionId == KMtmUiFunctionRestoreFactorySettings ) - { - // Restore the settings... - CPushMtmSettings* pushMtmSettings = CPushMtmSettings::NewLC(); - pushMtmSettings->RestoreFactorySettingsL(); - CleanupStack::PopAndDestroy( pushMtmSettings ); // pushMtmSettings - // ...and ensure that a service entry exists with which - // the settings can be reached from a messaging application. - EnsureServiceEntryL(); - } - else - { - User::Leave( KErrNotSupported ); - } - } - -// --------------------------------------------------------- -// CPushMtmUi::InvokeAsyncFunctionL -// --------------------------------------------------------- -// -CMsvOperation* CPushMtmUi::InvokeAsyncFunctionL - ( TInt aFunctionId, - const CMsvEntrySelection& aSelection, - TRequestStatus& aCompletionStatus, - TDes8& aParameter ) - { - PUSHLOG_WRITE_FORMAT - ("CPushMtmUi::InvokeAsyncFunctionL <%d>",aFunctionId) - - CMsvOperation* operation = NULL; - - switch ( aFunctionId ) - { - case KMtmUiFunctionMessageInfo: - { - TBool dontShowNotification = EFalse; - if ( 0 < aParameter.Length() ) - { - TMessageInfoParam par; - TMessageInfoParamPckg parPckg( par ); - parPckg.Set( aParameter ); - dontShowNotification = par.iDontShowNotification; - } - - CPushMessageInfoOp* op = new (ELeave) CPushMessageInfoOp - ( Session(), - BaseMtm().Entry().EntryId(), - dontShowNotification, - aCompletionStatus ); - CleanupStack::PushL( op ); - op->StartL(); - operation = op; - CleanupStack::Pop( op ); // op - break; - } - - case EPushMtmCmdLoadService: - { - CPushLoadServiceOp* op = CPushLoadServiceOp::NewL - ( Session(), - BaseMtm().Entry().EntryId(), - aCompletionStatus ); - CleanupStack::PushL( op ); - op->StartL(); - operation = op; - CleanupStack::Pop( op ); // op - break; - } - -#ifdef __SERIES60_PUSH_SP - - case EPushMtmCmdViewService: - { - CPushViewServiceOp* op = new (ELeave) CPushViewServiceOp - ( Session(), - BaseMtm().Entry().EntryId(), - aCompletionStatus ); - CleanupStack::PushL( op ); - op->StartL(); - operation = op; - CleanupStack::Pop( op ); // op - break; - } - -#endif // __SERIES60_PUSH_SP - - case EPushMtmCmdViewMessage: - { - CPushViewMessageOp* op = CPushViewMessageOp::NewL - ( Session(), - BaseMtm().Entry().EntryId(), - aCompletionStatus ); - CleanupStack::PushL( op ); - op->StartL(); - operation = op; - CleanupStack::Pop( op ); // op - break; - } - - default: - { - operation = CBaseMtmUi::InvokeAsyncFunctionL - ( aFunctionId, aSelection, aCompletionStatus, aParameter ); - break; - } - } - - return operation; - } - -// --------------------------------------------------------- -// CPushMtmUi::GetResourceFileName -// --------------------------------------------------------- -// -void CPushMtmUi::GetResourceFileName( TFileName& aFileName ) const - { - // Extract the file name and extension from the constant - TParsePtrC fileParser( KPushMtmUiResourceFileAndDrive ); - aFileName = fileParser.NameAndExt(); - } - -// End of File