179 iUSimFirstRoundTest( ETrue ), |
179 iUSimFirstRoundTest( ETrue ), |
180 iCntFetch( NULL ), |
180 iCntFetch( NULL ), |
181 iVmSpsHandler( NULL ), |
181 iVmSpsHandler( NULL ), |
182 iVmBsHandler( NULL ), |
182 iVmBsHandler( NULL ), |
183 iFeatMgrInitialized( EFalse ), |
183 iFeatMgrInitialized( EFalse ), |
184 iSimCardFound( EFalse ) |
184 iSimCardFound( EFalse ) |
185 { |
185 { |
186 VMBLOGSTRING( "VMBX: RVmbxNumber::RVmbxNumber =>" ); |
186 VMBLOGSTRING( "VMBX: RVmbxNumber::RVmbxNumber =>" ); |
187 |
187 |
188 // Default sets to Phone memory, this can be changed in RVmbxNUmber::Open() |
188 // Default sets to Phone memory, this can be changed in RVmbxNUmber::Open() |
189 iMemoryLocation = EVmbxPhoneMemory; |
189 iMemoryLocation = EVmbxPhoneMemory; |
423 VMBLOGSTRING2( "Identifier result = %d", result ); |
423 VMBLOGSTRING2( "Identifier result = %d", result ); |
424 if ( KErrPathNotFound == result ) |
424 if ( KErrPathNotFound == result ) |
425 { |
425 { |
426 // try open vmbx-phonebook next |
426 // try open vmbx-phonebook next |
427 iPhoneBookType = EVMBXPhoneBook; |
427 iPhoneBookType = EVMBXPhoneBook; |
|
428 iMbdnPhonebookOk = EFalse; |
|
429 VMBLOGSTRING( "no mbdn file is found, use vmbx phonebook" ); |
428 } |
430 } |
429 else |
431 else |
430 { |
432 { |
431 iPhoneBookType = EMBDNPhoneBook; |
433 iPhoneBookType = EMBDNPhoneBook; |
|
434 iMbdnPhonebookOk = ETrue; |
432 // if mbdn file can be found, set the entry index to EAlsLine1 |
435 // if mbdn file can be found, set the entry index to EAlsLine1 |
433 iPhoneVoicemailInfo.iVoice = EAlsLine1; |
436 iPhoneVoicemailInfo.iVoice = EAlsLine1; |
434 |
437 |
435 // try to open mbdn-type phonebook |
438 // try to open mbdn-type phonebook |
436 result = iPhoneBook.Open( iPhone, KETelIccMbdnPhoneBook ); |
439 result = iPhoneBook.Open( iPhone, KETelIccMbdnPhoneBook ); |
465 } |
468 } |
466 } |
469 } |
467 |
470 |
468 if ( EAlsLine2 == alsline || EVMBXPhoneBook == iPhoneBookType ) |
471 if ( EAlsLine2 == alsline || EVMBXPhoneBook == iPhoneBookType ) |
469 { |
472 { |
|
473 // the mbdn number is not used when line2 is active |
|
474 // the number is only got from vmbx-phonebook |
|
475 iMbdnPhonebookOk = EFalse; |
470 // try to open vmbx-type phonebook |
476 // try to open vmbx-type phonebook |
471 result = iPhoneBook.Open( iPhone, KETelIccVoiceMailBox ); |
477 result = iPhoneBook.Open( iPhone, KETelIccVoiceMailBox ); |
472 VMBLOGSTRING2( "Vmbx phonebook opening result = %I ", result ); |
478 VMBLOGSTRING2( "Vmbx phonebook opening result = %I ", result ); |
473 if ( KErrNone == result ) |
479 if ( KErrNone == result ) |
474 { |
480 { |
475 // check that this phonebook supports reading |
481 // check that this phonebook supports reading |
476 result = PhoneBookInfo(); |
482 result = PhoneBookInfo(); |
477 VMBLOGSTRING( "VmbxPhoneBook opened" ); |
483 VMBLOGSTRING( "VmbxPhoneBook opened" ); |
478 } |
484 } |
479 } |
485 } |
|
486 VMBLOGSTRING3( "VMBX: RVmbxNumber::Open: \ |
|
487 iMbdnPhonebookOk: %I, iNoNumberFound: %I", iMbdnPhonebookOk, iNoNumberFound ); |
480 // reopen mbdn-phonebook when vmbx-phonebook has no number |
488 // reopen mbdn-phonebook when vmbx-phonebook has no number |
481 if ( iMbdnPhonebookOk && iNoNumberFound ) |
489 if ( iMbdnPhonebookOk && iNoNumberFound ) |
482 { |
490 { |
483 VMBLOGSTRING( "reopen mbdn" ); |
491 VMBLOGSTRING( "reopen mbdn" ); |
484 iPhoneBook.Close(); |
492 iPhoneBook.Close(); |
1683 |
1690 |
1684 // AllowedToChangeTheNumber() check not done in this method |
1691 // AllowedToChangeTheNumber() check not done in this method |
1685 // in order to always allow saving. |
1692 // in order to always allow saving. |
1686 TInt lineNumber( aEntry ); |
1693 TInt lineNumber( aEntry ); |
1687 TInt error( KErrNone ); |
1694 TInt error( KErrNone ); |
|
1695 VMBLOGSTRING2( "VMBX: RVmbxNumber::SaveVmbxNumberToPhone \ |
|
1696 the number is from phone or SIM aNumber = %S", &aNumber ); |
1688 |
1697 |
1689 if ( aEntry == EAlsActiveLineEntry ) |
1698 if ( aEntry == EAlsActiveLineEntry ) |
1690 { |
1699 { |
1691 // get the current ALS line |
1700 // get the current ALS line |
1692 if ( GetAlsLine( lineNumber ) != KErrNone ) |
1701 if ( GetAlsLine( lineNumber ) != KErrNone ) |
2373 { |
2382 { |
2374 delete iAlphaStringFromSIM; |
2383 delete iAlphaStringFromSIM; |
2375 iAlphaStringFromSIM = NULL; |
2384 iAlphaStringFromSIM = NULL; |
2376 } |
2385 } |
2377 iAlphaStringFound = EFalse; |
2386 iAlphaStringFound = EFalse; |
2378 |
2387 |
2379 if ( iPhoneBookType == EMBDNPhoneBook ) |
2388 TInt lineNumber( EAlsLine1 ); |
|
2389 if ( KErrNone != GetAlsLine( lineNumber ) ) |
|
2390 { |
|
2391 lineNumber = EAlsLine1; |
|
2392 } |
|
2393 |
|
2394 if ( ( iPhoneBookType == EMBDNPhoneBook ) && ( EAlsLine1 == lineNumber ) ) |
2380 { |
2395 { |
2381 VMBLOGSTRING( "start MBDN PhoneBook read" ); |
2396 VMBLOGSTRING( "start MBDN PhoneBook read" ); |
2382 VMBLOGSTRING2( "VMBX: RVmbxNumber::PhonebookReadL: \ |
2397 VMBLOGSTRING2( "VMBX: RVmbxNumber::PhonebookReadL: \ |
2383 iPhoneVoicemailInfo.iVoice = %I", iPhoneVoicemailInfo.iVoice ); |
2398 iPhoneVoicemailInfo.iVoice = %I", iPhoneVoicemailInfo.iVoice ); |
2384 iPhoneBook.Read( status, iPhoneVoicemailInfo.iVoice, |
2399 iPhoneBook.Read( status, iPhoneVoicemailInfo.iVoice, |
2604 * Series 60 ETel API |
2619 * Series 60 ETel API |
2605 *****************************************************/ |
2620 *****************************************************/ |
2606 TInt RVmbxNumber::PhonebookDelete( TVmbxEntry& aEntry ) |
2621 TInt RVmbxNumber::PhonebookDelete( TVmbxEntry& aEntry ) |
2607 { |
2622 { |
2608 VMBLOGSTRING( "VMBX: RVmbxNumber::PhonebookDelete: =>" ); |
2623 VMBLOGSTRING( "VMBX: RVmbxNumber::PhonebookDelete: =>" ); |
|
2624 TInt lineNumber( EAlsLine1 ); |
|
2625 if ( KErrNone != GetAlsLine( lineNumber ) ) |
|
2626 { |
|
2627 lineNumber = EAlsLine1; |
|
2628 } |
|
2629 |
2609 TRequestStatus status( KErrNone ); |
2630 TRequestStatus status( KErrNone ); |
2610 if ( iPhoneBookType == EMBDNPhoneBook ) |
2631 if ( ( iPhoneBookType == EMBDNPhoneBook ) && ( EAlsLine1 == lineNumber ) ) |
2611 { |
2632 { |
2612 TInt index = iPhoneVoicemailInfo.iVoice; |
2633 TInt index = iPhoneVoicemailInfo.iVoice; |
2613 iPhoneBook.Delete( status, index ); |
2634 iPhoneBook.Delete( status, index ); |
2614 } |
2635 } |
2615 else |
2636 else |
4238 return ( iSession->Get( lineNumber, aNumber )); |
4259 return ( iSession->Get( lineNumber, aNumber )); |
4239 } |
4260 } |
4240 |
4261 |
4241 // ----------------------------------------------------------------------------- |
4262 // ----------------------------------------------------------------------------- |
4242 // RVmbxNumber::ClearVMBXNumberFromPhone |
4263 // RVmbxNumber::ClearVMBXNumberFromPhone |
4243 // Fetches VMBX number from backup store |
4264 // Clear VMBX number is from SIM from the phone memory |
4244 // ----------------------------------------------------------------------------- |
4265 // ----------------------------------------------------------------------------- |
4245 // |
4266 // |
4246 TInt RVmbxNumber::ClearVMBXNumberFromPhone( TInt aLineNumber ) |
4267 TInt RVmbxNumber::ClearVMBXNumberFromPhone( TInt aLineNumber ) |
4247 { |
4268 { |
4248 VMBLOGSTRING( "VMBX: RVmbxNumber::ClearVMBXNumberFromPhone: =>" ); |
4269 VMBLOGSTRING( "VMBX: RVmbxNumber::ClearVMBXNumberFromPhone: =>" ); |
4391 // |
4412 // |
4392 TInt RVmbxNumber::HandleNumberStores( TInt aLineNumber ) |
4413 TInt RVmbxNumber::HandleNumberStores( TInt aLineNumber ) |
4393 { |
4414 { |
4394 TInt error( KErrNone ); |
4415 TInt error( KErrNone ); |
4395 TBuf< KVmbxMaxNumberLength > line2number; |
4416 TBuf< KVmbxMaxNumberLength > line2number; |
|
4417 |
|
4418 TInt inactiveLineNumber( EAlsLine2 ); |
4396 |
4419 |
4397 VMBLOGSTRING( "VMBX: RVmbxNumber::HandleNumberStores: =>" ); |
4420 VMBLOGSTRING( "VMBX: RVmbxNumber::HandleNumberStores: =>" ); |
4398 |
4421 |
4399 if ( iNumberFromSim.Length() ) |
4422 if ( iNumberFromSim.Length() ) |
4400 { |
4423 { |
4421 // If number found in SIM, old stored number is erased if |
4444 // If number found in SIM, old stored number is erased if |
4422 // it's not defined by the user or updated via external clients |
4445 // it's not defined by the user or updated via external clients |
4423 if ( !UserEditNumber( aLineNumber ) && |
4446 if ( !UserEditNumber( aLineNumber ) && |
4424 !IsPhoneMemForcedEdit( aLineNumber ) ) |
4447 !IsPhoneMemForcedEdit( aLineNumber ) ) |
4425 { |
4448 { |
4426 ClearVMBXNumberFromPhone( EAlsLine1 ); |
4449 ClearVMBXNumberFromPhone( aLineNumber ); |
4427 ClearVMBXNumberFromPhone( EAlsLine2 ); |
4450 // if the number was not edited in inactive line, |
|
4451 // and do clearing opreration. |
|
4452 // The old stored number from SIM is erased. |
|
4453 // otherwise, the edited number was |
|
4454 // defined as the inactive line number. |
|
4455 // the number should be kept |
|
4456 if ( !IsInactiveLineEdited( inactiveLineNumber ) ) |
|
4457 { |
|
4458 ClearVMBXNumberFromPhone( inactiveLineNumber ); |
|
4459 } |
|
4460 |
4428 VMBLOGSTRING( "[VMBX]: RVmbxNumber::HandleNumberStores: Clear old VMBX number" ); |
4461 VMBLOGSTRING( "[VMBX]: RVmbxNumber::HandleNumberStores: Clear old VMBX number" ); |
4429 } |
4462 } |
4430 } |
4463 } |
4431 else |
4464 else |
4432 { |
4465 { |
4433 // Changing or defining the number from UI (user) not allowed |
4466 // Changing or defining the number from UI (user) not allowed |
4434 if ( !UserEditNumber( aLineNumber ) |
4467 if ( !UserEditNumber( aLineNumber ) |
4435 && !IsPhoneMemForcedEdit( aLineNumber ) ) |
4468 && !IsPhoneMemForcedEdit( aLineNumber ) ) |
4436 { |
4469 { |
4437 ClearVMBXNumberFromPhone( EAlsLine1 ); |
4470 ClearVMBXNumberFromPhone( aLineNumber ); |
4438 ClearVMBXNumberFromPhone( EAlsLine2 ); |
4471 if ( !IsInactiveLineEdited( inactiveLineNumber ) ) |
|
4472 { |
|
4473 ClearVMBXNumberFromPhone( inactiveLineNumber ); |
|
4474 } |
4439 VMBLOGSTRING( "VMBX: RVmbxNumber::HandleNumberStores: Clear old VMBX number" ); |
4475 VMBLOGSTRING( "VMBX: RVmbxNumber::HandleNumberStores: Clear old VMBX number" ); |
4440 } |
4476 } |
4441 } |
4477 } |
4442 VMBLOGSTRING( "VMBX: RVmbxNumber::HandleNumberStores: <=" ); |
4478 VMBLOGSTRING( "VMBX: RVmbxNumber::HandleNumberStores: <=" ); |
4443 return error; |
4479 return error; |
4603 |
4639 |
4604 VMBLOGSTRING( "VMBX: RVmbxNumber::IsNoNumberNoteAllowed: <=" ); |
4640 VMBLOGSTRING( "VMBX: RVmbxNumber::IsNoNumberNoteAllowed: <=" ); |
4605 return result; |
4641 return result; |
4606 } |
4642 } |
4607 |
4643 |
|
4644 // ----------------------------------------------------------------------------- |
|
4645 // RVmbxNumber::IsInactiveLineEdited |
|
4646 // Check whether the number had been edited in inactive line |
|
4647 // ----------------------------------------------------------------------------- |
|
4648 // |
|
4649 TBool RVmbxNumber::IsInactiveLineEdited( TInt& aInactiveLineNumber ) |
|
4650 { |
|
4651 VMBLOGSTRING( "VMBX: RVmbxNumber::IsInactiveLineEdited: =>" ); |
|
4652 TBool result( EFalse ); |
|
4653 |
|
4654 TInt activeLineNumber( EAlsLine1 ); |
|
4655 TInt inactiveLineNumber( aInactiveLineNumber ); |
|
4656 |
|
4657 // get the current ALS line |
|
4658 if ( KErrNone != GetAlsLine( activeLineNumber ) ) |
|
4659 { |
|
4660 activeLineNumber = EAlsLine1; |
|
4661 } |
|
4662 else |
|
4663 { |
|
4664 // get the inactive line |
|
4665 if ( EAlsLine1 == activeLineNumber ) |
|
4666 { |
|
4667 inactiveLineNumber = EAlsLine2; |
|
4668 } |
|
4669 else |
|
4670 { |
|
4671 inactiveLineNumber = EAlsLine1; |
|
4672 } |
|
4673 // check whether the number had been edited in inactive line before |
|
4674 if ( UserEditNumber( inactiveLineNumber ) |
|
4675 || IsPhoneMemForcedEdit( inactiveLineNumber ) ) |
|
4676 { |
|
4677 result = ETrue; |
|
4678 } |
|
4679 } |
|
4680 // get the inactive line number, make it be the output argument |
|
4681 aInactiveLineNumber = inactiveLineNumber; |
|
4682 |
|
4683 VMBLOGSTRING2( "VMBX: RVmbxNumber::IsInactiveLineEdited: result = %d", |
|
4684 result ); |
|
4685 return result; |
|
4686 } |
|
4687 |
4608 // End of File |
4688 // End of File |