723 { |
723 { |
724 //Presence Service needs to Register for the XIMP Events once when |
724 //Presence Service needs to Register for the XIMP Events once when |
725 //the context gets binded |
725 //the context gets binded |
726 //Get Presence SubService |
726 //Get Presence SubService |
727 CVIMPSTEnginePresenceSubService* presSubService = |
727 CVIMPSTEnginePresenceSubService* presSubService = |
728 dynamic_cast<CVIMPSTEnginePresenceSubService*>(SubService(TVIMPSTEnums::EPresence)); |
728 dynamic_cast<CVIMPSTEnginePresenceSubService*>(SubService(TVIMPSTEnums::EPresence)); |
|
729 // in case of roaming(moving from one network to another) |
|
730 // servicetab goes from registered to connecting state, hence the unbind is done here. |
|
731 if ( presSubService && TVIMPSTEnums::ESVCERegistered == previousState && |
|
732 TVIMPSTEnums::ESVCENetworkConnecting == iState ) |
|
733 { |
|
734 TRACE( T_LIT( "HandleServceConnectionEventL()-UnsubscribeLists" ) ); |
|
735 |
|
736 TRAPD( err, presSubService->UnsubscribeListsL() ); |
|
737 |
|
738 TRACE( T_LIT( "HandleServceConnectionEventL()-UnsubscribeLists -err: %d" ), err ); |
|
739 |
|
740 if ( iSessionCntxtObserver ) |
|
741 { |
|
742 iSessionCntxtObserver->ServerUnBindL( ETrue ); |
|
743 } |
|
744 } |
729 TInt count = iObserverArray.Count(); |
745 TInt count = iObserverArray.Count(); |
730 for (TInt index=0; index<count; index++) |
746 for (TInt index=0; index<count; index++) |
731 { |
747 { |
732 TRACE( T_LIT("HandleServceConnectionEventL()calling HandleServiceEventL") ); |
748 TRACE( T_LIT("HandleServceConnectionEventL()calling HandleServiceEventL") ); |
733 iObserverArray[index]->HandleServiceEventL(iState, KErrNone); |
749 iObserverArray[index]->HandleServiceEventL(iState, KErrNone); |