# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1284543520 -10800 # Node ID 14754bf06654c432ae344059bdaa0a668e16c288 # Parent bb1f80fb7db26facf9c383295edebb01149dc8ce Revision: 201035 Kit: 201036 diff -r bb1f80fb7db2 -r 14754bf06654 bearermanagement/mpm/src/mpmiapselection.cpp --- a/bearermanagement/mpm/src/mpmiapselection.cpp Tue Sep 14 22:06:05 2010 +0300 +++ b/bearermanagement/mpm/src/mpmiapselection.cpp Wed Sep 15 12:38:40 2010 +0300 @@ -81,9 +81,9 @@ { // stop confirm dialog in case one exists // + MPMLOGSTRING( "CMPMIapSelection::~CMPMIapSelection" ) StopDisplayingStartingDlg(); - delete iConfirmDlgStarting; delete iDialog; delete iWlanDialog; } @@ -494,12 +494,12 @@ TConnectionId connId = iSession->ConnectionId(); ChooseBestIAPL( iChooseIapPref, availableIAPList, iNextBestExists ); + CleanupStack::PopAndDestroy( &availableIAPList ); TUint32 validateIapId = iChooseIapPref.IapId(); // Check if any suitable IAP's were found, if not then complete selection with error code if ( validateIapId == 0 ) { ChooseIapComplete( KErrNotFound, NULL ); - CleanupStack::PopAndDestroy( &availableIAPList ); return; } @@ -590,13 +590,9 @@ EStarting, *iSession ); ChooseIapComplete( KErrNone, &iChooseIapPref ); - } - } } - - CleanupStack::PopAndDestroy( &availableIAPList ); } // ----------------------------------------------------------------------------- @@ -730,40 +726,20 @@ { MPMLOGSTRING2( "CMPMIapSelection::ChooseIapComplete aError = %d", aError ) - if ( ( aError == KErrNone ) && - !( iChooseIapPref.NoteBehaviour() & - TExtendedConnPref::ENoteBehaviourConnDisableNotes ) ) - { - TConnectionState state = - iSession->MyServer().CheckUsageOfIap( aPolicyPref->IapId(), - iSession->ConnectionId() ); - TBool connectionAlreadyActive = (state == EStarted || state == EStarting || state == ERoaming); - if ( !connectionAlreadyActive && - ( iSession->IsMMSIap( aPolicyPref->IapId() ) == EFalse ) ) - { - CConnectionUiUtilities* connUiUtils( NULL ); - TRAPD( popupError, connUiUtils = CConnectionUiUtilities::NewL() ); - if ( popupError == KErrNone ) - { - connUiUtils->ConnectingViaDiscreetPopup( aPolicyPref->IapId() ); - delete connUiUtils; - } - } - } - if( iWlanDialog ) { delete iWlanDialog; iWlanDialog = NULL; } - iSession->ChooseIapComplete( aError, aPolicyPref ); // Set choose iap state to none iChooseIapState = ENoConnection; iNextBestExists = EFalse; iUserSelectionSnapId = 0; iUserSelectionIapId = 0; iImplicitState = EImplicitStart; + + iSession->ChooseIapComplete( aError, aPolicyPref ); } @@ -1055,25 +1031,25 @@ { if( iImplicitState == EImplicitStart ) { - MPMLOGSTRING( "CMPMIapSelection::ImplicitConnectionIapSelectionL EImplicitStart" ) + MPMLOGSTRING( "CMPMIapSelection::ImplicitConnectionL EImplicitStart" ) iImplicitState = EImplicitWlanScan; ImplicitConnectionCheckWlanScanNeededL(); } else if( iImplicitState == EImplicitWlanScan ) { - MPMLOGSTRING( "CMPMIapSelection::ImplicitConnectionIapSelectionL EImplicitWlanScan" ) + MPMLOGSTRING( "CMPMIapSelection::ImplicitConnectionL EImplicitWlanScan" ) iImplicitState = EImplicitUserSelection; ImplicitConnectionIapSelectionL(); } else if( iImplicitState == EImplicitUserSelection ) { - MPMLOGSTRING( "CMPMIapSelection::ImplicitConnectionIapSelectionL EImplicitUserSelection" ) + MPMLOGSTRING( "CMPMIapSelection::ImplicitConnectionL EImplicitUserSelection" ) iImplicitState = EImplicitWlanQuery; ImplicitConnectionWlanNoteL(); } else //EImplicitWlanQuery { - MPMLOGSTRING( "CMPMIapSelection::ImplicitConnectionIapSelectionL EImplicitWlanQuery" ) + MPMLOGSTRING( "CMPMIapSelection::ImplicitConnectionL EImplicitWlanQuery" ) CompleteImplicitConnectionL(); } } diff -r bb1f80fb7db2 -r 14754bf06654 bearermanagement/mpm/src/mpmserver.cpp --- a/bearermanagement/mpm/src/mpmserver.cpp Tue Sep 14 22:06:05 2010 +0300 +++ b/bearermanagement/mpm/src/mpmserver.cpp Wed Sep 15 12:38:40 2010 +0300 @@ -798,7 +798,9 @@ if ( iActiveBMConns[i].iConnInfo.iState == EStarting || iActiveBMConns[i].iConnInfo.iState == EStarted ) { - if ( aCdbAccess->CheckWlanL( iActiveBMConns[i].iConnInfo.iIapId ) != ENotWlanIap ) + TWlanIapType iapType( ENotWlanIap ); + TRAPD ( leave, iapType = aCdbAccess->CheckWlanL( iActiveBMConns[i].iConnInfo.iIapId ) ) + if ( ( leave == KErrNone ) && ( iapType != ENotWlanIap ) ) { stopLoop = ETrue; iapId = iActiveBMConns[i].iConnInfo.iIapId; @@ -1961,11 +1963,21 @@ { // cancel the periodic object self->iRoamingToWlanPeriodic->Cancel(); - self->StartForcedRoamingToWlanL( self->iConnMonIapInfo ); + TRAPD( error, self->StartForcedRoamingToWlanL( self->iConnMonIapInfo ) ) + if ( error ) + { + MPMLOGSTRING2("CMPMServer::StartForcedRoamingToConnectedWlan error1 = %d, ", error ) + return 0; + } + // Added also execution of policy based roaming logic because // connections that are in EStarting state, when WLAN signal // gets weak, would remain in WLAN as long as signal is weak. - self->StartForcedRoamingFromWlanL( self->iConnMonIapInfo ); + TRAP( error, self->StartForcedRoamingFromWlanL( self->iConnMonIapInfo ) ) + if ( error ) + { + MPMLOGSTRING2("CMPMServer::StartForcedRoamingToConnectedWlan error2 = %d, ", error ) + } } return 0; } @@ -1982,11 +1994,21 @@ { // cancel the periodic object self->iRoamingToHotspotWlanPeriodic->Cancel(); - self->StartForcedRoamingToWlanL( self->iConnMonIapInfo ); + TRAPD( error, self->StartForcedRoamingToWlanL( self->iConnMonIapInfo ) ) + if ( error ) + { + MPMLOGSTRING2("StartForcedRoamingToConnectedHotspotWlanL error1 = %d, ", error ) + return 0; + } + // Added also execution of policy based roaming logic because // connections that are in EStarting state, when WLAN signal // gets weak, would remain in WLAN as long as signal is weak. - self->StartForcedRoamingFromWlanL( self->iConnMonIapInfo ); + TRAP( error, self->StartForcedRoamingFromWlanL( self->iConnMonIapInfo ) ) + if ( error ) + { + MPMLOGSTRING2("StartForcedRoamingToConnectedHotspotWlanL error2 = %d, ", error ) + } } return 0; } @@ -2027,8 +2049,9 @@ // to a wlan not anymore listed in available iaps and not using mobility api for ( TInt index = 0; index < iActiveBMConns.Count(); index++ ) { - if ( iCommsDatAccess->CheckWlanL( iActiveBMConns[index].iConnInfo.iIapId ) - == EWlanIap ) + TWlanIapType iapType( ENotWlanIap ); + TRAPD( leave, iapType = iCommsDatAccess->CheckWlanL( iActiveBMConns[index].iConnInfo.iIapId ) ) + if ( ( leave == KErrNone ) && ( iapType == EWlanIap ) ) { // Check if used WLAN is still available TBool currentWlanIapAvailable = EFalse; diff -r bb1f80fb7db2 -r 14754bf06654 bearermanagement/mpm/src/mpmserversession.cpp --- a/bearermanagement/mpm/src/mpmserversession.cpp Tue Sep 14 22:06:05 2010 +0300 +++ b/bearermanagement/mpm/src/mpmserversession.cpp Wed Sep 15 12:38:40 2010 +0300 @@ -107,6 +107,7 @@ // CMPMServerSession::~CMPMServerSession() { + MPMLOGSTRING( "CMPMServerSession::~CMPMServerSession" ) // Remove serverside objects for notification session. @@ -3356,26 +3357,6 @@ { MPMLOGSTRING2( "CMPMServerSession::ChooseIapComplete aError = %d", aError ) - // Show error popup if it's allowed per client request. - // Error popup shown to SNAP only if error discreet has not been shown for IAP. - if ( ChooseBestIapCalled() && (!( iIapSelection->MpmConnPref().NoteBehaviour() & - TExtendedConnPref::ENoteBehaviourConnDisableNotes )) - && ( aError != KErrNone ) - && ( iErrorDiscreetPopupShown == EFalse ) ) - { - CConnectionUiUtilities* connUiUtils = NULL; - TRAPD( error, connUiUtils = CConnectionUiUtilities::NewL() ); - if ( error == KErrNone && connUiUtils ) - { - // Note: Below function shows the discreet popup only if the error code - // belongs to the set of errors that are shown to the user. - // Otherwise the popup is not shown. - connUiUtils->ConnectionErrorDiscreetPopup( aError ); - delete connUiUtils; - connUiUtils = NULL; - } - } - // Try to write back arguments and complete message. // if ( !iChooseIapMessage.IsNull() ) @@ -3430,9 +3411,58 @@ MPMLOGSTRING( "CMPMServerSession::ChooseIapComplete Message completed" ) iChooseIapMessage.Complete( aError ); } + + CConnectionUiUtilities* connUiUtils( NULL ); + MPMLOGSTRING2( "CMPMServerSession::ChooseIapComplete: this = %X", this ) + MPMLOGSTRING2( "CMPMServerSession::ChooseIapComplete: iIapSelection = %X", iIapSelection ) + // Enable showing error discreet popup for SNAP again + // Temp var used because session may get deleted during the showing of popup + TBool tempErrorDiscreetPopupShown = iErrorDiscreetPopupShown; iErrorDiscreetPopupShown = EFalse; + + // NOTE: Be careful with discreet popups! It jams session at this point + // for a moment, BUT the session may be called meanwhile. + // This may/will lead to problems e.g. if session is being deleted => all (heap) objects + // deleted in destructor are gone! + // Show error popup if it's allowed per client request. + // Error popup shown to SNAP only if error discreet has not been shown for IAP. + if ( ChooseBestIapCalled() && (!( iIapSelection->MpmConnPref().NoteBehaviour() & + TExtendedConnPref::ENoteBehaviourConnDisableNotes )) + && ( aError != KErrNone ) + && ( tempErrorDiscreetPopupShown == EFalse ) ) + { + TRAPD( popupError, connUiUtils = CConnectionUiUtilities::NewL() ); + if ( popupError == KErrNone ) + { + // Note: Below function shows the discreet popup only if the error code + // belongs to the set of errors that are shown to the user. + // Otherwise the popup is not shown. + connUiUtils->ConnectionErrorDiscreetPopup( aError ); + delete connUiUtils; + connUiUtils = NULL; + } + } + else if ( aPolicyPref && + ( aError == KErrNone ) && + !( iIapSelection->MpmConnPref().NoteBehaviour() & + TExtendedConnPref::ENoteBehaviourConnDisableNotes ) ) + { + TConnectionState state = iMyServer.CheckUsageOfIap( aPolicyPref->IapId(), iConnId ); + TBool connectionAlreadyActive = (state == EStarted || state == EStarting || state == ERoaming); + if ( !connectionAlreadyActive && + ( IsMMSIap( aPolicyPref->IapId() ) == EFalse ) ) + { + TRAPD( popupError, connUiUtils = CConnectionUiUtilities::NewL() ); + if ( popupError == KErrNone ) + { + connUiUtils->ConnectingViaDiscreetPopup( aPolicyPref->IapId() ); + delete connUiUtils; + connUiUtils = NULL; + } + } + } } diff -r bb1f80fb7db2 -r 14754bf06654 cmmanager/gsconnsettingsplugin/loc/gsconnsettingsplugin.loc --- a/cmmanager/gsconnsettingsplugin/loc/gsconnsettingsplugin.loc Tue Sep 14 22:06:05 2010 +0300 +++ b/cmmanager/gsconnsettingsplugin/loc/gsconnsettingsplugin.loc Wed Sep 15 12:38:40 2010 +0300 @@ -90,11 +90,11 @@ //d:Text of a list item in Connectivity Settings plugin main view's list -//d:Item opens "Cellular data usage in home network" radio button setting page +//d:Item opens "Cellular data usage in home country" radio button setting page //l:list_setting_pane_t1 //w: //r: 5.2 -#define qtn_occ_sett_data_usage_home_nw "Cellular data usage in home network" +#define qtn_occ_sett_data_usage_home_nw "Cellular data usage in home country" //d:Text in radio button list //l:list_set_graphic_pane_t1