Automatic merge from PDK_3.0.h CompilerCompatibility
authorWilliam Roberts <williamr@symbian.org>
Sun, 14 Mar 2010 13:11:26 +0000
branchCompilerCompatibility
changeset 11 c32fb9f4b91e
parent 9 c65663728cf1 (current diff)
parent 8 2e6c4614c58e (diff)
child 14 7958d42f9d1a
Automatic merge from PDK_3.0.h
--- a/accesspointcontrol/apcontrollistplugin/inc/apcontrollistplugin.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/accesspointcontrol/apcontrollistplugin/inc/apcontrollistplugin.h	Sun Mar 14 13:11:26 2010 +0000
@@ -21,7 +21,7 @@
 
 // System includes
 #include <eikclb.h>
-#include <GSPluginInterface.h>
+#include <gsplugininterface.h>
 #include <ConeResLoader.h>
 
 // This UID is used for both the view UID and the ECOM plugin implementation UID.
--- a/alwayson_net_plugin/pdpcontextmanager2/src/caoconnectionmonitorimpl.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/alwayson_net_plugin/pdpcontextmanager2/src/caoconnectionmonitorimpl.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -16,7 +16,7 @@
 */
 
 // INCLUDE FILES
-#include <NIFVAR.H>
+#include <nifvar.h>
 #include "caoconnectionmonitorimpl.h"
 #include "maosettings.h"
 #include "logger.h"
--- a/apengine/apeng/src/APNetworks.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apeng/src/APNetworks.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -26,7 +26,7 @@
 #include <ApEngineConsts.h>
 
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <ProtectDb.h>
+#include <ProtectDB.h>
 #else
 #include <comms-infras/commdb/protection/protectdb.h>
 #endif
--- a/apengine/apeng/src/APSelect.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apeng/src/APSelect.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -24,7 +24,7 @@
 #include <featmgr.h>
 
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <ProtectDb.h>
+#include <ProtectDB.h>
 #else
 #include <comms-infras/commdb/protection/protectdb.h>
 #endif
--- a/apengine/apeng/src/ApProtHandler.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apeng/src/ApProtHandler.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -22,7 +22,7 @@
 #include <ApEngineConsts.h>
 
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <ProtectDb.h>
+#include <ProtectDB.h>
 #include <ProtectcpDb.h>
 #else
 #include <comms-infras/commdb/protection/protectdb.h>
--- a/apengine/apeng/src/VpnApEngine.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apeng/src/VpnApEngine.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -880,10 +880,11 @@
 
     CleanupStack::PopAndDestroy( buf ); // buf
 
-    t->ReadUintL( TPtrC(VPN_SERVICE_IAP), aVpnApItem.iRealIapId );    
-
-    t->ReadUintL( TPtrC(VPN_SERVICE_NETWORKID), aVpnApItem.iHomeNetwork );
-
+    // These fields might be missing from CommsDat.
+    // ApEngine does not support SNAPs, use CmManager API to get full support.
+    TRAP_IGNORE( t->ReadUintL( TPtrC(VPN_SERVICE_IAP), aVpnApItem.iRealIapId ) )
+    TRAP_IGNORE( t->ReadUintL( TPtrC(VPN_SERVICE_NETWORKID), aVpnApItem.iHomeNetwork ) )
+    
     CleanupStack::PopAndDestroy( t );   // t
 
     // Get real IAP name !!!!!
--- a/apengine/apsettingshandlerui/inc/ApSettingsLookups.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apsettingshandlerui/inc/ApSettingsLookups.h	Sun Mar 14 13:11:26 2010 +0000
@@ -24,7 +24,7 @@
 
 // INCLUDE FILES
 #include <ApAccessPointItem.h>
-#include <ApSetUI.rsg>
+#include <apsetui.rsg>
 
 #include <ApSettingsHandlerCommons.h>
 
--- a/apengine/apsettingshandlerui/src/ApNetSelPopupList.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apsettingshandlerui/src/ApNetSelPopupList.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -29,7 +29,7 @@
 #include "ApNetSelPopupList.h"
 #include "ApNetSelectorListBoxModel.h"
 #include "ApSettingsModel.h"
-#include <ApSetUI.rsg>
+#include <apsetui.rsg>
 #include "ApsettingshandleruiImpl.h"
 
 
--- a/apengine/apsettingshandlerui/src/ApSelPopupList.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apsettingshandlerui/src/ApSelPopupList.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -21,7 +21,7 @@
 #include "APSettingsHandlerUIVariant.hrh"
 
 #include <ApListItem.h>
-#include <ApSetUI.rsg>
+#include <apsetui.rsg>
 #include <featmgr.h>
 
 #include <csxhelp/cp.hlp.hrh>
--- a/apengine/apsettingshandlerui/src/ApSelQueryDialog.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apsettingshandlerui/src/ApSelQueryDialog.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -23,7 +23,7 @@
 #include <AknIconArray.h>
 #include <AknsUtils.h>
 
-#include <ApSetUI.rsg>
+#include <apsetui.rsg>
 #include <apsettings.mbg>
 
 #include <featmgr.h>
--- a/apengine/apsettingshandlerui/src/ApSelectorDialog.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apsettingshandlerui/src/ApSelectorDialog.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -25,7 +25,7 @@
 #include <eikmenup.h>
 
 #include <ApListItem.h>
-#include <ApSetUI.rsg>
+#include <apsetui.rsg>
 
 #include <featmgr.h>
 
--- a/apengine/apsettingshandlerui/src/ApSelectorListBox.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apsettingshandlerui/src/ApSelectorListBox.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -23,7 +23,7 @@
 //#include <EIKON.mbg>
 #include <avkon.mbg>
 #include <aknkeys.h>
-#include <ApSetUI.rsg>
+#include <apsetui.rsg>
 #include <featmgr.h>
 
 #include "ApSelectorListbox.h"
--- a/apengine/apsettingshandlerui/src/ApSettingsCommons.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apsettingshandlerui/src/ApSettingsCommons.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -24,7 +24,7 @@
 #include <eikenv.h>
 #include <ApSettingsHandlerCommons.h>
 #include "ApSettingsHandlerUI.hrh"
-#include <ApSetUI.rsg>
+#include <apsetui.rsg>
 #include <AknQueryDialog.h>
 #include <aknnotedialog.h>
 #include <StringLoader.h>
--- a/apengine/apsettingshandlerui/src/ApSettingsDlg.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apsettingshandlerui/src/ApSettingsDlg.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -41,7 +41,7 @@
 #include "ApSettingsLookups.h"
 #include "ApSettingsDlg.h"
 #include "ApSettingsModel.h"
-#include <ApSetUI.rsg>
+#include <apsetui.rsg>
 
 #include <csxhelp/cp.hlp.hrh>
 
--- a/apengine/apsettingshandlerui/src/ApSettingsModel.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apsettingshandlerui/src/ApSettingsModel.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -23,7 +23,7 @@
 #include <ApListItemList.h>
 #include <ApListItem.h>
 #include <ApSelect.h>
-#include <ApSetUI.rsg>
+#include <apsetui.rsg>
 #include <VpnApEngine.h>
 #include <hlplch.h>
 #include <eikenv.h>
--- a/apengine/apsettingshandlerui/src/apsettingsdeleteoperation.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apsettingshandlerui/src/apsettingsdeleteoperation.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -42,7 +42,7 @@
 #include "ApSelectorListBoxModel.h"
 #include "ApSettingsHandlerLogger.h"
 
-#include <ApSetUI.rsg>
+#include <apsetui.rsg>
 //  TEST ENDS
 
 
--- a/apengine/apsettingshandlerui/src/apsettingshandleruiImpl.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apsettingshandlerui/src/apsettingshandleruiImpl.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -23,7 +23,7 @@
 
 #include <bautils.h>
 #include <StringLoader.h>
-#include <ApSetUI.rsg>
+#include <apsetui.rsg>
 #include <ActiveApDb.h>
 
 #include "ApsettingshandleruiImpl.h"
--- a/apengine/apsettingsplugin/inc/APSettingsPlugin.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apsettingsplugin/inc/APSettingsPlugin.h	Sun Mar 14 13:11:26 2010 +0000
@@ -22,7 +22,7 @@
 // System includes
 #include <e32def.h>
 #include <e32cmn.h>
-#include <GSPluginInterface.h>
+#include <gsplugininterface.h>
 #include <ConeResLoader.h>
 
 // Forward declaration
@@ -110,4 +110,4 @@
     };
 
 #endif //__AP_SETTINGS_PLUGIN_H__
-//End of file
\ No newline at end of file
+//End of file
--- a/apengine/apsettingsplugin/src/APSettingsPlugin.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/apengine/apsettingsplugin/src/APSettingsPlugin.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -32,7 +32,7 @@
 #include <ApSettingsPluginRsc.rsg>
 #include <data_caging_path_literals.hrh>
 #include <apsettingsplugin.mbg>
-#include <SettingsInternalCRKeys.h>
+#include <settingsinternalcrkeys.h>
 #include <centralrepository.h>
 
 
--- a/bearermanagement/S60MCPR/inc/s60mcpractivities.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/bearermanagement/S60MCPR/inc/s60mcpractivities.h	Sun Mar 14 13:11:26 2010 +0000
@@ -767,12 +767,12 @@
              * STATE: Waits for preferred carrier message.
              * @return ETrue if preferred carrier notification is received.
              */
-            DECLARE_SMELEMENT_HEADER( TAwaitingPreferredCarrierOrCancelOrRejected, 
+            DECLARE_SMELEMENT_HEADER( TAwaitingPreferredCarrierOrCancelOrRejectedOrErrorNotification, 
                                       MeshMachine::TState<TContext>, 
                                       NetStateMachine::MState, 
                                       CS60MobilityActivity::TContext)
             virtual TBool Accept();
-            DECLARE_SMELEMENT_FOOTER( TAwaitingPreferredCarrierOrCancelOrRejected )
+            DECLARE_SMELEMENT_FOOTER( TAwaitingPreferredCarrierOrCancelOrRejectedOrErrorNotification )
             
             /**
              * FORK/DECISION: Decides what happens after IPCPR responds to migration offer.
--- a/bearermanagement/S60MCPR/inc/s60tiermanagerselector.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/bearermanagement/S60MCPR/inc/s60tiermanagerselector.h	Sun Mar 14 13:11:26 2010 +0000
@@ -60,6 +60,7 @@
     ESock::CMetaConnectionProviderBase* FindOrCreateProviderL( TUint aAccessPoint );
 private:
     TUint32 iDefaultAp;    
+    TSubSessionUniqueId iSubSessionUniqueId;    
     };
 
 #endif // S60IPTIERMANAGERSELECTOR_H
--- a/bearermanagement/S60MCPR/src/s60mcpractivities.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/bearermanagement/S60MCPR/src/s60mcpractivities.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -265,7 +265,7 @@
     // Clear handshake status and wait for preferred carrier or mobility API close.
     NODEACTIVITY_ENTRY( MobilityMCprStates::KStartMobilityHandshake, 
                         CS60MobilityActivity::TClearHandshakingFlag,
-                        CS60MobilityActivity::TAwaitingPreferredCarrierOrCancelOrRejected, // Ok. Error is fatal.
+                        CS60MobilityActivity::TAwaitingPreferredCarrierOrCancelOrRejectedOrErrorNotification, // Ok. Error is fatal.
                         S60MCprMobilityActivity::TInformMigrationAvailableOrCancelTag )
     // Application rejected active carrier
     THROUGH_NODEACTIVITY_ENTRY( S60MCprStates::KSendInitialApplicationReject, 
--- a/bearermanagement/S60MCPR/src/s60mcprmobilityactivity.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/bearermanagement/S60MCPR/src/s60mcprmobilityactivity.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -500,12 +500,12 @@
 		}
 	
     // -----------------------------------------------------------------------------
-    // CS60MobilityActivity::TAwaitingPreferredCarrierOrCancelOrRejected::Accept
+    // CS60MobilityActivity::TAwaitingPreferredCarrierOrCancelOrRejectedOrErrorNotification::Accept
     // -----------------------------------------------------------------------------
     //
-    DEFINE_SMELEMENT( CS60MobilityActivity::TAwaitingPreferredCarrierOrCancelOrRejected, 
+    DEFINE_SMELEMENT( CS60MobilityActivity::TAwaitingPreferredCarrierOrCancelOrRejectedOrErrorNotification, 
                       NetStateMachine::MState, TContext )
-    TBool CS60MobilityActivity::TAwaitingPreferredCarrierOrCancelOrRejected::Accept()
+    TBool CS60MobilityActivity::TAwaitingPreferredCarrierOrCancelOrRejectedOrErrorNotification::Accept()
         {
         TBool result( EFalse );
         
@@ -518,7 +518,7 @@
 
             TMpmNotificationPrefIAPAvailable* notif = (TMpmNotificationPrefIAPAvailable*)msg->iPtr;
 
-            S60MCPRLOGSTRING4("S60MCPR<%x>::TAwaitingPreferredCarrierOrCancelOrRejected::Accept() TMPMPreferredCarrierAvailableMsg %d -> %d upgrade=%d",
+            S60MCPRLOGSTRING4("S60MCPR<%x>::TAwaitingPreferredCarrierOrCancelOrRejectedOrErrorNotification::Accept() TMPMPreferredCarrierAvailableMsg %d -> %d upgrade=%d",
                        (TInt*)&iContext.Node(), notif->iOldIapId, notif->iNewIapId, notif->iIsUpgrade)
             // notif must be there.
             ASSERT(notif);
@@ -538,18 +538,28 @@
             }
         else if ( iContext.iMessage.IsMessage<TEBase::TCancel>() )
             {
-            S60MCPRLOGSTRING1("S60MCPR<%x>::TAwaitingPreferredCarrierOrCancelOrRejected::Accept() TCancel", 
+            S60MCPRLOGSTRING1("S60MCPR<%x>::TAwaitingPreferredCarrierOrCancelOrRejectedOrErrorNotification::Accept() TCancel", 
                     (TInt*)&iContext.Node())
             
             result = ETrue;
             }
         else if ( iContext.iMessage.IsMessage<TCFMobilityProvider::TMigrationRejected>() )
             {
-            S60MCPRLOGSTRING1("S60MCPR<%x>::TAwaitingPreferredCarrierOrCancelOrRejected::Accept() TMigrationRejected", 
+            S60MCPRLOGSTRING1("S60MCPR<%x>::TAwaitingPreferredCarrierOrCancelOrRejectedOrErrorNotification::Accept() TMigrationRejected", 
                     (TInt*)&iContext.Node())
             
             result = ETrue;
             }
+        else if ( iContext.iMessage.IsMessage<TCFS60MCPRMessage::TMPMErrorNotificationMsg>() )
+            {
+            CS60MobilityActivity& activity = static_cast<CS60MobilityActivity&>(*iContext.iNodeActivity);
+            TCFS60MCPRMessage::TMPMErrorNotificationMsg* msg = 
+                message_cast<TCFS60MCPRMessage::TMPMErrorNotificationMsg>( &iContext.iMessage );
+            S60MCPRLOGSTRING2("S60MCPR<%x>::TAwaitingPreferredCarrierOrCancelOrRejectedOrErrorNotification::Accept() TMPMErrorNotificationMsg %d",(TInt*)&iContext.Node(),msg->iValue)
+            ASSERT( msg->iValue != KErrNone );
+            activity.SetError( msg->iValue );
+            result = ETrue;
+            }
 
         return result;
         }
--- a/bearermanagement/S60MCPR/src/s60mcprsimpleselectactivity.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/bearermanagement/S60MCPR/src/s60mcprsimpleselectactivity.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -155,12 +155,11 @@
 
 		TSelectionPrefs prefs;
 
-		ESock::RConnPrefList::TIter<TConnCSRPref> iterCSR = node.ConnPrefList().getIter<TConnCSRPref>();
-		//There should be one and only one CSR pref
-		ASSERT(iterCSR[0] != NULL && iterCSR[1] == NULL);
-		TConnCSRPref* csrprefs = iterCSR[0];
-
-		prefs.SetSubSessionUniqueId(csrprefs->SubSessionUniqueId());
+        ESock::RConnPrefList::TIter<TConnCSRPref> iterCSR = node.ConnPrefList().getIter<TConnCSRPref>();
+        //There should be one and only one CSR pref
+        ASSERT(iterCSR[0] != NULL && iterCSR[1] == NULL);
+        TConnCSRPref* csrprefs = iterCSR[0];
+		prefs.SetSubSessionUniqueId(node.SubSessionUniqueId());
 		prefs.SetFlags(csrprefs->Flags());
 		prefs.SetScope(csrprefs->Scope());
 
@@ -172,7 +171,6 @@
 		node.ConnPrefList().AppendL(nextAP);
 		CleanupStack::Pop();
 		/* END OF HACK */
-
 		
         // Attach. 399 attach shouldn't be visible here.
         if ( prefs.Scope()&TSelectionPrefs::ESelectFromExisting )
@@ -185,6 +183,7 @@
         else
             {
             S60MCPRLOGSTRING1("S60MCPR<%x>::TSelectNextLayer::DoL() Start",(TInt*)&iContext.Node())
+
             TCommDbConnPref ippprefs;
             ippprefs.SetIapId( node.PolicyPrefs().IapId() );
             ippprefs.SetNetId( node.PolicyPrefs().NetId() );
@@ -296,11 +295,15 @@
             }
 #endif //_DEBUG
 
+        TSelectionPrefs newPrefs;
+        newPrefs = node.SelectionPrefs();
+        newPrefs.SetSubSessionUniqueId( node.SubSessionUniqueId() );
+        
         // Attach. 399 attach shouldn't be visible here.
         if ( node.SelectionPrefs().Scope()&TSelectionPrefs::ESelectFromExisting )
             {
             S60MCPRLOGSTRING1("S60MCPR<%x>::TSelectNextLayer::DoL() Attach ",(TInt*)&iContext.Node())
-            TCFSelector::TSimpleSelect msg( node.SelectionPrefs() );
+            TCFSelector::TSimpleSelect msg( newPrefs );
             iContext.iNodeActivity->PostRequestTo( ac.iTierManager, msg );
             }
         // Start
@@ -312,8 +315,6 @@
             ippprefs.SetNetId( node.PolicyPrefs().NetId() );
             //node.MapPolicyPrefsToConnPrefL( node.PolicyPrefs(), tmppref );
             // don't use reference we want to preserve the original TSelectionPrefs.
-            TSelectionPrefs newPrefs;
-            newPrefs = node.SelectionPrefs();
             newPrefs.SetPrefs( ippprefs );
             TCFSelector::TSimpleSelect msg(newPrefs);
             iContext.iNodeActivity->PostRequestTo(ac.iTierManager, msg);
@@ -349,16 +350,7 @@
         CleanupStack::PushL( cb );
 
         // Resolve application uid.
-        TSubSessionUniqueId subSessionUniqueId = node.SelectionPrefs().SubSessionUniqueId();
-
-		if ( !node.ConnPrefList().Count() )
-			{
-            subSessionUniqueId = node.SelectionPrefs().SubSessionUniqueId();
-            }
-        else
-            {
-            subSessionUniqueId = node.SubSessionUniqueId();
-            }
+        TSubSessionUniqueId subSessionUniqueId = node.SubSessionUniqueId();
 
         TSecureId secureId( 0 );
         
--- a/bearermanagement/S60MCPR/src/s60tiermanagerselector.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/bearermanagement/S60MCPR/src/s60tiermanagerselector.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -97,6 +97,8 @@
     //Legacy Attach -case handling is in NetMCPR and IPProtoTM
     // 399 Attach is not supported
     const TConnPref& prefs = iSelectionPrefs.Prefs();
+    iSubSessionUniqueId = iSelectionPrefs.SubSessionUniqueId();
+    
     switch ( prefs.ExtensionId() )
         {
         case TConnPref::EConnPrefCommDbMulti:
@@ -164,6 +166,7 @@
     
     // Provision selection preferences to S60 NetMCPR.
     prov->SetSelectionPrefs( iSelectionPrefs );
+    prov->SetSubSessionUniqueId( iSubSessionUniqueId );
 
     // Change the provider info so that this provider is never found by other selections
     const TProviderInfo& pi = provider->ProviderInfo();
--- a/bearermanagement/mpm/group/mpmserver.mmp	Mon Mar 08 21:43:55 2010 +0000
+++ b/bearermanagement/mpm/group/mpmserver.mmp	Sun Mar 14 13:11:26 2010 +0000
@@ -55,6 +55,7 @@
 SOURCE            mpmcsidwatcher.cpp
 SOURCE            mpmdialogbase.cpp
 SOURCE            mpmwlanavailability.cpp
+SOURCE            mpmdatausagewatcher.cpp
 
 USERINCLUDE       ../inc
 
--- a/bearermanagement/mpm/inc/mpmconnmonevents.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/bearermanagement/mpm/inc/mpmconnmonevents.h	Sun Mar 14 13:11:26 2010 +0000
@@ -32,7 +32,7 @@
 #include <commsdat.h>
 #include <commsdat_partner.h>
 #endif
-#include <NIFVAR.H>
+#include <nifvar.h>
 #include "mpmserver.h"
 
 // FORWARD DECLARATIONS
--- a/bearermanagement/mpm/inc/mpmcsidwatcher.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/bearermanagement/mpm/inc/mpmcsidwatcher.h	Sun Mar 14 13:11:26 2010 +0000
@@ -18,6 +18,9 @@
 #ifndef MPMCSIDWATCHER_H
 #define MPMCSIDWATCHER_H
 
+//  INCLUDES
+#include <e32base.h>
+
 class CRepository;
 
 /**
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bearermanagement/mpm/inc/mpmdatausagewatcher.h	Sun Mar 14 13:11:26 2010 +0000
@@ -0,0 +1,100 @@
+/*
+* Copyright (c) 2008-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: Listen cellular data usage key changes in central repository.
+*
+*/
+
+#ifndef MPMDATAUSAGEWATCHER_H
+#define MPMDATAUSAGEWATCHER_H
+
+//  INCLUDES
+#include <e32base.h>
+
+class CRepository;
+class CMPMServer;
+
+/**
+ *  Class for accessing central repository.
+ *  Follows KCurrentCellularDataUsage key in central repository.
+ *  @since 5.2
+ */
+class CMpmDataUsageWatcher : public CActive
+    {
+
+public:
+
+    /**
+    * New for calling the two-phased constructor.
+    */
+    static CMpmDataUsageWatcher* NewL( CMPMServer* aServer );
+
+    /**
+    * Destructor.
+    */
+    virtual ~CMpmDataUsageWatcher();
+
+    /**
+     * Start to listen for events.
+     */
+    void StartL();
+    
+    /**
+    * Active object's RunL.
+    */
+    void RunL();
+
+    /**
+    * Active object's RunError.
+    */
+    TInt RunError( TInt aError );
+
+    /**
+    * Active object's DoCancel.
+    */
+    void DoCancel();
+
+private:
+
+    /**
+    * C++ default constructor.
+    */
+    CMpmDataUsageWatcher( CMPMServer* aServer );
+
+    /**
+    * Symbian 2nd phase constructor.
+    */
+    void ConstructL();
+
+private: // data
+
+    /**
+     * Central repository handle.
+     * Own.
+     */
+    CRepository* iRepository;
+
+    /**
+     * Data usage value.
+     */
+    TInt iCellularDataUsage;     // type: TCmCellularDataUsage
+
+    /**
+     * Pointer to the MPM Server object.
+     * Not own.
+     */
+    CMPMServer* iServer;
+
+    };
+
+#endif // MPMDATAUSAGEWATCHER_H
--- a/bearermanagement/mpm/inc/mpmroamingwatcher.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/bearermanagement/mpm/inc/mpmroamingwatcher.h	Sun Mar 14 13:11:26 2010 +0000
@@ -77,11 +77,6 @@
         */
         TMPMRoamingStatus RoamingStatus() const;
         
-        TBool AskCellularDataUsageAbroad() const;
-        
-        void SetAskCellularDataUsageAbroad(TBool aAskUsage);
-        
-        
     protected: // Constructors and destructor
         	    
 	    /**
@@ -148,14 +143,6 @@
         * Current country
         */
         RMobilePhone::TMobilePhoneNetworkCountryCode iCurrentCountryCode;
-        
-        /**
-         * This variable indicates wheather cellular data usage abroad must be confirmed from the user
-         * This variable is set to TRUE when roaming to visitor network happens and it is set to FALSE when
-         * Confirm Dialog is presented first time in current foreign country. It is also set to FALSE every
-         * time when mobile comes back to home network or moves to other foreign country
-         */
-        TBool iAskCellularDataUsageAbroad;
 	};
 
 #endif // MPMROAMINGWATCHER_H
--- a/bearermanagement/mpm/inc/mpmserver.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/bearermanagement/mpm/inc/mpmserver.h	Sun Mar 14 13:11:26 2010 +0000
@@ -37,6 +37,7 @@
 
 class CMPMCommsDatAccess;
 class CMpmCsIdWatcher;
+class CMpmDataUsageWatcher;
 
 // CONSTANTS
 _LIT( KMPMPanicCategory, "Mobility Policy Manager Server" );
@@ -834,6 +835,12 @@
         */
         CMPMServerSession* GetServerSession( TConnectionId aConnId ) const;
         
+        /**
+        * Stops cellular connections, except MMS
+        * @since 5.2
+        */
+        void StopCellularConns();
+
     private:
 
         /**
@@ -938,6 +945,11 @@
          */
         CMpmCsIdWatcher* iMpmCsIdWatcher;
 
+        /**
+         * Handle to another central repository watcher
+         */
+        CMpmDataUsageWatcher* iMpmDataUsageWatcher;
+
         // Iap id of the active connection
         TUint32 iActiveIapId;
         
--- a/bearermanagement/mpm/src/mpmconfirmdlgstarting.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/bearermanagement/mpm/src/mpmconfirmdlgstarting.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -266,13 +266,6 @@
             TRAP_IGNORE(iServer.CommsDatAccess()->WriteGenConnSettingsL( genConnSettings )); 
             }
         } 
-    else
-        {
-        //In foreign country connect automatically is not stored in commsdat
-        //even user selected so. We just do not ask confirmation for the cellular
-        //connection again in this country:
-        iServer.RoamingWatcher()->SetAskCellularDataUsageAbroad( false );            
-        }
     
     TBool wlanNeeded( EFalse );
     TRAPD( err, wlanNeeded = iIapSelection.StartWlanQueryIfNeededL( iIAP ) )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bearermanagement/mpm/src/mpmdatausagewatcher.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -0,0 +1,149 @@
+/*
+ * Copyright (c) 2008-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: Listen cellular data usage key changes in central repository.
+ *
+ */
+
+#include <e32base.h>
+#include <centralrepository.h>
+#include <cmmanagerkeys.h>
+#include <cmgenconnsettings.h>
+
+#include "mpmlogger.h"
+#include "mpmserver.h"
+#include "mpmdatausagewatcher.h"
+
+// ---------------------------------------------------------------------------
+// Default C++ constructor.
+// ---------------------------------------------------------------------------
+//
+CMpmDataUsageWatcher::CMpmDataUsageWatcher( CMPMServer* aServer ) :
+    CActive( EPriorityStandard ), iServer( aServer )
+    {
+    MPMLOGSTRING( "CMpmDataUsageWatcher::CMpmDataUsageWatcher" )
+
+    CActiveScheduler::Add( this );
+    }
+
+// ---------------------------------------------------------------------------
+// Symbian 2nd phase constructor. Creates a central repository object.
+// ---------------------------------------------------------------------------
+//
+void CMpmDataUsageWatcher::ConstructL()
+    {
+    MPMLOGSTRING( "CMpmDataUsageWatcher::ConstructL" )
+
+    iRepository = CRepository::NewL( KCRUidCmManager );
+    }
+
+// ---------------------------------------------------------------------------
+// Creates a new object by calling the two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CMpmDataUsageWatcher* CMpmDataUsageWatcher::NewL( CMPMServer* aServer )
+    {
+    MPMLOGSTRING( "CMpmDataUsageWatcher::NewL" )
+
+    CMpmDataUsageWatcher* self = new( ELeave ) CMpmDataUsageWatcher( aServer );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CMpmDataUsageWatcher::~CMpmDataUsageWatcher()
+    {
+    MPMLOGSTRING( "CMpmDataUsageWatcher::~CMpmDataUsageWatcher" )
+
+    Cancel();
+    delete iRepository;
+    }
+
+// ---------------------------------------------------------------------------
+// Order notification from changes.
+// ---------------------------------------------------------------------------
+//
+void CMpmDataUsageWatcher::StartL()
+    {
+    MPMLOGSTRING( "CMpmDataUsageWatcher::StartL" )
+
+    // Request notification
+    User::LeaveIfError( iRepository->NotifyRequest( KCurrentCellularDataUsage,
+            iStatus ) );
+    SetActive();
+
+    // Get value from central repository
+    User::LeaveIfError( iRepository->Get( KCurrentCellularDataUsage,
+            iCellularDataUsage ) );
+    }
+
+// ---------------------------------------------------------------------------
+// From class CActive.
+// Event is received when there is a change in central repository key.
+// ---------------------------------------------------------------------------
+//
+void CMpmDataUsageWatcher::RunL()
+    {
+    MPMLOGSTRING( "CMpmDataUsageWatcher::RunL" )
+
+    User::LeaveIfError( iStatus.Int() );
+
+    // Request new notification
+    User::LeaveIfError( iRepository->NotifyRequest( KCurrentCellularDataUsage,
+            iStatus ) );
+    SetActive();
+
+    TInt oldCellularDataUsage = iCellularDataUsage;
+
+    // Get the new value from central repository
+    User::LeaveIfError( iRepository->Get( KCurrentCellularDataUsage,
+            iCellularDataUsage ) );
+
+    // Stop cellular connections if the setting changes into Disabled
+    if (oldCellularDataUsage != ECmCellularDataUsageDisabled &&
+            iCellularDataUsage == ECmCellularDataUsageDisabled)
+        {
+        // TODO: Uncomment this when trying to get stopping working.
+        // iServer->StopCellularConns();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// From class CActive.
+// Nothing to do over here.
+// ---------------------------------------------------------------------------
+//
+TInt CMpmDataUsageWatcher::RunError( TInt /*aError*/ )
+    {
+    MPMLOGSTRING( "CMpmDataUsageWatcher::RunError" )
+
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+// From class CActive.
+// Cancel outstanding request.
+// ---------------------------------------------------------------------------
+//
+void CMpmDataUsageWatcher::DoCancel()
+    {
+    MPMLOGSTRING( "CMpmDataUsageWatcher::DoCancel" )
+
+    iRepository->NotifyCancel( KCurrentCellularDataUsage );
+    }
+
--- a/bearermanagement/mpm/src/mpmiapselection.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/bearermanagement/mpm/src/mpmiapselection.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -117,12 +117,6 @@
     
     iChooseIapPref = aChooseIapPref;
 
-    // Update iNewWlansAllowed information.
-    // No need to filter away cellular iaps here based on UI's Allow Cellular Usage
-    // setting, since ConnMon checks the setting and reports only correct IAPs
-    // available for MPM.
-    iSession->IsWlanOnlyL( iNewWlansAllowed );
-
     // Always use stored connection info.
     // If stored information doesn't exist, a normal sequence is used.
     TUint32 snap( 0 );
@@ -148,6 +142,9 @@
     MPMLOGSTRING2( "CMPMIapSelection::ChooseIapL: IapID: %i",
             iChooseIapPref.IapId() )
     
+    // Update WLAN only information and whether new WLAN network usage is allowed.
+    TBool wlanOnly = iSession->IsWlanOnlyL( iNewWlansAllowed );
+    
     // Check if direct IAP connection is tried to make
     if ( iChooseIapPref.IapId() != 0 )
         { 
@@ -156,11 +153,10 @@
 
         // Complete selection with error code if wlan only was set and cellular IAP other 
         // than MMS IAP was tried to access  
-        if ( ( iChooseIapPref.BearerSet() ==
-               TExtendedConnPref::EExtendedConnBearerWLAN ) && 
+        if ( wlanOnly && 
                 ( bearerType == EMPMBearerTypePacketData ) && 
                 ( iSession->IsMMSIap( iChooseIapPref.IapId() ) == EFalse ) ) 
-            {
+            {            
             ChooseIapComplete( KErrPermissionDenied, NULL );
             return;
             }
@@ -367,8 +363,7 @@
                 {
                 // Check if we are roaming and cellular data usage query has not yet been presented
                 // to the user in this country
-                if ( iSession->MyServer().RoamingWatcher()->RoamingStatus() == EMPMInternationalRoaming
-                    && iSession->MyServer().RoamingWatcher()->AskCellularDataUsageAbroad() == true )
+                if ( iSession->MyServer().RoamingWatcher()->RoamingStatus() == EMPMInternationalRoaming )
                     {
                     // Check whether queries are enabled
                     if ( !( iChooseIapPref.NoteBehaviour() & TExtendedConnPref::ENoteBehaviourConnDisableQueries ) )
@@ -543,34 +538,17 @@
                 {
                 if ( iSession->MyServer().RoamingWatcher()->RoamingStatus() == EMPMInternationalRoaming )
                     {
-                    // Check if cellular data usage query has already been presented to the user in this country
-                    if ( iSession->MyServer().RoamingWatcher()->AskCellularDataUsageAbroad() == true )
-                        {
-                        // International roaming
-                        iConfirmDlgStarting = CMPMConfirmDlgStarting::NewL( 
-                                *this, 
-                                connId,
-                                snap, 
-                                validateIapId, 
-                                CMPMConfirmDlg::EConfirmDlgVisitorNetwork,
-                                iChooseIapPref,
-                                iSession->MyServer(),
-                                *iSession,
-                                EExplicitConnection );
-                        }
-                    else
-                        {
-                        // If user has already been queried in this country just complete the IAP selection.
-    
-                        iSession->MyServer().AppendBMConnection( connId, 
-                                snap, 
-                                validateIapId, 
-                                EStarting,
-                                *iSession );
-    
-                        ChooseIapComplete( KErrNone, &iChooseIapPref );
-                        }
-    
+                    // International roaming
+                    iConfirmDlgStarting = CMPMConfirmDlgStarting::NewL( 
+                            *this, 
+                            connId,
+                            snap, 
+                            validateIapId, 
+                            CMPMConfirmDlg::EConfirmDlgVisitorNetwork,
+                            iChooseIapPref,
+                            iSession->MyServer(),
+                            *iSession,
+                            EExplicitConnection );    
                     }
                 else
                     {
@@ -753,17 +731,19 @@
         TBool connectionAlreadyActive =
             iSession->MyServer().CheckIfStarted( aPolicyPref->IapId() );
         CConnectionUiUtilities* connUiUtils = NULL;
-        TRAPD( popupError,
-               connUiUtils = CConnectionUiUtilities::NewL();
-               connUiUtils->ConnectingViaDiscreetPopup(
-                   aPolicyPref->IapId(),
-                   connectionAlreadyActive );
-               delete connUiUtils; );
-        if ( popupError && connUiUtils )
-            {
-            delete connUiUtils;
-            }
-        }
+        if ( !connectionAlreadyActive )
+        	{
+        	TRAPD( popupError,
+          	     connUiUtils = CConnectionUiUtilities::NewL();
+            	   connUiUtils->ConnectingViaDiscreetPopup(
+              	     aPolicyPref->IapId());
+               	delete connUiUtils; );
+        	if ( popupError && connUiUtils )
+          	  {
+            	delete connUiUtils;
+            	}
+        	}
+       }
     
     if( iWlanDialog )
         {
@@ -951,8 +931,7 @@
             {
             // Check if we are roaming and cellular data usage query has not yet been presented
             // to the user in this country
-            if ( iSession->MyServer().RoamingWatcher()->RoamingStatus() == EMPMInternationalRoaming
-                && iSession->MyServer().RoamingWatcher()->AskCellularDataUsageAbroad() == true )
+            if ( iSession->MyServer().RoamingWatcher()->RoamingStatus() == EMPMInternationalRoaming )
                 {
                 // Check whether queries are enabled
                 if ( !( iChooseIapPref.NoteBehaviour() & TExtendedConnPref::ENoteBehaviourConnDisableQueries ) )
--- a/bearermanagement/mpm/src/mpmroamingwatcher.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/bearermanagement/mpm/src/mpmroamingwatcher.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -58,8 +58,7 @@
       iMobilePhone( aMobilePhone ),
       iRegistrationStatus( RMobilePhone::ERegistrationUnknown ),
       iRoamingStatus( EMPMRoamingStatusUnknown ),
-      iCurrentCountryCode( 0 ),
-      iAskCellularDataUsageAbroad( true )
+      iCurrentCountryCode( 0 )
     {
     MPMLOGSTRING( "CMPMRoamingWatcher::CMPMRoamingWatcher" )
     CActiveScheduler::Add( this );
@@ -188,7 +187,6 @@
         case RMobilePhone::ERegisteredOnHomeNetwork:
             {
             roamingStatus = EMPMHomenetwork;
-            iAskCellularDataUsageAbroad = false;
             break;
             }
             
@@ -221,11 +219,6 @@
                     else
                         {
                         roamingStatus = EMPMInternationalRoaming;
-                        //
-                        if ( iCurrentCountryCode != countryCode )
-                            {
-                            iAskCellularDataUsageAbroad = ETrue;
-                            }                        
                         }
                     iCurrentCountryCode = countryCode; 
                     }                
@@ -256,20 +249,6 @@
     return iRoamingStatus;
     }
 
-
-TBool CMPMRoamingWatcher::AskCellularDataUsageAbroad() const
-    {
-    MPMLOGSTRING2( "CMPMRoamingWatcher::AskCellularDataUsageAbroad iAskCellularDataUsageAbroad: %d", iAskCellularDataUsageAbroad )
-    return iAskCellularDataUsageAbroad;
-    }
-
-void CMPMRoamingWatcher::SetAskCellularDataUsageAbroad(TBool aAskUsage)
-    {
-    iAskCellularDataUsageAbroad = aAskUsage;
-    MPMLOGSTRING2( "CMPMRoamingWatcher::SetAskCellularDataUsageAbroad iAskCellularDataUsageAbroad: %d", iAskCellularDataUsageAbroad )
-    }
-
-
 // ========================== OTHER EXPORTED FUNCTIONS =========================
 // None.
 
--- a/bearermanagement/mpm/src/mpmserver.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/bearermanagement/mpm/src/mpmserver.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -41,6 +41,8 @@
 #include "mpmdialog.h"
 #include "mpmprivatecrkeys.h"
 #include "mpmcsidwatcher.h"
+#include "mpmdatausagewatcher.h"
+#include "mpmpropertydef.h"
 
 // ============================= LOCAL FUNCTIONS ===============================
 
@@ -170,6 +172,20 @@
     iMpmCsIdWatcher = CMpmCsIdWatcher::NewL();
     iMpmCsIdWatcher->StartL();
 
+    // Create another central repository watcher and start it
+    // TODO: Trapped, because currently it may fatally leave in HW.
+    // (Possibly because of the capability updates of data usage watcher's CR-keys.)
+    TRAPD( duwErr, iMpmDataUsageWatcher = CMpmDataUsageWatcher::NewL( this ) );
+    if (duwErr == KErrNone)
+        {
+        iMpmDataUsageWatcher->StartL();
+        }
+    else
+        {
+        iMpmDataUsageWatcher = NULL;
+        MPMLOGSTRING( "CMPMServer::ConstructL: CMpmDataUsageWatcher::NewL() failed!" )
+        }
+
     // Define P&S keys (snap & iap) for the user connection
     TInt ret = RProperty::Define( KMPMUserConnectionCategory,
                                   KMPMPSKeyUserConnectionSnap,
@@ -326,6 +342,8 @@
     
     delete iMpmCsIdWatcher;    
     
+    delete iMpmDataUsageWatcher;    
+    
     iDedicatedClients.Close();
 
     delete iCommsDatAccess;    
@@ -1784,7 +1802,7 @@
     RAvailableIAPList iapList;
     CleanupClosePushL( iapList );
 
-    for ( TInt index = 0; index < aIapInfo.iCount; index++ )
+    for ( TUint index = 0; index < aIapInfo.iCount; index++ )
         {
         if ( CommsDatAccess()->CheckWlanL( aIapInfo.iIap[index].iIapId ) != ENotWlanIap )
             {
@@ -1847,7 +1865,7 @@
     RArray<TUint32> packetDataIapIds;
     CleanupClosePushL( packetDataIapIds );
 
-    for ( TInt index = 0; index < aIapInfo.iCount; index++ )
+    for ( TUint index = 0; index < aIapInfo.iCount; index++ )
         {
         if ( CommsDatAccess()->GetBearerTypeL( aIapInfo.iIap[index].iIapId ) ==
             EMPMBearerTypePacketData )
@@ -1876,7 +1894,7 @@
             {
             // Check if used WLAN is still available
             TBool currentWlanIapAvailable = EFalse;
-            for ( TInt iapIndex = 0; iapIndex < aIapInfo.iCount; iapIndex++ )
+            for ( TUint iapIndex = 0; iapIndex < aIapInfo.iCount; iapIndex++ )
                 {
                 if ( aIapInfo.iIap[iapIndex].iIapId ==
                     iActiveBMConns[index].iConnInfo.iIapId )
@@ -2063,6 +2081,49 @@
     return serverSession;
     }
 
+// ---------------------------------------------------------------------------
+// CMPMServer::StopCellularConns
+// Stop all cellular connections except MMS
+// ---------------------------------------------------------------------------
+//
+void CMPMServer::StopCellularConns()
+    {
+    MPMLOGSTRING( "CMPMServer::StopCellularConns" )
+
+    TUint32 iapId;
+	TMPMBearerType bearerType = EMPMBearerTypeNone;
+
+	// No cleanup stack used cause this function doesn't leave.
+    RArray<TUint32> stoppedIaps;
+
+    // Check through active connections
+    for (TInt i = 0; i < iActiveBMConns.Count(); i++)
+        {
+        iapId = iActiveBMConns[i].iConnInfo.iIapId;
+
+        // Don't stop the same IAP twice.
+        if (stoppedIaps.Find( iapId ) == KErrNotFound)
+            {
+            TRAPD( err, bearerType = CommsDatAccess()->GetBearerTypeL( iapId ) );
+            if (err == KErrNone &&
+                    iapId != 0 &&
+                    bearerType == EMPMBearerTypePacketData)
+                {
+                TInt mmsIap( 0 );
+                err = RProperty::Get( KMPMCathegory, KMPMPropertyKeyMMS, mmsIap );
+                // Check that it's not MMS IAP.
+                if (!(err == KErrNone && iapId == mmsIap))
+                    {
+                    // Stop the conn / IAP.
+                    StopConnections( iapId );
+                    stoppedIaps.Append( iapId );
+                    }
+                }
+            }
+        }
+    stoppedIaps.Close();
+    }
+
 // -----------------------------------------------------------------------------
 // TMPMBlackListConnId::Append
 // -----------------------------------------------------------------------------
--- a/bearermanagement/mpm/src/mpmserversession.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/bearermanagement/mpm/src/mpmserversession.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -933,22 +933,13 @@
                 {
                 if ( MyServer().RoamingWatcher()->RoamingStatus() == EMPMInternationalRoaming )
                     {
-                    //Check if cellular data usage query has already been presented to the user in this country
-                    if ( MyServer().RoamingWatcher()->AskCellularDataUsageAbroad() == true )
-                        {
-                        //International roaming
-                        iConfirmDlgRoaming = CMPMConfirmDlgRoaming::NewL( 
-                                *this, 
-                                snapId, 
-                                iMigrateIap, 
-                                CMPMConfirmDlg::EConfirmDlgVisitorNetwork, 
-                                reconnect );
-                        }
-                    else
-                        {
-                        //Handle like user would have answered "Connect this time" to dialog
-                        RoamingConfirmationCompletedL( KErrNone, EMsgQueryThisTime, reconnect );
-                        }
+                    //International roaming
+                    iConfirmDlgRoaming = CMPMConfirmDlgRoaming::NewL( 
+                            *this, 
+                            snapId, 
+                            iMigrateIap, 
+                            CMPMConfirmDlg::EConfirmDlgVisitorNetwork, 
+                            reconnect );
                     }
                 else
                     {
@@ -1105,13 +1096,6 @@
                     TRAP_IGNORE(MyServer().CommsDatAccess()->WriteGenConnSettingsL( genConnSettings )); 
                     }
                 } 
-            else
-                {
-                //In foreign country connect automatically is not stored in commsdat
-                //even user selected so. We just do not ask confirmation for the cellular
-                //connection again in this country:
-                MyServer().RoamingWatcher()->SetAskCellularDataUsageAbroad( false );            
-                }
             }
         
         //user selected connect this time
@@ -2841,15 +2825,17 @@
         {
         TBool connectionAlreadyActive = iMyServer.CheckIfStarted( aIapId );
         CConnectionUiUtilities* connUiUtils = NULL;
-        TRAPD( popupError,
-               connUiUtils = CConnectionUiUtilities::NewL();
-               connUiUtils->ConnectingViaDiscreetPopup(
-                   aIapId,
-                   connectionAlreadyActive );
-               delete connUiUtils; );
-        if ( popupError && connUiUtils )
+        if (!connectionAlreadyActive )
             {
-            delete connUiUtils;
+            TRAPD( popupError,
+                   connUiUtils = CConnectionUiUtilities::NewL();
+                   connUiUtils->ConnectingViaDiscreetPopup(
+                   			        aIapId );
+                   delete connUiUtils; );
+            if ( popupError && connUiUtils )
+                {
+                delete connUiUtils;
+                }
             }
         }
 
--- a/cmmanager/cmmgr/Framework/Inc/cmdlg.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/cmmanager/cmmgr/Framework/Inc/cmdlg.h	Sun Mar 14 13:11:26 2010 +0000
@@ -187,6 +187,11 @@
         
         virtual void ConstructCMArrayL( RArray<TUint32>& aCmIds );
 
+        /**
+         * Remove hidden Connection Methods from the Array
+         */
+        virtual void ClearHiddenCMsFromArrayL( RArray<TUint32>& aCmIds );
+                
     public:
         /**
          * From base class MCmdExec
@@ -214,11 +219,7 @@
          * Reorder connection methods according to underlying connection in case of vpn
          */
         void ReOrderCMsL();
-        
-        /**
-         * Remove hidden Connection Methods from the Array
-         */
-        void ClearHiddenCMsFromArrayL( RArray<TUint32>& aCmIds );
+               
         
         /**
          * Get a proper index in list for priority
--- a/cmmanager/cmmgr/Framework/Inc/uncatdlg.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/cmmanager/cmmgr/Framework/Inc/uncatdlg.h	Sun Mar 14 13:11:26 2010 +0000
@@ -69,6 +69,11 @@
         */
         void ConstructCMArrayL( RArray<TUint32>& aCmIds );
         
+        /**
+        * Remove hidden Connection Methods from the Array
+        */
+        void ClearHiddenCMsFromArrayL( RArray<TUint32>& aCmIds );
+        
     public: // From MCmCommsDatWatcher
         
         /**
@@ -122,4 +127,4 @@
 
 #endif
 
-// End of File
\ No newline at end of file
+// End of File
--- a/cmmanager/cmmgr/Framework/Src/uncatdlg.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/cmmanager/cmmgr/Framework/Src/uncatdlg.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -389,6 +389,36 @@
     }
 
 // --------------------------------------------------------------------------
+// CCmDlg::ClearHiddenCMsFromArrayL
+// --------------------------------------------------------------------------
+//
+void CUncatDlg::ClearHiddenCMsFromArrayL( RArray<TUint32>& aCmIds )
+    {
+    TBool hidden( EFalse );
+    TInt err( KErrNone );
+    for ( TInt index = 0; index < aCmIds.Count(); index++ )
+        {
+        TUint recId = aCmIds[index];
+        TRAP( err, hidden = iCmManager->GetConnectionMethodInfoBoolL( recId, ECmHidden ) );
+        if ( err || hidden )
+            {
+            aCmIds.Remove( index );
+            index--;
+            // Remove the same item from iCmUncatItems array
+            for( TInt i = 0; i < iCmUncatItems.Count(); i++ )
+                {
+                if( iCmUncatItems[i].iCmId == recId )
+                    {
+                    iCmUncatItems.Remove( i );
+                    break;
+                    }
+                }
+            }
+        }
+    }
+
+
+// --------------------------------------------------------------------------
 // CUncatDlg::CleanupUncatArray
 // --------------------------------------------------------------------------
 //
--- a/cmmanager/cmmgr/Framework/SrcData/cmmanager.rss	Mon Mar 08 21:43:55 2010 +0000
+++ b/cmmanager/cmmgr/Framework/SrcData/cmmanager.rss	Sun Mar 14 13:11:26 2010 +0000
@@ -565,6 +565,7 @@
             {
             type = KDestListboxType;
             id = KDestListboxId;
+            itemflags = EEikDlgItemTakesEnterKey;
             control= LISTBOX { flags = EAknListBoxSelectionList;};
             }
         };
@@ -715,6 +716,7 @@
             {
             type = KCmListboxType;
             id = KCmListboxId;
+            itemflags = EEikDlgItemTakesEnterKey;
             control= LISTBOX { flags = EAknListBoxSelectionList;};
             }
         };
Binary file cmmanager/cmmgr/Framework/conf/cmmanager_10207376.crml has changed
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/src/cmpluginvpn.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/cmmanager/cmmgr/Plugins/cmpluginvpn/src/cmpluginvpn.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -31,7 +31,7 @@
 #include <cmpluginwlandef.h>
 // #include <vpnapi.h>
 #include <centralrepository.h>
-#include <SettingsInternalCRKeys.h>
+#include <settingsinternalcrkeys.h>
 #include <featmgr.h>
 #include <ConeResLoader.h>
 #include <bautils.h>
--- a/cmmanager/cmmgr/database/src/cmmanagertableformats.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/cmmanager/cmmgr/database/src/cmmanagertableformats.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -133,7 +133,10 @@
                         | KCDTIdCellularDataUsageHome ),
       iCellularDataUsageVisitor( ( aElementId & KCDMaskShowRecordType ) 
                         | KCDTIdCellularDataUsageVisitor )
-    {};  	
+    {
+    iCellularDataUsageHome.SetAttributes(ECDProtectedWrite);
+    iCellularDataUsageVisitor.SetAttributes(ECDProtectedWrite);
+    };  	
 
 EXPORT_C TMDBElementId 
     CCDDefConnRecord::TableIdL( CMDBSession& aSession )
--- a/cmmanager/gsconnsettingsplugin/data/gsconnsettingspluginrsc.rss	Mon Mar 08 21:43:55 2010 +0000
+++ b/cmmanager/gsconnsettingsplugin/data/gsconnsettingspluginrsc.rss	Sun Mar 14 13:11:26 2010 +0000
@@ -323,22 +323,6 @@
 
 //----------------------------------------------------
 //    
-// r_usage_of_new_wlan_setting_page
-// Resource for "Join new WLAN networks" setting page.
-//
-//----------------------------------------------------
-//
-RESOURCE AVKON_SETTING_PAGE r_usage_of_wlan_setting_page
-    {
-    number = EAknSettingPageNoOrdinalDisplayed; 
-    label = qtn_occ_sett_usage_of_wlan;
-    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-    type = EAknSetListBox;
-    editor_resource_id = r_setting_listbox;
-    }
-
-//----------------------------------------------------
-//    
 // r_usage_of_new_wlan_setting_page_lbx
 // Resource for "Join new WLAN networks" listbox items
 //
@@ -419,6 +403,10 @@
         LBUF
             {
             txt = qtn_occ_sett_data_usage_abroad_confirm;
+            },
+        LBUF
+            {
+            txt = qtn_occ_sett_data_usage_abroad_disabled;
             }
         };
     }
@@ -483,6 +471,10 @@
         LBUF
             {
             txt = qtn_occ_sett_data_usage_home_nw_confirm;
+            },
+        LBUF
+            {
+            txt = qtn_occ_sett_data_usage_home_nw_disabled;
             }
         };
     }
@@ -520,20 +512,4 @@
 //
 RESOURCE TBUF r_gs_conn_settings_rsk_label_exit { buf = text_softkey_exit; }
 
-
-RESOURCE ARRAY r_usage_of_wlan_info_popup_texts
-    {
-    items =
-        {
-        LBUF
-            {
-            txt = qtn_occ_info_popup_wlan_usage_known;
-            },
-        LBUF
-            {
-            txt = qtn_occ_info_popup_wlan_usage_manual;
-            }
-        };
-    }
-
 // End of file
--- a/cmmanager/gsconnsettingsplugin/inc/gsconnsettingsplugin.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/cmmanager/gsconnsettingsplugin/inc/gsconnsettingsplugin.h	Sun Mar 14 13:11:26 2010 +0000
@@ -20,8 +20,8 @@
 #define GSCONNSETTINGSPLUGIN_H
 
 // Includes
-#include <GSPluginLoader.h>
-#include <GSBaseView.h>
+#include <gspluginloader.h>
+#include <gsbaseview.h>
 #include "gsconnsettingsmskobserver.h"
 
 #include <aknview.h>
--- a/cmmanager/gsconnsettingsplugin/inc/gsconnsettingsplugin.hrh	Mon Mar 08 21:43:55 2010 +0000
+++ b/cmmanager/gsconnsettingsplugin/inc/gsconnsettingsplugin.hrh	Sun Mar 14 13:11:26 2010 +0000
@@ -50,7 +50,8 @@
 enum {
     EDataUsageAbroadAutomatic = 0,
     EDataUsageAbroadConfirm = 1,
-    EDataUsageAbroadWlanOnly = 2
+    EDataUsageAbroadWlanOnly = 2,
+    EDataUsageAbroadDisabled = 3
     };
 
 //Indexes for data usage in home NW values
@@ -59,7 +60,8 @@
 enum {
     EDataUsageHomeNwAutomatic = 0,
     EDataUsageHomeNwConfirm = 1,
-    EDataUsageHomeNwWlanOnly = 2
+    EDataUsageHomeNwWlanOnly = 2,
+    EDataUsageHomeNwDisabled = 3
     };
 
 #endif //  GSCONNECTIVITYSETTINGSPLUGIN_HRH
--- a/cmmanager/gsconnsettingsplugin/inc/gsconnsettingsplugincontainer.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/cmmanager/gsconnsettingsplugin/inc/gsconnsettingsplugincontainer.h	Sun Mar 14 13:11:26 2010 +0000
@@ -21,7 +21,7 @@
 
 // INCLUDES
 #include "gsconnsettingspluginmodel.h"
-#include <GSBaseContainer.h>
+#include <gsbasecontainer.h>
 
 
 // CONSTANTS
--- a/cmmanager/gsconnsettingsplugin/inc/gsconnsettingspluginmodel.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/cmmanager/gsconnsettingsplugin/inc/gsconnsettingspluginmodel.h	Sun Mar 14 13:11:26 2010 +0000
@@ -130,6 +130,11 @@
         */
         TCmGenConnSettings iSettings;
         
+        /**
+         * Flag is set when wlan is supported
+         */
+        TBool iIsWlanSupported;
+        
     };
 
 #endif //GSCONNSETTINGSPLUGINMODEL_H
--- a/cmmanager/gsconnsettingsplugin/loc/gsconnsettingsplugin.loc	Mon Mar 08 21:43:55 2010 +0000
+++ b/cmmanager/gsconnsettingsplugin/loc/gsconnsettingsplugin.loc	Sun Mar 14 13:11:26 2010 +0000
@@ -82,6 +82,12 @@
 //r: 5.2
 #define qtn_occ_sett_data_usage_abroad_wlan_only "WLAN only"
 
+//d:Text in radio button list
+//l:list_set_graphic_pane_t1
+//w:
+//r: 5.2
+#define qtn_occ_sett_data_usage_abroad_disabled "Disabled"
+
 
 //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
@@ -108,6 +114,11 @@
 //r: 5.2
 #define qtn_occ_sett_data_usage_home_nw_wlan_only "WLAN only"
 
+//d:Text in radio button list
+//l:list_set_graphic_pane_t1
+//w:
+//r: 5.2
+#define qtn_occ_sett_data_usage_home_nw_disabled "Disabled"
 
 //d: Info popup note for "Known" selection of "Join WLAN networks"
 //l: popup_preview_text_window_t1/opt5
--- a/cmmanager/gsconnsettingsplugin/src/gsconnsettingsplugin.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/cmmanager/gsconnsettingsplugin/src/gsconnsettingsplugin.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -28,11 +28,11 @@
 #include <gsconnsettingsplugin.mbg>
 
 // Includes from GS framework:
-#include <GSCommon.hrh>
-#include <GSFWViewUIDs.h>
-#include <GSPrivatePluginProviderIds.h>
-#include <GSTabHelper.h>
-#include <GSMainView.h>
+#include <gscommon.hrh>
+#include <gsfwviewuids.h>
+#include <gsprivatepluginproviderids.h>
+#include <gstabhelper.h>
+#include <gsmainview.h>
 
 #include <hlplch.h> // For HlpLauncher
 #include <featmgr.h>
@@ -115,7 +115,7 @@
     FeatureManager::InitializeLibL();
     iIsWlanSupported = FeatureManager::FeatureSupported( KFeatureIdProtocolWlan );
     // Unload FeatureManager
-    FeatureManager::UnInitializeLib();  
+    FeatureManager::UnInitializeLib();
     
     OpenLocalizedResourceFileL( KGSConnSettingsPluginResourceFileName,
                                 iResourceLoader ); 
@@ -456,35 +456,12 @@
 //
 void CGSConnSettingsPlugin::ShowUsageOfWlanSettingPageL()
     {
-
-    CDesCArrayFlat* items = iCoeEnv->ReadDesC16ArrayResourceL(
-            R_USAGE_OF_WLAN_SETTING_PAGE_LBX );
-    CleanupStack::PushL( items );
-
-    TInt currentItem = iModel->UsageOfWlan();
-    TInt oldItem = currentItem;
-    
-    CGSConnSettingsSelectionDlg* dlg = CGSConnSettingsSelectionDlg::NewL(
-                                                R_USAGE_OF_WLAN_SETTING_PAGE,
-                                                currentItem,
-                                                items,
-                                                R_USAGE_OF_WLAN_INFO_POPUP_TEXTS );
-
-    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
-        {
-
-        if( currentItem != oldItem )
-            {
-            iModel->SetUsageOfWlan( currentItem );
-            UpdateListBoxL( EGSSettIdUsageOfWlan );
-            //Save current settings when the setting is changed
-            //If function leaves it is trapped and ignored as there is nothing that we can do about it
-            TRAP_IGNORE(iModel->SaveSettingsL());
-            }
-        }
-
-    CleanupStack::PopAndDestroy( items );
-
+    TBool currentItem = (TBool)iModel->UsageOfWlan();
+    iModel->SetUsageOfWlan( !currentItem );
+    UpdateListBoxL( EGSSettIdUsageOfWlan );
+    //Save current settings when the setting is changed
+    //If function leaves it is trapped and ignored as there is nothing that we can do about it
+    TRAP_IGNORE(iModel->SaveSettingsL());
     }
 
 // ---------------------------------------------------------------------------
@@ -511,6 +488,14 @@
     CleanupStack::PushL( items );
 
     TInt currentItem = iModel->DataUsageAbroad();
+    
+    // We may have to do in this way because EDataUsageAbroadDisabled is equal to 3
+    // and the actual index number should be 2 in this case
+    if( !iIsWlanSupported && currentItem == EDataUsageAbroadDisabled )
+        {
+        currentItem --;
+        }
+    
     TInt oldItem = currentItem;
 
     CAknSettingPage* dlg = new( ELeave ) CAknRadioButtonSettingPage(
@@ -555,6 +540,14 @@
     CleanupStack::PushL( items );
 
     TInt currentItem = iModel->DataUsageInHomeNw();
+    
+    // We may have to do in this way because EDataUsageAbroadDisabled is equal to 3
+    // and the actual index number should be 2 in this case
+    if( !iIsWlanSupported && currentItem == EDataUsageAbroadDisabled )
+        {
+        currentItem --;
+        }
+    
     TInt oldItem = currentItem;
 
     CAknSettingPage* dlg = new( ELeave ) CAknRadioButtonSettingPage(
--- a/cmmanager/gsconnsettingsplugin/src/gsconnsettingsplugincontainer.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/cmmanager/gsconnsettingsplugin/src/gsconnsettingsplugincontainer.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -26,8 +26,8 @@
 
 #include <aknlists.h>
 #include <csxhelp/cp.hlp.hrh>
-#include <GSFWViewUIDs.h>     // for KUidGS
-#include <GSListbox.h>
+#include <gsfwviewuids.h>     // for KUidGS
+#include <gslistbox.h>
 
 
 // EXTERNAL DATA STRUCTURES
@@ -143,7 +143,9 @@
         MGSConnSettingsMskObserver& aMskObserver )
         : iMskObserver( aMskObserver )
     {
+    FeatureManager::InitializeLibL();
     iIsWlanSupported = FeatureManager::FeatureSupported( KFeatureIdProtocolWlan );
+    FeatureManager::UnInitializeLib();
     }
 
 void CGSConnSettingsPluginContainer::SetPluginArray ( 
@@ -311,6 +313,13 @@
 {
     TInt currValue = iModel->DataUsageAbroad();
     
+    // We may have to do in this way because EDataUsageAbroadDisabled is equal to 3
+    // and the actual index number should be 2 in this case
+    if( !iIsWlanSupported && currValue == EDataUsageAbroadDisabled )
+        {
+        currValue --;
+        }
+    
     AppendListItemL( Index( EGSSettIdDataUsageAbroad ),
         iListItems->operator[]( Index( EGSSettIdDataUsageAbroad ) ),
         ( *iDataUsageAbroadItems )[currValue] );
@@ -326,6 +335,13 @@
 {
     TInt currValue = iModel->DataUsageInHomeNw();
     
+    // We may have to do in this way because EDataUsageAbroadDisabled is equal to 3
+    // and the actual index number should be 2 in this case
+    if( !iIsWlanSupported && currValue == EDataUsageAbroadDisabled )
+        {
+        currValue --;
+        }
+    
     AppendListItemL( Index( EGSSettIdDataUsageHomeNw ),
         iListItems->operator[]( Index( EGSSettIdDataUsageHomeNw ) ),
         ( *iDataUsageHomeNwItems )[currValue] );
--- a/cmmanager/gsconnsettingsplugin/src/gsconnsettingspluginmodel.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/cmmanager/gsconnsettingsplugin/src/gsconnsettingspluginmodel.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -18,6 +18,7 @@
 
 // INCLUDE FILES
 
+#include <featmgr.h>
 #include "gsconnsettingsplugincontainer.h"
 #include "gsconnsettingspluginmodel.h"
 #include "cmmanager.h"
@@ -87,6 +88,9 @@
 //
 void CGSConnSettingsPluginModel::ConstructL()
     {
+    FeatureManager::InitializeLibL();
+    iIsWlanSupported = FeatureManager::FeatureSupported( KFeatureIdProtocolWlan );
+    FeatureManager::UnInitializeLib();
     }
 
 
@@ -189,7 +193,14 @@
             break;
 
         case ECmCellularDataUsageDisabled:
-            mappedValue = EDataUsageAbroadWlanOnly; // Wlan only
+            if( iIsWlanSupported )
+                {
+                mappedValue = EDataUsageAbroadWlanOnly; // Wlan only
+                }
+            else
+                {
+                mappedValue = EDataUsageAbroadDisabled; // Disabled when nowlan
+                }
             break;
 
         default:
@@ -220,7 +231,14 @@
             break;
 
         case ECmCellularDataUsageDisabled:
-            mappedValue = EDataUsageHomeNwWlanOnly; // Wlan only
+            if( iIsWlanSupported )
+                {
+                mappedValue = EDataUsageHomeNwWlanOnly; // Wlan only
+                }
+            else
+                {
+                mappedValue = EDataUsageHomeNwDisabled; // Disabled when nowlan
+                }
             break;
 
         default:
@@ -271,6 +289,7 @@
             break;
 
         case EDataUsageAbroadWlanOnly: //Wlan only
+        case EDataUsageAbroadDisabled:
             iSettings.iCellularDataUsageVisitor = ECmCellularDataUsageDisabled;
             break;
                         
@@ -298,6 +317,7 @@
             break;
 
         case EDataUsageHomeNwWlanOnly: //Wlan only
+        case EDataUsageHomeNwDisabled:
             iSettings.iCellularDataUsageHome = ECmCellularDataUsageDisabled;
             break;
                         
--- a/cmmanager/gsconnsettingsplugin/traces/OstTraceDefinitions.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/cmmanager/gsconnsettingsplugin/traces/OstTraceDefinitions.h	Sun Mar 14 13:11:26 2010 +0000
@@ -1,4 +1,4 @@
 #ifndef __OSTTRACEDEFINITIONS_H__
 #define __OSTTRACEDEFINITIONS_H__
-#include <opensystemtrace.h>
+#include <OpenSystemTrace.h>
 #endif
--- a/connectionmonitoring/connectionmonitorplugin/inc/connectionmonitorplugin.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionmonitoring/connectionmonitorplugin/inc/connectionmonitorplugin.h	Sun Mar 14 13:11:26 2010 +0000
@@ -21,7 +21,7 @@
 // User includes
 
 // System includes
-#include <GSPluginInterface.h>
+#include <gsplugininterface.h>
 #include <aknview.h>
 #include <ConeResLoader.h>
 #include <eikclb.h>
--- a/connectionmonitoring/connectionmonitorplugin/src/connectionmonitorplugin.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionmonitoring/connectionmonitorplugin/src/connectionmonitorplugin.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -18,12 +18,12 @@
 
 // User includes
 #include    "connectionmonitorplugin.h"
-#include    <GSParentPlugin.h>
-#include    <GSCommon.hrh>
+#include    <gsparentplugin.h>
+#include    <gscommon.hrh>
 #include    <connectionmonitorpluginrsc.rsg> // GUI Resource
 #include    <connectionmonitorplugin.mbg>
-#include    <GSPrivatePluginProviderIds.h>
-#include    <GSFWViewUIDs.h>
+#include    <gsprivatepluginproviderids.h>
+#include    <gsfwviewuids.h>
 
 // System includes
 #include    <AknNullService.h>
--- a/connectionmonitoring/connectionmonitorui/inc/ConnectionMonitorUiView.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionmonitoring/connectionmonitorui/inc/ConnectionMonitorUiView.h	Sun Mar 14 13:11:26 2010 +0000
@@ -90,7 +90,13 @@
         * Observe the connection stat and set the right Soft Keys.
         */
         void ConnectionKeyObserver() const;
-        
+
+        /**
+        * Workaround for Avkon event sequence problem, occuring when
+        * connection list has been added elements.
+        */
+        void HandleItemAdditionL();
+
     protected: 
         /**
         * from MEikListBoxObserver    
--- a/connectionmonitoring/connectionmonitorui/src/ConnectionInfoBase.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionmonitoring/connectionmonitorui/src/ConnectionInfoBase.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -19,7 +19,7 @@
 
 // INCLUDE FILES
 #include <stdlib.h>
-#include <NIFVAR.H>
+#include <nifvar.h>
 #include <StringLoader.h>
 #include <ConnectionMonitorUi.rsg>
 #include <avkon.rsg>
--- a/connectionmonitoring/connectionmonitorui/src/ConnectionMonitorUiAppUi.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionmonitoring/connectionmonitorui/src/ConnectionMonitorUiAppUi.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -22,7 +22,7 @@
 #include <aknnotedialog.h>
 #include <AknUtils.h>
 #include <cmmanagerext.h>
-#include <NIFVAR.H>
+#include <nifvar.h>
 #include <ConnectionMonitorUi.rsg>
 #include "ConnectionMonitorUi.hrh"
 #include "ConnectionMonitorUiAppUi.h"
@@ -354,8 +354,10 @@
                     break;
                     }
                 }
-            
-            if ( newConn )
+
+            index = iConnectionArray->GetArrayIndex( connectionId );
+
+            if ( newConn || ( index < 0 ) )
                 {
                 if ( connectionId > 0)
                     {
@@ -385,6 +387,11 @@
                     CleanupStack::PushL( connectionInfo );
                     iConnectionArray->AppendL( connectionInfo );
                     CleanupStack::Pop( connectionInfo );
+
+                    // Avkon: This is needed due to events' timing issues:
+                    CConnectionMonitorUiView* view =
+                            ( CConnectionMonitorUiView* )iView;
+                    view->HandleItemAdditionL();
                     }
                 }
             
--- a/connectionmonitoring/connectionmonitorui/src/ConnectionMonitorUiView.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionmonitoring/connectionmonitorui/src/ConnectionMonitorUiView.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -416,6 +416,15 @@
         }
 	}
 
+// ---------------------------------------------------------
+// CConnectionMonitorUiView::HandleItemAdditionL
+// ---------------------------------------------------------
+//
+void CConnectionMonitorUiView::HandleItemAdditionL()
+    {
+    iContainer->ListBox()->HandleItemAdditionL();
+    }
+
     
 
 // End of File
--- a/connectionmonitoring/connmon/connectionmonitor/src/ConnMonIAP.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionmonitoring/connmon/connectionmonitor/src/ConnMonIAP.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -33,6 +33,7 @@
 #include "connmontelnoti.h"
 #include "ConnMonBearerNotifier.h"
 #include "log.h"
+#include "cellulardatausagekeyupdater.h"
 
 // ============================ MEMBER FUNCTIONS ===============================
 
@@ -2007,8 +2008,15 @@
             iNetwRegistrationNotifier = CNetwRegistrationNotifier::NewL( iServer, iMobilePhone );
             }
         if ( !iNetwRegistrationNotifier->IsActive() )
-            {
+            {            
             iNetwRegistrationNotifier->Receive(); // (re)start listening
+            
+            // We might have missed the network registration notification before 
+            // we started listening for notifications here. Update the 
+            // network registration information.            
+            TInt registration( ENetworkRegistrationExtNotAvailable );                
+            User::LeaveIfError( GetNetworkRegistration_v2( registration ) );
+            iServer->CellularDataUsageKeyUpdater()->UpdateKeyL( registration );            
             }
 
         // Bearer change (GPRS/Edge GPRS) status events
--- a/connectionmonitoring/connmon/connectionmonitor/src/cellulardatausagekeyupdater.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionmonitoring/connmon/connectionmonitor/src/cellulardatausagekeyupdater.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -29,7 +29,7 @@
 #include "cellulardatausagekeyupdater.h"
 #include "ConnMonServ.h"
 #include "ConnMonAvailabilityManager.h"
-#include "ConnMonIap.h"
+#include "ConnMonIAP.h"
 #include "ConnMonDef.h"
 #include "log.h"
 
@@ -86,12 +86,17 @@
                 
     TCmGenConnSettings occSettings = ReadGenConnSettingsL();
   
-    TInt value( occSettings.iCellularDataUsageHome );
+    TInt value( ECmCellularDataUsageDisabled );
         
     if ( aRegistration == ENetworkRegistrationExtRoamingInternational )
         {           
         value = occSettings.iCellularDataUsageVisitor;
         }
+    else if ( aRegistration == ENetworkRegistrationExtHomeNetwork || 
+              aRegistration == ENetworkRegistrationExtRoamingNational )
+        {           
+        value = occSettings.iCellularDataUsageHome;
+        }
 
     CRepository* cmRepository = NULL;
     
@@ -106,10 +111,12 @@
             {
             cmRepository->Set( KCurrentCellularDataUsage, value );
             LOGIT1("KCurrentCellularDataUsage set to %d", value)
-            
-            LOGIT("CCellularDataUsageKeyUpdater triggered HandleAvailabilityChange()")
-            iServer->AvailabilityManager()->HandleAvailabilityChange();
-            }    
+            }
+        else
+            {
+            LOGIT1("KCurrentCellularDataUsage already up-to-date %d", previous)
+            }
+        
         delete cmRepository;    
         }
     else
@@ -219,6 +226,9 @@
         iErrorCounter = 0;
         
         TRAPD( leaveCode, UpdateKeyL() )
+        
+        LOGIT("CCellularDataUsageKeyUpdater triggered HandleAvailabilityChange()")
+        iServer->AvailabilityManager()->HandleAvailabilityChange();
     
         if ( leaveCode )
             {
--- a/connectionmonitoring/connmon/dataconnectionlogger/src/saeobserver.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionmonitoring/connmon/dataconnectionlogger/src/saeobserver.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -15,7 +15,7 @@
 *
 */
 
-#include <NIFVAR.H>
+#include <nifvar.h>
 #include <e32svr.h>
 #include <PSVariables.h>
 
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/BWinsCw/ConnectionUiUtilities_PROTU.def	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/BWinsCw/ConnectionUiUtilities_PROTU.def	Sun Mar 14 13:11:26 2010 +0000
@@ -51,6 +51,6 @@
 	?EasyWapiDlg@CConnectionUiUtilities@@QAEHPAVTDes16@@@Z @ 50 NONAME ; int CConnectionUiUtilities::EasyWapiDlg(class TDes16 *)
 	?NoWLANNetworksAvailableNote@CConnectionUiUtilities@@QAEXXZ @ 51 NONAME ; void CConnectionUiUtilities::NoWLANNetworksAvailableNote(void)
 	?ConfirmMethodUsageQuery@CConnectionUiUtilities@@QAEXAAW4TMsgQueryLinkedResults@@HAAVTRequestStatus@@@Z @ 52 NONAME ; void CConnectionUiUtilities::ConfirmMethodUsageQuery(enum TMsgQueryLinkedResults &, int, class TRequestStatus &)
-	?ConnectingViaDiscreetPopup@CConnectionUiUtilities@@QAEXABKH@Z @ 53 NONAME ; void CConnectionUiUtilities::ConnectingViaDiscreetPopup(unsigned long const &, int)
+	?ConnectingViaDiscreetPopup@CConnectionUiUtilities@@QAEXABK@Z @ 53 NONAME ; void CConnectionUiUtilities::ConnectingViaDiscreetPopup(unsigned long const &)
 	?ConnectionErrorDiscreetPopup@CConnectionUiUtilities@@QAEXABH@Z @ 54 NONAME ; void CConnectionUiUtilities::ConnectionErrorDiscreetPopup(int const &)
 
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/EABI/ConnectionUiUtilities_PROTU.def	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/EABI/ConnectionUiUtilities_PROTU.def	Sun Mar 14 13:11:26 2010 +0000
@@ -52,7 +52,7 @@
 	_ZN22CConnectionUiUtilities27CancelWlanPowerSaveTestNoteEv @ 51 NONAME
 	_ZN22CConnectionUiUtilities11EasyWapiDlgEP6TDes16 @ 52 NONAME
 	_ZN22CConnectionUiUtilities23ConfirmMethodUsageQueryER22TMsgQueryLinkedResultsiR14TRequestStatus @ 53 NONAME
-	_ZN22CConnectionUiUtilities26ConnectingViaDiscreetPopupERKmi @ 54 NONAME
+	_ZN22CConnectionUiUtilities26ConnectingViaDiscreetPopupERKm @ 54 NONAME
 	_ZN22CConnectionUiUtilities27NoWLANNetworksAvailableNoteEv @ 55 NONAME
 	_ZN22CConnectionUiUtilities28ConnectionErrorDiscreetPopupERKi @ 56 NONAME
 
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/ConfirmationQuery.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/ConfirmationQuery.h	Sun Mar 14 13:11:26 2010 +0000
@@ -30,7 +30,7 @@
 // CLASS DECLARATIONS
 
 /**
- * Class implements a query dialog.
+ * Class implements a query dialog in home network.
  */
 NONSHARABLE_CLASS( CConfirmationQuery ) : public CAknListQueryDialog, public MExpiryTimerCallback
     {
@@ -105,6 +105,72 @@
     };
 
 
+/**
+ * Class implements a query dialog in visitor network.
+ */
+NONSHARABLE_CLASS( CConfirmationQueryVisitor ) : public CAknMessageQueryDialog, public MExpiryTimerCallback
+    {
+    public:
+        /**
+        * Constructor the CConfirmationQuery class
+        * @param aNotif notifier pointer
+        * @param aNameOfConnMethod 
+        * @param aUIId    
+        * @return -
+        */
+        CConfirmationQueryVisitor( CConfirmationQueryNotif* aNotif );
+
+        /**
+        * Exit function the CConfirmationQuery
+        * @param aButtonId 
+        * @return TBool exit or no
+        */
+        virtual TBool OkToExitL( TInt aButtonId );
+    
+        /**
+        * Dialog expiration timeout callback
+        */
+        void HandleTimedOut();
+        
+        /**
+        * Destructor
+        */
+        virtual ~CConfirmationQueryVisitor();     
+
+        /**
+        * Tries to exit the dialog when the specified button is pressed, if this 
+        * button should exit the dialog.
+        *
+        * See @c OkToExitL() to determine which buttons can exit the dialog.
+        * 
+        * This will fail if user exit is prevented by the 
+        * @c EEikDialogFlagNoUserExit flag. If the @c EEikDialogFlagNotifyEsc flag
+        * is not set and the dialog has been cancelled it immediately deletes 
+        * itself.
+        * 
+        * @param aButtonId The id of the pressed button.
+        */
+        void TryExitL( TInt aButtonId );
+        
+        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, 
+                                     TEventCode aType);
+        
+
+    private:
+        /**
+        * PreLayoutDynInitL
+        * @param    -
+        */
+        virtual void PreLayoutDynInitL();    
+
+    private:
+        CConfirmationQueryNotif* iNotif;  // Pointer to the Notifier, not owned
+                
+        // Pointer for dialog expiration timer
+        CExpiryTimer* iExpiryTimer;
+    };
+
+
 #endif  // __CONFIRMATION_QUERY_H__
 
 // End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/ConfirmationQueryNotif.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/ConfirmationQueryNotif.h	Sun Mar 14 13:11:26 2010 +0000
@@ -30,6 +30,7 @@
 
 // FORWARD DECLARATIONS
 class CConfirmationQuery;
+class CConfirmationQueryVisitor;
 class CRoamingInfo;
 
 /**
@@ -115,10 +116,18 @@
          */  
         static TInt LaunchDialogL( TAny* aObject );
         
+        /**
+         * Callback is called to launch dialog asynchronously
+         * @param  aObject Pointer to notifier object.
+         * return  Error code
+         */  
+        static TInt LaunchDialogVisitorL( TAny* aObject );
+        
     private:
         TBool iTryNextBest;
         TUint32 iConnMethod;
-        CConfirmationQuery* iDialog;   // Pointer to the dialog
+        CConfirmationQuery*        iDialog;         // Home network dialog
+        CConfirmationQueryVisitor* iDialogVisitor;  // Visitor network dialog
         TBool iIsVisitorNetwork;
         TMsgQueryLinkedResults iChoice;
         TConnUiUiDestConnMethodNoteId iNoteInfo;
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/connectingviadiscreetpopup.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/connectingviadiscreetpopup.h	Sun Mar 14 13:11:26 2010 +0000
@@ -56,7 +56,7 @@
     /**
      * StartL Function for making the initial request
      */
-    void StartL(TUint32 aIapId, TBool aConnectionAlreadyActive);
+    void StartL(TUint32 aIapId );
 
 private:
     /**
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/ConfirmationQuery.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/ConfirmationQuery.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -39,6 +39,7 @@
 //
 // ---------------------------------------------------------
 // CConfirmationQuery::CConfirmationQuery
+// HOME NETWORK
 // ---------------------------------------------------------
 //
 CConfirmationQuery::CConfirmationQuery( CConfirmationQueryNotif* aNotif )
@@ -47,8 +48,7 @@
   iButtonGroupPreviouslyChanged( EFalse )
    {
    }
-    
-    
+
 // ---------------------------------------------------------
 // CConfirmationQuery::~CConfirmationQuery
 // ---------------------------------------------------------
@@ -60,8 +60,6 @@
     delete iExpiryTimer;
     }
 
-
-
 // ---------------------------------------------------------
 // CConfirmationQuery::OkToExitL
 // ---------------------------------------------------------
@@ -96,7 +94,6 @@
     return result;  
     }
     
-    
 // ---------------------------------------------------------
 // CConfirmationQuery::PreLayoutDynInitL()
 // ---------------------------------------------------------
@@ -112,7 +109,6 @@
     iExpiryTimer->Start();
     }
 
-
 // ---------------------------------------------------------
 // CConfirmationQuery::TryExitL()
 // ---------------------------------------------------------
@@ -159,4 +155,117 @@
     }
 
 
+// ================= MEMBER FUNCTIONS =======================
+//
+// ---------------------------------------------------------
+// CConfirmationQueryVisitor::CConfirmationQueryVisitor
+// VISITOR NETWORK
+// ---------------------------------------------------------
+//
+CConfirmationQueryVisitor::CConfirmationQueryVisitor( 
+        CConfirmationQueryNotif* aNotif )
+    : 
+    iNotif( aNotif )
+    {
+    }
+    
+// ---------------------------------------------------------
+// CConfirmationQueryVisitor::~CConfirmationQueryVisitor
+// ---------------------------------------------------------
+//
+CConfirmationQueryVisitor::~CConfirmationQueryVisitor()
+    {
+    STATIC_CAST( CEikServAppUi*, 
+        CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( EFalse );
+    delete iExpiryTimer;
+    }
+
+// ---------------------------------------------------------
+// CConfirmationQueryVisitor::OkToExitL
+// ---------------------------------------------------------
+//
+TBool CConfirmationQueryVisitor::OkToExitL( TInt aButtonId )
+    {
+    CLOG_ENTERFN( "CConfirmationQueryVisitor::OkToExitL" );
+    TBool result( EFalse );
+    TInt status = KErrCancel;
+    
+    if ( aButtonId == EAknSoftkeySelect || 
+         aButtonId == EAknSoftkeyDone || aButtonId == EAknSoftkeyOk )
+        {
+        iNotif->SetSelectedChoiceL( EMsgQueryThisTime );
+        result = ETrue;
+        status = KErrNone;
+        }
+    else if ( aButtonId == EAknSoftkeyCancel )
+        {
+        status = KErrCancel;
+        result = ETrue;
+        }
+
+    if ( result )
+        {
+        CLOG_WRITEF( _L( "aButtonId = %d" ), aButtonId );
+        if ( iNotif )
+            {
+            iNotif->CompleteL( status );
+            }
+        }
+
+    CLOG_LEAVEFN( "CConfirmationQueryVisitor::OkToExitL" );
+
+    return result;  
+    }
+    
+// ---------------------------------------------------------
+// CConfirmationQueryVisitor::PreLayoutDynInitL()
+// ---------------------------------------------------------
+//
+void CConfirmationQueryVisitor::PreLayoutDynInitL()
+    {      
+    CAknMessageQueryDialog::PreLayoutDynInitL();
+
+    STATIC_CAST( CEikServAppUi*, 
+                CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( ETrue );
+
+    iExpiryTimer = CExpiryTimer::NewL( *this );
+    iExpiryTimer->Start();
+    }
+
+// ---------------------------------------------------------
+// CConfirmationQueryVisitor::TryExitL()
+// ---------------------------------------------------------
+//
+void CConfirmationQueryVisitor::TryExitL( TInt aButtonId )
+    {
+    CLOG_ENTERFN( "CConfirmationQueryVisitor::TryExitL" );
+    CAknMessageQueryDialog::TryExitL( aButtonId );
+    CLOG_LEAVEFN( "CConfirmationQueryVisitor::TryExitL" );
+    }
+
+// ---------------------------------------------------------
+// CConfirmationQueryVisitor::OfferKeyEventL
+// ---------------------------------------------------------
+//
+TKeyResponse CConfirmationQueryVisitor::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 CAknMessageQueryDialog::OfferKeyEventL( aKeyEvent,aType ); 
+    } 
+
+void CConfirmationQueryVisitor::HandleTimedOut()
+    {
+    TRAP_IGNORE( TryExitL(EAknSoftkeyCancel) );
+    }
+
 // End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/ConfirmationQueryNotif.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/ConfirmationQueryNotif.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -32,7 +32,7 @@
 #include <cmdestination.h>
 #include <ConnectionUiUtilities.h>
 #include <datamobilitycommsdattypes.h>
-
+#include <ctsydomainpskeys.h>
 
 using namespace CMManager;
 
@@ -109,6 +109,24 @@
            }    
         }
     
+    // Check if emergency call is ongoing. If it is then do not display the dialog.    
+    TInt err( KErrNone );
+    TInt state( 0 );
+
+    err = RProperty::Get(
+            KPSUidCtsyEmergencyCallInfo,
+            KCTSYEmergencyCallInfo,
+            state );
+    
+    if ( err == KErrNone && state )
+        {
+        // Emergency call is active. Cancel connection. 
+        CLOG_WRITE( "CConfirmationQueryNotif::StartL: Emergency call is active!" );
+        aMessage.WriteL( aReplySlot, TPckg<TMsgQueryLinkedResults>( EMsgQueryCancelled ) );
+        aMessage.Complete( KErrNone );
+        return;
+        }
+    
     iChoice = EMsgQueryCancelled; 
     TPckgBuf<TConnUiUiDestConnMethodNoteId> input;
     input.Copy( aBuffer );
@@ -117,14 +135,24 @@
     iReplySlot = aReplySlot;
     iMessage = aMessage;
     iCancelled = EFalse;
-    
-    TCallBack cb( LaunchDialogL, this );
+
+    if ( iLaunchDialogAsync )
+        {
+        delete iLaunchDialogAsync;
+        iLaunchDialogAsync = NULL;
+        }
     
-    if ( !iLaunchDialogAsync )
+    if ( iNoteInfo.iNoteId == EConfirmMethodUsageQueryInHomeNetwork )
         {
+        TCallBack cb( LaunchDialogL, this );
         iLaunchDialogAsync = new( ELeave ) CAsyncCallBack( cb, CActive::EPriorityHigh );    
         }
-    
+    else
+        {
+        TCallBack cb( LaunchDialogVisitorL, this );
+        iLaunchDialogAsync = new( ELeave ) CAsyncCallBack( cb, CActive::EPriorityHigh );    
+        }
+
     iLaunchDialogAsync->CallBack();
     }
 
@@ -144,8 +172,17 @@
             iMessage.Complete( KErrCancel );
             }
         
-        delete iDialog;
-        iDialog = NULL;
+        if ( iDialog )
+            {
+            delete iDialog;
+            iDialog = NULL;
+            }
+        
+        if ( iDialogVisitor )
+            {
+            delete iDialog;
+            iDialog = NULL;
+            }
         }
     
     CLOG_LEAVEFN( "CConfirmationQueryNotif::Cancel" );
@@ -210,27 +247,14 @@
     automatic = StringLoader::LoadLC( R_QTN_OCC_LIST_CS_DATA_HOME_NW_AUTOMATIC );
     thisTime = StringLoader::LoadLC( R_QTN_OCC_LIST_CS_DATA_HOME_NW_THIS_TIME );
                                 
-    if ( myself->iNoteInfo.iNoteId == EConfirmMethodUsageQueryInHomeNetwork ) 
-        {
-        heading = StringLoader::LoadLC( R_QTN_OCC_PRMPT_CS_DATA_HOME_NW );
-        messageBase = StringLoader::LoadLC( R_QTN_OCC_DETAIL_CS_DATA_HOME_NW );
-        // the order of the query options depends on the location
-        choices.Append(EMsgQueryAutomatically);
-        choices.Append(EMsgQueryThisTime);
-        array->AppendL( *automatic );
-        array->AppendL( *thisTime );
-        } 
-    else 
-        {
-        heading = StringLoader::LoadLC( R_QTN_OCC_PRMPT_CS_DATA_FOREIGN_NW );
-        messageBase = StringLoader::LoadLC( R_QTN_OCC_DETAIL_CS_DATA_FOREIGN_NW );
-        // the order of the query options depends on the location
-        choices.Append(EMsgQueryThisTime);
-        choices.Append(EMsgQueryAutomatically);
-        array->AppendL( *thisTime );
-        array->AppendL( *automatic );
-        }              
-
+    heading = StringLoader::LoadLC( R_QTN_OCC_PRMPT_CS_DATA_HOME_NW );
+    messageBase = StringLoader::LoadLC( R_QTN_OCC_DETAIL_CS_DATA_HOME_NW );
+    // the order of the query options depends on the location
+    choices.Append(EMsgQueryAutomatically);
+    choices.Append(EMsgQueryThisTime);
+    array->AppendL( *automatic );
+    array->AppendL( *thisTime );
+ 
     // Set the dialog heading and message text
     myself->iDialog->Heading()->SetTextL(*heading);
     myself->iDialog->MessageBox()->SetMessageTextL(messageBase);
@@ -253,4 +277,50 @@
     return 0;   
     }
 
+// ---------------------------------------------------------
+// TInt CConfirmationQueryNotif::LaunchDialogVisitorL()
+// ---------------------------------------------------------
+//
+TInt CConfirmationQueryNotif::LaunchDialogVisitorL( TAny* aObject )
+    {
+    CLOG_ENTERFN( "CCConfirmationQueryNotif::LaunchDialogVisitorL" );
+    CConfirmationQueryNotif* myself =
+                            static_cast<CConfirmationQueryNotif*>( aObject );
+
+    myself->iDialogVisitor = new ( ELeave ) CConfirmationQueryVisitor( myself );
+    myself->iDialogVisitor->PrepareLC( R_VISITOR_QUERY );
+
+    HBufC* heading  = NULL;
+    HBufC* message  = NULL;
+    TInt resourceId = R_QTN_OCC_DETAIL_CS_DATA_FOREIGN_NW;
+    heading         = StringLoader::LoadLC( 
+                      R_QTN_OCC_PRMPT_CS_DATA_FOREIGN_NW );
+
+    CDesCArrayFlat* strings = new( ELeave ) CDesCArrayFlat( 2 );
+    CleanupStack::PushL( strings );
+
+    HBufC* messageBase = StringLoader::LoadL( resourceId, *strings );
+    CleanupStack::PopAndDestroy( strings );
+
+    CleanupStack::PushL( messageBase );
+    TInt lenMsg = messageBase->Des().Length();
+
+    message = HBufC::NewL( lenMsg );
+    TPtr messagePtr = message->Des();
+    messagePtr.Append( messageBase->Des() ); 
+
+    CleanupStack::PopAndDestroy( messageBase );
+
+    CleanupStack::PushL( message );
+    myself->iDialogVisitor->SetMessageTextL( *message );
+    CleanupStack::PopAndDestroy( message );
+
+    myself->iDialogVisitor->QueryHeading()->SetTextL( *heading );
+    CleanupStack::PopAndDestroy( heading );
+
+    myself->iDialogVisitor->RunLD();
+    CLOG_LEAVEFN( "CConfirmationQueryNotif::LaunchDialogVisitorL" );
+    return 0;
+    }
+
 // End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/connectingviadiscreetpopup.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/connectingviadiscreetpopup.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -122,19 +122,14 @@
 // CConnectingViaDiscreetPopup::StartL
 // ---------------------------------------------------------
 //
-void CConnectingViaDiscreetPopup::StartL(TUint32 aIapId,
-        TBool aConnectionAlreadyActive)
+void CConnectingViaDiscreetPopup::StartL( TUint32 aIapId )
     {
     Cancel(); // Cancel any request, just to be sure
     iBearerType = 0;
     delete iConnectionName;
     iConnectionName = NULL;
-
-    if (!aConnectionAlreadyActive)
-        {
-        iPopupFlags = KAknDiscreetPopupDurationLong;
-        }
-
+    iPopupFlags = KAknDiscreetPopupDurationLong;
+    
     RCmConnectionMethod plugin;
     CleanupClosePushL(plugin);
     if (aIapId)
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/connectingviadiscreetpopupnotif.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/connectingviadiscreetpopupnotif.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -60,7 +60,7 @@
     TPckgBuf<TConnUiConnectingViaDiscreetPopup> data;
     data.Copy(aBuffer);
 
-    iActiveNote->StartL( data().iIapId, data().iConnectionAlreadyActive );
+    iActiveNote->StartL( data().iIapId );
     iCancelled = EFalse;
     }
 
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/connectionerrordiscreetpopup.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/connectionerrordiscreetpopup.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -299,6 +299,8 @@
 
         // Group 8
         case KErrPermissionDenied:
+            icon = EIconNone;  // Permission denied may come with any bearer.
+        // Fall through
         case KErrWlanPasswordExpired:
         case KErrWlanNoDialinPermissions:
         case KErrWlanAccountDisabled:
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/data/ConnUiUtilsNotif.rss	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/data/ConnUiUtilsNotif.rss	Sun Mar 14 13:11:26 2010 +0000
@@ -500,4 +500,44 @@
     buf = qtn_occ_list_cs_data_home_nw_this_time;
     }
 
+RESOURCE CBA r_softkeys_connect_cancel__connect
+    {
+    buttons =
+        {
+        CBA_BUTTON {id=EAknSoftkeySelect; txt=qtn_netw_conset_softkey_connect; },
+        CBA_BUTTON {id=EAknSoftkeyCancel; txt=text_softkey_cancel; },
+        CBA_BUTTON {id=EAknSoftkeySelect; txt=qtn_netw_conset_softkey_connect; }
+        };
+    }
+
+RESOURCE DIALOG r_visitor_query
+    {
+    flags = EEikDialogFlagNoDrag | EEikDialogFlagNoTitleBar | 
+            EEikDialogFlagCbaButtons | EEikDialogFlagNoBorder | 
+            EEikDialogFlagNoShadow | EEikDialogFlagNotifyEsc;
+    buttons = r_softkeys_connect_cancel__connect;
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtPopupHeadingPane;
+            id = EAknMessageQueryHeaderId;
+            control = AVKON_HEADING
+                {
+                label = "";
+                headinglayout = R_AVKON_WML_SIGN_QUERY_HEADING_PANE;
+                };
+            },
+
+        DLG_LINE
+            {
+            type = EAknCtMessageQuery;
+            id = EAknMessageQueryContentId;
+            control = AVKON_MESSAGE_QUERY
+                {
+                };
+            }
+        };
+    }
+
 // End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/ConnectionUiUtilitiesCommon.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/ConnectionUiUtilitiesCommon.h	Sun Mar 14 13:11:26 2010 +0000
@@ -87,7 +87,6 @@
     {
 public:
     TUint32   iIapId;
-    TBool iConnectionAlreadyActive;
     };
 
 #endif  // CONNECTIONUIUTILITIES_COMMON_H
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/ConnectionUiUtilitiesImpl.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/ConnectionUiUtilitiesImpl.h	Sun Mar 14 13:11:26 2010 +0000
@@ -487,8 +487,7 @@
         * Discreet popup. Shows "Connecting via %U" discreet popup 
         * @param aIapId IAP id of the access point.
         */
-        void ConnectingViaDiscreetPopup( const TUint32& aIapId, 
-                                         TBool aConnectionAlreadyActive );
+        void ConnectingViaDiscreetPopup( const TUint32& aIapId );
 
         
         /**           
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/loc/connectionuiutilities.loc	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/loc/connectionuiutilities.loc	Sun Mar 14 13:11:26 2010 +0000
@@ -312,7 +312,7 @@
 //w:
 //r:5.2
 //
-#define qtn_occ_detail_cs_data_foreign_nw    "Connect to Internet in this country using cellular data? Data costs may increase considerably."
+#define qtn_occ_detail_cs_data_foreign_nw    "Connect to Internet using cellular data? Phone is outside of home network, and data costs may increase considerably.\nTo allow connecting automatically, adjust the Connection settings."
 
 //d:Option for connection query in foreign network.
 //l:list_single_pane_t1_cp2
@@ -437,4 +437,11 @@
 //
 #define qtn_occ_config_failed_discreet_popup_text1 "Configuration failed"
 
+//d:Softkey used to confirm the query
+//l:control_pane_t1/opt7
+//w:
+//r:5.2
+//
+#define qtn_netw_conset_softkey_connect             "Connect"
+
 // End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ConnectionUiUtilities.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ConnectionUiUtilities.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -608,10 +608,9 @@
 // ---------------------------------------------------------
 //
 EXPORT_C void CConnectionUiUtilities::ConnectingViaDiscreetPopup( 
-        const TUint32& aIapId,
-        TBool aConnectionAlreadyActive )
+        const TUint32& aIapId )
     {
-    iImpl->ConnectingViaDiscreetPopup( aIapId, aConnectionAlreadyActive );
+    iImpl->ConnectingViaDiscreetPopup( aIapId );
     } 
 
 // ---------------------------------------------------------
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ConnectionUiUtilitiesImpl.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ConnectionUiUtilitiesImpl.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -1122,10 +1122,9 @@
 // CConnectionUiUtilitiesImpl::ConnectingViaDiscreetPopup
 // ---------------------------------------------------------
 //
-void CConnectionUiUtilitiesImpl::ConnectingViaDiscreetPopup( const TUint32& aIapId, TBool aConnectionAlreadyActive )
+void CConnectionUiUtilitiesImpl::ConnectingViaDiscreetPopup( const TUint32& aIapId )
     { 
     iConnInfo().iIapId = aIapId;
-    iConnInfo().iConnectionAlreadyActive = aConnectionAlreadyActive;
     
     if ( !iActiveWrapper[ EConnectingViaDiscreetPopup ] )
         {
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/SelectConnectionDialog.cpp	Mon Mar 08 21:43:55 2010 +0000
+++ b/connectionutilities/ConnectionDialogs/cconndlg/src/SelectConnectionDialog.cpp	Sun Mar 14 13:11:26 2010 +0000
@@ -135,6 +135,15 @@
 
     STATIC_CAST( CEikServAppUi*, 
                 CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( ETrue );
+    
+    // Hide Options button if single-click enabled
+    //
+    if ( static_cast< CAknAppUi* >( iCoeEnv->AppUi() )->IsSingleClickCompatible() )
+        {
+        CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
+        cba->MakeCommandVisible( EAknSoftkeyOptions, EFalse );
+        cba->DrawDeferred();
+        }
 
     iExpiryTimer = CExpiryTimer::NewL( *this );
     iExpiryTimer->Start();
@@ -177,17 +186,7 @@
         }
     else if ( aButtonId == EAknSoftkeyOptions )
         {
-        if ( !( ListBox()->View()->ItemDrawer()->Flags() 
-               & CListItemDrawer::EDisableHighlight ) )
-            {
-            DisplayMenuL();
-            }
-        else
-            {
-            ListBox()->View()->ItemDrawer()->ClearFlags(
-               CListItemDrawer::EDisableHighlight );
-            DrawNow();
-            }
+        DisplayMenuL();
         }
         
     if ( result )
@@ -447,6 +446,26 @@
         cba.DrawDeferred();
         }
 
+    // Show Options button if some listbox row gets highlighted
+    //
+    if ( static_cast< CAknAppUi* >( iCoeEnv->AppUi() )->IsSingleClickCompatible() )
+        {
+        CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
+
+        if ( ( ListBox()->View()->ItemDrawer()->Flags()
+               & CListItemDrawer::ESingleClickDisabledHighlight )
+              )
+            {
+            cba->MakeCommandVisible( EAknSoftkeyOptions, EFalse );
+            }
+        else
+            {
+            cba->MakeCommandVisible( EAknSoftkeyOptions, ETrue );
+            }
+
+        cba->DrawDeferred();
+        }
+    
     CLOG_LEAVEFN( "CSelectConnectionDialog::OfferKeyEventL" );  
 
     return result;
Binary file data/cccccc00_emulator.cre has changed
--- a/ipcm_plat/bearer_settings_plugin_api/inc/cmpbasesettingsdlg.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/ipcm_plat/bearer_settings_plugin_api/inc/cmpbasesettingsdlg.h	Sun Mar 14 13:11:26 2010 +0000
@@ -22,7 +22,7 @@
 #include <eiklbo.h>
 #include <aknlists.h>
 #include <AknDialog.h>
-#include <coneresloader.h>
+#include <ConeResLoader.h>
 #include <cmcommonconstants.h>
 #include <cmconnectionmethoddef.h>
 
--- a/ipcm_plat/bearer_settings_plugin_api/inc/cmpbasesettingsdlgadv.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/ipcm_plat/bearer_settings_plugin_api/inc/cmpbasesettingsdlgadv.h	Sun Mar 14 13:11:26 2010 +0000
@@ -25,7 +25,7 @@
 #include <eikapp.h>
 #include <eikdoc.h>
 #include <aknlists.h>
-#include <akndialog.h>
+#include <AknDialog.h>
 #include <cmpbasesettingsdlg.h>
 
 // FORWARD DECLARATIONS
--- a/ipcm_plat/bearer_settings_plugin_api/inc/cmpluginbaseeng.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/ipcm_plat/bearer_settings_plugin_api/inc/cmpluginbaseeng.h	Sun Mar 14 13:11:26 2010 +0000
@@ -25,7 +25,7 @@
 #include <e32base.h>
 #include <ecom/ecom.h>        // For REComSession
 #include <metadatabase.h>
-#include <CommsDatTypesV1_1.h>
+#include <commsdattypesv1_1.h>
 
 #define IAP_ELEMENT_ID( iapRecId )  (KCDTIdIAPRecord | \
                                      KCDMaskShowFieldType | \
--- a/ipcm_plat/bearer_settings_plugin_api/inc/cmpluginlanbase.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/ipcm_plat/bearer_settings_plugin_api/inc/cmpluginlanbase.h	Sun Mar 14 13:11:26 2010 +0000
@@ -23,7 +23,7 @@
 #include <e32base.h>
 #include <eikdoc.h>
 #include <apparc.h>
-#include <CommsDatTypesV1_1.h>
+#include <commsdattypesv1_1.h>
 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
 #include <commsdat_partner.h>
 #endif
--- a/ipcm_plat/commsdat_wlan_api/inc/cmmanagertablefields.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/ipcm_plat/commsdat_wlan_api/inc/cmmanagertablefields.h	Sun Mar 14 13:11:26 2010 +0000
@@ -23,9 +23,9 @@
 
 // INCLUDES
 #include <e32base.h>
-#include <Metadatabase.h>
+#include <metadatabase.h>
 #include <WlanCdbCols.h>
-#include <CommsDatTypesV1_1.h>
+#include <commsdattypesv1_1.h>
 
 using namespace CommsDat;
 
--- a/ipcm_plat/commsdat_wlan_api/inc/wlancontainer.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/ipcm_plat/commsdat_wlan_api/inc/wlancontainer.h	Sun Mar 14 13:11:26 2010 +0000
@@ -23,8 +23,8 @@
 
 // INCLUDES
 #include <e32base.h>
-#include <Metadatabase.h>
-#include <CommsDatTypesV1_1.h>
+#include <metadatabase.h>
+#include <commsdattypesv1_1.h>
 #include <cmmanagertablefields.h>
 
 // FORWARD DECLARATIONS
--- a/ipcm_plat/connection_ui_utilities_api/inc/ConnectionUiUtilities.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/ipcm_plat/connection_ui_utilities_api/inc/ConnectionUiUtilities.h	Sun Mar 14 13:11:26 2010 +0000
@@ -112,9 +112,8 @@
         * This method should only be used from the MPM in order to provide
         * a consistent popup behavior across the platform.
         * @param aIAPId The id of the access point.
-        * @param aConnectionActive is connection already active.
         */
-        IMPORT_C void ConnectingViaDiscreetPopup( const TUint32& aIAPId, TBool aConnectionAlreadyActive );
+        IMPORT_C void ConnectingViaDiscreetPopup( const TUint32& aIAPId );
 
         /**
         * Pops up a discreet popup indicating a connection error.
--- a/ipcm_plat/extended_connection_settings_api/inc/cmdestinationext.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/ipcm_plat/extended_connection_settings_api/inc/cmdestinationext.h	Sun Mar 14 13:11:26 2010 +0000
@@ -19,7 +19,7 @@
 #define DESTINATIONEXT_H
 
 // System includes
-#include <E32def.h>
+#include <e32def.h>
 #include <e32base.h>
 #include <metadatabase.h>
 #include <cmmanagerdef.h>
--- a/ipcm_plat/extended_connection_settings_api/inc/cmmanagerext.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/ipcm_plat/extended_connection_settings_api/inc/cmmanagerext.h	Sun Mar 14 13:11:26 2010 +0000
@@ -23,7 +23,7 @@
 #include <e32base.h>
 #include <e32cmn.h>
 #include <metadatabase.h>
-#include <coneresloader.h>
+#include <ConeResLoader.h>
 #include <cmmanagerdef.h>
 #include <cmconnectionmethodext.h>
 #include <cmdefconnvalues.h>
--- a/ipcm_plat/extended_connection_settings_api/inc/cmsettingsui.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/ipcm_plat/extended_connection_settings_api/inc/cmsettingsui.h	Sun Mar 14 13:11:26 2010 +0000
@@ -18,7 +18,7 @@
 #ifndef C_CMSETTINGSUI_H
 #define C_CMSETTINGSUI_H
 
-#include <E32def.h>
+#include <e32def.h>
 #include <e32base.h>
 
 class CCmSettingsUiImpl;
--- a/ipcm_pub/connection_settings_api/inc/cmdestination.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/ipcm_pub/connection_settings_api/inc/cmdestination.h	Sun Mar 14 13:11:26 2010 +0000
@@ -21,7 +21,7 @@
 // System includes
 #include <cmconnectionmethod.h>
 #include <cmmanagerdef.h>
-#include <E32def.h>
+#include <e32def.h>
 #include <e32base.h>
 #include <metadatabase.h>
 
--- a/ipcm_pub/connection_settings_api/inc/cmmanagerdef.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/ipcm_pub/connection_settings_api/inc/cmmanagerdef.h	Sun Mar 14 13:11:26 2010 +0000
@@ -19,7 +19,7 @@
 #define CMMANAGERDEF_H
 
 // System includes
-#include <E32def.h>
+#include <e32def.h>
 #include <e32std.h>
            
 namespace CMManager
--- a/ipcm_pub/connection_settings_api/inc/cmsettingsui.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/ipcm_pub/connection_settings_api/inc/cmsettingsui.h	Sun Mar 14 13:11:26 2010 +0000
@@ -18,7 +18,7 @@
 #ifndef C_CMSETTINGSUI_H
 #define C_CMSETTINGSUI_H
 
-#include <E32def.h>
+#include <e32def.h>
 #include <e32base.h>
 
 class CCmSettingsUiImpl;
--- a/ipcm_pub/connection_settings_ui_api/inc/cmapplicationsettingsui.h	Mon Mar 08 21:43:55 2010 +0000
+++ b/ipcm_pub/connection_settings_ui_api/inc/cmapplicationsettingsui.h	Sun Mar 14 13:11:26 2010 +0000
@@ -18,7 +18,7 @@
 #ifndef C_CMAPPLICATIONSETTINGSUI_H
 #define C_CMAPPLICATIONSETTINGSUI_H
 
-#include <E32def.h>
+#include <e32def.h>
 #include <e32base.h>
 
 class CCmConnSettingsUiImpl;