engines/vmbxengine/src/vmnumber.cpp
branchRCL_3
changeset 19 7d48bed6ce0c
parent 18 594d59766373
child 20 987c9837762f
--- a/engines/vmbxengine/src/vmnumber.cpp	Thu Aug 19 10:28:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4674 +0,0 @@
-/*
-* Copyright (c) 2002-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 RVmbxNumber class.
-*
-*/
-
-
-// INCLUDE FILES
-
-#include <vmnumber.h>
-#include <e32std.h>
-#include <avkon.hrh>
-#include <bautils.h>
-#include <eikenv.h>
-#include <commonphoneparser.h>
-#include <aknnotewrappers.h>
-#include <StringLoader.h>
-#include <data_caging_path_literals.hrh>
-#include <PhCltUtils.h>
-#include <vmbx.rsg>
-// includes for phonebook search
-#include <cphonecntfactory.h>
-#include <cphcntsingleitemfetch.h>
-#include <featmgr.h>
-#include <AknIconArray.h>
-#include <AknsUtils.h>
-
-#ifdef RD_STARTUP_CHANGE
-    #include <startupdomainpskeys.h>//for KPSSimStatus
-#endif
-
-#include <AknQueryDialog.h>
-
-/*****************************************************
-*  Series 60 Customer / ETel
-*  Series 60 ETel API
-*****************************************************/
-#include <mpbutil.h>
-#include <utf.h> //CnvUtfConverter
-#include "voicemailboxprivatecrkeys.h"
-#include "voicemailboxdomaincrkeys.h"
-#include <PSVariables.h>
-#include <e32property.h>
-#include "vmdialog.h"
-#include "vmlist.h"
-#include "vmblogger.h"
-#include <vm.mbg>
-#include "vmspshandler.h"
-#include "vmbshandler.h"
-
-// CONSTANTS
-const TInt KVmFlagOpened                 = 0x00000001;
-const TInt KVmFlagPhoneOpened            = 0x00000002;
-const TInt KVmFlagSimReadSupport         = 0x00000004;
-const TInt KVmFlagPhoneModuleLoaded      = 0x00000008;
-const TInt KVmFlagNotifyRequested        = 0x00000010;
-const TInt KVmFlagNotifyOnActiveLineOnly = 0x00000020;
-const TInt KVmFlagPhonebookBeingCached   = 0x00000040;
-const TInt KVmFlagSimWriteSupport        = 0x00000080;
-const TInt KVmFlagSimVmbxNumSupport      = 0x00000100;
-// Flag of external API saving number to phone
-const TInt KForceSavedToPhoneMem         = 0x00000400;
-
-//flag of CS defined number
-const TInt KVmFlagCSNumberDefined        = 0x00000001;
-//flag of Vedio defined number
-const TInt KVmFlagVideoNumberDefined     = 0x00000002;
-//flag of VoIP defined number
-const TInt KVmFlagVoIpNumberDefined      = 0x00000004;
-// phone application uid
-const TInt KPhoneApplicationUid          = 0x100058B3;
-
-_LIT (KVmbxResourceFileDrive, "Z:");
-// The file directory is in literal KDC_RESOURCE_FILES_DIR
-// (in data data_caging_path_literals.hrh)
-_LIT (KVmbxResourceFileName, "Vmbx.rsc");
-
-// Phonebook entry name
-_LIT( KVmbxPhoneBookEntryName, "Vmbx" );  // If changed, remember to update
-// the size of KVmbxPhoneBookEntryNameLength in VmNumber.h
-const TInt KVmbxPhonebookRetriesIfInUse = 20;
-const TInt KVmbxPhonebookRetryDelay     = 100000;  // 0.1s
-
-const TInt KVmbxPhonebookBufferSize     = 150;  // Estimated max size 128
-
-_LIT( KVmbxOnePlus, "1" );
-
-// Format of the IAP selection list query.
-_LIT( KQueryItemFormat, "%d\t%S" );
-//for the mbm file
-_LIT( KVmMbmDrive, "Z:" );
-_LIT( KVmLibMbmFile, "vm.mbm" );
-
-const TInt KVmNumOverwrite = 1;
-
-const TInt KVmNamStoreMDNId = RMobileNamStore::EMobileDirectoryNumber;
-// MIN is not included in mmetel std params.  Third extended param
-const TInt KVmNamStoreMINId = RMobileNamStore::ENumStandardNamParameters + 3;
-const TInt KVmPhNumMinLength = 3;
-const TInt KVmLbxItemsArraySize = 3;
-const TInt KVmOriginalNumLength = 256;
-const TInt KVmPhoneNumDigitsMinLength = 2;
-const TInt KVmPhoneNumDigitsMaxLength = 40;
-const TInt KVmbxOnlyDefinedOneNumber = 1;
-const TInt KMailBoxLimitForPrompt = 1;
-
-_LIT (KVmbxIllegalSimCharacter, "w");
-_LIT (KTestNumber, "12345");
-
-const TInt KVmExtFileSize = 20;
-const TInt KVmMaxStoreSize = 48;
-
-const TInt KDefaultServiceId = 0; // default ServerId
-const TInt KCSorVideoServiceId = 1; // CS or Video ServerId
-const TInt KDefaultDefinedNumberCount = 0; // default defined number count
-
-// When the define VM_USE_TSY is set, SIM phonebook will be used and
-// methods won't work if a compatible TSY/DOS environment is not present.
-
-/*****************************************************
-*  Series 60 Customer / ETel
-*  Series 60 ETel API
-*****************************************************/
-// &
-/*****************************************************
-*  Series 60 Customer / ETel
-*  Series 60 ETel API
-*****************************************************/
-
-#ifndef __WINS__  // SIM phonebook stalls in WINS
-#define VM_USE_TSY
-#endif
-// ================= MEMBER FUNCTIONS ==========================================
-
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::RVmbxNumber
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RVmbxNumber::RVmbxNumber() : iNotifyCallBack( NULL ),
-                                iUserAlsObserver( NULL ),
-                                iPhoneBookInfoPckg( iPhoneBookInfo ),
-                                iPhoneVoicemailInfoPckg( iPhoneVoicemailInfo ),
-                                iRSatSession(),
-                                iRSatClient( *this ),
-                                iNotifyHandler( NULL ),
-                                iSession( NULL ),
-                                iResourceFileOffset( 0 ),
-                                iFlags( KForceSavedToPhoneMem ), 
-                                iQuery( NULL ),
-                                iClosedPtr( NULL ),
-                                iCoeEnv( NULL ),
-                                iVmNumOpts( EVmNumOptsBlank ),
-                                iVmUiOpts( 0 ), 
-                                iSynchronize( EFalse ),
-                                iType( EVmbxNone ),
-                                iVMSimQueryDialog( NULL ),
-                                iVideoQuery( NULL ),
-                                iTypeSelectionQuery( NULL ),
-                                iAlphaStringFound( EFalse ),
-                                iAlphaStringFromSIM( NULL ),
-                                iNumberFound( EFalse ),
-                                iUSimFirstRoundTest( ETrue ),
-                                iCntFetch( NULL ),
-                                iVmSpsHandler( NULL ),
-                                iVmBsHandler( NULL ),
-                                iFeatMgrInitialized( EFalse ),
-                                iSimCardFound( EFalse )              
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::RVmbxNumber =>" );
-
-    // Default sets to Phone memory, this can be changed in RVmbxNUmber::Open()
-    iMemoryLocation = EVmbxPhoneMemory;
-
-    //Create repository and notify handler.
-    TRAPD( error,
-           FeatureManager::InitializeLibL();
-           iFeatMgrInitialized = ETrue;
-           VMBLOGSTRING( "VMBX: RVmbxNumber::RVmbxNumber: FeatureManager initialized" );
-
-           iSession = CRepository::NewL( KCRUidVoiceMailbox );
-           VMBLOGSTRING( "VMBX: RVmbxNumber::RVmbxNumber: CRepository created" );
-
-           if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
-               {
-               iVmSpsHandler = CVmSPSHandler::NewL();
-               VMBLOGSTRING( "VMBX: RVmbxNumber::RVmbxNumber: CVmSPSHandler created" );
-               }
-
-           iVmBsHandler = CVmBSHandler::NewL();
-           VMBLOGSTRING( "VMBX: RVmbxNumber::RVmbxNumber: CVmBSHandler created" );
-           );
-
-    if ( error != KErrNone )
-        {
-        VMBLOGSTRING2( "VMBX: RVmbxNumber::RVmbxNumber : \
-        Initialization error %I", error );
-        _LIT(KVmbxConstructorPanicType,"RVmbxNumber::RVmbxNumber");
-        User::Panic( KVmbxConstructorPanicType, error );
-        }
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::RVmbxNumber <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::~RVmbxNumber
-// Destructor
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RVmbxNumber::~RVmbxNumber()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::~RVmbxNumber =>" );
-
-    if ( iNotifyHandler )
-        {
-        iNotifyHandler->StopListening();
-        delete iNotifyHandler;
-        }
-
-    delete iSession;
-    delete iAlphaStringFromSIM;
-
-    delete iVmSpsHandler;
-    delete iVmBsHandler;
-
-    if ( iFeatMgrInitialized )
-        {
-        FeatureManager::UnInitializeLib();
-        }
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::~RVmbxNumber <=" );
-    }
-
-
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::Open
-// Opens a new ETel connection
-// -----------------------------------------------------------------------------
-//
-/*****************************************************
-*  Series 60 Customer / ETel
-*  Series 60 ETel API
-*****************************************************/
-EXPORT_C TInt RVmbxNumber::Open()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::Open =>" );
-
-    TInt ret( KErrGeneral );
-    // initialize the CenRep number in the bankup store
-    ret = BackUpSimNumber( KEmptyVoiceMailNumber, KVmbxTmpNumberLinePrimary );
-    VMBLOGSTRING2( "RVmbxNumber::Open(): Clear KVmbxTmpNumberLinePrimary result = %d",
-    ret );
-    ret = BackUpSimNumber( KEmptyVoiceMailNumber, KVmbxTmpNumberLineAuxiliary );
-    VMBLOGSTRING2( "RVmbxNumber::Open(): Clear KVmbxTmpNumberLineAuxiliary result = %d",
-    ret );
-    VMBLOGSTRING( "RVmbxNumber::Open(): Clear Tmp numbers from CenRep" );
-    if ( iFlags & KVmFlagOpened )
-        {
-        VMBLOGSTRING( "VMBX: RVmbxNumber::Open: Opened already" );
-        ret = KErrNone;
-        }
-    else
-        {
-        ret = ConnectETelServer();
-        if ( !ret )
-            {
-            // try to load ETel TSY module
-            ret = iTelServer.LoadPhoneModule( KMmTsyModuleName );
-            if ( !ret )
-                {
-                iFlags |= KVmFlagPhoneModuleLoaded;
-
-                RTelServer::TPhoneInfo info;
-                ret = iTelServer.GetPhoneInfo( 0, info );
-                if ( !ret )
-                    {
-                    ret = iPhone.Open( iTelServer, info.iName );
-                    if ( !ret )
-                        {
-                        iFlags |= KVmFlagPhoneOpened;
-                        }
-                    }
-                }
-            }
-
-        if ( !ret )
-            {
-            ret = Open( iPhone );
-            }
-        else
-            {
-            Close();
-            }
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::Open <=" );
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::Open
-// Opens a new ETel connection, when there is existing ETel connection already
-// -----------------------------------------------------------------------------
-//
-/*****************************************************
-*  Series 60 Customer / ETel
-*  Series 60 ETel API
-*****************************************************/
-EXPORT_C TInt RVmbxNumber::Open( RMobilePhone& aPhone )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::Open =>" );
-    TInt result( KErrNone );
-    TInt alsline( EAlsLine1 );
-
-    if ( iFlags & KVmFlagOpened )
-        {
-        VMBLOGSTRING( "VMBX: RVmbxNumber::Open: Opened already" );
-        return KErrNone;
-        }
-    iPhone = aPhone;
-
-    result = iSession->Get( KVmUsesSimMemory, iMemoryLocation );
-
-    if ( KErrNone != result )
-        {
-        if ( KErrNotFound == result )
-            {
-            iMemoryLocation = EVmbxPhoneMemory;
-            }
-        else
-            {
-            Close();
-            VMBLOGSTRING( "VMBX: RVmbxNumber::Open: Memory location error" );
-            return result;
-            }
-        }
-
-    VMBLOGSTRING2( "iMemoryLocation = %d", iMemoryLocation );
-
-    // Connect to system agent
-    RProperty property;
-    TInt psErr( KErrNone );
-
-#ifdef RD_STARTUP_CHANGE
-    psErr = property.Attach( KPSUidStartup, KPSSimStatus );
-#else
-    psErr = property.Attach( KUidSystemCategory, KPSUidSimCStatusValue );
-#endif
-    if ( KErrNone != psErr )
-        {
-        VMBLOGSTRING( "VMBX: RVmbxNumber::Open: SIM status property error" );
-        return psErr;
-        }
-
-   result = iSsSettings.Open( NULL );
-
-    if ( KErrNone != result )
-        {
-        Close();
-        VMBLOGSTRING( "VMBX: RVmbxNumber::Open: SS setting opening error" );
-        return result;
-        }
-
-    // ignore error
-    iSsSettings.Register( ESSSettingsAls, *this );
-
-    // get the current ALS line
-    if ( KErrNone != GetAlsLine( alsline ) )
-        {
-        alsline = EAlsLine1;  // if problems, assume primary line
-        }
-
-#ifdef VM_USE_TSY
-
-    TInt nValue;
-    psErr = property.Get( nValue );
-    TBool simStatus = EFalse;
-
-    // Sim aceess test on startup
-    iStartUpTest = ETrue;
-#ifdef RD_STARTUP_CHANGE
-
-    if ( ( FeatureManager::FeatureSupported( KFeatureIdSimCard ) )
-        && ( ESimNotPresent != nValue ) )
-        {
-        simStatus = ETrue;
-        }
-
-#else //RD_STARTUP_CHANGE
-
-    if ( ( FeatureManager::FeatureSupported( KFeatureIdSimCard ) )
-        && ( EPSCSimRemoved != nValue ) )
-        {
-        simStatus = ETrue;
-        }
-#endif // RD_STARTUP_CHANGE
-
-    VMBLOGSTRING2( "simStatus = %d", simStatus );
-    if ( simStatus )//Is simCard supproted and it is not removed
-        {
-        iSimCardFound = ETrue;
-
-        // Get identifiers from MBI-file
-        if ( EAlsLine1 == alsline )
-            {
-            result = MailboxNumbersIdentifiers();
-            VMBLOGSTRING2( "Identifier result = %d", result );
-            if ( KErrPathNotFound == result )
-                {
-                // try open vmbx-phonebook next
-                iPhoneBookType = EVMBXPhoneBook;
-                iMbdnPhonebookOk = EFalse;
-                VMBLOGSTRING( "no mbdn file is found, use vmbx phonebook" );
-                }
-            else
-                {
-                iPhoneBookType = EMBDNPhoneBook;
-                iMbdnPhonebookOk = ETrue;
-                // if mbdn file can be found, set the entry index to EAlsLine1
-                iPhoneVoicemailInfo.iVoice = EAlsLine1;
-
-                // try to open mbdn-type phonebook
-                result = iPhoneBook.Open( iPhone, KETelIccMbdnPhoneBook );
-                VMBLOGSTRING2( "Mbdn phonebook opening result = %I ", result );
-                if ( KErrNone == result )
-                    {
-                    // Get phonebook info
-                    result = PhoneBookInfo();
-                    VMBLOGSTRING2( "Mbdn phonebook opening again \
-                    result = %I ", result );
-                    }
-                // close mbdn phonebook when error in opening or GetInfo 
-                // to test vmbx-phonebook
-                if ( KErrNone != result )
-                    {
-                    VMBLOGSTRING( "Close MBDN phonebook" );
-                    iPhoneBook.Close();
-                    iMbdnPhonebookOk = EFalse;
-                    // try open vmbx-phonebook next 
-                    iPhoneBookType = EVMBXPhoneBook;
-                    }
-                // close mbdn phonebook when no number found 
-                // to test vmbx-phonebook
-                else if ( ( KErrNone == result ) && iNoNumberFound )
-                    {
-                    VMBLOGSTRING( "mbdn close, number not found" );
-                    iMbdnPhonebookOk = ETrue;
-                    iPhoneBook.Close();
-                    // try open vmbx-phonebook next 
-                    iPhoneBookType = EVMBXPhoneBook;
-                    }
-                }
-            }
-
-        if ( EAlsLine2 == alsline || EVMBXPhoneBook == iPhoneBookType )
-            {
-            // the mbdn number is not used when line2 is active
-            // the number is only got from vmbx-phonebook
-            iMbdnPhonebookOk = EFalse;
-            // try to open vmbx-type phonebook
-            result = iPhoneBook.Open( iPhone, KETelIccVoiceMailBox );
-            VMBLOGSTRING2( "Vmbx phonebook opening result = %I ", result );
-            if ( KErrNone == result )
-                {
-                // check that this phonebook supports reading
-                result = PhoneBookInfo();
-                VMBLOGSTRING( "VmbxPhoneBook opened" );
-                }            	
-            }
-        VMBLOGSTRING3( "VMBX: RVmbxNumber::Open: \
-        iMbdnPhonebookOk: %I, iNoNumberFound: %I", iMbdnPhonebookOk, iNoNumberFound );
-        // reopen mbdn-phonebook when vmbx-phonebook has no number
-        if ( iMbdnPhonebookOk && iNoNumberFound )
-           {
-           VMBLOGSTRING( "reopen mbdn" );
-           iPhoneBook.Close();
-           // try open vmbx-phonebook next
-           iPhoneBookType = EMBDNPhoneBook;
-           // try to open mbdn-type phonebook
-           result = iPhoneBook.Open( iPhone, KETelIccMbdnPhoneBook );
-           VMBLOGSTRING2( "Mbdn phonebook opening result = %I ", result );
-           if ( KErrNone == result )
-               {
-               // Get phonebook info
-               result = PhoneBookInfo();
-               }
-           // close phonebook when error in opening or GetInfo
-           if ( KErrNone != result )
-               {
-               VMBLOGSTRING( "Close MBDN phonebook" );
-               iPhoneBook.Close();
-               }
-           }
-
-        // set readonly state if aquired
-        if ( IsReadOnlySIM() )
-            {
-            iFlags &= ~KVmFlagSimWriteSupport;
-            VMBLOGSTRING( "VMBX: RVmbxNumber::Open: ReadOnly set" );
-            }
-
-        if ( KErrNone != result && KErrInUse != result )
-            {
-            // Fatal error
-            Close();
-            property.Close();
-            VMBLOGSTRING( "VMBX: RVmbxNumber::Open: Phonebook info error" );
-
-            return result;
-            }
-
-        // If no SIM support for vmbx numbers, we don't need
-        //ETel for anything. -> close all ETel resources
-        if ( !( iFlags &
-                (KVmFlagPhonebookBeingCached | KVmFlagSimReadSupport ) ) )
-            {
-            CloseETel();
-            }
-        }
-    // Sim access rights are tested only in start up
-    iStartUpTest = EFalse;
-#endif  // VM_USE_TSY
-
-    property.Close();
-
-    if ( FeatureManager::FeatureSupported( KFeatureIdProtocolCdma ) )
-        {
-        result = iSession->Get( KVmNumOpts,iVmNumOpts );
-
-        if ( KErrNone != result )
-            {
-            if ( KErrNotFound == result )
-                {
-                iVmNumOpts = EVmNumOptsBlank;
-                }
-            else
-                {
-                Close();
-                VMBLOGSTRING( "VMBX: RVmbxNumber::Open: NumOpt error" );
-                return result;
-                }
-            }
-        }
-    result = iSession->Get( KVmUIOpts, iVmUiOpts );
-
-    if ( KErrNone != result )
-        {
-        if ( KErrNotFound == result )
-            {
-            iVmUiOpts = 0;
-            }
-        else
-            {
-            Close();
-            VMBLOGSTRING( "VMBX: RVmbxNumber::Open: NumOpt error" );
-            return result;
-            }
-        }
-
-    iCoeEnv = CEikonEnv::Static();
-
-    // load the resources for queries and notes
-    if ( iCoeEnv )
-        {
-        __ASSERT_DEBUG( iCoeEnv,
-                    User::Panic( KVmbxPanicCategory, EVmbxNoCoeEnv ) );
-
-        // load the resources for queries and notes
-        TInt tmpStatus;
-        TRAP( tmpStatus, LoadResourceL() );
-        result = tmpStatus;
-
-        if ( result )
-            {
-            Close();
-            }
-        else
-            {
-            iFlags |= KVmFlagOpened;
-            }
-        }
-
-    HandleNumberStores( alsline );
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::Open <=" );
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::ConnectETelServer
-// Connects to ETel server
-// -----------------------------------------------------------------------------
-//
-/*****************************************************
-*  Series 60 Customer / ETel
-*  Series 60 ETel API
-*****************************************************/
-TInt RVmbxNumber::ConnectETelServer()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::ConnectETelServer =>" );
-    const TInt KRetryCount = 7;
-    const TInt KRetryTimeout = 100000;
-    TInt status( KErrNone );
-
-    for ( TInt i( 0 ); i < KRetryCount; i++ )
-        {
-        status = iTelServer.Connect();
-        if ( !status )
-            {
-            break;
-            }
-        User::After( KRetryTimeout );
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::ConnectETelServer <=" );
-    return status;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::GetVmbxNumber
-// Fetches the specified vmbx number
-// -----------------------------------------------------------------------------
-//
-/*****************************************************
-*  Series 60 Customer / ETel
-*  Series 60 ETel API
-*****************************************************/
-EXPORT_C TInt RVmbxNumber::GetVmbxNumber( TDes& aNumber,
-                                                    TVmbxNumberEntry aEntry )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetVmbxNumber =>" );
-    __ASSERT_DEBUG( iFlags & ( KVmFlagOpened ),
-                    User::Panic(KVmbxPanicCategory, EVmbxNotConnected) );
-    __ASSERT_DEBUG( aNumber.MaxLength() >= KVmbxMaxNumberLength,
-                    User::Panic(KVmbxPanicCategory, EVmbxDescriptorTooSmall) );
-
-    TInt lineNumber( aEntry );
-
-    if ( aEntry == EAlsActiveLineEntry )
-        {
-        // get the current ALS line
-        if ( GetAlsLine( lineNumber ) != KErrNone )
-            {
-            lineNumber = EAlsLine1;  // if problems, assume primary line
-            }
-        }
-    TInt ret( KErrNotFound );
-    TBuf< KVmbxMaxNumberLength > number;
-    TBuf< KVmbxMaxNumberLength > line2AlsNumber;
-
-    //VMN callback#
-    if ( FeatureManager::FeatureSupported( KFeatureIdProtocolCdma ) &&
-         ( iVmUiOpts & KVmNumOverwrite ) )
-        {
-        ret = GetVmNumFromVMN( number );
-        if ( ret == KErrNone )
-            {
-            aNumber.Copy( number );
-            VMBLOGSTRING( "VMBX: RVmbxNumber::GetVmbxNumber OK"  );
-            return ret;
-            }
-        else if ( ret != KErrNotFound )
-            {
-            VMBLOGSTRING2( "VMBX: RVmbxNumber:: \
-            GetVmbxNumber error = %I", ret );
-            return ret;
-            }
-        }
-
-    TBool isFromSD = EFalse;
-    TBool isFromSim = EFalse;
-
-    // Get saved number
-    switch ( iVmNumOpts )
-        {
-        case EVmNumOptsBlank:
-            {
-            // On ALS1 read number from sim, if sim is active
-            // On ALS2 always read number from sim when vmbx phone memory in use
-            if ( IsSimMemory() && ( ( EAlsLine1 == lineNumber )
-                           || ( EAlsLine2 == lineNumber ) ) )
-                {
-                ret = GetVmNumFromSIM( number, lineNumber );
-                isFromSim = ETrue;
-                // If there is no voice mailbox number available on SIM,
-                // a note(qtn_...) should be shown,
-                // when pressing '1' + 'send' key or long pressing '1' key
-                // to try to call voice mailbox by phone application.
-                if ( ( !UserEditNumber( lineNumber ) 
-                    || !IsPhoneMemForcedEdit( lineNumber ) ) &&
-                    ( ( KErrNotFound == ret ) || ( KErrNotSupported == ret ) )
-                    && !AllowedToChangeTheNumber() )
-                    {
-                    // get current active process
-                    RProcess curProcess;
-                    TInt curProcessId( curProcess.SecureId().iId );
-                    VMBLOGSTRING2( "VMBX: RVmbxNumber:: Get cur process id: \
-                    curProcessId = %I", curProcessId );
-
-                    if ( KPhoneApplicationUid == curProcessId )
-                        {
-                        TBool thisClosed( EFalse );
-                        iClosedPtr = &thisClosed;
-
-                        // This check is done because phone client calls  
-                        // GetVmbxNumber and then SelectTypeL, 
-                        // which causes note qtn_... to be shown twice
-                        if ( IsNoNumberNoteAllowed() )
-                            {
-                            // show the information note to user
-                            TRAP_IGNORE( 
-                            ShowInformationNoteL( R_VOICE_NO_VMBX_NUMBER_NOTE ) )
-                            }
-
-                        iClosedPtr = NULL;
-                        if ( thisClosed )
-                            {
-                            //End Key Pressed
-                            VMBLOGSTRING( "VMBX: RVmbxNumber::GetVmbxNumber: \
-                            End key pressed" );
-                            return KErrCancel;
-                            }
-                        VMBLOGSTRING( "VMBX: RVmbxNumber::GetVmbxNumber \
-                        No voice mailbox number available on SIM" );
-                        }
-                    }
-                if ( KErrNone == ret )
-                    {
-                    ResetUserEditNumber( lineNumber );
-                    }
-                VMBLOGSTRING2( "GetVmNumFromSIM = %I", ret );
-                }
-            else
-                {
-                ret = KErrNotFound;
-                }
-            break;
-            }
-        case EVmNumOptsDedicatedVMN:
-            {
-            ret = GetVmNumFromVMN( number );
-            break;
-            }
-        case EVmNumOptsMIN:
-        case EVmNumOptsOnePlusMIN:
-            {
-            ret = GetVmNumFromNamStore( number, EVmbxMIN );
-            break;
-            }
-        case EVmNumOptsMDN:
-        case EVmNumOptsOnePlusMDN:
-            {
-            ret = GetVmNumFromNamStore( number );
-            break;
-            }
-        case EVmNumOptsMDNCustom:
-        case EVmNumOptsOnePlusMDNCustom:
-            {
-            ret = GetVmNumFromSD( number, lineNumber );
-            if ( ret != KErrNone )
-                {
-                ret = GetVmNumFromNamStore( number );
-                }
-            break;
-            }
-        case EVmNumOptsSharedData:
-            {
-            ret = GetVmNumFromSD( number, lineNumber );
-            isFromSD = ETrue;
-            break;
-            }
-        default:
-            //
-            break;
-        }
-
-        // On ALS2, if number exists on SD, then use it
-        // if ALS2 number found in SIM, but not in phone memory,
-        // reset flag for automatic SIM number use.
-        // Number found from SIM is saved to SD later
-
-    if ( lineNumber == EAlsLine2 )
-        {
-         TInt alsReturnValue = GetVmNumFromSD( line2AlsNumber, lineNumber );
-         if ( ( alsReturnValue == KErrNone ) && ( line2AlsNumber.Length() ) )
-            {
-            VMBLOGSTRING( "GetVmbxNumber::ALS2 number found from CenRep"  );
-            number.Copy( line2AlsNumber );
-            isFromSD = ETrue;
-            }
-         else
-            {
-            if ( ( KErrNone == ret ) && isFromSim )
-                {
-                VMBLOGSTRING( "[VMBX] GetVmbxNumber::ALS 2 number found from SIM"  );
-                ResetUserEditNumber( lineNumber );
-                }
-            else
-                {
-                number.Zero();
-                }
-            }
-        }
-
-    // No number retrieved so try to read SD for number
-    // (Phone memory in use)
-    if ( ret != KErrNone )
-        {
-        switch( iVmNumOpts )
-            {
-            case EVmNumOptsBlank:
-            case EVmNumOptsDedicatedVMN:
-            case EVmNumOptsMIN:
-            case EVmNumOptsOnePlusMIN:
-            case EVmNumOptsMDN:
-            case EVmNumOptsOnePlusMDN:
-                {
-                if ( !IsSimMemory() )
-                    {
-                    ret = GetVmNumFromSD( number, lineNumber );
-                    VMBLOGSTRING2( "GetVmNumFromSD = %I", ret );
-                    isFromSD = ETrue;
-                    }
-                else
-                    {
-                    aNumber.Copy( number );
-                    VMBLOGSTRING2( "number = %S", &number );
-                    }
-                break;
-                }
-            default:
-                break;
-            }
-        }
-
-    if ( ret == KErrNone )
-        {
-        if ( number.Length() )
-            {
-             VMBLOGSTRING( "Number length > 0" );
-            //Synchronize the number in storage with the retrieved number
-            if ( iVmNumOpts != EVmNumOptsMDNCustom &&
-                iVmNumOpts != EVmNumOptsOnePlusMDNCustom &&
-                !isFromSD )
-                {
-                iSynchronize = ETrue;
-
-                if ( ( iFlags & KVmFlagSimWriteSupport ) ||
-                       ( lineNumber == EAlsLine2 ) )
-                    {
-                    TInt error( KErrNone );
-                    // If number is not fetched from SIM and SIM memory active
-                    // on primary line, number saved to SIM.
-                    if ( UsesSimMemory() )
-                        {
-                        if ( !isFromSim )
-                            {
-                            error = SaveVmbxNumberToSim( number, aEntry );
-                            VMBLOGSTRING2( "SaveVmbxNumberToSim = %I", error );
-                            }
-                        }
-                    else
-                        {
-                        error = SaveVmbxNumberToPhone( number, aEntry );
-                        VMBLOGSTRING2( "SaveVmbxNumberToPhone = %I", error );
-                        }
-                    }
-                else
-                    {
-                    iFlags &= (~KForceSavedToPhoneMem);
-                    SaveVmbxNumber( number, aEntry );
-                    }
-                }
-
-            if ( iVmNumOpts == EVmNumOptsOnePlusMIN ||
-                                          iVmNumOpts == EVmNumOptsOnePlusMDN )
-                {
-                if ( KVmbxMaxNumberLength < number.Length() + 1 )
-                    {
-                    VMBLOGSTRING( "GetVmbxNumber::Number too long" );
-                    return KErrTooBig;
-                    }
-                // Add 1 plus
-                number.Insert( 0, KVmbxOnePlus );
-                }
-
-            aNumber.Copy( number );
-            }
-        else
-            {
-            VMBLOGSTRING( "GetVmbxNumber::No number found." );
-            ret = KErrNotFound;
-            }
-        }
-
-    VMBLOGSTRING2( "VMBX: RVmbxNumber::GetVmbxNumber error = %I", ret );
-    if ( ret != KErrNone )
-        {
-        return KErrNotFound;
-        }
-
-    if ( IsEmergencyNumberL( aNumber ) )
-        {
-        aNumber.Zero();
-        ret = KErrNotFound;
-        }
-
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::QueryNumberL
-// Check wether the voice mailbox number can be changed
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool RVmbxNumber::QueryNumberL( TVmbxQueryType aQueryType,
-                                          TDes& aNumber,
-                                          TBool aShowQuery)
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: =>" );
-    __ASSERT_DEBUG( aNumber.MaxLength() >= KVmbxMaxNumberLength,
-                   User::Panic( KVmbxPanicCategory, EVmbxDescriptorTooSmall ) );
-    __ASSERT_DEBUG( aNumber.Length() <= KVmbxMaxNumberLength,
-                        User::Panic( KVmbxPanicCategory, EVmbxNumberTooLong ) );
-
-    VMBLOGSTRING2( "aQueryType = %d", aQueryType );
-    VMBLOGSTRING2( "iPhoneBookType = %d", iPhoneBookType );
-
-    TBool result( EFalse );
-    if ( EVmQueryProcess == iQueryingState )
-        {
-        VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: \
-        running forever case" );
-        VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: <=" );
-        return result;
-        }
-
-    if ( !AllowedToChangeTheNumber() )
-        {
-        VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: \
-        Number not allowed to change" );
-        VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: <=" );
-        User::Leave( KErrAccessDenied );
-        }
-
-    // Vmbx type is set for FetchNumberFromPhonebookL
-    iType = EVmbx;
-
-    __ASSERT_DEBUG( aNumber.MaxLength() >= KVmbxMaxNumberLength,
-                   User::Panic( KVmbxPanicCategory, EVmbxDescriptorTooSmall ) );
-    __ASSERT_DEBUG( aNumber.Length() <= KVmbxMaxNumberLength,
-                        User::Panic( KVmbxPanicCategory, EVmbxNumberTooLong ) );
-
-    // Close() sets thisClosed to ETrue
-    TBool thisClosed( EFalse );
-
-    TBuf<KVmbxMaxNumberLength> vmbxNumber;
-
-    TInt alsline( EAlsLine1 );
-    // get the current ALS line
-    if ( GetAlsLine( alsline ) != KErrNone )
-        {
-        // if problems, assume primary line
-        alsline = EAlsLine1;
-        }
-    VMBLOGSTRING2( "VMBX: RVmbxNumber::QueryNumberL: ALSline = %d",
-        alsline );
-
-    if ( iFlags & KVmFlagSimReadSupport )
-        {
-        VMBLOGSTRING( "RVmbxNumber::QueryNumberL: SIM Read support" )
-        TBool querySim( EFalse );
-
-        if ( alsline == EAlsLine1 )
-            {
-            // Do sim query when not defined query
-            // or 6f17 Sim memory not active and query wanted
-            if ( ( aQueryType == EVmbxNotDefinedQuery ) ||
-                 ( !IsSimMemory() && aShowQuery  &&
-                   ( iMemoryLocation == EVmbxPhoneMemory ) ) )
-                {
-                VMBLOGSTRING( "RVmbxNumber::QueryNumberL: Query on line1" );
-                querySim = ETrue;
-                }
-            }
-        else //EAlsLine2
-            {
-            // Allways and only when vmbx phonebook in use
-            if  ( iPhoneBookType == EVMBXPhoneBook )
-                {
-                VMBLOGSTRING( "RVmbxNumber::QueryNumberL: Query on line2" );
-                querySim = ETrue;
-                }
-            }
-
-        if ( querySim )
-            {
-            iClosedPtr = &thisClosed;
-            VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: Q SIM number" );
-
-            TBool isSimNumber = QuerySimNumberL( vmbxNumber );
-
-            VMBLOGSTRING2( "VMBX: RVmbxNumber::QueryNumberL: SIM number %S",
-            &vmbxNumber );
-
-            iClosedPtr = NULL;
-
-            if ( thisClosed )
-                {
-                //End Key Pressed
-                VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: \
-                End key pressed" );
-                VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: <=" );
-                return EFalse;
-                }
-
-            if ( isSimNumber )
-                {
-                // save to phone memory when ALS2 in use
-                // or read-only sim on ALS1
-                if ( ( alsline == EAlsLine2 ) ||
-                     ( ( alsline == EAlsLine1 ) &&
-                       !( iFlags & KVmFlagSimWriteSupport ) ) )
-                    {
-                    VMBLOGSTRING( "Save number To Phone" );
-                    SaveVmbxNumberToPhone( vmbxNumber, EAlsActiveLineEntry );
-                    // confirmation note is not needed if number is taken
-                    // from SIM automatically
-                    if ( UserEditNumber( alsline ) || 
-                            IsPhoneMemForcedEdit( alsline ) )
-                        {
-                        ResetUserEditNumber( alsline );
-                        ShowConfirmationNoteL( R_SIM_NUMBER_NOTE );
-                        }
-                    }
-                else
-                    {
-                    // confirmation note is not needed if number is taken
-                    // from SIM automatically
-                    if ( UserEditNumber( alsline ) || 
-                            IsPhoneMemForcedEdit( alsline ) )
-                        {
-                        ShowConfirmationNoteL( R_SIM_NUMBER_NOTE );
-                        }
-                    }
-                aNumber.Copy( vmbxNumber );
-                VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL Number from \
-                    Sim accepted" );
-                VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: <=" );
-                return ETrue;
-                }
-            }
-        }
-
-    TBuf<KVmOriginalNumLength> originalNumber;
-    originalNumber.Copy( aNumber );
-
-    iQueryingState = EVmQueryProcess;
-    //QueryNumberL dialog
-    FOREVER
-        {
-        vmbxNumber.Copy( aNumber );
-
-        // get the correct query prompt from resource file
-        HBufC* prompt = StringLoader::LoadLC( ( aQueryType ==
-                                    EVmbxNotDefinedQuery
-                                    ? R_DEFINE_NUMBER_PROMPT
-                                    : R_CHANGE_NUMBER_PROMPT ),
-                                                 iCoeEnv );
-
-        VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL string loaded" );
-        iClosedPtr = &thisClosed;
-
-        // Convert output to accommodate the current locale
-        AknTextUtils::LanguageSpecificNumberConversion( vmbxNumber );
-
-        TInt ret;  // return value of the query
-
-        // ETrue to open the query again after closing single fetch dialog
-        TBool searchUsed;
-
-        // enable search if number length is 0
-        TBool searchEnabled( vmbxNumber.Length() ? EFalse : ETrue );
-
-        do
-            {
-            // show query with the correct prompt
-            iQuery = CVmTextQueryDialog::NewL( vmbxNumber,
-                                                *prompt, searchEnabled );
-
-            VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL ExecuteLD" );
-            ret = iQuery->ExecuteLD( R_VMBX_NUMBER_QUERY );
-            VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL ExecuteLD done" );
-
-            iQuery = NULL;
-            searchUsed = EFalse;
-
-            if ( searchEnabled && ret && !vmbxNumber.Length() )
-                {
-                searchUsed = ETrue;
-                // Show phonebook's single fetch dialog
-                VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL Fetch from Pb" );
-                TRAPD( error, FetchNumberFromPhonebook2L( vmbxNumber ) );
-                VMBLOGSTRING2( "VMBX: RVmbxNumber::QueryNumberL Fetch from Pb done \
-                error = %d", error );
-
-                // If application is killed via FSW, contact selection query
-                // returns KLeaveExit. This should propagate to "root"
-                // application where it reaches the active scheduler loop 
-                // and thus allows proper application exit when the loop exits.
-                // Therefore propagate the error to caller and do not ignore it.
-                if ( KLeaveExit == error )
-                    {
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL KLeaveExit" );
-                    User::Leave( error );
-                    }
-
-                // user has pressed End Key
-                if ( thisClosed )
-                    {
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: \
-                    End key pressed" );
-                    CleanupStack::PopAndDestroy( prompt );
-
-                    iQueryingState = EVmQueryNormal;
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: <=" );
-                    return EFalse;
-                    }
-
-                if ( error )   //  Back pressed in Contact UI
-                    {
-                    // Now the phone book fetch dialog was closed,
-                    // get out of the loop
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL Fetch done" );
-                    ret = 0;
-                    break;
-                    }
-                }
-            } while ( searchUsed );
-
-        iClosedPtr = NULL;
-
-        CleanupStack::PopAndDestroy( prompt );
-
-        if ( ret != KErrNone )
-            {
-            if ( !vmbxNumber.Length() )
-                {
-                iFlags &= (~KForceSavedToPhoneMem);
-                VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL has number" );
-                // Resets the flag that indicates that the user has edited VMBX number
-                ResetUserEditNumber( alsline );
-                TInt status =
-                    SaveVmbxNumber( vmbxNumber, EAlsActiveLineEntry );
-                VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL number save" );
-
-                if ( status == KErrNone )
-                    {
-                    // If number does not exist,
-                    // number from SIM is used if it's available
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL save ok" );
-                    if ( UseSimNumIfAvailable( vmbxNumber, alsline )
-                        && vmbxNumber.Length() )
-                        {
-                        // If number is taken from SIM,
-                        // show appropriate confirmation note
-                        ShowConfirmationNoteL( R_SIM_NUMBER_NOTE );
-                        }
-                    aNumber.Copy( vmbxNumber );
-                    if ( !vmbxNumber.Length() )
-                        {
-                        // show "not defined" note
-                        ShowConfirmationNoteL( R_NOTE_EMPTY_NUMBER );
-                        }
-                    result = ETrue;
-                    break;
-                    }
-                else if ( status == KErrCancel )
-                    {
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL save \
-                        cancel" );
-
-                    aNumber.Copy( vmbxNumber );
-                    continue;
-                    }
-                else
-                    {
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: \
-                    Number saving error" );
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: <=" );
-                    User::LeaveIfError( status );
-                    }
-                }
-            else
-                {
-                VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL no number" );
-                SetUserEditNumber( alsline );
-                }
-
-            // Convert back to western digits
-            ConvertToWesternDigits( vmbxNumber );
-
-            // check the given number here (emergency numbers not allowed)
-            if ( IsValidPhoneNumber( vmbxNumber )
-                        && !IsEmergencyNumberL( vmbxNumber ) )
-                {
-                iFlags &= ~KForceSavedToPhoneMem;
-                VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: save num 2" );
-                TInt status = SaveVmbxNumber( vmbxNumber, EAlsActiveLineEntry );
-
-                if ( status == KErrNone )
-                    {
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: save \
-                        num 2 ok" );
-                    aNumber.Copy( vmbxNumber );
-                    if ( UsesSimMemory() )
-                        {
-                        ShowConfirmationNoteL(
-                                            R_SAVED_NOTE_SIM_MEMORY );
-                        }
-                    else
-                        {
-                        ShowConfirmationNoteL(
-                                           R_SAVED_NOTE_PHONE_MEMORY );
-                        }
-                    result = ETrue;
-                    break;
-                    }
-                else if ( status == KErrCancel )
-                    {// The query number dialog was cancelled, so continue
-                    aNumber.Copy( vmbxNumber );
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: save \
-                        num 2 cancel" );
-                    continue;
-                    }
-                else if ( status == KErrArgument )
-                    {
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: save \
-                        num 2 err arg" );
-                    result = EFalse;
-                    }
-                else
-                    {
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: \
-                    Invalid number" );
-                    result = EFalse;
-                    }
-                }
-
-            if ( !result )
-                {
-                // show "invalid number" note and wait
-                // for a short timeout
-                VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: invalid \
-                    number show note" );
-
-                prompt = StringLoader::LoadLC( R_INVALID_NUMBER_NOTE,
-                                                     iCoeEnv );
-
-                iClosedPtr = &thisClosed;
-
-                CAknInformationNote* note =
-                                new( ELeave ) CAknInformationNote( ETrue );
-                note->ExecuteLD( *prompt );
-
-                iClosedPtr = NULL;
-
-                CleanupStack::PopAndDestroy( prompt );
-
-                if ( !thisClosed )
-                    {
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: invalid \
-                    number query again" );
-                    continue;  // the number was invalid -> query again.
-                    }
-                }
-            }
-
-            // retrieve the original number in the query
-            // as user has cancelled the query...
-            aNumber.Copy( originalNumber );
-            break;  // user canceled the query
-        }
-    iQueryingState = EVmQueryNormal;
-    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryNumberL: <=" );
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::QuerySimNumberL
-// Routine to query and save SIM number from user
-// -----------------------------------------------------------------------------
-//
-TBool RVmbxNumber::QuerySimNumberL( TDes& aNumber, TVmbxNumberEntry aEntry )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::QuerySimNumberL: =>" );
-    TInt lineNumber( aEntry );
-
-    if ( aEntry == EAlsActiveLineEntry )
-        {
-        // get the current ALS line
-        if ( GetAlsLine( lineNumber ) != KErrNone )
-            {
-            lineNumber = EAlsLine1;  // if problems, assume primary line
-            }
-        }
-    TInt ret( KErrNotFound );
-
-    ret = GetVmNumFromSIM( aNumber, lineNumber );
-
-    if ( ret )
-        {
-        return EFalse;
-        }
-
-    VMBLOGSTRING2( "iMemoryLocation = %d", iMemoryLocation );
-
-    TBool doSimQuery( EFalse );
-    if ( ( lineNumber == EAlsLine2 ) && ( iPhoneBookType == EVMBXPhoneBook ) )
-        {
-        VMBLOGSTRING( "Sim query allowed on line2" );
-        doSimQuery = ETrue;
-        }
-    else if ( ( iMemoryLocation == EVmbxPhoneMemory ) &&
-              ( 0 != aNumber.Length() ) )
-        {
-        VMBLOGSTRING( "Sim query allowed on line1" );
-        doSimQuery = ETrue;
-        }
-
-    if ( doSimQuery )
-        {
-        TInt retVal = EVmbxSimNumNotAccepted;
-        // If number not defined, query is not needed as number
-        // found in SIM is used automatically
-        if ( VmbxNumDefInPhoneMemory( lineNumber ) )
-            {
-            // If number found in SIM is the same as the number stored in phone memory,
-            // skip query
-            if ( !NumStoredInPhone( aNumber, lineNumber ) )
-                {
-                HBufC* label = StringLoader::LoadLC( R_SAVED_SIM_NUMBER_INTO_USE,
-                                                                    aNumber );
-                iVMSimQueryDialog = CVMSimQueryDilaog::NewL();
-                iVMSimQueryDialog->SetVMSimPromptL( *label );
-                CleanupStack::PopAndDestroy( label );
-                //coverity static analysis tool generates a warning finding here
-                //ignore that
-                //coverity[deref_ptr_in_call]
-                retVal= iVMSimQueryDialog->ExecuteLD(
-                                              R_VMBX_TAKE_SIM_NUMBER_INTO_USE );
-                //coverity static analysis tool generates a warning finding here
-                //ignore that
-                //coverity[check_after_deref] 
-                if ( iVMSimQueryDialog == NULL )
-                    {
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::QuerySimNumberL: \
-                    No number inserted" );
-                    return EFalse;
-                    }
-                iVMSimQueryDialog = NULL;
-                if ( retVal )
-                    {
-                    SetUserEditNumber( lineNumber );
-                    }
-                }
-            }
-        else
-            {
-            // IF VMBX number not defined and number found in SIM,
-            // number from SIM is used
-            retVal = EVmbxSimNumAccepted;
-            ResetUserEditNumber( lineNumber );
-            }
-
-        // sim number accepted on line 1
-        if ( retVal && ( lineNumber == EAlsLine1 ) )
-            {
-            VMBLOGSTRING( "sim number accepted on line 1" );
-            // No write support on sim, use phone memory
-            if ( !( iFlags & KVmFlagSimWriteSupport ) )
-                {
-                iSession->Set( KVmUsesSimMemory, EVmbxPhoneMemory );
-                iMemoryLocation = EVmbxPhoneMemory;
-                }
-            else
-                {
-                iSession->Set( KVmUsesSimMemory, EVmbxSimMemory );
-                iMemoryLocation = EVmbxSimMemory;
-                }
-            VMBLOGSTRING( "return ETrue" );
-            return ETrue;
-            }
-        // sim number accepted on line 2
-        else if ( retVal && ( lineNumber == EAlsLine2 ) )
-            {
-            VMBLOGSTRING( "Sim number accepted on line2" );
-            return ETrue;
-            }
-        // user selection "No"
-        else
-            {
-            VMBLOGSTRING( "VMBX: RVmbxNumber::QuerySimNumberL: \
-            No number inserted" );
-            return EFalse;
-            }
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::QuerySimNumberL: <=" );
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::ConvertToWesternDigits
-// Converts a phone number to western format
-// -----------------------------------------------------------------------------
-//
-void RVmbxNumber::ConvertToWesternDigits( TDes& aDes ) const
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::ConvertToWesternDigits: =>" );
-    AknTextUtils::ConvertDigitsTo( aDes, EDigitTypeWestern );
-    VMBLOGSTRING( "VMBX: RVmbxNumber::ConvertToWesternDigits: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::SaveVmbxNumber
-// Saves vmbx number to phone or sim memory
-// -----------------------------------------------------------------------------
-//
-/*****************************************************
-*  Series 60 Customer / ETel
-*  Series 60 ETel API
-*****************************************************/
-EXPORT_C TInt RVmbxNumber::SaveVmbxNumber( const TDesC& aNumber,
-                                                    TVmbxNumberEntry aEntry )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SaveVmbxNumber: =>" );
-    TInt status( KErrNone );
-    TInt alsline( EAlsLine1 );
-    // get the current ALS line
-    if ( GetAlsLine( alsline ) != KErrNone )
-        {
-        alsline = EAlsLine1;  // if problems, assume primary line
-        }
-
-    if ( EAlsLine1 == alsline)
-        {
-        // Ask place to save if sim available for saving
-        if ( iFlags & KVmFlagSimWriteSupport )
-            {
-            TInt index( 0 );
-            TInt ret( 0 );
-
-            CAknListQueryDialog* dlg( NULL );
-            TRAP_IGNORE( dlg = new( ELeave ) CAknListQueryDialog( &index ) );
-
-            if ( dlg )
-                {
-                TRAP_IGNORE( ret = dlg->ExecuteLD( R_VMBX_MEMORY_LIST_QUERY ) );
-                dlg = NULL;
-                }
-
-            if ( ret )
-                {
-                // user selected to save number to Sim
-                if ( EVmbxSimMemory == index )
-                    {
-                    iMemoryLocation = EVmbxSimMemory;
-                    iSession->Set( KVmUsesSimMemory, EVmbxSimMemory );
-
-                    status = SaveVmbxNumberToSim( aNumber, aEntry );
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::SaveVmbxNumber: \
-                    Number saved to Sim" );
-                    }
-                // user selected to save number to Phone memory
-                else if ( EVmbxPhoneMemory == index )
-                    {
-                    iMemoryLocation = EVmbxPhoneMemory;
-                    iSession->Set( KVmUsesSimMemory, EVmbxPhoneMemory );
-                    if ( iFlags & KForceSavedToPhoneMem )
-                        {
-                        SetPhoneMemForcedEdit( alsline );
-                        }
-
-                    status = SaveVmbxNumberToPhone( aNumber, aEntry );
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::SaveVmbxNumber: \
-                    Number saved to phone memory" );
-                    }
-                }
-            else// The user has selected Cancel.. so no changes, return KErrCancel
-                {
-                VMBLOGSTRING( "VMBX: RVmbxNumber::SaveVmbxNumber: canceled" );
-                status = KErrCancel;
-                }
-            }
-        // Line1 in use and no sim available, so use Phone memory
-        else
-            {
-            // Sim write not support and external clients invoke the function
-            // set phone memory forced edit
-            if ( iFlags & KForceSavedToPhoneMem )
-                {
-                SetPhoneMemForcedEdit( alsline );
-                }
-            iMemoryLocation = EVmbxPhoneMemory;
-            iSession->Set( KVmUsesSimMemory, EVmbxPhoneMemory );
-            status = SaveVmbxNumberToPhone( aNumber, EAlsActiveLineEntry );
-            VMBLOGSTRING( "VMBX: RVmbxNumber::SaveVmbxNumber: \
-            Number saved to phone memory" );
-            }
-        }
-    // EAlsLine2
-    else
-        {
-        // Sim write not support and external clients invoke the function
-        // set phone memory forced edit
-        if ( ( iFlags & KForceSavedToPhoneMem ) &&
-                ! ( iFlags & KVmFlagSimWriteSupport ) )
-            {
-            SetPhoneMemForcedEdit( alsline );
-            }
-        status = SaveVmbxNumberToPhone( aNumber, EAlsActiveLineEntry );
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SaveVmbxNumber: <=" );
-    return status;
-    }
-
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::SaveVmbxNumberToSim
-// Saves vmbx number to sim memory
-// -----------------------------------------------------------------------------
-//
-/*****************************************************
-*  Series 60 Customer / ETel
-*  Series 60 ETel API
-*****************************************************/
-TInt RVmbxNumber::SaveVmbxNumberToSim( const TDesC& aNumber,
-                                                     TVmbxNumberEntry aEntry )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SaveVmbxNumberToSim: =>" );
-
-    // AllowedToChangeTheNumber() check not done in this method 
-    // in order to always allow saving.
-    TInt alsline( EAlsLine1 );
-    // get the current ALS line
-    if ( GetAlsLine( alsline ) != KErrNone )
-        {
-        alsline = EAlsLine1;  // if problems, assume primary line
-        }
-    // ALS line2 not supported when saving to SIM
-    if ( alsline == EAlsLine2 )
-        {
-        VMBLOGSTRING( "Sim usage for ALS Line2 not supported, \
-         return KErrArgument " );
-        return KErrArgument;
-        }
-
-    // number containing "w"-character not allowed to save to sim
-    if ( aNumber.Find( KVmbxIllegalSimCharacter ) != KErrNotFound )
-        {
-        VMBLOGSTRING( "w-char not allowed, return KErrArgument " );
-        return KErrArgument;
-        }
-
-    __ASSERT_DEBUG( iFlags & KVmFlagOpened,
-                         User::Panic( KVmbxPanicCategory, EVmbxNotConnected ) );
-    __ASSERT_DEBUG( aNumber.Length() <= KVmbxMaxNumberLength,
-                        User::Panic( KVmbxPanicCategory, EVmbxNumberTooLong ) );
-
-    TInt lineNumber( aEntry );
-    TInt error( KErrNone );
-
-    if ( aEntry == EAlsActiveLineEntry )
-        {
-        // get the active ALS line
-        lineNumber = alsline;
-        }
-
-#ifdef VM_USE_TSY
-        // Update maxLength info
-        // First read number from sim.
-        // Then get info of the max size.
-        // Finally determine actual max size using retrieved info.
-        // Note! GetInfo reads data from cache, which is updated when write
-        // attempt is done. So if Ext-files are taken into use by some
-        // other application while Vmbx is opened, then correct info
-        // cannot fetch by GetInfo. (This appears when trying to save
-        // long number twice and first one fails and second is saved
-        // successfully.)
-        TBuf<KVmbxMaxNumberLength> numberOnSim;
-        // return value ignored here, because no meaning for size determination
-        GetVmNumFromSIM( numberOnSim, lineNumber );
-
-        TInt ret = DoPhonebookOperation( EVmbxPhonebookGetInfo );
-
-        if ( ret != KErrNone )
-            {
-            VMBLOGSTRING2( "DoPhonebookOperation getinfo retval = %I", ret );
-            return ret;
-            }
-        else
-            {
-            CalculateActualMaxLengthOnSim( numberOnSim.Length() );
-            }
-
-    // store in SIM phonebook
-    if ( iVmNumOpts == EVmNumOptsBlank )
-        {
-        if ( aNumber.Length() <= iPhoneBookInfo.iMaxNumLength )
-            {
-            VMBLOGSTRING( "SaveVmbxNumberToSim::Num length <= maxNumLength" );
-            if ( iFlags & KVmFlagPhonebookBeingCached )
-                {
-                error = DoPhonebookOperation( EVmbxPhonebookGetInfo );
-                }
-
-            if ( !error && ( iFlags & KVmFlagSimWriteSupport ) )
-                {
-                TVmbxEntry entry;
-                entry.iIndex = lineNumber;
-
-                if ( aNumber.Length() )
-                    {
-                    entry.iTelNumber.Copy( aNumber );
-                    entry.iText.Copy( KVmbxPhoneBookEntryName );
-                    entry.iText.AppendNum( lineNumber );
-                    error = DoPhonebookOperation( EVmbxPhonebookWrite,
-                                                                     &entry );
-                    VMBLOGSTRING3( "VMBX: RVmbxNumber::SaveVmbxNumberToSim: \
-                     Write SIM entry %I, status: %I", lineNumber, error );
-                    }
-                else
-                    {
-                    error = DoPhonebookOperation( EVmbxPhonebookDelete,
-                                                                     &entry );
-                    VMBLOGSTRING3( "VMBX: RVmbxNumber::SaveVmbxNumberToSim: \
-                    Delete SIM entry %I, status: %I", lineNumber, error );
-                    }
-                }
-            }
-        else
-            {
-            error = KErrArgument;
-            }
-        }
-    else
-        {
-        error = KErrNotFound;
-        }
-#else // <= VM_USE_TSY
-    error = KErrNotFound;
-#endif  // VM_USE_TSY
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SaveVmbxNumberToSim: <=" );
-    return error; //to be removed
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::SaveVmbxNumberToPhone()
-// Saves vmbx number to phone memory
-// -----------------------------------------------------------------------------
-//
-/*****************************************************
-*  Series 60 Customer / ETel
-*  Series 60 ETel API
-*****************************************************/
-TInt RVmbxNumber::SaveVmbxNumberToPhone( const TDesC& aNumber,
-                                                     TVmbxNumberEntry aEntry )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SaveVmbxNumberToPhone: =>" );
-
-    __ASSERT_DEBUG( iFlags & KVmFlagOpened,
-                         User::Panic( KVmbxPanicCategory, EVmbxNotConnected ) );
-    __ASSERT_DEBUG( aNumber.Length() <= KVmbxMaxNumberLength,
-                        User::Panic( KVmbxPanicCategory, EVmbxNumberTooLong ) );
-
-    // AllowedToChangeTheNumber() check not done in this method 
-    // in order to always allow saving.
-    TInt lineNumber( aEntry );
-    TInt error( KErrNone );
-    VMBLOGSTRING2( "VMBX: RVmbxNumber::SaveVmbxNumberToPhone \
-    the number is from phone or SIM aNumber = %S", &aNumber );
-
-    if ( aEntry == EAlsActiveLineEntry )
-        {
-        // get the current ALS line
-        if ( GetAlsLine( lineNumber ) != KErrNone )
-            {
-            lineNumber = EAlsLine1;  // if problems, assume primary line
-            }
-        }
-
-    TUint32 keyword = lineNumber ==
-            EAlsLine1Entry ? KVmbxNumberLinePrimary: KVmbxNumberLineAuxiliary;
-    error = iSession->Set( keyword, aNumber );
-
-    if ( !error )
-        {
-        // Client will generate the event itself on request.
-        if ( iFlags & KVmFlagNotifyRequested )
-            {
-            HandleNotifyString( keyword, aNumber );
-            }
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SaveVmbxNumberToPhone: <=" );
-    return error;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::NotifyVmbxNumberChangeL
-// Issues a notify request on a vmbx number change
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RVmbxNumber::NotifyVmbxNumberChangeL(
-                   MVmbxNotifyHandler* aHandler, TBool aNotifyOnActiveLineOnly )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::NotifyVmbxNumberChangeL: =>" );
-    __ASSERT_DEBUG( iFlags & ( KVmFlagOpened ),
-                        User::Panic( KVmbxPanicCategory, EVmbxNotConnected ) );
-
-    iNotifyCallBack = aHandler;
-    SubscribeSATNotificationsL(); // subscribe SAT notifications
-
-    // only issue a new notify request if there isn't one already
-    if ( !( iFlags & KVmFlagNotifyRequested ) )
-        {
-        iNotifyHandler = CCenRepNotifyHandler::NewL( *this, *iSession );
-        iNotifyHandler->StartListeningL();
-
-        iFlags |= KVmFlagNotifyRequested;
-        }
-
-    if ( aNotifyOnActiveLineOnly )
-        {
-        iFlags |= KVmFlagNotifyOnActiveLineOnly;
-        }
-    else
-        {
-        iFlags &= ( ~KVmFlagNotifyOnActiveLineOnly );
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::NotifyVmbxNumberChangeL: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::SubscribeSATNotificationsL
-// Subscribe SAT notifications
-// -----------------------------------------------------------------------------
-void RVmbxNumber::SubscribeSATNotificationsL()
-    {
-    if ( iPhoneBookType == EMBDNPhoneBook )
-        {
-        iRSatSession.ConnectL();
-        iRSatClient.OpenL( iRSatSession );
-        iObservedFileList.Append( KMbdnEf );
-        iObservedFileList.Append( KMbiEf );
-        iRSatClient.NotifyFileChangeL( iObservedFileList );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::NotifyVmbxNumberChangeCancel
-// Cancels a notify request on a vmbx number change.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RVmbxNumber::NotifyVmbxNumberChangeCancel()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::NotifyVmbxNumberChangeCancel: =>" );
-    __ASSERT_DEBUG( iFlags & KVmFlagOpened,
-                     User::Panic( KVmbxPanicCategory, EVmbxNotConnected ) );
-
-    iNotifyHandler->StopListening();
-
-    iFlags &= ( ~KVmFlagNotifyRequested );
-    VMBLOGSTRING( "VMBX: RVmbxNumber::NotifyVmbxNumberChangeCancel: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::NotifyAlsLineChangeL
-// Issues a notify request on active ALS line change
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RVmbxNumber::NotifyAlsLineChangeL( MVmbxAlsObserver* aObserver )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::NotifyAlsLineChangeL: =>" );
-    __ASSERT_DEBUG( iFlags & KVmFlagOpened,
-             User::Panic( KVmbxPanicCategory, EVmbxNotConnected ) );
-    iUserAlsObserver = aObserver;
-    VMBLOGSTRING( "VMBX: RVmbxNumber::NotifyAlsLineChangeL: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::NotifyAlsLineChangeCancel
-// Cancels a notify request on ALS line change
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RVmbxNumber::NotifyAlsLineChangeCancel()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::NotifyAlsLineChangeCancel: =>" );
-    __ASSERT_DEBUG( iFlags & KVmFlagOpened,
-                     User::Panic(KVmbxPanicCategory, EVmbxNotConnected) );
-    iUserAlsObserver = NULL;
-    VMBLOGSTRING( "VMBX: RVmbxNumber::NotifyAlsLineChangeCancel: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::Close
-// Closes the resources allocated in Open
-// -----------------------------------------------------------------------------
-//
-/*****************************************************
-*  Series 60 Customer / ETel
-*  Series 60 ETel API
-*****************************************************/
-EXPORT_C void RVmbxNumber::Close()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::Close: =>" );
-    if ( iCntFetch )
-        {
-        delete iCntFetch;
-        iCntFetch = NULL;
-        }
-
-    iRSatClient.Cancel();
-    iRSatClient.Close();
-    iRSatSession.Close();
-    if ( iClosedPtr )
-        {
-        *iClosedPtr = ETrue;
-        iClosedPtr = NULL;
-        }
-
-    if ( iVMSimQueryDialog )
-        {
-        TRAP_IGNORE( iVMSimQueryDialog->VMSimDismissDialogL() );
-        iVMSimQueryDialog = NULL;
-        }
-
-    if ( iQuery )
-        {
-        delete iQuery;
-        iQuery = NULL;
-        }
-
-    if ( iVideoQuery )
-        {
-        delete iVideoQuery;
-        iVideoQuery = NULL;
-        }
-    // Type selection query
-    if ( iTypeSelectionQuery )
-        {
-        delete iTypeSelectionQuery;
-        iTypeSelectionQuery = NULL;
-        }
-
-    iVmbxServiceSelection.Close();
-    if ( iResourceFileOffset )
-        {
-        iCoeEnv->DeleteResourceFile( iResourceFileOffset );
-        iResourceFileOffset = 0;
-        }
-
-    CloseETel();
-
-    iUserAlsObserver = NULL;
-
-    // these automatically cancel all observations as well
-
-    iSsSettings.Close();
-
-    iFlags = 0;
-    VMBLOGSTRING( "VMBX: RVmbxNumber::Close: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::LoadResourceL
-// Loads the resources needed for queries and confirmation notes
-// -----------------------------------------------------------------------------
-//
-void RVmbxNumber::LoadResourceL()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::LoadResourceL: =>" );
-    TFileName fileName;
-    fileName += KVmbxResourceFileDrive;
-    fileName += KDC_RESOURCE_FILES_DIR;
-    fileName += KVmbxResourceFileName;
-    BaflUtils::NearestLanguageFile( iCoeEnv->FsSession(), fileName );
-    iResourceFileOffset = iCoeEnv->AddResourceFileL( fileName );
-    VMBLOGSTRING( "VMBX: RVmbxNumber::LoadResourceL: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::AllowedToChangeTheNumber
-// Check wether the voice mailbox number can be changed
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool RVmbxNumber::AllowedToChangeTheNumber()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::AllowedToChangeTheNumber: =>" );
-    TBool ret( ETrue ); 
-
-    if ( EUiNmbrChangeNotAllowed & iVmUiOpts )
-        {
-        ret = EFalse;
-        }
-    VMBLOGSTRING2( "RVmbxNumber::AllowedToChangeTheNumber \
-    iVmUiOpts = %M", iVmUiOpts );
-    VMBLOGSTRING( "VMBX: RVmbxNumber::AllowedToChangeTheNumber: <=" );
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::HandleNotifyString
-// To notify the client about changes for string value keys
-// -----------------------------------------------------------------------------
-//
-void RVmbxNumber::HandleNotifyString( TUint32 aKey, const TDesC16& aValue )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::HandleNotifyString: =>" );
-    TInt alsline( EAlsLine1 );
-
-    // get the current ALS line
-    if ( GetAlsLine( alsline ) != KErrNone )
-        {
-        alsline = EAlsLine1;  // if problems, assume primary line
-        }
-    if ( iNotifyCallBack )
-        {
-        TInt notifyLine( 0 );
-
-        if ( aKey == KVmbxNumberLinePrimary )
-            {
-            notifyLine = EAlsLine1Entry;
-            }
-        else if ( aKey == KVmbxNumberLineAuxiliary )
-            {
-            notifyLine = EAlsLine2Entry;
-            }
-
-        if ( ( iFlags & KVmFlagNotifyOnActiveLineOnly ) && alsline != notifyLine )
-            {
-            VMBLOGSTRING( "VMBX: RVmbxNumber::HandleNotifyString: \
-            Line not notifyline" );
-            return;
-            }
-
-        if ( notifyLine == EAlsLine1Entry || notifyLine == EAlsLine2Entry )
-            {
-            TRAPD( err, iNotifyCallBack->HandleNotifyL( notifyLine, aValue ) );
-            if ( err != KErrNone )
-                {
-                VMBLOGSTRING( "VMBX: RVmbxNumber::HandleNotifyString: \
-                Notify handle error" );
-                _LIT( KVmbxPanicType,"iNotifyCallBack->HandleNotifyL" );
-                User::Panic( KVmbxPanicType, err );
-                }
-            }
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::HandleNotifyString: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::HandleNotifyGeneric
-// To notify the client about changes in keys when the whole repository
-// is listened for.
-// -----------------------------------------------------------------------------
-//
-void RVmbxNumber::HandleNotifyGeneric( TUint32 aKey )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::HandleNotifyGeneric: =>" );
-    if ( aKey == NCentralRepositoryConstants::KInvalidNotificationId )
-        {
-
-        // We have to check which keys have changed.
-        }
-    else
-        {
-
-        //Check the key value of the particular key being changed and
-        //do further processing.
-        }
-
-    if ( iQuery )
-        {
-        // if the vmbx number is saved,notify to dismiss the query.
-        iQuery->DismissQueryDlg();
-        }
-    if ( iVideoQuery )
-        {
-        // if the video number is saved,notify to dismiss the query.
-        iVideoQuery->DismissQueryDlg();
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::HandleNotifyGeneric: <=" );
-    }
-
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::PhoneSettingChanged
-// To notify changes in SS settings in phone
-// -----------------------------------------------------------------------------
-//
-void RVmbxNumber::PhoneSettingChanged( TSSSettingsSetting aSetting,
-                                                             TInt aNewValue )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::PhoneSettingChanged: =>" );
-    TInt alsline( EAlsLine1 );
-    if ( aSetting == ESSSettingsAls )
-        {
-        alsline = ( aNewValue ==
-                ESSSettingsAlsAlternate ? EAlsLine2Entry : EAlsLine1Entry );
-
-        if ( iUserAlsObserver )
-            {
-            TRAP_IGNORE( iUserAlsObserver->HandleAlsChangeL(
-                                                    ( TVmbxAlsLine ) alsline ) );
-            }
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::PhoneSettingChanged: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::GetAlsLine
-// Fetches ALS line from SS settings
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RVmbxNumber::GetAlsLine( TInt& aLineNumber ) const
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetAlsLine: =>" );
-    aLineNumber = EAlsLine1;
-
-    TInt alsline( ESSSettingsAlsPrimary );
-
-    TInt ret = CONST_CAST( RVmbxNumber*, this )->iSsSettings.Get(
-                                                        ESSSettingsAls, alsline );
-
-    if ( alsline == ESSSettingsAlsAlternate )
-        {
-        aLineNumber = EAlsLine2;
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetAlsLine: <=" );
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::ShowConfirmationNoteL
-// Shows confirmation note to user
-// -----------------------------------------------------------------------------
-//
-void RVmbxNumber::ShowConfirmationNoteL( TInt aResourceId ) const
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::ShowConfirmationNoteL: =>" );
-    HBufC* prompt = StringLoader::LoadLC( aResourceId, iCoeEnv );
-
-    CAknConfirmationNote* note = new( ELeave ) CAknConfirmationNote( ETrue );
-
-    note->ExecuteLD( *prompt );
-
-    CleanupStack::PopAndDestroy( prompt );
-    VMBLOGSTRING( "VMBX: RVmbxNumber::ShowConfirmationNoteL: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::IsValidPhoneNumber
-// Validates phone number
-// -----------------------------------------------------------------------------
-//
-TBool RVmbxNumber::IsValidPhoneNumber( const TDesC& aNumber ) const
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::IsValidPhoneNumber: =>" );
-    TBool isValid( EFalse );
-
-    if ( aNumber.Length() >= KVmPhNumMinLength )
-        {
-        TInt index( 0 );
-        TInt digits( 0 );
-
-        // Skip the possible '*'s and '#'s in the beginning.
-        while ( index < aNumber.Length() &&
-                ( aNumber[ index ] == '#' || aNumber[ index ] == '*' ||
-                    aNumber[ index ] == ' ') )
-            {
-            index++;
-            }
-
-        // Skip the possible '+'.
-        if ( index < aNumber.Length() && aNumber[ index ] == '+' )
-            {
-            index++;
-            }
-
-        // Count the digits.
-        // For this let's use another index so that the following
-        // operation will start from the beginning of the actual
-        // vmbx number
-        TInt loopindex = index;
-
-        while ( loopindex < aNumber.Length() &&
-                ( aNumber[ loopindex ] >= '0' && aNumber[ loopindex ] <= '9'
-                    || aNumber[ loopindex ] == ' ') )
-            {
-            if ( aNumber[ loopindex ] != ' ' )
-                {
-                digits++;
-                }
-            loopindex++;
-            }
-
-        // Check that there are only allowed characters in the remaining string.
-        while ( index < aNumber.Length() )
-            {
-            TText t = aNumber[ index ];
-
-            if ( (t < '0' && t > '9') || t == ' ' )
-                {
-                break;
-                }
-            index++;
-            }
-
-        // If only legal characters were encountered, index is now same as
-        // the length of the string.
-
-        // phone number part must have 2...41 digits
-        // '+' is only allowed as the first character in the string
-        if ( digits >= KVmPhoneNumDigitsMinLength &&
-                digits <= KVmPhoneNumDigitsMaxLength &&
-                    index == aNumber.Length())
-            {
-            isValid = ETrue;
-            }
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::IsValidPhoneNumber: <=" );
-    return isValid;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::IsEmergencyNumberL
-// Checks if a number is an emergency number.
-// -----------------------------------------------------------------------------
-//
-TBool RVmbxNumber::IsEmergencyNumberL( const TDesC& aNumber )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::IsEmergencyNumberL: =>" );
-    TBool isEmergency = EFalse;
-
-    // Emergency Call API does not strip invalid characters like Call UI does, so it is done manually here.
-    TPhCltTelephoneNumber number( aNumber.Left( KPhCltTelephoneNumberLength ) );
-    PhCltUtils::RemoveInvalidChars( number );
-
-    CPhCltEmergencyCall* emergencyCall = CPhCltEmergencyCall::NewL( this );
-
-    TInt result = emergencyCall->IsEmergencyPhoneNumber( number, isEmergency );
-    delete emergencyCall;
-    if ( result != KErrNone )
-        {
-        return EFalse;
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::IsEmergencyNumberL: <=" );
-    return isEmergency;
-    }
-
-// ---------------------------------------------------------
-//  RVmbxNumber::HandleEmergencyDialL()
-// ---------------------------------------------------------
-//
-void RVmbxNumber::HandleEmergencyDialL( const TInt /*aStatus*/ )
-    {
-    // No action
-    }
-
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::PhoneBookInfo
-// Fetches information about the SIM phonebook for vmbx numbers
-// -----------------------------------------------------------------------------
-//
-/*****************************************************
-*  Series 60 Customer / ETel
-*  Series 60 ETel API
-*****************************************************/
-TInt RVmbxNumber::PhoneBookInfo()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::PhoneBookInfo: =>" );
-    TRequestStatus status( KErrNone );
-    TInt alsline( EAlsLine1 );
-
-    // get the current ALS line
-    if ( GetAlsLine( alsline ) != KErrNone )
-        {
-        alsline = EAlsLine1;  // if problems, assume primary line
-        }
-
-    // This may return KErrInUse if phonebook is being cached
-    iPhoneBook.GetInfo( status, iPhoneBookInfoPckg );
-    User::WaitForRequest( status );  // Wait for asynchronous call to finish
-
-    VMBLOGSTRING2( "VMBX: RVmbxNumber::PhoneBookInfo: \
-    SIM Phonebook info read, status: %I", status.Int() );
-    VMBLOGSTRING2( "VMBX: RVmbxNumber::PhoneBookInfo: \
-    SIM Phonebook write access = %I",
-    iPhoneBookInfo.iCaps &  RMobilePhoneBookStore::KCapsWriteAccess ? 1 : 0);
-    iFlags &= ~KVmFlagPhonebookBeingCached;
-    iFlags &= ~KVmFlagSimVmbxNumSupport;
-
-    VMBLOGSTRING2( "MaxNum length from sim: %I", iPhoneBookInfo.iMaxNumLength );
-    if ( status == KErrInUse || status == KErrNotReady )
-        {
-        iFlags |= KVmFlagPhonebookBeingCached;
-        VMBLOGSTRING( "Phonebook Being Cached" );
-        }
-    else if ( status == KErrNone )
-        {
-        //If read access, only then write access possible
-        if ( iPhoneBookInfo.iCaps & RMobilePhoneBookStore::KCapsReadAccess )
-            {
-            VMBLOGSTRING( "ReadAccess ok" );
-            iFlags |= KVmFlagSimReadSupport;
-
-            if ( iPhoneBookInfo.iCaps & RMobilePhoneBookStore::KCapsWriteAccess )
-                {
-                VMBLOGSTRING( "WriteAccess ok" );
-                iFlags |= KVmFlagSimWriteSupport;
-                iFlags |= KVmFlagSimVmbxNumSupport;
-                }
-            // Sim access rights are tested only in start up
-            if ( iStartUpTest )
-                {
-                TestAndSetSimAccessFlags();
-                }
-            }
-        //As there is no sim support set the memory to phone memory
-        else
-            {
-            // No write capability and line1 in use
-            if ( ( iMemoryLocation != EVmbxPhoneMemory ) &&
-                ( alsline == EAlsLine1 ) )
-                {
-                iMemoryLocation = EVmbxPhoneMemory;
-                iSession->Set( KVmUsesSimMemory, EVmbxPhoneMemory );
-                }
-            iFlags &= ~KVmFlagSimReadSupport;
-            }
-        }
-    // no caps fetched
-    else
-        {
-        if ( ( iMemoryLocation != EVmbxPhoneMemory ) &&
-            ( alsline == EAlsLine1 ) )
-                {//as there is no sim support set the memory to phone memory
-                iMemoryLocation = EVmbxPhoneMemory;
-                iSession->Set( KVmUsesSimMemory, EVmbxPhoneMemory );
-                }
-        iFlags &= ~KVmFlagSimReadSupport;
-        VMBLOGSTRING( "USim not supported" );
-        status = KErrNone;
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::PhoneBookInfo: <=" );
-    return status.Int();
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::IsReadOnlySIM
-// Checks if writing to sim is prohibited
-// -----------------------------------------------------------------------------
-//
-TBool RVmbxNumber::IsReadOnlySIM()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::IsReadOnlySIM. =>" );
-
-    TBool readOnlySIM = EFalse;
-    iSession->Get( KReadOnlySim, readOnlySIM );
-    VMBLOGSTRING2( "VMBX: RVmbxNumber::IsReadOnlySIM: \
-        read only flag = %I", readOnlySIM );
-    return readOnlySIM;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::DoPhonebookOperation
-// Does a vmbx phonebook operation
-// -----------------------------------------------------------------------------
-//
-TInt RVmbxNumber::DoPhonebookOperation( TVmbxPhonebookOperation aOperation,
-                                                TVmbxEntry* aEntry )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::DoPhonebookOperation: =>" );
-    TInt result( KErrNone );
-    TInt retryCounter( KVmbxPhonebookRetriesIfInUse );
-
-    FOREVER
-        {
-        retryCounter--;
-
-        switch ( aOperation )
-            {
-            case EVmbxPhonebookGetInfo:
-                {
-                result = PhoneBookInfo();
-                break;
-                }
-            case EVmbxPhonebookRead:
-                {
-                TRAPD( readErr, PhonebookReadL( *aEntry ) );
-                if ( readErr != KErrNone && readErr != KErrNotFound )
-                    {
-                    result = KErrNotSupported;
-                    }
-                break;
-                }
-            case EVmbxPhonebookWrite:
-                {
-                result = PhonebookWrite( *aEntry );
-                break;
-                }
-            case EVmbxPhonebookDelete:
-                {
-                result = PhonebookDelete( *aEntry );
-                break;
-                }
-            default:
-                {
-                __ASSERT_DEBUG( 0, User::Panic( KVmbxPanicCategory,
-                                                 EVmbxUnhandledOperation) );
-                break;
-                }
-            }
-
-        if ( result != KErrInUse || retryCounter <= 0 )
-            {
-            break;
-            }
-
-        iFlags |= KVmFlagPhonebookBeingCached;
-        User::After( KVmbxPhonebookRetryDelay );
-        }
-    // set readonly state if aquired
-    if ( IsReadOnlySIM() )
-        {
-        iFlags &= ~KVmFlagSimWriteSupport;
-        VMBLOGSTRING( "VMBX: RVmbxNumber::DoPhonebookOperation: ReadOnly set" );
-        }
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::DoPhonebookOperation: <=" );
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::PhonebookReadL
-// Reads an entry from the ICC-based phonebook
-// -----------------------------------------------------------------------------
-//
-/*****************************************************
-*  Series 60 Customer / ETel
-*  Series 60 ETel API
-*****************************************************/
-void RVmbxNumber::PhonebookReadL( TVmbxEntry& aEntry )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::PhonebookReadL: =>" );
-    TRequestStatus status( KErrNone );
-    TInt numEntries( 1 );
-    TBuf8<KVmbxPhonebookBufferSize> pbData;
-    pbData.FillZ();
-    pbData.Zero();
-    TInt result( KErrNone );
-
-    // Reset variables
-    iNumberFound = EFalse;
-    if ( iAlphaStringFound )
-        {
-        delete iAlphaStringFromSIM;
-        iAlphaStringFromSIM = NULL;
-        }
-    iAlphaStringFound = EFalse;
-    
-    TInt lineNumber( EAlsLine1 );
-    if ( KErrNone != GetAlsLine( lineNumber ) )
-    	{
-        lineNumber = EAlsLine1;
-    	}
-
-    if ( ( iPhoneBookType == EMBDNPhoneBook ) && ( EAlsLine1 == lineNumber ) )
-        {
-        VMBLOGSTRING( "start MBDN PhoneBook read" );
-        VMBLOGSTRING2( "VMBX: RVmbxNumber::PhonebookReadL: \
-        iPhoneVoicemailInfo.iVoice = %I", iPhoneVoicemailInfo.iVoice );
-        iPhoneBook.Read( status, iPhoneVoicemailInfo.iVoice,
-                                                        numEntries, pbData );
-        }
-    else
-        {
-        // Record#1 in sim is for line1 number and Record#2 in sim is for
-        // line2 number so line is used to fetch
-        VMBLOGSTRING( "start VMBX PhoneBook read" );
-        iPhoneBook.Read( status, aEntry.iIndex, numEntries, pbData );
-        }
-
-    User::WaitForRequest( status );  // Wait for asynchronous call to finish
-    VMBLOGSTRING2( "PhoneBook read status = %I", status.Int() );
-
-    if ( status == KErrNone   || status == KErrNotFound )
-        {
-        if ( pbData.Length() )
-            {
-            // -> Search Tags "ETagPBNumber" and "ETagPBText"
-            // and read (decode) them
-            TUint8 tagValue(0);
-            CPhoneBookBuffer::TPhBkTagType dataType(
-                                           CPhoneBookBuffer::EPhBkTypeNoData );
-
-            CPhoneBookBuffer* pbkBuffer = NULL;
-            TRAPD( err, pbkBuffer = new(ELeave) CPhoneBookBuffer() );
-            if ( err != KErrNone )
-                {
-                VMBLOGSTRING( "VMBX: RVmbxNumber::PhonebookReadL: \
-                Phonebook creation error" );
-                User::Leave( err );
-                }
-
-            pbkBuffer->Set( &pbData );
-            pbkBuffer->StartRead();
-
-            // Read first "new-entry-tag"
-            result = pbkBuffer->GetTagAndType( tagValue, dataType );
-
-            if ( result != KErrNone || tagValue != RMobilePhoneBookStore::ETagPBNewEntry)
-                {
-                delete pbkBuffer;
-                VMBLOGSTRING( "VMBX: RVmbxNumber::PhonebookReadL: \
-                Unknown error" );
-                User::Leave( KErrUnknown );  // Something wrong in TLV
-                }
-
-            // search number and text fields from TLV entry
-            result = pbkBuffer->GetTagAndType( tagValue, dataType );
-
-            while ( result == KErrNone && pbkBuffer->RemainingReadLength() > 0 )
-                {
-                VMBLOGSTRING2("VMBX: RVmbxNumber::PhonebookReadL(): tagValue: %d", tagValue )
-                VMBLOGSTRING2("VMBX: RVmbxNumber::PhonebookReadL(): dataType: %d", dataType )
-
-                // Check for text field
-                if ( tagValue == RMobilePhoneBookStore::ETagPBText )
-                    {
-                    // Alpha string field found from TLV entry,
-                    // assuming 16bit data
-                    TPtrC16 alphaPtrC;
-                    result = pbkBuffer->GetValue( alphaPtrC );
-                    if ( result == KErrNone )
-                        {
-                        iAlphaStringFromSIM = alphaPtrC.AllocL();
-                        iAlphaStringFound = ETrue;
-                        VMBLOGSTRING2("VMBX: RVmbxNumber::PhonebookReadL(): iAlphaStringFromSIM: %S", iAlphaStringFromSIM )
-                        }
-                    }
-                 // Check for number field
-                 else if ( tagValue == RMobilePhoneBookStore::ETagPBNumber )
-                    {
-                    // Number field found from TLV entry, assuming 16bit data
-                    TPtrC16 numberPtrC;
-                    result = pbkBuffer->GetValue( numberPtrC );
-                    iNumberFound = ETrue;
-                    VMBLOGSTRING("VMBX: RVmbxNumber::PhonebookReadL(): ETagPBNumber found.");
-
-                    if ( result == KErrNone )
-                        {
-                        // Error code is returned if number not fit to
-                        // local buffer.
-                        if ( numberPtrC.Length() > aEntry.iTelNumber.MaxLength() )
-                            {
-                            delete pbkBuffer;
-                            VMBLOGSTRING( "VMBX: RVmbxNumber::PhonebookReadL: \
-                            Overflow error" );
-                            User::Leave( KErrOverflow );
-                            }
-                        else
-                            {
-                            // copy number to local buffer
-                            aEntry.iTelNumber.Copy( numberPtrC );
-                            VMBLOGSTRING2("VMBX: RVmbxNumber::PhonebookReadL(): ETagPBNumber found. Number: %S", &aEntry.iTelNumber );
-                            }
-                        }
-                    }
-                 else
-                    {
-                    // skip field
-                    pbkBuffer->SkipValue( dataType );
-                    }
-                // Read next field type
-                result = pbkBuffer->GetTagAndType( tagValue, dataType );
-                }
-
-             // Number and Alpha fields not found from TLV entry
-             if ( !iAlphaStringFound && !iNumberFound )
-                {
-                delete pbkBuffer;
-                VMBLOGSTRING( "VMBX: RVmbxNumber::PhonebookReadL: \
-                Not found error" );
-                User::Leave( KErrNotFound );
-                }
-            delete pbkBuffer;
-            }
-        else
-            {
-            VMBLOGSTRING( "VMBX: RVmbxNumber::PhonebookReadL: Not found error" );
-            iNumberFromSim.FillZ();
-            iNumberFromSim.Zero();
-            User::Leave( KErrNotFound );
-            }
-        }
-    else
-        {
-        // sim read-only and number fetched by GetPhonebookInfo
-        // so return number
-        if ( iNumberFromSim.Length() && !( iFlags & KVmFlagSimWriteSupport ) )
-            {
-            aEntry.iTelNumber.Copy( iNumberFromSim );
-            iMemoryLocation = EVmbxPhoneMemory;
-            iSession->Set( KVmUsesSimMemory, EVmbxPhoneMemory );
-            VMBLOGSTRING2( "Number value = %S", &iNumberFromSim );
-            VMBLOGSTRING2( "iMemoryLocation = %d", iMemoryLocation );
-            VMBLOGSTRING( "Startuptest ongoing, read only sim, number fetched" );
-            }
-        else
-            {
-            User::Leave( status.Int() );
-            }
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::PhonebookReadL: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::PhonebookWrite
-// Writes an entry into ICC-based phonebook
-// -----------------------------------------------------------------------------
-//
-/*****************************************************
-*  Series 60 Customer / ETel
-*  Series 60 ETel API
-*****************************************************/
-TInt RVmbxNumber::PhonebookWrite( TVmbxEntry& aEntry )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::PhonebookWrite: =>" );
-    TRequestStatus status( KErrNone );
-    TBuf8<KVmbxPhonebookBufferSize> pbData;
-    pbData.FillZ();
-
-    CPhoneBookBuffer* pbkBuffer = NULL;
-    TRAPD( err, pbkBuffer = new(ELeave) CPhoneBookBuffer() );
-    if (err != KErrNone)
-        {
-        VMBLOGSTRING( "VMBX: RVmbxNumber::PhonebookWrite: \
-        Phonebook creation error" );
-        return err;
-        }
-
-    pbkBuffer->Set( &pbData );
-
-    // New entry
-    status = pbkBuffer->AddNewEntryTag();
-
-    // Add index
-    // Type of index is TUint16 in Multimode ETel and TInt in old ETel.
-    status = pbkBuffer->PutTagAndValue( RMobilePhoneBookStore::ETagPBAdnIndex,
-                                                      (TUint16)aEntry.iIndex );
-
-    // Add name if it existed on SIM card
-    // Type of ETagPBText is TDes16
-    if ( iAlphaStringFound )
-        {
-        status = pbkBuffer->PutTagAndValue( RMobilePhoneBookStore::ETagPBText,
-                                                        *iAlphaStringFromSIM );
-        }
-
-    // Add number
-    // Type of ETagPBNumber is TDes16
-    status = pbkBuffer->PutTagAndValue( RMobilePhoneBookStore::ETagPBNumber,
-                                                           aEntry.iTelNumber );
-    if ( iPhoneBookType == EMBDNPhoneBook )
-        {
-        TInt index = iPhoneVoicemailInfo.iVoice;
-        VMBLOGSTRING2( "VMBX: RVmbxNumber::PhonebookWrite: \
-        iPhoneVoicemailInfo.iVoice index = %I", index );
-        iPhoneBook.Write( status, pbData, index );
-        VMBLOGSTRING( "Mbdn writing" );
-        }
-    else
-        {
-        iPhoneBook.Write( status, pbData, aEntry.iIndex );
-        VMBLOGSTRING( "6f17 writing" );
-        }
-    User::WaitForRequest( status );  // Wait for asynchronous call to finish
-    VMBLOGSTRING2( "PhonebookWrite: status=%I",  status.Int() );
-
-    delete pbkBuffer;
-    VMBLOGSTRING( "VMBX: RVmbxNumber::PhonebookWrite: <=" );
-    return status.Int();
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::PhonebookDelete
-// Removes an entry from ICC-based phonebook
-// -----------------------------------------------------------------------------
-//
-/*****************************************************
-*  Series 60 Customer / ETel
-*  Series 60 ETel API
-*****************************************************/
-TInt RVmbxNumber::PhonebookDelete( TVmbxEntry& aEntry )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::PhonebookDelete: =>" );
-    TInt lineNumber( EAlsLine1 );
-    if ( KErrNone != GetAlsLine( lineNumber ) )
-        {
-        lineNumber = EAlsLine1;
-        }
-    
-    TRequestStatus status( KErrNone );
-    if ( ( iPhoneBookType == EMBDNPhoneBook ) && ( EAlsLine1 == lineNumber ) )
-        {
-        TInt index = iPhoneVoicemailInfo.iVoice;
-        iPhoneBook.Delete( status, index );
-        }
-    else
-        {
-        iPhoneBook.Delete( status, aEntry.iIndex );
-        }
-    User::WaitForRequest( status );  // Wait for asynchronous call to finish
-    VMBLOGSTRING( "VMBX: RVmbxNumber::PhonebookDelete: <=" );
-    return status.Int();
-    }
-
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::FetchNumberFromPhonebook2L
-// Create and show Phonebook's Single Fetch Dialog
-// -----------------------------------------------------------------------------
-//
-void RVmbxNumber::FetchNumberFromPhonebook2L( TDes& aPhoneNumber )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::FetchNumberFromPhonebook2L: =>" );
-
-    CPhCntFactory* contactFactory = CreateCntFactoryL();
-    CleanupStack::PushL( contactFactory );
-    iCntFetch = NULL;
-    iCntFetch = contactFactory->CreateSingleItemFetchL();
-    CPhCntSelection* contactSelect = NULL;
-
-    TRAPD( error, contactSelect = iCntFetch->SelectPhoneNumberLD() );
-    // Task swapper close activated
-    if ( error != KErrNone )
-        {
-        contactSelect = NULL;
-        iCntFetch = NULL;
-        User::Leave( error ); //close application
-        }
-
-    // This check is needed because contactselect is NULL in case of user
-    // presses back in contact fetch dialog. It will NOT leave.
-    if ( contactSelect )
-        {
-        if ( contactSelect->Number().Length() )
-            {
-            aPhoneNumber = contactSelect->Number().Left( KVmbxMaxNumberLength );
-            }
-        delete contactSelect;
-        contactSelect = NULL;
-        }
-
-    iCntFetch = NULL;
-    CleanupStack::PopAndDestroy( contactFactory );
-
-    //for removing special chars from number fetched from phone book
-    TText ch = 0;
-    TInt len = aPhoneNumber.Length();
-    for ( TInt cnt = 0; cnt < len; cnt++ )
-        {
-        ch = aPhoneNumber[cnt];
-        switch ( ch )
-            {
-            case '(':
-            case ')':
-            case '-':
-            case ' ':
-                {
-                aPhoneNumber.Delete( cnt, 1 );
-                cnt--;
-                len = aPhoneNumber.Length();
-                break;
-                }
-            default:
-                  break;
-            }
-        }
-
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::FetchNumberFromPhonebook2L: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::GetVmNumFromSIM
-// Retrieves voice mailbox number from SIM/R-UIM
-// -----------------------------------------------------------------------------
-//
-#ifdef VM_USE_TSY
-TInt RVmbxNumber::GetVmNumFromSIM( TDes& aNumber, TInt aLineNumber )
-#else
-TInt RVmbxNumber::GetVmNumFromSIM( TDes& /*aNumber*/, TInt /*aLineNumber*/ )
-#endif
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetVmNumFromSIM: =>" );
-    TInt ret( KErrNotFound );
-
-#ifdef VM_USE_TSY
-
-    if ( iFlags & KVmFlagPhonebookBeingCached )
-        {
-        ret = DoPhonebookOperation( EVmbxPhonebookGetInfo );
-
-        if ( ret != KErrNone )
-            {
-            VMBLOGSTRING2( "DoPhonebookOperation getinfo retval = %I", ret );
-            return ret;
-            }
-        }
-
-    // Now we have SIM support information updated
-    if ( iFlags & KVmFlagSimReadSupport )
-        {
-        TVmbxEntry entry;
-        entry.iIndex = aLineNumber;  // 1 or 2
-        ret = DoPhonebookOperation( EVmbxPhonebookRead, &entry );
-        VMBLOGSTRING3( "VMBX: RVmbxNumber::GetVmNumFromSIM: \
-        Read SIM entry %I, status: %I", aLineNumber, ret );
-
-        if ( ret == KErrNone )
-            {
-            if ( !entry.iTelNumber.Length() )
-                {
-                ret = KErrNotFound;
-                }
-            else
-                {
-                aNumber.Copy( entry.iTelNumber );
-                }
-            }
-        }
-    else
-        {
-        ret = KErrNotSupported;
-        }
-
-    if ( IsEmergencyNumberL( aNumber ) )
-        {
-        aNumber.Zero();
-        ret = KErrNotFound;
-        }
-
-        VMBLOGSTRING2( "Number = %S", &aNumber );
-#endif  // VM_USE_TSY
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetVmNumFromSIM: <=" );
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::GetVmNumFromVMN
-// Retrieves voice mailbox number from VMN summary info
-// -----------------------------------------------------------------------------
-//
-TInt RVmbxNumber::GetVmNumFromVMN( TDes& aNumber )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetVmNumFromVMN: =>" );
-    TBuf<KVmbxMaxNumberLength> number;
-    TInt ret( KErrNotFound );
-    TInt value = 0;
-
-    ret = iSession->Get( KVmSummaryInfoIsSet, value );
-
-    if ( !ret && value == 1 )
-        {
-        ret = iSession->Get( KVmCallbackNumber, number );
-        if ( !ret )
-            {
-            if ( number.Length() )
-                {
-                aNumber.Copy( number );
-                }
-            else
-                {
-                ret = KErrNotFound;
-                }
-            }
-        }
-
-    if ( IsEmergencyNumberL( aNumber ) )
-        {
-        aNumber.Zero();
-        ret = KErrNotFound;
-        }
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetVmNumFromVMN: <=" );
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::GetVmNumFromNamStore
-// Retrieves voice mailbox number from NAM
-// -----------------------------------------------------------------------------
-//
-TInt RVmbxNumber::GetVmNumFromNamStore( TDes& aNumber, TInt aNumType )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetVmNumFromNamStore: =>" );
-    TRequestStatus ret( KErrNotFound );
-    RMobileNamStore namStore;
-
-    ret = namStore.Open( iPhone );
-    if ( ret != KErrNone )
-        {
-        VMBLOGSTRING( "VMBX: RVmbxNumber::GetVmNumFromNamStore: \
-        NameStore error %I, ret.Int()" );
-        return ret.Int();
-        }
-
-    RMobileNamStore::TMobileNamStoreInfoV1 namInfo;
-    RMobileNamStore::TMobileNamStoreInfoV1Pckg namInfoPckg( namInfo );
-
-    namStore.GetInfo( ret, namInfoPckg );
-    User::WaitForRequest( ret );
-    if ( ret == KErrNone )
-        {
-        RMobileNamStore::TMobileNamEntryV1 namEntry;
-        RMobileNamStore::TMobileNamEntryV1Pckg namEntryPckg( namEntry );
-
-        namEntry.iNamId = namInfo.iActiveNam;
-
-        switch ( aNumType )
-            {
-            case EVmbxMDN:
-                {
-                namEntry.iParamIdentifier = KVmNamStoreMDNId;
-                break;
-                }
-            case EVmbxMIN:
-                {
-                namEntry.iParamIdentifier = KVmNamStoreMINId;
-                break;
-                }
-            default:
-                break;
-            }
-
-        namStore.Read( ret, namEntryPckg );
-        User::WaitForRequest( ret );
-        if ( ret == KErrNone )
-            {
-            ret = CnvUtfConverter::ConvertToUnicodeFromUtf8(
-                aNumber,            // Unicode
-                namEntry.iData );   // Utf8
-            }
-        }
-
-    if ( IsEmergencyNumberL( aNumber ) )
-        {
-        aNumber.Zero();
-        ret = KErrNotFound;
-        }
-
-    namStore.Close();
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetVmNumFromNamStore: <=" );
-    return ret.Int();
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::GetVmNumFromSD
-// Retrieves voice mailbox number from Shared Data
-// -----------------------------------------------------------------------------
-//
-TInt RVmbxNumber::GetVmNumFromSD( TDes& aNumber, TInt aLineNumber )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetVmNumFromSD: =>" );
-    TBuf< KVmbxMaxNumberLength > number;
-    TInt ret( KErrNotFound );
-
-    TUint32 keyword = aLineNumber ==
-                EAlsLine1Entry?KVmbxNumberLinePrimary: KVmbxNumberLineAuxiliary;
-    ret = iSession->Get( keyword, number );
-
-    if ( !ret )
-        {
-        if ( number.Length() )
-            {
-            aNumber.Copy( number );
-            }
-        else
-            {
-            ret = KErrNotFound;
-            }
-        }
-    if ( IsEmergencyNumberL( aNumber ) )
-        {
-        aNumber.Zero();
-        ret = KErrNotFound;
-        }
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetVmNumFromSD: <=" );
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::CloseETel
-// Closes all ETel resources
-// -----------------------------------------------------------------------------
-//
-void RVmbxNumber::CloseETel()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::CloseETel: =>" );
-    iPhoneBook.Close();
-
-    if ( iFlags & KVmFlagPhoneOpened )
-        {
-        iPhone.Close();
-        }
-
-    if ( iFlags & KVmFlagPhoneModuleLoaded )
-        {
-        iTelServer.UnloadPhoneModule( KMmTsyModuleName );
-        }
-    iTelServer.Close();
-
-    // Clear corresponding flags
-    iFlags &= ~KVmFlagSimReadSupport;
-    iFlags &= ~KVmFlagSimWriteSupport;
-    iFlags &= ~KVmFlagPhoneModuleLoaded;
-    iFlags &= ~KVmFlagPhoneOpened;
-    iFlags &= ~KVmFlagPhonebookBeingCached;
-    VMBLOGSTRING( "VMBX: RVmbxNumber::CloseETel: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::AppendStrToArrayL
-// Appends string from resourse to descriptor array
-// -----------------------------------------------------------------------------
-//
-void RVmbxNumber::AppendStrToArrayL( TInt aResourceId, CDesCArray& aArray )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::AppendStrToArrayL: =>" );
-    HBufC* tmp = StringLoader::LoadLC( aResourceId, iCoeEnv );
-    aArray.AppendL( *tmp );
-    CleanupStack::PopAndDestroy( tmp );
-    VMBLOGSTRING( "VMBX: RVmbxNumber::AppendStrToArrayL: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::SetHeaderFromResourceL
-// Set query dialog header text from resource string
-// -----------------------------------------------------------------------------
-//
-void RVmbxNumber::SetHeaderFromResourceL( TInt aResourceId,
-                                                        CAknQueryDialog& aDlg )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SetHeaderFromResourceL: =>" );
-    HBufC* headingText = StringLoader::LoadLC( aResourceId, iCoeEnv );
-    aDlg.SetHeaderTextL( *headingText );
-    CleanupStack::PopAndDestroy( headingText );
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SetHeaderFromResourceL: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::QueryAddressL
-// Fetches Voip address (returns ETrue when success)
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool RVmbxNumber::QueryAddressL( TVmbxQueryType /*aQueryType*/,
-                                           TDes& /*aNumber*/ )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryAddressL: =>" );
-    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryAddressL: METHOD NOT SUPPORTED ANYMORE" );
-    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryAddressL: <=" );
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::SelectTypeL
-// Select which type of Vmbx
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RVmbxNumber::SelectTypeL( TBool aTitle )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SelectTypeL: =>" );
-    if ( !AllowedToChangeTheNumber() && EVmbxDefine == aTitle )
-        {
-        VMBLOGSTRING( "VMBX: RVmbxNumber::SelectTypeL: \
-        Not Allow to define voice mail number" );
-        VMBLOGSTRING( "VMBX: RVmbxNumber::SelectTypeL: <=" );
-        return EVmbxNone;
-        }
-
-    if ( VideoSupported() )
-        {
-        TInt index( 0 );
-
-        RArray<TInt> vmbxTypeArray;
-        CleanupClosePushL( vmbxTypeArray );
-
-        iTypeSelectionQuery = CVmListQueryDialog::NewL( &index );
-        iTypeSelectionQuery->PrepareLC( R_MAILBOX_LISTQUERY );
-
-        VMBLOGSTRING( "VMBX: RVmbxNumber::SelectTypeL: Not only Voice" );
-
-        // Select which type voice mailbox number to call, CS or Video
-        if ( EVmbxCall == aTitle )
-            {
-            // Set prompt
-            VMBLOGSTRING( "VMBX: RVmbxNumber::SelectTypeL: aTitle = call" );
-
-            SetHeaderFromResourceL( R_CALLTO_LBX_PROMPT, *iTypeSelectionQuery );
-
-            // Fill items to array
-            CDesCArrayFlat* lbxItems =
-                        new (ELeave) CDesCArrayFlat( KVmLbxItemsArraySize );
-            CleanupStack::PushL( lbxItems );
-
-            TBuf<KVmbxMaxNumberLength> vmbxNumber;
-
-            // Check CS number
-            if ( KErrNone == GetVmbxNumber( vmbxNumber ) )
-                {
-                AppendStrToArrayL( R_CALLTO_LBX_CS_MAILBOX_ITEM, *lbxItems );
-                User::LeaveIfError( vmbxTypeArray.Append( EVmbx ) );
-                iType = EVmbx;
-                VMBLOGSTRING( "VMBX: RVmbxNumber::SelectTypeL: EVmbx" );
-                }
-            // Check Video number
-            if ( VideoSupported() &&
-                 KErrNone == GetVideoMbxNumber( vmbxNumber ) )
-                {
-                AppendStrToArrayL( R_CALLTO_LBX_VIDEO_MAILBOX_ITEM,
-                                                               *lbxItems );
-                User::LeaveIfError( vmbxTypeArray.Append( EVmbxVideo ) );
-                iType = EVmbxVideo;
-                VMBLOGSTRING( "VMBX: RVmbxNumber::SelectTypeL: EVmbxVideo" );
-                }
-
-            iTypeSelectionQuery->SetItemTextArray( lbxItems );
-            // vest ownership to lbx
-            iTypeSelectionQuery->SetOwnershipType( ELbmOwnsItemArray );
-            CleanupStack::Pop( lbxItems );
-            }
-        // Select which type of VMBX number to define, CS or Video
-        else
-            {
-            // Set prompt
-            VMBLOGSTRING( "VMBX: RVmbxNumber::SelectTypeL: aTitle = define" );
-
-            SetHeaderFromResourceL( R_DEFINE_VIDEO_OR_VOICE_LBX_PROMPT,
-                                    *iTypeSelectionQuery );
-
-            // Fill items to array
-            CDesCArrayFlat* lbxItems =
-                        new (ELeave) CDesCArrayFlat( KVmLbxItemsArraySize );
-            CleanupStack::PushL( lbxItems );
-
-            AppendStrToArrayL( R_DEFINE_LBX_CS_MAILBOX_ITEM, *lbxItems );
-            User::LeaveIfError( vmbxTypeArray.Append( EVmbx ) );
-
-            if ( VideoSupported() )
-                {
-                AppendStrToArrayL( R_DEFINE_LBX_VIDEO_MAILBOX_ITEM,
-                                                                *lbxItems );
-                User::LeaveIfError( vmbxTypeArray.Append( EVmbxVideo ) );
-                }
-
-            iTypeSelectionQuery->SetItemTextArray( lbxItems );
-            // vest ownership to lbx
-            iTypeSelectionQuery->SetOwnershipType( ELbmOwnsItemArray );
-            CleanupStack::Pop( lbxItems );
-            }
-
-        VMBLOGSTRING2( "VMBX: RVmbxNumber::SelectTypeL array count %d",
-            vmbxTypeArray.Count());
-
-        if ( ( EVmbxCall == aTitle ) &&
-            ( KVmbxOnlyDefinedOneNumber == vmbxTypeArray.Count() ) )
-            {
-            // call directly
-            VMBLOGSTRING( "VMBX: RVmbxNumber::SelectTypeL: Only one" );
-            CleanupStack::PopAndDestroy( iTypeSelectionQuery );
-            }
-        else
-            {
-            if ( iTypeSelectionQuery->RunLD() )
-                {
-                iType = vmbxTypeArray[ index ];
-                }
-            else
-                {
-                iType = EVmbxNone;
-                }
-             }
-
-        iTypeSelectionQuery = NULL;
-        //close and destroy vmbxTypeArray
-        CleanupStack::PopAndDestroy( &vmbxTypeArray );
-        VMBLOGSTRING( "VMBX: RVmbxNumber::SelectTypeL: <=" );
-        return iType;
-        }
-    // Only supported CS
-    else
-        {
-        VMBLOGSTRING( "VMBX: RVmbxNumber::SelectTypeL: <=" );
-        return EVmbx;
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::SaveVmbxAddressL
-// Save voice mailbox address to RCSC
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RVmbxNumber::SaveVmbxAddressL( TDes& /*aAddress*/ )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SaveVmbxAddressL(TDes& aAddress): Method deprecated" );
-    return KErrNotSupported;
-    }
-
-
-// ----------------------------------------------------------------------------
-// RVmbxNumber::IsVoIPProfilesFound
-// Check if VoIP profiles is found.
-// ----------------------------------------------------------------------------
-//
-EXPORT_C TBool RVmbxNumber::IsVoIPProfilesFound()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::IsVoIPProfilesFound" );
-
-    return iVmSpsHandler->IsVoIPProfilesFound();
-    }
-
-
-EXPORT_C TBool RVmbxNumber::IsIpVoiceMailboxServices()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::IsIpVoiceMailboxServices: =>" );
-
-    TBool ret( EFalse );
-
-    if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
-        {
-        RArray<TUint> profileIds;
-
-        GetServiceIds( profileIds );
-
-        TInt count = profileIds.Count();
-
-        profileIds.Close();
-
-        if ( count > 0 )
-            {
-            ret = ETrue;
-            }
-        else
-            {
-            ret = EFalse;
-            }
-        }
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::IsIpVoiceMailboxServices: <=" );
-    return ret;
-    }
-
-// ----------------------------------------------------------------------------
-// RVmbxNumber::IsSimMemory
-// Returns if the memory location for vmbx is sim memory
-// ----------------------------------------------------------------------------
-//
-EXPORT_C TBool RVmbxNumber::IsSimMemory()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::IsSimMemory: =>" );
-    TBool ret( EFalse );
-    TInt alsLine( EAlsLine1 );
-    // get the current ALS line
-    if ( GetAlsLine( alsLine ) != KErrNone )
-        {
-        alsLine = EAlsLine1;  // if problems, assume primary line
-        }
-    if ( iSimCardFound )
-        {
-        // if number automatically fetched from read only SIM
-        // or ALS2 is active
-        if ( ( !( iFlags & KVmFlagSimWriteSupport ) ) || EAlsLine2 == alsLine  )
-            {
-            ret = ( !UserEditNumber( alsLine ) && 
-                        !IsPhoneMemForcedEdit( alsLine ) );
-            }
-        // if number stored in writable SIM
-        else
-            {
-            ret = UsesSimMemory();
-            }
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::IsSimMemory: <=" );
-    VMBLOGSTRING3( "VMBX: RVmbxNumber::IsSimMemory: sim memory is used \
-    iSimCardFound: %I, ret: %I", iSimCardFound, ret );
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::GetVideoMbxNumber
-// Fetches the specified video mailbox number
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RVmbxNumber::GetVideoMbxNumber( TDes& aNumber,
-                                                      TVmbxNumberEntry aEntry )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetVideoMbxNumber: =>" );
-    TInt ret = VideoSupported();
-
-    if ( ret )
-        {
-        TInt lineNumber( aEntry );
-        TBuf< KVmbxMaxNumberLength > number;
-        if ( EAlsActiveLineEntry == aEntry )
-            {
-            // get the current ALS line
-            if ( KErrNone != GetAlsLine( lineNumber ) )
-                {
-                lineNumber = EAlsLine1;  // if problems, assume primary line
-                }
-            }
-
-        TUint32 keyword = lineNumber ==
-         EAlsLine1Entry ? KVideoMbxNumberLinePrimary : KVideoMbxNumberLineAuxiliary;
-        ret = iSession->Get( keyword, number );
-
-        if ( KErrNone == ret )
-            {
-            if ( number.Length() )
-                {
-                aNumber.Copy( number );
-                }
-            else
-                {
-                ret = KErrNotFound;
-                }
-            }
-
-        if ( IsEmergencyNumberL( aNumber ) )
-            {
-            aNumber.Zero();
-            ret = KErrNotFound;
-            }
-        }
-    else
-        {
-        ret = KErrNotFound;
-        }
-    VMBLOGSTRING2( "VMBX: RVmbxNumber::GetVideoMbxNumber:<=\
-                                Video supported = %d", ret );
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::QueryVideoMbxNumberL
-// Queries a video mailbox number
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool RVmbxNumber::QueryVideoMbxNumberL( TVmbxQueryType aQueryType,
-                                                                 TDes& aNumber )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryVideoMbxNumberL: =>" );
-    TBool result( EFalse );
-
-    __ASSERT_DEBUG( aNumber.MaxLength() >= KVmbxMaxNumberLength,
-                    User::Panic(KVmbxPanicCategory, EVmbxDescriptorTooSmall) );
-    __ASSERT_DEBUG( aNumber.Length() <= KVmbxMaxNumberLength,
-                         User::Panic(KVmbxPanicCategory, EVmbxNumberTooLong) );
-
-    if ( !AllowedToChangeTheNumber() )
-        {
-        VMBLOGSTRING( "VMBX: RVmbxNumber::QueryVideoMbxNumberL: \
-        Video number not allowed to change" );
-        VMBLOGSTRING( "VMBX: RVmbxNumber::QueryVideoMbxNumberL: <=" );
-        User::Leave( KErrAccessDenied );
-        }
-
-    TBuf< KVmbxMaxNumberLength > number;
-    TBool thisClosed( EFalse );
-    // Close() sets thisClosed to ETrue
-
-    FOREVER
-        {
-        number.Copy( aNumber );
-
-        // get the correct query prompt from resource file
-        HBufC* prompt = StringLoader::LoadLC(
-                    ( aQueryType == EVmbxNotDefinedQuery ?
-                            R_VIDEO_DEFINE_NUMBER_PROMPT :
-                                R_VIDEO_CHANGE_NUMBER_PROMPT),
-                                        iCoeEnv );
-
-        iClosedPtr = &thisClosed;
-
-        // Convert output to accommodate the current locale
-        AknTextUtils::LanguageSpecificNumberConversion( number );
-
-        TInt ret;  // return value of the query
-        TBool searchUsed;  // ETrue to open the query again after
-                           //closing single fetch dialog
-
-        // enable search if number length is 0
-        TBool searchEnabled( number.Length() ? EFalse : ETrue );
-
-        do
-            {
-            // show query with the correct prompt
-            iVideoQuery = CVmTextQueryDialog::NewL( number,
-                                                *prompt, searchEnabled );
-
-            ret = iVideoQuery->ExecuteLD( R_VMBX_NUMBER_QUERY );
-
-            iVideoQuery = NULL;
-            searchUsed = EFalse;
-
-            if ( searchEnabled && ret && !number.Length() )
-                {
-                searchUsed = ETrue;
-                // Show phonebook's single fetch dialog
-                TRAPD( error, FetchNumberFromPhonebook2L( number ) );
-
-                // user has pressed End Key
-                if ( thisClosed )
-                    {
-                    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryVideoMbxNumberL: \
-                    End key pressed" );
-                    CleanupStack::PopAndDestroy( prompt );
-                    return EFalse;
-                    }
-
-                if ( error ) //  Back pressed in Contact UI
-                    {
-                    // Now the phone book fetch dialog
-                    // was closed, get out of the loop
-                    ret = EFalse;
-                    break;
-                    }
-                }
-            } while( searchUsed );
-
-        iClosedPtr = NULL;
-
-        CleanupStack::PopAndDestroy( prompt );
-
-        if ( ret )
-            {
-            if ( !number.Length() )
-                {
-                User::LeaveIfError( SaveVideoMbxNumber( number,
-                                                    EAlsActiveLineEntry ) );
-                aNumber.Copy( number );
-
-                // show "not defined" note
-                ShowConfirmationNoteL( R_VIDEO_NOTE_EMPTY_NUMBER );
-                result = ETrue;
-                break;
-                }
-
-            // Convert back to western digits
-            ConvertToWesternDigits( number );
-
-            // check the given number here (emergency numbers not allowed)
-            if ( IsValidPhoneNumber( number ) && !IsEmergencyNumberL( number ) )
-                {
-                TInt status = SaveVideoMbxNumber( number, EAlsActiveLineEntry );
-
-                if ( status == KErrNone )
-                    {
-                    aNumber.Copy( number );
-                    ShowConfirmationNoteL( R_VIDEO_SAVED_NOTE );
-                    result = ETrue;
-                    break;
-                    }
-                }
-
-            if ( !result )
-                {
-                // show "invalid number" note and wait for a short timeout
-                prompt = StringLoader::LoadLC( R_INVALID_NUMBER_NOTE, iCoeEnv );
-
-                iClosedPtr = &thisClosed;
-
-                CAknInformationNote* note =
-                                     new( ELeave ) CAknInformationNote( ETrue );
-                note->ExecuteLD( *prompt );
-
-                iClosedPtr = NULL;
-
-                CleanupStack::PopAndDestroy( prompt );
-
-                if ( !thisClosed )
-                    {
-                    continue;  // the number was invalid -> query again.
-                    }
-                }
-            }
-        break;  // user canceled the query
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::QueryVideoMbxNumberL: <=" );
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::SaveVideoMbxNumber
-// Saves the vmbx number. (in phone file system)
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RVmbxNumber::SaveVideoMbxNumber( const TDesC& aNumber,
-                                                     TVmbxNumberEntry aEntry )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SaveVideoMbxNumber: =>" );
-    TInt error( KErrNone );
-    __ASSERT_DEBUG( iFlags & KVmFlagOpened,
-                User::Panic(KVmbxPanicCategory, EVmbxNotConnected) );
-    __ASSERT_DEBUG( aNumber.Length() <= KVmbxMaxNumberLength,
-                User::Panic(KVmbxPanicCategory, EVmbxNumberTooLong) );
-
-    TInt lineNumber( aEntry );
-    if ( aEntry == EAlsActiveLineEntry )
-        {
-    // get the current ALS line
-        if ( GetAlsLine( lineNumber ) != KErrNone )
-            {
-            lineNumber = EAlsLine1;  // if problems, assume primary line
-            }
-        }
-    TUint32 keyword = lineNumber ==
-      EAlsLine1Entry ? KVideoMbxNumberLinePrimary: KVideoMbxNumberLineAuxiliary;
-
-    error = iSession->Set( keyword, aNumber );
-    if ( !error )
-        {
-         // Client will generate the event itself on request.
-        if ( iFlags & KVmFlagNotifyRequested )
-            {
-            HandleNotifyString( keyword, aNumber );
-            }
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SaveVideoMbxNumber: <=" );
-    return error;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::IsUsimSupport
-// -----------------------------------------------------------------------------
-
-// -----------------------------------------------------------------------------
-//  Series 60 Customer / MSatRefreshOserver
-//  Series 60 MSatRefreshObserver API
-// -----------------------------------------------------------------------------
-TBool RVmbxNumber::AllowRefresh(
-            TSatRefreshType aType, const TSatRefreshFiles& aFiles )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::AllowRefresh: =>" );
-    TBool allowRefresh( ETrue );
-    if ( aType == EFileChangeNotification )
-        {
-        const TInt elFile1( aFiles.Locate( KMbdnEf ) );
-        const TInt elFile2( aFiles.Locate( KMbiEf) );
-
-        if ( ( KErrNotFound == elFile1) &&
-             ( KErrNotFound == elFile2 ) )
-            {
-            allowRefresh = EFalse;
-            }
-
-        }
-    else
-        {
-        allowRefresh = EFalse;
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::AllowRefresh: <=" );
-    return allowRefresh;
-    }
-
-// -----------------------------------------------------------------------------
-//  Series 60 Customer / MSatRefreshOserver
-//  Series 60 MSatRefreshObserver API
-// -----------------------------------------------------------------------------
- void RVmbxNumber::Refresh( TSatRefreshType aType,
-                                               const TSatRefreshFiles& aFiles )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::Refresh: =>" );
-    if ( aType == EFileChangeNotification )
-        {
-        const TInt elFile1( aFiles.Locate( KMbdnEf ) );
-        const TInt elFile2( aFiles.Locate( KMbiEf ) );
-
-        if ( ( KErrNotFound != elFile1) || ( KErrNotFound != elFile2 ) )
-            {
-            //do phone book getInfo
-            TInt error( KErrNone );
-            error = DoPhonebookOperation( EVmbxPhonebookGetInfo );
-            if ( !error )
-                {
-                TVmbxEntry entry;
-                entry.iIndex = 1;
-                TInt ret = DoPhonebookOperation( EVmbxPhonebookRead, &entry );
-
-                // Notify SAT Server that refresh initiated file read is done
-                iRSatClient.RefreshEFRead( EFalse );
-
-                if ( ( iNotifyCallBack  ) && ( entry.iTelNumber.Length() > 0 )
-                    && ( iMemoryLocation == EVmbxSimMemory ) )
-                    {
-                    TInt notifyLine( 0 );
-                    TRAPD( err, iNotifyCallBack->HandleNotifyL( notifyLine,
-                                                        entry.iTelNumber ) );
-                    if ( err )
-                        {
-                        _LIT(KVmbxPanicType,"iNotifyCallBack->HandleNotifyL");
-                        User::Panic( KVmbxPanicType, err );
-                        }
-                    }
-                }
-            }
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::Refresh: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::MailboxNumbersIdentifiers
-// Gets identifiers of the records in sim from MBI-file in sim
-// -----------------------------------------------------------------------------
-//
-TInt RVmbxNumber::MailboxNumbersIdentifiers()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::MailboxNumbersIdentifiers: =>" );
-    TRequestStatus status;
-
-    // Get identifiers
-    iPhone.GetMailboxNumbers( status, iPhoneVoicemailInfoPckg );
-
-    // Wait for asynchronous call to finish
-    User::WaitForRequest( status );
-    VMBLOGSTRING2( "Identifier read status = %I", status.Int() );
-    VMBLOGSTRING2( "iVoice value: %d", iPhoneVoicemailInfo.iVoice );
-    VMBLOGSTRING( "VMBX: RVmbxNumber::MailboxNumbersIdentifiers: <=" );
-    return status.Int();
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::MailboxNumbersIdentifiers
-// Gets identifiers of the records in sim from MBI-file in sim
-// -----------------------------------------------------------------------------
-//
-void RVmbxNumber::TestAndSetSimAccessFlags()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::TestAndSetSimAccessFlags: =>" );
-    // Caps are not valid for read-only Sim, so check if writing
-    // to sim fails.
-    // Assume that a number exist
-    iNoNumberFound = EFalse;
-    TBool isTestNumberUsed = EFalse;
-    // read sim data first
-    TVmbxEntry entry;
-    entry.iIndex = EAlsLine1;
-
-    TInt readError = DoPhonebookOperation( EVmbxPhonebookRead, &entry );
-
-    // KErrNotFound is returned when number length is zero, then
-    // testnumber is used to test write support
-    if ( readError == KErrNone || readError == KErrNotFound )
-        {
-        // save number for later use
-        if ( entry.iTelNumber.Length() )
-            {
-            iNumberFromSim.Copy( entry.iTelNumber );
-            }
-        // number not found, test with testnumber
-        else if ( entry.iTelNumber.Length() == 0 )
-            {
-            // no number found
-            iNoNumberFound = ETrue;
-            VMBLOGSTRING( "Use test number for testing write support" );
-            entry.iTelNumber.Copy( KTestNumber ) ;
-            isTestNumberUsed = ETrue;
-            }
-
-        VMBLOGSTRING( "Try writing" );
-
-        TInt writeError = DoPhonebookOperation( EVmbxPhonebookWrite, &entry );
-        VMBLOGSTRING2( "Write: %I", writeError );
-
-        // write error, set write flag to not supported
-        // and phone memory in use
-        if ( writeError )
-            {
-            VMBLOGSTRING( "WriteAccess not ok" );
-            iFlags &= ~KVmFlagSimWriteSupport;
-            }
-        // tested with and sim has write access so delete test number from sim
-        else if ( isTestNumberUsed && writeError == KErrNone )
-            {
-            VMBLOGSTRING( "Remove test number from sim" );
-            DoPhonebookOperation( EVmbxPhonebookDelete, &entry );
-            }
-        }
-    // read error, set read and write flag to not supported
-    // and phone memory in use
-    else
-        {
-        VMBLOGSTRING( "ReadAccess not ok" );
-        iFlags &= ~KVmFlagSimReadSupport;
-
-        VMBLOGSTRING( "WriteAccess not ok" );
-        iFlags &= ~KVmFlagSimWriteSupport;
-        // The first USim phonebook type is tested,
-        // keep memorylocation unchanged
-        if ( iUSimFirstRoundTest )
-            {
-            VMBLOGSTRING2( "iMemoryLocation = %d", iMemoryLocation );
-            iUSimFirstRoundTest = EFalse;
-            }
-        else
-            {
-            iMemoryLocation = EVmbxPhoneMemory;
-            iSession->Set( KVmUsesSimMemory, EVmbxPhoneMemory );
-            VMBLOGSTRING2( "iMemoryLocation = %d", iMemoryLocation );
-            }
-        }
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::TestAndSetSimAccessFlags: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::MailboxNumbersIdentifiers
-// Gets identifiers of the records in sim from MBI-file in sim
-// -----------------------------------------------------------------------------
-//
-void RVmbxNumber::CalculateActualMaxLengthOnSim( TInt aSimNumberLength )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::CalculateActualMaxLength: =>" );
-    VMBLOGSTRING2("iPhoneBookInfo.iMaxNumLength = %I", iPhoneBookInfo.iMaxNumLength );
-    VMBLOGSTRING2("aSimNumberLength = %I", aSimNumberLength );
-
-    // If max length is less than 20 or -1 returned, then
-    // max length must be detemined from number length that is
-    // saved on sim.
-    if ( iPhoneBookInfo.iMaxNumLength == KVmExtFileSize ||
-            iPhoneBookInfo.iMaxNumLength == -1 )
-        {
-        // number on sim is less than 21
-        if ( aSimNumberLength <= KVmExtFileSize )
-            {
-            iPhoneBookInfo.iMaxNumLength = KVmExtFileSize;
-            }
-        // number on sim is more than 20 but less than 40
-        else if ( KVmExtFileSize < aSimNumberLength &&
-                        aSimNumberLength <= KVmPhoneNumDigitsMaxLength  )
-            {
-            iPhoneBookInfo.iMaxNumLength = KVmPhoneNumDigitsMaxLength;
-            }
-        // number on sim is more than 40
-        else
-            {
-            iPhoneBookInfo.iMaxNumLength = KVmMaxStoreSize;
-            }
-        }
-    // If max length is 40, and number length on sim is more
-    // than 20 but less than 41, then 48 is available on sim.
-    else if ( iPhoneBookInfo.iMaxNumLength == KVmPhoneNumDigitsMaxLength &&
-              KVmExtFileSize < aSimNumberLength &&
-              aSimNumberLength <= KVmPhoneNumDigitsMaxLength )
-        {
-        iPhoneBookInfo.iMaxNumLength = KVmMaxStoreSize;
-        }
-    VMBLOGSTRING2("iPhoneBookInfo.iMaxNumLength = %I", iPhoneBookInfo.iMaxNumLength );
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::CalculateActualMaxLength: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::VideoSupported
-// Returns video support state
-// -----------------------------------------------------------------------------
-//
-TBool RVmbxNumber::VideoSupported()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::VideoSupported: =>" );
-
-    TBool supported( EFalse );
-
-    if ( FeatureManager::FeatureSupported( KFeatureIdCsVideoTelephony ) )
-        {
-        TInt result = iSession->Get( KVideoMbxSupport, supported );
-        if ( result != KErrNone )
-            {
-            supported = EFalse;
-            }
-        }
-
-    VMBLOGSTRING2("VMBX: RVmbxNumber::VideoSupported: supported = %d", supported );
-    return supported;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::GetVmbxAddressL
-// Retrieves voice mailbox address from RCSC
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RVmbxNumber::GetVmbxAddressL( TDes& /*aAddress*/ )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetVmbxAddressL(TDes& aAddress): Method deprecated" );
-    VMBLOGSTRING( "Use GetVmbxAddressL(TDes& aAddress, TUint aServiceId) instead" );
-
-    return KErrNotSupported;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::GetVmbxAddress
-// Retrieves voice mailbox address from SPS
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RVmbxNumber::GetVmbxAddress( TDes& aAddress, TUint aServiceId )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetVmbxAddress: =>" );
-    TInt ret( KErrNotSupported );
-
-    if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
-        {
-        TVmbxServiceInfo serviceInfo;
-        serviceInfo.iServiceId = aServiceId;
-        ret = GetServiceInfo( serviceInfo );
-        VMBLOGSTRING2( "VMBX: RVmbxNumber::GetVmbxAddress: error: %d", ret );
-        if ( KErrNone == ret )
-            {
-            if ( serviceInfo.iAddress.Length() > aAddress.MaxLength() )
-                {
-                ret = KErrOverflow;
-                }
-            else
-                {
-                aAddress.Copy( serviceInfo.iAddress );
-                }
-            }
-        VMBLOGSTRING2( "VMBX: RVmbxNumber::GetVmbxAddress: error: %d", ret );
-        }
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetVmbxAddress: <=" );
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::SelectTypeL
-//
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RVmbxNumber::SelectTypeL( TBool aTitle, TUint& aServiceId )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SelectTypeL: =>" );
-
-    if ( !AllowedToChangeTheNumber() && EVmbxDefine == aTitle )
-       {
-       VMBLOGSTRING( "VMBX: RVmbxNumber::SelectTypeL: \
-       Not Allow to define voice mail number" );
-       VMBLOGSTRING( "VMBX: RVmbxNumber::SelectTypeL: <=" );
-       return EVmbxNone;
-       }
-
-    if ( EVmbxCall != aTitle )
-        {
-        User::Leave( KErrNotSupported );
-        }
-    // the sum of defined numbers
-    TInt definedNumber( 0 );
-    TInt definedFlag( 0 );
-    CheckDefinedNumberCountL(definedNumber, definedFlag, aServiceId );
-
-    // Pop up selection dialog only if there are more than 2 defined numbers
-    if ( KMailBoxLimitForPrompt < definedNumber )
-        {
-        TInt index( 0 );
-        // Clear the old service information
-        iVmbxServiceSelection.Reset();
-
-        // Create selection list query and show it.
-        iTypeSelectionQuery = new (ELeave) CAknListQueryDialog( &index );
-        iTypeSelectionQuery->PrepareLC( R_VOIP_REL2_2_CALL_TO );
-
-        // Create descriptor array for connection networks, connection networks
-        // icons and load connection network images to memory..
-        CDesCArrayFlat* lbxItems =
-            new (ELeave) CDesCArrayFlat( KVmLbxItemsArraySize );
-        CleanupStack::PushL( lbxItems );
-        CArrayPtr<CGulIcon>* icons =
-            new (ELeave) CAknIconArray( KVmLbxItemsArraySize );
-        CleanupStack::PushL( icons );
-
-        ConstructDefaultIconsL( icons );
-
-        // Create final list box item data.
-        TBuf<512> queryItem( KNullDesC );
-        if( definedFlag & KVmFlagCSNumberDefined )
-            {
-            HBufC* csName = StringLoader::LoadLC( R_CALLTO_LBX_CS_MAILBOX_ITEM,
-                                                                       iCoeEnv );
-            queryItem.Format( KQueryItemFormat, 0, csName );
-            CleanupStack::PopAndDestroy( csName );
-
-            // Append text to the item array.
-            lbxItems->AppendL( queryItem );
-            // CS's hardcoded service value is 1
-            User::LeaveIfError( iVmbxServiceSelection.Append(
-                TVmbxServiceSelection( EVmbx, 1 ) ) );
-            }
-
-        if( definedFlag & KVmFlagVideoNumberDefined )
-            {
-            HBufC* videoName =
-                StringLoader::LoadLC( R_CALLTO_LBX_VIDEO_MAILBOX_ITEM,
-                                        iCoeEnv );
-            // Create final list box item data.
-            queryItem.Format( KQueryItemFormat, 1, videoName );
-            CleanupStack::PopAndDestroy( videoName );
-
-            // Append text to the item array.
-            lbxItems->AppendL( queryItem );
-            // Video's hardcoded service value is 1
-            User::LeaveIfError( iVmbxServiceSelection.Append(
-                TVmbxServiceSelection( EVmbxVideo, 1 ) ) );
-            }
-        if( definedFlag & KVmFlagVoIpNumberDefined )
-            {
-             // Get all Service Ids
-            RArray<TUint> profileIds;
-            CleanupClosePushL( profileIds );
-            GetServiceIds( profileIds );
-
-            for ( TInt i( 0 ); i < profileIds.Count(); i++ )
-                {
-                TVmbxServiceInfo serviceInfo;
-                serviceInfo.iServiceId = profileIds[ i ];
-                GetServiceInfo( serviceInfo );
-
-                HBufC* voipName = HBufC::NewLC( serviceInfo.iName.Length() );
-                voipName->Des().Copy( serviceInfo.iName );
-
-                TInt iconId( KErrNotFound );
-                TRAPD( error, AddBrandIconL( icons, profileIds[ i ], iconId ) );
-
-                // If branded icon is not available, use hardcoded value 2 which is
-                // default VoIP icons value
-                if ( KErrNone != error || KErrNotFound == iconId )
-                    {
-                    iconId = 2;
-                    }
-
-                // Create final list box item data.
-                queryItem.Format( KQueryItemFormat, iconId, voipName );
-                CleanupStack::PopAndDestroy( voipName );
-
-                //Append text to the item array.
-                lbxItems->AppendL( queryItem );
-                User::LeaveIfError( iVmbxServiceSelection.Append(
-                    TVmbxServiceSelection( EVmbxIP, serviceInfo.iServiceId ) ) );
-                }
-
-            CleanupStack::PopAndDestroy( &profileIds );
-            }
-
-        iTypeSelectionQuery->SetIconArrayL( icons );
-        iTypeSelectionQuery->SetItemTextArray( lbxItems );
-        iTypeSelectionQuery->SetOwnershipType( ELbmOwnsItemArray );
-
-        CleanupStack::Pop( icons );
-        CleanupStack::Pop( lbxItems );
-
-        if ( iTypeSelectionQuery->RunLD() )
-            {
-            TVmbxServiceSelection serviceType = iVmbxServiceSelection[ index ];
-            iType = serviceType.iServiceType;
-            aServiceId  = serviceType.iServiceId;
-            VMBLOGSTRING2( "VMBX: RVmbxNumber::VoIP vmbx with service id %d selected", aServiceId );
-            }
-        else
-            {
-            iType = EVmbxNone;
-            aServiceId = 0;
-            }
-        iTypeSelectionQuery = NULL;
-        }
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SelectTypeL: <=" );
-    return iType;
-    }
-// -----------------------------------------------------------------------------
-// RVmbxNumber::CheckDefinedNumberCountL
-//
-// -----------------------------------------------------------------------------
-//
-TInt RVmbxNumber::CheckDefinedNumberCountL( TInt& aDefinedNumber,
-                                      TInt& aDefinedFlag, TUint& aServiceId )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::CheckDefinedNumberCountL: =>" );
-    iType = EVmbxNone;
-    aServiceId = KDefaultServiceId;
-     // the sum of defined numbers
-    TInt definedNumber( KDefaultDefinedNumberCount );
-    TInt definedServiceTypes( 0 );
-    TInt definedFlag( 0 );
-
-    TBuf<KVmbxMaxNumberLength> tmpNumber(KNullDesC);
-
-    // First check what mailboxes are defined.
-    // Skip querying if only one  mailbox with number/address defined.
-    // 1. Get voice number
-    if ( KErrNone == GetVmbxNumber( tmpNumber ) )
-        {
-        VMBLOGSTRING( "VMBX: RVmbxNumber::CheckDefinedNumberCountL: CS vmbx number defined");
-        definedNumber++;
-        definedServiceTypes++;
-        iType = EVmbx;
-        aServiceId = KCSorVideoServiceId;
-        definedFlag |= KVmFlagCSNumberDefined;
-        }
-
-    // 2. Get video number
-    if ( VideoSupported() && KErrNone == GetVideoMbxNumber( tmpNumber ) )
-        {
-        VMBLOGSTRING( "VMBX: RVmbxNumber::CheckDefinedNumberCountL: Video mbx number defined");
-        definedNumber++;
-        definedServiceTypes++;
-        if( KMailBoxLimitForPrompt == definedNumber)
-            {
-            iType = EVmbxVideo;
-            }
-        aServiceId = KCSorVideoServiceId;
-        definedFlag |= KVmFlagVideoNumberDefined;
-        }
-
-    // 3. Get count of all Service Ids of VoIP
-    RArray<TUint> profileIds;
-    CleanupClosePushL( profileIds );
-
-    if ( KErrNone == GetServiceIds( profileIds ) )
-        {
-        TInt idCount( profileIds.Count() );
-        VMBLOGSTRING2( "VMBX: RVmbxNumber::CheckDefinedNumberCountL: %d IP vmbx services defined", idCount );
-
-        if ( idCount )
-            {
-            definedNumber += idCount;
-            definedServiceTypes++;
-            // If only VoIP and only one service support Vmbx,
-            // then use it directly without prompting.
-            if ( KMailBoxLimitForPrompt == definedNumber )
-                {
-                iType = EVmbxIP;
-                aServiceId = profileIds[ 0 ];
-                }
-            definedFlag |= KVmFlagVoIpNumberDefined;
-            }
-        }
-
-    CleanupStack::PopAndDestroy( &profileIds );
-    aDefinedNumber = definedNumber;
-    aDefinedFlag = definedFlag;
-    VMBLOGSTRING2( "VMBX: RVmbxNumber::CheckDefinedNumberCountL: definedNumber = %d",
-                definedNumber );
-    VMBLOGSTRING( "VMBX: RVmbxNumber::CheckDefinedNumberCountL: <=" );
-
-    if ( 1 < definedServiceTypes )
-        {
-        iType = EVmbxNone;
-        }
-    return iType;
-    }
-
-// ----------------------------------------------------------------------------
-// RVmbxNumber::GetServiceIds
-//
-// ----------------------------------------------------------------------------
-//
-EXPORT_C TInt RVmbxNumber::GetServiceIds( RArray<TUint>& aProfileIds )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetServiceIds: =>" );
-    TInt ret( KErrNotFound );
-    if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
-        {
-        TRAP( ret, iVmSpsHandler->GetServiceIdsL( aProfileIds ) );
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetServiceIds: <=" );
-    return ret;
-    }
-
-// ----------------------------------------------------------------------------
-// RVmbxNumber::GetServiceInfo
-//
-// ----------------------------------------------------------------------------
-//
-EXPORT_C TInt RVmbxNumber::GetServiceInfo( TVmbxServiceInfo& aServiceInfo )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetServiceInfo: =>" );
-    TInt ret( KErrNotFound );
-    if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
-        {
-        ret = iVmSpsHandler->GetServiceInfo( aServiceInfo );
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetServiceInfo: <=" );
-    return ret;
-    }
-
-// ----------------------------------------------------------------------------
-// RVmbxNumber::NotifyServiceChange
-//
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void RVmbxNumber::NotifyServiceChange(
-    MServiceNotifyHandler* aHandler )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::NotifyServiceChange: =>" );
-
-    if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
-        {
-        iVmSpsHandler->NotifyServiceChange( aHandler );
-        }
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::NotifyServiceChange: <=" );
-    }
-
-// ----------------------------------------------------------------------------
-// RVmbxNumber::NotifyServiceChangeCancel
-//
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void RVmbxNumber::NotifyServiceChangeCancel()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::NotifyServiceChangeCancel: =>" );
-
-    if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
-        {
-        iVmSpsHandler->NotifyServiceChangeCancel();
-        }
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::NotifyServiceChangeCancel: <=" );
-    }
-
-// ----------------------------------------------------------------------------
-// RVmbxNumber::BrandIdL
-//
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void RVmbxNumber::BrandIdL( TInt aServiceId, TDes8& aBrandId )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::BrandIdL: =>" );
-
-    if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
-        {
-        iVmSpsHandler->BrandIdL( aServiceId, aBrandId );
-        }
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::BrandIdL: <=" );
-    }
-
-// ----------------------------------------------------------------------------
-// RVmbxNumber::GetBrandedIconL
-//
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void RVmbxNumber::GetBrandedIconL(
-    const TDesC8& aBrandingId,
-    CFbsBitmap*& aBrandedBitmap,
-    CFbsBitmap*& aBrandedBitmapMask )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetBrandedIconL: =>" );
-
-    iVmBsHandler->GetBrandedIconL(
-        aBrandingId, aBrandedBitmap, aBrandedBitmapMask );
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::GetBrandedIconL: <=" );
-    }
-
-// ----------------------------------------------------------------------------
-// RVmbxNumber::ConstructDefaultIconsL
-//
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void RVmbxNumber::ConstructDefaultIconsL(
-    CArrayPtr<CGulIcon>* aIcons )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::ConstructDefaultIconsL: =>" );
-
-    CFbsBitmap* bitmap;
-    CFbsBitmap* mask;
-
-    //Get the mbm file path
-    TFileName mbmfile( KVmMbmDrive );
-    mbmfile.Append( KDC_APP_BITMAP_DIR );
-    mbmfile.Append( KVmLibMbmFile );
-
-    //default CS icon
-    AknIconUtils::CreateIconL( bitmap, mask, mbmfile,
-                               EMbmVmQgn_prop_nrtyp_mobile,
-                               EMbmVmQgn_prop_nrtyp_mobile_mask );
-
-    aIcons->AppendL( CGulIcon::NewL( bitmap, mask ) );
-
-    //default Video icon
-    AknIconUtils::CreateIconL( bitmap, mask, mbmfile,
-                               EMbmVmQgn_prop_nrtyp_video,
-                               EMbmVmQgn_prop_nrtyp_video_mask );
-
-    aIcons->AppendL( CGulIcon::NewL( bitmap, mask ) );
-
-    //default VoIP icon
-    AknIconUtils::CreateIconL( bitmap, mask, mbmfile,
-                               EMbmVmQgn_prop_nrtyp_voip,
-                               EMbmVmQgn_prop_nrtyp_voip_mask );
-
-    aIcons->AppendL( CGulIcon::NewL( bitmap, mask ) );
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::ConstructDefaultIconsL: <=" );
-    }
-// -----------------------------------------------------------------------------
-// RVmbxNumber::AddBrandIconL
-//
-// -----------------------------------------------------------------------------
-//
-void RVmbxNumber::AddBrandIconL(
-    CArrayPtr<CGulIcon>* aIcons,
-    TUint aServiceId,
-    TInt& aIconId )
-    {
-    // Set branding icon to context pane if available.
-    TBuf8<KVmSettingsUiBrandingIdLength> brandId( KNullDesC8 );
-
-    BrandIdL( aServiceId, brandId );
-
-    CFbsBitmap* brandedBitmap = NULL;
-    CFbsBitmap* brandedBitmapMask = NULL;
-
-    // Get branded bitmap
-    TRAPD( err, GetBrandedIconL( brandId, brandedBitmap, brandedBitmapMask ) );
-
-    if ( KErrNone == err )
-        {
-        // The count of list icons(before adding branding icon to the list)
-        // must be the branded icon list id
-        aIconId = aIcons->Count();
-        // Create new icon and add it to the icon list
-        aIcons->AppendL( CGulIcon::NewL( brandedBitmap, brandedBitmapMask ) );
-        }
-    else
-        {
-        delete brandedBitmap;
-        delete brandedBitmapMask;
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::VmbxNumDefInPhoneMemory
-// Checks is VMBX number defined in phone memory
-// -----------------------------------------------------------------------------
-//
-TBool RVmbxNumber::VmbxNumDefInPhoneMemory( TInt aLineNumber )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::VmbxNumDefInPhoneMemory: =>" );
-    TBool numDefined( EFalse );
-    TBuf< KVmbxMaxNumberLength > number;
-    TUint32 lineNumber = aLineNumber ==
-        EAlsLine1 ? KVmbxNumberLinePrimary: KVmbxNumberLineAuxiliary;
-
-    if ( KErrNone == iSession->Get( lineNumber, number ) )
-        {
-        if ( aLineNumber == EAlsLine1 )
-            {
-            if (  iMemoryLocation == EVmbxPhoneMemory  &&
-                 number.Length()  )
-                {
-                numDefined = ETrue;
-                }
-            }
-        else if ( aLineNumber == EAlsLine2 && number.Length() )
-            {
-            numDefined = ETrue;
-            }
-        }
-
-    VMBLOGSTRING2("VMBX: RVmbxNumber::VmbxNumDefInPhoneMemory: numDefined = %d",
-                numDefined );
-    return numDefined;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::NumStoredInPhone
-// Checks is the given number stored in phone memory
-// -----------------------------------------------------------------------------
-//
-TBool RVmbxNumber::NumStoredInPhone( const TDesC& aNumber, TInt aLineNumber )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::NumStoredInPhone: =>" );
-    TBool numStoredInPhone( EFalse );
-    TBuf< KVmbxMaxNumberLength > number;
-    TUint32 lineNumber = aLineNumber ==
-        EAlsLine1 ? KVmbxNumberLinePrimary : KVmbxNumberLineAuxiliary;
-
-    if (  KErrNone == iSession->Get( lineNumber, number ) )
-        {
-        if ( !( number.Compare( aNumber ) ) )
-            {
-            numStoredInPhone = ETrue;
-            }
-        }
-
-    VMBLOGSTRING2( "VMBX: RVmbxNumber::NumStoredInPhone: numStoredInPhone = %d",
-            numStoredInPhone );
-    return numStoredInPhone;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::BackUpSimNumber
-// Saves VMBX number to the backup store
-// -----------------------------------------------------------------------------
-//
-TInt RVmbxNumber::BackUpSimNumber( const TDesC& aNumber, TInt aLineNumber  )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::BackUpSimNumber: =>" );
-    TUint32 lineNumber = aLineNumber == EAlsLine1 ?
-            KVmbxTmpNumberLinePrimary : KVmbxTmpNumberLineAuxiliary;
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::BackUpSimNumber: <=" );
-    return ( iSession->Set( lineNumber, aNumber ));
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::FetchSimNumberBackUp
-// Fetches VMBX number from backup store
-// -----------------------------------------------------------------------------
-//
-TInt RVmbxNumber::FetchSimNumberBackUp( TDes& aNumber, TInt aLineNumber )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::FetchSimNumberBackUp: =>" );
-    TUint32 lineNumber = aLineNumber == EAlsLine1 ?
-                KVmbxTmpNumberLinePrimary : KVmbxTmpNumberLineAuxiliary;
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::FetchSimNumberBackUp: <=" );
-    return ( iSession->Get( lineNumber, aNumber ));
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::ClearVMBXNumberFromPhone
-// Clear VMBX number is from SIM from the phone memory
-// -----------------------------------------------------------------------------
-//
-TInt RVmbxNumber::ClearVMBXNumberFromPhone( TInt aLineNumber )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::ClearVMBXNumberFromPhone: =>" );
-
-    TInt error( KErrNone );
-
-    if ( aLineNumber == EAlsLine1 )
-        {
-        error = SaveVmbxNumberToPhone( KEmptyVoiceMailNumber, EAlsLine1Entry );
-        if ( KErrNone == error &&
-           ( KErrNone == iSession->Set( KVmUsesSimMemory, EVmbxSimMemory ) ) )
-            {
-            iMemoryLocation = EVmbxSimMemory;
-            VMBLOGSTRING(
-              "VMBX: RVmbxNumber::ClearVMBXNumberFromPhone: Line 1" );
-            }
-        }
-    else if ( aLineNumber == EAlsLine2 )
-        {
-        error = SaveVmbxNumberToPhone( KEmptyVoiceMailNumber, EAlsLine2Entry );
-        if ( KErrNone == error )
-            {
-            VMBLOGSTRING(
-              "VMBX: RVmbxNumber::ClearVMBXNumberFromPhone: Line 2");
-            }
-        }
-    else
-        {
-        error = KErrArgument;
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::ClearVMBXNumberFromPhone: <=" );
-    return error;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::UserEditNumber
-// Indicates if user has edited VMBX number
-// -----------------------------------------------------------------------------
-//
-TBool RVmbxNumber::UserEditNumber( TInt aLineNumber )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::UserEditNumber: =>" );
-    TBool nbrEdited( EFalse );
-
-    TUint32 lineNumber = aLineNumber == EAlsLine1 ?
-            KUserEditedNumber : KUserEditedNumberAuxiliary;
-
-    iSession->Get( lineNumber, nbrEdited );
-
-    VMBLOGSTRING2( "VMBX: RVmbxNumber::UserEditNumber: result = %d",
-            nbrEdited );
-    return EVmbxUserEdit == nbrEdited;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::SetUserEditNumber
-// Sets the flag indicating that the user has edited VMBX number
-// -----------------------------------------------------------------------------
-//
-TInt RVmbxNumber::SetUserEditNumber( TInt aLineNumber )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SetUserEditNumber: =>" );
-
-    TUint32 lineNumber = aLineNumber == EAlsLine1 ?
-            KUserEditedNumber : KUserEditedNumberAuxiliary;
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SetUserEditNumber: <=" );
-    return ( iSession->Set( lineNumber, EVmbxUserEdit ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::ResetUserEditNumber
-// Resets the flag that indicates that the user has edited VMBX number
-// -----------------------------------------------------------------------------
-//
-TInt RVmbxNumber::ResetUserEditNumber( TInt aLineNumber )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::ResetUserEditNumber: =>" );
-
-    TUint32 lineNumber = aLineNumber == EAlsLine1 ?
-                KUserEditedNumber : KUserEditedNumberAuxiliary;
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::ResetUserEditNumber: <=" );
-    return ( iSession->Set( lineNumber, EVmbxNotUserEdit ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::UseSimNumIfAvailable
-// Fetches VMBX number stored in SIM if number is available
-// -----------------------------------------------------------------------------
-//
-TBool RVmbxNumber::UseSimNumIfAvailable( TDes& aNumber, TInt aLineNumber )
-    {
-    TBuf< KVmbxMaxNumberLength > number;
-    TBool ret( EFalse );
-    TInt error( KErrNone );
-    TVmbxNumberEntry numberEntry = aLineNumber == EAlsLine1 ?
-            EAlsLine1Entry : EAlsLine2Entry;
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::UseSimNumIfAvailable: =>" );
-
-    // If readonly SIM which supports VMBX number
-    // number is fetched from the backup store
-    if ( ( !( iFlags & KVmFlagSimWriteSupport ) && ( iFlags & KVmFlagSimVmbxNumSupport ) )
-             && ( ( aLineNumber == EAlsLine1 && EVmbxPhoneMemory == iMemoryLocation ) ||
-                    aLineNumber == EAlsLine2 ) )
-        {
-        error = FetchSimNumberBackUp( number, aLineNumber );
-        VMBLOGSTRING2( "VMBX: RVmbxNumber:: UseSimNumIfAvailable: number = %S",
-        &number ); 
-        if ( KErrNone == error )
-            {
-            aNumber.Copy( number );
-            SaveVmbxNumberToPhone( aNumber, numberEntry );
-            VMBLOGSTRING(
-              "VMBX: RVmbxNumber::UseSimNumIfAvailable: number from backup store" );
-            ret = ETrue;
-            }
-        }
-    // If writable SIM which supports VMBX number
-    // number is fetched from SIM
-    else if ( iFlags & KVmFlagSimWriteSupport &&
-            ( ( aLineNumber == EAlsLine1 && EVmbxPhoneMemory == iMemoryLocation ) ||
-                    aLineNumber == EAlsLine2 ) )
-        {
-        error = GetVmNumFromSIM( number, aLineNumber );
-        if ( KErrNone == error )
-            {
-            aNumber.Copy( number );
-            if ( EAlsLine1 == aLineNumber )
-                {
-                iMemoryLocation = EVmbxSimMemory;
-                iSession->Set( KVmUsesSimMemory, EVmbxSimMemory );
-                }
-            VMBLOGSTRING(
-              "VMBX: RVmbxNumber::UseSimNumIfAvailable: number from SIM" );
-            ret = ETrue;
-            }
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::UseSimNumIfAvailable: <=" );
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::HandleNumberStores
-// Handles the updating of a number stores in phone memory
-// -----------------------------------------------------------------------------
-//
-TInt RVmbxNumber::HandleNumberStores( TInt aLineNumber )
-    {
-    TInt error( KErrNone );
-    TBuf< KVmbxMaxNumberLength > line2number;
-    
-    TInt inactiveLineNumber( EAlsLine2 );
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::HandleNumberStores: =>" );
-
-    // backup the number from the SIM card to the backup store.
-    if ( !( iFlags & KVmFlagSimWriteSupport ) )
-        {
-        if ( aLineNumber == EAlsLine2 )
-            {
-            error = GetVmNumFromSIM( line2number, EAlsLine2Entry );
-            if ( KErrNone == error )
-                {
-                error = BackUpSimNumber( line2number, aLineNumber );
-                VMBLOGSTRING2( "VMBX: RVmbxNumber::HandleNumberStores: \
-                Back up ALS 2 Sim number, error = %d", error );
-                }
-            }
-        else
-            {
-            error = BackUpSimNumber( iNumberFromSim, aLineNumber );
-            VMBLOGSTRING2( "VMBX: RVmbxNumber::HandleNumberStores: \
-            Back up ALS 1 Sim number, error = %d", error );
-            }
-        }
-    // If number found in SIM, old stored number is erased if
-    // it's not defined by the user or updated via external clients
-    if ( !UserEditNumber( aLineNumber ) && 
-            !IsPhoneMemForcedEdit( aLineNumber ) )
-        {
-        ClearVMBXNumberFromPhone( aLineNumber );
-        // if the number was not edited in inactive line,
-        // and do clearing opreration. 
-        // The old stored number from SIM is erased.
-        // otherwise, the edited number was 
-        // defined as the inactive line number.
-        // the number should be kept
-        if ( !IsInactiveLineEdited( inactiveLineNumber ) )
-            {
-            ClearVMBXNumberFromPhone( inactiveLineNumber );
-            }
-            
-        VMBLOGSTRING( "[VMBX]: RVmbxNumber::HandleNumberStores: Clear old VMBX number" );
-        }
-    
-    VMBLOGSTRING( "VMBX: RVmbxNumber::HandleNumberStores: <=" );
-    return error;
-    }
-
-// ----------------------------------------------------------------------------
-// RVmbxNumber::UsesSimMemory
-// Returns if the SIM memory is used on ALS 1
-// ----------------------------------------------------------------------------
-//
-TBool RVmbxNumber::UsesSimMemory()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::UsesSimMemory: =>" );
-    TBool ret( EFalse );
-    TInt alsline( EAlsLine1 );
-    // get the current ALS line
-    if ( GetAlsLine( alsline ) != KErrNone )
-        {
-        alsline = EAlsLine1;  // if problems, assume primary line
-        }
-
-    iSession->Get( KVmUsesSimMemory, iMemoryLocation );
-    if ( ( iMemoryLocation == EVmbxSimMemory ) && ( alsline == EAlsLine1 ) )
-        {
-        VMBLOGSTRING( "VMBX: RVmbxNumber::UsesSimMemory: SimMemory active" );
-        ret = ETrue;
-        }
-    VMBLOGSTRING( "VMBX: RVmbxNumber::UsesSimMemory: <=" );
-    return ret;
-    }
-
-// ----------------------------------------------------------------------------
-// RVmbxNumber::IsPhoneMemForcedEdit
-// Returns if VMBX number stored in phone memory via external clients
-// ----------------------------------------------------------------------------
-// 
-TBool RVmbxNumber::IsPhoneMemForcedEdit( const TInt aLineNumber )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber:: IsPhoneMemForcedEdit: =>" );
-    TInt nbrEdited( NULL );
-    
-    TUint32 lineNumber = aLineNumber == EAlsLine1 ?
-            KUserEditedNumber : KUserEditedNumberAuxiliary;
-    
-    iSession->Get( lineNumber, nbrEdited );
-    
-    VMBLOGSTRING2( "VMBX: RVmbxNumber:: IsPhoneMemForcedEdit: value = %d",
-            nbrEdited ); 
-    return EvmbxPhoneMemForcedEdit == nbrEdited;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::SetPhoneMemForcedEdit
-// Sets the flag indicating that external clients have edited VMBX number
-// -----------------------------------------------------------------------------    
-//
-TInt RVmbxNumber::SetPhoneMemForcedEdit( TInt aLineNumber )
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SetPhoneMemForcedEdit: =>" );
-
-    TUint32 lineNumber = aLineNumber == EAlsLine1 ?
-            KUserEditedNumber : KUserEditedNumberAuxiliary;
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::SetPhoneMemForcedEdit: <=" );
-    return iSession->Set( lineNumber, EvmbxPhoneMemForcedEdit );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::ShowInformationNoteL
-// Shows information note to user
-// -----------------------------------------------------------------------------
-//
-void RVmbxNumber::ShowInformationNoteL( const TInt aResourceId ) const
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::ShowInformationNoteL: =>" );
-    HBufC* prompt = StringLoader::LoadLC( aResourceId, iCoeEnv );
-
-    CAknInformationNote* note = new ( ELeave ) CAknInformationNote ( ETrue );
-    note->ExecuteLD( *prompt );
-
-    CleanupStack::PopAndDestroy( prompt );
-    VMBLOGSTRING( "VMBX: RVmbxNumber::ShowInformationNoteL: <=" );
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::IsNoNumberNoteAllowed
-// check whether the note should be shown
-// -----------------------------------------------------------------------------
-//
-TBool RVmbxNumber::IsNoNumberNoteAllowed()
-    {
-    VMBLOGSTRING( "VMBX: RVmbxNumber::IsNoNumberNoteAllowed: =>" );
-    TBool result( EFalse );
-
-    TInt videoRet( KErrNotFound );
-    TBool isVideoSupport( VideoSupported() );
-    TBool isVoipSupport( IsIpVoiceMailboxServices() );
-    TBool psAddressFound( EFalse );
-
-    if ( isVideoSupport )
-        {
-        HBufC* tmpNumber = HBufC::New( KVmbxMaxNumberLength );
-        if ( tmpNumber )
-            {
-            TPtr tmpPrt( tmpNumber->Des() );
-            videoRet = GetVideoMbxNumber( tmpPrt );
-            VMBLOGSTRING2( "VMBX: RVmbxNumber::IsNoNumberNoteAllowed \
-            get videonum result=%d", videoRet );
-            }
-        delete tmpNumber;
-        tmpNumber = NULL;
-        }
-
-    if ( isVoipSupport )
-        {
-        RArray<TUint> profileIds;
-        GetServiceIds( profileIds );
-
-        TVmbxServiceInfo serviceInfo;
-        serviceInfo.iAddress.Zero();
-        for ( TInt i = 0; i < profileIds.Count() 
-        && !psAddressFound; i++ )
-            {
-            serviceInfo.iServiceId = profileIds[ i ];
-            GetServiceInfo( serviceInfo );
-
-            VMBLOGSTRING2( "VMBX: RVmbxNumber::IsNoNumberNoteAllowed \
-            PS address length=%d", serviceInfo.iAddress.Length() );
-            if ( serviceInfo.iAddress.Length() )
-                {
-                psAddressFound = ETrue;
-                }
-            }
-
-        profileIds.Close();
-        }
-
-    // This check is done because phone client calls GetVmbxNumber 
-    // and then SelectTypeL, which causes note qtn_... to be shown twice
-    // so the note can be shown in below several condition:
-    // the voice mailbox number is not defined, 
-    // when video feature and 
-    // voip feature are not supported. 
-    // the video number is not defined, when video feature
-    // is supported but voip feature is not supported.
-    // the voip address is not defined, when voip feature
-    // is supported but video feature is not supported.
-    // both the video number and the voip address are not
-    // defined, when both video feature and 
-    // voip feature are supported.
-
-    if ( ( !isVideoSupport && !isVoipSupport )
-        || ( ( isVideoSupport && KErrNotFound == videoRet )
-        && !isVoipSupport )
-        || ( ( isVoipSupport && !psAddressFound
-        && !isVideoSupport ) )
-        || ( isVideoSupport && isVoipSupport
-        && KErrNotFound == videoRet &&
-        !psAddressFound ) )
-        {
-        result = ETrue;
-        }
-
-    VMBLOGSTRING( "VMBX: RVmbxNumber::IsNoNumberNoteAllowed: <=" );
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// RVmbxNumber::IsInactiveLineEdited
-// Check whether the number had been edited in inactive line
-// -----------------------------------------------------------------------------
-//
-TBool RVmbxNumber::IsInactiveLineEdited( TInt& aInactiveLineNumber )
-	{
-	VMBLOGSTRING( "VMBX: RVmbxNumber::IsInactiveLineEdited: =>" );
-	TBool result( EFalse );
-	
-	TInt activeLineNumber( EAlsLine1 );
-	TInt inactiveLineNumber( aInactiveLineNumber );
-	
-	// get the current ALS line
-	if ( KErrNone != GetAlsLine( activeLineNumber ) )
-	    {
-	    activeLineNumber = EAlsLine1;  
-	    }
-	else
-		{
-	    // get the inactive line
-	    if ( EAlsLine1 == activeLineNumber )
-	    	{
-	        inactiveLineNumber = EAlsLine2;
-	    	}
-	    else
-	    	{
-	        inactiveLineNumber = EAlsLine1;
-	    	}
-	    // check whether the number had been edited in inactive line before
-	    if ( UserEditNumber( inactiveLineNumber ) 
-	    		|| IsPhoneMemForcedEdit( inactiveLineNumber ) )
-	    	{
-	        result = ETrue;
-	    	}
-		}
-	// get the inactive line number, make it be the output argument
-	aInactiveLineNumber = inactiveLineNumber;
-	
-	VMBLOGSTRING2( "VMBX: RVmbxNumber::IsInactiveLineEdited: result = %d",
-	result );
-	return result;
-	}
-
-//  End of File