diff -r 7d48bed6ce0c -r 987c9837762f vmbx/vmbxengine/src/vmbxcsvoiceengine.cpp --- a/vmbx/vmbxengine/src/vmbxcsvoiceengine.cpp Tue Aug 31 15:45:17 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,374 +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 CVmbxCsVoiceEngine class -* -*/ - - -// INCLUDE FILES -#include - -#include "vmbxenginebase.h" -#include "vmbxutilities.h" - -#include "vmbxlogger.h" -#include "vmbxcenrephandler.h" -#include "vmbxsimhandler.h" -#include "vmbxuiutilities.h" - -#include "vmbxcsvoiceengine.h" - -// CONSTANTS -_LIT (KVmbxIllegalSimCharacter, "w"); - -// ============================ MEMBER FUNCTIONS ============================== - -// ---------------------------------------------------------------------------- -// CVmbxCsVoiceEngine::CVmbxCsVoiceEngine -// C++ default constructor can NOT contain any code, that -// might leave. -// ---------------------------------------------------------------------------- -// -CVmbxCsVoiceEngine::CVmbxCsVoiceEngine( MVmbxResourceProvider& aProvider ) - : CVmbxEngineBase( aProvider ) - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::CVmbxCsVoiceEngine =>" ); - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::CVmbxCsVoiceEngine <=" ); - } - -// ---------------------------------------------------------------------------- -// CVmbxCsVoiceEngine::~CVmbxCsVoiceEngine -// Destructor. -// ---------------------------------------------------------------------------- -// -CVmbxCsVoiceEngine::~CVmbxCsVoiceEngine() - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::~CVmbxCsVoiceEngine =>" ); - delete iSimHandler; - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::~CVmbxCsVoiceEngine <=" ); - } - -// ---------------------------------------------------------------------------- -// CVmbxCsVoiceEngine::NewL -// Two-phased constructor. -// ---------------------------------------------------------------------------- -// -CVmbxCsVoiceEngine* CVmbxCsVoiceEngine::NewL( MVmbxResourceProvider& aProvider ) - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::NewL =>" ); - CVmbxCsVoiceEngine* self = - new( ELeave ) CVmbxCsVoiceEngine( aProvider ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::NewL <=" ); - return self; - } - -// ---------------------------------------------------------------------------- -// CVmbxCsVoiceEngine::ConstructL -// Symbian 2nd phase constructor can leave. -// ---------------------------------------------------------------------------- -// -void CVmbxCsVoiceEngine::ConstructL() - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::ConstructL =>" ); - TVmbxMemoryLocation storeType( EVmbxPhoneMemory ); - storeType = iProvider.VmbxCenRepHandler().StoreType(); - if ( EVmbxSimMemory == storeType ) - { - // create SimHandler - TRAPD( err, iSimHandler = CVmbxSimHandler::NewL() ); - // for avoid warning for compiling - err = err; - VMBLOGSTRING2( "VMBX: CVmbxCsVoiceEngine::ConstructL:\ - Create SimHandler %I" , err); - } - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::ConstructL <=" ); - } - -// ---------------------------------------------------------------------------- -// CVmbxCsVoiceEngine::GetL -// Gets voice mailbox number -// ---------------------------------------------------------------------------- -// -void CVmbxCsVoiceEngine::GetL( CVoiceMailboxEntry*& aEntry ) - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::GetL =>" ); - TInt result( KErrNotFound ); - - CVoiceMailboxEntry* vmbxEntry = CVoiceMailboxEntry::NewLC(); - // get als line info - vmbxEntry->SetVmbxAlsLineType( VmbxUtilities::AlsLine() ); - - vmbxEntry->SetVoiceMailboxType( EVmbxVoice ); - vmbxEntry->SetServiceId( KVmbxServiceVoice ); - // get store type from CenRep - TVmbxMemoryLocation storeType = iProvider.VmbxCenRepHandler().StoreType(); - - if ( EVmbxSimMemory == storeType && iSimHandler ) - { - // read from sim if it is available and active - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::GetL:\ - SIM available and active"); - TRAP( result, iSimHandler->GetL( *vmbxEntry ) ); - - VMBLOGSTRING2( "VMBX: CVmbxCsVoiceEngine::GetL :Sim res=%d", result ); - TPtrC vmbxNumber( KNullDesC ); - vmbxEntry->GetVmbxNumber( vmbxNumber ); - - // if no number from sim(both MBDN file and VMBX file) - if ( KErrNone != result || !vmbxNumber.Length() ) - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::GetL:\ - no number from sim, both MBDN file and VMBX file"); - // Get CS number from phone memory - result = iProvider.VmbxCenRepHandler().GetVmbxNumber( *vmbxEntry ); - vmbxEntry->SetUsingMemoryLocation( EVmbxPhoneMemory ); - } - else - { - vmbxEntry->SetUsingMemoryLocation( EVmbxSimMemory ); - } - } - // EVmbxPhoneMemory or sim not available - else - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::GetL:\ - EVmbxPhoneMemory or sim not available " ); - // Get CS number from phone memory - result = iProvider.VmbxCenRepHandler().GetVmbxNumber( *vmbxEntry ); - vmbxEntry->SetUsingMemoryLocation( EVmbxPhoneMemory ); - } - VMBLOGSTRING2( "VMBX: CVmbxCsVoiceEngine::GetL: res=%d", result ); - - User::LeaveIfError( result ); - CleanupStack::Pop( vmbxEntry ); - aEntry = vmbxEntry; - vmbxEntry = NULL; - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::GetL <=" ); - } - -// ---------------------------------------------------------------------------- -// CVmbxCsVoiceEngine::SaveL -// Saves voice mailbox number -// ---------------------------------------------------------------------------- -// -void CVmbxCsVoiceEngine::SaveL( const CVoiceMailboxEntry& aEntry, - TBool aShowNotesAllowed ) - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::SaveL =>" ); - - TPtrC vmbxNumber( KNullDesC ); - aEntry.GetVmbxNumber( vmbxNumber ); - - if ( vmbxNumber.Length() - && ( !VmbxUtilities::IsValidPhoneNumber( vmbxNumber ) - || VmbxUtilities::IsEmergencyNumber( vmbxNumber ) ) ) - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::SaveL: number invalid <=" ); - User::Leave( KErrArgument ); - } - - TVoiceMailboxParams params; - if ( IsWritable( params ) ) - { - TVmbxMemoryLocation storeType = - iProvider.VmbxCenRepHandler().StoreType(); - VMBLOGSTRING2( "VMBX: CVmbxCsVoiceEngine::SaveL: storeType=%I", - storeType ); - if ( EVmbxSimMemory == storeType && iSimHandler ) - { - // Save to sim - SaveEntryToSimL( aEntry, aShowNotesAllowed ); - } - else - { - // Save to cenrep - SaveEntryToPhoneL( aEntry, aShowNotesAllowed ); - } - } - else - { - // sim files not exist, its may need by forcing save, eg, OMA. - if ( !iSimHandler ) - { - SaveEntryToPhoneL( aEntry, aShowNotesAllowed ); - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::SaveL: \ - sim files not exist then save to phone" ); - } - else - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::SaveL: \ - sim files unwritable<=" ); - User::Leave( KErrNotSupported ); - } - } - - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::SaveL <=" ); - } - -// ---------------------------------------------------------------------------- -// CVmbxCsVoiceEngine::SaveProvisionedEntryL -// Saves Provisioned voice mailbox number -// ---------------------------------------------------------------------------- -// -void CVmbxCsVoiceEngine::SaveProvisionedEntryL( - const CVoiceMailboxEntry& aEntry ) - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::SaveProvisionedEntryL =>" ); - SaveL( aEntry, EFalse ); - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::SaveProvisionedEntryL <=" ); - } - -// --------------------------------------------------------------------------- -// CVmbxCsVoiceEngine::CheckConfiguration -// -// --------------------------------------------------------------------------- -// -TBool CVmbxCsVoiceEngine::CheckConfiguration( const TVoiceMailboxParams& aParams, - const TInt aFlags ) - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::CheckConfiguration =>" ); - TBool configuration( EFalse ); - // check thr property whether allow user to edit number - if ( EVmbxChangeNbrAllowedOnUi & aFlags ) - { - configuration = iProvider.VmbxCenRepHandler().IsAllowedUserEdit(); - if ( configuration ) - { - configuration = IsWritable( aParams ); - } - } - else - { - configuration = CVmbxEngineBase::CheckConfiguration(aParams, aFlags); - } - VMBLOGSTRING2( "VMBX: CVmbxCsVoiceEngine::CheckConfiguration: conf%I <=", - configuration ); - return configuration; - } - -// ---------------------------------------------------------------------------- -// CVmbxCsVoiceEngine::SaveEntryToPhone -// Saves number to storage that user selects from the offered list -// ---------------------------------------------------------------------------- -// -void CVmbxCsVoiceEngine::SaveEntryToPhoneL( const CVoiceMailboxEntry& aEntry, - TBool aShowNotesAllowed ) - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::SaveEntryToPhoneL: =>" ); - TInt result( KErrArgument ); - - result = iProvider.VmbxCenRepHandler().Save( aEntry ); - - if ( KErrNone == result && aShowNotesAllowed ) - { - iProvider.VmbxUiUtilities().ShowInformationdNoteL( ESavedToPhoneMemory ); - } - VMBLOGSTRING2( "VMBX: CVmbxCsVoiceEngine::SaveEntryToPhoneL: result=%I <=", - result ); - User::LeaveIfError( result ); - } - -// ---------------------------------------------------------------------------- -// CVmbxCsVoiceEngine::SaveEntryToSim -// For saving to place that user selects -// ---------------------------------------------------------------------------- -// -void CVmbxCsVoiceEngine::SaveEntryToSimL( const CVoiceMailboxEntry& aEntry, - TBool aShowNotesAllowed ) - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::SaveEntryToSimL: =>" ); - TInt result( KErrGeneral ); - - // number containing "w"-character is not allowed to save to sim - TPtrC ptrNumber( KNullDesC ); - TInt numError = aEntry.GetVmbxNumber( ptrNumber ); - if ( KErrNotFound != ptrNumber.Find( KVmbxIllegalSimCharacter ) ) - { - result = KErrArgument; - } - - if ( iSimHandler ) - { - result = iSimHandler->Save( aEntry ); - if ( KErrNone == result && aShowNotesAllowed ) - { - iProvider.VmbxUiUtilities().ShowInformationdNoteL( ESavedToSimMemory ); - } - } - - VMBLOGSTRING2( "VMBX: CVmbxCsVoiceEngine::\ - SaveEntryToSimL: result=%I <=", result ); - - User::LeaveIfError( result ); - } - -// ---------------------------------------------------------------------------- -// CVmbxCsVoiceEngine::IsSimWritable -// ETrue if Sim is allowed to be writable -// ---------------------------------------------------------------------------- -TBool CVmbxCsVoiceEngine::IsSimWritable() - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::IsSimWritable: =>" ); - TBool result( EFalse ); - if ( !( iProvider.VmbxCenRepHandler().IsSimReadOnly() ) - && iSimHandler && iSimHandler->IsWritable() ) - { - result = ETrue; - } - VMBLOGSTRING2( "VMBX: CVmbxCsVoiceEngine::IsSimWritable:\ - result=%I <=", result ); - return result; - } - -// ---------------------------------------------------------------------------- -// CVmbxCsVoiceEngine::IsWritable -// ETrue if Sim is allowed to be writable -// ---------------------------------------------------------------------------- -TBool CVmbxCsVoiceEngine::IsWritable( const TVoiceMailboxParams& /*aParams*/ ) - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::IsWritable =>" ); - TBool result( EFalse ); - TVmbxMemoryLocation storeType = - iProvider.VmbxCenRepHandler().StoreType(); - - if ( EVmbxPhoneMemory == storeType ) - { - result = ETrue; - } - else - { - if ( iSimHandler ) - { - #ifdef __WINS__ - result = ETrue; - #else - result = IsSimWritable(); - #endif - } - else - { - VMBLOGSTRING( "VMBX: CVmbxCsVoiceEngine::IsWritable: \ - sim files not exist then use phone memory" ); - result = ETrue; - } - } - VMBLOGSTRING2( "VMBX: CVmbxCsVoiceEngine::IsWritable:\ - result=%I <=", result ); - return result; - } - -// End of file