bearermanagement/mpm/src/mpmiapselection.cpp
changeset 23 7ec726f93df1
parent 20 9c97ad6591ae
child 32 5c4486441ae6
child 46 95d45f234cf3
--- a/bearermanagement/mpm/src/mpmiapselection.cpp	Mon May 03 12:53:07 2010 +0300
+++ b/bearermanagement/mpm/src/mpmiapselection.cpp	Fri May 14 16:15:46 2010 +0300
@@ -123,6 +123,11 @@
             snap )
         iChooseIapPref.SetSnapId( snap );
         iChooseIapPref.SetIapId( 0 );
+        if ( iChooseIapPref.ConnType() == TMpmConnPref::EConnTypeImplicit )
+            {
+            // No Connection selection dialog on reselection.
+            iChooseIapPref.SetConnType( TMpmConnPref::EConnTypeExplicit );
+            }
         }
     else if ( iap ) 
         {      
@@ -130,6 +135,11 @@
                 iap )
         iChooseIapPref.SetIapId( iap );
         iChooseIapPref.SetSnapId( 0 );
+        if ( iChooseIapPref.ConnType() == TMpmConnPref::EConnTypeImplicit )
+            {
+            // No Connection selection dialog on reselection.
+            iChooseIapPref.SetConnType( TMpmConnPref::EConnTypeExplicit );
+            }
         }
 
     MPMLOGSTRING3( "CMPMIapSelection::ChooseIapL: IapID: %i SnapId: %i",
@@ -345,7 +355,8 @@
         // KErrGprsOfflineMode should be returned instead of KErrNone.
         // 
         
-        if ( !iapTypeLanOrWlan && iSession->MyServer().IsPhoneOffline() )
+        if ( !iapTypeLanOrWlan && ( iSession->MyServer().IsPhoneOffline() ||                 
+             iSession->MyServer().RoamingWatcher()->RoamingStatus() == EMPMRoamingStatusUnknown ) )
             {
             ChooseIapComplete( KErrGprsOfflineMode, &iChooseIapPref );
             }
@@ -471,7 +482,10 @@
     // Check if any suitable IAP's were found, if not then complete selection with error code
     if ( validateIapId == 0 )
         {
-        if ( iChooseIapPref.ConnType() == TMpmConnPref::EConnTypeDefault )
+        if ( iChooseIapPref.ConnType() == TMpmConnPref::EConnTypeDefault ||
+                ( iChooseIapPref.ConnType() == TMpmConnPref::EConnTypeExplicit &&
+                !( iChooseIapPref.NoteBehaviour() & TExtendedConnPref::ENoteBehaviourConnDisableQueries ) &&
+                iCommsDatAccess->IsInternetSnapL( 0, snap ) ) )
             {
             ImplicitConnectionL();
             }
@@ -500,7 +514,8 @@
         {
         ChooseIapComplete( KErrGprsServicesNotAllowed, NULL );
         }
-    else if ( !iapTypeLanOrWlan && iSession->MyServer().IsPhoneOffline() )
+    else if ( !iapTypeLanOrWlan && ( iSession->MyServer().IsPhoneOffline() ||                 
+               iSession->MyServer().RoamingWatcher()->RoamingStatus() == EMPMRoamingStatusUnknown ) )
         {
         // In case offline mode is enabled, only LAN or WLAN is allowed.
         // If some other bearer has been requested, then error code 
@@ -921,7 +936,8 @@
                                    iapTypeLanOrWlan,
                                    *iSession );
                                    
-    if ( !iapTypeLanOrWlan && iSession->MyServer().IsPhoneOffline() )
+    if ( !iapTypeLanOrWlan && ( iSession->MyServer().IsPhoneOffline() ||            
+            iSession->MyServer().RoamingWatcher()->RoamingStatus() == EMPMRoamingStatusUnknown ) )
         {
         MPMLOGSTRING2( "CMPMIapSelection::CompleteImplicitConnectionL: Completing with code = %i",
                 KErrGprsOfflineMode )