# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1276067883 -10800 # Node ID 6bf66e3b8f31bcc32594b8230bd1811466b5d20c # Parent 71268bfa7aea070c2f0d10755b42a817fde92ee2 Revision: 201021 Kit: 2010123 diff -r 71268bfa7aea -r 6bf66e3b8f31 engines/vmbxengine/src/vmnumber.cpp --- a/engines/vmbxengine/src/vmnumber.cpp Tue May 25 13:18:28 2010 +0300 +++ b/engines/vmbxengine/src/vmnumber.cpp Wed Jun 09 10:18:03 2010 +0300 @@ -181,7 +181,7 @@ iVmSpsHandler( NULL ), iVmBsHandler( NULL ), iFeatMgrInitialized( EFalse ), - iSimCardFound( EFalse ) + iSimCardFound( EFalse ) { VMBLOGSTRING( "VMBX: RVmbxNumber::RVmbxNumber =>" ); @@ -425,10 +425,13 @@ { // 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; @@ -467,6 +470,9 @@ 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 ); @@ -475,8 +481,10 @@ // 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 ) { @@ -500,7 +508,6 @@ } } - // set readonly state if aquired if ( IsReadOnlySIM() ) { @@ -1685,6 +1692,8 @@ // 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 ) { @@ -2375,8 +2384,14 @@ iAlphaStringFromSIM = NULL; } iAlphaStringFound = EFalse; - - if ( iPhoneBookType == EMBDNPhoneBook ) + + TInt lineNumber( EAlsLine1 ); + if ( KErrNone != GetAlsLine( lineNumber ) ) + { + lineNumber = EAlsLine1; + } + + if ( ( iPhoneBookType == EMBDNPhoneBook ) && ( EAlsLine1 == lineNumber ) ) { VMBLOGSTRING( "start MBDN PhoneBook read" ); VMBLOGSTRING2( "VMBX: RVmbxNumber::PhonebookReadL: \ @@ -2606,8 +2621,14 @@ TInt RVmbxNumber::PhonebookDelete( TVmbxEntry& aEntry ) { VMBLOGSTRING( "VMBX: RVmbxNumber::PhonebookDelete: =>" ); + TInt lineNumber( EAlsLine1 ); + if ( KErrNone != GetAlsLine( lineNumber ) ) + { + lineNumber = EAlsLine1; + } + TRequestStatus status( KErrNone ); - if ( iPhoneBookType == EMBDNPhoneBook ) + if ( ( iPhoneBookType == EMBDNPhoneBook ) && ( EAlsLine1 == lineNumber ) ) { TInt index = iPhoneVoicemailInfo.iVoice; iPhoneBook.Delete( status, index ); @@ -4240,7 +4261,7 @@ // ----------------------------------------------------------------------------- // RVmbxNumber::ClearVMBXNumberFromPhone -// Fetches VMBX number from backup store +// Clear VMBX number is from SIM from the phone memory // ----------------------------------------------------------------------------- // TInt RVmbxNumber::ClearVMBXNumberFromPhone( TInt aLineNumber ) @@ -4393,6 +4414,8 @@ { TInt error( KErrNone ); TBuf< KVmbxMaxNumberLength > line2number; + + TInt inactiveLineNumber( EAlsLine2 ); VMBLOGSTRING( "VMBX: RVmbxNumber::HandleNumberStores: =>" ); @@ -4423,8 +4446,18 @@ if ( !UserEditNumber( aLineNumber ) && !IsPhoneMemForcedEdit( aLineNumber ) ) { - ClearVMBXNumberFromPhone( EAlsLine1 ); - ClearVMBXNumberFromPhone( EAlsLine2 ); + 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" ); } } @@ -4434,8 +4467,11 @@ if ( !UserEditNumber( aLineNumber ) && !IsPhoneMemForcedEdit( aLineNumber ) ) { - ClearVMBXNumberFromPhone( EAlsLine1 ); - ClearVMBXNumberFromPhone( EAlsLine2 ); + ClearVMBXNumberFromPhone( aLineNumber ); + if ( !IsInactiveLineEdited( inactiveLineNumber ) ) + { + ClearVMBXNumberFromPhone( inactiveLineNumber ); + } VMBLOGSTRING( "VMBX: RVmbxNumber::HandleNumberStores: Clear old VMBX number" ); } } @@ -4605,4 +4641,48 @@ 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 diff -r 71268bfa7aea -r 6bf66e3b8f31 phonesrv_plat/call_remote_party_information_api/call_remote_party_information_api.metaxml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonesrv_plat/call_remote_party_information_api/call_remote_party_information_api.metaxml Wed Jun 09 10:18:03 2010 +0300 @@ -0,0 +1,15 @@ + + + call_remote_party_information_api + This API provides remote party information of ongoing calls. + c++ + telutils + + + + + + no + no + + diff -r 71268bfa7aea -r 6bf66e3b8f31 phonesrv_plat/default_emergency_numbers_api/default_emergency_numbers_api.metaxml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonesrv_plat/default_emergency_numbers_api/default_emergency_numbers_api.metaxml Wed Jun 09 10:18:03 2010 +0300 @@ -0,0 +1,13 @@ + + + default_emergency_numbers_api + Central Repository keys for default emergency numbers. + c++ + phoneclientserver + + + + no + no + + diff -r 71268bfa7aea -r 6bf66e3b8f31 phonesrv_plat/voice_mailbox_number_api/inc/vmnumber.h --- a/phonesrv_plat/voice_mailbox_number_api/inc/vmnumber.h Tue May 25 13:18:28 2010 +0300 +++ b/phonesrv_plat/voice_mailbox_number_api/inc/vmnumber.h Wed Jun 09 10:18:03 2010 +0300 @@ -1203,6 +1203,14 @@ * @return ETrue if the note should be shown */ TBool IsNoNumberNoteAllowed(); + + /** + * Check whether the number had been edited in inactive line + * @since S60 v5.2 + * @param aInactiveLineNumber the inactive line number + * @return ETrue if the number had been edited in inactive line + */ + TBool IsInactiveLineEdited( TInt& aInactiveLineNumber ); private: // data