pushmtm/MtmUiSrc/PushMtmUi.cpp
branchRCL_3
changeset 47 6385c4c93049
parent 46 4baee4f15982
child 48 8e6fa1719340
--- 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 <bldvariant.hrh>
-#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 <PushEntry.h>
-#include <msvids.h>
-#include <msvuids.h>
-#include <msvapi.h>
-#include <mtmuidef.hrh>
-#include <MTMExtendedCapabilities.hrh>
-#include <MuiuMsgEditorLauncher.h>
-#include <data_caging_path_literals.hrh>
-#include <f32file.h>
-#include "PushMtmPrivateCRKeys.h"
-#include <centralrepository.h> 
-
-// ================= 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<TMsvLocalOperationProgress>& aProgress, TMsvId aId )
-    {
-    aProgress().iTotalNumberOfEntries = 1;
-    aProgress().iNumberCompleted = 1;
-    aProgress().iId = aId;
-    }
-
-// ---------------------------------------------------------
-// CPushMtmUi::CompletedOperationL
-// ---------------------------------------------------------
-//
-CMsvOperation* CPushMtmUi::CompletedOperationL
-( TRequestStatus& aObserverStatus )
-    {
-    TPckgBuf<TMsvLocalOperationProgress> 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