--- a/vmbx/vmbxengine/src/voicemailboximpl.cpp Tue Aug 31 15:45:17 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,902 +0,0 @@
-/*
-* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "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 the CVoiceMailboxImpl class
-*
-*/
-
-
-// INCLUDE FILES
-#include <featmgr.h>
-#include <cvoicemailboxentry.h>
-#include "voicemailboxdefsinternal.h"
-
-#include "vmbxenginebase.h"
-#include "vmbxuiutilities.h"
-#include "vmbxenginefactory.h"
-#include "vmbxobserver.h"
-#include "vmbxlogger.h"
-#include "vmbxutilities.h"
-#include "vmbxcenrephandler.h"
-#include "voicemailboximpl.h"
-
-// phone application uid
-const TInt KPhoneApplicationUid = 0x100058B3;
-
-// ============================ MEMBER FUNCTIONS =============================
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::NewL
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CVoiceMailboxImpl* CVoiceMailboxImpl::NewL()
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::NewL =>" );
- CVoiceMailboxImpl* vmbx = CVoiceMailboxImpl::NewLC();
- CleanupStack::Pop( vmbx );
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::NewL <=" );
- return vmbx;
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::NewLC
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CVoiceMailboxImpl* CVoiceMailboxImpl::NewLC()
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::NewLC =>" );
- CVoiceMailboxImpl* vmbx = new( ELeave ) CVoiceMailboxImpl();
- CleanupStack::PushL( vmbx );
- vmbx->ConstructL();
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::NewLC <=" );
- return vmbx;
- }
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::~CVoiceMailboxImpl
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CVoiceMailboxImpl::~CVoiceMailboxImpl()
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::~CVoiceMailboxImpl =>" );
- FeatureManager::UnInitializeLib();
- delete iUiUtilities;
- delete iVmbxFactory;
- delete iVmbxObserver;
- delete iCenRepHandler;
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::~CVoiceMailboxImpl <=" );
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::GetStoredEntry
-//
-// ---------------------------------------------------------------------------
-//
-TInt CVoiceMailboxImpl::GetStoredEntry( const TVoiceMailboxParams& aParams,
- CVoiceMailboxEntry*& aEntry ) const
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetStoredEntry =>" );
- TRAPD( err, GetStoredEntryL( aParams, aEntry ) );
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::GetStoredEntry: err%I <=", err );
- return err;
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::SaveEntry
-//
-// ---------------------------------------------------------------------------
-//
-TInt CVoiceMailboxImpl::SaveEntry( const CVoiceMailboxEntry& aEntry )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::SaveEntry =>" );
- TRAPD( err, SaveEntryL( aEntry ) );
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::SaveEntry: err%I <=", err );
- return err;
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::QueryNewEntry
-//
-// ---------------------------------------------------------------------------
-//
-TInt CVoiceMailboxImpl::QueryNewEntry( const TVoiceMailboxParams& aParams,
- CVoiceMailboxEntry*& aEntry )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::QueryNewEntry =>" );
- TRAPD( err, QueryNewEntryL( aParams, aEntry ) );
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::QueryNewEntry err%I <=",
- err );
- return err;
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::QueryChangeEntry
-//
-// ---------------------------------------------------------------------------
-//
-TInt CVoiceMailboxImpl::QueryChangeEntry( const TVoiceMailboxParams& aParams,
- CVoiceMailboxEntry*& aEntry )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::QueryChangeEntry =>" );
- TRAPD( err, QueryChangeEntryL( aParams, aEntry ) );
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::QueryChangeEntry: err%I <=",
- err );
- return err;
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::QueryVmbxType
-//
-// ---------------------------------------------------------------------------
-//
-TInt CVoiceMailboxImpl::QueryVmbxType( TVoiceMailboxParams& aParams )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::QueryVmbxType =>" );
- TRAPD( err, QueryVmbxTypeL( aParams ) );
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::QueryVmbxType: err%I<=", err );
- return err;
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::NotifyVmbxNumberChangeL
-//
-// ---------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::NotifyVmbxNumberChangeL(
- MVoiceMailboxObserver& aObserver,
- const TBool /*aNotifyOnActiveLineOnly*/ )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::NotifyVmbxNumberChangeL =>" );
- if ( !iNotifyCallBack )
- {
- iNotifyCallBack = &aObserver;
- iVmbxObserver = CVmbxObserver::NewL( *this );
- iVmbxObserver->SetVmbxObserver( *this );
- }
- else
- {
- User::Leave( KErrInUse );
- }
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::NotifyVmbxNumberChangeL <=" );
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::NotifyVmbxNumberChangeCancel
-//
-// ---------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::NotifyVmbxNumberChangeCancel()
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::NotifyVmbxNumberChangeCancel =>" );
- iNotifyCallBack = NULL;
- delete iVmbxObserver;
- iVmbxObserver = NULL;
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::NotifyVmbxNumberChangeCancel <=" );
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::CheckConfiguration
-//
-// ---------------------------------------------------------------------------
-//
-TBool CVoiceMailboxImpl::CheckConfiguration( const TVoiceMailboxParams& aParams,
- const TInt aFlags )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::CheckConfiguration =>" );
- TBool configuration( EFalse );
- CVmbxEngineBase* vmbx = NULL;
- TRAPD( res, iVmbxFactory->CreateEngineL( vmbx, aParams.iType ) );
- if ( KErrNone == res && vmbx )
- {
- configuration = vmbx->CheckConfiguration( aParams, aFlags );
- }
- delete vmbx;
- vmbx = NULL;
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::CheckConfiguration <=" );
- return configuration;
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::GetServiceIds
-//
-// ---------------------------------------------------------------------------
-//
-TInt CVoiceMailboxImpl::GetServiceIds( RIdArray& aProfileIds )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetServiceIds =>" );
- TRAPD( err, GetServiceIdsL( aProfileIds ) );
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::GetServiceIds: err%I <=", err );
- return err;
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::GetVmbxImage
-//
-// ---------------------------------------------------------------------------
-/* CGulIcon* CVoiceMailboxImpl::GetVmbxImage(
- const TVoiceMailboxParams& aParams )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetVmbxImage =>" );
- CGulIcon* guiIcon( NULL );
- TRAPD( err, guiIcon = GetVmbxImageL( aParams ) );
- if ( KErrNone != err )
- {
- delete guiIcon;
- guiIcon = NULL;
- }
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::GetVmbxImage: err%I <=", err );
- return guiIcon;
- } */
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::GetVmbxImages
-//
-// ---------------------------------------------------------------------------
-//
-/* CArrayPtr<CGulIcon>* CVoiceMailboxImpl::GetVmbxImages(
- RArray<TVoiceMailboxParams>& aParams )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetVmbxImages =>" );
- CArrayPtr<CGulIcon>* guiIcons( NULL );
- TRAPD( err, guiIcons = GetVmbxImagesL( aParams ) );
- if ( KErrNone != err )
- {
- if ( guiIcons )
- {
- guiIcons->ResetAndDestroy();
- }
- }
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::GetVmbxImages: err%I <=", err );
- return guiIcons;
- } */
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::SaveProvisionedEntry
-//
-// ---------------------------------------------------------------------------
-//
-TInt CVoiceMailboxImpl::SaveProvisionedEntry(
- const CVoiceMailboxEntry& aEntry )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::SaveProvisionedEntry =>" );
- TRAPD( err, SaveProvisionedEntryL( aEntry ) );
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::SaveProvisionedEntry: err%I <=",
- err );
- return err;
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::SatRefreshL
-//
-// notify Sat Refresh
-// ---------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::SatRefreshL()
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::SatRefreshL =>" );
- // notify sim file's entry changed
- NotifyChangedL( EVmbxVoice );
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::SatRefreshL <=" );
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::CenRepChangedL
-//
-// notify CenRep Changed
-// ---------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::CenRepChangedL( TVmbxCenRepKey aId )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::CenRepChangedL =>" );
- TVmbxAlsLineType alsLine = VmbxUtilities::AlsLine();
- if ( ( ( EVmbxVoiceLinePrimaryKey == aId
- || EVmbxVideoLinePrimaryKey == aId ) // primary value changed
- && EVmbxAlsLine2 != alsLine )// line 1 active or using default line
- || ( ( EVmbxVoiceLineAlternateKey == aId
- || EVmbxVideoLineAlternateKey == aId )// alternate value changed
- && EVmbxAlsLine2 == alsLine ) )// line 2 active
- {
- if ( VmbxUtilities::VideoSupported()
- && ( ( EVmbxVideoLinePrimaryKey == aId
- || EVmbxVideoLineAlternateKey == aId ) ) )
- {
- NotifyChangedL( EVmbxVideo );
- }
- else
- {
- NotifyChangedL( EVmbxVoice );
- }
- }
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::CenRepChangedL <=" );
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::SimStoreChangedL
-// notify sim store changed
-//
-// ---------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::SimStoreChangedL()
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::SimStoreChangedL =>" );
- // notify sim file changed
- NotifyChangedL( EVmbxVoice );
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::SimStoreChangedL <=" );
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::CVoiceMailboxImpl
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// ---------------------------------------------------------------------------
-//
-CVoiceMailboxImpl::CVoiceMailboxImpl()
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::CVoiceMailboxImpl <=>" );
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::ConstructL
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::ConstructL()
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::ConstructL =>" );
- FeatureManager::InitializeLibL();
-
- // Create Ui utilities for dialog and images
- iUiUtilities = CVmbxUiUtilities::NewL();
- // create CenRep
- iCenRepHandler = CVmbxCenRepHandler::NewL();
-
- // Create factory for voice/video/voip engine
- iVmbxFactory = CVmbxEngineFactory::NewL( *this );
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::ConstructL <=" );
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::GetStoredEntryL
-//
-// ---------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::GetStoredEntryL( const TVoiceMailboxParams& aParams,
- CVoiceMailboxEntry*& aEntry ) const
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetStoredEntryL =>" );
- CVoiceMailboxEntry* entry( NULL );
- CVmbxEngineBase* vmbxBox( NULL );
- iVmbxFactory->CreateEngineL( vmbxBox, aParams.iType );
- CleanupStack::PushL( vmbxBox );
- vmbxBox->GetL( entry );
- CleanupStack::PopAndDestroy( vmbxBox );
- aEntry = entry;
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetStoredEntryL <=" );
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::SaveEntryL
-//
-// ---------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::SaveEntryL( const CVoiceMailboxEntry& aEntry )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::SaveEntryL =>" );
- TVoiceMailboxParams params( aEntry );
- CVmbxEngineBase* vmbxBox( NULL );
- iVmbxFactory->CreateEngineL( vmbxBox, aEntry.VoiceMailboxType() );
- CleanupStack::PushL( vmbxBox );
- if ( vmbxBox->CheckConfiguration( params, EVmbxChangeNbrAllowedOnUi ) )
- {
- vmbxBox->SaveL( aEntry, ETrue );
- }
- else
- {
- User::Leave( KErrNotSupported );
- }
- CleanupStack::PopAndDestroy( vmbxBox );
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::SaveEntryL <=" );
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::QueryNewEntryL
-//
-// ---------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::QueryNewEntryL( const TVoiceMailboxParams& aParams,
- CVoiceMailboxEntry*& aEntry )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::QueryNewEntryL =>" );
- CVmbxEngineBase* vmbxBox( NULL );
- iVmbxFactory->CreateEngineL( vmbxBox, aParams.iType );
- CleanupStack::PushL( vmbxBox );
- if ( vmbxBox->CheckConfiguration( aParams, EVmbxChangeNbrAllowedOnUi ) )
- {
- CVoiceMailboxEntry* entry = CVoiceMailboxEntry::NewLC();
- entry->SetVoiceMailboxType( aParams.iType );
- entry->SetServiceId( aParams.iServiceId );
- vmbxBox->QueryDefineNumberL( *entry );
- CleanupStack::Pop( entry );
- aEntry = entry;
- }
- else
- {
- CheckNumberProvisionedL( aParams );
- }
- CleanupStack::PopAndDestroy( vmbxBox );
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::QueryNewEntryL <=" );
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::QueryChangeEntryL
-//
-// ---------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::QueryChangeEntryL( const TVoiceMailboxParams& aParams,
- CVoiceMailboxEntry*& aEntry )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::QueryChangeEntryL =>" );
- CVmbxEngineBase* vmbxBox( NULL );
- iVmbxFactory->CreateEngineL( vmbxBox, aParams.iType );
- CleanupStack::PushL( vmbxBox );
- if ( vmbxBox->CheckConfiguration( aParams, EVmbxChangeNbrAllowedOnUi ) )
- {
- CVoiceMailboxEntry* entry( NULL );
- GetStoredEntryL( aParams, entry );
- CleanupStack::PushL( entry );
- vmbxBox->QueryChangeNumberL( *entry );
- CleanupStack::Pop( entry );
- aEntry = entry;
- }
- else
- {
- CheckNumberProvisionedL( aParams );
- }
- CleanupStack::PopAndDestroy( vmbxBox );
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::QueryChangeEntryL <=" );
- }
-
-// ---------------------------------------------------------------------------
-// CleanupRPointerArray
-// avoid memory leak when using RPointerArray
-// ---------------------------------------------------------------------------
-//
-LOCAL_C void CleanupRPointerArray( TAny* aParam )
- {
- if ( aParam )
- {
- static_cast< RPointerArray<CVoiceMailboxEntry>* >( aParam )
- ->ResetAndDestroy();
- }
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::QueryVmbxTypeL
-// Query vmbx type
-// ---------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::QueryVmbxTypeL( TVoiceMailboxParams& aParams )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::QueryVmbxTypeL =>" );
- aParams.iType = EVmbxNone;
- aParams.iServiceId = KVmbxServiceIdNone;
-
- TInt result ( KErrNotFound );
- RPointerArray<CVoiceMailboxEntry> array;
- TCleanupItem item( CleanupRPointerArray, &array );
- CleanupStack::PushL( item );
- GetDefinedEntriesL( array );
-
- TInt definedCount = array.Count();
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::QueryVmbxTypeL:\
- definedCount%I", definedCount );
- // more than one number defined
- if ( definedCount > 1 )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::QueryVmbxTypeL:\
- more than one number Denfined" );
- // query call type
- RArray<TVoiceMailboxParams> paramsArray;
- CleanupClosePushL( paramsArray );
- TVoiceMailboxParams entryParams;
- for ( TInt i = 0; i < array.Count(); i++ )
- {
- entryParams.iType = array[i]->VoiceMailboxType();
- entryParams.iServiceId = array[i]->ServiceId();
- paramsArray.AppendL( entryParams );
- }
- //CArrayPtr<CGulIcon>* dialogIcons = GetVmbxImagesL( paramsArray );
- //CleanupStack::PushL( dialogIcons );
- iUiUtilities->ShowCallSelectionDialogL(
- array, /* dialogIcons, */ aParams, result );
- //CleanupStack::Pop( dialogIcons );
- CleanupStack::PopAndDestroy( ¶msArray );
- }
- // only one number defined
- else if ( 1 == definedCount )
- {
- // return the onle defined number
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::QueryVmbxTypeL:\
- One number Denfined" );
- aParams.iType = array[0]->VoiceMailboxType();
- result = KErrNone;
- }
- // there is no number defined
- else
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::QueryVmbxTypeL:\
- no number Denfined" );
- // define number
- if ( VmbxUtilities::VideoSupported() )
- {
- // query to be defined type
- iUiUtilities->ShowDefineSelectionDialogL( aParams.iType, result );
- // if result is KErrNone(but result should be also KErrNotFound ),
- // it means user have seclected the defined type;
- // else user cancel to select the type, so should return result value
- if ( KErrNone == result )
- {
- result = KErrNotFound;
- }
- }
- else
- {
- aParams.iType = EVmbxVoice;
- }
- }
-
- CleanupStack::PopAndDestroy( &array ); //item
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::QueryVmbxTypeL: result%I",
- result );
- User::LeaveIfError( result );
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::QueryVmbxTypeL <=" );
- }
-
-// ----------------------------------------------------------------------------
-// CVoiceMailboxImpl::GetDefinedEntriesL
-//
-// ----------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::GetDefinedEntriesL(
- RPointerArray<CVoiceMailboxEntry>& aArray )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetDefinedEntriesL =>" );
- TRAPD( voiceErr,GetDefinedVoiceEntryL( aArray ));
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::GetDefinedEntriesL: voiceErr%I",
- voiceErr );
- // It should be ignored when video/voip unsupported or no number defined
- if ( KErrNotFound != voiceErr )
- {
- User::LeaveIfError( voiceErr );
- }
-
- TRAPD( videoErr, GetDefinedVideoEntryL( aArray ) );
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::GetDefinedEntriesL: videoErr%I",
- videoErr );
- if ( KErrNotSupported != videoErr && KErrNotFound != videoErr )
- {
- User::LeaveIfError( videoErr );
- }
-
- TRAPD( voIperr, GetDefinedVoipEntriesL( aArray ));
-
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::GetDefinedEntriesL: voIperr%I",
- voIperr );
- // It should be ignored when video/voip unsupported or no number defined
- if ( KErrNotSupported != voIperr && KErrNotFound != voIperr )
- {
- User::LeaveIfError( voIperr );
- }
-
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetDefinedEntriesL <=" );
- }
-
-// ----------------------------------------------------------------------------
-// CVoiceMailboxImpl::GetDefinedVoiceEntryL
-//
-// ----------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::GetDefinedVoiceEntryL(
- RPointerArray<CVoiceMailboxEntry>& aArray )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetDefinedVoiceEntryL =>" );
- // check voice mailbox
- CVmbxEngineBase* voiceBox( NULL );
- iVmbxFactory->CreateEngineL( voiceBox, EVmbxVoice );
- CleanupStack::PushL( voiceBox );
- // get voice entry
- CVoiceMailboxEntry* voiceEntry( NULL);
- voiceBox->GetL( voiceEntry );
- CleanupStack::PushL( voiceEntry );
- // get voice number
- TPtrC vmbxVoiceNumber( KNullDesC );
- TInt resVoice = voiceEntry->GetVmbxNumber( vmbxVoiceNumber );
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::GetDefinedVoiceEntryL:\
- VoiceNumber = %S ", &vmbxVoiceNumber );
- if ( KErrNone == resVoice && vmbxVoiceNumber.Length() )
- {
- aArray.AppendL( voiceEntry );
- }
- CleanupStack::Pop( voiceEntry );
- CleanupStack::PopAndDestroy( voiceBox );
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetDefinedVoiceEntryL <=" );
- }
-
-// ----------------------------------------------------------------------------
-// CVoiceMailboxImpl::GetDefinedVideoEntryL
-//
-// ----------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::GetDefinedVideoEntryL(
- RPointerArray<CVoiceMailboxEntry>& aArray )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetDefinedVideoEntryL =>" );
- // check video mailbox
- CVmbxEngineBase* videoBox = NULL;
- iVmbxFactory->CreateEngineL( videoBox, EVmbxVideo );
- CleanupStack::PushL( videoBox );
-
- CVoiceMailboxEntry* videoEntry( NULL );
- // get video entry
- videoBox->GetL( videoEntry );
- CleanupStack::PushL( videoEntry );
- TPtrC vmbxVideoNumber( KNullDesC );
-
- TInt resVideo = videoEntry->GetVmbxNumber( vmbxVideoNumber );
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::GetDefinedVideoEntryL:\
- VideoNumber = %S ", &vmbxVideoNumber );
-
- if ( KErrNone == resVideo && vmbxVideoNumber.Length() )
- {
- aArray.AppendL( videoEntry );
- }
- CleanupStack::Pop( videoEntry );
- CleanupStack::PopAndDestroy( videoBox );
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetDefinedVideoEntryL <=" );
- }
-
-// ----------------------------------------------------------------------------
-// CVoiceMailboxImpl::GetDefinedVoipEntriesL
-//
-// ----------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::GetDefinedVoipEntriesL(
- RPointerArray<CVoiceMailboxEntry>& aArray )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetDefinedVoipEntriesL =>" );
- // check VoIP mailbox
- CVmbxEngineBase* voIPBox = NULL;
- iVmbxFactory->CreateEngineL( voIPBox, EVmbxVoip );
- CleanupStack::PushL( voIPBox );
-
- RIdArray profileIds;
- CleanupClosePushL( profileIds );
-
- voIPBox->GetServiceIdsL( profileIds );
- TInt profileCounts = profileIds.Count();
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::GetDefinedVoipEntriesL:\
- VoIP profileCounts%I ", profileCounts);
- if ( 0 < profileCounts )
- {
- for ( TInt i( 0 ); i < profileCounts; i++ )
- {
- voIPBox->SetCurrentServiceId( profileIds[i] );
- CVoiceMailboxEntry* voIPEntry( NULL );
- // get voip entry
- voIPBox->GetL( voIPEntry );
- CleanupStack::PushL( voIPEntry );
- TPtrC vmbxVoIPName( KNullDesC );
- TInt resVoIP = voIPEntry->GetVmbxName( vmbxVoIPName );
-
- TPtrC vmbxVoIPAddress( KNullDesC );
- if ( KErrNone == resVoIP )
- {
- VMBLOGSTRING2(
- "VMBX: CVoiceMailboxImpl::GetDefinedVoipEntriesL:\
- vmbxVoIPName = %S ", &vmbxVoIPName );
- resVoIP = voIPEntry->GetVmbxNumber( vmbxVoIPAddress );
- }
- if ( KErrNone == resVoIP && vmbxVoIPAddress.Length()
- && vmbxVoIPName.Length() )
- {
- VMBLOGSTRING2(
- "VMBX: CVoiceMailboxImpl::GetDefinedVoipEntriesL:\
- vmbxVoIPAddress = %S ", &vmbxVoIPAddress );
- aArray.AppendL( voIPEntry );
- }
- CleanupStack::Pop( voIPEntry );
- }
- }
- CleanupStack::PopAndDestroy( &profileIds );
- CleanupStack::PopAndDestroy( voIPBox );
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetDefinedVoipEntriesL <=" );
- }
-
-// ----------------------------------------------------------------------------
-// CVoiceMailboxImpl::GetServiceIdsL
-//
-// ----------------------------------------------------------------------------
-void CVoiceMailboxImpl::GetServiceIdsL( RIdArray& aProfileIds )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetServiceIdsL =>" );
- // Get all Service Ids
- RIdArray profileIds;
- CleanupClosePushL( profileIds );
- CVmbxEngineBase* vmbx = NULL;
- iVmbxFactory->CreateEngineL( vmbx, EVmbxVoip );
- CleanupStack::PushL( vmbx );
- vmbx->GetServiceIdsL( profileIds );
- for ( TInt i( 0 ); i < profileIds.Count(); i++ )
- {
- aProfileIds.AppendL( profileIds[i]);
- }
- CleanupStack::PopAndDestroy( vmbx );
- CleanupStack::Pop( &profileIds );
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetServiceIdsL <=");
- }
-
-// ----------------------------------------------------------------------------
-// CVoiceMailboxImpl::GetVmbxImageL
-//
-// ----------------------------------------------------------------------------
-/* CGulIcon* CVoiceMailboxImpl::GetVmbxImageL(
- const TVoiceMailboxParams& aParams )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetVmbxImageL =>" );
- CGulIcon* guiIcon( NULL );
- CVmbxEngineBase* vmbxEngine = NULL;
- iVmbxFactory->CreateEngineL( vmbxEngine, aParams.iType );
- CleanupStack::PushL( vmbxEngine );
- if ( vmbxEngine )
- {
- guiIcon = vmbxEngine->GetVmbxImageL( aParams );
- }
- CleanupStack::PopAndDestroy( vmbxEngine );
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetVmbxImageL <=" );
- return guiIcon;
- } */
-
-// ----------------------------------------------------------------------------
-// CVoiceMailboxImpl::GetVmbxImagesL
-//
-// ----------------------------------------------------------------------------
-//
-/* CArrayPtr<CGulIcon>* CVoiceMailboxImpl::GetVmbxImagesL(
- RArray<TVoiceMailboxParams>& aParams )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetVmbxImagesL =>" );
- CAknIconArray* icons =
- new( ELeave ) CAknIconArray( KVmLbxItemsArraySize );
- CleanupStack::PushL( icons );
-
- const TInt count = aParams.Count();
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::GetVmbxImagesL count %I",
- count);
- for( TInt i = 0; i < count; i++ )
- {
- CGulIcon *icon = GetVmbxImageL( aParams[i] );
- icons->AppendL( icon );
- }
- CleanupStack::Pop( icons );
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::GetVmbxImagesL <=" );
- return icons;
- } */
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::SaveProvisionedEntryL
-//
-// ---------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::SaveProvisionedEntryL(
- const CVoiceMailboxEntry& aEntry )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::SaveProvisionedEntryL =>" );
- CVmbxEngineBase* vmbxEngine = NULL;
- iVmbxFactory->CreateEngineL( vmbxEngine, aEntry.VoiceMailboxType() );
- CleanupStack::PushL( vmbxEngine );
- TVoiceMailboxParams params( aEntry );
- vmbxEngine->SaveProvisionedEntryL( aEntry );
- CleanupStack::PopAndDestroy( vmbxEngine );
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::SaveProvisionedEntryL <=");
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::NotifyChangedL
-// notify changed and tell the change to observer
-//
-// ---------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::NotifyChangedL( TVmbxType aType )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::NotifyChangedL =>" );
- iUiUtilities->DismissDialogL();
- if ( iNotifyCallBack )
- {
- CVmbxEngineBase* vmbxEngine = NULL;
- iVmbxFactory->CreateEngineL( vmbxEngine, aType );
- CleanupStack::PushL( vmbxEngine );
- CVoiceMailboxEntry* entry( NULL );
- vmbxEngine->GetL( entry );
- CleanupStack::PushL( entry );
- iNotifyCallBack->HandleNotifyL( *entry );
- CleanupStack::PopAndDestroy( entry );
- CleanupStack::PopAndDestroy( vmbxEngine );
- }
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::NotifyChangedL <=" );
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::VmbxUiUtilities
-// notify changed and tell the change to observer
-//
-// ---------------------------------------------------------------------------
-//
-MVmbxUiUtilities& CVoiceMailboxImpl::VmbxUiUtilities()
- {
- return *iUiUtilities;
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::VmbxCenRepHandler
-// notify changed and tell the change to observer
-//
-// ---------------------------------------------------------------------------
-//
-MVmbxCenrepHandler& CVoiceMailboxImpl::VmbxCenRepHandler()
- {
- return *iCenRepHandler;
- }
-
-// ---------------------------------------------------------------------------
-// CVoiceMailboxImpl::CheckNumberProvisionedL
-//
-// ---------------------------------------------------------------------------
-//
-void CVoiceMailboxImpl::CheckNumberProvisionedL(
- const TVoiceMailboxParams& aParams )
- {
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::CheckNumberProvisionedL =>" );
- if ( ( EVmbxVoice == aParams.iType
- && EVmbxSimMemory == iCenRepHandler->StoreType() )
- || ( EVmbxVideo == aParams.iType ) )
- {
- // get current active process
- RProcess curProcess;
- TInt curProcessId( curProcess.SecureId().iId );
- VMBLOGSTRING2( "VMBX: CVoiceMailboxImpl::CheckNumberProvisionedL \
- Get cur process id: curProcessId = %I", curProcessId );
- // User press 1+send key or long press 1
- if ( KPhoneApplicationUid == curProcessId )
- {
- RPointerArray<CVoiceMailboxEntry> array;
- TCleanupItem item( CleanupRPointerArray, &array );
- CleanupStack::PushL( item );
- GetDefinedEntriesL( array );
- // Only operator has the possibility to configure device,
- // user is not allowed to edit the voice mail numbers
- if ( array.Count() < 1 )
- {
- // show not allowed user editing dialog
- iUiUtilities->ShowNotAllowedEditingDialogL();
- }
- CleanupStack::PopAndDestroy( &array ); //item
- }
- }
- // User don't have access to edit cs voice or video number
- User::Leave( KErrAccessDenied );
- VMBLOGSTRING( "VMBX: CVoiceMailboxImpl::CheckNumberProvisionedL <=" );
- }
-
-// End of file