engines/vmbxengine/src/vmnumber.cpp
branchRCL_3
changeset 25 6bf66e3b8f31
parent 14 71e7b994dff4
child 40 c58fd5f0c240
equal deleted inserted replaced
22:71268bfa7aea 25:6bf66e3b8f31
   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();
   497                {
   505                {
   498                VMBLOGSTRING( "Close MBDN phonebook" );
   506                VMBLOGSTRING( "Close MBDN phonebook" );
   499                iPhoneBook.Close();
   507                iPhoneBook.Close();
   500                }
   508                }
   501            }
   509            }
   502 
       
   503 
   510 
   504         // set readonly state if aquired
   511         // set readonly state if aquired
   505         if ( IsReadOnlySIM() )
   512         if ( IsReadOnlySIM() )
   506             {
   513             {
   507             iFlags &= ~KVmFlagSimWriteSupport;
   514             iFlags &= ~KVmFlagSimWriteSupport;
  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