Revision: 200951
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 07 Jan 2010 12:56:54 +0200
changeset 1 40cb640ef159
parent 0 5a93021fdf25
child 2 086aae6fc07e
Revision: 200951 Kit: 201001
apengine/apeng/group/bld.inf
apengine/apsettingshandlerui/group/bld.inf
apengine/apsettingsplugin/group/bld.inf
bearermanagement/S60MCPR/group/bld.inf
bearermanagement/S60MCPR/inc/s60mcpractivities.h
bearermanagement/S60MCPR/src/s60mcpractivities.cpp
bearermanagement/S60MCPR/src/s60mcprerrorrecoveryactivity.cpp
bearermanagement/S60MCPR/src/s60mcprmobilityactivity.cpp
bearermanagement/S60MCPR/src/s60mcprstates.cpp
bearermanagement/mpm/src/mpmiapselection.cpp
bearermanagement/mpm/src/mpmserversession.cpp
bearermanagement/mpm/src/mpmwlanquerydialog.cpp
cmmanager/cmmgr/Framework/BWinsCw/CmManager_prot_setupU.DEF
cmmanager/cmmgr/Framework/EABI/CmManager_prot_setupU.def
cmmanager/cmmgr/Framework/Inc/cmdlg.h
cmmanager/cmmgr/Framework/Inc/cmmanagerimpl.h
cmmanager/cmmgr/Framework/Src/cmdesticonmap.cpp
cmmanager/cmmgr/Framework/Src/cmdestinationimpl.cpp
cmmanager/cmmgr/Framework/Src/cmdlg.cpp
cmmanager/cmmgr/Framework/Src/cmmanagerimpl.cpp
cmmanager/cmmgr/Framework/Src/cmpbasesettingsdlg.cpp
cmmanager/cmmgr/Framework/Src/destdlg.cpp
cmmanager/cmmgr/Framework/Src/uncatdlg.cpp
cmmanager/cmmgr/Framework/SrcData/cmmanager.rss
cmmanager/cmmgr/Framework/loc/cmmanager.loc
cmmanager/cmmgr/Plugins/cmpluginvpn/inc/cmvpncommonconstants.h
cmmanager/gsconnsettingsplugin/traces/OstTraceDefinitions.h
connectionmonitoring/connectionmonitorui/group/bld.inf
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/ConfirmationQuery.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/OfflineWlanNoteDlg.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/SelectWLANDlg.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/WepWpaQueryDlg.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/nowlannetworksavailablenotif.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/nowlansdiscreetpopup.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/wlanpowersavetest.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/ConfirmationQuery.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/OfflineWlanNoteDlg.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/SelectWLANDlg.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/WepWpaQueryDlg.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/nowlannetworksavailablenotif.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/nowlansdiscreetpopup.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/wlanpowersavetest.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/data/ConnUiUtilsNotif.rss
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/loc/connectionuiutilities.loc
connectionutilities/ConnectionDialogs/cconndlg/inc/IAPDialog.h
connectionutilities/ConnectionDialogs/cconndlg/inc/SelectExplicitDialog.h
connectionutilities/ConnectionDialogs/cconndlg/src/ActiveIapPlugin.cpp
connectionutilities/ConnectionDialogs/cconndlg/src/IAPDialog.cpp
connectionutilities/ConnectionDialogs/cconndlg/src/SelectConnectionDialog.cpp
connectionutilities/ConnectionDialogs/cconndlg/src/SelectExplicitDialog.cpp
connectionutilities/ConnectionDialogs/group/ConnUiUtilsNotif.mmp
connectionutilities/ConnectionDialogs/group/bld.inf
connectionutilities/ConnectionDialogs/inc/ExpiryTimer.h
connectionutilities/ConnectionDialogs/rom/agentdialog.iby
connectionutilities/ConnectionDialogs/src/ExpiryTimer.cpp
ipcm_plat/bearer_settings_plugin_api/inc/cmpbasesettingsdlg.h
--- a/apengine/apeng/group/bld.inf	Thu Dec 17 08:55:21 2009 +0200
+++ b/apengine/apeng/group/bld.inf	Thu Jan 07 12:56:54 2010 +0200
@@ -27,7 +27,7 @@
 ../Rom/ApEngineResources.iby	LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(ApEngineResources.iby)
 
 // export localised loc file
-../loc/ApEngine.loc	MW_LAYER_LOC_EXPORT_PATH(apengine.loc)
+../loc/apengine.loc	MW_LAYER_LOC_EXPORT_PATH(apengine.loc)
 
 ../conf/accesspoints.confml		APP_LAYER_CONFML(accesspoints.confml)
 ../conf/accesspoints_10008D3A.crml	APP_LAYER_CRML(accesspoints_10008D3A.crml)
--- a/apengine/apsettingshandlerui/group/bld.inf	Thu Dec 17 08:55:21 2009 +0200
+++ b/apengine/apsettingshandlerui/group/bld.inf	Thu Jan 07 12:56:54 2010 +0200
@@ -29,7 +29,7 @@
 ../Rom/ApSettingsHandlerUIResources.iby	LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(ApSettingsHandlerUIResources.iby)
 
 // export localised loc file
-../loc/ApSettingsHandlerUI.loc	MW_LAYER_LOC_EXPORT_PATH(apsettingshandlerui.loc)
+../loc/apsettingshandlerui.loc	MW_LAYER_LOC_EXPORT_PATH(apsettingshandlerui.loc)
 
 PRJ_MMPFILES
 // gnumakefile apsettingshandleruiicons_dc.mk
--- a/apengine/apsettingsplugin/group/bld.inf	Thu Dec 17 08:55:21 2009 +0200
+++ b/apengine/apsettingsplugin/group/bld.inf	Thu Jan 07 12:56:54 2010 +0200
@@ -29,7 +29,7 @@
 ../rom/ApSettingsPluginResources.iby	LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(ApSettingsPluginResources.iby)
 
 // export localised loc file
-../loc/ApSettingsPlugin.loc	MW_LAYER_LOC_EXPORT_PATH(apsettingsplugin.loc)
+../loc/apsettingsplugin.loc	MW_LAYER_LOC_EXPORT_PATH(apsettingsplugin.loc)
 
 PRJ_MMPFILES
 ./ApSettingsPlugin.mmp
--- a/bearermanagement/S60MCPR/group/bld.inf	Thu Dec 17 08:55:21 2009 +0200
+++ b/bearermanagement/S60MCPR/group/bld.inf	Thu Jan 07 12:56:54 2010 +0200
@@ -22,8 +22,10 @@
 PRJ_EXPORTS
 ../rom/s60mcpr.iby     CORE_MW_LAYER_IBY_EXPORT_PATH(s60mcpr.iby)
 
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 ../data/s60mcpr.confml          MW_LAYER_CONFML(s60mcpr.confml)
 ../data/s60mcpr_101F6D4A.crml   MW_LAYER_CRML(s60mcpr_101F6D4A.crml)
+#endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 
 PRJ_MMPFILES
 ../group/s60mcpr.mmp
--- a/bearermanagement/S60MCPR/inc/s60mcpractivities.h	Thu Dec 17 08:55:21 2009 +0200
+++ b/bearermanagement/S60MCPR/inc/s60mcpractivities.h	Thu Jan 07 12:56:54 2010 +0200
@@ -358,6 +358,14 @@
             virtual void DoL();
             DECLARE_SMELEMENT_FOOTER( TSendPropagateRecoveryResponse )
             
+
+            DECLARE_SMELEMENT_HEADER( TSendPropagateRecoveryErrContextResponse,
+                                      CS60ConnectionRecoveryActivity::TTransitionBase, 
+                                      NetStateMachine::MStateTransition, 
+                                      TContext)
+            virtual void DoL();
+            DECLARE_SMELEMENT_FOOTER( TSendPropagateRecoveryErrContextResponse )
+
         protected:
             /**
              * C++ constructor.
@@ -711,7 +719,18 @@
                                       CS60MobilityActivity::TContext )
             virtual void DoL();
             DECLARE_SMELEMENT_FOOTER( TSendApplicationReject )
-            
+
+			/**
+			 * TRANSITION/ACTION: Stop the mcpr's data client (should only ever be one) and error mobility on the cpr
+			 */
+			DECLARE_SMELEMENT_HEADER( TErrorOriginatorAndStopDataClient, 
+				                      MeshMachine::TStateTransition<TContext>, 
+                                      NetStateMachine::MStateTransition, 
+                                      CS60MobilityActivity::TContext )
+			virtual void DoL();
+            DECLARE_SMELEMENT_FOOTER( TErrorOriginatorAndStopDataClient )
+
+
             /**
              * TRANSITION/ACTION: Unregister preferred carrier notifications.
              */
--- a/bearermanagement/S60MCPR/src/s60mcpractivities.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/bearermanagement/S60MCPR/src/s60mcpractivities.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -327,10 +327,12 @@
                                 TTag<S60MCprStates::KWaitPolicyServerResponse|NetStateMachine::EBackward> )
     // On error, we do not terminate the activity.
     // We need to inform the client and propose a new handshake should the client wish to continue
-    THROUGH_NODEACTIVITY_ENTRY( KErrorTag, 
-                                MeshMachine::TRaiseAndClearActivityError,
-                                TTag<MeshMachine::KCancelTag> )
-//                                S60MCprMobilityActivity::TStartMobilityHandshakeBackwards )
+	// Shut down the layer, to release the rejected bearer
+	NODEACTIVITY_ENTRY(KErrorTag,
+		               CS60MobilityActivity::TErrorOriginatorAndStopDataClient,
+                       CoreNetStates::TAwaitingDataClientStopped,
+                       TTag<MeshMachine::KCancelTag>)
+
     // When closing, always continue to cancel the activity.
     LAST_NODEACTIVITY_ENTRY( KCancelTag,
                              CS60MobilityActivity::TCancelMobilityActivity )
@@ -358,7 +360,7 @@
                                 S60MCprErrorRecoveryActivity::CS60ConnectionRecoveryActivity::TStoreErrorContext, 
                                 CoreStates::TNoTagOrNoPeer )
     LAST_NODEACTIVITY_ENTRY( CoreStates::KNoPeer,
-                             S60MCprErrorRecoveryActivity::CS60ConnectionRecoveryActivity::TSendPropagateRecoveryResponse ) //Take error codes directly from the request
+                             S60MCprErrorRecoveryActivity::CS60ConnectionRecoveryActivity::TSendPropagateRecoveryErrContextResponse ) //Take error codes directly from the request
     THROUGH_NODEACTIVITY_ENTRY( KNoTag,
                                 MeshMachine::TDoNothing,
                                 S60MCprErrorRecoveryActivity::TProcessErrorBlockedByMobilityHandshaking )
--- a/bearermanagement/S60MCPR/src/s60mcprerrorrecoveryactivity.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/bearermanagement/S60MCPR/src/s60mcprerrorrecoveryactivity.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -360,6 +360,38 @@
         activity.ReplyToOriginators( err );
         }
 
+    // -----------------------------------------------------------------------------
+    // CS60ConnectionRecoveryActivity::TSendPropagateRecoveryErrContextResponse::DoL
+    // -----------------------------------------------------------------------------
+    //
+    DEFINE_SMELEMENT( CS60ConnectionRecoveryActivity::TSendPropagateRecoveryErrContextResponse, 
+                      NetStateMachine::MStateTransition, 
+                      CS60ConnectionRecoveryActivity::TContext )
+    void CS60ConnectionRecoveryActivity::TSendPropagateRecoveryErrContextResponse::DoL()  // codescanner::leave
+        {
+        __ASSERT_DEBUG(iContext.iNodeActivity, User::Panic(KS60MCprPanic, KPanicNoActivity));
+                
+        CS60ConnectionRecoveryActivity& activity = 
+            static_cast<CS60ConnectionRecoveryActivity&>(*iContext.iNodeActivity);
+
+        TInt error = activity.iOriginalErrContext.iStateChange.iError;
+        
+        if ( error == KErrNone )
+            {
+            error = KErrDisconnected;
+            S60MCPRLOGSTRING2("S60MCPR<%x>::TSendPropagateRecoveryErrContextResponse::DoL() overriding error code %d",(TInt*)&iContext.Node(), error);
+            }
+
+        // Override original error with activity error.
+        TEErrorRecovery::TErrorRecoveryResponse err( TErrResponse( TErrResponse::EPropagate,
+                                                                   error,
+                                                                   activity.iOriginalErrContext.iMessageId ) );
+        S60MCPRLOGSTRING2("S60MCPR<%x>::TSendPropagateRecoveryErrContextResponse::DoL() %d",(TInt*)&iContext.Node(), error);
+        // We must clear out the activity error to prevent last automatic error message from the node.
+        iContext.iNodeActivity->SetError( KErrNone );
+        activity.ReplyToOriginators( err );
+        }
+
     } // namespace S60MCprErrorRecoveryActivity
 
 //  End of File
--- a/bearermanagement/S60MCPR/src/s60mcprmobilityactivity.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/bearermanagement/S60MCPR/src/s60mcprmobilityactivity.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -463,6 +463,23 @@
 
     
     // -----------------------------------------------------------------------------
+    // CS60MobilityActivity::TErrorOriginatorAndStopDataClient::DoL
+    // -----------------------------------------------------------------------------
+    //
+    DEFINE_SMELEMENT( CS60MobilityActivity::TErrorOriginatorAndStopDataClient, 
+                      NetStateMachine::MStateTransition, CS60MobilityActivity::TContext )
+    void CS60MobilityActivity::TErrorOriginatorAndStopDataClient::DoL()
+        {
+		// Post error to originators
+		TEBase::TError errmsg(TCFMobilityProvider::TStartMobility::Id(), iContext.iNodeActivity->Error());
+		iContext.iNodeActivity->PostToOriginators(errmsg);
+
+		RNodeInterface* dc = iContext.Node().GetFirstClient<TDefaultClientMatchPolicy>(TClientType(TCFClientType::EData),
+			TClientType(TCFClientType::EData, TCFClientType::ELeaving));
+		iContext.iNodeActivity->PostRequestTo(*dc, TCFDataClient::TStop(iContext.iNodeActivity->Error()).CRef());
+		}
+	
+    // -----------------------------------------------------------------------------
     // CS60MobilityActivity::TAwaitingPreferredCarrierOrCancelOrRejected::Accept
     // -----------------------------------------------------------------------------
     //
--- a/bearermanagement/S60MCPR/src/s60mcprstates.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/bearermanagement/S60MCPR/src/s60mcprstates.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -56,13 +56,6 @@
         S60MCPRLOGSTRING2("S60MCPR<%x>::THandleMPMStatusChange::DoL() calling IAPConnectionStartedL IAP %d",(TInt*)&iContext.Node(),iapid)
         // TODO use progress notification KLinkLayerOpen once Symbian provides them.
         node.Policy()->IAPConnectionStartedL( iapid );  // codescanner::leave
-        
-        /** HACK ALERT
-        *
-        * Due to regression in MOBILITY the EStartedFlag for serviceprovider is set here!
-        * TODO Remove this hack whenever possible!!!
-        */
-        node.ServiceProvider()->SetFlags( TCFClientType::EStarted );       
         }
     else if ( msg.iValue == TCFControlProvider::TDataClientStatusChange::EStopped &&
               node.RequestPermissionToSendStopped() )
@@ -351,11 +344,22 @@
         // Get MCPR
         CS60MetaConnectionProvider& node = (CS60MetaConnectionProvider&)iContext.Node();
 
+        _LIT( KIapProxyServiceSetting, "IAP\\IAPService" );
+        TBuf<KCommsDbSvrMaxColumnNameLength*2 +1> field;
+        if (msg)
+            {
+            TRAP_IGNORE(msg->iMessage.ReadL(0, field));
+            }
+
+        S60MCPRLOGSTRING2("S60MCPR<%x>::TAwaitingServiceIdRequest::Accept() ServiceId = %x", 
+            (TInt*)&iContext.Node(), node.PolicyPrefs().ServiceId())
+
         // Only EIntSetting is supported 
         // 
         if ( ( TMCprGetConnectionSetting::TConnectionSettingType)msg->iSettingType == 
                TMCprGetConnectionSetting::EIntSetting
-               && node.PolicyPrefs().ServiceId() != 0 )
+               && node.PolicyPrefs().ServiceId() != 0 
+               && field.Compare( KIapProxyServiceSetting ) == 0  )
             {
             S60MCPRLOGSTRING1("S60MCPR<%x>::TAwaitingServiceIdRequest::Accept() TMCprGetConnectionSetting EIntSetting", 
                 (TInt*)&iContext.Node())
--- a/bearermanagement/mpm/src/mpmiapselection.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/bearermanagement/mpm/src/mpmiapselection.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -438,7 +438,9 @@
         if ( ( iChooseIapPref.BearerSet() & TExtendedConnPref::EExtendedConnBearerWLAN ) ||
              ( iChooseIapPref.BearerSet() == TExtendedConnPref::EExtendedConnBearerUnknown ) )
             {
-            if ( iNewWlansAllowed )
+            if ( iNewWlansAllowed && 
+            	   ( iChooseIapPref.BearerSet() == 
+            	     TExtendedConnPref::EExtendedConnBearerWLAN ) )
                 {
                 // User allows only WLAN connections, check WLAN availability.
                 // A note will be shown if no WLANs are available.
@@ -1347,11 +1349,15 @@
     // ConnectioUiUtilities client side has a nonblocking active object 
     // implementation
     //
-    CConnectionUiUtilities* connUiUtils = CConnectionUiUtilities::NewL();        
+    if ( !( iChooseIapPref.NoteBehaviour() &
+           TExtendedConnPref::ENoteBehaviourConnDisableNotes ) )
+        {           	
+        CConnectionUiUtilities* connUiUtils = CConnectionUiUtilities::NewL();        
                             
-    connUiUtils->NoWLANNetworksAvailableNote();
+        connUiUtils->NoWLANNetworksAvailableNote();
                             
-    delete connUiUtils;            
+        delete connUiUtils;
+        }            
     }
 
 // -----------------------------------------------------------------------------
--- a/bearermanagement/mpm/src/mpmserversession.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/bearermanagement/mpm/src/mpmserversession.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -415,6 +415,24 @@
     
     if ( error != KErrNone )
         {
+        // Connection preferences are not valid. Display
+        // an error note and complete with the error code.
+        //
+        if ( ! ( mpmConnPref.NoteBehaviour() &
+            TExtendedConnPref::ENoteBehaviourConnDisableNotes ) )
+            {
+            CConnectionUiUtilities* connUiUtils = NULL;
+        
+            TRAP_IGNORE( connUiUtils = CConnectionUiUtilities::NewL() );
+            
+            if ( connUiUtils )
+                {
+                connUiUtils->ConnectionErrorDiscreetPopup( error );
+                delete connUiUtils;
+                connUiUtils = NULL;
+                }
+            }    	
+        	
         MPMLOGSTRING( "CMPMServerSession::HandleServerChooseIapL - Error \
 while extracting TCommDbConnPref from TConnPref" )
         aMessage.Complete( error );
@@ -1425,13 +1443,17 @@
     if ( !( iIapSelection->MpmConnPref().NoteBehaviour() &
             TExtendedConnPref::ENoteBehaviourConnDisableNotes ) )
         {
-        CConnectionUiUtilities* connUiUtils = CConnectionUiUtilities::NewL();
-        // 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( error );
-        delete connUiUtils;
-        connUiUtils = NULL;
+        CConnectionUiUtilities* connUiUtils = NULL;
+        TRAPD( popupCreateError, connUiUtils = CConnectionUiUtilities::NewL() );
+        if ( popupCreateError == 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( error );
+            delete connUiUtils;
+            connUiUtils = NULL;
+            }
         }
 
     // Read the Connection Id of the application
@@ -2647,18 +2669,21 @@
     TConnectionState state;
     iMyServer.GetConnectionState( iConnId, state );
     
-    // If session is roaming, notification must be delayed.
-    // But, only ConnMon initiated notifications need to be delayed.
-    // Required notifications must go through whenever MPM decides
-    // to initiate them.
-    //
-    if( ( iStoredIapInfo.HoldPrefIapNotif() && aCaller == EConnMon)  ||
-        ( state == ERoaming && aCaller == EConnMon ) )
+    if( iMigrateState != EMigrateUserConfirmation )
         {
-        MPMLOGSTRING( "CMPMServerSession::PrefIAPNotificationL - \
+        // If session is roaming, notification must be delayed.
+        // But, only ConnMon initiated notifications need to be delayed.
+        // Required notifications must go through whenever MPM decides
+        // to initiate them.
+        //
+        if( ( iStoredIapInfo.HoldPrefIapNotif() && aCaller == EConnMon )  ||
+                ( state == ERoaming && aCaller == EConnMon ) )
+            {
+            MPMLOGSTRING( "CMPMServerSession::PrefIAPNotificationL - \
 Mobility ongoing, notification will be handled later" )
-        iStoredIapInfo.SetStoredIapInfo( aIapInfo );
-        return;
+            iStoredIapInfo.SetStoredIapInfo( aIapInfo );
+            return;
+            }
         }
 
     TInt err(0);
@@ -2745,6 +2770,12 @@
                 iConfirmDlgRoaming = NULL;
                 }
 
+            // Reset migrate state
+            if ( iMigrateState == EMigrateUserConfirmation )
+                {
+                iMigrateState = EMigrateNone;
+                }
+            
             // Write buffer to BM
             //
             TPtrC8 d( reinterpret_cast< TUint8* >( &notifInfo ),
@@ -2808,6 +2839,24 @@
 No notification requested" )
         return;
         }
+    
+    // Show the connecting discreet popup to the user when migrating to another iap
+    if ( !( iIapSelection->MpmConnPref().NoteBehaviour() &
+            TExtendedConnPref::ENoteBehaviourConnDisableNotes) )
+        {
+        TBool connectionAlreadyActive = iMyServer.CheckIfStarted( aIapId );
+        CConnectionUiUtilities* connUiUtils = NULL;
+        TRAPD( popupError,
+               connUiUtils = CConnectionUiUtilities::NewL();
+               connUiUtils->ConnectingViaDiscreetPopup(
+                   aIapId,
+                   connectionAlreadyActive );
+               delete connUiUtils; );
+        if ( popupError && connUiUtils )
+            {
+            delete connUiUtils;
+            }
+        }
 
     TMpmNotificationStartIAP notifInfo;
     notifInfo.iMPMNotificationType = EMPMStartIAPNotification;
@@ -3261,17 +3310,21 @@
     MPMLOGSTRING2( "CMPMServerSession::ChooseIapComplete aError = %d", aError )
 
     // Show error popup if it's allowed per client request
-    if ( !( iIapSelection->MpmConnPref().NoteBehaviour() &
-            TExtendedConnPref::ENoteBehaviourConnDisableNotes )
+    if ( ChooseBestIapCalled() && (!( iIapSelection->MpmConnPref().NoteBehaviour() &
+            TExtendedConnPref::ENoteBehaviourConnDisableNotes ))
             && ( aError != KErrNone ) )
         {
-        CConnectionUiUtilities* connUiUtils = CConnectionUiUtilities::NewL();
-        // 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;
+        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.
@@ -3604,9 +3657,10 @@
     TConnMonIapInfo availableIAPs;
     
     availableIAPs = MyServer().Events()->GetAvailableIAPs();
-    
+#ifndef __WINSCW__  
     // Remove iaps not according to bearer set
     TRAP_IGNORE ( RemoveIapsAccordingToBearerSetL ( availableIAPs ) );
+#endif
     
     return availableIAPs;
     }
--- a/bearermanagement/mpm/src/mpmwlanquerydialog.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/bearermanagement/mpm/src/mpmwlanquerydialog.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -431,6 +431,11 @@
     MPMLOGSTRING2( "CMPMWlanQueryDialog::StartWlanQuery KCTSYEmergencyCallInfo = %d", 
                    emergencyCallEstablished )
 
+    // Get note behaviour setting
+    TUint32 noteBehaviour( 0 );
+    noteBehaviour = iIapSelection.MpmConnPref().NoteBehaviour();
+    MPMLOGSTRING2( "CMPMWlanQueryDialog::StartWlanQuery noteBehaviour = %d", noteBehaviour )
+    
     if( !emergencyCallEstablished && 
         iIapSelection.Session()->IsPhoneOfflineL() && 
         !activeWlanIap && 
@@ -444,6 +449,11 @@
             MPMLOGSTRING( "CMPMWlanQueryDialog::StartWlanQuery user has already refused offline" )
             iIapSelection.UserWlanSelectionDoneL( KErrCancel, iWlanIapId );
             }
+        else if ( noteBehaviour & TExtendedConnPref::ENoteBehaviourConnDisableQueries )
+            {
+            MPMLOGSTRING( "CMPMWlanQueryDialog::StartWlanQuery offline note query not shown due to disabled queries" )
+            iIapSelection.UserWlanSelectionDoneL( KErrPermissionDenied, iWlanIapId );
+            }
         else
             {
             MPMLOGSTRING( "CMPMWlanQueryDialog::StartWlanQuery, starting offline note" )            
--- a/cmmanager/cmmgr/Framework/BWinsCw/CmManager_prot_setupU.DEF	Thu Dec 17 08:55:21 2009 +0200
+++ b/cmmanager/cmmgr/Framework/BWinsCw/CmManager_prot_setupU.DEF	Thu Jan 07 12:56:54 2010 +0200
@@ -387,6 +387,6 @@
 	?IapStillExistedL@CCmManagerImpl@@QAEHABVCCmPluginBaseEng@@@Z @ 386 NONAME ; int CCmManagerImpl::IapStillExistedL(class CCmPluginBaseEng const &)
 	?WatcherUnRegister@CCmManagerImpl@@QAEXXZ @ 387 NONAME ; void CCmManagerImpl::WatcherUnRegister(void)
 	?RemoveDestFromPool@CCmManagerImpl@@QAEXPAVCCmDestinationImpl@@@Z @ 388 NONAME ; void CCmManagerImpl::RemoveDestFromPool(class CCmDestinationImpl *)
+	?OfferKeyEventL@CmPluginBaseSettingsDlg@@MAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 389 NONAME ; enum TKeyResponse CmPluginBaseSettingsDlg::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode)
 
 
-
--- a/cmmanager/cmmgr/Framework/EABI/CmManager_prot_setupU.def	Thu Dec 17 08:55:21 2009 +0200
+++ b/cmmanager/cmmgr/Framework/EABI/CmManager_prot_setupU.def	Thu Jan 07 12:56:54 2010 +0200
@@ -434,4 +434,5 @@
 	_ZN14CCmManagerImpl17WatcherUnRegisterEv @ 433 NONAME
 	_ZN14CCmManagerImpl18RemoveDestFromPoolEP18CCmDestinationImpl @ 434 NONAME
 	_ZN14CCmManagerImpl24DestinationStillExistedLEP18CCmDestinationImpl @ 435 NONAME
+	_ZN23CmPluginBaseSettingsDlg14OfferKeyEventLERK9TKeyEvent10TEventCode @ 436 NONAME
 
--- a/cmmanager/cmmgr/Framework/Inc/cmdlg.h	Thu Dec 17 08:55:21 2009 +0200
+++ b/cmmanager/cmmgr/Framework/Inc/cmdlg.h	Thu Jan 07 12:56:54 2010 +0200
@@ -150,11 +150,6 @@
         void HandleInfoPopupNoteEvent(
             CAknInfoPopupNoteController* aController,
             TAknInfoPopupNoteEvent aEvent ); 
-
-        /**
-        * Shows the 'bearer type: ' popup note
-        */
-        void ShowPopupNoteL();          
         
         /**
         * @return the currently focused connection method in the list
--- a/cmmanager/cmmgr/Framework/Inc/cmmanagerimpl.h	Thu Dec 17 08:55:21 2009 +0200
+++ b/cmmanager/cmmgr/Framework/Inc/cmmanagerimpl.h	Thu Jan 07 12:56:54 2010 +0200
@@ -956,6 +956,15 @@
          * Get Snap Table ID from CommsDat
          */
         TUint32 GetSnapTableIdL();
+
+        /**
+         * Check if the attribute is bearerspecific
+         *
+         * @since 9.2
+         * @param aAttribute  attribute-id to be checked
+         * @return ETrue if aAttribute is bearerspecific, otherwise EFalse
+         */
+        TBool IsBearerSpecific( TUint32 aAttribute ) const;
         
 #include "cmmanagerimpl.inl"               
     //=========================================================================
--- a/cmmanager/cmmgr/Framework/Src/cmdesticonmap.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/cmmanager/cmmgr/Framework/Src/cmdesticonmap.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -233,11 +233,8 @@
 // -----------------------------------------------------------------------------
 //
 void CCmDestinationIconMap::LoadIconL()
-    {
-    if ( iConsArray )
-        {
-        iConsArray->ResetAndDestroy();
-        }
+    { 
+    iConsArray->ResetAndDestroy();
     // Draw all the Icons.
     TParse mbmFile;
     User::LeaveIfError( mbmFile.Set( KManagerIconFilename, 
--- a/cmmanager/cmmgr/Framework/Src/cmdestinationimpl.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/cmmanager/cmmgr/Framework/Src/cmdestinationimpl.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -2584,6 +2584,12 @@
 
         case ESnapMetadataDestinationIsLocalised:
             {
+            // Check that aValue is within valid range.
+            if ( aValue > ELocalisedDestIntranet )
+                {
+                User::Leave( KErrArgument );
+                }
+            
             TUint32 oldVal = TUint32(iData->iMetaDataRec->iMetadata) & 
                              ESnapMetadataInternet;
             if ( aValue != ENotLocalisedDest )
@@ -2638,10 +2644,26 @@
 
         case ESnapMetadataPurpose:
             {
+            // Check that aValue is within valid range.
+            if ( aValue > ESnapPurposeIntranet )
+                {
+                User::Leave( KErrArgument );
+                }
+            
+            // Check if destination with the given purpose already
+            // exists
+            CheckIfPurposeExistL( aValue );
+            
             // ESnapPurposeInternet and ESnapPurposeMMS need special
             // handling
             switch( aValue )
                 {
+                case ESnapPurposeUnknown:
+                    {
+                    // This also clears ESnapMetadataInternet
+                    SetMetadataL( ESnapMetadataDestinationIsLocalised, ENotLocalisedDest );
+                    break;
+                    }
                 case ESnapPurposeInternet:
                     {
                     // This sets ESnapMetadataInternet and
@@ -2659,7 +2681,8 @@
                     {
                     SetMetadataL( ESnapMetadataDestinationIsLocalised, 
                                   ELocalisedDestMMS );
-                    SetMetadataL( ESnapMetadataHiddenAgent, 1 );
+                    iData->iMetaDataRec->iMetadata = 
+                        ESnapMetadataHiddenAgent | iData->iMetaDataRec->iMetadata;
                     }
                     break;
                 case ESnapPurposeIntranet:
@@ -2672,10 +2695,6 @@
                     break;
                 }
             
-            // Check if destination with the given purpose already
-            // exists
-            CheckIfPurposeExistL( aValue );
-            
             TUint32 value = aValue << 8;
             // reset the purpose bit
             iData->iMetaDataRec->iMetadata = ~ESnapMetadataPurpose & iData->iMetaDataRec->iMetadata;
@@ -2701,11 +2720,14 @@
             
         case ESnapMetadataHiddenAgent:
             {
+            TUint32 internet = iData->iMetaDataRec->iMetadata & ESnapMetadataInternet;
+            TUint32 internetLocal = ( iData->iMetaDataRec->iMetadata & ESnapMetadataDestinationIsLocalised ) >> 4;
+            TUint32 internetPurpose = ( iData->iMetaDataRec->iMetadata & ESnapMetadataPurpose ) >> 8;
             if( aValue )
                 {
-                if ( iData->iMetaDataRec->iMetadata & ESnapMetadataInternet
-                     || ( ( iData->iMetaDataRec->iMetadata >> 4 ) & ELocalisedDestInternet )
-                     || ( ( iData->iMetaDataRec->iMetadata >> 8 ) & ESnapPurposeInternet ) )
+                if ( internet
+                     || ( internetLocal == ELocalisedDestInternet )
+                     || ( internetPurpose == ESnapPurposeInternet ) )
                     {
                     User::Leave( KErrArgument );
                     }
--- a/cmmanager/cmmgr/Framework/Src/cmdlg.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/cmmanager/cmmgr/Framework/Src/cmdlg.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -187,8 +187,7 @@
         {
         iListbox->ScrollToMakeItemVisible( iHighlight );
         iListbox->SetCurrentItemIndexAndDraw( iHighlight );
-        }
-    ShowPopupNoteL();        
+        }    
     }
     
 // --------------------------------------------------------------------------
@@ -206,6 +205,7 @@
             aMenuPane->DeleteMenuItem( EAknCmdHelp );		    
             }
         // Menu items
+    	TBool hideEdit      ( EFalse );
         TBool hideAdd       ( EFalse );
         TBool hideRename    ( EFalse );
         TBool hideDelete    ( EFalse );
@@ -218,10 +218,12 @@
         // 2. Embedded Destinations
         if ( !( iListbox->Model()->ItemTextArray()->MdcaCount() ) )
             {
+            hidePrioritise = ETrue;
+            hideEdit = ETrue;
             hideRename  = ETrue;
             hideDelete  = ETrue;
             hideCopy = ETrue;
-            hideMove = ETrue; 
+            hideMove = ETrue;
             }
         // Embedded destinations can be deleted but not edited
         else if ( ( CurrentCML()->GetBoolAttributeL(ECmDestination) ) )
@@ -241,36 +243,11 @@
                 hidePrioritise = ETrue;
                 }
             }
-        // No available destination to copy/move the CM to
-        RArray<TUint32> destinations( KCmArrayMediumGranularity );
-        CleanupClosePushL( destinations );
-        iCmManager->AllDestinationsL( destinations );
-        for ( TInt i = 0; i < destinations.Count(); i++ )
-            {            
-            CCmDestinationImpl* dest = 
-                                    iCmManager->DestinationL( destinations[i] );
-            CleanupStack::PushL( dest );
-            // Not allowed to copy/move CMs into Level1 protected destinations
-            if ( dest->ProtectionLevel() != CMManager::EProtLevel1 )
-                {
-                // iCmDestinationImpl is null in Uncat dlg - ignore
-                // Don't count the current destination
-                if ( !iCmDestinationImpl || 
-                     dest->Id() != iCmDestinationImpl->Id() ) 
-                    {
-                    hideCopy = EFalse;
-                    hideMove = EFalse;
-                    CleanupStack::PopAndDestroy( dest );
-                    break;
-                    }
-                }
-            CleanupStack::PopAndDestroy( dest );                
-            }
-        CleanupStack::PopAndDestroy( &destinations );    
-        
+     
         // Show or hide menu items
         if ( aResourceId == R_CM_MENU )
             {            
+            aMenuPane->SetItemDimmed( ECmManagerUiCmdCmEdit,    hideEdit );
             aMenuPane->SetItemDimmed( ECmManagerUiCmdCmAdd,     hideAdd );
             aMenuPane->SetItemDimmed( ECmManagerUiCmdCmRename,  hideRename );            
             aMenuPane->SetItemDimmed( ECmManagerUiCmdCmDelete,  hideDelete );    
@@ -1296,47 +1273,6 @@
     }
     
 // ---------------------------------------------------------------------------
-// CCmDlg::ShowPopupNote
-// ---------------------------------------------------------------------------
-//
-void CCmDlg::ShowPopupNoteL()
-    {
-    if ( iInfoPopupNoteController )
-        {
-        if ( iListbox->Model()->NumberOfItems() && !iPrioritising )
-            {
-            // Value is only shown for concrete bearer types - allow to leave
-            HBufC* bearer = NULL;
-            TRAPD( err, bearer = 
-                CurrentCML()->GetStringAttributeL( ECmBearerNamePopupNote ) );
-
-            if ( !err )
-                {
-                CleanupStack::PushL( bearer );
-                
-                HBufC* title = StringLoader::LoadLC( 
-                                    R_CMMANAGERUI_POPUP_TITLE_DATA_BEARER );
-
-                HBufC* noteText = HBufC::NewLC( title->Size() + 
-                                               1 + 
-                                               bearer->Size() );
-                noteText->Des().Append( *title );
-                noteText->Des().Append( KCmNewLine );
-                noteText->Des().Append( *bearer );        
-                iInfoPopupNoteController->SetTextL( *noteText );
-                iInfoPopupNoteController->ShowInfoPopupNote();
-                
-                CleanupStack::PopAndDestroy( 3, bearer );
-                }
-            else
-                {
-                iInfoPopupNoteController->HideInfoPopupNote();
-                }
-            }
-        }  
-    }
-
-// ---------------------------------------------------------------------------
 // CCmDlg::OfferKeyEventL
 // ---------------------------------------------------------------------------
 //
@@ -1376,12 +1312,7 @@
         }
     else
         {
-        retVal = iListbox->OfferKeyEventL(aKeyEvent, aType);
-        if ( aKeyEvent.iCode == EKeyUpArrow || 
-             aKeyEvent.iCode == EKeyDownArrow )
-            {
-            ShowPopupNoteL();
-            }            
+        retVal = iListbox->OfferKeyEventL(aKeyEvent, aType);       
         }
 
     return retVal;
@@ -1805,7 +1736,6 @@
                                 iListbox->CurrentItemIndex());
             iCmDestinationImpl->UpdateL();
             HandleListboxDataChangeL();
-            ShowPopupNoteL();
             }
         }
      // Set the softkeys back    
--- a/cmmanager/cmmgr/Framework/Src/cmmanagerimpl.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/cmmanager/cmmgr/Framework/Src/cmmanagerimpl.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -61,6 +61,36 @@
 // Safety margin when checking disk space
 const TUint32 KBytesToWrite = 8000; 
 
+const TUint32 KEndOfArray = KMaxTUint;
+/**
+* This array lists all the bearerspecific attributes.
+* The bearerspecific attributes can be queried via both 
+* the manager interface's and connection method interface's ::Get functions.
+*/
+static const TUint32 KBearerSpecificAttributes[]=
+    {
+    /**
+    */
+    ECmCoverage,                        
+    ECmDefaultPriority,                        
+    ECmDestination,     
+    ECmBearerHasUi,   
+    ECmIPv6Supported,           
+    ECmDefaultUiPriority,
+    ECmBearerIcon,
+    ECmBearerAvailableIcon,
+    ECmBearerAvailableName,
+    ECmBearerSupportedName,
+    ECmBearerAvailableText,                        
+    ECmBearerNamePopupNote,
+    ECmCommsDBBearerType,   
+    ECmBearerSettingName,
+    ECmVirtual,
+    ECmExtensionLevel,
+    ECmAddToAvailableList,
+    KEndOfArray
+    };
+
 // -----------------------------------------------------------------------------
 // Test functions
 // -----------------------------------------------------------------------------
@@ -1593,6 +1623,11 @@
                                            TUint32 aAttribute ) const
     {
     LOGGER_ENTERFN( "CCmManagerImpl::GetBearerInfoIntL" );
+    if( !IsBearerSpecific( aAttribute ) )
+        {
+        User::Leave( KErrNotSupported );
+        }
+    
     for ( TInt i = 0; i < iPlugins->Count(); ++i )
         {
         if ( aBearerType == (*iPlugins)[i]->GetIntAttributeL( ECmBearerType ) )
@@ -1605,7 +1640,7 @@
     
     return 0;
     }
-    
+
 // -----------------------------------------------------------------------------
 // CCmManagerImpl::GetBearerInfoBoolL()
 // -----------------------------------------------------------------------------
@@ -1614,6 +1649,11 @@
                                           TUint32 aAttribute ) const
     {
     LOGGER_ENTERFN( "CCmManagerImpl::GetBearerInfoBoolL" );
+    if( !IsBearerSpecific( aAttribute ) )
+        {
+        User::Leave( KErrNotSupported );
+        }
+        
     for ( TInt i = 0; i < iPlugins->Count(); ++i )
         {
         if ( aBearerType == (*iPlugins)[i]->GetIntAttributeL( ECmBearerType ) )
@@ -1635,6 +1675,11 @@
                                              TUint32 aAttribute ) const
     {
     LOGGER_ENTERFN( "CCmManagerImpl::GetBearerInfoStringL" );
+    if( !IsBearerSpecific( aAttribute ) )
+        {
+        User::Leave( KErrNotSupported );
+        }
+    
     for ( TInt i = 0; i < iPlugins->Count(); ++i )
         {
         if ( aBearerType == (*iPlugins)[i]->GetIntAttributeL( ECmBearerType ) )
@@ -1656,6 +1701,11 @@
                                                TUint32 aAttribute ) const
     {
     LOGGER_ENTERFN( "CCmManagerImpl::GetBearerInfoStringL" );
+    if( !IsBearerSpecific( aAttribute ) )
+        {
+        User::Leave( KErrNotSupported );
+        }
+    
     for ( TInt i = 0; i < iPlugins->Count(); ++i )
         {
         if ( aBearerType == (*iPlugins)[i]->GetIntAttributeL( ECmBearerType ) )
@@ -2333,6 +2383,7 @@
         {
         User::Leave( KErrNotSupported );
         }
+    
     if ( IsDefConnSupported() )
         {
         OpenTransactionLC();
@@ -2980,3 +3031,21 @@
     
     return snapTableId;
     }
+
+// -----------------------------------------------------------------------------
+// CCmManagerImpl::IsBearerSpecific()
+// -----------------------------------------------------------------------------
+//
+TBool CCmManagerImpl::IsBearerSpecific( TUint32 aAttribute ) const
+    {
+    TUint32 i = 0;
+    while( KBearerSpecificAttributes[i] != KEndOfArray )
+        {
+        if( KBearerSpecificAttributes[i] == aAttribute )
+            {
+            return ETrue;
+            }
+        i++;
+        }        
+    return EFalse;
+    }
--- a/cmmanager/cmmgr/Framework/Src/cmpbasesettingsdlg.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/cmmanager/cmmgr/Framework/Src/cmpbasesettingsdlg.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -612,6 +612,16 @@
         }
     }
 
+// ---------------------------------------------------------------------------
+// CmPluginBaseSettingsDlg::OfferKeyEventL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TKeyResponse CmPluginBaseSettingsDlg::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
+                                       TEventCode aType )    
+    {
+    return iListbox->OfferKeyEventL( aKeyEvent, aType );       
+    }
+
 //---------------------------------------------------------------------------
 // CmPluginBaseSettingsDlg::LoadResourceL
 //---------------------------------------------------------------------------
--- a/cmmanager/cmmgr/Framework/Src/destdlg.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/cmmanager/cmmgr/Framework/Src/destdlg.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -263,7 +263,7 @@
             }
         default:
             {
-            retVal = CAknDialog::OfferKeyEventL( aKeyEvent, aType );
+            retVal = iListbox->OfferKeyEventL(aKeyEvent, aType);
             break;
             }
         }
--- a/cmmanager/cmmgr/Framework/Src/uncatdlg.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/cmmanager/cmmgr/Framework/Src/uncatdlg.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -121,7 +121,11 @@
         if ( !iCmManager->DestinationCountL() )
             {
             hideMove = ETrue;
-            }               
+            }
+
+        // No priorities in Uncategorized -> always disabled
+        hidePrioritise = ETrue;
+
         aMenuPane->SetItemDimmed( ECmManagerUiCmdCmAdd, hideAdd );
         aMenuPane->SetItemDimmed( ECmManagerUiCmdCmPrioritise, hidePrioritise  );
         aMenuPane->SetItemDimmed( ECmManagerUiCmdCmCopyToOtherDestination, hideCopy );
--- a/cmmanager/cmmgr/Framework/SrcData/cmmanager.rss	Thu Dec 17 08:55:21 2009 +0200
+++ b/cmmanager/cmmgr/Framework/SrcData/cmmanager.rss	Thu Jan 07 12:56:54 2010 +0200
@@ -329,15 +329,6 @@
 RESOURCE TBUF r_cmmanagerui_default_connection_title 
     { buf = qtn_netw_conset_default_connection_title; }
 
-RESOURCE TBUF r_cmmanagerui_roaming_confirmation      	
-    { buf = qtn_netw_conset_sett_roaming_confirmation; }
-
-RESOURCE TBUF r_cmmanagerui_roaming_automatic           	
-    { buf = qtn_netw_conset_sett_roaming_automatic; }
-
-RESOURCE TBUF r_cmmanagerui_roaming_confirm           	
-    { buf = qtn_netw_conset_sett_roaming_confirm; }
-
 RESOURCE TBUF r_qtn_netw_conset_navi_nof_destinations 
     { buf = qtn_netw_conset_navi_nof_destinations; }
 
--- a/cmmanager/cmmgr/Framework/loc/cmmanager.loc	Thu Dec 17 08:55:21 2009 +0200
+++ b/cmmanager/cmmgr/Framework/loc/cmmanager.loc	Thu Jan 07 12:56:54 2010 +0200
@@ -43,12 +43,6 @@
 //
 #define qtn_netw_conset_options_edit    "Edit"
 
-//d: Options menu text. Opens a submenu to manage the highlighted destination
-//l: list_single_pane_t1_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_options_manage_destination    "Manage"
 
 //d: Options menu text. Opens a radio button page to select default conneciton
 //l: list_single_pane_t1_cp2
@@ -311,13 +305,6 @@
 //
 #define qtn_netw_conset_options_delete_method "Delete"
 
-//d: Connection method list text. Opens a submenu for managing the highlighted
-//d: connection method
-//l: list_single_pane_t1_cp2/opt3
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_options_organise "Organise"
 
 //d:Connection method list text. Prioritise the highlighted connecton method
 //l: list_single_popup_submenu_pane_t1
@@ -735,29 +722,6 @@
 //
 #define qtn_set_options_exit "Exit"
 
-
-//d: Setting list item text.
-//l: list_setting_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_sett_roaming_confirmation "Utilise this method"
-
-//d: Setting list item text shown if automatic roaming is selected.
-//l: list_set_graphic_pane_t1
-//w: 
-//r: 3.2
-//
-
-#define qtn_netw_conset_sett_roaming_automatic "Automatically"
-
-//d: Setting list item text shown if confirmation takes place upon roaming.
-//l: list_set_graphic_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_sett_roaming_confirm "After confirmation"
-
 //d: Bearer type cannot be modified info text 
 //l: popup_note_window
 //w: 
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/inc/cmvpncommonconstants.h	Thu Dec 17 08:55:21 2009 +0200
+++ b/cmmanager/cmmgr/Plugins/cmpluginvpn/inc/cmvpncommonconstants.h	Thu Jan 07 12:56:54 2010 +0200
@@ -21,6 +21,7 @@
 // CONSTANTS
 _LIT( KPluginVPNResDirAndFileName, "z:cmpluginvpnui.rsc" );
 
-const TInt KVpnProxyPortNumberDefault = 80;
+// Do not change this default to other value because proxy number is using this value as default port number
+const TInt KVpnProxyPortNumberDefault = 0;
 
 #endif  // CMVPNCOMMONCONSTANTS_H
--- a/cmmanager/gsconnsettingsplugin/traces/OstTraceDefinitions.h	Thu Dec 17 08:55:21 2009 +0200
+++ b/cmmanager/gsconnsettingsplugin/traces/OstTraceDefinitions.h	Thu Jan 07 12:56:54 2010 +0200
@@ -2,7 +2,7 @@
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
+* under the terms of the License "Eclipse Public License v1.0"
 * which accompanies this distribution, and is available
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
 *
--- a/connectionmonitoring/connectionmonitorui/group/bld.inf	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionmonitoring/connectionmonitorui/group/bld.inf	Thu Jan 07 12:56:54 2010 +0200
@@ -31,7 +31,7 @@
 ../ROM/ConnectionMonitorUiResources.iby	LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(ConnectionMonitorUiResources.iby)
 
 // export localised loc file
-../loc/ConnectionMonitorUi.loc	MW_LAYER_LOC_EXPORT_PATH(connectionmonitorui.loc)
+../loc/connectionmonitorui.loc	MW_LAYER_LOC_EXPORT_PATH(connectionmonitorui.loc)
 
 PRJ_MMPFILES
 ./ConnectionMonitorUI.mmp
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/ConfirmationQuery.h	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/ConfirmationQuery.h	Thu Jan 07 12:56:54 2010 +0200
@@ -76,7 +76,8 @@
         */
         void TryExitL( TInt aButtonId );
         
-        TBool NeedToDismissQueryL(const TKeyEvent& aKeyEvent);
+        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, 
+                                     TEventCode aType);
         
         /**
         * Sets the available choices for the query into the class variable
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/OfflineWlanNoteDlg.h	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/OfflineWlanNoteDlg.h	Thu Jan 07 12:56:54 2010 +0200
@@ -58,8 +58,6 @@
     * Destructor
     */
     virtual ~COfflineWlanNoteDlg();
-    
-    TBool NeedToDismissQueryL(const TKeyEvent& aKeyEvent);     
 
 private:
     /**
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/SelectWLANDlg.h	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/SelectWLANDlg.h	Thu Jan 07 12:56:54 2010 +0200
@@ -62,8 +62,6 @@
         * @return The value of iFromOkToExit.
         */
         inline TBool GetOkToExit();
-        
-        TBool NeedToDismissQueryL(const TKeyEvent& aKeyEvent);
 
 
     protected:
@@ -97,6 +95,12 @@
         */
         void HandleResourceChange( TInt aType );
         
+        /**
+        * from CCoeControl
+        * @param aKeyEvent Event to handled.
+        * @param aType Type of the key event. 
+        * @return Response code (EKeyWasConsumed, EKeyWasNotConsumed). 
+        */
         TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, 
                                      TEventCode aType);
                                      
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/WepWpaQueryDlg.h	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/WepWpaQueryDlg.h	Thu Jan 07 12:56:54 2010 +0200
@@ -22,9 +22,11 @@
 
 // INCLUDES
 #include <AknQueryDialog.h>
+#include "ExpiryTimerCallback.h"
 
 // FORWARD DECLARATIONS
 class CConnectionDialogsNotifBase;
+class CExpiryTimer;
 
 enum TDialogType
     {
@@ -38,7 +40,7 @@
 /**
  * Class implements a query dialog.
  */
-NONSHARABLE_CLASS( CWepWpaQueryDlg ) : public CAknTextQueryDialog
+NONSHARABLE_CLASS( CWepWpaQueryDlg ) : public CAknTextQueryDialog, public MExpiryTimerCallback
     {
 public:
     /**
@@ -65,7 +67,19 @@
     */
     virtual ~CWepWpaQueryDlg();
     
-    TBool NeedToDismissQueryL(const TKeyEvent& aKeyEvent);    
+    /**
+    * from CCoeControl
+    * @param aKeyEvent Event to handled.
+    * @param aType Type of the key event. 
+    * @return Response code (EKeyWasConsumed, EKeyWasNotConsumed). 
+    */
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, 
+                                 TEventCode aType);
+    
+    /**
+     * Dialog expiration timeout callback
+     */
+    void HandleTimedOut();
 
 private:
 
@@ -86,6 +100,8 @@
     CConnectionDialogsNotifBase* iNotif;  // Pointer to the Notifier
     TInt   iDialogType;
     TBool& iHex;
+    // Pointer for dialog expiration timer
+    CExpiryTimer* iExpiryTimer;
     };
 
 
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/nowlannetworksavailablenotif.h	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/nowlannetworksavailablenotif.h	Thu Jan 07 12:56:54 2010 +0200
@@ -22,9 +22,10 @@
 
 // INCLUDES
 #include "ConnectionDialogsNotifBase.h"
+#include "nowlansdiscreetpopup.h"
 
 //FORWARD DECLARATION
-class CActiveWLANNetworkUnavailableNote;
+class CNoWlansDiscreetPopup;
 
 /**
  * CNoWLANNetworksAvailableNotif class
@@ -83,7 +84,7 @@
     
     protected:
         // pointer to active object, owned
-        CActiveWLANNetworkUnavailableNote* iActiveNote;
+        CNoWlansDiscreetPopup* iActiveNote;
 
     };    
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/nowlansdiscreetpopup.h	Thu Jan 07 12:56:54 2010 +0200
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  Declaration of CNoWlansDiscreetPopup
+ *
+ */
+
+#ifndef CNOWLANSDISCREETPOPUP_H
+#define CNOWLANSDISCREETPOPUP_H
+
+// INCLUDES
+#include <e32base.h>	// For CActive, link against: euser.lib
+
+#include "ConnectionDialogsNotifBase.h"
+ 
+/**
+ * CConnectingViaDiscreetPopup class
+ */
+NONSHARABLE_CLASS( CNoWlansDiscreetPopup ) : public CActive
+    {
+public:
+    /**
+     * Destructor
+     * Cancel and destroy
+     */
+    virtual ~CNoWlansDiscreetPopup();
+
+    /**
+     * NewL function 
+     * Two-phased constructor.
+     * @param  aNotif a pointer to notifier plugin
+     */
+    static CNoWlansDiscreetPopup* NewL(
+            CConnectionDialogsNotifBase* aNotif );
+
+    /**
+     * NewL function 
+     * Two-phased constructor.
+     * @param  aNotif a pointer to notifier plugin
+     */
+    static CNoWlansDiscreetPopup* NewLC(
+            CConnectionDialogsNotifBase* aNotif );
+
+public:
+    /**
+     * StartL Function for making the initial request
+     */
+    void StartL();
+
+private:
+    /**
+     * C++ constructor
+     */
+    CNoWlansDiscreetPopup( CConnectionDialogsNotifBase* aNotif );
+
+    /**
+     * Second-phase constructor
+     */
+    void ConstructL();
+
+private:
+    /**
+     * From CActive
+     */
+    void RunL();
+
+    /**
+     * From CActive 
+     */
+    void DoCancel();
+
+    /**
+     * From CActive 
+     */
+    TInt RunError( TInt aError );
+    
+private:
+    // Used for complete runl, not owned 
+    TRequestStatus* iClientStatus;
+
+    // Pointer to notifer, not owned
+    CConnectionDialogsNotifBase* iNotif;
+    };
+
+#endif // CNOWLANSDISCREETPOPUP_H
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/wlanpowersavetest.h	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/wlanpowersavetest.h	Thu Jan 07 12:56:54 2010 +0200
@@ -87,14 +87,6 @@
         * @param aButtonId The id of the pressed button.
         */
         void TryExitL( TInt aButtonId );
-        
-         /**
-        * Called by OfferkeyEventL(), gives a change to dismiss the query even with
-        * keys different than Enter of Ok.
-        * @param aKeyEvent has the key event details
-        * @return whether to dismiss the dialog or not.
-        */
-        TBool NeedToDismissQueryL( const TKeyEvent& aKeyEvent );
 
     private:
         /**
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/ConfirmationQuery.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/ConfirmationQuery.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -125,20 +125,24 @@
     }
 
 // ---------------------------------------------------------
-// CConfirmationQuery::NeedToDismissQueryL
+// CConfirmationQuery::OfferKeyEventL
 // ---------------------------------------------------------
 //
-TBool CConfirmationQuery::NeedToDismissQueryL(const TKeyEvent& aKeyEvent)
+TKeyResponse CConfirmationQuery::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
+                                                 TEventCode aType)
     {
-    if (aKeyEvent.iCode == EKeyPhoneSend)
+    if( aType == EEventKey && aKeyEvent.iCode == EKeyPhoneSend )
         {
-        TryExitL(EEikBidCancel);
-        return ETrue;
+        // Let's not obscure the Dialer in the background
+        if ( iExpiryTimer )
+            {
+            iExpiryTimer->Cancel();
+            iExpiryTimer->StartShort();    
+            }
         }
-        
-    return EFalse;
-    }
-
+    
+    return CAknListQueryDialog::OfferKeyEventL( aKeyEvent,aType ); 
+    } 
 
 // ---------------------------------------------------------
 // CConfirmationQuery::SetChoices
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/OfflineWlanNoteDlg.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/OfflineWlanNoteDlg.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -90,21 +90,6 @@
     iExpiryTimer->Start();
     }
 
-// ---------------------------------------------------------
-// COfflineWlanNoteDlg::NeedToDismissQueryL
-// ---------------------------------------------------------
-//
-TBool COfflineWlanNoteDlg::NeedToDismissQueryL(const TKeyEvent& aKeyEvent)
-    {
-    if (aKeyEvent.iCode == EKeyPhoneSend)
-        {
-        TryExitL(EEikBidCancel);
-        return ETrue;
-        }
-        
-    return EFalse;
-    }
-
 
 void COfflineWlanNoteDlg::HandleTimedOut()
     {
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/SelectWLANDlg.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/SelectWLANDlg.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -178,7 +178,9 @@
     CLOG_ENTERFN( "CSelectWLANDlg::OkToExitL " );  
     
     TBool result( EFalse );
-    if ( aButtonId == EAknSoftkeySelect || aButtonId == EAknSoftkeyOk )
+    
+    if ( ( aButtonId == EAknSoftkeySelect || aButtonId == EAknSoftkeyOk ) &&
+         !iFromOkToExit )
         {
         __ASSERT_DEBUG( iPlugin, User::Panic( KErrNullPointer, KErrNone ) );
         
@@ -586,27 +588,17 @@
 TKeyResponse CSelectWLANDlg::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
                                              TEventCode aType)
     {
-    if( NeedToDismissQueryL(aKeyEvent) )
+    if( aType == EEventKey && aKeyEvent.iCode == EKeyPhoneSend )
         {
-        return EKeyWasConsumed;
-        }
- 	
-    return CAknListQueryDialog::OfferKeyEventL(aKeyEvent,aType);
-    }
-    
-// ---------------------------------------------------------
-// CSelectWLANDlg::NeedToDismissQueryL
-// ---------------------------------------------------------
-//
-TBool CSelectWLANDlg::NeedToDismissQueryL(const TKeyEvent& aKeyEvent)
-    {
-    if (aKeyEvent.iCode == EKeyPhoneSend)
-        {
-        TryExitL(EEikBidCancel);
-        return ETrue;
+        // Let's not obscure the Dialer in the background
+        if ( iExpiryTimer && !iFromOkToExit )
+            {
+            iExpiryTimer->Cancel();
+            iExpiryTimer->StartShort();    
+            }
         }
         
-    return EFalse;
+    return CAknListQueryDialog::OfferKeyEventL( aKeyEvent,aType ); 
     }
 
 // ---------------------------------------------------------
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/WepWpaQueryDlg.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/WepWpaQueryDlg.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -27,6 +27,7 @@
 #include "EasyWepDlgNotif.h"
 #include "EasyWpaDlgNotif.h"
 #include "ConnectionDialogsLogger.h"
+#include "ExpiryTimer.h"
 
 
 // CONSTANTS
@@ -85,6 +86,7 @@
     {
     STATIC_CAST( CEikServAppUi*, 
                 CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( EFalse );
+    delete iExpiryTimer;
     }
 
 
@@ -272,18 +274,33 @@
     }
 
 // ---------------------------------------------------------
-// CWepWpaQueryDlg::NeedToDismissQueryL
+// CWepWpaQueryDlg::OfferKeyEventL
 // ---------------------------------------------------------
 //
-TBool CWepWpaQueryDlg::NeedToDismissQueryL(const TKeyEvent& aKeyEvent)
+TKeyResponse CWepWpaQueryDlg::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
+                                                 TEventCode aType)
     {
-    if (aKeyEvent.iCode == EKeyPhoneSend)
+    if( aType == EEventKey && aKeyEvent.iCode == EKeyPhoneSend )
         {
-        TryExitL(EEikBidCancel);
-        return ETrue;
+        // Let's not obscure the Dialer in the background
+        if ( !iExpiryTimer )
+            {
+            iExpiryTimer = CExpiryTimer::NewL( *this );
+            }
+        else
+            {
+            iExpiryTimer->Cancel();
+            }
+        
+        iExpiryTimer->StartShort();
         }
-        
-    return EFalse;
+    
+    return CAknTextQueryDialog::OfferKeyEventL( aKeyEvent,aType ); 
+    }
+
+void CWepWpaQueryDlg::HandleTimedOut()
+    {
+    TRAP_IGNORE( TryExitL( EAknSoftkeyCancel ) );
     }
 
 // End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/nowlannetworksavailablenotif.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/nowlannetworksavailablenotif.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -15,10 +15,10 @@
 *
 */
 
-
 // INCLUDE FILES
+#include "ConnectionDialogsUidDefs.h"
 #include "nowlannetworksavailablenotif.h"
-#include "ActiveWLANNetworkUnavailableNote.h"
+#include "nowlansdiscreetpopup.h"
 #include "ConnUiUtilsNotif.h"
 
 
@@ -59,10 +59,9 @@
     iMessage   = aMessage;
     iCancelled = EFalse;
             
-    iActiveNote = new( ELeave ) CActiveWLANNetworkUnavailableNote( this );
+    iActiveNote = CNoWlansDiscreetPopup::NewL( this );
         
-    iActiveNote->LaunchWLANNetworkUnavailable( 
-                   CActiveWLANNetworkUnavailableNote::EWlanNote2 );       
+    iActiveNote->StartL();       
     }
     
 // ---------------------------------------------------------
@@ -70,17 +69,13 @@
 // ---------------------------------------------------------
 //
 void CNoWLANNetworksAvailableNotif::CompleteL( TInt aStatus )
-    {    
-    delete iActiveNote;
-    iActiveNote = NULL;
-    
+    {
     iCancelled = ETrue;
     
     if ( !iMessage.IsNull() )
         {
         iMessage.Complete( aStatus );
         }
-    Cancel();
     }    
 
 // ---------------------------------------------------------
@@ -124,7 +119,10 @@
             {
             iMessage.Complete( KErrCancel );
             }
-        
+        }
+    
+    if ( iActiveNote )
+        {
         delete iActiveNote;
         iActiveNote = NULL;
         }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/nowlansdiscreetpopup.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  Implementation of CNoWlansDiscreetPopup.
+ *
+ */
+
+// INCLUDE FILES
+
+#include <akndiscreetpopup.h>
+#include <aknsconstants.hrh>
+#include <StringLoader.h>
+#include <avkon.hrh>
+#include <connectionuiutilities.mbg>
+#include <ConnUiUtilsNotif.rsg>
+
+#include "nowlansdiscreetpopup.h"
+
+
+// No discreet popup => Uid 0
+const TUid KDiscreetPopupUidNone =
+    {
+    0x0
+    };
+
+// Path of the app's iconfile
+_LIT( KIconFileName, "\\resource\\apps\\connectionuiutilities.mif" );
+// Empty string
+_LIT( KEmpty, "");
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CNoWlansDiscreetPopup::CNoWlansDiscreetPopup
+// ---------------------------------------------------------
+//
+CNoWlansDiscreetPopup::CNoWlansDiscreetPopup(
+    CConnectionDialogsNotifBase* aNotif ) :
+    CActive( EPriorityUserInput ), // Standard priority
+    iNotif( aNotif )
+    {
+    }
+
+// ---------------------------------------------------------
+// CNoWlansDiscreetPopup::NewLC
+// ---------------------------------------------------------
+//
+CNoWlansDiscreetPopup* CNoWlansDiscreetPopup::NewLC(
+    CConnectionDialogsNotifBase* aNotif )
+    {
+    CNoWlansDiscreetPopup* self =
+            new (ELeave) CNoWlansDiscreetPopup( aNotif );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CNoWlansDiscreetPopup::NewL
+// ---------------------------------------------------------
+//
+CNoWlansDiscreetPopup* CNoWlansDiscreetPopup::NewL(
+    CConnectionDialogsNotifBase* aNotif )
+    {
+    CNoWlansDiscreetPopup* self =
+            CNoWlansDiscreetPopup::NewLC( aNotif );
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CNoWlansDiscreetPopup::ConstructL
+// ---------------------------------------------------------
+//
+void CNoWlansDiscreetPopup::ConstructL()
+    {
+    CActiveScheduler::Add( this ); // Add to scheduler
+    }
+
+// ---------------------------------------------------------
+// CNoWlansDiscreetPopup::~CNoWlansDiscreetPopup
+// ---------------------------------------------------------
+//
+CNoWlansDiscreetPopup::~CNoWlansDiscreetPopup()
+    {
+    Cancel(); // Cancel any request, if outstanding
+    }
+
+// ---------------------------------------------------------
+// CNoWlansDiscreetPopup::DoCancel
+// ---------------------------------------------------------
+//
+void CNoWlansDiscreetPopup::DoCancel()
+    {
+    }
+
+// ---------------------------------------------------------
+// CNoWlansDiscreetPopup::StartL
+// ---------------------------------------------------------
+//
+void CNoWlansDiscreetPopup::StartL()
+    {
+    Cancel(); // Cancel any request, just to be sure
+
+    SetActive(); // Tell scheduler a request is active
+    iClientStatus = &iStatus;
+    User::RequestComplete( iClientStatus, KErrNone );
+
+    // Complete the note so client can continue its tasks
+    // immediately
+    iNotif->SetCancelledFlag( ETrue );
+    iNotif->CompleteL( KErrNone );
+    }
+
+// ---------------------------------------------------------
+// CNoWlansDiscreetPopup::RunL
+// ---------------------------------------------------------
+//
+void CNoWlansDiscreetPopup::RunL()
+    {
+    if ( iStatus == KErrNone )
+        {
+            
+        // Load strings from resources
+        HBufC* stringText1 = StringLoader::LoadLC( R_OCC_INFO_NO_WLAN_AVAILABLE );
+        HBufC* stringText2 = KEmpty().AllocLC();
+        	
+        CAknDiscreetPopup::ShowGlobalPopupL(
+        	    *stringText1,    // 1st text row
+                *stringText2,    // second text row
+                KAknsIIDDefault, // icon skin id
+                KIconFileName,   // bitmap file path
+                EMbmConnectionuiutilitiesQgn_prop_wlan_bearer,      // bitmap id
+                EMbmConnectionuiutilitiesQgn_prop_wlan_bearer_mask, // mask id
+                KAknDiscreetPopupDurationLong, // flags
+                0,    // command id
+                NULL, // command observer
+                KDiscreetPopupUidNone,  // application to be launched
+                KDiscreetPopupUidNone); // view to be activated
+
+        CleanupStack::PopAndDestroy(2, stringText1);
+        }
+
+    // Cleanup
+    iNotif->Cancel();
+    }
+
+// ---------------------------------------------------------
+// CNoWlansDiscreetPopup::RunError
+// ---------------------------------------------------------
+//
+TInt CNoWlansDiscreetPopup::RunError( TInt aError )
+    {
+    return aError;
+    }
+
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/wlanpowersavetest.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/wlanpowersavetest.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -100,9 +100,9 @@
     {
     CLOG_ENTERFN( "CWlanPowerSaveQuery::OfferKeyEventL" );
     TInt code = aKeyEvent.iCode;
-
+        
     switch ( code )
-        {
+        {    
         case EKeyUpArrow:
         case EKeyDownArrow:
             {
@@ -192,19 +192,4 @@
     CLOG_LEAVEFN( "CWlanPowerSaveQuery::TryExitL" );
     }
 
-// ---------------------------------------------------------
-// CWlanPowerSaveQuery::NeedToDismissQueryL
-// ---------------------------------------------------------
-//
-TBool CWlanPowerSaveQuery::NeedToDismissQueryL(const TKeyEvent& aKeyEvent)
-    {
-    if (aKeyEvent.iCode == EKeyPhoneSend)
-        {
-        TryExitL(EEikBidCancel);
-        return ETrue;
-        }
-        
-    return EFalse;
-    }
-
 // End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/data/ConnUiUtilsNotif.rss	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/data/ConnUiUtilsNotif.rss	Thu Jan 07 12:56:54 2010 +0200
@@ -318,51 +318,16 @@
     buf = qtn_netw_conset_info_roaming_to; 
     }
 
-RESOURCE TBUF r_qtn_netw_conset_prmpt_roam_less_preferred   
-    { 
-    buf = qtn_netw_conset_prmpt_roam_less_preferred; 
-    }
-
 RESOURCE TBUF r_qtn_netw_conset_quest_roam_less_preferred   
     { 
     buf = qtn_netw_conset_quest_roam_less_preferred; 
     }
 
-RESOURCE TBUF r_qtn_netw_conset_prmpt_roam_more_preferred   
-    { 
-    buf = qtn_netw_conset_prmpt_roam_more_preferred; 
-    }
-
-RESOURCE TBUF r_qtn_netw_conset_quest_roam_more_preferred   
-    { 
-    buf = qtn_netw_conset_quest_roam_more_preferred; 
-    }
-
-RESOURCE TBUF r_qtn_netw_conset_quest_connect_via_method    
-    { 
-    buf = qtn_netw_conset_quest_connect_via_method; 
-    }
-
 RESOURCE TBUF r_qtn_netw_conset_conf_connected_via_method
     { 
     buf = qtn_netw_conset_conf_connected_via_method;
     }
 
-RESOURCE TBUF r_qtn_netw_conset_prmpt_connection_needed
-    {
-    buf = qtn_netw_conset_prmpt_connection_needed;
-    }
-
-RESOURCE TBUF r_qtn_netw_conset_msg_query_link_always_accept
-    {
-    buf = qtn_netw_conset_msg_query_link_always_accept;
-    }
-
-RESOURCE TBUF r_qtn_netw_conset_msg_query_link_try_next
-    {
-    buf = qtn_netw_conset_msg_query_link_try_next;
-    }
-
 RESOURCE TBUF r_qtn_wlan_manual_ssid_input
     {
     buf = qtn_wlan_manual_ssid_input;
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/loc/connectionuiutilities.loc	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/loc/connectionuiutilities.loc	Thu Jan 07 12:56:54 2010 +0200
@@ -168,13 +168,6 @@
 #define qtn_netw_conset_info_roaming_to         "Changing connection to: '%U'"
 
 
-//d:Confirmation query, is aksed when a change in connection method is take place, heading
-//l:heading_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_prmpt_roam_less_preferred    "Connection was lost. "
-
 //d:Confirmation query, is aksed when a change in connection method is take place
 //l:popup_info_list_pane_t1
 //w:
@@ -182,12 +175,6 @@
 //
 #define qtn_netw_conset_quest_roam_less_preferred    "Re-establish connection to '%0U' via method '%1U'?"
 
-//d:Confirmation query, is aksed when a change in connection method is take place, heading
-//l:heading_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_prmpt_roam_more_preferred    "Preferred connection: "
 
 //d:Confirmation query, is aksed when a change in connection method is take place
 //l:popup_info_list_pane_t1
@@ -196,13 +183,6 @@
 //
 #define qtn_netw_conset_quest_roam_more_preferred    "Connection to '%0U' now available via method '%1U'. Connect?"
 
-//d:Confirmation query, to ask the user a confirmation before establishing a 
-//d:connection to the destination %0U via the Connection Method %1U
-//l:popup_info_list_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_quest_connect_via_method    "Connect to destination '%0U' via connection method '%1U'?"
 
 //d:Confirmation note, after the connection has been successfully establilshed
 //l:popup_note_window/opt2
@@ -211,30 +191,6 @@
 //
 #define qtn_netw_conset_conf_connected_via_method   "Connected via:\n '%U'"
 
-//d:Title of the MessageQuery with links when a new connection needs to be
-//d:established.
-//l:heading_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_prmpt_connection_needed     "Connection needed:"
-
-//d:Link inside a MessageQuery to change the seamlessness value of the selected
-//d:Connection Method
-//l:popup_info_list_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_msg_query_link_always_accept "-Remember this and connect"
-
-//d:Link inside a MessageQuery to refuse connection with the selected method,
-//d: but to keep the possibility to try with the next best method.
-//l:popup_info_list_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_msg_query_link_try_next     "-Try next best method"
-
 
 //d:Entry to enable the manual input of WLAN network’s SSID, e.g. in case
 //d:of a hidden network which is not directly visible in the scan results
@@ -305,36 +261,12 @@
 #define qtn_occ_connecting_discreet_popup_text2 "Via '%U'"
 
 
-//d:Title of information query when new WLAN networks are found 
-//l:heading_pane_t1
-//w:
-//r:5.2
-//
-#define qtn_occ_prmpt_new_wlans_found	"New WLAN networks found"
-
-//d:Text asking to select a WLAN network to be used from the list instead of
-//d:cellular data
-//l:loc_type_pane
+//d:No WLAN networks are available at the moment - note
+//l:popup_discreet_window_t1/opt4
 //w:
 //r:5.2
 //
-#define qtn_occ_detail_new_wlans_select	"Select a WLAN network to be used instead of cellular data."
-
-//d:Selection item in New WLAN networks found query note to choose only the 
-//d:known networks for connection
-//l:list_single_graphic_pane_t1_cp2
-//w:
-//r:5.2
-//
-#define qtn_occ_list_new_wlans_use_only_known	"Use only known networks"
-
-
-//d:No WLAN networks are available at the moment - note
-//l:popup_note_window
-//w:
-//r:5.2
-//
-#define qtn_occ_info_no_wlan_available "No WLAN networks are available at the moment. Connection not available."
+#define qtn_occ_info_no_wlan_available "No WLANs found."
 
 
 //d:Confirmation query, to ask the user a confirmation before establishing a 
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/IAPDialog.h	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/cconndlg/inc/IAPDialog.h	Thu Jan 07 12:56:54 2010 +0200
@@ -71,6 +71,15 @@
         virtual TBool OkToExitL( TInt aButtonId );
         
         /**
+        * from CCoeControl
+        * @param aKeyEvent Event to handled.
+        * @param aType Type of the key event. 
+        * @return Response code (EKeyWasConsumed, EKeyWasNotConsumed). 
+        */
+        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, 
+                                     TEventCode aType);
+        
+        /**
         * Dialog refreshing
         */
         void RefreshDialogL( CConnectionInfoArray* aIAP, 
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/SelectExplicitDialog.h	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/cconndlg/inc/SelectExplicitDialog.h	Thu Jan 07 12:56:54 2010 +0200
@@ -89,10 +89,14 @@
         */
         inline TBool GetOkToExit();
         
+        /**
+        * from CCoeControl
+        * @param aKeyEvent Event to handled.
+        * @param aType Type of the key event. 
+        * @return Response code (EKeyWasConsumed, EKeyWasNotConsumed). 
+        */
         TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, 
                                      TEventCode aType);
-        
-        TBool NeedToDismissQueryL(const TKeyEvent& aKeyEvent);                                
 
         /**
         * Dialog expiration timeout callback
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/ActiveIapPlugin.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/cconndlg/src/ActiveIapPlugin.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -35,14 +35,6 @@
 #include <CConnDlgPlugin.rsg>
 
 
-// CONSTANTS
-
-// Panic string
-#if defined(_DEBUG)
-_LIT( KErrNullPointer, "NULL pointer" );
-#endif
-
-
 ///////////////////////////////////////////////////////////////////////////////
 
 // ---------------------------------------------------------
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/IAPDialog.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/cconndlg/src/IAPDialog.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -256,6 +256,26 @@
     CLOG_LEAVEFN( "CIapDialog::RefreshDialogL " );  
     }
 
+// ---------------------------------------------------------
+// CIapDialog::OfferKeyEventL
+// ---------------------------------------------------------
+//
+TKeyResponse CIapDialog::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
+                                         TEventCode aType)
+    {
+    if( aType == EEventKey && aKeyEvent.iCode == EKeyPhoneSend )
+        {
+        // Let's not obscure the Dialer in the background
+        if ( iExpiryTimer )
+            {
+            iExpiryTimer->Cancel();
+            iExpiryTimer->StartShort();    
+            }
+        }
+        
+    return CAknListQueryDialog::OfferKeyEventL( aKeyEvent,aType ); 
+    }
+
 void CIapDialog::HandleTimedOut()
     {
     TRAP_IGNORE( TryExitL(EAknSoftkeyCancel) );
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/SelectConnectionDialog.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/cconndlg/src/SelectConnectionDialog.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -42,7 +42,6 @@
 
 #if defined(_DEBUG)
 _LIT( KErrNullPointer, "NULL pointer" );
-_LIT( KErrActiveObjectNull, "iActiveSelectExplicit not NULL" );
 #endif
 
 
@@ -362,17 +361,16 @@
 
         case ESelectConnectionCmdChooseMethod:
             {
-            __ASSERT_DEBUG( !iActiveSelectExplicit, 
-                            User::Panic( KErrActiveObjectNull, KErrNone ) );
-
-            iActiveSelectExplicit = CActiveSelectExplicit::NewL( this, 
-                                    iDestIDs[ListBox()->CurrentItemIndex()],
-                                    iRefreshInterval,
-                                    iBearerSet, 
-                                    iIsWLANFeatureSupported,
-                                    iDefaultCMId );
-            iActiveSelectExplicit->ShowSelectExplicitL();
-
+            if ( !iActiveSelectExplicit )
+                {
+                iActiveSelectExplicit = CActiveSelectExplicit::NewL( this, 
+                                        iDestIDs[ListBox()->CurrentItemIndex()],
+                                        iRefreshInterval,
+                                        iBearerSet, 
+                                        iIsWLANFeatureSupported,
+                                       iDefaultCMId );
+                iActiveSelectExplicit->ShowSelectExplicitL();
+                }
             break;
             }
 
@@ -394,6 +392,16 @@
                                                    TEventCode aType )
     {
     CLOG_ENTERFN( "CSelectConnectionDialog::OfferKeyEventL" );
+    
+    if( aType == EEventKey && aKeyEvent.iCode == EKeyPhoneSend )
+        {
+        // Let's not obscure the Dialer in the background
+        if ( iExpiryTimer && !iActiveSelectExplicit )
+            {
+            iExpiryTimer->Cancel();
+            iExpiryTimer->StartShort();    
+            }
+        }
 
     TKeyResponse result( EKeyWasNotConsumed );
     TInt indexBefore = -1;
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/SelectExplicitDialog.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/cconndlg/src/SelectExplicitDialog.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -206,28 +206,18 @@
 TKeyResponse CSelectExplicitDialog::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
                                                     TEventCode aType)
     {
-    if( NeedToDismissQueryL(aKeyEvent) )
+    if( aType == EEventKey && aKeyEvent.iCode == EKeyPhoneSend )
         {
-        return EKeyWasConsumed;
-        }
- 	
-    return CAknListQueryDialog::OfferKeyEventL(aKeyEvent,aType);
-    }    
-    
-// ---------------------------------------------------------
-// CSelectExplicitDialog::NeedToDismissQueryL
-// ---------------------------------------------------------
-//
-TBool CSelectExplicitDialog::NeedToDismissQueryL(const TKeyEvent& aKeyEvent)
-    {
-    if (aKeyEvent.iCode == EKeyPhoneSend)
-        {
-        TryExitL(EEikBidCancel);
-        return ETrue;
+        // Let's not obscure the Dialer in the background
+        if ( iExpiryTimer )
+            {
+            iExpiryTimer->Cancel();
+            iExpiryTimer->StartShort();    
+            }
         }
         
-    return EFalse;
-    }
+    return CAknListQueryDialog::OfferKeyEventL( aKeyEvent,aType ); 
+    }    
 	
 void CSelectExplicitDialog::HandleTimedOut()
     {
--- a/connectionutilities/ConnectionDialogs/group/ConnUiUtilsNotif.mmp	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/group/ConnUiUtilsNotif.mmp	Thu Jan 07 12:56:54 2010 +0200
@@ -78,11 +78,12 @@
 SOURCE      connectingviadiscreetpopupnotif.cpp
 SOURCE      connectionerrordiscreetpopup.cpp
 SOURCE      connectionerrordiscreetpopupnotif.cpp
+SOURCE      nowlansdiscreetpopup.cpp
 
 SOURCEPATH  ../src
 SOURCE      ConnectionInfo.cpp
 SOURCE      ConnectionDialogsNotifBase.cpp
-SOURCE	ExpiryTimer.cpp
+SOURCE      ExpiryTimer.cpp
 
 USERINCLUDE     ../ConnectionUiUtilities/NotifInc
 USERINCLUDE     ../ConnectionUiUtilities/inc
--- a/connectionutilities/ConnectionDialogs/group/bld.inf	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/group/bld.inf	Thu Jan 07 12:56:54 2010 +0200
@@ -39,8 +39,8 @@
 
 // export localised loc file
 ../cconndlg/loc/agentdialog.loc				MW_LAYER_LOC_EXPORT_PATH(agentdialog.loc)
-../ConnectionUiUtilities/loc/ConnectionUiUtilities.loc	MW_LAYER_LOC_EXPORT_PATH(connectionuiutilities.loc)
-../DisconnectDlg/loc/DisconnectDlg.loc			MW_LAYER_LOC_EXPORT_PATH(disconnectdlg.loc)
+../ConnectionUiUtilities/loc/connectionuiutilities.loc	MW_LAYER_LOC_EXPORT_PATH(connectionuiutilities.loc)
+../DisconnectDlg/loc/disconnectdlg.loc			MW_LAYER_LOC_EXPORT_PATH(disconnectdlg.loc)
 
 ../conf/connectiondialogs.confml		APP_LAYER_CONFML(connectiondialogs.confml)
 ../conf/connectiondialogs_101FD67E.crml		APP_LAYER_CRML(connectiondialogs_101FD67E.crml)
--- a/connectionutilities/ConnectionDialogs/inc/ExpiryTimer.h	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/inc/ExpiryTimer.h	Thu Jan 07 12:56:54 2010 +0200
@@ -43,6 +43,11 @@
     * Starts up the timer       
     */
     void Start();
+    
+    /**
+     * Starts up the short timer       
+     */
+    void StartShort();
 
 private:
     /**
--- a/connectionutilities/ConnectionDialogs/rom/agentdialog.iby	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/rom/agentdialog.iby	Thu Jan 07 12:56:54 2010 +0200
@@ -20,7 +20,7 @@
 
 REM Test agent dialog server
 
-file=ABI_DIR\DEBUG_DIR\agentdialog.dll    SHARED_LIB_DIR\agentdialog.dll
+file=ABI_DIR\BUILD_DIR\agentdialog.dll    SHARED_LIB_DIR\agentdialog.dll
 
 
 #if defined(TEXT_ONLY_ROM)
--- a/connectionutilities/ConnectionDialogs/src/ExpiryTimer.cpp	Thu Dec 17 08:55:21 2009 +0200
+++ b/connectionutilities/ConnectionDialogs/src/ExpiryTimer.cpp	Thu Jan 07 12:56:54 2010 +0200
@@ -18,7 +18,9 @@
 
 #include "ExpiryTimer.h"
 
-static const TInt KTimeout = 60000000;
+static const TInt KTimeout     = 60000000;
+static const TInt KShortTimeout = 1000000;
+
 // ---------------------------------------------------------------------------
 // NewL. Constructs and returns the class object.
 // ---------------------------------------------------------------------------
@@ -55,6 +57,12 @@
     After( timeout );
     }
 
+void CExpiryTimer::StartShort()
+    {
+    TTimeIntervalMicroSeconds32 timeout = KShortTimeout;
+    After( timeout );
+    }
+
 void CExpiryTimer::RunL()
     {
     iCallback.HandleTimedOut();
--- a/ipcm_plat/bearer_settings_plugin_api/inc/cmpbasesettingsdlg.h	Thu Dec 17 08:55:21 2009 +0200
+++ b/ipcm_plat/bearer_settings_plugin_api/inc/cmpbasesettingsdlg.h	Thu Jan 07 12:56:54 2010 +0200
@@ -116,7 +116,11 @@
         /** From MEikListBoxObserver */
         IMPORT_C void HandleListBoxEventL( CEikListBox* aListBox, 
                                         TListBoxEvent aEventType );
-                                               
+
+        /** From CCoeControl */
+        IMPORT_C TKeyResponse OfferKeyEventL
+            ( const TKeyEvent& aKeyEvent, TEventCode aType ); 
+                                              
         /**
         * Updates Setting items in the listbox (setting names and values are
         * refreshed).