Revision: 201015
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 03 May 2010 12:53:07 +0300
changeset 20 9c97ad6591ae
parent 18 fcbbe021d614
child 21 b8e8e15e80f2
child 23 7ec726f93df1
child 28 860702281757
Revision: 201015 Kit: 201018
apengine/apeng/group/APEngine.MMP
apengine/apeng/src/APNetworks.cpp
apengine/apeng/src/APSelect.cpp
apengine/apeng/src/ApProtHandler.cpp
apengine/apsettingsplugin/src/APSettingsPlugin.cpp
bearermanagement/mpm/group/mpmserver.mmp
bearermanagement/mpm/inc/mpmcommsdataccess.h
bearermanagement/mpm/inc/mpmcsidwatcher.h
bearermanagement/mpm/inc/mpmdatausagewatcher.h
bearermanagement/mpm/inc/mpmdialog.h
bearermanagement/mpm/inc/mpmiapselection.h
bearermanagement/mpm/inc/mpmofflinewatcher.h
bearermanagement/mpm/inc/mpmserver.h
bearermanagement/mpm/inc/mpmserver.inl
bearermanagement/mpm/inc/mpmserversession.h
bearermanagement/mpm/inc/mpmwlanquerydialog.h
bearermanagement/mpm/inc/rmpm.h
bearermanagement/mpm/src/mpmcommsdataccess.cpp
bearermanagement/mpm/src/mpmconfirmdlg.cpp
bearermanagement/mpm/src/mpmconfirmdlgstarting.cpp
bearermanagement/mpm/src/mpmconnmonevents.cpp
bearermanagement/mpm/src/mpmcsidwatcher.cpp
bearermanagement/mpm/src/mpmdatausagewatcher.cpp
bearermanagement/mpm/src/mpmdialog.cpp
bearermanagement/mpm/src/mpmiapselection.cpp
bearermanagement/mpm/src/mpmofflinewatcher.cpp
bearermanagement/mpm/src/mpmserver.cpp
bearermanagement/mpm/src/mpmserversession.cpp
bearermanagement/mpm/src/mpmwlanquerydialog.cpp
cmmanager/cmapplsettingsui/bwins/cmapplsettingsuiu.def
cmmanager/cmapplsettingsui/cmapplsettingsui.pro
cmmanager/cmapplsettingsui/eabi/cmapplsettingsuiu.def
cmmanager/cmapplsettingsui/inc/cmapplsettingsui_p.h
cmmanager/cmapplsettingsui/inc/cmradiodialog.h
cmmanager/cmapplsettingsui/inc/cmsettingdata.h
cmmanager/cmapplsettingsui/res/cmapplsettingsui.qrc
cmmanager/cmapplsettingsui/rom/cmapplsettingsui.iby
cmmanager/cmapplsettingsui/rom/cmapplsettingsui_resources.iby
cmmanager/cmapplsettingsui/src/cmapplsettingsui.cpp
cmmanager/cmapplsettingsui/src/cmapplsettingsui_p.cpp
cmmanager/cmapplsettingsui/src/cmradiodialog.cpp
cmmanager/cmapplsettingsui/src/cmsettingdata.cpp
cmmanager/cmapplsettingsui/traces/OstTraceDefinitions.h
cmmanager/cmapplsettingsui/tsrc/tsrc.pro
cmmanager/cmapplsettingsui/tsrc/tst_applsettingsui/inc/applsettester.h
cmmanager/cmapplsettingsui/tsrc/tst_applsettingsui/res/tst_applsettingsui.qrc
cmmanager/cmapplsettingsui/tsrc/tst_applsettingsui/rom/tst_applsettingsui.iby
cmmanager/cmapplsettingsui/tsrc/tst_applsettingsui/rom/tst_applsettingsui_stub.pkg
cmmanager/cmapplsettingsui/tsrc/tst_applsettingsui/rom/tst_applsettingsui_stub.sis
cmmanager/cmapplsettingsui/tsrc/tst_applsettingsui/src/applsettester.cpp
cmmanager/cmapplsettingsui/tsrc/tst_applsettingsui/src/tst_applsettingsui.cpp
cmmanager/cmapplsettingsui/tsrc/tst_applsettingsui/tst_applsettingsui.pro
cmmanager/cmapplsettingsui/tsrc/ut/hbautotest.cpp
cmmanager/cmapplsettingsui/tsrc/ut/hbautotest.h
cmmanager/cmapplsettingsui/tsrc/ut/testcmapplsettingsui.cpp
cmmanager/cmapplsettingsui/tsrc/ut/testcmapplsettingsui.h
cmmanager/cmapplsettingsui/tsrc/ut/testcmapplsettingsui.pro
cmmanager/cmapplsettingsui/tsrc/ut/tools/applsettingsui_ctc.bat
cmmanager/cmapplsettingsui/tsrc/ut/tools/commsdat_restore.bat
cmmanager/cmapplsettingsui/tsrc/ut/tools/commsdat_set.bat
cmmanager/cmapplsettingsui/tsrc/ut/tools/default.cre
cmmanager/cmmanager.pro
cmmanager/cmmgr/Framework/BWinsCw/CmManager_prot_setupU.DEF
cmmanager/cmmgr/Framework/EABI/CmManager_prot_setupU.def
cmmanager/cmmgr/Framework/Group/bld.inf
cmmanager/cmmgr/Framework/Group/cmmanager.mmp
cmmanager/cmmgr/Framework/Group/framework_icons.mk
cmmanager/cmmgr/Framework/Inc/ccmdexec.h
cmmanager/cmmgr/Framework/Inc/cmapplicationsettingsuiimpl.h
cmmanager/cmmgr/Framework/Inc/cmcommsdatnotifier.h
cmmanager/cmmgr/Framework/Inc/cmconnectionmethodinfo.h
cmmanager/cmmgr/Framework/Inc/cmconnselectrbpage.h
cmmanager/cmmgr/Framework/Inc/cmconnsettingsuiimpl.h
cmmanager/cmmgr/Framework/Inc/cmdesticondialog.h
cmmanager/cmmgr/Framework/Inc/cmdesticonmap.h
cmmanager/cmmgr/Framework/Inc/cmdestinationimpl.h
cmmanager/cmmgr/Framework/Inc/cmdlg.h
cmmanager/cmmgr/Framework/Inc/cmlistbox.h
cmmanager/cmmgr/Framework/Inc/cmlistboxmodel.h
cmmanager/cmmgr/Framework/Inc/cmlistitem.h
cmmanager/cmmgr/Framework/Inc/cmlistitemlist.h
cmmanager/cmmgr/Framework/Inc/cmlogger.h
cmmanager/cmmgr/Framework/Inc/cmmanager.hrh
cmmanager/cmmgr/Framework/Inc/cmmanagerimpl.h
cmmanager/cmmgr/Framework/Inc/cmmanagerimpl.inl
cmmanager/cmmgr/Framework/Inc/cmobjectpool.h
cmmanager/cmmgr/Framework/Inc/cmpluginmenucommands.hrh
cmmanager/cmmgr/Framework/Inc/cmpluginmultilinedialog.h
cmmanager/cmmgr/Framework/Inc/cmsettingsuiimpl.h
cmmanager/cmmgr/Framework/Inc/cmtransactionhandler.h
cmmanager/cmmgr/Framework/Inc/cmwizard.h
cmmanager/cmmgr/Framework/Inc/destdlg.h
cmmanager/cmmgr/Framework/Inc/destlistbox.h
cmmanager/cmmgr/Framework/Inc/destlistboxmodel.h
cmmanager/cmmgr/Framework/Inc/destlistitem.h
cmmanager/cmmgr/Framework/Inc/destlistitemlist.h
cmmanager/cmmgr/Framework/Inc/selectdestinationdlg.h
cmmanager/cmmgr/Framework/Inc/uncatdlg.h
cmmanager/cmmgr/Framework/Src/ccmdexec.cpp
cmmanager/cmmgr/Framework/Src/ccmpluginbaseeng.cpp
cmmanager/cmmgr/Framework/Src/cmapplicationsettingsui.cpp
cmmanager/cmmgr/Framework/Src/cmapplicationsettingsuiimpl.cpp
cmmanager/cmmgr/Framework/Src/cmcommonui.cpp
cmmanager/cmmgr/Framework/Src/cmcommsdatnotifier.cpp
cmmanager/cmmgr/Framework/Src/cmconnectionmethod.cpp
cmmanager/cmmgr/Framework/Src/cmconnectionmethodext.cpp
cmmanager/cmmgr/Framework/Src/cmconnectionmethodinfo.cpp
cmmanager/cmmgr/Framework/Src/cmconnselectrbpage.cpp
cmmanager/cmmgr/Framework/Src/cmconnsettingsuiimpl.cpp
cmmanager/cmmgr/Framework/Src/cmdesticondialog.cpp
cmmanager/cmmgr/Framework/Src/cmdesticonmap.cpp
cmmanager/cmmgr/Framework/Src/cmdestination.cpp
cmmanager/cmmgr/Framework/Src/cmdestinationext.cpp
cmmanager/cmmgr/Framework/Src/cmdestinationimpl.cpp
cmmanager/cmmgr/Framework/Src/cmdlg.cpp
cmmanager/cmmgr/Framework/Src/cmlistbox.cpp
cmmanager/cmmgr/Framework/Src/cmlistboxmodel.cpp
cmmanager/cmmgr/Framework/Src/cmlistitem.cpp
cmmanager/cmmgr/Framework/Src/cmlistitemlist.cpp
cmmanager/cmmgr/Framework/Src/cmlogger.cpp
cmmanager/cmmgr/Framework/Src/cmmanager.cpp
cmmanager/cmmgr/Framework/Src/cmmanagerext.cpp
cmmanager/cmmgr/Framework/Src/cmmanagerimpl.cpp
cmmanager/cmmgr/Framework/Src/cmobjectpool.cpp
cmmanager/cmmgr/Framework/Src/cmpbasesettingsdlg.cpp
cmmanager/cmmgr/Framework/Src/cmpbasesettingsdlgadv.cpp
cmmanager/cmmgr/Framework/Src/cmpbasesettingsdlgip.cpp
cmmanager/cmmgr/Framework/Src/cmpluginbase.cpp
cmmanager/cmmgr/Framework/Src/cmpluginlanbase.cpp
cmmanager/cmmgr/Framework/Src/cmpluginmultilinedialog.cpp
cmmanager/cmmgr/Framework/Src/cmsettingsui.cpp
cmmanager/cmmgr/Framework/Src/cmsettingsuiimpl.cpp
cmmanager/cmmgr/Framework/Src/cmtransactionhandler.cpp
cmmanager/cmmgr/Framework/Src/cmwizard.cpp
cmmanager/cmmgr/Framework/Src/destdlg.cpp
cmmanager/cmmgr/Framework/Src/destlistbox.cpp
cmmanager/cmmgr/Framework/Src/destlistboxmodel.cpp
cmmanager/cmmgr/Framework/Src/destlistitem.cpp
cmmanager/cmmgr/Framework/Src/destlistitemlist.cpp
cmmanager/cmmgr/Framework/Src/selectdestination.cpp
cmmanager/cmmgr/Framework/Src/uncatdlg.cpp
cmmanager/cmmgr/Framework/SrcData/cmmanager.rss
cmmanager/cmmgr/Framework/conf/cmmanager.confml
cmmanager/cmmgr/Framework/conf/cmmanager_10207376.crml
cmmanager/cmmgr/Framework/loc/cmmanager.loc
cmmanager/cmmgr/Plugins/Group/bld.inf
cmmanager/cmmgr/Plugins/cmpluginembdestination/data/1020737D.rss
cmmanager/cmmgr/Plugins/cmpluginembdestination/data/cmpluginembdestinationui.rss
cmmanager/cmmgr/Plugins/cmpluginembdestination/group/bld.inf
cmmanager/cmmgr/Plugins/cmpluginembdestination/group/cmpluginembdestination.mmp
cmmanager/cmmgr/Plugins/cmpluginembdestination/inc/cmpluginembdestination.h
cmmanager/cmmgr/Plugins/cmpluginembdestination/src/cmpluginembdestination.cpp
cmmanager/cmmgr/Plugins/cmpluginembdestination/src/cmpluginembdestinationproxy.cpp
cmmanager/cmmgr/Plugins/cmpluginlan/data/1020737B.rss
cmmanager/cmmgr/Plugins/cmpluginlan/group/bld.inf
cmmanager/cmmgr/Plugins/cmpluginlan/group/cmpluginlan.mmp
cmmanager/cmmgr/Plugins/cmpluginlan/inc/cmpluginlan.h
cmmanager/cmmgr/Plugins/cmpluginlan/src/cmpluginlan.cpp
cmmanager/cmmgr/Plugins/cmpluginlan/src/cmpluginlanproxy.cpp
cmmanager/cmmgr/Plugins/cmpluginpacketdata/data/1020737C.rss
cmmanager/cmmgr/Plugins/cmpluginpacketdata/data/cmpacketdataui.rss
cmmanager/cmmgr/Plugins/cmpluginpacketdata/group/bld.inf
cmmanager/cmmgr/Plugins/cmpluginpacketdata/group/cmpluginpacketdata.mmp
cmmanager/cmmgr/Plugins/cmpluginpacketdata/group/pluginpacketdata_icons.mk
cmmanager/cmmgr/Plugins/cmpluginpacketdata/inc/cmpacketdatacommonconstants.h
cmmanager/cmmgr/Plugins/cmpluginpacketdata/inc/cmpluginpacketdata.h
cmmanager/cmmgr/Plugins/cmpluginpacketdata/inc/cmppacketdatasettingsdlg.h
cmmanager/cmmgr/Plugins/cmpluginpacketdata/inc/cmppacketdatasettingsdlgadv.h
cmmanager/cmmgr/Plugins/cmpluginpacketdata/loc/cmpluginpacketdata.loc
cmmanager/cmmgr/Plugins/cmpluginpacketdata/src/cmpluginpacketdata.cpp
cmmanager/cmmgr/Plugins/cmpluginpacketdata/src/cmpluginpacketdataproxy.cpp
cmmanager/cmmgr/Plugins/cmpluginpacketdata/src/cmppacketdatasettingsdlg.cpp
cmmanager/cmmgr/Plugins/cmpluginpacketdata/src/cmppacketdatasettingsdlgadv.cpp
cmmanager/cmmgr/Plugins/cmpluginvpn/data/10281BBE.rss
cmmanager/cmmgr/Plugins/cmpluginvpn/data/cmpluginvpnui.rss
cmmanager/cmmgr/Plugins/cmpluginvpn/group/bld.inf
cmmanager/cmmgr/Plugins/cmpluginvpn/group/cmpluginvpn.mmp
cmmanager/cmmgr/Plugins/cmpluginvpn/group/cmpluginvpn_icons.mk
cmmanager/cmmgr/Plugins/cmpluginvpn/inc/cmpluginvpn.h
cmmanager/cmmgr/Plugins/cmpluginvpn/inc/cmpvpnnextlayerselectdlg.h
cmmanager/cmmgr/Plugins/cmpluginvpn/inc/cmpvpnpolicyselectiondlg.h
cmmanager/cmmgr/Plugins/cmpluginvpn/inc/cmpvpnsettingsdlg.h
cmmanager/cmmgr/Plugins/cmpluginvpn/inc/cmvpncommonconstants.h
cmmanager/cmmgr/Plugins/cmpluginvpn/loc/cmpluginvpn.loc
cmmanager/cmmgr/Plugins/cmpluginvpn/src/cmpluginproxyvpn.cpp
cmmanager/cmmgr/Plugins/cmpluginvpn/src/cmpluginvpn.cpp
cmmanager/cmmgr/Plugins/cmpluginvpn/src/cmpvpnnextlayerselectdlg.cpp
cmmanager/cmmgr/Plugins/cmpluginvpn/src/cmpvpnpolicyselectiondlg.cpp
cmmanager/cmmgr/Plugins/cmpluginvpn/src/cmpvpnsettingsdlg.cpp
cmmanager/cmmgr/Plugins/cmpluginwlan/data/10281BB2.rss
cmmanager/cmmgr/Plugins/cmpluginwlan/data/cmwlanui.rss
cmmanager/cmmgr/Plugins/cmpluginwlan/group/bld.inf
cmmanager/cmmgr/Plugins/cmpluginwlan/group/cmpluginwlan.mmp
cmmanager/cmmgr/Plugins/cmpluginwlan/group/pluginwlan_icons.mk
cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmpluginwlan.h
cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmpluginwlandata.h
cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmpluginwlandataarray.h
cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmpwlanactivewaiter.h
cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmpwlansettingsdlg.h
cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmpwlansettingsdlgadv.h
cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmpwlansettingsdlgipv4.h
cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmpwlansettingsdlgipv6.h
cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmwlancommonconstants.h
cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmwlancoveragecheck.h
cmmanager/cmmgr/Plugins/cmpluginwlan/loc/cmpluginwlan.loc
cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpluginwlan.cpp
cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpluginwlandata.cpp
cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpluginwlandataarray.cpp
cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpluginwlanproxy.cpp
cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpwlanactivewaiter.cpp
cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpwlansettingsdlg.cpp
cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpwlansettingsdlgadv.cpp
cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpwlansettingsdlgipv4.cpp
cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpwlansettingsdlgipv6.cpp
cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmwlancoveragecheck.cpp
cmmanager/cmmgr/Rom/CmManager.iby
cmmanager/cmmgr/Rom/CmManagerResources.iby
cmmanager/cmmgr/Rom/cmplugincsd.iby
cmmanager/cmmgr/Rom/cmplugincsdresources.iby
cmmanager/cmmgr/Rom/cmpluginembdestination.iby
cmmanager/cmmgr/Rom/cmpluginembdestinationresources.iby
cmmanager/cmmgr/Rom/cmpluginpacketdata.iby
cmmanager/cmmgr/Rom/cmpluginpacketdataresources.iby
cmmanager/cmmgr/Rom/cmpluginvpn.iby
cmmanager/cmmgr/Rom/cmpluginvpnresources.iby
cmmanager/cmmgr/Rom/cmpluginwlan.iby
cmmanager/cmmgr/Rom/cmpluginwlanresources.iby
cmmanager/cmmgr/cmmapi/BWinsCw/CmManager_prot_setupU.DEF
cmmanager/cmmgr/cmmapi/EABI/CmManager_prot_setupU.def
cmmanager/cmmgr/cmmapi/group/bld.inf
cmmanager/cmmgr/cmmapi/group/cmmapi.mmp
cmmanager/cmmgr/cmmapi/inc/cmconnectionmethodapi.h
cmmanager/cmmgr/cmmapi/inc/cmconnectionmethodwrapper.h
cmmanager/cmmgr/cmmapi/inc/cmdestinationapi.h
cmmanager/cmmgr/cmmapi/inc/cmdestinationwrapper.h
cmmanager/cmmgr/cmmapi/inc/cmmanagerapi.h
cmmanager/cmmgr/cmmapi/rom/cmmapi.iby
cmmanager/cmmgr/cmmapi/src/cmapplicationsettingsui.cpp
cmmanager/cmmgr/cmmapi/src/cmconnectionmethod.cpp
cmmanager/cmmgr/cmmapi/src/cmconnectionmethodapi.cpp
cmmanager/cmmgr/cmmapi/src/cmconnectionmethodext.cpp
cmmanager/cmmgr/cmmapi/src/cmconnectionmethodwrapper.cpp
cmmanager/cmmgr/cmmapi/src/cmdestination.cpp
cmmanager/cmmgr/cmmapi/src/cmdestinationapi.cpp
cmmanager/cmmgr/cmmapi/src/cmdestinationext.cpp
cmmanager/cmmgr/cmmapi/src/cmdestinationwrapper.cpp
cmmanager/cmmgr/cmmapi/src/cmmanager.cpp
cmmanager/cmmgr/cmmapi/src/cmmanagerapi.cpp
cmmanager/cmmgr/cmmapi/src/cmmanagerext.cpp
cmmanager/cmmgr/cmmapi/traces/OstTraceDefinitions.h
cmmanager/cmmgr/cmmapi/traces/fixed_id.definitions
cmmanager/cmmgr/cmmcommon/inc/cmmclistatic.h
cmmanager/cmmgr/cmmcommon/inc/cmmserverdefs.h
cmmanager/cmmgr/cmmcommon/src/cmmclistatic.cpp
cmmanager/cmmgr/cmmpluginbase/BWinsCw/cmmpluginbaseu.def
cmmanager/cmmgr/cmmpluginbase/EABI/cmmpluginbaseu.def
cmmanager/cmmgr/cmmpluginbase/group/bld.inf
cmmanager/cmmgr/cmmpluginbase/group/cmmpluginbase.mmp
cmmanager/cmmgr/cmmpluginbase/inc/ccmpluginbaseengtextresolver.h
cmmanager/cmmgr/cmmpluginbase/rom/cmmpluginbase.iby
cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp
cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseengtextresolver.cpp
cmmanager/cmmgr/cmmpluginbase/traces/OstTraceDefinitions.h
cmmanager/cmmgr/cmmpluginbase/traces/fixed_id.definitions
cmmanager/cmmgr/cmmplugins/cmpluginlan/data/1020737B.rss
cmmanager/cmmgr/cmmplugins/cmpluginlan/group/bld.inf
cmmanager/cmmgr/cmmplugins/cmpluginlan/group/cmpluginlan.mmp
cmmanager/cmmgr/cmmplugins/cmpluginlan/inc/cmpluginlan.h
cmmanager/cmmgr/cmmplugins/cmpluginlan/rom/cmmpluginlan.iby
cmmanager/cmmgr/cmmplugins/cmpluginlan/src/cmpluginlan.cpp
cmmanager/cmmgr/cmmplugins/cmpluginlan/src/cmpluginlanproxy.cpp
cmmanager/cmmgr/cmmplugins/cmpluginlan/traces/OstTraceDefinitions.h
cmmanager/cmmgr/cmmplugins/cmpluginlan/traces/fixed_id.definitions
cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/data/1020737C.rss
cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/group/bld.inf
cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/group/cmpluginpacketdata.mmp
cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/inc/cmpluginpacketdata.h
cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/rom/cmmpluginpacketdata.iby
cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/src/cmpluginpacketdata.cpp
cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/src/cmpluginpacketdataproxy.cpp
cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/traces/OstTraceDefinitions.h
cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/traces/fixed_id.definitions
cmmanager/cmmgr/cmmplugins/cmpluginwlan/data/10281BB2.rss
cmmanager/cmmgr/cmmplugins/cmpluginwlan/group/bld.inf
cmmanager/cmmgr/cmmplugins/cmpluginwlan/group/cmpluginwlan.mmp
cmmanager/cmmgr/cmmplugins/cmpluginwlan/inc/cmpluginwlan.h
cmmanager/cmmgr/cmmplugins/cmpluginwlan/inc/cmwlancoveragecheck.h
cmmanager/cmmgr/cmmplugins/cmpluginwlan/rom/cmmpluginwlan.iby
cmmanager/cmmgr/cmmplugins/cmpluginwlan/src/cmpluginwlan.cpp
cmmanager/cmmgr/cmmplugins/cmpluginwlan/src/cmpluginwlanproxy.cpp
cmmanager/cmmgr/cmmplugins/cmpluginwlan/src/cmwlancoveragecheck.cpp
cmmanager/cmmgr/cmmplugins/cmpluginwlan/traces/OstTraceDefinitions.h
cmmanager/cmmgr/cmmplugins/cmpluginwlan/traces/fixed_id.definitions
cmmanager/cmmgr/cmmplugins/group/bld.inf
cmmanager/cmmgr/cmmserver/conf/cmmanager.confml
cmmanager/cmmgr/cmmserver/conf/cmmanager_10207376.crml
cmmanager/cmmgr/cmmserver/group/bld.inf
cmmanager/cmmgr/cmmserver/group/cmmserver.mmp
cmmanager/cmmgr/cmmserver/inc/cmmanagerimpl.h
cmmanager/cmmgr/cmmserver/inc/cmmanagertextresolver.h
cmmanager/cmmgr/cmmserver/inc/cmmbearerpriority.h
cmmanager/cmmgr/cmmserver/inc/cmmbearerprioritycache.h
cmmanager/cmmgr/cmmserver/inc/cmmcache.h
cmmanager/cmmgr/cmmserver/inc/cmmconnmethodinstance.h
cmmanager/cmmgr/cmmserver/inc/cmmconnmethoditem.h
cmmanager/cmmgr/cmmserver/inc/cmmconnmethodstruct.h
cmmanager/cmmgr/cmmserver/inc/cmmdbchangelistener.h
cmmanager/cmmgr/cmmserver/inc/cmmdestinationinstance.h
cmmanager/cmmgr/cmmserver/inc/cmmdestinationstruct.h
cmmanager/cmmgr/cmmserver/inc/cmminstancemapping.h
cmmanager/cmmgr/cmmserver/inc/cmmlistenermanager.h
cmmanager/cmmgr/cmmserver/inc/cmmserver.h
cmmanager/cmmgr/cmmserver/inc/cmmsession.h
cmmanager/cmmgr/cmmserver/inc/cmmstarter.h
cmmanager/cmmgr/cmmserver/inc/cmmtransactionhandler.h
cmmanager/cmmgr/cmmserver/rom/cmmserver.iby
cmmanager/cmmgr/cmmserver/src/cmmanagerimpl.cpp
cmmanager/cmmgr/cmmserver/src/cmmanagertextresolver.cpp
cmmanager/cmmgr/cmmserver/src/cmmbearerpriority.cpp
cmmanager/cmmgr/cmmserver/src/cmmbearerprioritycache.cpp
cmmanager/cmmgr/cmmserver/src/cmmcache.cpp
cmmanager/cmmgr/cmmserver/src/cmmconnmethodinstance.cpp
cmmanager/cmmgr/cmmserver/src/cmmconnmethoditem.cpp
cmmanager/cmmgr/cmmserver/src/cmmconnmethodstruct.cpp
cmmanager/cmmgr/cmmserver/src/cmmdbchangelistener.cpp
cmmanager/cmmgr/cmmserver/src/cmmdestinationinstance.cpp
cmmanager/cmmgr/cmmserver/src/cmmdestinationstruct.cpp
cmmanager/cmmgr/cmmserver/src/cmminstancemapping.cpp
cmmanager/cmmgr/cmmserver/src/cmmlistenermanager.cpp
cmmanager/cmmgr/cmmserver/src/cmmserver.cpp
cmmanager/cmmgr/cmmserver/src/cmmsession.cpp
cmmanager/cmmgr/cmmserver/src/cmmsrvstatic.cpp
cmmanager/cmmgr/cmmserver/src/cmmstarter.cpp
cmmanager/cmmgr/cmmserver/src/cmmtransactionhandler.cpp
cmmanager/cmmgr/cmmserver/traces/OstTraceDefinitions.h
cmmanager/cmmgr/cmmserver/traces/fixed_id.definitions
cmmanager/cmmgr/database/rom/cmmanagerdatabase.iby
cmmanager/cmmgr/database/src/cmmanagertableformats.cpp
cmmanager/cmmgr/group/bld.inf
cmmanager/connection_settings_shim/bwins/connection_settings_shimu.def
cmmanager/connection_settings_shim/connection_settings_shim.pro
cmmanager/connection_settings_shim/eabi/connection_settings_shimu.def
cmmanager/connection_settings_shim/inc/cmconnectionmethod_shim_s60_p.h
cmmanager/connection_settings_shim/inc/cmdestination_shim_s60_p.h
cmmanager/connection_settings_shim/inc/cmmanager_shim_s60_p.h
cmmanager/connection_settings_shim/rom/connection_settings_shim.iby
cmmanager/connection_settings_shim/src/cmconnectionmethod_shim.cpp
cmmanager/connection_settings_shim/src/cmconnectionmethod_shim_s60.cpp
cmmanager/connection_settings_shim/src/cmdestination_shim.cpp
cmmanager/connection_settings_shim/src/cmdestination_shim_s60.cpp
cmmanager/connection_settings_shim/src/cmmanager_shim.cpp
cmmanager/connection_settings_shim/src/cmmanager_shim_s60.cpp
cmmanager/connection_settings_shim/traces/OstTraceDefinitions.h
cmmanager/connection_settings_shim/tsrc/ut/testcmmgrshim.cpp
cmmanager/connection_settings_shim/tsrc/ut/testcmmgrshim.h
cmmanager/connection_settings_shim/tsrc/ut/testcmmgrshim.pro
cmmanager/connection_settings_shim/tsrc/ut/tools/cmmgrshim_ctc.bat
cmmanager/cpdestinationplugin/cpdestinationplugin.pro
cmmanager/cpdestinationplugin/inc/cpadddestinationentryitemdata.h
cmmanager/cpdestinationplugin/inc/cpdestinationentryitem.h
cmmanager/cpdestinationplugin/inc/cpdestinationgroup.h
cmmanager/cpdestinationplugin/inc/cpdestinationplugin.h
cmmanager/cpdestinationplugin/inc/cpiapitem.h
cmmanager/cpdestinationplugin/res/cpdestinationplugin.qrc
cmmanager/cpdestinationplugin/rom/cpdestinationplugin.iby
cmmanager/cpdestinationplugin/rom/cpdestinationplugin_resources.iby
cmmanager/cpdestinationplugin/src/cpadddestinationentryitemdata.cpp
cmmanager/cpdestinationplugin/src/cpdestinationentryitem.cpp
cmmanager/cpdestinationplugin/src/cpdestinationgroup.cpp
cmmanager/cpdestinationplugin/src/cpdestinationplugin.cpp
cmmanager/cpdestinationplugin/src/cpiapitem.cpp
cmmanager/cpdestinationplugin/traces/OstTraceDefinitions.h
cmmanager/cpipsettingsplugin/cpipsettingsplugin.pro
cmmanager/cpipsettingsplugin/inc/cpipsettingsplugin.h
cmmanager/cpipsettingsplugin/inc/cpipsettingsview.h
cmmanager/cpipsettingsplugin/rom/cpipsettingsplugin.iby
cmmanager/cpipsettingsplugin/rom/cpipsettingsplugin_resources.iby
cmmanager/cpipsettingsplugin/src/cpipsettingsplugin.cpp
cmmanager/cpipsettingsplugin/src/cpipsettingsview.cpp
cmmanager/cppacketdataapplugin/cppacketdataapplugin.pro
cmmanager/cppacketdataapplugin/inc/cppacketdataapadvancedview.h
cmmanager/cppacketdataapplugin/inc/cppacketdataapplugin.h
cmmanager/cppacketdataapplugin/inc/cppacketdataapview.h
cmmanager/cppacketdataapplugin/rom/cppacketdataapplugin.iby
cmmanager/cppacketdataapplugin/rom/cppacketdataapplugin_resources.iby
cmmanager/cppacketdataapplugin/src/cppacketdataapadvancedview.cpp
cmmanager/cppacketdataapplugin/src/cppacketdataapplugin.cpp
cmmanager/cppacketdataapplugin/src/cppacketdataapview.cpp
cmmanager/cppacketdataapplugin/traces/OstTraceDefinitions.h
cmmanager/cppacketdataapplugin/tsrc/ut/hbautotest.cpp
cmmanager/cppacketdataapplugin/tsrc/ut/hbautotest.h
cmmanager/cppacketdataapplugin/tsrc/ut/testcppacketdataapplugin.cpp
cmmanager/cppacketdataapplugin/tsrc/ut/testcppacketdataapplugin.h
cmmanager/cppacketdataapplugin/tsrc/ut/testcppacketdataapplugin.pro
cmmanager/cppacketdataapplugin/tsrc/ut/tools/commsdat_restore.bat
cmmanager/cppacketdataapplugin/tsrc/ut/tools/commsdat_set.bat
cmmanager/cppacketdataapplugin/tsrc/ut/tools/cppacketdataapplugin_ctc.bat
cmmanager/cppacketdataapplugin/tsrc/ut/tools/default.cre
cmmanager/cpwlanapplugin/cpwlanapplugin.pro
cmmanager/cpwlanapplugin/inc/cpwlanapadvancedview.h
cmmanager/cpwlanapplugin/inc/cpwlanapplugin.h
cmmanager/cpwlanapplugin/inc/cpwlanapview.h
cmmanager/cpwlanapplugin/rom/cpwlanapplugin.iby
cmmanager/cpwlanapplugin/src/cpwlanapadvancedview.cpp
cmmanager/cpwlanapplugin/src/cpwlanapplugin.cpp
cmmanager/cpwlanapplugin/src/cpwlanapview.cpp
cmmanager/cpwlanapplugin/traces/OstTraceDefinitions.h
cmmanager/cpwlanapplugin/tsrc/ut/hbautotest.cpp
cmmanager/cpwlanapplugin/tsrc/ut/hbautotest.h
cmmanager/cpwlanapplugin/tsrc/ut/testcpwlanapplugin.cpp
cmmanager/cpwlanapplugin/tsrc/ut/testcpwlanapplugin.h
cmmanager/cpwlanapplugin/tsrc/ut/testcpwlanapplugin.pro
cmmanager/cpwlanapplugin/tsrc/ut/tools/commsdat_restore.bat
cmmanager/cpwlanapplugin/tsrc/ut/tools/commsdat_set.bat
cmmanager/cpwlanapplugin/tsrc/ut/tools/cpwlanapplugin_ctc.bat
cmmanager/cpwlanapplugin/tsrc/ut/tools/default.cre
connectionmonitoring/cellularindicatorplugin/inc/cellularindicatorplugin.h
connectionmonitoring/cellularindicatorplugin/src/cellularindicatorplugin.cpp
connectionmonitoring/connectionview/inc/connectionview.h
connectionmonitoring/connectionview/res/connectionview.css
connectionmonitoring/connectionview/src/connectionview.cpp
connectionmonitoring/connmon/connectionmonitor/BWINSCW/CONNMON_EKA2U.def
connectionmonitoring/connmon/connectionmonitor/EABI/ConnMon_EKA2U.def
connectionmonitoring/connmon/connectionmonitor/inc/CWlanSupport.h
connectionmonitoring/connmon/connectionmonitor/src/CWlanSupport.cpp
connectionmonitoring/connmon/connectionmonitor/src/ConnMonIAP.cpp
connectionmonitoring/connmon/connectionmonitor/src/ConnMonWLANNetwork.cpp
connectionmonitoring/connmon/connectionmonitor/src/connmonwlannetwork_v2.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/BWinsCw/ConnectionUiUtilities_PROTU.def
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/EABI/ConnectionUiUtilities_PROTU.def
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/ActiveConnectViaNote.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/ConnectViaNoteNotif.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/connectingviadiscreetpopup.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/connectingviadiscreetpopupnotif.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/connectionerrordiscreetpopup.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/connectionerrordiscreetpopupnotif.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/devicedialogobserver.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/nowlannetworksavailablenotif.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/nowlansdiscreetpopup.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/ActiveConnectViaNote.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/ConnUiUtilsNotif.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/ConnectViaNoteNotif.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/connectingviadiscreetpopup.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/connectingviadiscreetpopupnotif.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/connectionerrordiscreetpopup.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/connectionerrordiscreetpopupnotif.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/nowlannetworksavailablenotif.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/ActiveWrapper.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/ConnectionUiUtilitiesClient.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/ConnectionUiUtilitiesCommon.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/ConnectionUiUtilitiesImpl.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/connectionstatuspopup.h
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ActiveWrapper.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ConnectionUiUtilities.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ConnectionUiUtilitiesClient.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ConnectionUiUtilitiesImpl.cpp
connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/connectionstatuspopup.cpp
connectionutilities/ConnectionDialogs/cconndlg/clientinc/ActiveLogin.h
connectionutilities/ConnectionDialogs/cconndlg/clientsrc/ActiveLogin.cpp
connectionutilities/ConnectionDialogs/cconndlg/clientsrc/GenConAgentDialogServer.cpp
connectionutilities/ConnectionDialogs/cconndlg/data/CConnDlgPlugin.rss
connectionutilities/ConnectionDialogs/cconndlg/inc/ActiveBase.h
connectionutilities/ConnectionDialogs/cconndlg/inc/ActiveIapPlugin.h
connectionutilities/ConnectionDialogs/cconndlg/inc/ActiveSelectConnectionPlugin.h
connectionutilities/ConnectionDialogs/cconndlg/inc/ActiveSelectExplicit.h
connectionutilities/ConnectionDialogs/cconndlg/inc/AuthenticationDialog.h
connectionutilities/ConnectionDialogs/cconndlg/inc/CConnDlgPrivateCRKeys.h
connectionutilities/ConnectionDialogs/cconndlg/inc/ConnDlgPlugin.h
connectionutilities/ConnectionDialogs/cconndlg/inc/IAPDialog.h
connectionutilities/ConnectionDialogs/cconndlg/inc/IapDialog.inl
connectionutilities/ConnectionDialogs/cconndlg/inc/NewIapDialog.h
connectionutilities/ConnectionDialogs/cconndlg/inc/QosDialog.h
connectionutilities/ConnectionDialogs/cconndlg/inc/ReconnectDialog.h
connectionutilities/ConnectionDialogs/cconndlg/inc/SelectConnectionDialog.h
connectionutilities/ConnectionDialogs/cconndlg/inc/SelectConnectionDialog.inl
connectionutilities/ConnectionDialogs/cconndlg/inc/SelectExplicitDialog.h
connectionutilities/ConnectionDialogs/cconndlg/inc/SelectExplicitDialog.inl
connectionutilities/ConnectionDialogs/cconndlg/inc/sortsnaputils.h
connectionutilities/ConnectionDialogs/cconndlg/src/ActiveBase.cpp
connectionutilities/ConnectionDialogs/cconndlg/src/ActiveIapPlugin.cpp
connectionutilities/ConnectionDialogs/cconndlg/src/ActiveSelectConnectionPlugin.cpp
connectionutilities/ConnectionDialogs/cconndlg/src/ActiveSelectExplicit.cpp
connectionutilities/ConnectionDialogs/cconndlg/src/AuthenticationDialog.cpp
connectionutilities/ConnectionDialogs/cconndlg/src/ConnDlgPlugin.cpp
connectionutilities/ConnectionDialogs/cconndlg/src/IAPDialog.cpp
connectionutilities/ConnectionDialogs/cconndlg/src/NewIapDialog.cpp
connectionutilities/ConnectionDialogs/cconndlg/src/QosDialog.cpp
connectionutilities/ConnectionDialogs/cconndlg/src/ReconnectDialog.cpp
connectionutilities/ConnectionDialogs/cconndlg/src/SelectConnectionDialog.cpp
connectionutilities/ConnectionDialogs/cconndlg/src/SelectExplicitDialog.cpp
connectionutilities/ConnectionDialogs/cconndlg/src/sortsnaputils.cpp
connectionutilities/ConnectionDialogs/ecomsrc/connectiondialogswrapper.cpp
connectionutilities/ConnectionDialogs/group/CConnDlgClient.mmp
connectionutilities/ConnectionDialogs/group/CConnDlgPlugin.mmp
connectionutilities/ConnectionDialogs/group/ConnUiUtilsNotif.mmp
connectionutilities/ConnectionDialogs/group/ConnectionUiUtilities.mmp
connectionutilities/ConnectionDialogs/inc/ConnectionDialogsUidDefs.h
connectionutilities/ConnectionDialogs/traces/OstTraceDefinitions.h
dbcreator/commsdatcreator/Inc/cdcprocessorglobal.h
dbcreator/commsdatcreator/Src/cdccommsdatcreator.cpp
dbcreator/commsdatcreator/Src/cdcprocessordn.cpp
dbcreator/commsdatcreator/Src/cdcprocessorglobal.cpp
dbcreator/inc/cdccommsdatcreator.h
ipcm_plat/bearer_settings_plugin_api/group/bld.inf
ipcm_plat/bearer_settings_plugin_api/inc/cmpluginbase.h
ipcm_plat/bearer_settings_plugin_api/inc/cmpluginbaseeng.h
ipcm_plat/bearer_settings_plugin_api/inc/cmpluginlanbase.h
ipcm_plat/bearer_settings_plugin_api/inc/cmpluginlandef.h
ipcm_plat/bearer_settings_ui_plugin_api/bearer_settings_ui_plugin_api.pri
ipcm_plat/bearer_settings_ui_plugin_api/inc/cpbearerapplugininterface.h
ipcm_plat/connection_settings_shim_api/connection_settings_shim_api.pri
ipcm_plat/connection_settings_shim_api/inc/cmconnectionmethod_shim.h
ipcm_plat/connection_settings_shim_api/inc/cmdestination_shim.h
ipcm_plat/connection_settings_shim_api/inc/cmmanager_shim.h
ipcm_plat/connection_settings_shim_api/inc/cmmanagerdefines_shim.h
ipcm_plat/connection_settings_ui_api/connection_settings_ui_api.pri
ipcm_plat/connection_settings_ui_api/inc/cmapplsettingsui.h
ipcm_plat/connection_ui_utilities_api/inc/ConnectionUiUtilities.h
ipcm_plat/extended_connection_settings_api/group/bld.inf
ipcm_plat/extended_connection_settings_api/inc/cmconnectionmethodext.h
ipcm_plat/extended_connection_settings_api/inc/cmdestinationext.h
ipcm_plat/extended_connection_settings_api/inc/cmmanagerext.h
ipcm_plat/extended_connection_settings_api/inc/cmsettingsui.h
ipcm_plat/group/bld.inf
ipcm_plat/ipcm_plat.pro
ipcm_plat/wlan_security_settings_ui_plugin_api/inc/cpwlansecurityplugininterface.h
ipcm_plat/wlan_security_settings_ui_plugin_api/wlan_security_settings_ui_plugin_api.pri
ipcm_pub/connection_monitor_server_api/inc/rconnmon.h
ipcm_pub/connection_settings_api/group/bld.inf
ipcm_pub/connection_settings_api/inc/cmconnectionmethod.h
ipcm_pub/connection_settings_api/inc/cmconnectionmethod.inl
ipcm_pub/connection_settings_api/inc/cmconnectionmethoddef.h
ipcm_pub/connection_settings_api/inc/cmdestination.h
ipcm_pub/connection_settings_api/inc/cmmanager.h
ipcm_pub/connection_settings_api/inc/cmmanager.inl
ipcm_pub/connection_settings_api/inc/cmmanagerdef.h
ipcm_pub/connection_settings_api/inc/cmpluginpacketdatadef.h
ipcm_pub/connection_settings_api/inc/cmpluginwlandef.h
ipcm_pub/connection_settings_ui_api/inc/cmapplicationsettingsui.h
ipcm_pub/extendedconnpref_api/inc/extendedconnpref.h
ipconnmgmt.pro
--- a/apengine/apeng/group/APEngine.MMP	Fri Apr 16 15:21:37 2010 +0300
+++ b/apengine/apeng/group/APEngine.MMP	Mon May 03 12:53:07 2010 +0300
@@ -63,10 +63,6 @@
 //Macro to /epoc32 headers
 MW_LAYER_SYSTEMINCLUDE
 
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-SYSTEMINCLUDE ../../../../../os/commsfw/commsconfig/commsdatabaseshim/commdbshim/ProtectedDB
-#endif
-
 LIBRARY     commdb.lib 
 LIBRARY     euser.lib
 LIBRARY     efsrv.lib
--- a/apengine/apeng/src/APNetworks.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/apengine/apeng/src/APNetworks.cpp	Mon May 03 12:53:07 2010 +0300
@@ -25,11 +25,7 @@
 #include <ApNetworkItemList.h>
 #include <ApEngineConsts.h>
 
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <ProtectDB.h>
-#else
 #include <comms-infras/commdb/protection/protectdb.h>
-#endif
 
 #include "ApNetworks.h"
 #include "ApEngineLogger.h"
--- a/apengine/apeng/src/APSelect.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/apengine/apeng/src/APSelect.cpp	Mon May 03 12:53:07 2010 +0300
@@ -22,12 +22,7 @@
 #include <eikdef.h>
 #include <d32dbms.h>
 #include <featmgr.h>
-
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <ProtectDB.h>
-#else
 #include <comms-infras/commdb/protection/protectdb.h>
-#endif
 
 #include <etelpckt.h>
 #ifdef __TEST_USE_SHARED_DATA
--- a/apengine/apeng/src/ApProtHandler.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/apengine/apeng/src/ApProtHandler.cpp	Mon May 03 12:53:07 2010 +0300
@@ -21,13 +21,8 @@
 #include <commdb.h>
 #include <ApEngineConsts.h>
 
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <ProtectDB.h>
-#include <protectcpdb.h>
-#else
 #include <comms-infras/commdb/protection/protectdb.h>
 #include <comms-infras/commdb/protection/protectcpdb.h>
-#endif
 
 #include <ApProtHandler.h>
 #include <ApListItem.h>
--- a/apengine/apsettingsplugin/src/APSettingsPlugin.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/apengine/apsettingsplugin/src/APSettingsPlugin.cpp	Mon May 03 12:53:07 2010 +0300
@@ -248,16 +248,17 @@
 // ---------------------------------------------------------
 void CApSettingsPlugin::DoSettingsL()
     {
-    CCmSettingsUi* settings = CCmSettingsUi::NewL();
-    CleanupStack::PushL( settings );
+    // RunSettingsL API removed from new cmmgr implementation
+    //CCmSettingsUi* settings = CCmSettingsUi::NewL();
+    //CleanupStack::PushL( settings );
     
-    if( settings->RunSettingsL() == CCmSettingsUi::EExit )
-        {
+    //if( settings->RunSettingsL() == CCmSettingsUi::EExit )
+    //    {
         //exit from General Settings
-        ProcessCommandL( EAknCmdExit );
-        }
+    //    ProcessCommandL( EAknCmdExit );
+    //    }
     
-    CleanupStack::PopAndDestroy( settings );
+    //CleanupStack::PopAndDestroy( settings );
     }
     
 
--- a/bearermanagement/mpm/group/mpmserver.mmp	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/group/mpmserver.mmp	Mon May 03 12:53:07 2010 +0300
@@ -34,7 +34,6 @@
 epocstacksize 0x5000
 
 SOURCEPATH        ../src
-SOURCE            mpmdialog.cpp
 SOURCE            mpmconnmonevents.cpp
 SOURCE            mpmconnmonreqs.cpp
 SOURCE            mpmserversession.cpp
@@ -55,6 +54,7 @@
 SOURCE            mpmcsidwatcher.cpp
 SOURCE            mpmdialogbase.cpp
 SOURCE            mpmdatausagewatcher.cpp
+SOURCE            mpmofflinewatcher.cpp
 
 USERINCLUDE       ../inc
 
@@ -81,8 +81,6 @@
 LIBRARY           connectionuiutilities.lib
 LIBRARY           cmmanagerdatabase.lib
 LIBRARY           charconv.lib
-LIBRARY           wifiprotclient.lib
-LIBRARY           wifiprotplugin.lib
 LIBRARY           cmmanager.lib
 DEBUGLIBRARY      flogger.lib
 
--- a/bearermanagement/mpm/inc/mpmcommsdataccess.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/inc/mpmcommsdataccess.h	Mon May 03 12:53:07 2010 +0300
@@ -54,36 +54,7 @@
 enum TWlanIapType
     {
     ENotWlanIap,
-    EWlanIap,
-    EEasyWlanIap
-    };
-
-// Structure containing WLAN WEP key data
-// 
-class TWepKeyData
-    {
-public:
-    inline TWepKeyData(): 
-    iWep1(),
-    iWep2(),
-    iWep3(),
-    iWep4(),
-    iWepFormat1( 0 ),
-    iWepFormat2( 0 ),
-    iWepFormat3( 0 ),
-    iWepFormat4( 0 ),
-    iDefaultWep( EWlanDefaultWepKey1 )
-    {};
-    
-    TWlanWepKey iWep1;
-    TWlanWepKey iWep2;
-    TWlanWepKey iWep3;
-    TWlanWepKey iWep4;
-    TUint iWepFormat1;
-    TUint iWepFormat2;
-    TUint iWepFormat3;
-    TUint iWepFormat4;
-    TWlanDefaultWepKey iDefaultWep;
+    EWlanIap
     };
 
 // CLASS DECLARATION
@@ -138,14 +109,6 @@
                            CMPMServerSession&       aSession );
     
         /**
-        * Checks if given IAP is Easy WLan.
-        * @since 3.1
-        * @param aIapId IAP Id to be checked
-        * @return ETrue if IAP Id is Easy WLan, otherwise EFalse.
-        */
-        TBool CheckEasyWLanL( TUint32 aIapId ) const;
-
-        /**
         * Find all snap ids
         *
         * @since 3.2
@@ -196,47 +159,6 @@
         void CheckWLANIapL(CMPMServerSession& aSession);
 
         /**
-        * Checks whether there is a wlan iap which matches the 
-        * parameter settings.
-        *
-        * @since 3.2
-        * @param aSsid Wlan iap ssid
-        * @param aSecMode Wlan iap security mode
-        * @param aConnMode Wlan iap connection mode
-        */
-        TUint32 CheckWLANIapWithSsidL( TWlanSsid& aSsid, 
-                                       TUint32 aSecMode,
-                                       TWlanNetMode aConnMode );
-
-        /**
-        * Stores easy wlan settings into commsdat. 
-        *
-        * @since 3.2
-        * @param aSsid Wlan iap ssid, stored in used ssid field
-        * @param aSecMode Wlan iap security mode
-        * @param aConnMode Wlan iap connection mode
-        * @param aWepData WEP key data
-        * @param aEnableWpaPsk Wlan iap enable psk mode
-        * @param aWpaPsk Wlan iap wpa psk
-        * @param aWpaKeyLen Wlan iap wpa key length
-        */
-        void SetEasyWlanDataL( const TWlanSsid& aSsid,
-                               TUint            aSecMode,
-                               TWlanNetMode     aConnMode,
-                               TWepKeyData      aWepData,
-                               TUint            aEnableWpaPsk,
-                               const TDesC8&    aWpaPsk,
-                               TUint            aWpaKeyLen  );
-
-        /**
-        * Returns Easy wlan service record id.
-        * @since 3.2
-        * @param aDb DB session
-        * return Easy wlan service record id
-        */
-        TUint32 FindEasyWlanServiceIdL( CMDBSession* aDb );
-        
-        /**
         * Checks if the HiddenAgent metadata is set for this IAP.
         * @since 3.2
         * @param aIapId Given Iap Id 
@@ -291,11 +213,10 @@
                                            RArray<TNetIap>& aEmbeddedIaps );
 
         /**
-        * Checks if given IAP is WLAN and whether it is EasyWLAN IAP.
+        * Checks if given IAP is WLAN.
         * @since 3.2
         * @param aIapId IAP Id to be checked
-        * @return One of TWlanIapType values depending on 
-        * whether IAP is WLAN or Easy WLAN
+        * @return One of TWlanIapType values
         */
         TWlanIapType CheckWlanL( TUint32 aIapId ) const;
 
@@ -351,36 +272,6 @@
         * @return Type of the bearer.
         */
         TMPMBearerType GetBearerTypeL( TUint32 aIapId );
-        
-       /**
-        * Check if all active connections are in same snap.
-        *
-        * @since 5.0
-        * @param aActiveBMConns Array of active connections.
-        * @param aSnapId Destination where connections are located is returned
-        *                to this parameter.
-        * @return ETrue if all active connections are in same snap.
-        */
-        TBool AreActiveIapsInSameSnapL ( RArray<TActiveBMConn>& aActiveBMConns,
-                                         TUint32& aSnapId );
-
-       /**
-        * Select active connection according to snap priorities.
-        *
-        * @since 5.0
-        * @param aSnapId Snap id of the connection.
-        * @param aActiveBMConns Array of active connections.
-        * @param aActiveIapId Iap id of the selected active connection.
-        * @param aActiveSnapId Snap id of the selected active connection.
-        * @param aActiveBearerType Bearer type of the selected active connection.
-        * @param aSession Handle to session class.
-        */
-        void SelectActiveConnectionL ( const TUint32 aSnapId,
-                                       RArray<TActiveBMConn>& aActiveBMConns,
-                                       TUint32& aActiveIapId,
-                                       TUint32& aActiveSnapId,
-                                       TMPMBearerType& aActiveBearerType,
-                                       CMPMServerSession& aSession );
 
        /**
         * Check if snap is empty.
@@ -521,30 +412,6 @@
         CCDRecordBase* LoadLinkedRecordL( CMDBSession&  aSession, 
                                           TMDBElementId aElementId );
 
-        /**
-         * Sets WEP key data for WLAN service record
-         * @since 9.1
-         * @param aFormatId Id of the field where WEP format is stored
-         * @param aKeyId Id of the field where WEP key is stored
-         * @param aWepData WEP key value
-         * @param aWepFormat WEP key format value
-         * @param aRecord WLAN service record where data is stored
-         */        
-       void SetWepKeyL( TMDBElementId       aFormatId,
-                        TMDBElementId       aKeyId, 
-                        TWlanWepKey         aWepData,
-                        TUint               aWepFormat,
-                        CMDBGenericRecord*  aRecord );
-        
-       /**
-        * Converts ascii data to hex
-        * @since 3.2
-        * @param aSource Ascii data
-        * @param aDest hex data to be filled in
-        */        
-        void ConvertAsciiToHex( const TDesC8& aSource, 
-				                HBufC8*      aDest );
-
        /**
         * Returns true if destination is internet.
         * @since 5.1
@@ -572,15 +439,6 @@
         * @param aWlanArray Array of wlan bearers
         */
         void BuildWlanArrayL(CMDBSession& aDb, RArray<TUint32>& aWlanArray);
-        
-       /**
-        * Get snap id for the iap
-        * 
-        * @since 5.0
-        * @param aIapId Id of the iap
-        * @return Id of the snap
-        */
-        TUint32 GetSnapIdL( TUint32 aIapId );
 
         /**
         * C++ default constructor.
--- a/bearermanagement/mpm/inc/mpmcsidwatcher.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/inc/mpmcsidwatcher.h	Mon May 03 12:53:07 2010 +0300
@@ -23,6 +23,9 @@
 
 class CRepository;
 
+// Stop after this many consecutive central repository errors.
+const TInt KMpmCsIdWatcherCenRepErrorThreshold = 80;
+
 /**
  *  Class for accessing central repository
  *  Follows KMpmConnectScreenId key in central repository.
@@ -57,8 +60,6 @@
 
     void RunL();
 
-    TInt RunError( TInt aError );
-
     void DoCancel();
 
 private:
@@ -66,6 +67,16 @@
     CMpmCsIdWatcher();
 
     void ConstructL();
+    
+    /**
+     * Request for notifications.
+     */
+    TInt RequestNotifications();
+        
+    /**
+     * Get Connect screen ID from repository.
+     */
+    TInt GetConnectScreenId();
 
 private: // data
 
@@ -84,6 +95,11 @@
      * Set when user connection is enabled
      */
     TBool iUserConnectionSupported;
+
+    /**
+     * Error counter.
+     */
+    TUint iErrorCounter;
     };
 
 #endif // MPMCSIDWATCHER_H
--- a/bearermanagement/mpm/inc/mpmdatausagewatcher.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/inc/mpmdatausagewatcher.h	Mon May 03 12:53:07 2010 +0300
@@ -24,6 +24,9 @@
 class CRepository;
 class CMPMServer;
 
+// Stop after this many consecutive central repository errors.
+const TInt KMpmDataUsageWatcherCenRepErrorThreshold = 80;
+
 /**
  *  Class for accessing central repository.
  *  Follows KCurrentCellularDataUsage key in central repository.
@@ -55,11 +58,6 @@
     void RunL();
 
     /**
-    * Active object's RunError.
-    */
-    TInt RunError( TInt aError );
-
-    /**
     * Active object's DoCancel.
     */
     void DoCancel();
@@ -75,6 +73,17 @@
     * Symbian 2nd phase constructor.
     */
     void ConstructL();
+    
+    /**
+    * Request for notifications.
+    */
+    TInt RequestNotifications();
+    
+    /**
+    * Get current cellular data usage value.
+    */
+    TInt GetCurrentDataUsageValue();
+
 
 private: // data
 
@@ -95,6 +104,11 @@
      */
     CMPMServer* iServer;
 
+    /**
+     * Error counter.
+     */
+    TUint iErrorCounter;
+
     };
 
 #endif // MPMDATAUSAGEWATCHER_H
--- a/bearermanagement/mpm/inc/mpmdialog.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-/*
-* Copyright (c) 2004-2007 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: MPM class used for agent dialog initiation
-*
-*/
-
-/**
-@file mpmdialog.h
-Mobility Policy Manager agent dialog initiation class.
-*/
-
-#ifndef MPMDIALOG_H
-#define MPMDIALOG_H
-
-//  INCLUDES
-#include <e32base.h>
-#include <agentdialog.h>
-
-#include "mpmiapselection.h"
-#include "mpmdialogbase.h" 
-
-// CLASS DECLARATION
-/**
-*  MPM dialog initiation class definition.
-*
-*  @lib MPMServer.exe
-*  @since 3.0
-*/
-class CMPMDialog : protected CMPMDialogBase
-    {    
-public:
-
-    /**
-     * Two-phased constructor.
-     * @param aCommDbConnPref Connection preferences
-     */
-    static CMPMDialog* NewL( CMPMIapSelection&          aIapSelection,
-                             const RAvailableIAPList&   aIAPList,
-                             TUint32                    aBearerSet,
-                             CArrayPtrFlat<CMPMDialog>& aQueue,
-                             CMPMServer&                aServer );
-
-    /**
-     * Destructor.
-     */
-    virtual ~CMPMDialog();
-
-    /**
-     * Write sort snap information to publish and subscribe.
-     * 
-     * Publish and subscribe is used as there is otherwise circular 
-     * reference between MPM and connection dialogs which causes 
-     * @since 3.2 
-     */
-    void PublishSortSnapInfoL();
-
-protected: // Functions from base classes
-    /**
-     * Called from the Base class implementation 
-     * when dialog is started. In the current
-     * call stack it's possible to query aDlg for 
-     * more information and after that pointer is 
-     * invalid.
-     */
-    virtual void Start( CMPMDialogBase* aDlg = NULL );
-
-    
-    /**
-     * From CActive. Cancels UI dialog.
-     * @since 3.0
-     */        
-    void DoCancel();
-
-    /**
-     * From CActive. Run when UI dialog finished.
-     * @since 3.0
-     */               
-    void RunL();
-
-    /**
-     * From CActive. Run if RunL leaves.
-     * @since 3.0
-     * @param aError Error that caused leave.
-     * @return KErrNone
-     */
-    TInt RunError( TInt aError );
-
-private: // New methods
-    /**
-     * Initiates a UI dialog towards Agent Dialog Server.
-     * @since 3.0
-     */
-    void InitSelectConnection();
-
-    /**
-     * C++ default constructor.
-     * @param aCommDbConnPref Connection preferences
-     */
-    CMPMDialog( CMPMIapSelection&           aIapSelection,
-                TUint32                     aBearerSet,
-                CArrayPtrFlat<CMPMDialog>&  aQueue,
-                CMPMServer&                 aServer );
-
-    /**
-     * 2nd phase constructor.
-     */
-    void ConstructL( const RAvailableIAPList& aIAPList );
-
-    /**
-     * Copies aOrigin to aCopy. 
-     * @since 3.2 
-     * @param aOrigin Original RAvailableIAPList.
-     * @param aCopy Copy RAvailableIAPList.
-     * @return KErrNone if successful, otherwise one of the 
-     * system-wide error codes.
-     */
-    TInt CopyArray( const RAvailableIAPList& aOrigin, 
-                    RAvailableIAPList&       aCopy );
-
-    /**
-     * Clean sort snap information from publish and subscribe.
-     * 
-     * @since 3.2 
-     */
-    void CleanSortSnapInfo();
-
-private: // Data
-    // Agent Dialog server
-    RGenConAgentDialogServer    iDlgServ;
-
-    // Iap selection object reference
-    CMPMIapSelection&           iIapSelection;
-
-    // SNAP or IAP id
-    TUint32                     iSnapOrIAPId;
-
-    // Bearer set as a combination of
-    // TExtendedConnPref::TExtendedConnBearer values.
-    TUint32                     iBearerSet;
-
-    // Handle to server class
-    CMPMServer&                 iServer;
-
-    RAvailableIAPList           iIAPList;
-    };
-
-
-#endif // MPMDIALOG_H
-
-// End of file
--- a/bearermanagement/mpm/inc/mpmiapselection.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/inc/mpmiapselection.h	Mon May 03 12:53:07 2010 +0300
@@ -23,18 +23,10 @@
 #include "mpmserversession.h"
 #include "mpmcommsdataccess.h"
 
-class CMPMDialog;
 class CMPMWlanQueryDialog;
 class CMPMConfirmDlgStarting;
 class TMpmConnPref;
 
-enum TOfflineNoteResponse
-    {
-    EOfflineResponseUndefined,
-    EOfflineResponseYes,
-    EOfflineResponseNo
-    };
-
 /**
  * Handles IAP selection. MPM Server session
  * uses the class to select the best available 
@@ -73,7 +65,8 @@
      * Two-phased constructor.
      */
     static CMPMIapSelection* NewL( CMPMCommsDatAccess*  aCommsDatAccess,
-                                   CMPMServerSession*   aSession );
+                                   CMPMServerSession*   aSession,
+                                   CConnectionUiUtilities* aConnUiUtils );
     
     /**
      * Destructor.
@@ -96,14 +89,6 @@
      */
     void ExplicitConnectionL();
 
-    /**
-     * Updates connection dialog contents if 
-     * the dilog is shown
-     *
-     * @since S60 v3.2
-     */
-    void UpdateConnectionDialogL();
-
 public:
     /**
      * Starts Wlan query if Iap is wlan iap.
@@ -218,27 +203,6 @@
     void HandleUserSelectionL( TBool aIsIap, TUint32 aId, TInt aError  );
 
     /**
-     * Returns the stored user response to the offline note
-     * @since 3.2
-     */
-    TOfflineNoteResponse OfflineNoteResponse();
-
-    /**
-     * Stores the user response to the offline note
-     * @since 3.2
-     * @param aResponse Offline note response
-     */
-    void SetOfflineNoteResponse( TOfflineNoteResponse aResponse );
-
-    /**
-     * Iap selection is notified that conenction is started. 
-     * Offline note response is reseted.
-     *
-     * @since 3.2
-     */
-    void ConnectionStarted();
-
-    /**
      * Get original MPM connection preferences
      * @since 5.2
      */
@@ -303,7 +267,8 @@
      * C++ default constructor.
      */
     CMPMIapSelection( CMPMCommsDatAccess*   aCommsDatAccess,
-                      CMPMServerSession*    aSession );
+                      CMPMServerSession*    aSession,
+                      CConnectionUiUtilities* aConnUiUtils );
 
     /**
      * ConstructL
@@ -324,6 +289,9 @@
     // Used for commsdat related functionalities
     CMPMCommsDatAccess* iCommsDatAccess;
 
+    // Handle to connection UI utilities
+    CConnectionUiUtilities* iConnUiUtils;
+
     // Contains state info whether PrefIapnotifs can be sent 
     // and saved IAP info structure.
     TStoredIapInfo iStoredIapInfo;
@@ -337,9 +305,6 @@
     // Pointer to Confirmation dialog.
     CMPMConfirmDlgStarting* iConfirmDlgStarting;
 
-    // Pointer to the dialog active object.
-    CMPMDialog* iDialog;
-
     // Pointer to Wlan query dialog.
     CMPMWlanQueryDialog* iWlanDialog;
 
@@ -356,11 +321,6 @@
     // State of impilict connection start
     TImplicitConnectionState iImplicitState;
 
-    // Offline note response for the connection. 
-    // Offline note must be displayed only once 
-    // during the connection (not for each wlan iap of a snap).
-    TOfflineNoteResponse iOfflineNoteResponse;
-
     // True if connection is roaming (set when displaying offline note)
     TBool iIsRoaming;
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bearermanagement/mpm/inc/mpmofflinewatcher.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,119 @@
+/*
+* 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: Listens for offline mode changes in central repository.
+*
+*/
+
+#ifndef MPMOFFLINEWATCHER_H
+#define MPMOFFLINEWATCHER_H
+
+//  INCLUDES
+#include <e32base.h>
+
+class CRepository;
+class CMPMServer;
+
+// Stop after this many consecutive central repository errors.
+const TInt KMpmOfflineWatcherCenRepErrorThreshold = 80;
+
+/**
+ *  Class for accessing central repository.
+ *  Follows KCoreAppUIsNetworkConnectionAllowed key in central repository.
+ *  @since 5.2
+ */
+class CMpmOfflineWatcher : public CActive
+    {
+
+public:
+
+    /**
+    * New for calling the two-phased constructor.
+    */
+    static CMpmOfflineWatcher* NewL( CMPMServer* aServer );
+
+    /**
+    * Destructor.
+    */
+    virtual ~CMpmOfflineWatcher();
+
+    /**
+     * Start to listen for events.
+     */
+    void StartL();
+    
+    /**
+    * Active object's RunL.
+    */
+    void RunL();
+
+    /**
+    * Active object's DoCancel.
+    */
+    void DoCancel();
+
+private:
+
+    /**
+    * C++ default constructor.
+    */
+    CMpmOfflineWatcher( CMPMServer* aServer );
+
+    /**
+    * Symbian 2nd phase constructor.
+    */
+    void ConstructL();
+    
+    /**
+    * Request for notifications.
+    */
+    TInt RequestNotifications();
+    
+    /**
+    * Get current offline mode value.
+    */
+    TInt GetCurrentOfflineValue();
+
+
+private: // data
+
+    /**
+     * Is offline feature supported.
+     */
+    TBool iOfflineFeatureSupported;
+
+    /**
+     * Central repository handle.
+     * Own.
+     */
+    CRepository* iRepository;
+
+    /**
+     * Offline mode activity value.
+     */
+    TInt iOfflineMode;     // type: TCoreAppUIsNetworkConnectionAllowed
+
+    /**
+     * Pointer to the MPM Server object.
+     * Not own.
+     */
+    CMPMServer* iServer;
+
+    /**
+     * Error counter.
+     */
+    TUint iErrorCounter;
+
+    };
+
+#endif // MPMOFFLINEWATCHER_H
--- a/bearermanagement/mpm/inc/mpmserver.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/inc/mpmserver.h	Mon May 03 12:53:07 2010 +0300
@@ -29,6 +29,7 @@
 #include <etel.h>           // RTelServer
 #include <etelmm.h>         // RMobilePhone
 #include <etelpckt.h>       // RPacketService
+#include <ConnectionUiUtilities.h>
 
 #include "mpmcommon.h"
 #include "rmpm.h"
@@ -38,6 +39,7 @@
 class CMPMCommsDatAccess;
 class CMpmCsIdWatcher;
 class CMpmDataUsageWatcher;
+class CMpmOfflineWatcher;
 
 // CONSTANTS
 _LIT( KMPMPanicCategory, "Mobility Policy Manager Server" );
@@ -167,6 +169,13 @@
     EMPMBearerTypeOther
     };
 
+enum TOfflineWlanQueryResponse
+    {
+    EOfflineResponseUndefined,
+    EOfflineResponseYes,
+    EOfflineResponseNo
+    };
+
 // FUNCTION PROTOTYPES
 void PanicServer( TInt aPanic );
 
@@ -179,7 +188,6 @@
 class CMPMConfirmDlgStarting;
 class CMPMDefaultConnection;
 class CMPMWlanQueryDialog;
-class CMPMDialog;
 
 // CLASS DECLARATION
 /**
@@ -343,8 +351,10 @@
         * Checks if the connection is started for the Iap Id.
         * @since 3.2
         * @param aIapId IAP Id of the connection
+        * @param aConnId Connection Id
         */
-        TBool CheckIfStarted( const TUint32 aIapId );
+        TBool CheckIfStarted( const TUint32 aIapId, 
+                              const TConnectionId aConnId );
 
         /**
         * Checks if a connection is started with wlan iap.
@@ -445,12 +455,6 @@
                                const TPrefIAPNotifCaller aCaller );
 
         /**
-        * Update Connection dialog of each session
-        * @since 3.2
-        */
-        void UpdateSessionConnectionDlgL();
-
-        /**
         * Handling of blacklisting certain IAP and the presumed IAP for 
         * the certain connection.
         * @since 3.1
@@ -629,13 +633,6 @@
         inline CMPMWlanQueryDialog* FirstInWlanQueryQueue();
 
         /**
-        * Get the ConnectDialogQueue.
-        * @since 3.2
-        * @return Pointer to the CMPMDialogQueue.
-        */
-        inline CArrayPtrFlat<CMPMDialog>* ConnectDialogQueue();
-
-        /**
         * Get the Default Connection object.
         * @since 3.2
         * @return Pointer to the Default Connection object.
@@ -790,34 +787,6 @@
         inline CMpmCsIdWatcher* CsIdWatcher();
 
         /**
-        * Change state of the P&S keys according to active connection.
-        * @since 5.0
-        * @param aSession Handle to session used by connection.
-        */
-        void UpdateActiveConnectionL( CMPMServerSession& aSession );
-
-        /**
-        * Map bearer type between MPM and commsdat.
-        * @since 5.0
-        * @param aBearerType Bearer type used by MPM for active connection selection.
-        * @return Bearer type used by commsdat
-        */
-        TUint32 MapBearerType( TMPMBearerType aBearerType );
-
-        /**
-        * Writes new active connection to the P&S keys
-        * @since 5.0
-        */    
-        void PublishActiveConnection();
-        
-        /**
-        * Returns number of active connections.
-        * @since 5.0
-        * @return Number of active connections
-        */
-        TInt NumberOfActiveConnections();
-
-        /**
         * Returns server session instance that corresponds to given
         * connection id.
         * @since 5.2
@@ -832,6 +801,39 @@
         * @since 5.2
         */
         void StopCellularConns();
+        
+        /**
+        * Handle to connection ui utilities
+        */        
+        inline CConnectionUiUtilities* ConnUiUtils() const;
+
+        /**
+        * Offline mode watcher updates the mode variable stored by MPM server.
+        * @since 5.2
+        * @param aNewModeValue New offline mode value to be updated.
+        */
+        void UpdateOfflineMode( TInt aNewModeValue );
+
+        /**
+        * Tells if the phone is in offline mode.
+        * @since 5.2
+        * @return ETrue if phone is in offline mode.
+        */
+        TBool IsPhoneOffline();
+
+        /**
+        * Tells the "Use WLAN in offline mode" query response.
+        * @since 5.2
+        * @return TOfflineWlanQueryResponse (not_responded/yes/no).
+        */
+        TOfflineWlanQueryResponse OfflineWlanQueryResponse();
+
+        /**
+        * Called when the "Use WLAN in offline mode" query has been responded.
+        * @since 5.2
+        * @param aResponse setting the query response value (not_responded/yes/no).
+        */
+        void SetOfflineWlanQueryResponse( TOfflineWlanQueryResponse aResponse);
 
     private:
 
@@ -912,9 +914,6 @@
 
         // Solves problem with overlapping Wlan Queries
         CArrayPtrFlat<CMPMWlanQueryDialog>* iWlanQueryQueue;
-
-        // Solves problem with overlapping Connection Dialogs
-        CArrayPtrFlat<CMPMDialog>* iConnectDialogQueue;
         
         // Handles Default Connection selection
         CMPMDefaultConnection* iDefaultConnection;
@@ -938,24 +937,30 @@
         CMpmCsIdWatcher* iMpmCsIdWatcher;
 
         /**
-         * Handle to another central repository watcher
+         * Handle to central repository watcher
          */
         CMpmDataUsageWatcher* iMpmDataUsageWatcher;
 
-        // Iap id of the active connection
-        TUint32 iActiveIapId;
-        
-        // Snap id of the active connection
-        TUint32 iActiveSnapId;
-
-        // Bearer type of the active connection
-        TMPMBearerType iActiveBearerType;
+        /**
+         * Handle to central repository watcher
+         */
+        CMpmOfflineWatcher* iMpmOfflineWatcher;
 
         // Dedicated clients
         RArray<TUint32> iDedicatedClients;
 
         // Used for commsdat related functionalities
         CMPMCommsDatAccess* iCommsDatAccess;
+
+        // Handle to connection UI utilities
+        //
+        CConnectionUiUtilities* iConnUiUtils;
+        
+        // Offline mode.
+        TInt iOfflineMode;
+        
+        // Is WLAN usage already accepted in this offline session.
+        TOfflineWlanQueryResponse iOfflineWlanQueryResponse;
     };
 
 #include "mpmserver.inl"
--- a/bearermanagement/mpm/inc/mpmserver.inl	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/inc/mpmserver.inl	Mon May 03 12:53:07 2010 +0300
@@ -136,15 +136,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CMPMServer::ConnectDialogQueue
-// -----------------------------------------------------------------------------
-//
-inline CArrayPtrFlat<CMPMDialog>* CMPMServer::ConnectDialogQueue()
-    {
-    return iConnectDialogQueue;
-    }
-
-// -----------------------------------------------------------------------------
 // CMPMServer::IncrementConnections
 // -----------------------------------------------------------------------------
 //
@@ -262,9 +253,18 @@
 // CMPMServer::RoamingWatcher()
 // -----------------------------------------------------------------------------
 //
-CMPMRoamingWatcher* CMPMServer::RoamingWatcher() const
+inline CMPMRoamingWatcher* CMPMServer::RoamingWatcher() const
     {
     return iRoamingWatcher;
     }
 
+// -----------------------------------------------------------------------------
+// CMPMServer::ConnUiUtils()
+// -----------------------------------------------------------------------------
+//
+inline CConnectionUiUtilities* CMPMServer::ConnUiUtils() const
+    {
+    return iConnUiUtils;
+    }
+
 // End of File
--- a/bearermanagement/mpm/inc/mpmserversession.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/inc/mpmserversession.h	Mon May 03 12:53:07 2010 +0300
@@ -28,7 +28,7 @@
 #include <commdbconnpref.h> // for TCommDbConnPref
 #include <connpref.h>       // for TConnPref
 #include <rconnmon.h>       // for TConnMonIapInfo
-#include <ConnectionUiUtilities.h> //TMsgQueryLinkedResults
+#include <ConnectionUiUtilities.h>
 #include "rmpm.h"
 #include "mpmserver.h"
 
@@ -289,13 +289,6 @@
         void ClientErrorNotificationL( TInt aError );
 
         /**
-        * Checks if phone is in offline mode or not.
-        * @since 3.1
-        * @return ETrue if phone is in offline mode, otherwise EFalse.
-        */
-        TBool IsPhoneOfflineL() const;
-
-        /**
         * Returns the list of available IAPs, where the blacklisted IAPs 
         * have already been removed.
         * @since 3.2
@@ -328,13 +321,6 @@
         void SortSnapL( const TUint32   aSnapId, 
                         TMpmSnapBuffer& aSortedIaps );
 
-        /**
-        * If session is displaying connection selection dialog
-        * updated contents for it are written to publish& subscribe API.
-        *
-        * @since 3.2
-        */
-        void UpdateConnectionDialogL();
 
         /**
         * Returns a reference to iStoredIapInfo. 
@@ -807,9 +793,9 @@
         * @param aValidatedIap Iap validated by MPM for roaming
         * @return ETrue if necessary, otherwise EFalse.
         */
-        TBool CheckNotifNeed( const TUint32       aCurrentIap,
-                              const TUint32       aLastNotifiedIap,
-                              const TUint32       aValidatedIap );
+        TBool CheckNotifNeedL( const TUint32       aCurrentIap,
+                               const TUint32       aLastNotifiedIap,
+                               const TUint32       aValidatedIap );
 
         /**
         * Returns the list of unavailable IAPs.
@@ -944,21 +930,26 @@
         //    
         CMPMIapSelection* iIapSelection;
 
-		// Stored state of migrating to carrier
-		// 
-		TMigrateToCarrierState iMigrateState;
+				// Stored state of migrating to carrier
+				// 
+				TMigrateToCarrierState iMigrateState;
 
-		// Last Iap notified using PreferredIap-notification
-		//
-		TUint32 iLastNotifiedIap;
+				// Last Iap notified using PreferredIap-notification
+				//
+				TUint32 iLastNotifiedIap;
 		
-		// Iap to which connection is migrating
+		    // Iap to which connection is migrating
         //
         TUint32 iMigrateIap;
 
         // Set when this session is user connection
-		//
+		    //
         TBool iUserConnection;
+        
+        // Set when disconnect dialog is shown to avoid 
+        // showing duplicate cellulara data usage dialog
+        //
+        TBool iDisconnectDialogShown;
     };
 
 #include "mpmserversession.inl"
--- a/bearermanagement/mpm/inc/mpmwlanquerydialog.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/inc/mpmwlanquerydialog.h	Mon May 03 12:53:07 2010 +0300
@@ -22,16 +22,8 @@
 #include <e32std.h>
 #include <wdbifwlansettings.h> //for struct
 #include <ConnectionUiUtilities.h>
-#include <wifiprotuiclient.h>
-#include <wifiprotreturn.h>
 
-#include "mpmiapselection.h" // for TOfflineNoteResponse
-
-// ID of Easy Wep dialog
-const TUid KUidEasyWepDlg = { 0x101FD673 };
-
-// ID of Easy Wpa dialog
-const TUid KUidEasyWpaDlg = { 0x101FD674 };
+#include "mpmcommsdataccess.h"
 
 // ID of OfflineWlanNote dialog
 const TUid KUidCOfflineWlanNoteDlg = { 0x101FD671 };
@@ -51,16 +43,8 @@
                                         ///< Wlan network supports Protected Setup
     };
 
-const TInt KEasyWepQuery256BitMaxLength = 58;
+class CMPMIapSelection;
 
-class TWlanAgtWepKeyData
-    {
-public:
-    TBuf< KEasyWepQuery256BitMaxLength > iKey;
-    TBool iHex;
-    };
-
-class CMPMIapSelection;
 /**
  *  Handles displaying wlan related dialogs
  *
@@ -72,12 +56,7 @@
 
 enum TWlanQueryState
     {
-    EOffline,
-    EWlanNetwork,
-    EWepSettings,
-    EWpaSettings, 
-    EWPS,
-    ERetrySettingsStorage
+    EOffline
     };
 
 public:
@@ -119,14 +98,6 @@
         * @since 3.2
         */
         void StartWlanQueryL();
-        
-        /**
-        * Stores user defined easy wlan parameters to commsdat
-        * if easy wlan has been selected.
-        *
-        * @since 3.2
-        */
-        void StoreEasyWlanSelectionL();
 
 private:
 
@@ -134,105 +105,16 @@
          * Propagates wlan network selection as an initial value for the dialog,
          * Used if there are several dialogs queued.
          *
-         * @param aWlanIapId     Selected WLAN IAP
-         * @param aOfflineStatus Offline note response
          * @param aDialogStatus  Status of the dialog when destroyed.
          * @since 3.2
          */
-        void OfferInformation( TUint32 aWlanIapId, 
-                               TOfflineNoteResponse aOfflineStatus,
-                               TInt aDialogStatus );
+        void OfferInformation( TInt aDialogStatus );
 
-        CMPMWlanQueryDialog( CMPMIapSelection&  aSession,
+        CMPMWlanQueryDialog( CMPMIapSelection&  aIapSelection,
                              TUint32            aSelectedWlanIap );
 
         void ConstructL();
 
-        /**
-        * Gets Easy Wlan data from member variables and stores 
-        * it to arguments
-        *
-        * @since 9.1
-        * @param aSsid Wlan iap ssid, stored in used ssid field
-        * @param aSecMode Wlan iap security mode
-        * @param aConnMode Wlan iap connection mode
-        * @param aWepKeyData Wlan iap wep key data
-        * @param aEnableWpaPsk Wlan iap enable psk mode
-        * @param aWpaPsk Wlan iap wpa psk
-        * @param aWpaKeyLen Wlan iap wpa key length
-        */
-        void GetEasyWlanDataL( TWlanSsid&    aSsid,
-                               TUint&        aSecMode,
-                               TWlanNetMode& aConnMode,
-                               TWepKeyData&  aWepKeyData, 
-                               TUint&        aEnableWpaPsk,
-                               TDes8&        aWpaPsk,
-                               TUint&        aWpaKeyLen  );
-
-        /**
-        * Maps TWlanConnectionSecurityMode to security mode stored in CommsDat
-        *
-        * @since 9.1
-        * @param aConnSecmode Security mode in TWlanConnectionSecurityMode format
-        * @param aCommsdatSecMode returned security mode value in CommsDat format
-        */
-        TInt ConnSecModeToCommsDatSecMode( TWlanConnectionSecurityMode aConnSecmode,
-                                           TUint& aCommsdatSecMode ) const;
-
-        /**
-        * Maps TWlanIapSecurityMode to security mode stored in CommsDat
-        *
-        * @since 9.1
-        * @param aConnSecmode Security mode in TWlanIapSecurityMode format
-        * @param aCommsdatSecMode returned security mode value in CommsDat format
-        */
-        TInt IapSecModeToCommsDatSecMode( TWlanIapSecurityMode aConnSecmode,
-                                          TUint& aCommsdatSecMode ) const;
-
-        /**
-        * Gets Easy Wlan data from member variables when WPS has been used 
-        * and stores it to arguments
-        *
-        * @since 9.1
-        * @param aSsid Wlan iap ssid, stored in used ssid field
-        * @param aSecMode Wlan iap security mode
-        * @param aConnMode Wlan iap connection mode
-        * @param aWepKeyData WEP key data
-        * @param aEnableWpaPsk Wlan iap enable psk mode
-        * @param aWpaPsk Wlan iap wpa psk
-        * @param aWpaKeyLen Wlan iap wpa key length
-        */
-        void GetEasyWlanDataForWpsL( TWlanSsid&    aSsid,
-                                     TUint&        aSecMode,
-                                     TWlanNetMode& aConnMode,
-                                     TWepKeyData&  aWepKeyData, 
-                                     TUint&        aEnableWpaPsk,
-                                     TDes8&        aWpaPsk,
-                                     TUint&        aWpaKeyLen  );
-
-        /**
-        * Starts WPS dialog and sets the active object active.
-        *
-        * @since 9.1
-        */
-        void StartWpsDlgL();
-
-        /**
-        * Determines whether WEP key is hex format based on the length
-        *
-        * @since 9.1
-        * @param aLength 
-        * @return ETrue if format is hex, otherwise EFalse
-        */
-        TBool IsWepFormatHexL( TInt aLength ) const;
-
-        /**
-        * Get the network preferences using ConnectionUiUtilities API.
-        *
-        * @since 5.1
-        */
-        void GetNetworkPrefs();
-
 private: // data
 
         // Reference to iap selection object
@@ -244,47 +126,20 @@
         // Stores data for wlan network guery
         TPckgBuf<TMpmWlanNetworkPrefs> iNetworkPrefs;
         
-        // Stores data for wep query
-        TPckgBuf<TWlanAgtWepKeyData> iNotifWep;
-        
-        // Stores data for wpa query
-        TPckgBuf< TBuf< KWLMMaxWpaPskLength > > iNotifWpaKey;
-
         //Interfce to Notifier
         RNotifier iNotifier;
 
         //State of querying Wlan settings
         TWlanQueryState iWlanQueryState;
             
-        // selected wlan iap id
-        TUint32 iWlanIapId;
-            
-        // ETrue if user has selected easy wlan
-        TBool iEasyWlanSelected;
-            
-        // Flag that can be used to cancel the dialog startup based on earlier dialog
-        TInt iOverrideStatus;
-            
         // Connection Ui Utilities pointer
         CConnectionUiUtilities* iConnUiUtils;
-
-        // Contains WLAN settings received through WPS
-        TWlanProtectedSetupCredentialAttribute iWpsAttribute;
-
-        // WPS client pointer for displaying WPS dialogs
-        CWiFiProtUiClient* iWps;
-
-        // Contains WPS return value
-        WiFiProt::TWiFiReturn iWpsReturn;
-
-        // True if wps has been completed. 
-        TBool iWpsCompleted;
         
-        // Retry count
-        TUint32 iRetryCount;
+        // Wlan iap
+        TUint32 iWlanIapId;
         
-        // Retry timer
-        RTimer iTimer;
+        // Flag that can be used to cancel the dialog startup based on earlier dialog
+        TInt iOverrideStatus;
     };
 
 #endif // MPMWLANQUERYDIALOG_H
--- a/bearermanagement/mpm/inc/rmpm.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/inc/rmpm.h	Mon May 03 12:53:07 2010 +0300
@@ -63,71 +63,6 @@
 // Write policy
 _LIT_SECURITY_POLICY_C1( KMPMSortSnapWritePolicy, ECapabilityNetworkControl );
 
-// Definitions for Reading/Writing user connection data
-// to publish and subscribe API
-//
-// UID of the category (note that uid is the same as sort snap category)
-const TUid KMPMUserConnectionCategory = { 0x101f6d3a };
-
-// Keys for this category
-const TUint KMPMPSKeyUserConnectionSnap = 10001;
-const TUint KMPMPSKeyUserConnectionIap = 10002;
-
-// Property types
-const TInt KMPMUserConnectionSnapType = RProperty::EInt;
-const TInt KMPMUserConnectionIapType = RProperty::EInt;
-
-// Read policy, no capabilities required
-// This format is used instead of _LIT_SECURITY_POLICY_PASS, which 
-// produces pclint warnings
-_LIT_SECURITY_POLICY_C1( KMPMUserConnectionReadPolicy, ECapability_None );
-
-// Write policy
-_LIT_SECURITY_POLICY_C1( KMPMUserConnectionWritePolicy, ECapabilityNetworkControl );
-
-// Definitions for Reading/Writing active connection data 
-// to publish and subscribe API
-//
-// UID of the category
-const TUid KMPMActiveConnectionCategory = { 0x101f6d3a };
-
-// Property types
-const TInt KMPMActiveConnectionIapType = RProperty::EInt;
-const TInt KMPMActiveConnectionSnapType = RProperty::EInt;
-const TInt KMPMActiveConnectionBearerType = RProperty::EInt;
-
-// Keys for active connection category
-
-/**
- * Iap Id of the active connection.
- * If set to zero then no active connection
- */
-const TUint KMPMPSKeyActiveConnectionIap = 10003;
-
-/**
- * Snap Id of the active connection.
- * If set to zero then possible iap connection
- */
-const TUint KMPMPSKeyActiveConnectionSnap = 10004;
-
-/**
- * Possible values:
- * 0,
- * KCommDbBearerVirtual,
- * KCommDbBearerWLAN,
- * KCommDbBearerWcdma,
- * KCommDbBearerUnknown,
- */
-const TUint KMPMPSKeyActiveConnectionBearer = 10005;
-
-// Read policy, no capabilities required
-// This format is used instead of _LIT_SECURITY_POLICY_PASS, which 
-// produces pclint warnings
-_LIT_SECURITY_POLICY_C1( KMPMActiveConnectionReadPolicy, ECapability_None );
-
-// Write policy
-_LIT_SECURITY_POLICY_C1( KMPMActiveConnectionWritePolicy, ECapabilityNetworkControl );
-
 // MACROS
 _LIT( KPanicCategory, "MPM Client" );
 
--- a/bearermanagement/mpm/src/mpmcommsdataccess.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/src/mpmcommsdataccess.cpp	Mon May 03 12:53:07 2010 +0300
@@ -235,13 +235,6 @@
 
                 TUint32 presumedIapId = aIapId; 
 
-                // Find and change Iap and Net Id if SSID exist
-                //
-                if ( !CheckEasyWLanL( aIapId ) )
-                    {
-                    aSession.MyServer().Events()->FindSSID( ssid, aIapId, aNetId );
-                    }
-
                 // Store Iap Id, Net Id and empty APN to TConnInfo, 
                 // so that FindAPN can utilise the information 
                 // during the validation of next IAP to support 
@@ -416,125 +409,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CMPMCommsDatAccess::CheckEasyWLanL
-// -----------------------------------------------------------------------------
-//
-TBool CMPMCommsDatAccess::CheckEasyWLanL( TUint32 aIapId ) const
-    {
-    MPMLOGSTRING2( "CMPMCommsDatAccess::CheckEasyWLanL: IAP Id = %i", aIapId)
-
-    TBool easyWlan = EFalse;
-    CCommsDatabase* commsDatabase = CCommsDatabase::NewL();
-    CleanupStack::PushL( commsDatabase );
-
-    // Make hidden records visible
-    // 
-    commsDatabase->ShowHiddenRecords();
-
-    CCommsDbTableView* commsDbIapTableView = 
-        commsDatabase->OpenViewMatchingUintLC( TPtrC( IAP ),
-                                               TPtrC( COMMDB_ID ),
-                                               aIapId );
-
-    User::LeaveIfError( commsDbIapTableView->GotoFirstRecord() );
-
-    TInt length1( 0 );
-
-    commsDbIapTableView->ReadColumnLengthL( TPtrC( IAP_SERVICE_TYPE ), 
-                                            length1 );
-
-    HBufC* buf1 = HBufC::NewLC( length1 );
-    TPtr ptr1( buf1->Des() );
-
-    // Read IAP's service type
-    //
-    commsDbIapTableView->ReadTextL(TPtrC( IAP_SERVICE_TYPE ), ptr1 );
-    MPMLOGSTRING2(
-        "CMPMCommsDatAccess::CheckEasyWLanL: IAP service type = %S", &ptr1 )
-
-    if ( ptr1.Compare( TPtrC( LAN_SERVICE ) ) == KErrNone )
-        {
-        TUint32 service( 0 );
-        commsDbIapTableView->ReadUintL( TPtrC( IAP_SERVICE ), service );
-
-        // Now open a view to LAN_SERVICE table
-        //
-        CCommsDbTableView* commsDbLanTableView = 
-            commsDatabase->OpenViewMatchingUintLC( TPtrC( LAN_SERVICE ),
-                                                   TPtrC( COMMDB_ID ),
-                                                   service );
-
-        User::LeaveIfError( commsDbLanTableView->GotoFirstRecord() );
-
-        TUint32 commDbId( 0 );
-
-        commsDbLanTableView->ReadUintL( TPtrC( COMMDB_ID ), commDbId );
-
-        // Now open a view to WLAN_SERVICE table
-        //
-        // If non wlan product, wlan tables won't exist and this will 
-        // leave. In that case do not check WLAN related issues 
-        //
-        CCommsDbTableView* commsDbWlanTableView( NULL );
-        TRAPD( err2, commsDbWlanTableView =
-                     commsDatabase->OpenViewMatchingUintLC( TPtrC( WLAN_SERVICE ),
-                                                            TPtrC( WLAN_SERVICE_ID ),
-                                                            commDbId );
-                     CleanupStack::Pop( commsDbWlanTableView ) );
-        if ( err2 == KErrNone )
-            {
-            // Push back to cleanup stack. Object must be popped within 
-            // TRAP, to avoid unbalance in cleanup stack and panic 71
-            CleanupStack::PushL( commsDbWlanTableView );
-
-            TInt err = commsDbWlanTableView->GotoFirstRecord();
-
-            if ( err == KErrNone )
-                {
-                TInt ssidLength( 0 );
-                commsDbWlanTableView->ReadColumnLengthL( TPtrC( NU_WLAN_SSID ), 
-                                                                ssidLength );
-                if ( ssidLength == 0 )
-                    {
-                    MPMLOGSTRING(
-                        "CMPMCommsDatAccess::CheckEasyWLanL: IAP is Easy WLAN" )
-                    easyWlan = ETrue;
-                    }
-                else
-                    {
-                    MPMLOGSTRING(
-                        "CMPMCommsDatAccess::CheckEasyWLanL: IAP isn't Easy WLAN" )
-                    easyWlan = EFalse;
-                    }
-                }
-            else
-                {
-                MPMLOGSTRING2( "CMPMCommsDatAccess::CheckEasyWLanL\
- GotoFirstRecord returned %d", err )
-                }
-
-            // Release memory
-            //
-            CleanupStack::PopAndDestroy( commsDbWlanTableView );
-            }
-        else
-            {
-            MPMLOGSTRING2(
-                        "CMPMCommsDatAccess::CheckEasyWLanL: WLAN table view failed, err %d", err2 )
-            }    
-        CleanupStack::PopAndDestroy( commsDbLanTableView );
-        }
-
-    // Release memory
-    //
-    CleanupStack::PopAndDestroy( buf1 );
-    CleanupStack::PopAndDestroy( commsDbIapTableView );
-    CleanupStack::PopAndDestroy( commsDatabase );
-
-    return easyWlan;
-    }
-
-// -----------------------------------------------------------------------------
 // CMPMCommsDatAccess::DumpIAPsL
 // -----------------------------------------------------------------------------
 //
@@ -1034,317 +908,6 @@
     CleanupStack::PopAndDestroy( table );
     CleanupStack::PopAndDestroy( commsDatabase );
     }
-        
-// -----------------------------------------------------------------------------
-// CMPMCommsDatAccess::CheckWLANIapWithSsidL
-// -----------------------------------------------------------------------------
-//
-
-TUint32 CMPMCommsDatAccess::CheckWLANIapWithSsidL( TWlanSsid& aSsid, 
-                                                   TUint32 aSecMode,
-                                                   TWlanNetMode aConnMode )
-    {
-    MPMLOGSTRING( "CMPMCommsDatAccess::CheckWLANIapWithSsidL" )
-    TUint iapId( 0 );
-
-    // Creating a session with the latest version
-    //     
-    CMDBSession* db = CMDBSession::NewLC( KCDVersion1_1 );
-
-    db->SetAttributeMask( ECDHidden | ECDProtectedWrite );
-
-    // Find Wlan service record
-    //
-    TBuf<KWlanMaxSsidLength> ssid16;
-    CnvUtfConverter::ConvertToUnicodeFromUtf8( ssid16, aSsid );
-    MPMLOGSTRING4( "CMPMCommsDatAccess::CheckWLANIapWithSsidL sec:%d, conn:%d ssid %S", 
-                   aSecMode, 
-                   aConnMode, 
-                   &ssid16 )
-    CMDBRecordSet<CCDWlanServiceRecord>* wlanSet = 
-        new ( ELeave ) CMDBRecordSet<CCDWlanServiceRecord>( 
-         CCDWlanServiceRecord::TableIdL( *db ) );
-    CleanupStack::PushL( wlanSet ); 
-
-    CCDWlanServiceRecord* wlanRecord = new ( ELeave ) 
-        CCDWlanServiceRecord( CCDWlanServiceRecord::TableIdL( *db ) );
-
-    CleanupStack::PushL( wlanRecord ); 
-    wlanSet->LoadL( *db );
-    
-    MPMLOGSTRING2( "CMPMCommsDatAccess::CheckWLANIapWithSsidL, record count:%d", 
-                   wlanSet->iRecords.Count() )
-    TBool matchFound( EFalse );
-    for (TInt i = 0; ( i < wlanSet->iRecords.Count() ) && !matchFound; i++ )
-        {
-        wlanRecord->SetElementId( GetRealElementId( wlanSet->iRecords[i] ) );
-        wlanRecord->LoadL( *db );
-        TBuf<KWlanMaxSsidLength> ssid;
-        ssid = wlanRecord->iWLanSSID;
-        //if not easywlan, continue
-        //
-        if( ssid.Compare( KNullDesC() ) )
-            {
-            ssid = wlanRecord->iWLanSSID.GetL();
-            TUint32 secMode = wlanRecord->iWlanSecMode;
-            TUint32 connMode = wlanRecord->iWlanConnMode;
-        
-            if ( connMode )
-                {
-                connMode = 1;    
-                }
-            MPMLOGSTRING3( "CMPMCommsDatAccess::CheckWLANIapWithSsidL CommsDat secmode:%d, connmode:%d ", 
-        				   secMode, 
-        				   connMode )
-
-            if ( !ssid.Compare( ssid16 ) && ( aConnMode == connMode ) )
-        	    {
-        	    //compare sec mode
-        	    if ( aSecMode == EWlanSecModeOpen || aSecMode == EWlanSecModeWep )
-        		    {
-        		    if ( aSecMode == secMode )
-        		        {
-        		        MPMLOGSTRING( "CMPMCommsDatAccess::CheckWLANIapWithSsidL match found, open/wep " )
-        		        matchFound = ETrue;
-        		        }
-        			    
-        		    }
-            	//WPA PSK case
-            	else if ( aSecMode == EWlanSecModeWpa2 )
-            		{
-        	    	if ( ( secMode > EWlanSecModeWep ) && (wlanRecord->iWlanEnableWpaPsk) )
-        	    	    {
-        	    	    MPMLOGSTRING( "CMPMCommsDatAccess::CheckWLANIapWithSsidL match found, wpa psk " )
-        	    	    matchFound = ETrue;
-        	    	    }
-            		}
-            	//aSecMode = EWlanSecModeWpa
-            	else
-            		{
-        	    	if ( secMode > EWlanSecModeWep )
-        	    	    {
-        	    	    MPMLOGSTRING( "CMPMCommsDatAccess::CheckWLANIapWithSsidL match found, wpa " )
-        	    	    matchFound = ETrue;
-        	    	    }
-            		}
-        			
-        		}
-        	}
-        }
-    
-    if ( matchFound )
-        {
-        // load Iap record
-        //
-        CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*> ( 
-            CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
-        CleanupStack::PushL( iapRecord );
-
-        CCDLANServiceRecord* lanRecord = static_cast<CCDLANServiceRecord*> (
-            CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord ));
-        CleanupStack::PushL( lanRecord );
-        
-        iapRecord->iServiceType.SetL( TPtrC( KCDTypeNameLANService ) );
-        
-        lanRecord->SetRecordId( wlanRecord->iWlanServiceId );
-        lanRecord->LoadL( *db );
-
-        iapRecord->iService = lanRecord->ElementId();
-
-/*        iapRecord->iServiceType.SetL( TPtrC( KCDTypeNameLANService ) );
-        iapRecord->iService = wlanRecord->iWlanServiceId;
-*/
-        if( iapRecord->FindL( *db ) )
-            {
-            MPMLOGSTRING( "CMPMCommsDatAccess::CheckWLANIapWithSsidL iap found" )
-            // Iap record found
-            //
-            iapId = iapRecord->RecordId();
-            }
-        CleanupStack::PopAndDestroy( lanRecord );
-        CleanupStack::PopAndDestroy( iapRecord );
-        }
-    CleanupStack::PopAndDestroy( wlanRecord );
-    CleanupStack::PopAndDestroy( wlanSet );
-    CleanupStack::PopAndDestroy( db );
-    
-    return iapId;
-    }
-
-// -----------------------------------------------------------------------------
-// CMPMCommsDatAccess::SetEasyWlanDataL
-// -----------------------------------------------------------------------------
-//
-void CMPMCommsDatAccess::SetEasyWlanDataL( const TWlanSsid& aSsid,
-                                           TUint            aSecMode,
-                                           TWlanNetMode     aConnMode,
-                                           TWepKeyData      aWepData,
-                                           TUint            aEnableWpaPsk,
-                                           const TDesC8&    aWpaPsk,
-                                           TUint            aWpaKeyLen )
-    {
-    MPMLOGSTRING( "CMPMCommsDatAccess::SetEasyWlanDataL" )
-    CMDBSession* dbSession = CMDBSession::NewL( KCDVersion1_1 );
-    CleanupStack::PushL(dbSession);
-
-    // Try to open a transaction to obtain write lock
-    dbSession->OpenTransactionL();
-
-    TUint32 wlanId = FindEasyWlanServiceIdL( dbSession );
-    if( !wlanId )
-        {
-        MPMLOGSTRING( "CMPMCommsDatAccess::SetEasyWlanDataL unable to store \
- easy wlan settings" )
-        dbSession->Close();		
-		CleanupStack::PopAndDestroy( dbSession );
-        return;
-        }
-    
-    CMDBGenericRecord* record = static_cast<CMDBGenericRecord*> 
-				    ( CCDRecordBase::RecordFactoryL( 0));
-    CleanupStack::PushL( record );
-    record->InitializeL( TPtrC( WLAN_SERVICE ),NULL );
-    record->SetRecordId( wlanId );
-    record->LoadL( *dbSession );
-
-        TBuf<KWlanMaxSsidLength> ssid16;
-        CnvUtfConverter::ConvertToUnicodeFromUtf8( ssid16, aSsid );
-        CMDBField<TDesC>* textField = (CMDBField<TDesC>*)record->GetFieldByIdL(KCDTIdWlanUsedSSID);
-        textField->SetMaxLengthL( ssid16.Length());
-        textField->SetL( ssid16 );
-    
-        *((CMDBField<TUint32>*)record->GetFieldByIdL(KCDTIdWlanSecMode)) = aSecMode;
-        *((CMDBField<TUint32>*)record->GetFieldByIdL(KCDTIdWlanConnMode)) = aConnMode;
-    
-        if (aEnableWpaPsk)
-    	    {
-    	    MPMLOGSTRING( "CMPMCommsDatAccess::SetEasyWlanDataL wpa psk" )
-    	    CMDBField<TDesC8>* binField = (CMDBField<TDesC8>*)
-		   									record->GetFieldByIdL(KCDTIdWlanWpaPreSharedKey);
-		    binField->SetMaxLengthL( aWpaKeyLen );
-		    binField->SetL( aWpaPsk );
-
-		    *((CMDBField<TUint32>*)record->GetFieldByIdL(KCDTIdWlanWpaKeyLength)) = aWpaKeyLen;
-		    *((CMDBField<TUint32>*)record->GetFieldByIdL(KCDTIdWlanEnableWpaPsk)) = aEnableWpaPsk;
-    	    }
-        else if (aSecMode == EWlanSecModeWep)
-    	    {
-    	    MPMLOGSTRING( "CMPMCommsDatAccess::SetEasyWlanDataL wep psk" )
-     	    *((CMDBField<TUint32>*)record->GetFieldByIdL( KCDTIdWlanWepIndex )) = 
-     	        aWepData.iDefaultWep;
- 
-    	    SetWepKeyL( KCDTIdWlanFormatKey1, KCDTIdWlanWepKey1, 
-    	                aWepData.iWep1, aWepData.iWepFormat1, record );
-            SetWepKeyL( KCDTIdWlanFormatKey2, KCDTIdWlanWepKey2, 
-                        aWepData.iWep2, aWepData.iWepFormat2, record );
-            SetWepKeyL( KCDTIdWlanFormatKey3, KCDTIdWlanWepKey3, 
-                        aWepData.iWep3, aWepData.iWepFormat3, record );
-            SetWepKeyL( KCDTIdWlanFormatKey4, KCDTIdWlanWepKey4, 
-                        aWepData.iWep4, aWepData.iWepFormat4, record );
-    	    }
-    	else
-    	    {
-    	    MPMLOGSTRING2( "CMPMCommsDatAccess::SetEasyWlanDataL sec mode %d, no key data written",
-    	         aSecMode )
-    	    }
-    
-        //Finally save all to commsdat.
-        record->ModifyL( *dbSession );
-        dbSession->CommitTransactionL();
-        dbSession->Close();
-        CleanupStack::PopAndDestroy( record );
-        CleanupStack::PopAndDestroy( dbSession );
-    }
-
-// -----------------------------------------------------------------------------
-// CMPMCommsDatAccess::SetWepKeyL
-// -----------------------------------------------------------------------------
-//
-void CMPMCommsDatAccess::SetWepKeyL( TMDBElementId       aFormatId,
-                                     TMDBElementId       aKeyId, 
-                                     TWlanWepKey         aWepKey,
-                                     TUint               aWepFormat,
-                                     CMDBGenericRecord*  aRecord )
-    {
-    CMDBField<TUint32>* formatField = static_cast<CMDBField<TUint32>*>
-            ( aRecord->GetFieldByIdL( aFormatId ) );
-    formatField->SetL( aWepFormat );
-    CMDBField<TDesC8>* wepKey = static_cast<CMDBField<TDesC8>*>
-            ( aRecord->GetFieldByIdL( aKeyId ) );
-    if ( aWepFormat )
-        {
-        wepKey->SetL( aWepKey );
-        }
-    else
-        {
-        //Convert Ascii to Hex format, as only Hex value to be stored in CommsDat
-        HBufC8* buf8Conv = HBufC8::NewLC( aWepKey.Length() * KMpmDoubleLength );
-        ConvertAsciiToHex( aWepKey, buf8Conv );
-        wepKey->SetL( buf8Conv->Des() );
-        CleanupStack::PopAndDestroy( buf8Conv );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CMPMCommsDatAccess::ConvertAsciiToHex
-// -----------------------------------------------------------------------------
-//
-void CMPMCommsDatAccess::ConvertAsciiToHex( const TDesC8& aSource, 
-        							        HBufC8* aDest )
-    {
-    MPMLOGSTRING( "CMPMCommsDatAccess::ConvertAsciiToHex" )
-    _LIT( hex, "0123456789ABCDEF" );
-    TInt size = aSource.Size();
-    TPtr8 ptr = aDest->Des();
-    for ( TInt ii = 0; ii < size; ii++ )
-    	{
-    	TText8 ch = aSource[ii];
-    	ptr.Append( hex()[(ch/16)&0x0f] );
-    	ptr.Append( hex()[ch&0x0f] );
-    	}
-    }
-
-// -----------------------------------------------------------------------------
-// CMPMCommsDatAccess::FindEasyWlanServiceIdL
-// -----------------------------------------------------------------------------
-//
-TUint32 CMPMCommsDatAccess::FindEasyWlanServiceIdL( CMDBSession* aDb )
-    {
-    // if the method returns the record container there is for 
-    // some reason garbage data in the key values
-    //
-    TUint32 wlanId( 0 );
-    MPMLOGSTRING( "CMPMCommsDatAccess::FindEasyWlanServiceIdL" )    
-
-    CMDBRecordSet<CCDWlanServiceRecord>* wlanSet = 
-        new ( ELeave ) CMDBRecordSet<CCDWlanServiceRecord>( 
-         CCDWlanServiceRecord::TableIdL( *aDb ) );
-    CleanupStack::PushL( wlanSet ); 
-    wlanSet->LoadL( *aDb );
-    
-    TBool found( EFalse );
-    for ( TInt i = 0; i < wlanSet->iRecords.Count() && !found; i++ )
-        {
-        CCDWlanServiceRecord* wlanRecord = new ( ELeave ) 
-            CCDWlanServiceRecord( CCDWlanServiceRecord::TableIdL( *aDb ) );
-        CleanupStack::PushL( wlanRecord );
-
-        wlanRecord->SetElementId( GetRealElementId( wlanSet->iRecords[i] ) );
-        wlanRecord->LoadL( *aDb );
-        
-        TDesC ssid = wlanRecord->iWLanSSID;
-        if( !ssid.Compare( KNullDesC() ) )
-            {
-            MPMLOGSTRING2( "CMPMCommsDatAccess::FindEasyWlanServiceIdL: \
-found service entry %i", wlanRecord->RecordId() )
-            wlanId = wlanRecord->RecordId();
-            found = ETrue;
-            }
-        CleanupStack::PopAndDestroy( wlanRecord );
-        }
-    CleanupStack::PopAndDestroy( wlanSet );
-    return wlanId;
-    }
 
 // -----------------------------------------------------------------------------
 // CMPMCommsDatAccess::CheckHiddenAgentL
@@ -1753,12 +1316,6 @@
                 TInt ssidLength( 0 );
                 commsDbWlanTableView->ReadColumnLengthL( TPtrC( NU_WLAN_SSID ), 
                                                      ssidLength );
-                if ( ssidLength == 0 )
-                    {
-                    MPMLOGSTRING(
-                        "CMPMCommsDatAccess::CheckWlanL: IAP is Easy WLAN" )
-                    wlan = EEasyWlanIap;
-                    }
                 }
             else
                 {
@@ -2325,7 +1882,26 @@
 
             TMpmConnPref tempMpmConnPref;
             tempMpmConnPref.SetSnapId( snap );
-            aSession.IapSelectionL()->ChooseBestIAPL( tempMpmConnPref, aAvailableIAPList );
+
+            // Ensure that there will be no infinite loops by dropping
+            // this virtual iap out from the list of available iaps.
+            // E.g. next layer SNAP could be the same as current SNAP.
+            RAvailableIAPList tempList;
+            CleanupClosePushL( tempList );
+              
+            for( TInt i=0; i < aAvailableIAPList.Count(); i++ )
+                {
+                // drop this virtual iap out from the list of
+                // available iaps to prevent from infinitely looping
+                //	
+                if ( aAvailableIAPList[i] != aVirtualIapId )
+                    {
+                    tempList.Append( aAvailableIAPList[i] );
+                    }
+                }
+            aSession.IapSelectionL()->ChooseBestIAPL( tempMpmConnPref, tempList );
+            CleanupStack::PopAndDestroy( &tempList );
+
             aRealIapId = tempMpmConnPref.IapId();
             }
         else if ( virtualNext->iNextLayerIAP != 0 )
@@ -2344,10 +1920,18 @@
                 MPMLOGSTRING(
                     "CMPMCommsDatAccess::FindRealIapL: Call FindRealIapL" )
 
-                FindRealIapL( iap2->RecordId(), 
-                              aRealIapId, 
-                              aAvailableIAPList,
-                              aSession );
+                if ( aVirtualIapId != virtualNext->iNextLayerIAP )
+                    {
+                    FindRealIapL( iap2->RecordId(), 
+                                  aRealIapId, 
+                                  aAvailableIAPList,
+                                  aSession );
+                    }
+                else
+                    {
+                    aRealIapId = 0;
+                    MPMLOGSTRING( "CMPMCommsDatAccess::FindRealIapL: Virtual iap points to itself" )
+                    }
                 }
             else
                 {
@@ -2668,201 +2252,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CMPMCommsDatAccess::AreActiveIapsInSameSnapL
-// -----------------------------------------------------------------------------
-//
-TBool CMPMCommsDatAccess::AreActiveIapsInSameSnapL ( RArray<TActiveBMConn>& aActiveBMConns,
-                                                     TUint32& aSnapId )
-    {
-    MPMLOGSTRING( "CMPMCommsDatAccess::AreActiveIapsInSameSnapL" )
-    TBool same = ETrue;
-    TUint32 snapId = 0;
-    TUint32 prevSnapId = 0;
-            
-    // Go through all active connections
-    for (TInt index = 0; index < aActiveBMConns.Count(); index++ )
-        {
-        // Do check only for active connections
-        if ( aActiveBMConns[index].iConnInfo.iState != EStarted )
-            {
-            continue;
-            }
-        
-        // Iap id must be nonzero
-        if ( aActiveBMConns[index].iConnInfo.iIapId )
-            {
-            prevSnapId = snapId;
-            // Get destination id for the iap
-            snapId = GetSnapIdL( aActiveBMConns[index].iConnInfo.iIapId );
-                        
-            // Check if previous iap's destination is different
-            if ( ( ( prevSnapId != snapId ) && prevSnapId && snapId ) ||
-                 !snapId )
-                {
-                // Set return value to false and leave loop
-                same = EFalse;
-                break;
-                }
-            }
-        }
-    
-    // Return destId for later use
-    aSnapId = snapId;
-    
-    return same;
-    }
-
-// -----------------------------------------------------------------------------
-// CMPMCommsDatAccess::SelectActiveConnectionL
-// -----------------------------------------------------------------------------
-//
-void CMPMCommsDatAccess::SelectActiveConnectionL ( const TUint32 aSnapId,
-                                                   RArray<TActiveBMConn>& aActiveBMConns,
-                                                   TUint32& aActiveIapId,
-                                                   TUint32& aActiveSnapId,
-                                                   TMPMBearerType& aActiveBearerType,
-                                                   CMPMServerSession& aSession )
-    {
-    MPMLOGSTRING( "CMPMCommsDatAccess::SelectActiveConnectionL" )
-    RArray<TUint32> activeIaps;
-    RArray<TNetIap> iapIds;
-    
-    // Reset output parameters
-    aActiveIapId = 0;
-    aActiveSnapId = 0;
-    aActiveBearerType = EMPMBearerTypeNone;
-
-    CleanupClosePushL( activeIaps );
-        
-    for (TInt index = 0; index < aActiveBMConns.Count(); index++ )
-        {
-        CMPMServerSession* serverSession = 
-            aSession.MyServer().GetServerSession(
-                aActiveBMConns[index].iConnInfo.iConnId );
-
-        // Add only started iaps to array
-        if ( aActiveBMConns[index].iConnInfo.iState == EStarted &&
-             serverSession->ChooseBestIapCalled() )
-            {
-            activeIaps.AppendL ( aActiveBMConns[index].iConnInfo.iIapId );
-            }
-        }
-        
-    CleanupClosePushL( iapIds );
-    SearchDNEntriesL( aSnapId, iapIds );
-    
-    // Remove any deactived IAP from iapIds
-    TInt ret        = KErrNotFound;
-    TInt destCount  = iapIds.Count();
-    
-    // Decrement by one, because count is n, 
-    // but indexes in array are 0 .. n-1.
-    // 
-    destCount--;
-
-    // This time we are browsing the array from the end to the beginning, 
-    // because removing one element from array affects index numbering.
-    for ( TInt k = destCount; k >= 0; k-- )
-        {
-        ret = activeIaps.Find( iapIds[k].iIapId );
-        if ( ret == KErrNotFound )
-            {
-            MPMLOGSTRING2( "CMPMCommsDatAccess::SelectActiveConnectionL: \
-Remove deactived IAP = %i", iapIds[k].iIapId )
-            iapIds.Remove( k );
-            }
-        }
-
-    // Determine the actual priorities for IAPs
-    DeterminePrioritiesL( iapIds, activeIaps, aSession );
-
-    // Check if a matching available IAP is found.
-    if( iapIds.Count() )
-        {
-        // Go through all iaps
-        for ( TInt index = 0; index < iapIds.Count(); index++ )
-            {
-            // Get bearer type
-            TMPMBearerType bearerType = GetBearerTypeL( iapIds[index].iIapId );
-        
-            // If iap is not vpn, wlan or packet then skip it
-            if ( bearerType == EMPMBearerTypeOther )
-                {
-                continue;
-                }
-            
-            // Set bearer type, iap id and snap id
-            for (TInt index2 = 0; index2 < aActiveBMConns.Count(); index2++ )
-                {
-                if ( ( aActiveBMConns[index2].iConnInfo.iIapId ==
-                       iapIds[index].iIapId ) )
-                    {
-                    if ( aSession.MyServer().DedicatedClients().Find(
-                         aActiveBMConns[index2].iConnInfo.iAppUid ) != KErrNone )
-                        {
-                        aActiveSnapId = aActiveBMConns[index2].iConnInfo.iSnap;
-                        aActiveIapId = aActiveBMConns[index2].iConnInfo.iIapId;
-                        aActiveBearerType = bearerType;
-                        }
-                    break;
-                    }
-                }
-            
-            break;
-            }
-        }
-
-    MPMLOGSTRING4(
-        "CMPMCommsDatAccess::SelectActiveConnectionL: Iap id = %i, Snap id = %i, \
-Bearer type = %i",
-        aActiveIapId, aActiveSnapId, aActiveBearerType )
-    
-    CleanupStack::PopAndDestroy( &iapIds );
-    CleanupStack::PopAndDestroy( &activeIaps );
-    }
-    
-// -----------------------------------------------------------------------------
-// CMPMCommsDatAccess::GetSnapIdL
-// -----------------------------------------------------------------------------
-//
-TUint32 CMPMCommsDatAccess::GetSnapIdL( TUint32 aIapId )
-    {
-    MPMLOGSTRING( "CMPMCommsDatAccess::GetSnapIdL" )
-    TUint32 snapId = 0;
-    RArray<TUint> snapIds;
-        
-    CleanupClosePushL( snapIds );
-    // Get destinations
-    FindAllSnapsL( snapIds );
-
-    for (TInt index = 0; index < snapIds.Count(); index++)
-        {
-        RArray<TNetIap> ids;
-        // Get iaps belonging to this snap
-        CleanupClosePushL( ids );
-        SearchDNEntriesL( snapIds[index], ids );
-            
-        for (TInt index2 = 0; index2 < ids.Count(); index2++)
-            {
-            // Check if iap belongs to this destination
-            if (ids[index2].iIapId == aIapId)
-                {
-                snapId = snapIds[index];
-                CleanupStack::PopAndDestroy( &ids );                    
-                CleanupStack::PopAndDestroy( &snapIds );
-                return snapId;
-                }
-            }
-        
-        CleanupStack::PopAndDestroy( &ids );
-        }
-
-    CleanupStack::PopAndDestroy( &snapIds );
-    
-    return snapId;
-    }
-
-// -----------------------------------------------------------------------------
 // CMPMCommsDatAccess::IsSnapEmptyL
 // -----------------------------------------------------------------------------
 //
--- a/bearermanagement/mpm/src/mpmconfirmdlg.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/src/mpmconfirmdlg.cpp	Mon May 03 12:53:07 2010 +0300
@@ -86,7 +86,8 @@
     //  OR
     //  if ConfirmDlgResponse is not accepted by the iConfirmDlgUser.
     //
-    if ( !aDlg || !iConfirmDlgUser.ConfirmDlgResponse( &((CMPMConfirmDlg*)aDlg)->iConfirmDlgUser ) )
+    if ( !aDlg || !iConfirmDlgUser.ConfirmDlgResponse( 
+                                   &((CMPMConfirmDlg*)aDlg)->iConfirmDlgUser ) )
         {
         MPMLOGSTRING3( "CMPMConfirmDlg::Start Display dialog: SNAP %d, IAP %d", 
                        iSnapId, iIAP )
@@ -95,7 +96,7 @@
             {
             case EConfirmDlgHomeNetwork:
                 {                
-                MPMLOGSTRING( "    normal confirm dialog" )
+                MPMLOGSTRING( "    Show home network confirm dialog" )
                 iUtils->ConfirmMethodUsageQuery( iResult,
                                                  true,
                                                  iStatus);
@@ -104,7 +105,7 @@
                 
             case EConfirmDlgVisitorNetwork:
                 {
-                MPMLOGSTRING( "    normal confirm dialog" )
+                MPMLOGSTRING( "    Show visitor network confirm dialog" )
                 iUtils->ConfirmMethodUsageQuery( iResult,
                                                  false,
                                                  iStatus);
--- a/bearermanagement/mpm/src/mpmconfirmdlgstarting.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/src/mpmconfirmdlgstarting.cpp	Mon May 03 12:53:07 2010 +0300
@@ -193,8 +193,6 @@
 //
 void CMPMConfirmDlgStarting::UserSelectedCancel( const TInt aError )
     {
-    MPMLOGSTRING2( "CMPMConfirmDlgStarting<0x%x>::UserSelectedCancel", 
-        iConnId )
     MPMLOGSTRING3( "CMPMConfirmDlgStarting<0x%x>::UserSelectedCancel:\
  Complete %d", iConnId, aError )
     iIapSelection.ChooseIapComplete( aError, NULL );
--- a/bearermanagement/mpm/src/mpmconnmonevents.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/src/mpmconnmonevents.cpp	Mon May 03 12:53:07 2010 +0300
@@ -535,13 +535,6 @@
             iAvailableIAPs = eventIap->IapAvailability();
             UpdateIAPRefreshTime();
             IapAvailabilityChange( EConnMonEvent );
-            
-            TRAPD( err, iMyServer.UpdateSessionConnectionDlgL() )
-            if( err != KErrNone )
-                {
-                MPMLOGSTRING2( "CMPMConnMonEvents::EventL UpdateSessionConnectionDlgL \
-error code %d", err )
-                }
             break;
             }
         default:
--- a/bearermanagement/mpm/src/mpmcsidwatcher.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/src/mpmcsidwatcher.cpp	Mon May 03 12:53:07 2010 +0300
@@ -29,16 +29,20 @@
 CMpmCsIdWatcher::CMpmCsIdWatcher()
     : CActive( EPriorityStandard )
     {
+    MPMLOGSTRING( "CMpmCsIdWatcher::CMpmCsIdWatcher" )
+            
     CActiveScheduler::Add( this );    
     }
 
 
 // ---------------------------------------------------------------------------
-// Creates central repositor object
+// Creates central repository object
 // ---------------------------------------------------------------------------
 //
 void CMpmCsIdWatcher::ConstructL()
     {
+    MPMLOGSTRING( "CMpmCsIdWatcher::ConstructL" )
+
     iRepository = CRepository::NewL( KMpmOccCenRepUid );
 
     // Check whether user connection is supported
@@ -56,6 +60,8 @@
 //
 CMpmCsIdWatcher* CMpmCsIdWatcher::NewL()
     {
+    MPMLOGSTRING( "CMpmCsIdWatcher::NewL" )
+
     CMpmCsIdWatcher* self = new( ELeave ) CMpmCsIdWatcher();
     CleanupStack::PushL( self );
     self->ConstructL();
@@ -68,7 +74,9 @@
 // ---------------------------------------------------------------------------
 //
 CMpmCsIdWatcher::~CMpmCsIdWatcher()
-    {    
+    {
+    MPMLOGSTRING( "CMpmCsIdWatcher::~CMpmCsIdWatcher" )
+
     Cancel();
     delete iRepository;
     }
@@ -79,13 +87,13 @@
 //
 void CMpmCsIdWatcher::StartL()
     {
-    // Request notification
-    User::LeaveIfError( iRepository->NotifyRequest( KMpmConnectScreenId,
-                        iStatus ));
-    SetActive();
+    MPMLOGSTRING( "CMpmCsIdWatcher::StartL" )
+            
+    // Get the initial Connect screen ID from repository.
+    User::LeaveIfError( GetConnectScreenId() );
 
-    // Get value from central repository
-    User::LeaveIfError(iRepository->Get(KMpmConnectScreenId, iConnectScreenId));
+    // Request for notifications.
+    User::LeaveIfError( RequestNotifications() );
     }
 
 // ---------------------------------------------------------------------------
@@ -94,6 +102,8 @@
 //
 TUint32 CMpmCsIdWatcher::ConnectScreenId() const
     {
+    MPMLOGSTRING( "CMpmCsIdWatcher::ConnectScreenId" )
+
     if ( iUserConnectionSupported )
         {
         // Return real value if user connection is supported
@@ -113,26 +123,30 @@
 //
 void CMpmCsIdWatcher::RunL()
     {
-    // Leave if error
-    User::LeaveIfError( iStatus.Int() );
+    MPMLOGSTRING( "CMpmCsIdWatcher::RunL" )
 
-    // Request new notification
-    User::LeaveIfError( iRepository->NotifyRequest( KMpmConnectScreenId,
-        iStatus ));
-    SetActive();
-    
-    // Get value from central repository
-    iRepository->Get( KMpmConnectScreenId, iConnectScreenId );
-    }
+    if ( iStatus.Int() < KErrNone )
+        {
+        MPMLOGSTRING2("Status: 0x%08X", iStatus.Int())
+        iErrorCounter++;
+        if ( iErrorCounter > KMpmCsIdWatcherCenRepErrorThreshold )
+            {
+            MPMLOGSTRING2("Over %d consecutive errors, stopping notifications permanently.",
+                    KMpmCsIdWatcherCenRepErrorThreshold)
+            return;
+            }
+        // Else: Error occured but counter not expired. Proceed.
+        }
+    else
+        {
+        // Notification is received ok => Reset the counter.
+        iErrorCounter = 0;
 
-// ---------------------------------------------------------------------------
-// From class CActive.
-// Nothing to do over here
-// ---------------------------------------------------------------------------
-//
-TInt CMpmCsIdWatcher::RunError( TInt /*aError*/ )
-    {
-    return KErrNone;
+        // Get value from central repository
+        GetConnectScreenId();
+        }
+
+    RequestNotifications();
     }
 
 // ---------------------------------------------------------------------------
@@ -142,6 +156,44 @@
 //
 void CMpmCsIdWatcher::DoCancel()
     {
+    MPMLOGSTRING( "CMpmCsIdWatcher::DoCancel" )
     iRepository->NotifyCancel( KMpmConnectScreenId );
     }
 
+// ---------------------------------------------------------------------------
+// Request notifications.
+// ---------------------------------------------------------------------------
+//
+TInt CMpmCsIdWatcher::RequestNotifications()
+    {
+    MPMLOGSTRING( "CMpmCsIdWatcher::RequestNotifications" )
+
+    TInt err = iRepository->NotifyRequest( KMpmConnectScreenId, iStatus );
+        
+    if ( err == KErrNone )
+        {
+        SetActive();
+        }
+    else
+        {
+        MPMLOGSTRING2( "CMpmCsIdWatcher::RequestNotifications, ERROR: %d", err )
+        }
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Get current repository key value.
+// ---------------------------------------------------------------------------
+//
+TInt CMpmCsIdWatcher::GetConnectScreenId()
+    {
+    MPMLOGSTRING( "CMpmCsIdWatcher::GetConnectScreenId" )
+
+    TInt err = iRepository->Get( KMpmConnectScreenId, iConnectScreenId );
+        
+    if ( err != KErrNone )
+        {
+        MPMLOGSTRING2( "CMpmCsIdWatcher::GetConnectScreenId, ERROR: %d", err )
+        }
+    return err;
+    }
--- a/bearermanagement/mpm/src/mpmdatausagewatcher.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/src/mpmdatausagewatcher.cpp	Mon May 03 12:53:07 2010 +0300
@@ -82,14 +82,11 @@
     {
     MPMLOGSTRING( "CMpmDataUsageWatcher::StartL" )
 
-    // Request notification
-    User::LeaveIfError( iRepository->NotifyRequest( KCurrentCellularDataUsage,
-            iStatus ) );
-    SetActive();
+    // Get the initial data usage value from repository.
+    User::LeaveIfError( GetCurrentDataUsageValue() );
 
-    // Get value from central repository
-    User::LeaveIfError( iRepository->Get( KCurrentCellularDataUsage,
-            iCellularDataUsage ) );
+    // Request notifications.
+    User::LeaveIfError( RequestNotifications() );
     }
 
 // ---------------------------------------------------------------------------
@@ -101,38 +98,39 @@
     {
     MPMLOGSTRING( "CMpmDataUsageWatcher::RunL" )
 
-    User::LeaveIfError( iStatus.Int() );
+    if ( iStatus.Int() < KErrNone )
+        {
+        MPMLOGSTRING2("Status: 0x%08X", iStatus.Int())
+        iErrorCounter++;
+        if ( iErrorCounter > KMpmDataUsageWatcherCenRepErrorThreshold )
+            {
+            MPMLOGSTRING2("Over %d consecutive errors, stopping notifications permanently.",
+                    KMpmDataUsageWatcherCenRepErrorThreshold)
+            return;
+            }
+        // Else: Error occured but counter not expired. Proceed.
+        }
+    else
+        {
+        // Notification is received ok => Reset the counter.
+        iErrorCounter = 0;
 
-    // Request new notification
-    User::LeaveIfError( iRepository->NotifyRequest( KCurrentCellularDataUsage,
-            iStatus ) );
-    SetActive();
+        // Get the new Cellular data usage setting value from central repository.
+        TInt oldCellularDataUsage = iCellularDataUsage;
 
-    TInt oldCellularDataUsage = iCellularDataUsage;
-
-    // Get the new value from central repository
-    User::LeaveIfError( iRepository->Get( KCurrentCellularDataUsage,
-            iCellularDataUsage ) );
+        if ( GetCurrentDataUsageValue() == KErrNone )
+            {
+            // Stop cellular connections if the setting changes into Disabled.
+            if ( oldCellularDataUsage != ECmCellularDataUsageDisabled &&
+                    iCellularDataUsage == ECmCellularDataUsageDisabled &&
+                    iServer->RoamingWatcher()->RoamingStatus() != EMPMRoamingStatusUnknown )
+                {
+                iServer->StopCellularConns();
+                }
+            }
+        }
     
-    // Stop cellular connections if the setting changes into Disabled
-    if ( oldCellularDataUsage != ECmCellularDataUsageDisabled &&
-         iCellularDataUsage == ECmCellularDataUsageDisabled &&
-         iServer->RoamingWatcher()->RoamingStatus() != EMPMRoamingStatusUnknown )
-        {
-        iServer->StopCellularConns();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// From class CActive.
-// Nothing to do over here.
-// ---------------------------------------------------------------------------
-//
-TInt CMpmDataUsageWatcher::RunError( TInt /*aError*/ )
-    {
-    MPMLOGSTRING( "CMpmDataUsageWatcher::RunError" )
-
-    return KErrNone;
+    RequestNotifications();
     }
 
 // ---------------------------------------------------------------------------
@@ -147,3 +145,40 @@
     iRepository->NotifyCancel( KCurrentCellularDataUsage );
     }
 
+// ---------------------------------------------------------------------------
+// Request notifications.
+// ---------------------------------------------------------------------------
+//
+TInt CMpmDataUsageWatcher::RequestNotifications()
+    {
+    MPMLOGSTRING( "CMpmDataUsageWatcher::RequestNotifications" )
+
+    TInt err = iRepository->NotifyRequest( KCurrentCellularDataUsage, iStatus );
+        
+    if ( err == KErrNone )
+        {
+        SetActive();
+        }
+    else
+        {
+        MPMLOGSTRING2( "CMpmDataUsageWatcher::RequestNotifications, ERROR: %d", err )
+        }
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Get current repository key value.
+// ---------------------------------------------------------------------------
+//
+TInt CMpmDataUsageWatcher::GetCurrentDataUsageValue()
+    {
+    MPMLOGSTRING( "CMpmDataUsageWatcher::GetCurrentDataUsageValue" )
+
+    TInt err = iRepository->Get( KCurrentCellularDataUsage, iCellularDataUsage );
+        
+    if ( err != KErrNone )
+        {
+        MPMLOGSTRING2( "CMpmDataUsageWatcher::GetCurrentDataUsageValue, ERROR: %d", err )
+        }
+    return err;
+    }
--- a/bearermanagement/mpm/src/mpmdialog.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,374 +0,0 @@
-/*
-* Copyright (c) 2004-2007 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: MPM user dialog handling
-*
-*/
-
-/**
-@file mpmdialog.cpp
-Mobility Policy Manager user dialog initiation.
-*/
-
-// INCLUDE FILES
-#include <connpref.h> // for TConnPref
-#include <gsmerror.h>
-#include <metadatabase.h>
-#include <datamobilitycommsdattypes.h>
-#include <commdb.h>
-#include <bldvariant.hrh>   // For feature flags
-#include <e32property.h>    //publish and subscribe
-
-#include "mpmdialog.h"
-#include "mpmlogger.h"
-#include "mpmdefaultconnection.h"
-#include "rmpm.h"
-#include "mpmcommsdataccess.h"
-
-// ============================= LOCAL FUNCTIONS ===============================
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CMPMDialog::NewL
-// -----------------------------------------------------------------------------
-//
-CMPMDialog* CMPMDialog::NewL( CMPMIapSelection&             aIapSelection,
-                              const RAvailableIAPList&      aIAPList,
-                              TUint32                       aBearerSet,
-                              CArrayPtrFlat<CMPMDialog>&    aQueue,
-                              CMPMServer&                   aServer )
-    {
-    CMPMDialog* self = new ( ELeave ) CMPMDialog( aIapSelection, 
-                                                  aBearerSet,
-                                                  aQueue,
-                                                  aServer );
-    CleanupStack::PushL( self );
-    self->ConstructL( aIAPList );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CMPMDialog::CMPMDialog
-// -----------------------------------------------------------------------------
-//
-CMPMDialog::CMPMDialog( CMPMIapSelection&           aIapSelection,
-                        TUint32                     aBearerSet,
-                        CArrayPtrFlat<CMPMDialog>&  aQueue,
-                        CMPMServer&                 aServer )
-    :   CMPMDialogBase( *(CArrayPtrFlat<CMPMDialogBase>*)&aQueue ),
-        iIapSelection( aIapSelection ), 
-        iSnapOrIAPId( 0 ),
-        iBearerSet( aBearerSet ),
-        iServer ( aServer )
-    {
-    }
-
-
-// -----------------------------------------------------------------------------
-// CMPMDialog::~CMPMDialog
-// -----------------------------------------------------------------------------
-//
-CMPMDialog::~CMPMDialog()
-    {
-    Cancel();
-    MPMLOGSTRING2( "CMPMDialog::~CMPMDialog: deleted, Completing with code = %i", 
-                       iStatus.Int() )
-    iDlgServ.Close();
-    // Clean up all other stuff
-    iIAPList.Close();
-    }
-
-
-// -----------------------------------------------------------------------------
-// CMPMDialog::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CMPMDialog::ConstructL( const RAvailableIAPList& aIAPList )
-    {
-    User::LeaveIfError( CopyArray( aIAPList, iIAPList ) );
-    CMPMDialogBase::ConstructL();
-    }
-
-// -----------------------------------------------------------------------------
-// CMPMDialog::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CMPMDialog::Start( CMPMDialogBase* /*aDlg*/ )
-    {
-    InitSelectConnection();
-    }
-
-// -----------------------------------------------------------------------------
-// CMPMDialog::IntSelectConnection
-// -----------------------------------------------------------------------------
-//
-void CMPMDialog::InitSelectConnection()
-    {
-    TInt err = iDlgServ.Connect();
-    // Try to publish sort snap data
-    //
-    if ( err == KErrNone )
-        {
-        TRAP( err, PublishSortSnapInfoL() )
-        }
-    if ( err != KErrNone )
-        {
-        // Jump to RunL()
-        TRequestStatus* status = &iStatus;
-        User::RequestComplete( status, err );
-        SetActive();
-        return;
-        }
-
-    // Map bearer set. bearerSet variable is a combination of values
-    // mapped to TCommDbBearer while iBearerSet is a combination of
-    // TExtendedConnPref::TExtendedConnBearer values.
-
-    TUint32 bearerSet( ECommDbBearerVirtual );
-    if ( iBearerSet == TExtendedConnPref::EExtendedConnBearerUnknown )
-        {
-        bearerSet |= ECommDbBearerCSD | ECommDbBearerWcdma |
-                     ECommDbBearerWLAN;
-        }
-    else
-        {
-        if ( iBearerSet & TExtendedConnPref::EExtendedConnBearerWLAN )
-            {
-            bearerSet |= ECommDbBearerWLAN;
-            }
-        if ( iBearerSet & TExtendedConnPref::EExtendedConnBearerCellular )
-            {
-            bearerSet |= ECommDbBearerWcdma;
-            }
-        }
-
-    // API definition was provided by Symbian, but we don't really need 
-    // these parameters with AccessPointConnection. 
-    // 
-    TUint32 unusedVariable( 0 );
-
-    /*  AccessPointConnection API implements also the ChangeConnection in 
-     *  the ALR "world", you should also be careful of the input value of 
-     *  iSnapOrIAPId, because the Destination with the input ElementID is 
-     *  considered the "current Destination in use", so it will not be 
-     *  listed by the notifier. So if you really want to see the ALR 
-     *  version of AccessPointConnection, in input iSnapOrIAPId MUST be  
-     *  an invalid ElementID (e.g. 0), to be sure that no Destinations 
-     *  will be removed from the list. 
-     */
-    iDlgServ.AccessPointConnection( unusedVariable,
-                                    unusedVariable,
-                                    iSnapOrIAPId,
-                                    bearerSet,
-                                    iStatus );
-
-    SetActive();
-    }
-
-// -----------------------------------------------------------------------------
-// CMPMDialog::PublishSortSnapInfoL
-// -----------------------------------------------------------------------------
-//
-void CMPMDialog::PublishSortSnapInfoL()
-    {
-    // allow PublishSortSnapInfoL to run only 
-    // if the dialog is the first one in the queue.
-    // => First one is active one.
-    if ( !IsFirst() )
-        {
-        return;
-        }
-        
-    MPMLOGSTRING( "CMPMDialog::PublishSortSnapInfoL" )
-    RArray<TUint> snaps;
-    CleanupClosePushL( snaps );
-    
-    // set first snap to 0 as ungathegorised
-    //
-    snaps.AppendL( KSortUncategorisedIaps );
-    
-    // Find Snap ids
-    //
-    iServer.CommsDatAccess()->FindAllSnapsL( snaps );
-    
-    // Write iaps for each snap, also 0 is 
-    // included for uncategorised
-    //
-    TMpmSnapPubSubFormat snapData;
-    TInt i( 0 ), err( KErrNone );
-    for(; ( i < snaps.Count() ) && 
-          ( i < KMPMSortSnapMaxKey ); i++ )
-        {
-        snapData.iSnap = snaps[ i ];
-        snapData.iSortedIaps.Reset();
-        // Get sorted iaps
-        //
-        iIapSelection.Session()->SortSnapL( snaps[ i ], snapData.iSortedIaps );
-        
-        // Define pub&sub key if not already defined
-        //
-        err = RProperty::Define( KMPMSortSnapCategory, 
-                                 i,
-                                 KMPMSortSnapType,
-                                 KMPMSortSnapReadPolicy,
-                                 KMPMSortSnapWritePolicy );
-        
-        if ( err != KErrAlreadyExists &&
-             err != KErrNone )
-            {
-            MPMLOGSTRING2( "CMPMDialog::PublishSortSnapInfoL: error in define: %d ", err )
-            }
-        
-        TPtrC8 dataPtr( reinterpret_cast< TUint8* >( &snapData  ), sizeof( snapData ) );
-
-        err = RProperty::Set( KMPMSortSnapCategory, 
-                              i, 
-                              dataPtr );
-        if ( err != KErrNone )
-            {
-            MPMLOGSTRING2( "CMPMDialog::PublishSortSnapInfoL: error in set: %d ", err )
-            }    
-        MPMLOGSTRING3( "CMPMDialog::PublishSortSnapInfoL: snap %d iap count %d",
-                       snapData.iSnap, snapData.iSortedIaps.Count() )
-        }
-
-    // set rest of the keys to undefined
-    // 
-    while( i < KMPMSortSnapMaxKey )
-        {
-        err = RProperty::Delete( KMPMSortSnapCategory, i );
-        if ( err != KErrNotFound &&
-             err != KErrNone )
-            {
-            MPMLOGSTRING2( "CMPMDialog::PublishSortSnapInfoL: error in delete: %d ", err )
-            }
-        i++;
-        }
-    CleanupStack::PopAndDestroy( &snaps );    
-    }
-
-// -----------------------------------------------------------------------------
-// CMPMDialog::RunL
-// -----------------------------------------------------------------------------
-//
-void CMPMDialog::RunL()
-    {
-    MPMLOGSTRING2( "CMPMDialog::RunL: status = %i", 
-        iStatus.Int() )
-        
-    TMDBElementId tableId = iSnapOrIAPId & KCDMaskShowRecordType; 
-    TBool isIap( EFalse );
-    if ( tableId == KCDTIdIAPRecord )
-        {
-        isIap = ETrue;
-        }
-    
-    // Clean data from publish & subscribe
-    //
-    CleanSortSnapInfo();
-        
-    TUint32 id = ( iSnapOrIAPId & KCDMaskShowRecordId ) >> KShift8;
-    iIapSelection.HandleUserSelectionL( isIap, id, iStatus.Int() );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CMPMDialog::RunError
-// -----------------------------------------------------------------------------
-//
-TInt CMPMDialog::RunError(TInt aError)
-    {
-    // Handles a leave occurring in the request completion event handler 
-    // RunL(). The active scheduler calls this function if this active 
-    // object's RunL() function leaves. This gives this active object 
-    // the opportunity to perform any necessary cleanup.
-    // 
-    MPMLOGSTRING2( "CMPMDialog::RunError: RunL left with error = %i", aError )
-    iIapSelection.HandleUserSelectionError( aError );
-
-    // Clean data from publish & subscribe
-    //
-    CleanSortSnapInfo();
-
-    // Return KErrNone to prevent panic 
-    // 
-    return KErrNone;
-    }
-    
-    
-// -----------------------------------------------------------------------------
-// CMPMDialog::DoCancel
-// -----------------------------------------------------------------------------
-//
-void CMPMDialog::DoCancel()
-    {
-    iDlgServ.CancelAccessPointConnection();
-    // Clean data from publish & subscribe
-    //
-    CleanSortSnapInfo();
-    }
-
-
-// -----------------------------------------------------------------------------
-// CMPMDialog::CopyArray
-// -----------------------------------------------------------------------------
-//
-TInt CMPMDialog::CopyArray( const RAvailableIAPList& aOrigin, 
-                            RAvailableIAPList&       aCopy )
-	{
-	TInt err( KErrNone );
-
-    // Clean array first
-    // 
-	aCopy.Reset(); 
-
-	for( TInt i( 0 ); ( i < aOrigin.Count() ) && ( err == KErrNone ); ++i )
-		{
-		err = aCopy.Append( aOrigin[i] );
-		if ( err != KErrNone )
-			{
-			// Cleanup and return
-			// 
-            MPMLOGSTRING2( "CMPMDialog::CopyArray: Append error = %i", err )
-			aCopy.Reset();
-			}
-		}
-
-	return err;
-	} 
-
-// -----------------------------------------------------------------------------
-// CMPMDialog::CleanSortSnapInfoL
-// -----------------------------------------------------------------------------
-//
-void CMPMDialog::CleanSortSnapInfo()
-    {
-    MPMLOGSTRING( "CMPMDialog::CleanSortSnapInfoL" )
-
-    // Clean info from all keys
-    //
-    for( TInt i(0); i < KMPMSortSnapMaxKey; i++ )
-        {
-        TInt err = RProperty::Delete( KMPMSortSnapCategory, i );
-        if ( err != KErrNotFound &&
-             err != KErrNone )
-            {
-            MPMLOGSTRING2( "CMPMDialog::CleanSortSnapInfoL: error in delete: %d ", err )
-            }
-        }
-    }
-
-//  End of File
--- a/bearermanagement/mpm/src/mpmiapselection.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/src/mpmiapselection.cpp	Mon May 03 12:53:07 2010 +0300
@@ -17,7 +17,6 @@
 
 #include "mpmiapselection.h"
 #include "mpmlogger.h"
-#include "mpmdialog.h"
 #include "mpmserversession.h"
 #include "mpmcommsdataccess.h"
 #include "mpmconnmonevents.h"
@@ -31,19 +30,19 @@
 // ---------------------------------------------------------------------------
 //
 CMPMIapSelection::CMPMIapSelection( CMPMCommsDatAccess*  aCommsDatAccess,
-                                    CMPMServerSession*   aSession )
+                                    CMPMServerSession*   aSession,
+                                    CConnectionUiUtilities* aConnUiUtils )
     : iChooseIapState( ENoConnection ),
       iCommsDatAccess( aCommsDatAccess ),
+      iConnUiUtils( aConnUiUtils ),
       iStoredIapInfo(),
       iSession( aSession ),
       iConfirmDlgStarting( NULL ),
-      iDialog( NULL ),
       iWlanDialog( NULL ),
       iNextBestExists( EFalse ),
       iUserSelectionIapId( 0 ),
       iUserSelectionSnapId( 0 ),
       iImplicitState( EImplicitStart ),
-      iOfflineNoteResponse( EOfflineResponseUndefined ),
       iIsRoaming( EFalse ),
       iNewWlansAllowed ( EFalse )
     {
@@ -63,10 +62,12 @@
 // ---------------------------------------------------------------------------
 //
 CMPMIapSelection* CMPMIapSelection::NewL( CMPMCommsDatAccess*  aCommsDatAccess,
-                                          CMPMServerSession*   aSession )
+                                          CMPMServerSession*   aSession,
+                                          CConnectionUiUtilities* aConnUiUtils )
     {
     CMPMIapSelection* self = new ( ELeave ) CMPMIapSelection( aCommsDatAccess,
-                                                              aSession );
+                                                              aSession,
+                                                              aConnUiUtils );
     CleanupStack::PushL( self );
     self->ConstructL();
     CleanupStack::Pop( self );
@@ -85,7 +86,6 @@
     StopDisplayingStartingDlg();
     
     delete iConfirmDlgStarting;
-    delete iDialog;
     delete iWlanDialog;
     }
 
@@ -132,8 +132,8 @@
         iChooseIapPref.SetSnapId( 0 );
         }
 
-    MPMLOGSTRING2( "CMPMIapSelection::ChooseIapL: IapID: %i",
-            iChooseIapPref.IapId() )
+    MPMLOGSTRING3( "CMPMIapSelection::ChooseIapL: IapID: %i SnapId: %i",
+            iChooseIapPref.IapId(), iChooseIapPref.SnapId() )
     
     // Update WLAN only information and whether new WLAN network usage is allowed.
     TBool wlanOnly = iSession->IsWlanOnlyL( iNewWlansAllowed );
@@ -345,7 +345,7 @@
         // KErrGprsOfflineMode should be returned instead of KErrNone.
         // 
         
-        if ( !iapTypeLanOrWlan && iSession->IsPhoneOfflineL() )
+        if ( !iapTypeLanOrWlan && iSession->MyServer().IsPhoneOffline() )
             {
             ChooseIapComplete( KErrGprsOfflineMode, &iChooseIapPref );
             }
@@ -448,19 +448,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CMPMIapSelection::UpdateConnectionDialog
-// -----------------------------------------------------------------------------
-//
-void CMPMIapSelection::UpdateConnectionDialogL()
-    {
-    if( iDialog )
-        {
-        MPMLOGSTRING( "CMPMIapSelection::UpdateConnectionDialogL data will be updated" )
-        iDialog->PublishSortSnapInfoL();
-        }
-    }
-
-// -----------------------------------------------------------------------------
 // CMPMIapSelection::CompleteExplicitSnapConnectionL
 // -----------------------------------------------------------------------------
 //
@@ -513,7 +500,7 @@
         {
         ChooseIapComplete( KErrGprsServicesNotAllowed, NULL );
         }
-    else if ( !iapTypeLanOrWlan && iSession->IsPhoneOfflineL() )
+    else if ( !iapTypeLanOrWlan && iSession->MyServer().IsPhoneOffline() )
         {
         // In case offline mode is enabled, only LAN or WLAN is allowed.
         // If some other bearer has been requested, then error code 
@@ -649,8 +636,6 @@
 //
 void CMPMIapSelection::ImplicitConnectionCheckWlanScanNeededL()
     {
-    __ASSERT_DEBUG( !iDialog, PanicServer( EMPMReceiveAlreadyActive ) );
-
     MPMLOGSTRING( "CMPMIapSelection::ImplicitConnectionCheckWlanScanNeededL" )
 
     iCommsDatAccess->CheckWLANIapL( *iSession );
@@ -719,27 +704,7 @@
     const TMpmConnPref* aPolicyPref )
     {
     MPMLOGSTRING2( "CMPMIapSelection::ChooseIapComplete aError = %d", aError )
-    
-    if ( ( aError == KErrNone ) &&
-        !( iChooseIapPref.NoteBehaviour() &
-           TExtendedConnPref::ENoteBehaviourConnDisableNotes ) &&
-         ( iSession->IsMMSIap( aPolicyPref->IapId() ) == EFalse ) )
-        {
-        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( iWlanDialog )
         {
         delete iWlanDialog;
@@ -796,7 +761,6 @@
                                                          aIapId,
                                                          EStarting,
                                                          *iSession );
-                iWlanDialog->StoreEasyWlanSelectionL();
                 delete iWlanDialog;
                 iWlanDialog = NULL;
 
@@ -822,8 +786,6 @@
         aError )
     
     ChooseIapComplete( aError, NULL );
-    delete iDialog;
-    iDialog = NULL;
     }
 
        
@@ -847,7 +809,7 @@
         // User selected SNAP
         // 
         TMpmConnPref userPref;
-        iUserSelectionSnapId = iCommsDatAccess->MapNetIdtoSnapAPL( aId );
+        iUserSelectionSnapId = aId;
         userPref.SetSnapId( iUserSelectionSnapId );
         userPref.SetIapId( 0 );
 
@@ -872,12 +834,13 @@
 
         }
     
-    // We are done
-    // 
-    delete iDialog;
-    iDialog = NULL;
-    
-    ImplicitConnectionL();
+    // Letting a function leave here would panic the whole MPM.
+    //
+    TRAPD( err, ImplicitConnectionL() );
+    if( err != KErrNone )
+        {
+        ChooseIapComplete( err, &iChooseIapPref );
+        }
     }
     
 // -----------------------------------------------------------------------------
@@ -944,43 +907,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CMPMIapSelection::OfflineNoteResponse
-// -----------------------------------------------------------------------------
-//
-TOfflineNoteResponse CMPMIapSelection::OfflineNoteResponse()
-    {
-#ifndef _PLATFORM_SIMULATOR_
-    MPMLOGSTRING2( "CMPMIapSelection::OfflineNoteResponse: %d",
-                   iOfflineNoteResponse )
-    return iOfflineNoteResponse;
-#else
-    // Platsim simulates WLAN and offline-mode. To ease automated testing,
-    // offline connection confirmation is not asked in Platsim-variant
-    MPMLOGSTRING( "CMPMIapSelection::OfflineNoteResponse: yes for Platsim" )
-    return EOfflineResponseYes;
-#endif
-    }
-
-// -----------------------------------------------------------------------------
-// CMPMIapSelection::ConnectionStarted
-// -----------------------------------------------------------------------------
-//
-void CMPMIapSelection::ConnectionStarted()
-    {
-    MPMLOGSTRING( "CMPMIapSelection::ConnectionStarted: reset offline response" )
-    SetOfflineNoteResponse( EOfflineResponseUndefined );
-    }
-    
-// -----------------------------------------------------------------------------
-// CMPMIapSelection::SetOfflineNoteShown
-// -----------------------------------------------------------------------------
-//
-void CMPMIapSelection::SetOfflineNoteResponse( TOfflineNoteResponse aResponse )
-    {
-    MPMLOGSTRING2( "CMPMIapSelection::SetOfflineNoteResponse %d ", aResponse )
-    iOfflineNoteResponse = aResponse;
-    }
-// -----------------------------------------------------------------------------
 // CMPMIapSelection::CompleteImplicitConnectionL
 // -----------------------------------------------------------------------------
 //
@@ -995,7 +921,7 @@
                                    iapTypeLanOrWlan,
                                    *iSession );
                                    
-    if ( !iapTypeLanOrWlan && iSession->IsPhoneOfflineL() )
+    if ( !iapTypeLanOrWlan && iSession->MyServer().IsPhoneOffline() )
         {
         MPMLOGSTRING2( "CMPMIapSelection::CompleteImplicitConnectionL: Completing with code = %i",
                 KErrGprsOfflineMode )
@@ -1020,7 +946,6 @@
         
         if( iWlanDialog )
             {
-            iWlanDialog->StoreEasyWlanSelectionL();
             delete iWlanDialog;
             iWlanDialog = NULL;
             }
@@ -1039,13 +964,14 @@
     MPMLOGSTRING( "CMPMIapSelection::ImplicitConnectionIapSelectionL" )
     iSession->AvailableUnblacklistedIapsL( iStoredAvailableIaps, iSession->ConnectionId() );
 
-    // Create and initiate user dialog
-    //
-    iDialog = CMPMDialog::NewL( *this,
-                                iStoredAvailableIaps,
-                                iChooseIapPref.BearerSet(),
-                                *iSession->MyServer().ConnectDialogQueue(),
-                                iSession->MyServer() );
+    // The connection selection dialog doesn't exist any longer, thus
+    // the HandleUserSelection is called with the Internet SNAP that is returned instead
+    TInt err = KErrNone;
+    TInt internetSnapId = 0;
+    // if the reading leaves, then the internet snap did not exist for some reason
+    TRAP ( err, internetSnapId = 
+        iCommsDatAccess->DestinationIdL( CMManager::ESnapPurposeInternet ));
+    HandleUserSelectionL( false, internetSnapId, err );
     }
 
 // -----------------------------------------------------------------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bearermanagement/mpm/src/mpmofflinewatcher.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,193 @@
+/*
+ * 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: Listens central repository for offline mode changes.
+ *
+ */
+
+#include <e32base.h>
+#include <centralrepository.h>
+#include <CoreApplicationUIsSDKCRKeys.h>
+#include <featmgr.h>
+
+#include "mpmlogger.h"
+#include "mpmserver.h"
+#include "mpmofflinewatcher.h"
+
+// ---------------------------------------------------------------------------
+// Default C++ constructor.
+// ---------------------------------------------------------------------------
+//
+CMpmOfflineWatcher::CMpmOfflineWatcher( CMPMServer* aServer ) :
+    CActive( EPriorityStandard ), iServer( aServer )
+    {
+    MPMLOGSTRING( "CMpmOfflineWatcher::CMpmOfflineWatcher" )
+
+    CActiveScheduler::Add( this );
+    }
+
+// ---------------------------------------------------------------------------
+// Symbian 2nd phase constructor. Creates a central repository object.
+// ---------------------------------------------------------------------------
+//
+void CMpmOfflineWatcher::ConstructL()
+    {
+    MPMLOGSTRING( "CMpmOfflineWatcher::ConstructL" )
+
+    FeatureManager::InitializeLibL();
+    // If feature isn't supported, then no watching, but return in StartL().
+    iOfflineFeatureSupported = FeatureManager::FeatureSupported( 
+                               KFeatureIdOfflineMode );
+    FeatureManager::UnInitializeLib();
+
+        
+    iRepository = CRepository::NewL( KCRUidCoreApplicationUIs );
+    }
+
+// ---------------------------------------------------------------------------
+// Creates a new object by calling the two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CMpmOfflineWatcher* CMpmOfflineWatcher::NewL( CMPMServer* aServer )
+    {
+    MPMLOGSTRING( "CMpmOfflineWatcher::NewL" )
+
+    CMpmOfflineWatcher* self = new( ELeave ) CMpmOfflineWatcher( aServer );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CMpmOfflineWatcher::~CMpmOfflineWatcher()
+    {
+    MPMLOGSTRING( "CMpmOfflineWatcher::~CMpmOfflineWatcher" )
+
+    Cancel();
+    delete iRepository;
+    }
+
+// ---------------------------------------------------------------------------
+// Order notification from changes.
+// ---------------------------------------------------------------------------
+//
+void CMpmOfflineWatcher::StartL()
+    {
+    MPMLOGSTRING( "CMpmOfflineWatcher::StartL" )
+            
+    if ( !iOfflineFeatureSupported )
+        {
+        return;
+        }
+
+    // Get the initial data usage value from repository.
+    User::LeaveIfError( GetCurrentOfflineValue() );
+    iServer->UpdateOfflineMode( iOfflineMode );
+    
+    // Request notifications.
+    User::LeaveIfError( RequestNotifications() );
+    }
+
+// ---------------------------------------------------------------------------
+// From class CActive.
+// Event is received when there is a change in central repository key.
+// ---------------------------------------------------------------------------
+//
+void CMpmOfflineWatcher::RunL()
+    {
+    MPMLOGSTRING( "CMpmOfflineWatcher::RunL" )
+
+    if ( iStatus.Int() < KErrNone )
+        {
+        MPMLOGSTRING2("Status: 0x%08X", iStatus.Int())
+        iErrorCounter++;
+        if ( iErrorCounter > KMpmOfflineWatcherCenRepErrorThreshold )
+            {
+            MPMLOGSTRING2("Over %d consecutive errors, stopping notifications permanently.",
+                    KMpmOfflineWatcherCenRepErrorThreshold)
+            return;
+            }
+        // Else: Error occured but counter not expired. Proceed.
+        }
+    else
+        {
+        // Notification is received ok => Reset the counter.
+        iErrorCounter = 0;
+
+        // Check if mode has changed (it should).
+        TInt oldMode = iOfflineMode;
+        
+        TInt err = GetCurrentOfflineValue();
+        if ( err == KErrNone && oldMode != iOfflineMode )
+            {
+            iServer->UpdateOfflineMode( iOfflineMode );
+            }
+        }
+    
+    RequestNotifications();
+    }
+
+// ---------------------------------------------------------------------------
+// From class CActive.
+// Cancel the outstanding request.
+// ---------------------------------------------------------------------------
+//
+void CMpmOfflineWatcher::DoCancel()
+    {
+    MPMLOGSTRING( "CMpmOfflineWatcher::DoCancel" )
+
+    iRepository->NotifyCancel( KCoreAppUIsNetworkConnectionAllowed );
+    }
+
+// ---------------------------------------------------------------------------
+// Request for notifications.
+// ---------------------------------------------------------------------------
+//
+TInt CMpmOfflineWatcher::RequestNotifications()
+    {
+    MPMLOGSTRING( "CMpmOfflineWatcher::RequestNotifications" )
+
+    TInt err = iRepository->NotifyRequest( KCoreAppUIsNetworkConnectionAllowed, iStatus );
+        
+    if ( err == KErrNone )
+        {
+        SetActive();
+        }
+    else
+        {
+        // MPM's offline mode watching wouldn't recover... 
+        MPMLOGSTRING2( "CMpmOfflineWatcher::RequestNotifications, ERROR: %d", err )
+        }
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Get the current repository key value.
+// ---------------------------------------------------------------------------
+//
+TInt CMpmOfflineWatcher::GetCurrentOfflineValue()
+    {
+    MPMLOGSTRING( "CMpmOfflineWatcher::GetCurrentOfflineValue" )
+
+    TInt err = iRepository->Get( KCoreAppUIsNetworkConnectionAllowed, iOfflineMode );
+        
+    if ( err != KErrNone )
+        {
+        MPMLOGSTRING2( "CMpmOfflineWatcher::GetCurrentOfflineValue, ERROR: %d", err )
+        }
+    return err;
+    }
--- a/bearermanagement/mpm/src/mpmserver.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/src/mpmserver.cpp	Mon May 03 12:53:07 2010 +0300
@@ -26,6 +26,7 @@
 #include <mmtsy_names.h>                 // KMmTsyModuleName
 #include <centralrepository.h>
 #include <es_sock_partner.h>
+#include <CoreApplicationUIsSDKCRKeys.h>
 
 #include "mpmserver.h"
 #include "mpmserversession.h"
@@ -39,11 +40,11 @@
 #include "mpmdefaultconnection.h"
 #include "mpmcommsdataccess.h"
 #include "mpmwlanquerydialog.h"
-#include "mpmdialog.h"
 #include "mpmprivatecrkeys.h"
 #include "mpmcsidwatcher.h"
 #include "mpmdatausagewatcher.h"
 #include "mpmpropertydef.h"
+#include "mpmofflinewatcher.h"
 
 // ============================= LOCAL FUNCTIONS ===============================
 
@@ -89,9 +90,9 @@
       iRoamingQueue( NULL ), 
       iStartingQueue( NULL ),
       iWlanQueryQueue( NULL ),
-      iConnectDialogQueue( NULL ),
       iDefaultConnection( NULL ), 
-      iConnectionCounter( 0 )
+      iConnectionCounter( 0 ),
+      iOfflineMode( ECoreAppUIsNetworkConnectionAllowed )
     {
     }
 
@@ -110,6 +111,7 @@
     // The RTelServer::Connect() might not always work with the first trial,
     // because of a coding error related to using semaphores in the method.
     TInt err( KErrNotReady );
+    err = iTelServer.Connect();
     TInt a = 0;
     while( a < KPhoneRetryCount && err != KErrNone )
         {
@@ -163,9 +165,6 @@
 
     iWlanQueryQueue = new ( ELeave ) CArrayPtrFlat<CMPMWlanQueryDialog>( KGranularity );
     iWlanQueryQueue->Reset();
-
-    iConnectDialogQueue = new ( ELeave ) CArrayPtrFlat<CMPMDialog>( KGranularity );
-    iConnectDialogQueue->Reset();
     
     iDefaultConnection = CMPMDefaultConnection::NewL( this );    
 
@@ -174,8 +173,6 @@
     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)
         {
@@ -187,38 +184,18 @@
         MPMLOGSTRING( "CMPMServer::ConstructL: CMpmDataUsageWatcher::NewL() failed!" )
         }
 
-    // Define P&S keys (snap & iap) for the user connection
-    TInt ret = RProperty::Define( KMPMUserConnectionCategory,
-                                  KMPMPSKeyUserConnectionSnap,
-                                  KMPMUserConnectionSnapType,
-                                  KMPMUserConnectionReadPolicy,
-                                  KMPMUserConnectionWritePolicy );
-    
-    if ( (ret != KErrNone) && (ret != KErrAlreadyExists) )
+    // Create another central repository watcher and start it
+    TRAPD( owErr, iMpmOfflineWatcher = CMpmOfflineWatcher::NewL( this ) );
+    if (owErr == KErrNone)
         {
-        User::Leave(err);
+        iMpmOfflineWatcher->StartL();
         }
-    
-    ret = RProperty::Define( KMPMUserConnectionCategory,
-                             KMPMPSKeyUserConnectionIap,
-                             KMPMUserConnectionIapType,
-                             KMPMUserConnectionReadPolicy,
-                             KMPMUserConnectionWritePolicy );
-                                          
-    if ( (ret != KErrNone) && (ret != KErrAlreadyExists) )
+    else
         {
-        User::Leave(err);
+        iMpmOfflineWatcher = NULL;
+        MPMLOGSTRING( "CMPMServer::ConstructL: CMpmOfflineWatcher::NewL() failed!" )
         }
 
-    // Set initial values for the keys
-    User::LeaveIfError(RProperty::Set( KMPMUserConnectionCategory,
-                                       KMPMPSKeyUserConnectionSnap,
-                                       0 ));
-
-    User::LeaveIfError(RProperty::Set( KMPMUserConnectionCategory,
-                                       KMPMPSKeyUserConnectionIap,
-                                       0 ));
-
     // Read dedicated clients from the central repository
     CRepository* repository = CRepository::NewL( KCRUidMPM );
     
@@ -226,7 +203,7 @@
     
     TUint32 baseKey = KMpmDedicatedClientBase;
     TInt value;
-    ret = KErrNone;
+    TInt ret = KErrNone;
     
     while ( ret == KErrNone )
         {
@@ -242,42 +219,8 @@
         }
     
     CleanupStack::PopAndDestroy ( repository );
-    
-    // Define P&S keys for the connection dialogs
-    ret = RProperty::Define( KMPMActiveConnectionCategory,
-                             KMPMPSKeyActiveConnectionIap,
-                             KMPMActiveConnectionIapType,
-                             KMPMActiveConnectionReadPolicy,
-                             KMPMActiveConnectionWritePolicy );
-    
-    if ( (ret != KErrNone) && (ret != KErrAlreadyExists) )
-        {
-        User::Leave(err);
-        }
-    
-    ret = RProperty::Define( KMPMActiveConnectionCategory,
-                             KMPMPSKeyActiveConnectionSnap,
-                             KMPMActiveConnectionSnapType,
-                             KMPMActiveConnectionReadPolicy,
-                             KMPMActiveConnectionWritePolicy );
-    
-    if ( (ret != KErrNone) && (ret != KErrAlreadyExists) )
-        {
-        User::Leave(err);
-        }
-
-    ret = RProperty::Define( KMPMActiveConnectionCategory,
-                             KMPMPSKeyActiveConnectionBearer,
-                             KMPMActiveConnectionBearerType,
-                             KMPMActiveConnectionReadPolicy,
-                             KMPMActiveConnectionWritePolicy );
-                                          
-    if ( (ret != KErrNone) && (ret != KErrAlreadyExists) )
-        {
-        User::Leave(err);
-        }
         
-    PublishActiveConnection();
+    iConnUiUtils = CConnectionUiUtilities::NewL();
     }
 
 
@@ -310,12 +253,6 @@
         iWlanQueryQueue->Delete( 0 );
         }
     delete iWlanQueryQueue;
-    
-    if ( iConnectDialogQueue )
-        {
-        iConnectDialogQueue->ResetAndDestroy();
-        }
-    delete iConnectDialogQueue;
 
     delete iEvents;
 
@@ -344,10 +281,14 @@
     delete iMpmCsIdWatcher;    
     
     delete iMpmDataUsageWatcher;    
-    
+
+    delete iMpmOfflineWatcher;    
+
     iDedicatedClients.Close();
 
-    delete iCommsDatAccess;    
+    delete iCommsDatAccess;
+    
+    delete iConnUiUtils;
     }
 
 
@@ -417,6 +358,7 @@
     connInfo.iSnap   = aSnap;
     connInfo.iIapId  = aIapId;
     connInfo.iState  = aState;
+    connInfo.iAppUid = aSession.AppUid();
 
     // Package into TActiveBMConn //TODO Redundant.. remove the other one.
     // 
@@ -445,20 +387,6 @@
             }
         }
 
-    if ( aState == EStarted )
-        {
-        TInt ret = KErrNone;
-        
-        TRAP ( ret, UpdateActiveConnectionL( aSession ) );
-        
-        if ( ret != KErrNone )
-            {
-            iActiveBearerType = EMPMBearerTypeNone;
-            iActiveIapId = 0;
-            iActiveSnapId = 0;            
-            }
-        }
-
 #ifdef _DEBUG
     // Dump array of active connections to log in order to support testing.
     // 
@@ -473,7 +401,7 @@
 //
 void CMPMServer::ResetBMConnection( const TConnectionId aConnId,
                                     const TUint32       aIapId,
-                                    CMPMServerSession&  aSession )
+                                    CMPMServerSession&  /*aSession*/ )
     {
     MPMLOGSTRING3(
         "CMPMServer::ResetBMConnection - aConnId = 0x%x, aIapId = %i", 
@@ -509,18 +437,6 @@
         //
         iActiveBMConns[index1].iConnInfo.iIapId = 0;
         iActiveBMConns[index1].iConnInfo.iState = EIdle;
-        
-        // Change state of P&S keys if needed
-        TInt ret = KErrNone;
-        
-        TRAP ( ret, UpdateActiveConnectionL( aSession ) );
-        
-        if ( ret != KErrNone )
-            {
-            iActiveBearerType = EMPMBearerTypeNone;
-            iActiveIapId = 0;
-            iActiveSnapId = 0;            
-            }
         }
 #ifdef _DEBUG
     // Dump array of active connections to log in order to support testing.
@@ -535,7 +451,7 @@
 // -----------------------------------------------------------------------------
 //
 void CMPMServer::RemoveBMConnection( const TConnectionId aConnId,
-                                     CMPMServerSession&  aSession )
+                                     CMPMServerSession&  /*aSession*/ )
     {
     MPMLOGSTRING2( "CMPMServer::RemoveBMConnection - aConnId = 0x%x", 
         aConnId )
@@ -557,18 +473,6 @@
             // If Connection Id found, remove it. 
             //
             iActiveBMConns.Remove( i );
-
-            // Update active connection
-            TInt ret = KErrNone;
-        
-            TRAP ( ret, UpdateActiveConnectionL( aSession ) );
-        
-            if ( ret != KErrNone )
-                {
-                iActiveBearerType = EMPMBearerTypeNone;
-                iActiveIapId = 0;
-                iActiveSnapId = 0;            
-                }
             }
         }
 
@@ -703,9 +607,11 @@
 // CMPMServer::CheckIfStarted
 // -----------------------------------------------------------------------------
 //
-TBool CMPMServer::CheckIfStarted( const TUint32 aIapId )
+TBool CMPMServer::CheckIfStarted( const TUint32 aIapId , 
+                                  const TConnectionId aConnId )
     {
-    MPMLOGSTRING2( "CMPMServer::CheckIfStarted - aIapId = %i", aIapId )
+    MPMLOGSTRING3( "CMPMServer::CheckIfStarted - aIapId = %i, aConnId = 0x%x", 
+                  aIapId, aConnId )
 
     TConnectionState state( EIdle );
     TBool stopLoop( EFalse );
@@ -714,9 +620,10 @@
     // 
     for ( TInt i = 0; ( ( i < iActiveBMConns.Count() ) && !stopLoop ); i++ )
         {
-        // Check if IAP Id matches
+        // Check if IAP Id matches; exclude matching with own connection
         // 
-        if ( iActiveBMConns[i].iConnInfo.iIapId == aIapId )
+        if ( iActiveBMConns[i].iConnInfo.iIapId == aIapId && 
+             iActiveBMConns[i].iConnInfo.iConnId != aConnId)
             {
             state = iActiveBMConns[i].iConnInfo.iState;  
 
@@ -759,8 +666,12 @@
             }
         }
 #endif // _DEBUG
-
-    if ( state == EStarted )
+        
+    //Return true incase the matching connection is in EStarting state also because
+    //sometimes when connections are started simultaneously (for same iapID) 
+    //the first connection may still be in EStarting state. 
+    //
+    if ( state == EStarted || state == EStarting )
         {
         return ETrue;
         }
@@ -849,17 +760,6 @@
             }
         }
 
-    TInt ret = KErrNone;
-        
-    TRAP ( ret, UpdateActiveConnectionL( aSession ) );
-        
-    if ( ret != KErrNone )
-        {
-        iActiveBearerType = EMPMBearerTypeNone;
-        iActiveIapId = 0;
-        iActiveSnapId = 0;            
-        }
-
 #ifdef _DEBUG
     // Dump array of active connections to log in order to support testing.
     // 
@@ -874,7 +774,7 @@
 //
 void CMPMServer::RemoveBMIAPConnection( const TUint32       aIapId, 
                                         const TConnectionId aConnId,
-                                        CMPMServerSession&  aSession )
+                                        CMPMServerSession&  /*aSession*/ )
     {
     MPMLOGSTRING3(
         "CMPMServer::RemoveBMIAPConnection - aIapId = %i, aConnId = 0x%x", 
@@ -920,18 +820,6 @@
                     iActiveBMConns[i].iConnInfo.iState = EIdle;
                     }
                 }
-            
-            // Update active connection
-            TInt ret = KErrNone;
-        
-            TRAP ( ret, UpdateActiveConnectionL( aSession ) );
-        
-            if ( ret != KErrNone )
-                {
-                iActiveBearerType = EMPMBearerTypeNone;
-                iActiveIapId = 0;
-                iActiveSnapId = 0;            
-                }
             }
         }
 
@@ -1006,34 +894,8 @@
         iapInfo = iSessions[i]->GetAvailableIAPs( );
         iSessions[i]->PrefIAPNotificationL( iapInfo, aCaller );
         }
-
-    // If a session is displaying connection selection dialog 
-    // the contents of the dialog should be updated according to the 
-    // current iap availability
-    //
-    for ( TInt i( 0 ); i < iSessions.Count(); i++ )
-        {
-        iSessions[i]->UpdateConnectionDialogL();
-        }
     }
 
-// -----------------------------------------------------------------------------
-// CMPMServer::UpdateSessionConnectionDlgL
-// -----------------------------------------------------------------------------
-//
-void CMPMServer::UpdateSessionConnectionDlgL()
-    {
-    MPMLOGSTRING( "CMPMServer::UpdateSessionConnectionDlgL" )
-
-    // If a session is displaying connection selection dialog 
-    // the contents of the dialog should be updated according to the 
-    // current iap availability
-    //
-    for ( TInt i( 0 ); i < iSessions.Count(); i++ )
-        {
-        iSessions[i]->UpdateConnectionDialogL();
-        }
-    }
 
 // -----------------------------------------------------------------------------
 // CMPMServer::HandleServerBlackListIap
@@ -1119,9 +981,15 @@
         // found blacklisted Connection Id
         TMPMBlackListConnId connIdInfo = iBlackListIdList[i];
         iBlackListIdList.Remove( i ); // remove from the list 
+        
+        MPMLOGSTRING2( "CMPMServer::HandleServerUnblackListIap - \
+connIdInfo count: %d", connIdInfo.Count() )
 
         if ( aIapId == 0 )
             { // 0 will reset Connection Id blacklisted iap list 
+            MPMLOGSTRING( "CMPMServer::HandleServerUnblackListIap - \
+reset Connection Id blacklisted iap list" )
+
             connIdInfo.Close();
             return KErrNone;
             }
@@ -1133,6 +1001,9 @@
                 {
                 // found and remove blacklisted iap
                 connIdInfo.Remove( j ); 
+                MPMLOGSTRING2( "CMPMServer::HandleServerUnblackListIap - \
+removed blacklisted iap in index = %d", j )
+                
                 if ( connIdInfo.Count() == 0 )
                     {
                     return KErrNone;
@@ -1150,6 +1021,8 @@
         }
     else
         {
+        MPMLOGSTRING( "CMPMServer::HandleServerUnblackListIap - \
+not found blacklisted Connection Id" )
         return KErrNotFound;
         }
     }
@@ -1161,8 +1034,9 @@
 void CMPMServer::HandleServerUnblackListIap( 
     TBlacklistCategory  aCategory )
     {
-    MPMLOGSTRING2( "CMPMServer::HandleServerUnblackListIap -\
- aCategory = %i", aCategory )
+    MPMLOGSTRING3( "CMPMServer::HandleServerUnblackListIap -\
+aCategory = %i blacklisted Id count = %d", 
+                   aCategory, iBlackListIdList.Count() )
 
     for( TInt i( 0 ); i < iBlackListIdList.Count(); i++ )
         {
@@ -1170,11 +1044,17 @@
         TMPMBlackListConnId connIdInfo = iBlackListIdList[i];
         iBlackListIdList.Remove( i ); // remove from the list 
 
+        MPMLOGSTRING3( "CMPMServer::HandleServerUnblackListIap - \
+aConnId = 0x%x, blacklisted IapId count = %d", connIdInfo.iConnId, 
+        connIdInfo.Count() )
+        
         for (TInt j = 0; j < connIdInfo.Count(); j++)
             {
             if ( connIdInfo.Category( j ) == aCategory ) 
                 {
                 // found and remove blacklisted iap
+                MPMLOGSTRING3( "CMPMServer::HandleServerUnblackListIap - \
+removed blacklisted iap id %i in index: %d", connIdInfo.Iap( j ), j )
                 connIdInfo.Remove( j ); 
                 }
             }
@@ -1183,6 +1063,7 @@
         //
         if( connIdInfo.Count() > 0 )
             {
+            MPMLOGSTRING( "reinsert connIdInfo to reflect activeness" )
             iBlackListIdList.Insert( connIdInfo, 0 );             
             }
         }
@@ -1522,197 +1403,23 @@
 //
 void CMPMServer::StopConnections( TInt aIapId )
     {
+    MPMLOGSTRING2( "CMPMServer::StopConnections aIapId = %d", aIapId )
     for (TInt index = 0; index < iSessions.Count(); index++)
         {
-/*        if (iSessions[index]->UserConnection())
-            continue;
-  */          
+        CMPMServerSession* session = iSessions[index];
         // Stop connection
         if ( aIapId == 0 )
             {
-            iSessions[index]->StopConnection();
-            }
-        else
-            {
-            TRAP_IGNORE( iSessions[index]->StopIAPNotificationL( aIapId ));
+            session->StopConnection();
             }
-        
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CMPMServer::UpdateActiveConnectionL
-// -----------------------------------------------------------------------------
-//
-void CMPMServer::UpdateActiveConnectionL( CMPMServerSession& aSession )
-    {
-    MPMLOGSTRING( "CMPMServer::UpdateActiveConnectionL" )
-    TUint32 snapId;
-
-    if ( !NumberOfActiveConnections() )
-        {
-        // If no active connections then just reset keys and publish
-        iActiveBearerType = EMPMBearerTypeNone;
-        iActiveIapId = 0;
-        iActiveSnapId = 0;
-        PublishActiveConnection();
-        return;
-        }
-
-    // Check if all active connections are in same snap
-    if ( CommsDatAccess()->AreActiveIapsInSameSnapL(
-         iActiveBMConns, snapId ) )
-        {
-        // Select active connection according to priority
-        CommsDatAccess()->SelectActiveConnectionL (
-            snapId,
-            iActiveBMConns,
-            iActiveIapId,
-            iActiveSnapId,
-            iActiveBearerType,
-            aSession );
-
-        PublishActiveConnection();
-        return;
-        }
-
-    // Reset active connections
-    iActiveBearerType = EMPMBearerTypeNone;
-    iActiveIapId = 0;
-    iActiveSnapId = 0;
-            
-    // Active connections locating in different snaps
-    // Use priority order vpn, wlan and packet
-    for ( TInt index = 0; index < iActiveBMConns.Count(); index++ )
-        {
-        CMPMServerSession* serverSession = GetServerSession(
-            iActiveBMConns[index].iConnInfo.iConnId );
-                     	
-        // Do check only for active connections
-        if ( iActiveBMConns[index].iConnInfo.iState == EStarted &&
-        	   serverSession->ChooseBestIapCalled() )
+        else if ( GetBMIap( session->ConnectionId() ) == aIapId )
             {
-            TMPMBearerType bearerType = EMPMBearerTypeOther;
-        
-            if ( iDedicatedClients.Find( iActiveBMConns[index].iConnInfo.iAppUid ) == 
-                 KErrNone )
-                {
-                // Skip dedicated client
-                continue;
-                }
-
-            bearerType = CommsDatAccess()->GetBearerTypeL( 
-                         iActiveBMConns[index].iConnInfo.iIapId );
-        
-            if ( bearerType == EMPMBearerTypeOther )
-                {
-                // Don't publish this connection
-                continue;
-                }
-                    
-            // This is true if,
-            // bearer type is smaller or different than none
-            // or
-            // bearer type is same and iap is different.
-            if ( ( bearerType < iActiveBearerType ) || 
-                 ( iActiveBearerType == EMPMBearerTypeNone ) ||
-                 ( ( bearerType == iActiveBearerType) &&
-                   ( iActiveIapId != iActiveBMConns[index].iConnInfo.iIapId ) ) )
-                {
-                iActiveBearerType = bearerType;
-                iActiveIapId = iActiveBMConns[index].iConnInfo.iIapId;
-                iActiveSnapId = iActiveBMConns[index].iConnInfo.iSnap;
-                }
-            }
-
-        PublishActiveConnection();  
+            TRAP_IGNORE( session->StopIAPNotificationL( aIapId ));
+            }     
         }
     }
 
 // -----------------------------------------------------------------------------
-// CMPMServer::MapBearerType
-// -----------------------------------------------------------------------------
-//
-TUint32 CMPMServer::MapBearerType(TMPMBearerType aBearerType)
-    {
-    MPMLOGSTRING( "CMPMServer::MapBearerType" )
-    
-    switch ( aBearerType )
-        {
-        case EMPMBearerTypeNone:
-            return 0;
-
-        case EMPMBearerTypeVpn:
-            return KCommDbBearerVirtual;
-            
-        case EMPMBearerTypeWlan:
-            return KCommDbBearerWLAN;
-            
-        case EMPMBearerTypePacketData:
-            return KCommDbBearerWcdma;
-
-        case EMPMBearerTypeOther:
-            return KCommDbBearerUnknown;
-            
-        default:
-            MPMLOGSTRING( "CMPMServer::MapBearerType: Unknown bearer type" )
-            break;
-        }
-    
-    return KCommDbBearerUnknown;
-    }
-
-// -----------------------------------------------------------------------------
-// CMPMServer::PublishActiveConnection
-// -----------------------------------------------------------------------------
-//
-void CMPMServer::PublishActiveConnection()
-    {
-    MPMLOGSTRING( "CMPMServer::PublishActiveConnection" )
-    
-    // update active connection keys
-    RProperty::Set( KMPMActiveConnectionCategory,
-                    KMPMPSKeyActiveConnectionIap,
-                    iActiveIapId );
-
-    RProperty::Set( KMPMActiveConnectionCategory,
-                    KMPMPSKeyActiveConnectionSnap,
-                    iActiveSnapId );
-
-    RProperty::Set( KMPMActiveConnectionCategory,
-                    KMPMPSKeyActiveConnectionBearer,
-                    MapBearerType( iActiveBearerType ) );    
-
-    MPMLOGSTRING4( "CMPMServer::PublishActiveConnection: Set to: %d, %d, %d",
-                   iActiveIapId, iActiveSnapId, iActiveBearerType )
-    }
-
-// -----------------------------------------------------------------------------
-// CMPMServer::NumberOfActiveConnections
-// -----------------------------------------------------------------------------
-//
-TInt CMPMServer::NumberOfActiveConnections()
-    {
-    MPMLOGSTRING( "CMPMServer::NumberOfActiveConnections" )
-    
-    TInt count( 0 );
-    
-    for ( TInt index = 0; index < iActiveBMConns.Count(); index++ )
-        {
-        CMPMServerSession* serverSession = GetServerSession(
-             iActiveBMConns[index].iConnInfo.iConnId );
-
-        if ( iActiveBMConns[index].iConnInfo.iState == EStarted &&
-             serverSession->ChooseBestIapCalled() )
-            {
-            count++;
-            }
-        }
-    
-    return count;
-    }
-
-// -----------------------------------------------------------------------------
 // CMPMServer::UserConnectionInInternet
 // -----------------------------------------------------------------------------
 //
@@ -2075,6 +1782,75 @@
     stoppedIaps.Close();
     }
 
+// ---------------------------------------------------------------------------
+// CMPMServer::UpdateOfflineMode
+// Offline watcher listens the offline mode and calls this when it's changed.
+// ---------------------------------------------------------------------------
+//
+void CMPMServer::UpdateOfflineMode( TInt aNewModeValue )
+    {
+    MPMLOGSTRING2( "CMPMServer::UpdateOfflineMode: Value %d", aNewModeValue )
+
+    iOfflineMode = aNewModeValue;
+
+    if ( iOfflineMode == ECoreAppUIsNetworkConnectionAllowed )
+        {
+        // Offline mode finished, reset the QueryResponse variable.
+        iOfflineWlanQueryResponse = EOfflineResponseUndefined;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CMPMServer::IsPhoneOffline
+// Returns the current offline mode.
+// ---------------------------------------------------------------------------
+//
+TBool CMPMServer::IsPhoneOffline()
+    {
+    MPMLOGSTRING( "CMPMServer::IsPhoneOffline" )
+
+    TBool retval = EFalse;
+    if ( iOfflineMode == ECoreAppUIsNetworkConnectionNotAllowed)
+        {
+        retval = ETrue;
+        MPMLOGSTRING( "CMPMServer::IsPhoneOffline: Yes." )
+        }
+    return retval;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPMServer::OfflineWlanQueryResponse
+// Tells the "Use WLAN in offline mode" query's response during the
+// current offline mode session.
+// ---------------------------------------------------------------------------
+//
+TOfflineWlanQueryResponse CMPMServer::OfflineWlanQueryResponse()
+    {
+    MPMLOGSTRING( "CMPMServer::OfflineWlanQueryResponse" )
+
+#ifndef _PLATFORM_SIMULATOR_
+    MPMLOGSTRING2( "CMPMServer::IsOfflineWlanQueryAccepted: %d", iOfflineWlanQueryResponse )
+    return iOfflineWlanQueryResponse;
+#else
+    // Platsim simulates WLAN and offline-mode. To ease automated testing,
+    // offline connection confirmation is not asked in Platsim-variant
+    MPMLOGSTRING( "CMPMServer::OfflineWlanQueryResponse: yes for Platsim" )
+    return EOfflineResponseYes;
+#endif
+    }
+
+// ---------------------------------------------------------------------------
+// CMPMServer::SetOfflineWlanQueryResponse
+// Called when the "Use WLAN in offline mode" note has been responded.
+// ---------------------------------------------------------------------------
+//
+void CMPMServer::SetOfflineWlanQueryResponse( TOfflineWlanQueryResponse aResponse)
+    {
+    MPMLOGSTRING( "CMPMServer::SetOfflineWlanQueryResponse" )
+
+    iOfflineWlanQueryResponse = aResponse;
+    }
+
 // -----------------------------------------------------------------------------
 // TMPMBlackListConnId::Append
 // -----------------------------------------------------------------------------
--- a/bearermanagement/mpm/src/mpmserversession.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/src/mpmserversession.cpp	Mon May 03 12:53:07 2010 +0300
@@ -25,7 +25,6 @@
 #include <gsmerror.h>     // KErrPacketDataTsyMaxPdpContextsReached 
 #include <etelpckt.h>     // KErrUmtsMaxNumOfContextExceededByNetwork
 #include <bldvariant.hrh>                // For feature flags
-#include <featmgr.h>                     // FeatureManager
 #include <centralrepository.h>           // CRepository 
 #include <CoreApplicationUIsSDKCRKeys.h> // KCRUidCoreApplicationUIs, 
                                          // KCoreAppUIsNetworkConnectionAllowed
@@ -39,7 +38,6 @@
 #include "mpmcommsdataccess.h"
 #include "mpmserversession.h"
 #include "mpmconnmonevents.h"
-#include "mpmdialog.h"
 #include "mpmdisconnectdlg.h"
 #include "mpmconfirmdlgstarting.h"
 #include "mpmconfirmdlgroaming.h"
@@ -76,7 +74,8 @@
       iConfirmDlgRoaming( NULL ),
       iStoredIapInfo(),
       iIapSelection( NULL ),
-      iMigrateState( EMigrateNone )
+      iMigrateState( EMigrateNone ),
+      iDisconnectDialogShown( EFalse )
     {
     }
 
@@ -94,12 +93,6 @@
             *const_cast<CMPMServer*>( &iMyServer ), *this ));
         }
 
-    FeatureManager::InitializeLibL();
-    iOfflineFeatureSupported = FeatureManager::FeatureSupported( 
-                                   KFeatureIdOfflineMode );
- 
-     FeatureManager::UnInitializeLib();
-                                       
     // Append session pointer to server
     // 
     iMyServer.AppendSessionL( this );
@@ -125,15 +118,6 @@
         iMyServer.ClearUserConnection();
         ClearUserConnection();
         
-        // Set PS keys to zero
-        RProperty::Set( KMPMUserConnectionCategory,
-                        KMPMPSKeyUserConnectionSnap,
-                        0 );
-        
-        RProperty::Set( KMPMUserConnectionCategory,
-                        KMPMPSKeyUserConnectionIap,
-                        0 );
-        
         MPMLOGSTRING( "CMPMServerSession::HandleServerApplicationConnectionEnds -\
 User connection deactivated" )
         }   
@@ -143,6 +127,9 @@
 
     // Make sure the connection is removed from server's information array.
     iMyServer.RemoveBMConnection( iConnId, *this );
+    
+    // Cancel discreet popup
+    iMyServer.ConnUiUtils()->CancelConnectingViaDiscreetPopup();
     }
 
 
@@ -424,16 +411,7 @@
         if ( ! ( mpmConnPref.NoteBehaviour() &
             TExtendedConnPref::ENoteBehaviourConnDisableNotes ) )
             {
-            CConnectionUiUtilities* connUiUtils = NULL;
-        
-            TRAP_IGNORE( connUiUtils = CConnectionUiUtilities::NewL() );
-            
-            if ( connUiUtils )
-                {
-                connUiUtils->ConnectionErrorDiscreetPopup( error );
-                delete connUiUtils;
-                connUiUtils = NULL;
-                }
+            iMyServer.ConnUiUtils()->ConnectionErrorDiscreetPopup( error );
             }    	
         	
         MPMLOGSTRING( "CMPMServerSession::HandleServerChooseIapL - Error \
@@ -448,18 +426,22 @@
     // 
     iAppUid = aMessage.Int2();
 
-    MPMLOGSTRING2( "CMPMServerSession::HandleServerChooseIapL: \
-Client UID = 0x%x", iAppUid )
-
     if ( !iIapSelection )
         {
         iIapSelection = CMPMIapSelection::NewL( iMyServer.CommsDatAccess(),
-                                                this ); 
+                                                this,
+                                                iMyServer.ConnUiUtils() ); 
         }
     
     MPMLOGSTRING3( "CMPMServerSession::HandleServerChooseIapL - iap %d \
 connType %d", mpmConnPref.IapId(), mpmConnPref.ConnType() )
 
+    if (!( mpmConnPref.NoteBehaviour() &
+            TExtendedConnPref::ENoteBehaviourConnDisableNotes ) )
+        {
+        iMyServer.ConnUiUtils()->ConnectingViaDiscreetPopup();
+        }
+    
     iIapSelection->ChooseIapL( mpmConnPref );
 
     if ( iAppUid == iMyServer.CsIdWatcher()->ConnectScreenId() )
@@ -471,16 +453,6 @@
         iMyServer.SetUserConnection();
         SetUserConnection();
         iMyServer.SetUserConnPref( mpmConnPref );
-        
-        // Set PS keys according to user connection
-        // Do not check return values. Can do nothing in case of failing.
-        RProperty::Set( KMPMUserConnectionCategory,
-                        KMPMPSKeyUserConnectionSnap,
-                        mpmConnPref.SnapId() );
-        
-        RProperty::Set( KMPMUserConnectionCategory,
-                        KMPMPSKeyUserConnectionIap,
-                        mpmConnPref.IapId() );
         }
     }
 
@@ -713,7 +685,7 @@
     // 
     aMessage.Complete( KErrNone );
     
-    IapSelectionL()->ConnectionStarted();
+    iMyServer.ConnUiUtils()->CancelConnectingViaDiscreetPopup();
     }
 
 
@@ -760,15 +732,6 @@
         iMyServer.ClearUserConnection();
         ClearUserConnection();
         
-        // Set PS keys to zero
-        RProperty::Set( KMPMUserConnectionCategory,
-                        KMPMPSKeyUserConnectionSnap,
-                        0 );
-        
-        RProperty::Set( KMPMUserConnectionCategory,
-                        KMPMPSKeyUserConnectionIap,
-                        0 );
-        
         MPMLOGSTRING( "CMPMServerSession::HandleServerApplicationConnectionEnds -\
 User connection deactivated" )
         }   
@@ -823,7 +786,7 @@
     // check whether a started connection exists which already 
     // uses this IAP. If so, it won't need to be confirmed again
     // 
-    if( iMyServer.CheckIfStarted( aIapId ) )
+    if( iMyServer.CheckIfStarted( aIapId, iConnId ) )
         {
         MPMLOGSTRING(
         "CMPMServerSession::IsConfirmFirstL - IAP already started, \
@@ -853,6 +816,21 @@
         {
         MPMLOGSTRING( "CMPMServerSession::IsConfirmFirstL - True" )
         isConfirmFirst = ETrue;
+        
+        // iDisconnectDialogShown is set when disconnect dialog is shown.
+        // Before the disconnect dialog is shown, data usage confirmation
+        // dialog is already shown for the new PDP context. If you choose
+        // to disconnect the active PDP context then data usage dialog is
+        // shown again for the new context. So, set isConfirmFirst to
+        // False to avoid duplicate cellular confirm dialog
+        //
+        if ( iDisconnectDialogShown )
+            {
+            MPMLOGSTRING( "CMPMServerSession::IsConfirmFirstL  - False; Data \
+confirmation dialog already shown for this IAP" )
+            isConfirmFirst = EFalse;
+            iDisconnectDialogShown = EFalse;
+            }
         }
     else 
         {
@@ -1420,20 +1398,16 @@
         }
 
     // Show error popup if it's allowed per client request
+    // Don't show the pop up if error code is for disconnect dialog
+    //
     if ( !( iIapSelection->MpmConnPref().NoteBehaviour() &
-            TExtendedConnPref::ENoteBehaviourConnDisableNotes ) )
+            TExtendedConnPref::ENoteBehaviourConnDisableNotes ) &&
+         !DisconnectDlgErrorCode( error ) )
         {
-        CConnectionUiUtilities* connUiUtils = NULL;
-        TRAPD( popupCreateError, connUiUtils = CConnectionUiUtilities::NewL() );
-        if ( popupCreateError == KErrNone && connUiUtils )
-            {
-            // Note: Below function shows the discreet popup only if the error code
-            // belongs to the set of errors that are shown to the user.
-            // Otherwise the popup is not shown.
-            connUiUtils->ConnectionErrorDiscreetPopup( error );
-            delete connUiUtils;
-            connUiUtils = NULL;
-            }
+        // Note: Below function shows the discreet popup only if the error code
+        // belongs to the set of errors that are shown to the user.
+        // Otherwise the popup is not shown.
+        iMyServer.ConnUiUtils()->ConnectionErrorDiscreetPopup( error );
         }
 
     // Read the Connection Id of the application
@@ -1500,6 +1474,7 @@
             iDisconnectDlg = CMPMDisconnectDlg::NewL( *const_cast<CMPMServerSession*>(this),
                                                       error,
                                                       *MyServer().DisconnectQueue() );
+            iDisconnectDialogShown = ETrue;
             return;
             }
         else
@@ -1654,7 +1629,7 @@
                                                         ETemporary );
                     }
 
-                // current iap is either WLAN or EasyWlan
+                // current iap is WLAN
                 // 
                 if( ( iMyServer.CommsDatAccess()->CheckWlanL( currentIap ) != ENotWlanIap ) && 
                       iMyServer.CommsDatAccess()->SnapContainsWlanL( snapId, iapPath, KMPMNrWlansTwo ) )
@@ -1861,13 +1836,13 @@
         // Store message for later usage.
     iServerSortSNAPMessage = aMessage;
 
-    TUint32 aSeconds = static_cast<TUint32>( iServerSortSNAPMessage.Int2() );
+    TUint32 seconds = static_cast<TUint32>( iServerSortSNAPMessage.Int2() );
     
     // To display up to date information the WLAN scan should be done first
     iMyServer.Events()->ScanWLANNetworksL( this, 
                                            ConnectionId(), 
                                            EWlanScanCallbackSortSnap, 
-                                           aSeconds );
+                                           seconds );
     }
     
 // -----------------------------------------------------------------------------
@@ -2229,18 +2204,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CMPMServerSession::UpdateConnectionDialog
-// -----------------------------------------------------------------------------
-//
-void CMPMServerSession::UpdateConnectionDialogL()
-    {
-    if( iIapSelection )
-        {
-        iIapSelection->UpdateConnectionDialogL();
-        }
-    }
-
-// -----------------------------------------------------------------------------
 // CMPMServerSession::CompleteCarrierRejected
 // -----------------------------------------------------------------------------
 //
@@ -2332,6 +2295,39 @@
     ResolveConnType( aMpmConnPref );
 
     MPMLOGSTRING2( "CMPMServerSession::ExtractConnPref - \
+BearerSet = %d", aMpmConnPref.BearerSet());
+    
+    MPMLOGSTRING2( "CMPMServerSession::ExtractConnPref - \
+ConnSelectionDialog = %d", aMpmConnPref.ConnSelectionDialog());
+    
+    MPMLOGSTRING2( "CMPMServerSession::ExtractConnPref - \
+ConnType = %d", aMpmConnPref.ConnType());
+    
+    MPMLOGSTRING2( "CMPMServerSession::ExtractConnPref - \
+DisconnectDialog = %d", aMpmConnPref.DisconnectDialog());
+    
+    MPMLOGSTRING2( "CMPMServerSession::ExtractConnPref - \
+ForcedRoaming = %d", aMpmConnPref.ForcedRoaming() );
+    
+    MPMLOGSTRING2( "CMPMServerSession::ExtractConnPref - \
+IapId = %d", aMpmConnPref.IapId());
+    
+    MPMLOGSTRING2( "CMPMServerSession::ExtractConnPref - \
+MandateIap = %d", aMpmConnPref.MandateIap());
+    
+    MPMLOGSTRING2( "CMPMServerSession::ExtractConnPref - \
+NetId = %d", aMpmConnPref.NetId());
+    
+    MPMLOGSTRING2( "CMPMServerSession::ExtractConnPref - \
+NoteBehaviour = %d", aMpmConnPref.NoteBehaviour());
+    
+    MPMLOGSTRING2( "CMPMServerSession::ExtractConnPref - \
+SnapId = %d", aMpmConnPref.SnapId());
+    
+    MPMLOGSTRING2( "CMPMServerSession::ExtractConnPref - \
+SnapPurpose = %d", aMpmConnPref.SnapPurpose());
+
+    MPMLOGSTRING2( "CMPMServerSession::ExtractConnPref - \
 Error code in the end: %d", error )
     return error;
     }
@@ -2666,16 +2662,9 @@
             }
         }
 
-    TInt err(0);
     TInt currentIap = MyServer().GetBMIap( iConnId );
-    MPMLOGSTRING4( "CMPMServerSession::PrefIAPNotificationL - \
-current iap %d, last notified %d, err %d ", currentIap, iLastNotifiedIap, err )
-    if( err != KErrNone )
-        {
-        MPMLOGSTRING( "CMPMServerSession::PrefIAPNotificationL: Connection is not \
-registered for notifications" )
-        return;
-        }
+    MPMLOGSTRING3( "CMPMServerSession::PrefIAPNotificationL - \
+current iap %d, last notified %d ", currentIap, iLastNotifiedIap )
         
     TBool iapTypeLanOrWlan( EFalse );
     RAvailableIAPList  availableIAPList;
@@ -2732,9 +2721,9 @@
                                        iapTypeLanOrWlan,
                                        *this );
         
-        if ( CheckNotifNeed( currentIap,
-                             iLastNotifiedIap,
-                             validateIapId ) )
+        if ( CheckNotifNeedL( currentIap,
+                              iLastNotifiedIap,
+                              validateIapId ) )
             {
             MPMLOGSTRING2( "CMPMServerSession::PrefIAPNotificationL: \
 Sending pref iap notification connId: 0x%x", iConnId )
@@ -2798,7 +2787,7 @@
         // 
     else 
         {
-        err = availableIAPList.Find( oldIapId );
+        TInt err = availableIAPList.Find( oldIapId );
         if( err == KErrNotFound )
             {
             MPMLOGSTRING2( "CMPMServerSession::PrefIAPNotificationL: \
@@ -2836,18 +2825,10 @@
     if ( !( iIapSelection->MpmConnPref().NoteBehaviour() &
             TExtendedConnPref::ENoteBehaviourConnDisableNotes) )
         {
-        TBool connectionAlreadyActive = iMyServer.CheckIfStarted( aIapId );
-        CConnectionUiUtilities* connUiUtils = NULL;
-        TRAPD( popupError,
-               connUiUtils = CConnectionUiUtilities::NewL();
-               connUiUtils->ConnectingViaDiscreetPopup(
-                   aIapId,
-                   connectionAlreadyActive );
-               delete connUiUtils; );
-        if ( popupError && connUiUtils )
-            {
-            delete connUiUtils;
-            }
+        TBool connectionAlreadyActive = iMyServer.CheckIfStarted( aIapId, iConnId );
+        
+        iMyServer.ConnUiUtils()->ConnectingViaDiscreetPopup( aIapId,
+                                                  connectionAlreadyActive );
         }
 
     TMpmNotificationStartIAP notifInfo;
@@ -2974,35 +2955,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CMPMServerSession::IsPhoneOfflineL
-// 
-// Checks if phone is in offline mode or not.
-// Return ETrue if phone is in offline mode.
-// Return EFalse if phone is not in offline mode.
-// -----------------------------------------------------------------------------
-//
-TBool CMPMServerSession::IsPhoneOfflineL() const
-    {
-    MPMLOGSTRING( "CMPMServerSession::IsPhoneOfflineL" )
-    if ( iOfflineFeatureSupported )
-        {
-        CRepository* repository = CRepository::NewLC(KCRUidCoreApplicationUIs);
-        TInt connAllowed = ECoreAppUIsNetworkConnectionAllowed;
-        repository->Get( KCoreAppUIsNetworkConnectionAllowed, connAllowed );
-        CleanupStack::PopAndDestroy( repository ); 
-        if ( !connAllowed )
-            {
-            MPMLOGSTRING(
-                "CMPMServerSession::IsPhoneOfflineL Phone is in offline mode" )
-            return ETrue;
-            }
-        }
-    MPMLOGSTRING(
-        "CMPMServerSession::IsPhoneOfflineL Phone is not in offline mode" )
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
 // CMPMServerSession::AvailableUnblacklistedIapsL
 // -----------------------------------------------------------------------------
 //
@@ -3078,23 +3030,20 @@
                 //
                 TBool usesSame( EFalse ); 
 
-                if ( !iMyServer.CommsDatAccess()->CheckEasyWLanL( unavailableIAPs[i] ) )
-                    {
-                    TRAP_IGNORE( iMyServer.CommsDatAccess()->MatchSSIDL( ssid, 
-                                                              unavailableIAPs[i], 
-                                                              usesSame,
-                                                              *this ) )
+                TRAP_IGNORE( iMyServer.CommsDatAccess()->MatchSSIDL( ssid, 
+                                                                     unavailableIAPs[i], 
+                                                                     usesSame,
+                                                                     *this ) )
                                                               
-                    if ( usesSame )
-                        {
-                        // Append unavailable IAP to list of available IAPs
-                        // if it uses same SSID as active WLAN connection.
-                        // 
-                        MPMLOGSTRING2(
-                            "CMPMServerSession::AvailableUnblacklistedIapsL:\
+                if ( usesSame )
+                    {
+                    // Append unavailable IAP to list of available IAPs
+                    // if it uses same SSID as active WLAN connection.
+                    // 
+                    MPMLOGSTRING2(
+                        "CMPMServerSession::AvailableUnblacklistedIapsL:\
  Append unavailable IapId = %i", unavailableIAPs[i] )
-                        aAvailableIAPs.AppendL( unavailableIAPs[i] );
-                        }
+                    aAvailableIAPs.AppendL( unavailableIAPs[i] );
                     }
                 }
             }
@@ -3158,12 +3107,12 @@
     }
 
 // -----------------------------------------------------------------------------
-// CMPMServerSession::CheckNotifNeed
+// CMPMServerSession::CheckNotifNeedL
 // -----------------------------------------------------------------------------
 //
-TBool CMPMServerSession::CheckNotifNeed( const TUint32       aCurrentIap,
-                                         const TUint32       aLastNotifiedIap,
-                                         const TUint32       aValidatedIap )
+TBool CMPMServerSession::CheckNotifNeedL( const TUint32       aCurrentIap,
+                                          const TUint32       aLastNotifiedIap,
+                                          const TUint32       aValidatedIap )
     {
     TBool retValue( EFalse );
 
@@ -3182,8 +3131,19 @@
             }
         else
             {
-            MPMLOGSTRING( "CMPMServerSession::CheckNotifNeed: notif needed" )
-            retValue = ETrue;
+            TCmUsageOfWlan usageOfWlan = MyServer().CommsDatAccess()->ForcedRoamingL();
+            
+            if ( usageOfWlan == ECmUsageOfWlanManual &&
+                 MyServer().CommsDatAccess()->CheckWlanL( aValidatedIap ) != ENotWlanIap  )
+                {
+                MPMLOGSTRING( "CMPMServerSession::CheckNotifNeed: WLAN IAP, Switch to WLAN is Manual, no need to send notification" )
+                retValue = EFalse;
+                }
+            else
+                {
+                MPMLOGSTRING( "CMPMServerSession::CheckNotifNeed: notif needed" )
+                retValue = ETrue;             
+                }
             }
        }
     else
@@ -3301,23 +3261,6 @@
     {
     MPMLOGSTRING2( "CMPMServerSession::ChooseIapComplete aError = %d", aError )
 
-    // Show error popup if it's allowed per client request
-    if ( ChooseBestIapCalled() && (!( iIapSelection->MpmConnPref().NoteBehaviour() &
-            TExtendedConnPref::ENoteBehaviourConnDisableNotes ))
-            && ( aError != KErrNone ) )
-        {
-        CConnectionUiUtilities* connUiUtils = NULL;
-        TRAPD( error, connUiUtils = CConnectionUiUtilities::NewL() );
-        if ( error == KErrNone && connUiUtils )
-            {
-            // Note: Below function shows the discreet popup only if the error code
-            // belongs to the set of errors that are shown to the user.
-            // Otherwise the popup is not shown.
-            connUiUtils->ConnectionErrorDiscreetPopup( aError );
-            delete connUiUtils;
-            connUiUtils = NULL;
-            }
-        }
     
     // Try to write back arguments and complete message.
     // 
@@ -3373,6 +3316,29 @@
         MPMLOGSTRING( "CMPMServerSession::ChooseIapComplete Message completed" )
         iChooseIapMessage.Complete( aError );
         }
+
+    // Show error popup if it's allowed per client request
+    if ( ChooseBestIapCalled() && (!( iIapSelection->MpmConnPref().NoteBehaviour() &
+            TExtendedConnPref::ENoteBehaviourConnDisableNotes ))
+            && ( aError != KErrNone ) )
+        {
+        // Note: Below function shows the discreet popup only if the error code
+        // belongs to the set of errors that are shown to the user.
+        // Otherwise the popup is not shown.
+        iMyServer.ConnUiUtils()->ConnectionErrorDiscreetPopup( aError );
+        }
+    else
+        {
+        if (!( iIapSelection->MpmConnPref().NoteBehaviour() &
+            TExtendedConnPref::ENoteBehaviourConnDisableNotes ) )
+            {
+            TBool connectionAlreadyActive =
+                MyServer().CheckIfStarted( aPolicyPref->IapId(), iConnId );
+
+            iMyServer.ConnUiUtils()->ConnectingViaDiscreetPopup( aPolicyPref->IapId(),
+                                                      connectionAlreadyActive );
+            }            
+        }
     }
 
 
@@ -3578,7 +3544,7 @@
 TBool CMPMServerSession::ForcedRoaming()
     {
     TBool forcedRoaming( EFalse );
-    if ( iIapSelection != NULL )
+    if ( iIapSelection )
         {
         forcedRoaming = iIapSelection->MpmConnPref().ForcedRoaming();
         }
@@ -3658,7 +3624,8 @@
         // be filtered.
         index = 0;
         RAvailableIAPList availableIaps; 
-            
+        CleanupClosePushL( availableIaps );
+		
         for ( TUint i = 0; i < aIapInfo.iCount; i++ )
             {
             availableIaps.AppendL( aIapInfo.iIap[i].iIapId );
@@ -3703,7 +3670,8 @@
                 aIapInfo.iCount--;                               
                 }
             index++;
-            }        
+            }
+        CleanupStack::PopAndDestroy( &availableIaps );
         }
     }
 
--- a/bearermanagement/mpm/src/mpmwlanquerydialog.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/bearermanagement/mpm/src/mpmwlanquerydialog.cpp	Mon May 03 12:53:07 2010 +0300
@@ -27,42 +27,21 @@
 #include "mpmconnmonevents.h"
 #include "mpmlogger.h"
 
-// valid Wep key lengths, to check wep key format
-// (wep key format depends on key length)
-const TInt KConnUiUtilsWepLengthASCII5 = 5;
-const TInt KConnUiUtilsWepLengthASCII13 = 13;
-const TInt KConnUiUtilsWepLengthASCII29 = 29;
-const TInt KConnUiUtilsWepLengthHEX10 = 10;
-const TInt KConnUiUtilsWepLengthHEX26 = 26;
-const TInt KConnUiUtilsWepLengthHEX58 = 58; 
-
-// Retry count and delay for storing Easy WLAN data
-const TInt KStoreRetryCount = 10;
-const TInt KStoreRetryDelay = 100000;
-
 // ======== MEMBER FUNCTIONS ========
 
 // ---------------------------------------------------------------------------
 // CMPMWlanQueryDialog::CMPMWlanQueryDialog
 // ---------------------------------------------------------------------------
 //
-CMPMWlanQueryDialog::CMPMWlanQueryDialog( CMPMIapSelection&  aSession,
+CMPMWlanQueryDialog::CMPMWlanQueryDialog( CMPMIapSelection&  aIapSelection,
                                           TUint32            aWlanIapId )
   : CActive( CActive::EPriorityStandard ),
-    iIapSelection( aSession ),
-    iNetworkPrefs(),
-    iNotifWep(),
-    iWlanQueryState( EWlanNetwork ),
+    iIapSelection( aIapSelection ),
+    iWlanQueryState( EOffline ),
     iWlanIapId( aWlanIapId ),
-    iEasyWlanSelected( EFalse ),
-    iOverrideStatus( KErrNone ),
-    iConnUiUtils( NULL ), 
-    iWps( NULL ),
-    iWpsReturn( WiFiProt::EWiFiOK ),
-    iWpsCompleted( EFalse ),
-    iRetryCount( 0 )
+    iOverrideStatus( KErrNone )    
     {
-    
+    CActiveScheduler::Add( this );
     }
     
 // ---------------------------------------------------------------------------
@@ -72,9 +51,6 @@
 void CMPMWlanQueryDialog::ConstructL()
     {
     User::LeaveIfError(iNotifier.Connect());
-    CActiveScheduler::Add( this );
-    iConnUiUtils = CConnectionUiUtilities::NewL();
-    User::LeaveIfError( iTimer.CreateLocal() );
     }
 
 // ---------------------------------------------------------------------------
@@ -100,14 +76,14 @@
 CMPMWlanQueryDialog::~CMPMWlanQueryDialog()
     {
     MPMLOGSTRING( "CMPMWlanQueryDialog::~CMPMWlanQueryDialog enters" )
+
     // Check if this dialog instance was not started but only added to the queue
     if ( iIapSelection.Session()->MyServer().FirstInWlanQueryQueue() != this )
         {
         MPMLOGSTRING( "CMPMWlanQueryDialog::~CMPMWlanQueryDialog, not a active delete" )
 
-        // Close notifier and timer
+        // Close notifier
         iNotifier.Close();
-        iTimer.Close();
         
         // We're not first in the queue, thus we can just delete.
         // But remember the pointer in the array.
@@ -119,24 +95,18 @@
     // Cancel previous dialogs if any.
     Cancel();
 
-    // Close notifier and timer
+    // Close notifier
     iNotifier.Close();
-    iTimer.Close();
 
-    delete iConnUiUtils;
-
-    delete iWps;
     // Remove self from the queue
     iIapSelection.Session()->MyServer().RemoveFromWlanQueryQueue( this );
-    
+
     // Start the next query
     CMPMWlanQueryDialog* dlg = iIapSelection.Session()->MyServer().FirstInWlanQueryQueue();
     if ( dlg )
         {
         MPMLOGSTRING( "CMPMWlanQueryDialog::~CMPMWlanQueryDialog starts new dialog" )
-        dlg->OfferInformation( iWlanIapId, 
-                               iIapSelection.OfflineNoteResponse(),
-                               iStatus.Int() );
+        dlg->OfferInformation( iStatus.Int() );
         // In destructor we cannot let the query leave
         TRAPD( err, dlg->StartWlanQueryL(); )
         if ( err != KErrNone )
@@ -160,26 +130,6 @@
         {
         iNotifier.CancelNotifier( KUidCOfflineWlanNoteDlg );
         }
-    else if ( iWlanQueryState == EWlanNetwork )    
-        {
-        iConnUiUtils->CancelSearchWLANNetwork();
-        }
-    else if ( iWlanQueryState == EWepSettings )    
-        {
-        iNotifier.CancelNotifier( KUidEasyWepDlg );
-        }
-    else if( iWlanQueryState == EWPS )
-        {
-        iWps->CancelWiFiProt();
-        }
-    else if ( iWlanQueryState == EWpaSettings )
-        {
-        iNotifier.CancelNotifier( KUidEasyWpaDlg );
-        }
-    else // ERetrySettingsStorage
-        {
-        iTimer.Cancel();
-        }
     }
     
 // ---------------------------------------------------------------------------
@@ -191,21 +141,18 @@
     MPMLOGSTRING3( "CMPMWlanQueryDialog::RunL status %d state %d", 
                    iStatus.Int(), 
                    iWlanQueryState )
+
     if( iWlanQueryState == EOffline )
         {
         if( iStatus.Int() == KErrNone )
             {
-            iIapSelection.SetOfflineNoteResponse( EOfflineResponseYes );
-            if( iIapSelection.Session()->MyServer().CommsDatAccess()->CheckEasyWLanL( iWlanIapId ) )
-                {
-                MPMLOGSTRING( "CMPMWlanQueryDialog::RunL starting wlan network query" )
-                GetNetworkPrefs();
-                return;
-                }
+            iIapSelection.Session()->MyServer().SetOfflineWlanQueryResponse(
+                    EOfflineResponseYes );
             }
         else if ( iStatus.Int() == KErrCancel )
             {
-            iIapSelection.SetOfflineNoteResponse( EOfflineResponseNo );
+            iIapSelection.Session()->MyServer().SetOfflineWlanQueryResponse(
+                    EOfflineResponseNo );
             MPMLOGSTRING2( "CMPMWlanQueryDialog::RunL offline query returned %d", 
                            iStatus.Int() )
             }
@@ -215,163 +162,12 @@
                            iStatus.Int() )
             }
         }
-    else if( iWlanQueryState == EWlanNetwork )
+    // if an error was given through OfferInformation() -call we abort the execution.
+    //
+    else if ( iOverrideStatus != KErrNone )
         {
-        if( iStatus.Int() == KErrNone )
-            {
-            
-            TUint secMode( 0 );
-            TWlanNetMode connMode( EInfra );
-            TInt err = ConnSecModeToCommsDatSecMode( iNetworkPrefs().iSecMode,
-                                                     secMode );
-            if( err != KErrNone )
-       	    	{
-       	    	MPMLOGSTRING( "CMPMWlanQueryDialog::RunL, Unknown security mode" )
-       	    	iWlanIapId = 0;
-                iWlanQueryState = EWlanNetwork;
-       	    	iIapSelection.UserWlanSelectionDoneL( KErrCouldNotConnect, iWlanIapId );
-       	    	return;
-       	    	}
-            
-            TUint32 configuredIap = iIapSelection.Session()->MyServer().
-                CommsDatAccess()->CheckWLANIapWithSsidL( iNetworkPrefs().iSsId, 
-                                                         secMode,
-                                                         connMode );
-            // If previously unknown IAP, query wep/wpa parameters
-            //
-            if( !configuredIap )
-                {
-                iEasyWlanSelected = ETrue;
-                if ( iNetworkPrefs().iProtectedSetupSupported && 
-                     iNetworkPrefs().iNetworkMode != EWlanConnectionModeAdhoc )
-                    {
-                    StartWpsDlgL();
-                    return;                                    
-                    }         
-                // WEP
-                //
-                if( iNetworkPrefs().iSecMode == EWlanConnectionSecurityWep )
-                    {
-                    MPMLOGSTRING( "CMPMWlanQueryDialog::RunL unknown wep network" )
-                    iWlanQueryState = EWepSettings;
-                    iNotifier.StartNotifierAndGetResponse( iStatus, 
-                                                           KUidEasyWepDlg, 
-                                                           iNotifWep, 
-                                                           iNotifWep );
-                    SetActive();
-                    return;
-                    }
-                // WPA
-                //
-                else if ( iNetworkPrefs().iSecMode == EWlanConnectionSecurityWpaPsk )
-                    {
-                    MPMLOGSTRING( "CMPMWlanQueryDialog::RunL unknown wpa network" )
-                    iWlanQueryState = EWpaSettings;
-                    iNotifier.StartNotifierAndGetResponse( iStatus, 
-                                                           KUidEasyWpaDlg, 
-                                                           iNotifWpaKey, 
-                                                           iNotifWpaKey );
-                    SetActive();
-                    return;
-
-                    }
-                else
-                    {
-                    MPMLOGSTRING2( "CMPMWlanQueryDialog::RunL security mode %d", 
-                                   iNetworkPrefs().iSecMode )
-                    }
-                }
-        	
-        	else
-        	    {
-        	    iWlanIapId = configuredIap;
-        	    MPMLOGSTRING2( "CMPMWlanQueryDialog::RunL found configured iap matching ssid, id %d", 
-        	                   iWlanIapId )
-        	    
-        	    }
-            }
-        else if( iStatus.Int() == KErrCancel )
-            {
-            iEasyWlanSelected = EFalse;
-            MPMLOGSTRING( "CMPMWlanQueryDialog::RunL easy wlan dialog cancelled, \
-setting easy wlan as not selected" )
-            }
-        else
-            {
-            MPMLOGSTRING2( "CMPMWlanQueryDialog::RunL EWlanNetwork error %d", 
-                iStatus.Int() )
-            }
-        
-        }
-    else if( iWlanQueryState == EWepSettings || iWlanQueryState == EWpaSettings )
-        {
-        if( iStatus.Int() == KErrCancel )
-      	   {
-            MPMLOGSTRING( "CMPMWlanQueryDialog::Key dialog cancelled,back to easy wlan" )
-            iNetworkPrefs().iSsId.FillZ();
-            iNetworkPrefs().iNetworkMode = EWlanConnectionModeNotConnected;
-            iNetworkPrefs().iSecMode = EWlanConnectionSecurityOpen;
-            GetNetworkPrefs();
-            return;
-            }
-        }
-    else if( iWlanQueryState == EWPS )
-        {
-        MPMLOGSTRING2( "CMPMWlanQueryDialog::RunL WPS, status %d", iStatus.Int() )
-        if( iStatus.Int()  == KErrNone )
-            {
-            if( iWpsReturn == WiFiProt::EWiFiOK)
-                {
-                MPMLOGSTRING( "CMPMWlanQueryDialog::RunL WPS ok" )
-                iWpsCompleted = ETrue;
-                }
-            else if ( iWpsReturn == WiFiProt::EWiFiCancel )
-                {
-                MPMLOGSTRING( "CMPMWlanQueryDialog::RunL WPS cancelled" )
-                iStatus = KErrCancel;
-                }
-            else // WiFiProt::EWiFiNoAuto
-                {
-                if( iNetworkPrefs().iSecMode == EWlanConnectionSecurityWep )
-                    {
-                    MPMLOGSTRING( "CMPMWlanQueryDialog::RunL: No WPS, starting WEP key query" );
-                    iWlanQueryState = EWepSettings;
-                    iNotifier.StartNotifierAndGetResponse( iStatus, 
-                            KUidEasyWepDlg, 
-                            iNotifWep, 
-                            iNotifWep );
-                    SetActive();
-                    return;
-                    }
-                else if ( iNetworkPrefs().iSecMode == EWlanConnectionSecurityWpaPsk )
-                    {
-                    MPMLOGSTRING( "CMPMWlanQueryDialog::RunL: No WPS, starting WPA key query" );
-                    iWlanQueryState = EWpaSettings;
-                    iNotifier.StartNotifierAndGetResponse( iStatus, 
-                            KUidEasyWpaDlg, 
-                            iNotifWpaKey, 
-                            iNotifWpaKey );
-                    SetActive();
-                    return;
-                    }
-                else if ( iNetworkPrefs().iSecMode == EWlanConnectionSecurityOpen )
-                    {
-                    MPMLOGSTRING( "CMPMWlanQueryDialog::RunL: No WPS, sec mode open" );
-					iStatus = KErrNone;
-                    }
-                else
-                    {
-                    MPMLOGSTRING2( "CMPMWlanQueryDialog::RunL: No WPS, unsupported sec mode %d", 
-                            iNetworkPrefs().iSecMode );
-                    iStatus = KErrNotSupported;
-                    }
-                }
-            }
-        }
-    else if ( iWlanQueryState == ERetrySettingsStorage )
-        {
-        // Retry settings storage
-        MPMLOGSTRING( "CMPMWlanQueryDialog::RunL Retry settings storage" )
+        MPMLOGSTRING2( "CMPMWlanQueryDialog::StartWlanQuery inherited error %d", iOverrideStatus )
+        iIapSelection.UserWlanSelectionDoneL( iOverrideStatus, iWlanIapId );
         }
     else
         {
@@ -379,29 +175,9 @@
         User::Leave( KErrCancel );
         }
         
-    TRAPD( leaveCode, iIapSelection.UserWlanSelectionDoneL( iStatus.Int(), iWlanIapId ) );
-    if( leaveCode != KErrNone )
-        {
-        // Something caused method to leave, if CommsDat was locked we should retry 
-        if ( iStatus.Int() == KErrNone &&
-             leaveCode == KErrLocked &&
-             iRetryCount > 0 )
-            {
-            MPMLOGSTRING2( "CMPMWlanQueryDialog::RunL Start retry timer, retry count %d", iRetryCount )
-            iWlanQueryState = ERetrySettingsStorage;
-            iRetryCount--;
-            iTimer.After( iStatus, KStoreRetryDelay );
-            SetActive();
-            return;
-            }
-        else
-            {
-            User::Leave( leaveCode );
-            }
-        }
+    iIapSelection.UserWlanSelectionDoneL( iStatus.Int(), iWlanIapId );
     
     iWlanIapId = 0;
-    iWlanQueryState = EWlanNetwork;
     }
 
 // ---------------------------------------------------------------------------
@@ -411,7 +187,6 @@
 TInt CMPMWlanQueryDialog::RunError( TInt aError )
     {
     MPMLOGSTRING2( "CMPMWlanQueryDialog::RunError failed with %d", aError )
-    iEasyWlanSelected = EFalse;    
     iIapSelection.ChooseIapComplete( aError, NULL );    
     return KErrNone;
     }
@@ -423,26 +198,6 @@
 void CMPMWlanQueryDialog::StartWlanQueryL()
     {
     MPMLOGSTRING( "CMPMWlanQueryDialog::StartWlanQuery" )
-
-    iRetryCount = KStoreRetryCount;
-    
-    // if first dialog user, add it to the array and continue.
-    //
-    if ( iIapSelection.Session()->MyServer().WlanQueryQueue()->Count() == 0 )
-        {
-        MPMLOGSTRING( "CMPMWlanQueryDialog::StartWlanQuery First one, start immediately" )
-        iIapSelection.Session()->MyServer().AppendWlanQueryQueueL( this );
-        }
-    // if another dialog should be processed before this, just add and return.
-    //
-    else if ( iIapSelection.Session()->MyServer().FirstInWlanQueryQueue() != this )
-        {
-        MPMLOGSTRING( "CMPMWlanQueryDialog::StartWlanQuery Latter, process later" )
-        iIapSelection.Session()->MyServer().AppendWlanQueryQueueL( this );
-        return;
-        }
-    // else Continue to process the first dialog.(this one)
-    // FirstInWlanQueryQueue() == this && Count() > 0
     
     TUint32 activeWlanIap = iIapSelection.Session()->MyServer().IsWlanConnectionStartedL( 
         iIapSelection.Session()->MyServer().CommsDatAccess() );
@@ -462,19 +217,12 @@
     MPMLOGSTRING2( "CMPMWlanQueryDialog::StartWlanQuery noteBehaviour = %d", noteBehaviour )
     
     if( !emergencyCallEstablished && 
-        iIapSelection.Session()->IsPhoneOfflineL() && 
+        iIapSelection.Session()->MyServer().IsPhoneOffline() && 
         !activeWlanIap && 
-        iIapSelection.OfflineNoteResponse() != EOfflineResponseYes &&
+        iIapSelection.Session()->MyServer().OfflineWlanQueryResponse() != EOfflineResponseYes &&
         iOverrideStatus == KErrNone )
         {
-        // if user has already refused offline note complete immediately
-        //
-        if ( iIapSelection.OfflineNoteResponse() == EOfflineResponseNo )
-            {
-            MPMLOGSTRING( "CMPMWlanQueryDialog::StartWlanQuery user has already refused offline" )
-            iIapSelection.UserWlanSelectionDoneL( KErrCancel, iWlanIapId );
-            }
-        else if ( noteBehaviour & TExtendedConnPref::ENoteBehaviourConnDisableQueries )
+        if ( noteBehaviour & TExtendedConnPref::ENoteBehaviourConnDisableQueries )
             {
             MPMLOGSTRING( "CMPMWlanQueryDialog::StartWlanQuery offline note query not shown due to disabled queries" )
             iIapSelection.UserWlanSelectionDoneL( KErrPermissionDenied, iWlanIapId );
@@ -490,32 +238,6 @@
             SetActive();
             }
         }
-    // if easy wlan iap and some wlan iap started, use existing connection
-    //
-    else if( iIapSelection.Session()->MyServer().CommsDatAccess()->CheckEasyWLanL( iWlanIapId )  && 
-             activeWlanIap )
-        {
-        MPMLOGSTRING2( "CMPMWlanQueryDialog::StartWlanQuery using active WLAN IAP %d", 
-                      activeWlanIap )
-        iIapSelection.UserWlanSelectionDoneL( KErrNone, activeWlanIap );      
-        }
-    // if easy wlan iap and easy wlan is not already started
-    // 
-    else if( iIapSelection.Session()->MyServer().CommsDatAccess()->CheckEasyWLanL( iWlanIapId )  && 
-             !iIapSelection.Session()->MyServer().CheckIfStarted( iWlanIapId ) &&
-             iNetworkPrefs().iSsId.Length() == 0 &&
-             iOverrideStatus == KErrNone )
-        {
-        MPMLOGSTRING( "CMPMWlanQueryDialog::StartWlanQuery starting network query" )
-        GetNetworkPrefs();
-        }
-    // if an error was given through OfferInformation() -call we abort the execution.
-    //
-    else if ( iOverrideStatus != KErrNone )
-        {
-        MPMLOGSTRING2( "CMPMWlanQueryDialog::StartWlanQuery inherited error %d", iOverrideStatus )
-        iIapSelection.UserWlanSelectionDoneL( iOverrideStatus, iWlanIapId );
-        }
     else
         {
         MPMLOGSTRING( "CMPMWlanQueryDialog::StartWlanQuery no wlan dialog to show" )
@@ -523,40 +245,19 @@
         }
     }
 
-
 // -----------------------------------------------------------------------------
 // CMPMWlanQueryDialog::OfferInformation
 // -----------------------------------------------------------------------------
 //
-void CMPMWlanQueryDialog::OfferInformation(
-                TUint32 aWlanIapId, 
-                TOfflineNoteResponse aOfflineStatus,
-                TInt aDialogStatus )
+void CMPMWlanQueryDialog::OfferInformation( TInt aDialogStatus )
     {
-    TBool isEasyWlan( EFalse );
-    // Take information from earlier note into use
-    // if the selected IAP is EasyWLAN or Offline note response was No.
-    //
-    TRAP_IGNORE( isEasyWlan = 
-        iIapSelection.Session()->MyServer().CommsDatAccess()->CheckEasyWLanL( iWlanIapId ); )
-    if ( isEasyWlan ) 
-        {
-        // iEasyWlanSelected is not passed as only the first connection 
-        // should write the easy wlan settings to commsdat if easy wlan is used.
-        // 
-        MPMLOGSTRING3( "CMPMWlanQueryDialog<0x%x>::OfferInformation: EasyWLAN, iap %d", 
-                       iIapSelection.Session()->ConnectionId(),
-                       aWlanIapId ) 
-
-        iWlanIapId      = aWlanIapId;
-        iOverrideStatus = aDialogStatus;
-        }
-    if ( aOfflineStatus != EOfflineResponseUndefined )
+    TOfflineWlanQueryResponse offlineResponse =
+            iIapSelection.Session()->MyServer().OfflineWlanQueryResponse();
+    if ( offlineResponse != EOfflineResponseUndefined )
         {
         MPMLOGSTRING3( "CMPMWlanQueryDialog<0x%x>::OfferInformation: offline response %d",
                        iIapSelection.Session()->ConnectionId(),
-                       aOfflineStatus ) 
-        iIapSelection.SetOfflineNoteResponse( aOfflineStatus );        
+                       offlineResponse )
         iOverrideStatus = aDialogStatus;
         }
 
@@ -568,313 +269,3 @@
 #endif 
     }
 
-
-// -----------------------------------------------------------------------------
-// CMPMWlanQueryDialog::StoreEasyWlanSelectionL
-// -----------------------------------------------------------------------------
-//
-void CMPMWlanQueryDialog::StoreEasyWlanSelectionL()
-    {
-    if( iEasyWlanSelected )
-        {
-        TWlanSsid ssid;
-        TWepKeyData wepData;
-        TUint wpaPskEnabled( 0 );
-        TUint wpaPskLen( 0 );
-        TBuf8<KWLMMaxWpaPskLength> wpa;       
-        TUint secMode( 0 );
-        TWlanNetMode connMode( EInfra );
-
-        if( iWpsCompleted )
-            {
-            GetEasyWlanDataForWpsL( ssid,
-                                    secMode,
-                                    connMode, 
-                                    wepData,
-                                    wpaPskEnabled, 
-                                    wpa, 
-                                    wpaPskLen );
-            MPMLOGSTRING3( "CMPMWlanQueryDialog::StoreEasyWlanSelection: \
-wps used, connection iap %d, ssid %S", iWlanIapId, &iWpsAttribute.iSsid )
-            iIapSelection.Session()->MyServer().Events()->
-                SetConnInfoIapSsid( iWlanIapId, 
-                                    iWpsAttribute.iSsid );
-            iIapSelection.Session()->MyServer().CommsDatAccess()->SetEasyWlanDataL( ssid,
-                                                                         secMode,
-                                                                         connMode, 
-                                                                         wepData,
-                                                                         wpaPskEnabled, 
-                                                                         wpa, 
-                                                                         wpaPskLen );
-            return;
-            }
-
-        MPMLOGSTRING( "CMPMWlanQueryDialog::StoreEasyWlanSelection: setting easy wlan data" )
-        GetEasyWlanDataL( ssid,
-                          secMode,
-                          connMode, 
-                          wepData,
-                          wpaPskEnabled, 
-                          wpa, 
-                          wpaPskLen );
-
-        MPMLOGSTRING3( "CMPMWlanQueryDialog::StoreEasyWlanSelection: \
-setting easy wlan iap %d ssid %S in connmon events", iWlanIapId, &iNetworkPrefs().iSsId )
-        iIapSelection.Session()->MyServer().Events()->SetConnInfoIapSsid( iWlanIapId, 
-                                                                          iNetworkPrefs().iSsId );
-        iIapSelection.Session()->MyServer().CommsDatAccess()->SetEasyWlanDataL( ssid,
-                                                                     secMode,
-                                                                     connMode, 
-                                                                     wepData,
-                                                                     wpaPskEnabled, 
-                                                                     wpa, 
-                                                                     wpaPskLen );
-                    
-        }
-    else
-        {
-        MPMLOGSTRING( "CMPMWlanQueryDialog::StoreEasyWlanSelection: no easy wlan selected by user" )
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CMPMWlanQueryDialog::GetEasyWlanDataL
-// -----------------------------------------------------------------------------
-//
-void CMPMWlanQueryDialog::GetEasyWlanDataL( TWlanSsid&    aSsid,
-                                            TUint&        aSecMode,
-                                            TWlanNetMode& aConnMode,
-                                            TWepKeyData&  aWepData,
-                                            TUint&        aEnableWpaPsk,
-                                            TDes8&        aWpaPsk,
-                                            TUint&        aWpaKeyLen  )
-    {
-    aSsid.Copy( iNetworkPrefs().iSsId );
-    if ( iNetworkPrefs().iNetworkMode == EWlanConnectionModeAdhoc )
-        {
-        aConnMode = EAdhoc;
-        }
-
-    // Set security mode
-    TInt err = ConnSecModeToCommsDatSecMode( iNetworkPrefs().iSecMode,
-                                             aSecMode );
-
-    if( err != KErrNone )
-        {
-        MPMLOGSTRING2( "CMPMWlanQueryDialog::StoreEasyWlanSelection: \
-unsupported sec mode %d. leaving", iNetworkPrefs().iSecMode )
-        User::Leave( KErrNotSupported );
-        }
-
-    if( iNetworkPrefs().iSecMode == EWlanConnectionSecurityWep )
-        {
-        CnvUtfConverter::ConvertFromUnicodeToUtf8( aWepData.iWep1, iNotifWep().iKey );
-        //MPMLOG8STRING2( "CMPMWlanQueryDialog::StoreEasyWlanSelection:wep-key8:%S ", &aWepData.iWep1 )
-        if( iNotifWep().iHex )
-            {
-        	aWepData.iWepFormat1 = 1;
-        	MPMLOGSTRING( "CMPMWlanQueryDialog::StoreEasyWlanSelection: wep format is 1 (hex)") 
-        	}
-        aWepData.iDefaultWep = EWlanDefaultWepKey1;
-        }
-    else if( iNetworkPrefs().iSecMode == EWlanConnectionSecurityWpaPsk )
-        {        
-        CnvUtfConverter::ConvertFromUnicodeToUtf8( aWpaPsk, iNotifWpaKey() );
-        aEnableWpaPsk = 1;
-        aWpaKeyLen = aWpaPsk.Length();
-        MPMLOGSTRING3( "CMPMWlanQueryDialog::StoreEasyWlanSelection:wpapsk-key:%s, len:%d", 
-                       &iNotifWpaKey(), 
-                       aWpaKeyLen )
-        }
-    else
-        {
-        MPMLOGSTRING2( "CMPMWlanQueryDialog::StoreEasyWlanSelection: \
-no key handling needed for sec mode %d", iNetworkPrefs().iSecMode )
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CMPMWlanQueryDialog::ConnSecModeToCommsDatSecMode
-// ---------------------------------------------------------------------------
-//
-TInt CMPMWlanQueryDialog::ConnSecModeToCommsDatSecMode( TWlanConnectionSecurityMode aConnSecmode,
-                                                        TUint& aCommsdatSecMode ) const
-    {
-
-    if ( aConnSecmode == EWlanConnectionSecurityOpen )
-        {
-        aCommsdatSecMode = EWlanSecModeOpen;
-        }
-    else if ( aConnSecmode == EWlanConnectionSecurityWep )
-        {
-        aCommsdatSecMode = EWlanSecModeWep;
-        }
-    else if ( aConnSecmode == EWlanConnectionSecurityWpaPsk )
-       	{
-       	aCommsdatSecMode = EWlanSecModeWpa2;
-       	}
-    else if ( aConnSecmode == EWlanConnectionSecurityWpa )
-       	{
-       	aCommsdatSecMode = EWlanSecModeWpa;
-        }
-    else
-       	{
-       	MPMLOGSTRING( "CMPMWlanQueryDialog::RunL, Unknown security mode" )
-       	return KErrCouldNotConnect;
-       	}
-    return KErrNone;    
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMPMWlanQueryDialog::IapSecModeToCommsDatSecMode
-// ---------------------------------------------------------------------------
-//
-TInt CMPMWlanQueryDialog::IapSecModeToCommsDatSecMode( TWlanIapSecurityMode aIapSecmode,
-                                                       TUint& aCommsdatSecMode ) const
-    {
-    switch( aIapSecmode )
-        {
-        case EWlanIapSecurityModeAllowUnsecure:
-    	    aCommsdatSecMode |= EWlanSecModeOpen;
-            break;
-        case EWlanIapSecurityModeWep:
-            aCommsdatSecMode |= EWlanSecModeWep;
-            break;
-        case EWlanIapSecurityModeWpa:
-            aCommsdatSecMode |= EWlanSecModeWpa;
-            break;
-        case EWlanIapSecurityModeWpa2Only:
-            aCommsdatSecMode |= EWlanSecModeWpa2;
-            break;
-        default:
-            MPMLOGSTRING2( "CMPMWlanQueryDialog::IapSecModeToCommsDatSecMode: \
-unsupported sec mode %d ", aIapSecmode )
-            return KErrNotSupported;
-        }
-    return KErrNone;    
-    }
-
-// -----------------------------------------------------------------------------
-// CMPMWlanQueryDialog::GetEasyWlanDataForWpsL
-// -----------------------------------------------------------------------------
-//
-void CMPMWlanQueryDialog::GetEasyWlanDataForWpsL( TWlanSsid&    aSsid,
-                                                  TUint&        aSecMode,
-                                                  TWlanNetMode& aConnMode,
-                                                  TWepKeyData&  aWepKeyData, 
-                                                  TUint&        aEnableWpaPsk,
-                                                  TDes8&        aWpaPsk,
-                                                  TUint&        aWpaKeyLen  )
-    {
-    aSsid.Copy( iWpsAttribute.iSsid );
-    if ( iWpsAttribute.iOperatingMode == EWlanOperatingModeAdhoc )
-        {
-        aConnMode = EAdhoc;
-        }
-    TInt err = IapSecModeToCommsDatSecMode( iWpsAttribute.iSecurityMode, 
-                                            aSecMode );
-    if( err != KErrNone )
-        {
-        MPMLOGSTRING( "CMPMWlanQueryDialog::GetEasyWlanDataForWpsL: \
-unsupported wps sec mode leaving" )
-        User::Leave( KErrNotSupported );
-        }
-
-    if( iWpsAttribute.iSecurityMode == EWlanIapSecurityModeWep )
-        {
-        if( iWpsAttribute.iWepKey1.Length() && 
-            IsWepFormatHexL( iWpsAttribute.iWepKey1.Length() ) )
-            {
-            aWepKeyData.iWepFormat1 = 1;
-            }
-        if( iWpsAttribute.iWepKey2.Length() && 
-            IsWepFormatHexL( iWpsAttribute.iWepKey2.Length() ) )
-            {
-            aWepKeyData.iWepFormat2 = 1;
-            }
-        if( iWpsAttribute.iWepKey3.Length() && 
-            IsWepFormatHexL( iWpsAttribute.iWepKey3.Length() ) )
-            {
-            aWepKeyData.iWepFormat3 = 1;
-            }
-        if( iWpsAttribute.iWepKey4.Length() && 
-            IsWepFormatHexL( iWpsAttribute.iWepKey4.Length() ) )
-            {
-            aWepKeyData.iWepFormat4 = 1;
-            }
-        aWepKeyData.iWep1.Copy( iWpsAttribute.iWepKey1 );
-        aWepKeyData.iWep2.Copy( iWpsAttribute.iWepKey2 );
-        aWepKeyData.iWep3.Copy( iWpsAttribute.iWepKey3 );
-        aWepKeyData.iWep4.Copy( iWpsAttribute.iWepKey4 );
-        aWepKeyData.iDefaultWep = iWpsAttribute.iWepDefaultKey;        
-        }
-    if( iWpsAttribute.iWpaPreSharedKey.Length() )
-        {
-        aEnableWpaPsk = 1;
-        aWpaPsk.Copy( iWpsAttribute.iWpaPreSharedKey );
-        aWpaKeyLen = aWpaPsk.Length();
-        }
-
-    }
-
-// ---------------------------------------------------------------------------
-// CMPMWlanQueryDialog::StartWpsDlgL
-// ---------------------------------------------------------------------------
-//
-void CMPMWlanQueryDialog::StartWpsDlgL()
-    {
-    MPMLOGSTRING( "CMPMWlanQueryDialog::StartWpsDlgL, Starting WPS" )
-    iWlanQueryState = EWPS;
-    iWps = CWiFiProtUiClient::NewL();
-    iWps->StartWiFiProtConnL( iNetworkPrefs().iSsId, // TWlanSsid&,
-                              iWpsAttribute,
-                              iWpsReturn,
-                              iStatus );
-    SetActive();
-    }
-
-// ---------------------------------------------------------------------------
-// CMPMWlanQueryDialog::IsWepFormatHexL
-// ---------------------------------------------------------------------------
-//
-TBool CMPMWlanQueryDialog::IsWepFormatHexL( TInt aLength ) const
-    {
-    MPMLOGSTRING2( "CMPMWlanQueryDialog::IsWepFormatHexL length %d", aLength )
-
-    if ( ( aLength == KConnUiUtilsWepLengthASCII5 ) ||
-        ( aLength == KConnUiUtilsWepLengthASCII13 ) ||
-        ( aLength == KConnUiUtilsWepLengthASCII29 ) )
-        {
-        return EFalse;
-        }
-    else if ( ( aLength == KConnUiUtilsWepLengthHEX10 ) ||
-        ( aLength == KConnUiUtilsWepLengthHEX26 ) ||
-        ( aLength == KConnUiUtilsWepLengthHEX58 ) )
-        {
-        return ETrue;
-        }
-    else
-        {
-        User::Leave( KErrNotSupported );
-        }            
-    return EFalse;
-    }
-    
-// ---------------------------------------------------------------------------
-// CMPMWlanQueryDialog::GetNetworkPrefs
-// ---------------------------------------------------------------------------
-//
-void CMPMWlanQueryDialog::GetNetworkPrefs()
-    {
-    iWlanQueryState = EWlanNetwork;
-    iConnUiUtils->SearchWLANNetworkAsync( iStatus,
-                                          iNetworkPrefs().iSsId,
-                                          iNetworkPrefs().iNetworkMode,
-                                          iNetworkPrefs().iSecMode, 
-                                          iNetworkPrefs().iProtectedSetupSupported
-                                        );
-    SetActive();
-    }
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/bwins/cmapplsettingsuiu.def	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,19 @@
+EXPORTS
+	??_ECmApplSettingsUi@@UAE@I@Z @ 1 NONAME ; CmApplSettingsUi::~CmApplSettingsUi(unsigned int)
+	?tr@CmApplSettingsUi@@SA?AVQString@@PBD0@Z @ 2 NONAME ; class QString CmApplSettingsUi::tr(char const *, char const *)
+	?getStaticMetaObject@CmApplSettingsUi@@SAABUQMetaObject@@XZ @ 3 NONAME ; struct QMetaObject const & CmApplSettingsUi::getStaticMetaObject(void)
+	?qt_metacast@CmApplSettingsUi@@UAEPAXPBD@Z @ 4 NONAME ; void * CmApplSettingsUi::qt_metacast(char const *)
+	?setSelection@CmApplSettingsUi@@QAEXABUSettingSelection@1@@Z @ 5 NONAME ; void CmApplSettingsUi::setSelection(struct CmApplSettingsUi::SettingSelection const &)
+	?tr@CmApplSettingsUi@@SA?AVQString@@PBD0H@Z @ 6 NONAME ; class QString CmApplSettingsUi::tr(char const *, char const *, int)
+	?trUtf8@CmApplSettingsUi@@SA?AVQString@@PBD0@Z @ 7 NONAME ; class QString CmApplSettingsUi::trUtf8(char const *, char const *)
+	??1CmApplSettingsUi@@UAE@XZ @ 8 NONAME ; CmApplSettingsUi::~CmApplSettingsUi(void)
+	?selection@CmApplSettingsUi@@QBE?AUSettingSelection@1@XZ @ 9 NONAME ; struct CmApplSettingsUi::SettingSelection CmApplSettingsUi::selection(void) const
+	?qt_metacall@CmApplSettingsUi@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 10 NONAME ; int CmApplSettingsUi::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?staticMetaObject@CmApplSettingsUi@@2UQMetaObject@@B @ 11 NONAME ; struct QMetaObject const CmApplSettingsUi::staticMetaObject
+	?finished@CmApplSettingsUi@@IAEXI@Z @ 12 NONAME ; void CmApplSettingsUi::finished(unsigned int)
+	?trUtf8@CmApplSettingsUi@@SA?AVQString@@PBD0H@Z @ 13 NONAME ; class QString CmApplSettingsUi::trUtf8(char const *, char const *, int)
+	??0CmApplSettingsUi@@QAE@PAVQObject@@@Z @ 14 NONAME ; CmApplSettingsUi::CmApplSettingsUi(class QObject *)
+	?metaObject@CmApplSettingsUi@@UBEPBUQMetaObject@@XZ @ 15 NONAME ; struct QMetaObject const * CmApplSettingsUi::metaObject(void) const
+	?open@CmApplSettingsUi@@QAEXXZ @ 16 NONAME ; void CmApplSettingsUi::open(void)
+	?setOptions@CmApplSettingsUi@@QAEXABV?$QFlags@W4SelectionDialogItems@CmApplSettingsUi@@@@ABV?$QSet@I@@@Z @ 17 NONAME ; void CmApplSettingsUi::setOptions(class QFlags<enum CmApplSettingsUi::SelectionDialogItems> const &, class QSet<unsigned int> const &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/cmapplsettingsui.pro	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,70 @@
+#
+# Copyright (c) 2010 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:
+# CM Manager Application Settings UI project file.
+#
+
+TEMPLATE = lib
+TARGET = cmapplsettingsui
+TARGET.CAPABILITY = ALL -TCB
+DEFINES += BUILD_CMAPPLSETTINGSUI_DLL 
+DEPENDPATH += .
+INCLUDEPATH += inc
+
+# Temporary solution to fix tracecompiler
+# When tracecompiler is fixed, this can be removed
+symbian: {
+    MMP_RULES += "USERINCLUDE traces"
+}
+
+CONFIG += hb
+RESOURCES = res/cmapplsettingsui.qrc
+
+TRANSLATIONS = cmapplsettingsui.ts
+
+#Store generated files to their own directory
+MOC_DIR = build
+RCC_DIR = build
+
+HEADERS += \
+    ../../ipcm_plat/connection_settings_ui_api/inc/cmapplsettingsui.h \
+    inc/cmapplsettingsui_p.h \
+    inc/cmradiodialog.h \
+    inc/cmsettingdata.h \
+    traces/OstTraceDefinitions.h
+    
+SOURCES += \
+    src/cmapplsettingsui.cpp \
+    src/cmapplsettingsui_p.cpp \
+    src/cmsettingdata.cpp \
+    src/cmradiodialog.cpp
+
+# Temporary export directory definition
+# This can be removed when the default has changed to "." from ".."
+mmpRuleDeffile = \
+    "$${LITERAL_HASH}ifdef WINSCW" \
+    "DEFFILE ./bwins/cmapplsettingsui.def" \
+    "$${LITERAL_HASH}else" \
+    "DEFFILE ./eabi/cmapplsettingsui.def" \
+    "$${LITERAL_HASH}endif"
+
+symbian: {
+    TARGET.UID3 = 0x2002DC89
+    TARGET.EPOCALLOWDLLDATA = 1
+    MMP_RULES += mmpRuleDeffile
+    SYMBIAN_PLATFORMS = WINSCW ARMV5
+    BLD_INF_RULES.prj_exports += "rom/cmapplsettingsui.iby CORE_MW_LAYER_IBY_EXPORT_PATH(cmapplsettingsui.iby)"
+    BLD_INF_RULES.prj_exports += "rom/cmapplsettingsui_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(cmapplsettingsui_resources.iby)"
+    LIBS += -lcmmanager -lconnection_settings_shim
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/eabi/cmapplsettingsuiu.def	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,19 @@
+EXPORTS
+	_ZN16CmApplSettingsUi10setOptionsERK6QFlagsINS_20SelectionDialogItemsEERK4QSetIjE @ 1 NONAME
+	_ZN16CmApplSettingsUi11qt_metacallEN11QMetaObject4CallEiPPv @ 2 NONAME
+	_ZN16CmApplSettingsUi11qt_metacastEPKc @ 3 NONAME
+	_ZN16CmApplSettingsUi12setSelectionERKNS_16SettingSelectionE @ 4 NONAME
+	_ZN16CmApplSettingsUi16staticMetaObjectE @ 5 NONAME DATA 16
+	_ZN16CmApplSettingsUi19getStaticMetaObjectEv @ 6 NONAME
+	_ZN16CmApplSettingsUi4openEv @ 7 NONAME
+	_ZN16CmApplSettingsUi8finishedEj @ 8 NONAME
+	_ZN16CmApplSettingsUiC1EP7QObject @ 9 NONAME
+	_ZN16CmApplSettingsUiC2EP7QObject @ 10 NONAME
+	_ZN16CmApplSettingsUiD0Ev @ 11 NONAME
+	_ZN16CmApplSettingsUiD1Ev @ 12 NONAME
+	_ZN16CmApplSettingsUiD2Ev @ 13 NONAME
+	_ZNK16CmApplSettingsUi10metaObjectEv @ 14 NONAME
+	_ZNK16CmApplSettingsUi9selectionEv @ 15 NONAME
+	_ZTI16CmApplSettingsUi @ 16 NONAME
+	_ZTV16CmApplSettingsUi @ 17 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/inc/cmapplsettingsui_p.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,129 @@
+/*
+* Copyright (c) 2010 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:
+* CM Manager Application Settings UI private interface.  
+*
+*/
+
+#ifndef CMAPPLSETTINGSUI_P_H
+#define CMAPPLSETTINGSUI_P_H
+
+// System includes
+
+#include <QObject>
+#include <QFlags>
+#include <QSet>
+#include <QList>
+#include <QSharedPointer>
+
+// User includes
+
+#include "cmconnectionmethod_shim.h"
+#include "cmdestination_shim.h"
+#include "cmsettingdata.h"
+#include "cmapplsettingsui.h"
+
+// Forward declarations
+
+class QTranslator;
+class CmManagerShim;
+class CmRadioDialog;
+class TestCmApplSettingsUi;
+
+// External data types
+
+// Constants
+
+// Class declaration
+
+class CmApplSettingsUiPrivate : QObject
+{
+    Q_OBJECT
+
+public:
+
+    // Data types
+
+    explicit CmApplSettingsUiPrivate(CmApplSettingsUi *q_pointer);
+    
+    virtual ~CmApplSettingsUiPrivate();
+
+    void setOptions(
+        const QFlags<CmApplSettingsUi::SelectionDialogItems> &listItems,
+        const QSet<CmApplSettingsUi::BearerTypeFilter> &bearerFilter);
+    
+    void setSelection(
+        const CmApplSettingsUi::SettingSelection &selection);
+    
+    CmApplSettingsUi::SettingSelection selection() const;
+    
+    void open();
+    
+signals:
+
+public slots:
+
+protected:
+
+protected slots:
+
+private:
+
+    Q_DISABLE_COPY(CmApplSettingsUiPrivate)
+
+    void runDestinationDialog();
+    
+    void runConnectionMethodDialog();
+        
+    int findDestination(uint destinationId) const;
+
+    int findConnectionMethod(uint connMethodId) const;
+
+    void emitFinished(uint status) const;
+    
+private slots:
+
+    void destinationDialogResult(bool success);
+    
+    void connMethodDialogResult(bool success);
+
+private: // data
+    
+    //! "Not found" search index value. 
+    static const int ItemNotFound = -1;
+
+    // General member data
+    CmApplSettingsUi *q_ptr;                //!< Public implementation
+    QSharedPointer<CmManagerShim> mCmManagerShim;   //!< CM Manager client instance
+    QTranslator *mAppTranslator;            //!< Translator for application text ID's       
+    QTranslator *mCommonTranslator;         //!< Translator for common text ID's
+
+    // Configuration
+    QFlags<CmApplSettingsUi::SelectionDialogItems> mListItems;  //!< Wanted dialog type's
+    
+    // State data
+    CmSettingData mSettingData;             //!< Setting data
+    CmRadioDialog *mDestinationDialog;      //!< Destination dialog
+    CmRadioDialog *mConnMethodDialog;       //!< Connection method dialog
+    CmApplSettingsUi::SettingSelection mSelection;          //!< Current selection
+    QList< QSharedPointer<CmSettingData::Destination> > mDestinations;  //! Destinations
+    QList< QSharedPointer<CmSettingData::ConnMethod> > mConnMethods;    //! Connection methods
+    
+    // Friend classes
+    
+    // Test class needs direct access
+    friend class TestCmApplSettingsUi;
+};
+
+#endif // CMAPPLSETTINGSUI_P_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/inc/cmradiodialog.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,126 @@
+/*
+* Copyright (c) 2010 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: 
+* Dialog implementation for the CM Manager Application Settings UI. 
+*
+*/
+
+#ifndef CMRADIODIALOG_H
+#define CMRADIODIALOG_H
+
+// System includes
+
+#include <QObject>
+#include <QSet>
+#include <QStringList>
+#include <QSharedPointer>
+
+// User includes
+
+// Forward declarations
+
+class HbDialog;
+class HbLabel;
+class HbRadioButtonList;
+class HbAction;
+class HbDocumentLoader;
+class TestCmApplSettingsUi;
+
+// External data types
+
+// Constants
+
+// Supported dialog types
+enum CmRadioDialogType {
+    CmRadioDialogTypeDestination = 1,       //!< Destination selection dialog
+    CmRadioDialogTypeAccessPoint            //!< Access point selection dialog
+};
+
+// Supported options
+enum CmRadioDialogOpt {
+    CmRadioDialogOptDedicatedAP = 1         //!< Append "Dedicated access point"
+};
+
+// Class declaration
+
+class CmRadioDialog : public QObject
+{
+    Q_OBJECT
+
+public:
+
+    // Data types
+
+    explicit CmRadioDialog(QObject *parent = 0);
+    
+    ~CmRadioDialog();
+    
+    void setType(CmRadioDialogType type);
+    
+    void setOptions(const QSet<CmRadioDialogOpt> &options);
+    
+    void setItems(const QStringList &list);
+    
+    void setSelected(int index);
+    
+    int selected() const;
+    
+    void open();
+    
+signals:
+
+    /*!
+     * Signal used for informing that the dialog has finished.
+     * 
+     * @param[in] success Dialog run success. This is true if OK was pressed.
+     */
+    void finished(bool success);
+
+public slots:
+
+    void dialogClosed(HbAction *action);
+
+protected:
+
+protected slots:
+
+private:
+
+    void setHeading();
+
+private slots:
+    
+    void loadDocml();
+
+private: // data
+
+    // Owned data
+    CmRadioDialogType mType;                    //!< Radio dialog type
+    QSet<CmRadioDialogOpt> mOptions;            //!< Radio dialog options
+    QSharedPointer<HbDocumentLoader> mLoader;   //!< Dialog document loader
+    QStringList mListItems;                     //!< Dialog radio button items
+    QSharedPointer<HbDialog> mDialog;           //!< Dialog reference
+    
+    // Not owned data
+    HbLabel *mHeading;                          //!< Dialog title
+    HbRadioButtonList *mList;                   //!< Dialog's radio button list
+    HbAction *mOkAction;                        //!< Dialog's OK button action
+    
+    // Friend classes
+    
+    // Test class needs direct access
+    friend class TestCmApplSettingsUi;
+};
+
+#endif // CMRADIODIALOG_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/inc/cmsettingdata.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,105 @@
+/*
+* Copyright (c) 2010 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:
+* Data handling encapsulation for CM Application Settings UI.
+*
+*/
+
+#ifndef CMSETTINGDATA_H
+#define CMSETTINGDATA_H
+
+// System includes
+#include <QString>
+#include <QFlags>
+#include <QSet>
+#include <QList>
+#include <QSharedPointer>
+#include <cmmanager_shim.h>
+#include <cmconnectionmethod_shim.h>
+#include <cmdestination_shim.h>
+
+// User includes
+
+// Forward declarations
+
+// External data types
+
+// Constants
+
+// Class declaration
+
+class CmSettingData
+{
+
+public:
+
+    // Data types
+
+    // Data class for Destination
+    class Destination
+    {
+    public:
+        int id;         //!< Destination ID.
+        QString name;   //!< Destination name.
+    };
+
+    // Data class for Connection Method
+    class ConnMethod
+    {
+    public:
+        int id;         //!< Connection Method ID.
+        QString name;   //!< Connection Method name.
+    };
+
+    explicit CmSettingData();
+    
+    ~CmSettingData();
+    
+    void setBearerFilter(const QSet<uint> &bearers);
+    
+    bool fetchDestinations(QList< QSharedPointer<Destination> > &destinations);
+
+    bool fetchConnMethods(QList< QSharedPointer<ConnMethod> > &connMethods);
+
+signals:
+
+public slots:
+
+protected:
+
+protected slots:
+
+private:
+
+    void getCmManager();
+
+    bool validateDestination(CmDestinationShim *destination) const;
+    
+    bool validateConnMethod(CmConnectionMethodShim *connMethod) const;
+
+    static bool connMethodLessThan(
+        const QSharedPointer<ConnMethod> connMethod1,
+        const QSharedPointer<ConnMethod> connMethod2);
+    
+private slots:
+
+private: // data
+
+    QSet<uint> mBearers;                        //!< Bearer filter.
+    QSharedPointer<CmManagerShim> mCmManager;   //!< CM Manager client instance
+
+    // Friend classes
+};
+
+#endif // CMSETTINGDATA_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/res/cmapplsettingsui.qrc	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,5 @@
+<RCC>
+    <qresource prefix="/docml" >
+        <file>cmradiodialog.docml</file>
+    </qresource>
+</RCC>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/rom/cmapplsettingsui.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2010 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:
+ * 
+ */
+
+#ifndef CMAPPLSETTINGSUI_IBY
+#define CMAPPLSETTINGSUI_IBY
+
+file=ABI_DIR\BUILD_DIR\cmapplsettingsui.dll SHARED_LIB_DIR\cmapplsettingsui.dll
+
+#endif // CMAPPLSETTINGSUI_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/rom/cmapplsettingsui_resources.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2010 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:
+ * 
+ */
+
+#ifndef CMAPPLSETTINGSUI_RESOURCES_IBY
+#define CMAPPLSETTINGSUI_RESOURCES_IBY
+
+#include <data_caging_paths_for_iby.hrh> 
+
+data=DATAZ_/QT_TRANSLATIONS_DIR/cmapplsettingsui.qm QT_TRANSLATIONS_DIR/cmapplsettingsui.qm 
+
+#endif // CMAPPLSETTINGSUI_RESOURCES_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/src/cmapplsettingsui.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2010 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:
+* CM Manager Application Settings UI implementation.  
+*
+*/
+
+// System includes
+
+// User includes
+
+#include "cmapplsettingsui_p.h"
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+CmApplSettingsUi::CmApplSettingsUi(QObject *parent) :
+    QObject(parent),
+    d_ptr(new CmApplSettingsUiPrivate(this))
+{
+}
+
+CmApplSettingsUi::~CmApplSettingsUi()
+{
+}
+
+void CmApplSettingsUi::setOptions(
+    const QFlags<SelectionDialogItems> &listItems,
+    const QSet<BearerTypeFilter> &bearerFilter)
+{
+    d_ptr->setOptions(listItems, bearerFilter);
+}
+
+void CmApplSettingsUi::setSelection(const SettingSelection &selection)
+{
+    d_ptr->setSelection(selection);
+}
+
+CmApplSettingsUi::SettingSelection CmApplSettingsUi::selection() const
+{
+    return d_ptr->selection();
+}
+
+void CmApplSettingsUi::open()
+{
+    d_ptr->open();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/src/cmapplsettingsui_p.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,417 @@
+/*
+* Copyright (c) 2010 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:
+* CM Manager Application Settings UI private implementation.  
+*
+*/
+
+// System includes
+
+#include <QTranslator>
+#include <HbApplication>
+#include <HbLabel>
+#include <HbListDialog>
+#include <cmmanager_shim.h>
+
+// User includes
+
+#include "cmradiodialog.h"
+#include "cmapplsettingsui_p.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmapplsettingsui_pTraces.h"
+#endif
+
+
+/*!
+    \class CmApplSettingsUiPrivate
+    \brief Private implementation class for Application Settings UI.
+
+    Displays a radio button list dialog for an application that can be used
+    to select a destination or connection method.
+
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructor.
+    
+    @param q_pointer Parent object.
+ */
+CmApplSettingsUiPrivate::CmApplSettingsUiPrivate(CmApplSettingsUi *q_pointer) :
+    QObject(q_pointer),
+    q_ptr(q_pointer),
+    mAppTranslator(new QTranslator(this)),
+    mCommonTranslator(new QTranslator(this)),
+    mListItems(
+        CmApplSettingsUi::ShowDestinations |
+        CmApplSettingsUi::ShowConnectionMethods),
+    mSettingData(),
+    mDestinationDialog(0),
+    mConnMethodDialog(0),
+    mSelection(),
+    mDestinations(),
+    mConnMethods()
+{   
+    OstTraceFunctionEntry0(CMAPPLSETTINGSUIPRIVATE_CMAPPLSETTINGSUIPRIVATE_ENTRY);
+    
+    // Initialize to default selection
+    mSelection.result = CmApplSettingsUi::SelectionTypeDestination;
+    mSelection.id = 0;
+        
+    // Install common localization
+    QString lang = QLocale::system().name(); 
+    QString path = "Z:/resource/qt/translations/"; 
+    bool loadStatus = mCommonTranslator->load("common_" + lang, path);
+    qApp->installTranslator(mCommonTranslator);
+    
+    // Install this library's localization
+    loadStatus = mAppTranslator->load("cmapplsettingsui_" + lang, path);
+    qApp->installTranslator(mAppTranslator);
+
+    OstTraceFunctionExit0(CMAPPLSETTINGSUIPRIVATE_CMAPPLSETTINGSUIPRIVATE_EXIT);
+}
+
+/*!
+    Destructor.
+ */
+CmApplSettingsUiPrivate::~CmApplSettingsUiPrivate()
+{
+    OstTraceFunctionEntry0(DUP1_CMAPPLSETTINGSUIPRIVATE_CMAPPLSETTINGSUIPRIVATE_ENTRY);
+    OstTraceFunctionExit0(DUP1_CMAPPLSETTINGSUIPRIVATE_CMAPPLSETTINGSUIPRIVATE_EXIT);
+}
+
+/*!
+    Options setter. 
+     
+    @param[in] listItems Dialog list items configuration.
+    @param[in] bearerFilter Dialog Connection Method bearer filter.
+ */
+void CmApplSettingsUiPrivate::setOptions(
+    const QFlags<CmApplSettingsUi::SelectionDialogItems> &listItems,
+    const QSet<CmApplSettingsUi::BearerTypeFilter> &bearerFilter)
+{
+    // Store the options
+    mListItems = listItems;
+    mSettingData.setBearerFilter(bearerFilter);
+}
+
+/*!
+    Dialog selection setter.
+    
+    @param[in] selection Dialog selection to set.
+ */
+void CmApplSettingsUiPrivate::setSelection(
+    const CmApplSettingsUi::SettingSelection &selection)
+{
+    // Set the selection.
+    // If the selection is invalid, it is ignored later on,
+    // and default is used instead.
+    mSelection = selection;
+}
+
+/*!
+    Dialog selection getter. Returns the current selection.
+    
+    @return Current dialog selection.
+ */
+CmApplSettingsUi::SettingSelection CmApplSettingsUiPrivate::selection() const
+{
+    return mSelection;
+}
+
+/*!
+    This function runs the dialog asynchronously. Use the setters to
+    configure the dialog before running. After the dialog has been closed
+    (accepted or cancelled), the signal finished() is emitted.
+ */
+void CmApplSettingsUiPrivate::open()
+{
+    OstTraceFunctionEntry0(CMAPPLSETTINGSUIPRIVATE_OPEN_ENTRY);
+
+    // Fetch filtered Destinations and Connection Methods
+    bool settingsRead = true;
+    if (mListItems.testFlag(CmApplSettingsUi::ShowDestinations)) {
+        settingsRead = mSettingData.fetchDestinations(mDestinations);
+    }
+    if (mListItems.testFlag(CmApplSettingsUi::ShowConnectionMethods)) {
+        settingsRead &= mSettingData.fetchConnMethods(mConnMethods);
+    }
+
+    if (!settingsRead) {
+        // Settings reading failed
+        emitFinished(CmApplSettingsUi::ApplSettingsErrorSettingsRead);
+    } else if (mListItems.testFlag(CmApplSettingsUi::ShowDestinations)) {
+        // Start with destination view
+        runDestinationDialog();
+    } else if (mListItems.testFlag(CmApplSettingsUi::ShowConnectionMethods)) {
+        // Start directly with connection method view
+        runConnectionMethodDialog();
+    } else {
+        // Nothing to show, so finish
+        emitFinished(CmApplSettingsUi::ApplSettingsErrorNoContent);
+    }
+    
+    OstTraceFunctionExit0(CMAPPLSETTINGSUIPRIVATE_OPEN_EXIT);
+}
+
+/*!
+    Destination selection dialog execution.
+ */
+void CmApplSettingsUiPrivate::runDestinationDialog()
+{
+    OstTraceFunctionEntry0(CMAPPLSETTINGSUIPRIVATE_RUNDESTINATIONDIALOG_ENTRY);
+
+    // Check that there is some content to show:
+    // -At least one Destination
+    // -Or at least one Connection Method under "Dedicated access point"
+    if (mDestinations.isEmpty()
+        && (!mListItems.testFlag(CmApplSettingsUi::ShowConnectionMethods)
+            || mConnMethods.isEmpty())) {
+        // Nothing to show, so finish
+        emitFinished(CmApplSettingsUi::ApplSettingsErrorNoContent);
+        OstTraceFunctionExit0(CMAPPLSETTINGSUIPRIVATE_RUNDESTINATIONDIALOG_EXIT);
+        return;
+    }
+
+    // Create a new Destination dialog
+    delete mDestinationDialog;
+    mDestinationDialog = new CmRadioDialog(this);
+    mDestinationDialog->setType(CmRadioDialogTypeDestination);
+    
+    // Add Dedicated access point option if requested & supported
+    if (mListItems.testFlag(CmApplSettingsUi::ShowConnectionMethods)
+        && !mConnMethods.isEmpty()) {
+        QSet<CmRadioDialogOpt> options;
+        options.insert(CmRadioDialogOptDedicatedAP);
+        mDestinationDialog->setOptions(options);
+    }
+    
+    // Add destinations to the dialog
+    QStringList destinations;
+    for (int i = 0; i < mDestinations.count(); i++) {
+        destinations << mDestinations[i]->name;
+    }
+    mDestinationDialog->setItems(destinations);
+    
+    // Set selection
+    int index = 0;          // Default index is the first
+    if (mListItems.testFlag(CmApplSettingsUi::ShowConnectionMethods)
+        && mSelection.result == CmApplSettingsUi::SelectionTypeConnectionMethod
+        && !mConnMethods.isEmpty()) {
+        // Dedicated access point
+        index = destinations.count();
+    } else {
+        int destinationIndex = findDestination(mSelection.id);
+        if (destinationIndex != ItemNotFound) {
+            index = destinationIndex;
+        }
+    }
+    mDestinationDialog->setSelected(index);
+    
+    // Execute the dialog
+    bool connected = connect(
+        mDestinationDialog,
+        SIGNAL(finished(bool)),
+        this,
+        SLOT(destinationDialogResult(bool)));
+    Q_ASSERT(connected);
+    mDestinationDialog->open();
+    
+    OstTraceFunctionExit0(DUP1_CMAPPLSETTINGSUIPRIVATE_RUNDESTINATIONDIALOG_EXIT);
+}
+
+/*!
+    Connection method selection dialog execution.
+ */
+void CmApplSettingsUiPrivate::runConnectionMethodDialog()
+{
+    OstTraceFunctionEntry0(CMAPPLSETTINGSUIPRIVATE_RUNCONNECTIONMETHODDIALOG_ENTRY);
+    
+    // Check that there is at least one Connection Method to show
+    if (mConnMethods.count() == 0) {
+        // Nothing to show, so finish
+        emitFinished(CmApplSettingsUi::ApplSettingsErrorNoContent);
+        OstTraceFunctionExit0(CMAPPLSETTINGSUIPRIVATE_RUNCONNECTIONMETHODDIALOG_EXIT);
+        return;
+    }
+
+    // Create a dialog & configure it
+    delete mConnMethodDialog;
+    mConnMethodDialog = new CmRadioDialog(this);
+    mConnMethodDialog->setType(CmRadioDialogTypeAccessPoint);
+
+    // Add connection methods to the dialog
+    QStringList connectionMethods;
+    for (int i = 0; i < mConnMethods.count(); i++) {
+        connectionMethods << mConnMethods[i]->name;
+    }
+    mConnMethodDialog->setItems(connectionMethods);
+
+    // Set selection
+    int index = findConnectionMethod(mSelection.id);
+    if (index == ItemNotFound) {
+        // Connection Method not found
+        index = 0;
+    }
+    mConnMethodDialog->setSelected(index);
+    
+    // Execute the dialog
+    bool connected = connect(
+        mConnMethodDialog,
+        SIGNAL(finished(bool)),
+        this,
+        SLOT(connMethodDialogResult(bool)));
+    Q_ASSERT(connected);
+    mConnMethodDialog->open();
+
+    OstTraceFunctionExit0(DUP1_CMAPPLSETTINGSUIPRIVATE_RUNCONNECTIONMETHODDIALOG_EXIT);
+}
+
+/*!
+    Destination search function.
+    
+    @param destinationId Destination ID.
+    
+    @return Returns index if found, and ItemNotFound if not. 
+ */
+int CmApplSettingsUiPrivate::findDestination(uint destinationId) const
+{
+    OstTraceFunctionEntry0(CMAPPLSETTINGSUIPRIVATE_FINDDESTINATION_ENTRY);
+    
+    int result = ItemNotFound;
+    
+    for (int i = 0; i < mDestinations.count(); i++) {
+        if (mDestinations[i]->id == destinationId) {
+            result = i;
+            break;
+        }
+    }
+    
+    OstTraceExt2(
+        TRACE_NORMAL,
+        CMAPPLSETTINGSUIPRIVATE_FINDDESTINATION,
+        "CmApplSettingsUiPrivate::findDestination;destinationId=%u;result=%d",
+        destinationId,
+        result);
+    
+    OstTraceFunctionExit0(CMAPPLSETTINGSUIPRIVATE_FINDDESTINATION_EXIT);
+    return result;
+}
+
+/*!
+    Connection Method search function.
+    
+    @param connMethodId Connection Method ID.
+    
+    @return Returns index if found, and ItemNotFound if not. 
+ */
+int CmApplSettingsUiPrivate::findConnectionMethod(uint connMethodId) const
+{
+    OstTraceFunctionEntry0(CMAPPLSETTINGSUIPRIVATE_FINDCONNECTIONMETHOD_ENTRY);
+
+    int result = ItemNotFound;
+    
+    for (int i = 0; i < mConnMethods.count(); i++) {
+        if (mConnMethods[i]->id == connMethodId) {
+            result = i;
+            break;
+        }
+    }
+    
+    OstTraceExt2(
+        TRACE_NORMAL,
+        CMAPPLSETTINGSUIPRIVATE_FINDCONNECTIONMETHOD,
+        "CmApplSettingsUiPrivate::findConnectionMethod;connMethodId=%u;result=%d",
+        connMethodId,
+        result);
+    
+    OstTraceFunctionExit0(CMAPPLSETTINGSUIPRIVATE_FINDCONNECTIONMETHOD_EXIT);
+    return result;
+}
+
+/*!
+   Emits the completion signal "finished(uint)".
+   
+   @param status Finishing status code.
+ */
+void CmApplSettingsUiPrivate::emitFinished(uint status) const
+{
+    OstTrace1(
+        TRACE_NORMAL,
+        CMAPPLSETTINGSUIPRIVATE_EMITFINISHED,
+        "CmApplSettingsUiPrivate::emitFinished;status=%u",
+        status);
+    emit q_ptr->finished(status);
+}
+
+/*!
+    Destination dialog result handling slot.
+    
+    @param success Destination dialog result - TRUE if accepted.
+ */
+void CmApplSettingsUiPrivate::destinationDialogResult(bool success)
+{
+    OstTraceFunctionEntry0(CMAPPLSETTINGSUIPRIVATE_DESTINATIONDIALOGRESULT_ENTRY);
+    
+    if (success) {
+        // Dialog was accepted - user clicked "OK"
+        int index = mDestinationDialog->selected();    
+        if (mListItems.testFlag(CmApplSettingsUi::ShowConnectionMethods)
+            && index == mDestinations.count()) {
+            // Dedicated access point was selected
+            runConnectionMethodDialog();
+        } else {
+            // Destination was selected
+            mSelection.result = CmApplSettingsUi::SelectionTypeDestination;
+            mSelection.id = mDestinations[index]->id;
+            emitFinished(CmApplSettingsUi::ApplSettingsErrorNone);
+        }
+    } else {
+        // Dialog was cancelled - user clicked "Cancel"
+        emitFinished(CmApplSettingsUi::ApplSettingsErrorCancel);
+    }
+    
+    OstTraceFunctionExit0(CMAPPLSETTINGSUIPRIVATE_DESTINATIONDIALOGRESULT_EXIT);
+}
+
+/*!
+    Connection method dialog result handling slot.
+    
+    @param success Connection method dialog result - TRUE if accepted.
+ */
+void CmApplSettingsUiPrivate::connMethodDialogResult(bool success)
+{
+    OstTraceFunctionEntry0(CMAPPLSETTINGSUIPRIVATE_CONNMETHODDIALOGRESULT_ENTRY);
+    
+    if (success) {
+        // Dialog was accepted - user clicked "OK"
+        int index = mConnMethodDialog->selected();
+        mSelection.result = CmApplSettingsUi::SelectionTypeConnectionMethod;
+        mSelection.id = mConnMethods[index]->id;
+        emitFinished(CmApplSettingsUi::ApplSettingsErrorNone);
+    } else {
+        // Dialog was cancelled - user clicked "Cancel"
+        emitFinished(CmApplSettingsUi::ApplSettingsErrorCancel);
+    }
+    
+    OstTraceFunctionExit0(CMAPPLSETTINGSUIPRIVATE_CONNMETHODDIALOGRESULT_EXIT);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/src/cmradiodialog.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,276 @@
+/*
+* Copyright (c) 2010 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:
+* Dialog implementation for the CM Manager Application Settings UI. 
+*
+*/
+
+// System includes
+
+#include <HbDialog>
+#include <HbLabel>
+#include <HbRadioButtonList>
+#include <HbAction>
+#include <HbDocumentLoader>
+
+// User includes
+
+#include "cmradiodialog.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmradiodialogTraces.h"
+#endif
+
+
+/*!
+    \class CmRadioDialog
+    \brief Radio dutton dialog class for Application Settings UI.
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructor.
+    
+    @param parent Parent object.
+*/
+CmRadioDialog::CmRadioDialog(QObject *parent) :
+    QObject(parent),
+    mType(CmRadioDialogTypeDestination),
+    mLoader(),
+    mListItems(),
+    mDialog(),
+    mHeading(0),
+    mList(0),
+    mOkAction(0)
+{    
+    OstTraceFunctionEntry0(CMRADIODIALOG_CMRADIODIALOG_ENTRY);
+    
+    mLoader = QSharedPointer<HbDocumentLoader>(new HbDocumentLoader());
+    loadDocml();
+    
+    OstTraceFunctionExit0(CMRADIODIALOG_CMRADIODIALOG_EXIT);
+}
+
+/*!
+    Destructor.
+*/
+CmRadioDialog::~CmRadioDialog()
+{
+    OstTraceFunctionEntry0(DUP1_CMRADIODIALOG_CMRADIODIALOG_ENTRY);
+    OstTraceFunctionExit0(DUP1_CMRADIODIALOG_CMRADIODIALOG_EXIT);
+}
+
+/*!
+    Heading setter.
+    
+    @param type Dialog type.
+*/
+void CmRadioDialog::setType(CmRadioDialogType type)
+{
+    OstTraceFunctionEntry0(CMRADIODIALOG_SETTYPE_ENTRY);
+    
+    mType = type;
+    
+    OstTraceFunctionExit0(CMRADIODIALOG_SETTYPE_EXIT);
+}
+
+/*!
+    Options setter.
+    
+    @param options Dialog options.
+ */
+void CmRadioDialog::setOptions(const QSet<CmRadioDialogOpt> &options)
+{
+    OstTraceFunctionEntry0(CMRADIODIALOG_SETOPTIONS_ENTRY);
+    
+    mOptions = options;
+
+    OstTraceFunctionExit0(CMRADIODIALOG_SETOPTIONS_EXIT);
+}
+
+/*!
+    Radio button list items setter.
+    
+    @param list List of radio button item strings.
+*/
+void CmRadioDialog::setItems(const QStringList &list)
+{
+    OstTraceFunctionEntry0(CMRADIODIALOG_SETITEMS_ENTRY);
+    
+    // Store the new items
+    mListItems = list;
+    
+    // Append "Dedicated access point"
+    if (mOptions.contains(CmRadioDialogOptDedicatedAP)) {
+        mListItems.append(hbTrId("txt_occ_list_dedicated_access_point"));
+    }
+
+    // Set the items to the radio list
+    mList->setItems(mListItems);
+    
+    OstTraceFunctionExit0(CMRADIODIALOG_SETITEMS_EXIT);
+}
+    
+/*!
+    Setter for current selection.
+    
+    @param index Radio list item current selection setter. Indexing from zero.
+*/
+void CmRadioDialog::setSelected(int index)
+{
+    OstTraceFunctionEntry0(CMRADIODIALOG_SETSELECTED_ENTRY);
+    
+    OstTrace1(
+        TRACE_NORMAL,
+        CMRADIODIALOG_SETSELECTED,
+        "CmRadioDialog::setSelected;index=%d",
+        index);
+    
+    // The index must be valid
+    Q_ASSERT(index < mList->items().count());
+    
+    // Set the current selection
+    mList->setSelected(index);
+    
+    OstTraceFunctionExit0(CMRADIODIALOG_SETSELECTED_EXIT);
+}
+    
+/*!
+    Getter for current selection.
+    
+    @return Current selection index. Indexing from zero.
+*/
+int CmRadioDialog::selected() const
+{
+    OstTraceFunctionEntry0(CMRADIODIALOG_SELECTED_ENTRY);
+    
+    int selection = mList->selected();
+    
+    OstTrace1(
+        TRACE_NORMAL,
+        CMRADIODIALOG_SELECTED,
+        "CmRadioDialog::selected;index=%d",
+        index);    
+    
+    OstTraceFunctionExit0(CMRADIODIALOG_SELECTED_EXIT);
+    return selection;
+}
+    
+/*!
+    Run the dialog asynchronously. When the dialog has finished, the signal
+    finished(bool) is sent.
+*/
+void CmRadioDialog::open()
+{
+    OstTraceFunctionEntry0(CMRADIODIALOG_EXEC_ENTRY);
+    
+    setHeading();
+    mDialog->open(this, SLOT(dialogClosed(HbAction*)));
+    
+    OstTraceFunctionExit0(CMRADIODIALOG_EXEC_EXIT);
+}
+
+/*!
+    Dialog result handling slot.
+    
+    @param action Selected action. 
+ */
+void CmRadioDialog::dialogClosed(HbAction *action)
+{
+    OstTraceFunctionEntry0(CMRADIODIALOG_DIALOGCLOSED_ENTRY);
+    
+    // Extract the selection status
+    bool success;
+    if (action == mOkAction) {
+        success = true;
+    } else {
+        success = false;
+    }
+    emit finished(success);
+    
+    OstTraceExt1(
+        TRACE_NORMAL,
+        CMRADIODIALOG_EXEC_RESULT,
+        "CmRadioDialog::exec;success=%hhu",
+        success);
+
+    OstTraceFunctionExit0(CMRADIODIALOG_DIALOGCLOSED_EXIT);
+}
+
+/*!
+    Dialog heading setter.
+ */
+void CmRadioDialog::setHeading()
+{
+    OstTraceFunctionEntry0(CMRADIODIALOG_SETHEADING_ENTRY);
+    
+    QString heading;
+    
+    // Select correct header based on dialog type
+    switch (mType) {
+    case CmRadioDialogTypeDestination:
+        heading = hbTrId("txt_occ_title_network_connection");
+        break;
+        
+    case CmRadioDialogTypeAccessPoint:
+        heading = hbTrId("txt_occ_title_access_point");
+        break;
+        
+#ifndef QT_NO_DEBUG
+    default:
+        // Unsupported dialog type detected
+        Q_ASSERT(0);
+        break;
+#endif        
+    }
+    
+    mHeading->setPlainText(heading);
+    
+    OstTraceFunctionExit0(CMRADIODIALOG_SETHEADING_EXIT);
+}
+
+/*!
+    Docml loading for the dialog.
+*/
+void CmRadioDialog::loadDocml()
+{
+    OstTraceFunctionEntry0(CMRADIODIALOG_LOADDOCML_ENTRY);
+    bool ok = false;
+
+    // Load the common section
+    mLoader->load(":/docml/cmradiodialog.docml", &ok);
+    Q_ASSERT(ok);
+
+    mDialog = QSharedPointer<HbDialog>(qobject_cast<HbDialog *>(mLoader->findWidget("dialog")));
+    Q_ASSERT(mDialog);
+    
+    mHeading = qobject_cast<HbLabel *>(mLoader->findWidget("heading"));
+    Q_ASSERT(mHeading);
+    
+    mList = qobject_cast<HbRadioButtonList *>(mLoader->findWidget("radioButtonList")); 
+    Q_ASSERT(mList);
+    
+    mOkAction = qobject_cast<HbAction *>(mLoader->findObject("okAction")); 
+    Q_ASSERT(mOkAction);
+    
+    OstTraceFunctionExit0(CMRADIODIALOG_LOADDOCML_EXIT);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/src/cmsettingdata.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,324 @@
+/*
+* Copyright (c) 2010 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: 
+* Data handling encapsulation for CM Application Settings UI.
+*
+*/
+
+// System includes
+#include <HbStringUtil>
+
+// User includes
+#include "cmsettingdata.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmsettingdataTraces.h"
+#endif
+
+
+/*!
+    \class CmSettingData
+    \brief Cm Manager settings data wrapper class for Application Settings UI.
+
+    This class fetches, catches exceptions, filters and orders the
+    destinations and connection methods needed by Application Settings UI.
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructor.
+*/
+CmSettingData::CmSettingData() :
+    mBearers(),
+    mCmManager()
+{    
+    OstTraceFunctionEntry0(CMSETTINGDATA_CMSETTINGDATA_ENTRY);
+    OstTraceFunctionExit0(CMSETTINGDATA_CMSETTINGDATA_EXIT);
+}
+
+/*!
+    Destructor.
+*/
+CmSettingData::~CmSettingData()
+{
+    OstTraceFunctionEntry0(DUP1_CMSETTINGDATA_CMSETTINGDATA_ENTRY);
+    OstTraceFunctionExit0(DUP1_CMSETTINGDATA_CMSETTINGDATA_EXIT);
+}
+
+/*!
+    Bearer filter setter function.
+    
+    @param[in] bearers Connection Method bearer filter.
+*/
+void CmSettingData::setBearerFilter(const QSet<uint> &bearers)
+{
+    OstTraceFunctionEntry0(CMSETTINGDATA_SETBEARERFILTER_ENTRY);
+    
+    mBearers = bearers;
+    
+    OstTraceFunctionExit0(CMSETTINGDATA_SETBEARERFILTER_EXIT);
+}
+
+/*!
+    Fetches destinations suitable for Application Selection UI Dialog.
+    
+    @param[out] destinations Destination list.
+    
+    @return Settings fetching status - true if reading succeeded.
+*/
+bool CmSettingData::fetchDestinations(
+    QList< QSharedPointer<Destination> > &destinations)
+{
+    OstTraceFunctionEntry0(CMSETTINGDATA_FETCHDESTINATIONS_ENTRY);
+    
+    bool success = false;
+
+    // Clear the list just in case
+    destinations.clear();
+    
+    // Catch all CM Manager exceptions
+    try {
+        getCmManager();
+        
+        // Fetch all destinations
+        QList<uint> destArray;
+        mCmManager->allDestinations(destArray);
+        int count = destArray.count();
+        
+        OstTrace1(
+            TRACE_NORMAL,
+            CMSETTINGDATA_FETCHDESTINATIONS_RETRIEVED,
+            "CmSettingData::fetchDestinations retrieved;count=%d",
+            count);
+        
+        // Go through all destinations
+        for (int i=0; i < count; i++) {
+            QSharedPointer<CmDestinationShim> destination;
+            destination = QSharedPointer<CmDestinationShim>(
+                mCmManager->destination(destArray[i]));
+            // Append to list if destination is OK
+            if (validateDestination(destination.data())) {
+                QSharedPointer<Destination> dest(new Destination);
+                dest->id = destination->id();
+                dest->name = destination->name();
+                destinations.append(dest);
+            }
+        }
+        
+        // Destinations fetched successfully 
+        success = true;
+    } catch (const std::exception &ex) {
+        int error = qt_symbian_exception2Error(ex);
+        OstTrace1(
+            TRACE_NORMAL,
+            CMSETTINGDATA_FETCHDESTINATIONS_EXCEPTION,
+            "CmSettingData::fetchDestinations exception;error=%d",
+            error);
+    }
+
+    OstTraceFunctionExit0(CMSETTINGDATA_FETCHDESTINATIONS_EXIT);
+    return success;
+}
+
+/*!
+    Fetching of connection methods suitable for Application Selection UI Dialog.
+    
+    @param[out] connMethods Connection Method list.
+    
+    @return Settings fetching status - true if reading succeeded.
+ */
+bool CmSettingData::fetchConnMethods(
+    QList< QSharedPointer<ConnMethod> > &connMethods)
+{
+    OstTraceFunctionEntry0(CMSETTINGDATA_FETCHCONNMETHODS_ENTRY);
+    
+    bool success = false;
+
+    // Clear the list just in case
+    connMethods.clear();
+    
+    // Catch all CM Manager exceptions
+    try {
+        getCmManager();
+        
+        // Fetch all connection methods
+        QList<uint> connMethodList;
+        mCmManager->connectionMethod(connMethodList, false);
+        int count = connMethodList.count();
+        
+        OstTrace1(
+            TRACE_NORMAL,
+            CMSETTINGDATA_FETCHCONNMETHODS_RETRIEVED,
+            "CmSettingData::fetchConnMethods retrieved;count=%d",
+            count);
+
+        // Go through all connection methods
+        for (int i=0; i < count; i++) {
+            QSharedPointer<CmConnectionMethodShim> connMethod;
+            connMethod = QSharedPointer<CmConnectionMethodShim>(
+                mCmManager->connectionMethod(connMethodList[i]));
+            // Append to list if connection method is OK
+            if (validateConnMethod(connMethod.data())) {
+                QSharedPointer<ConnMethod> connectionMethod(new ConnMethod);
+                connectionMethod->id = connMethod->getIntAttribute(
+                    CMManagerShim::CmId);
+                connectionMethod->name = connMethod->getStringAttribute(
+                    CMManagerShim::CmName);
+                connMethods.append(connectionMethod);
+            }
+        }
+
+        // Destinations fetched successfully 
+        success = true;
+    } catch (const std::exception &ex) {
+        int error = qt_symbian_exception2Error(ex);
+        OstTrace1(
+            TRACE_NORMAL,
+            CMSETTINGDATA_FETCHCONNMETHODS_EXCEPTION,
+            "CmSettingData::fetchDestinations exception;error=%d",
+            error);
+    }
+    
+    // Order the list by connection method name
+    qSort(
+        connMethods.begin(),
+        connMethods.end(),
+        CmSettingData::connMethodLessThan);
+    
+    OstTraceFunctionExit0(CMSETTINGDATA_FETCHCONNMETHODS_EXIT);
+    return success;
+}
+
+/*!
+    Instantiates Cm Manager Shim for this setting data object.
+    This is a member function since this can throw an exception and it
+    needs to be catched.
+ */
+void CmSettingData::getCmManager()
+{
+    if (!mCmManager) {
+        mCmManager = QSharedPointer<CmManagerShim>(new CmManagerShim());    
+    }
+}
+
+/*!
+    Validates the given destination.
+    This function checks that the following criterias match:
+    -The destination is not empty (i.e. it has least one Connection Method).
+     This covers also the bearer filter, so there must be at least one
+     Connection Method after the bearer filtering.
+    -The destination is not hidden.
+    
+    @param[in] destination Destination to validate.
+
+    @return Validation result - true if valid.
+ */
+bool CmSettingData::validateDestination(CmDestinationShim *destination) const
+{
+    OstTraceFunctionEntry0(CMSETTINGDATA_VALIDATEDESTINATION_ENTRY);
+    
+    bool valid = true;
+
+    // Destination must not be hidden or empty
+    if (destination->isHidden() ||
+        destination->connectionMethodCount() == 0) {
+        valid = false;
+    } else if (!mBearers.isEmpty()) {
+        // If filter is empty, all bearers are supported
+
+        // Check that there is at least one Connection Method that
+        // matches after bearer filtering
+        valid = false;
+        for (int i=0; i < destination->connectionMethodCount(); i++) {
+            QSharedPointer<CmConnectionMethodShim> connMethod;
+            connMethod = QSharedPointer<CmConnectionMethodShim>(
+                destination->connectionMethod(i));
+            int bearer = connMethod->getIntAttribute(CMManagerShim::CmBearerType);
+            if (mBearers.contains(bearer)) {
+                // Matching bearer found from this Connection Method
+                valid = true;
+                break;
+            }
+        }
+    }
+
+    OstTraceExt2(
+        TRACE_NORMAL,
+        CMSETTINGDATA_VALIDATEDESTINATION_RESULT,
+        "CmSettingData::validateDestination result;destination=%d;valid=%hhd",
+        (TInt32)destination->id(),
+        valid);
+
+    OstTraceFunctionExit0(CMSETTINGDATA_VALIDATEDESTINATION_EXIT);
+    return valid;
+}
+
+/*!
+    Validates the given connection method.
+    This function checks that the following criterias match:
+    -The bearer type of the connection method matches the set filter.
+    -The connection method is not hidden.
+    
+    @param[in] connMethod Connection method to validate.
+
+    @return Validation result - true if valid.
+ */
+bool CmSettingData::validateConnMethod(CmConnectionMethodShim *connMethod) const
+{
+    OstTraceFunctionEntry0(CMSETTINGDATA_VALIDATECONNMETHOD_ENTRY);
+
+    bool valid = true;
+
+    int bearer = connMethod->getIntAttribute(CMManagerShim::CmBearerType);
+    bool hidden = connMethod->getBoolAttribute(CMManagerShim::CmHidden);
+    if (hidden || (!mBearers.isEmpty() && !mBearers.contains(bearer))) {
+        valid = false;
+    }
+    
+    OstTraceExt4(
+        TRACE_NORMAL,
+        CMSETTINGDATA_VALIDATECONNMETHOD_RESULT,
+        "CmSettingData::validateConnMethod result;id=%d;valid=%hhd;hidden=%hhd;bearer=%d",
+        connMethod->getIntAttribute(CMManagerShim::CmId),
+        valid,
+        hidden,
+        bearer);
+
+    OstTraceFunctionEntry0(CMSETTINGDATA_VALIDATECONNMETHOD_EXIT);
+    return valid;
+}
+
+/*!
+    Compares two Connection Methods.
+    
+    @param[in] connMethod1 Connection method to compare with.
+    @param[in] connMethod2 Connection method to compare.
+    
+    @return Returns true if the first connection method is "less than"
+    the second one.
+ */
+bool CmSettingData::connMethodLessThan(
+    const QSharedPointer<ConnMethod> connMethod1,
+    const QSharedPointer<ConnMethod> connMethod2)
+{
+    int result = HbStringUtil::compareC(connMethod1->name, connMethod2->name);
+    return (result < 0) ? true : false;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/traces/OstTraceDefinitions.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2010 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:
+ */
+
+#ifndef OSTTRACEDEFINITIONS_H
+#define OSTTRACEDEFINITIONS_H
+#include <opensystemtrace.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/tsrc/tsrc.pro	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2010 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:
+#
+
+TEMPLATE = subdirs
+
+SUBDIRS += \
+    tst_applsettingsui
+
+CONFIG += ordered
+
+symbian: {
+    SYMBIAN_PLATFORMS = WINSCW ARMV5
+} 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/tsrc/tst_applsettingsui/inc/applsettester.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2010 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: 
+* Dialog implementaton for test application 
+* for testing CM Manager Application Settings Ui.
+*/
+
+#ifndef APPLSETTESTER_H
+#define APPLSETTESTER_H
+
+#include <QObject>
+#include <HbMainWindow>
+
+#include "cmapplsettingsui.h"
+
+class HbDocumentLoader;
+class HbCheckBox;
+class HbAction;
+class HbLabel;
+class HbLineEdit;
+class HbComboBox;
+
+class ApplSettTester : public HbMainWindow
+{
+    Q_OBJECT
+    
+public:
+    ApplSettTester(QWidget *parent = 0);
+    ~ApplSettTester();
+        
+private slots:
+    void runTest();
+    void docmlLoad(Qt::Orientation orientation);
+    void orientationChange(Qt::Orientation);
+    void showResult(uint retval);
+
+private:
+    
+    HbDocumentLoader *docLoader;
+    HbView *view;              
+    HbAction *action;
+    HbCheckBox *checkboxDest;
+    HbCheckBox *checkboxCM;
+    HbCheckBox *checkboxWlan;
+    HbCheckBox *checkboxGprs;
+    HbLabel *labelResult;
+    HbLineEdit *selectionId;
+    HbComboBox *selectionMode;
+    
+    CmApplSettingsUi *applSett;
+    
+    CmApplSettingsUi::SettingSelection mSelection;
+};
+
+#endif // APPLSETTESTER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/tsrc/tst_applsettingsui/res/tst_applsettingsui.qrc	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,5 @@
+<RCC>
+    <qresource prefix="/docml" >
+        <file>tst_applsettingsui.docml</file>
+    </qresource>
+</RCC>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/tsrc/tst_applsettingsui/rom/tst_applsettingsui.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2010 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:
+ * 
+ */
+
+#ifndef CMAPPLSETTINGSUI_TEST_IBY
+#define CMAPPLSETTINGSUI_TEST_IBY
+
+#include <bldvariant.hrh>
+
+#define UPGRADABLE_APP_REG_RSC(NAME) data=DATAZ_\PRIVATE\10003A3F\IMPORT\APPS\ ## NAME ## _reg.rsc        Private\10003a3f\import\apps\ ## NAME ## _reg.rsc
+
+S60_APP_EXE(tst_applsettingsui)
+S60_APP_RESOURCE(tst_applsettingsui)
+UPGRADABLE_APP_REG_RSC(tst_applsettingsui)
+
+data=DATAZ_\system\install\tst_applsettingsui_stub.sis  system\install\tst_applsettingsui_stub.sis
+
+#endif // CMAPPLSETTINGSUI_TEST_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/tsrc/tst_applsettingsui/rom/tst_applsettingsui_stub.pkg	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,32 @@
+;
+; Copyright (c) 2010 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: This is the stub package file for tst_applsettingsui SIS creation
+;
+
+; Languages
+&EN
+
+; Header
+#{"tst_applsettingsui"},(0x2002E69A),1,0,0,TYPE=SA
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Stub Files
+""-"z:\sys\bin\tst_applsettingsui.exe"
+""-"z:\private\10003a3f\import\apps\tst_applsettingsui_reg.rsc"
+""-"z:\resource\apps\tst_applsettingsui.r*"
Binary file cmmanager/cmapplsettingsui/tsrc/tst_applsettingsui/rom/tst_applsettingsui_stub.sis has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/tsrc/tst_applsettingsui/src/applsettester.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,167 @@
+/*
+* Copyright (c) 2010 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:
+* Dialog implementaton for test application 
+* for testing CM Manager Application Settings Ui.
+*/
+
+#include <QGraphicsWidget>
+#include <QString>
+
+#include <HbDialog>
+#include <HbApplication>
+#include <HbMainWindow>
+#include <HbView>
+#include <HbDocumentLoader>
+#include <HbInstance>
+#include <HbAction>
+#include <HbCheckBox>
+#include <HbLabel>
+#include <HbLineEdit>
+#include <HbComboBox>
+
+
+#include "cmapplsettingsui.h"
+#include "cmmanagerdefines_shim.h"
+
+#include "applsettester.h"
+
+#define TEST_DOCML ":/docml/tst_applsettingsui.docml"
+
+ApplSettTester::ApplSettTester(QWidget *parent) : HbMainWindow(parent)
+{
+    applSett = new CmApplSettingsUi(this);
+
+    // Clear initial selection
+    mSelection.result = CmApplSettingsUi::SelectionTypeDestination;
+    mSelection.id = 0;
+    
+    bool status = connect(
+        this,
+        SIGNAL(orientationChanged(Qt::Orientation)),
+        this,
+        SLOT(orientationChange(Qt::Orientation)));
+    Q_ASSERT(status);
+    
+    docLoader = new HbDocumentLoader();
+    docmlLoad(this->orientation()); 
+}
+
+ApplSettTester::~ApplSettTester()
+{
+    delete docLoader;
+}
+
+void ApplSettTester::docmlLoad(Qt::Orientation orientation)
+{
+    bool ok = true;
+    
+    docLoader->reset();
+    // First load the common section
+    docLoader->load(TEST_DOCML, &ok);
+
+    if (ok) {    
+        // Then load the orientation specific section
+        orientationChange(orientation);
+        
+        QGraphicsWidget *widget = docLoader->findWidget(QString("testApplView"));
+        if (widget) {
+            view = qobject_cast<HbView*>(widget);
+            this->addView(view);
+            this->setCurrentView(view);
+
+            checkboxDest = qobject_cast<HbCheckBox*>(docLoader->findWidget("checkbox_dest"));
+            Q_ASSERT(checkboxDest);
+            checkboxCM = qobject_cast<HbCheckBox*>(docLoader->findWidget("checkbox_cm"));
+            Q_ASSERT(checkboxCM);
+            
+            checkboxWlan = qobject_cast<HbCheckBox*>(docLoader->findWidget("checkbox_wlan"));
+            Q_ASSERT(checkboxWlan);
+            checkboxGprs = qobject_cast<HbCheckBox*>(docLoader->findWidget("checkbox_gprs"));
+            Q_ASSERT(checkboxGprs);
+           
+            selectionMode = qobject_cast<HbComboBox*>(docLoader->findWidget("mode"));
+            Q_ASSERT(selectionMode);
+            selectionId = qobject_cast<HbLineEdit*>(docLoader->findWidget("id"));
+            Q_ASSERT(selectionId);
+           
+            labelResult = qobject_cast<HbLabel*>(docLoader->findWidget("result"));
+            Q_ASSERT(labelResult);
+            
+            action = qobject_cast<HbAction *>(docLoader->findObject("testAction"));
+            Q_ASSERT(action);
+            
+            bool status = connect(action, SIGNAL(triggered()), this, SLOT(runTest()));
+            Q_ASSERT(status);
+        }
+    }
+}
+
+void ApplSettTester::orientationChange(Qt::Orientation orientation)
+{
+    bool ok = true;
+    if (orientation == Qt::Vertical) {
+        // reading "portrait" section
+        docLoader->load(TEST_DOCML, "portrait", &ok);
+    } else {
+        // reading "landscape" section
+        docLoader->load(TEST_DOCML, "landscape", &ok);
+    }   
+}
+
+void ApplSettTester::runTest()
+{
+    QFlags<CmApplSettingsUi::SelectionDialogItems> listItems;
+    QSet<CmApplSettingsUi::BearerTypeFilter> filter;
+    
+    // Dialog type selection
+    if (checkboxDest->checkState()) {
+        listItems |= CmApplSettingsUi::ShowDestinations;
+    }
+    if (checkboxCM->checkState()) {
+        listItems |= CmApplSettingsUi::ShowConnectionMethods;
+    }
+
+    // Bearer filtering
+    if (checkboxWlan->checkState()) {
+        filter |= CMManagerShim::BearerTypeWlan;
+    }
+    if (checkboxGprs->checkState()) {
+        filter |= CMManagerShim::BearerTypePacketData;
+    }
+    
+    // Setting selection value
+    mSelection.result = 
+        (CmApplSettingsUi::SelectionType)selectionMode->currentIndex();
+    mSelection.id = selectionId->text().toUInt();;
+
+    applSett->setOptions(listItems, filter);
+    applSett->setSelection(mSelection);
+    
+    // Connect finished(uint) signal and handle result via it
+    connect(applSett, SIGNAL(finished(uint)), this, SLOT(showResult(uint)));
+    
+    // Start CmApplSettingsUi
+    applSett->open();
+}
+
+void ApplSettTester::showResult(uint retval)
+{
+    if (retval == CmApplSettingsUi::ApplSettingsErrorNone) {
+        mSelection = applSett->selection();
+        selectionMode->setCurrentIndex(mSelection.result);    
+        selectionId->setText(QString::number(mSelection.id));
+    }
+    labelResult->setNumber(int(retval));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/tsrc/tst_applsettingsui/src/tst_applsettingsui.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2010 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: Simple test/example client for Qt Application Settings UI interface.
+*
+*/
+#include <HbApplication>
+
+#include "cmapplsettingsui.h"
+#include "applsettester.h"
+
+int main(int argc, char *argv[])
+{
+    HbApplication app(argc, argv); 
+    
+    ApplSettTester tester;
+    tester.show();
+     
+    return app.exec();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/tsrc/tst_applsettingsui/tst_applsettingsui.pro	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,47 @@
+#
+# Copyright (c) 2010 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:
+#
+
+TEMPLATE = app
+TARGET = tst_applsettingsui
+TARGET.CAPABILITY = ALL -TCB
+DEPENDPATH += .
+INCLUDEPATH += \
+    . \
+    inc \
+    ../../inc \
+    ../../../../inc
+load(hb.prf)
+RESOURCES = res/tst_applsettingsui.qrc
+MOC_DIR = moc
+
+# Input
+HEADERS += \
+    inc/applsettester.h
+SOURCES += \
+    src/applsettester.cpp \
+    src/tst_applsettingsui.cpp
+
+symbian*: {
+    CONFIG -= symbian_i18n
+    LIBS += -lcmapplsettingsui
+    TARGET.UID3 = 0x2002E69A
+    SYMBIAN_PLATFORMS = WINSCW ARMV5
+}
+
+symbian: {
+    BLD_INF_RULES.prj_exports += "rom/tst_applsettingsui.iby CORE_MW_LAYER_IBY_EXPORT_PATH(tst_applsettingsui.iby)"
+    BLD_INF_RULES.prj_exports += "rom/tst_applsettingsui_stub.sis /epoc32/data/z/system/install/tst_applsettingsui_stub.sis"
+} 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/tsrc/ut/hbautotest.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,831 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include "hbautotest.h"
+#include <hbmainwindow.h>
+#include <hbwidget.h>
+
+
+const qreal STEP = 4; //How many pixels to drag before sending an event
+
+//Init static members
+bool HbAutoTest::pointerPressed = false;
+QPointF HbAutoTest::pressPoint = QPointF();
+
+void HbAutoTest::mouseMove (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos, int delay)
+{
+    if (delay!=-1) {
+        QTest::qWait(delay);
+    }
+    QPointF targetPoint=QPointF();
+    if (pos==QPointF()) {
+        targetPoint = middlePointOfWidget(widget);
+    } else {
+        targetPoint = widget->mapToScene(pos);
+    }
+    if (pointerPressed) {
+        //Now we should drag an item
+        drag(window, targetPoint);
+            HbAutoTestMouseEvent me (
+            QEvent::MouseMove, 
+            targetPoint.toPoint(), 
+            window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+            Qt::NoButton, 
+            Qt::NoButton, 
+            Qt::NoModifier);
+            QSpontaneKeyEvent::setSpontaneous(&me);
+            qApp->notify((window->viewport()), &me);
+            QCoreApplication::sendPostedEvents();
+            QTest::qWait(1);
+    } else {
+            HbAutoTestMouseEvent me (
+            QEvent::MouseMove, 
+            targetPoint.toPoint(), 
+            window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+            Qt::NoButton, 
+            Qt::NoButton, 
+            Qt::NoModifier);
+            QSpontaneKeyEvent::setSpontaneous(&me);
+            qApp->notify((window->viewport()), &me);
+            QCoreApplication::sendPostedEvents();
+            QTest::qWait(1);
+
+    }
+    QTest::qWait(1);
+    QTest::qWait(1);
+}
+ 
+void HbAutoTest::mousePress (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos, int delay)
+{
+    if (delay!=-1) {
+        QTest::qWait(delay);
+    }
+    pointerPressed=true;
+    QPointF targetPoint=QPointF();
+    if (pos==QPointF()) {
+        targetPoint = middlePointOfWidget(widget);
+    } else {
+        targetPoint = widget->mapToScene(pos);
+    }
+    QCursor::setPos(window->mapToGlobal(targetPoint.toPoint()));
+
+    pressPoint=targetPoint;
+    
+    HbAutoTestMouseEvent me (
+    QEvent::MouseButtonPress, 
+    targetPoint.toPoint(), 
+    window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+    Qt::LeftButton, 
+    Qt::LeftButton, 
+    Qt::NoModifier);
+
+    QSpontaneKeyEvent::setSpontaneous(&me);
+    qApp->notify((window->viewport()), &me);
+    QCoreApplication::sendPostedEvents();
+    QCoreApplication::sendPostedEvents();
+    QTest::qWait(1);
+}
+
+void HbAutoTest::mouseRelease (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos, int delay)
+{
+    if (delay!=-1) {
+        QTest::qWait(delay);
+    }
+    pointerPressed=false;
+    QPointF targetPoint=QPointF();
+    if (pos==QPointF()) {
+        targetPoint = middlePointOfWidget(widget);
+    } else {
+        targetPoint = widget->mapToScene(pos);
+    }
+    QCursor::setPos(window->mapToGlobal(targetPoint.toPoint()));
+    pressPoint=QPointF();
+    HbAutoTestMouseEvent me (
+    QEvent::MouseButtonRelease, 
+    targetPoint.toPoint(), 
+    window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+    Qt::LeftButton, 
+    Qt::NoButton, 
+    Qt::NoModifier);
+
+    QSpontaneKeyEvent::setSpontaneous(&me);
+    qApp->notify((window->viewport()), &me);
+    QCoreApplication::sendPostedEvents();
+
+    QTest::qWait(1);
+    QTest::qWait(1);
+}
+
+void HbAutoTest::mouseClick (HbAutoTestMainWindow *window, const HbWidget *widget, QPointF pos, int delay)
+{
+    if (delay!=-1) {
+        QTest::qWait(delay);
+    }
+    QPointF targetPoint=QPointF();
+    if (pos==QPointF()) {
+        targetPoint = middlePointOfWidget(widget);
+    } else {
+        targetPoint = widget->mapToScene(pos);
+    }
+    
+    QCursor::setPos(window->mapToGlobal(targetPoint.toPoint()));
+    
+    HbAutoTestMouseEvent me (
+    QEvent::MouseButtonPress, 
+    targetPoint.toPoint(), 
+    window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+    Qt::LeftButton, 
+    Qt::LeftButton, 
+    Qt::NoModifier);
+    QSpontaneKeyEvent::setSpontaneous(&me);
+    qApp->notify((window->viewport()), &me);
+    QCoreApplication::sendPostedEvents();
+    QTest::qWait(1);
+
+    if (delay!=-1) {
+        QTest::qWait(delay);
+    }
+    HbAutoTestMouseEvent me2 (
+    QEvent::MouseButtonRelease, 
+    targetPoint.toPoint(), 
+    window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+    Qt::LeftButton, 
+    Qt::NoButton,
+    Qt::NoModifier);
+
+    QSpontaneKeyEvent::setSpontaneous(&me2);
+    qApp->notify((window->viewport()), &me2);
+    QCoreApplication::sendPostedEvents();
+
+    QTest::qWait(1);
+    QTest::qWait(1);
+}   
+
+QPointF HbAutoTest::middlePointOfWidget( const HbWidget* widget)
+{
+    QRectF widgetRect = widget->rect();
+    QRectF widgetSceneRect = widget->mapRectToScene(widgetRect);
+    qreal middleX = ((widgetSceneRect.right() - widgetSceneRect.left())/2)+widgetSceneRect.left();
+    qreal middleY = ((widgetSceneRect.bottom() - widgetSceneRect.top())/2)+widgetSceneRect.top();  
+    return QPointF(middleX,middleY);
+}
+
+
+
+void HbAutoTest::drag(HbAutoTestMainWindow *window, QPointF targetPoint)
+{
+    qreal tempX = targetPoint.x() - pressPoint.x();
+    qreal tempY = targetPoint.y() - pressPoint.y();
+    qreal totalTrip = sqrt ((tempX * tempX) + (tempY * tempY));
+    
+    int numberOfSteps = qRound(totalTrip / STEP);
+    HbAutoTestMouseEvent me (
+        QEvent::MouseMove, 
+        targetPoint.toPoint(), 
+        window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+        Qt::NoButton , 
+        Qt::LeftButton, 
+        Qt::NoModifier);
+
+    QPointF nextPanPoint=pressPoint;
+    for (int i=1; i<numberOfSteps; i++) { //On purpose not =<
+        
+        nextPanPoint.setY (pressPoint.y()+((i / (qreal)numberOfSteps) * tempY));
+        nextPanPoint.setX (pressPoint.x()+((i / (qreal)numberOfSteps) * tempX));
+        
+        QCursor::setPos(window->mapToGlobal(nextPanPoint.toPoint()));
+
+        me =  HbAutoTestMouseEvent (QEvent::MouseMove,
+                            nextPanPoint.toPoint(), 
+                            window->viewport()->mapToGlobal(nextPanPoint.toPoint()), 
+                            Qt::NoButton, 
+                            Qt::LeftButton, 
+                            Qt::NoModifier);   
+
+        QSpontaneKeyEvent::setSpontaneous(&me);
+        qApp->notify((window->viewport()), &me);
+        QCoreApplication::sendPostedEvents();
+    }
+
+    QCursor::setPos(window->mapToGlobal(targetPoint.toPoint()));
+
+    //One more (or the only one) step to the target
+    me =  HbAutoTestMouseEvent (QEvent::MouseMove,
+                            targetPoint.toPoint(), 
+                            window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+                            Qt::NoButton, 
+                            Qt::LeftButton, 
+                            Qt::NoModifier);   
+    QSpontaneKeyEvent::setSpontaneous(&me);
+    qApp->notify((window->viewport()), &me);
+    QCoreApplication::sendPostedEvents();
+}
+
+
+void HbAutoTest::simulateEvent(QWidget *widget, bool press, int code,
+                              Qt::KeyboardModifiers modifier, QString text, bool repeat, int delay)
+    {
+        //Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        /*extern int Q_TESTLIB_EXPORT defaultKeyDelay();
+
+        if (delay == -1 || delay < defaultKeyDelay())
+            delay = defaultKeyDelay();
+        if(delay > 0)
+            QTest::qWait(delay);*/
+        Q_UNUSED(delay);
+        QTest::qWait(10); //TODO: Remove this and reveal above out-commented code
+
+        HbAutoTestKeyEvent a(press ? QEvent::KeyPress : QEvent::KeyRelease, code, modifier, text, repeat);
+        QSpontaneKeyEvent::setSpontaneous(&a);
+        if (!qApp->notify(widget, &a))
+            QTest::qWarn("Keyboard event not accepted by receiving widget");
+    }
+
+void HbAutoTest::sendKeyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key code,
+                             QString text, Qt::KeyboardModifiers modifier, int delay)
+    {
+        QTEST_ASSERT(qApp);
+
+        if (!widget)
+            widget = QWidget::keyboardGrabber();
+        if (!widget) {
+            if (QWidget *apw = QApplication::activePopupWidget())
+                widget = apw->focusWidget() ? apw->focusWidget() : apw;
+            else
+                widget = QApplication::focusWidget();
+        }
+        if (!widget)
+            widget = QApplication::activeWindow();
+
+        QTEST_ASSERT(widget);
+
+        if (action == QTest::Click) {
+            QPointer<QWidget> ptr(widget);
+            sendKeyEvent(QTest::Press, widget, code, text, modifier, delay);
+            if (!ptr) {
+                // if we send key-events to embedded widgets, they might be destroyed
+                // when the user presses Return
+                return;
+            }
+            sendKeyEvent(QTest::Release, widget, code, text, modifier, delay);
+            return;
+        }
+
+        bool repeat = false;
+
+        if (action == QTest::Press) {
+            if (modifier & Qt::ShiftModifier)
+                simulateEvent(widget, true, Qt::Key_Shift, 0, QString(), false, delay);
+
+            if (modifier & Qt::ControlModifier)
+                simulateEvent(widget, true, Qt::Key_Control, modifier & Qt::ShiftModifier, QString(), false, delay);
+
+            if (modifier & Qt::AltModifier)
+                simulateEvent(widget, true, Qt::Key_Alt,
+                              modifier & (Qt::ShiftModifier | Qt::ControlModifier), QString(), false, delay);
+            if (modifier & Qt::MetaModifier)
+                simulateEvent(widget, true, Qt::Key_Meta, modifier & (Qt::ShiftModifier
+                                                                      | Qt::ControlModifier | Qt::AltModifier), QString(), false, delay);
+            simulateEvent(widget, true, code, modifier, text, repeat, delay);
+        } else if (action == QTest::Release) {
+            simulateEvent(widget, false, code, modifier, text, repeat, delay);
+
+            if (modifier & Qt::MetaModifier)
+                simulateEvent(widget, false, Qt::Key_Meta, modifier, QString(), false, delay);
+            if (modifier & Qt::AltModifier)
+                simulateEvent(widget, false, Qt::Key_Alt, modifier &
+                              (Qt::ShiftModifier | Qt::ControlModifier | Qt::AltModifier), QString(), false, delay);
+
+            if (modifier & Qt::ControlModifier)
+                simulateEvent(widget, false, Qt::Key_Control,
+                              modifier & (Qt::ShiftModifier | Qt::ControlModifier), QString(), false, delay);
+
+            if (modifier & Qt::ShiftModifier)
+                simulateEvent(widget, false, Qt::Key_Shift, modifier & Qt::ShiftModifier, QString(), false, delay);
+        }
+    }
+
+void HbAutoTest::sendKeyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key code,
+                             char ascii, Qt::KeyboardModifiers modifier, int delay)
+    {
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        QString text;
+        if (ascii)
+            text = QString(QChar::fromLatin1(ascii));
+        sendKeyEvent(action, widget, code, text, modifier, delay);
+    }
+
+void HbAutoTest::keyEvent(QTest::KeyAction action, QWidget *widget, char ascii,
+                                Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        sendKeyEvent(action, widget, asciiToKey(ascii), ascii, modifier, delay); 
+     }
+     
+void HbAutoTest::keyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key key,
+                                Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        sendKeyEvent(action, widget, key, keyToAscii(key), modifier, delay); 
+     }
+
+void HbAutoTest::keyClicks(QWidget *widget, const QString &sequence,
+                                 Qt::KeyboardModifiers modifier, int delay)
+    {
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        for (int i=0; i < sequence.length(); i++)
+            keyEvent(QTest::Click, widget, sequence.at(i).toLatin1(), modifier, delay);
+    }
+
+void HbAutoTest::keyPress(QWidget *widget, char key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Press, widget, key, modifier, delay); 
+    }
+    
+void HbAutoTest::keyRelease(QWidget *widget, char key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Release, widget, key, modifier, delay); 
+    }
+    
+void HbAutoTest::keyClick(QWidget *widget, char key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Click, widget, key, modifier, delay); 
+    }
+    
+void HbAutoTest::keyPress(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Press, widget, key, modifier, delay); 
+    }
+    
+void HbAutoTest::keyRelease(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Release, widget, key, modifier, delay); }
+    
+void HbAutoTest::keyClick(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Click, widget, key, modifier, delay); 
+    }
+
+Qt::Key HbAutoTest::asciiToKey(char ascii)
+{
+    switch ((unsigned char)ascii) {
+    case 0x08: return Qt::Key_Backspace;
+    case 0x09: return Qt::Key_Tab;
+    case 0x0b: return Qt::Key_Backtab;
+    case 0x0d: return Qt::Key_Return;
+    case 0x1b: return Qt::Key_Escape;
+    case 0x20: return Qt::Key_Space;
+    case 0x21: return Qt::Key_Exclam;
+    case 0x22: return Qt::Key_QuoteDbl;
+    case 0x23: return Qt::Key_NumberSign;
+    case 0x24: return Qt::Key_Dollar;
+    case 0x25: return Qt::Key_Percent;
+    case 0x26: return Qt::Key_Ampersand;
+    case 0x27: return Qt::Key_Apostrophe;
+    case 0x28: return Qt::Key_ParenLeft;
+    case 0x29: return Qt::Key_ParenRight;
+    case 0x2a: return Qt::Key_Asterisk;
+    case 0x2b: return Qt::Key_Plus;
+    case 0x2c: return Qt::Key_Comma;
+    case 0x2d: return Qt::Key_Minus;
+    case 0x2e: return Qt::Key_Period;
+    case 0x2f: return Qt::Key_Slash;
+    case 0x30: return Qt::Key_0;
+    case 0x31: return Qt::Key_1;
+    case 0x32: return Qt::Key_2;
+    case 0x33: return Qt::Key_3;
+    case 0x34: return Qt::Key_4;
+    case 0x35: return Qt::Key_5;
+    case 0x36: return Qt::Key_6;
+    case 0x37: return Qt::Key_7;
+    case 0x38: return Qt::Key_8;
+    case 0x39: return Qt::Key_9;
+    case 0x3a: return Qt::Key_Colon;
+    case 0x3b: return Qt::Key_Semicolon;
+    case 0x3c: return Qt::Key_Less;
+    case 0x3d: return Qt::Key_Equal;
+    case 0x3e: return Qt::Key_Greater;
+    case 0x3f: return Qt::Key_Question;
+    case 0x40: return Qt::Key_At;
+    case 0x41: return Qt::Key_A;
+    case 0x42: return Qt::Key_B;
+    case 0x43: return Qt::Key_C;
+    case 0x44: return Qt::Key_D;
+    case 0x45: return Qt::Key_E;
+    case 0x46: return Qt::Key_F;
+    case 0x47: return Qt::Key_G;
+    case 0x48: return Qt::Key_H;
+    case 0x49: return Qt::Key_I;
+    case 0x4a: return Qt::Key_J;
+    case 0x4b: return Qt::Key_K;
+    case 0x4c: return Qt::Key_L;
+    case 0x4d: return Qt::Key_M;
+    case 0x4e: return Qt::Key_N;
+    case 0x4f: return Qt::Key_O;
+    case 0x50: return Qt::Key_P;
+    case 0x51: return Qt::Key_Q;
+    case 0x52: return Qt::Key_R;
+    case 0x53: return Qt::Key_S;
+    case 0x54: return Qt::Key_T;
+    case 0x55: return Qt::Key_U;
+    case 0x56: return Qt::Key_V;
+    case 0x57: return Qt::Key_W;
+    case 0x58: return Qt::Key_X;
+    case 0x59: return Qt::Key_Y;
+    case 0x5a: return Qt::Key_Z;
+    case 0x5b: return Qt::Key_BracketLeft;
+    case 0x5c: return Qt::Key_Backslash;
+    case 0x5d: return Qt::Key_BracketRight;
+    case 0x5e: return Qt::Key_AsciiCircum;
+    case 0x5f: return Qt::Key_Underscore;
+    case 0x60: return Qt::Key_QuoteLeft;
+    case 0x61: return Qt::Key_A;
+    case 0x62: return Qt::Key_B;
+    case 0x63: return Qt::Key_C;
+    case 0x64: return Qt::Key_D;
+    case 0x65: return Qt::Key_E;
+    case 0x66: return Qt::Key_F;
+    case 0x67: return Qt::Key_G;
+    case 0x68: return Qt::Key_H;
+    case 0x69: return Qt::Key_I;
+    case 0x6a: return Qt::Key_J;
+    case 0x6b: return Qt::Key_K;
+    case 0x6c: return Qt::Key_L;
+    case 0x6d: return Qt::Key_M;
+    case 0x6e: return Qt::Key_N;
+    case 0x6f: return Qt::Key_O;
+    case 0x70: return Qt::Key_P;
+    case 0x71: return Qt::Key_Q;
+    case 0x72: return Qt::Key_R;
+    case 0x73: return Qt::Key_S;
+    case 0x74: return Qt::Key_T;
+    case 0x75: return Qt::Key_U;
+    case 0x76: return Qt::Key_V;
+    case 0x77: return Qt::Key_W;
+    case 0x78: return Qt::Key_X;
+    case 0x79: return Qt::Key_Y;
+    case 0x7a: return Qt::Key_Z;
+    case 0x7b: return Qt::Key_BraceLeft;
+    case 0x7c: return Qt::Key_Bar;
+    case 0x7d: return Qt::Key_BraceRight;
+    case 0x7e: return Qt::Key_AsciiTilde;
+
+    // Latin 1 codes adapted from X: keysymdef.h,v 1.21 94/08/28 16:17:06
+    case 0xa0: return Qt::Key_nobreakspace;
+    case 0xa1: return Qt::Key_exclamdown;
+    case 0xa2: return Qt::Key_cent;
+    case 0xa3: return Qt::Key_sterling;
+    case 0xa4: return Qt::Key_currency;
+    case 0xa5: return Qt::Key_yen;
+    case 0xa6: return Qt::Key_brokenbar;
+    case 0xa7: return Qt::Key_section;
+    case 0xa8: return Qt::Key_diaeresis;
+    case 0xa9: return Qt::Key_copyright;
+    case 0xaa: return Qt::Key_ordfeminine;
+    case 0xab: return Qt::Key_guillemotleft;
+    case 0xac: return Qt::Key_notsign;
+    case 0xad: return Qt::Key_hyphen;
+    case 0xae: return Qt::Key_registered;
+    case 0xaf: return Qt::Key_macron;
+    case 0xb0: return Qt::Key_degree;
+    case 0xb1: return Qt::Key_plusminus;
+    case 0xb2: return Qt::Key_twosuperior;
+    case 0xb3: return Qt::Key_threesuperior;
+    case 0xb4: return Qt::Key_acute;
+    case 0xb5: return Qt::Key_mu;
+    case 0xb6: return Qt::Key_paragraph;
+    case 0xb7: return Qt::Key_periodcentered;
+    case 0xb8: return Qt::Key_cedilla;
+    case 0xb9: return Qt::Key_onesuperior;
+    case 0xba: return Qt::Key_masculine;
+    case 0xbb: return Qt::Key_guillemotright;
+    case 0xbc: return Qt::Key_onequarter;
+    case 0xbd: return Qt::Key_onehalf;
+    case 0xbe: return Qt::Key_threequarters;
+    case 0xbf: return Qt::Key_questiondown;
+    case 0xc0: return Qt::Key_Agrave;
+    case 0xc1: return Qt::Key_Aacute;
+    case 0xc2: return Qt::Key_Acircumflex;
+    case 0xc3: return Qt::Key_Atilde;
+    case 0xc4: return Qt::Key_Adiaeresis;
+    case 0xc5: return Qt::Key_Aring;
+    case 0xc6: return Qt::Key_AE;
+    case 0xc7: return Qt::Key_Ccedilla;
+    case 0xc8: return Qt::Key_Egrave;
+    case 0xc9: return Qt::Key_Eacute;
+    case 0xca: return Qt::Key_Ecircumflex;
+    case 0xcb: return Qt::Key_Ediaeresis;
+    case 0xcc: return Qt::Key_Igrave;
+    case 0xcd: return Qt::Key_Iacute;
+    case 0xce: return Qt::Key_Icircumflex;
+    case 0xcf: return Qt::Key_Idiaeresis;
+    case 0xd0: return Qt::Key_ETH;
+    case 0xd1: return Qt::Key_Ntilde;
+    case 0xd2: return Qt::Key_Ograve;
+    case 0xd3: return Qt::Key_Oacute;
+    case 0xd4: return Qt::Key_Ocircumflex;
+    case 0xd5: return Qt::Key_Otilde;
+    case 0xd6: return Qt::Key_Odiaeresis;
+    case 0xd7: return Qt::Key_multiply;
+    case 0xd8: return Qt::Key_Ooblique;
+    case 0xd9: return Qt::Key_Ugrave;
+    case 0xda: return Qt::Key_Uacute;
+    case 0xdb: return Qt::Key_Ucircumflex;
+    case 0xdc: return Qt::Key_Udiaeresis;
+    case 0xdd: return Qt::Key_Yacute;
+    case 0xde: return Qt::Key_THORN;
+    case 0xdf: return Qt::Key_ssharp;
+    case 0xe5: return Qt::Key_Aring;
+    case 0xe6: return Qt::Key_AE;
+    case 0xf7: return Qt::Key_division;
+    case 0xf8: return Qt::Key_Ooblique;
+    case 0xff: return Qt::Key_ydiaeresis;
+    default: QTEST_ASSERT(false); return Qt::Key(0);
+    }
+}
+
+char HbAutoTest::keyToAscii(Qt::Key key)
+{
+    switch (key) {
+    case Qt::Key_Backspace: return 0x8; //BS
+    case Qt::Key_Tab: return 0x09; // HT
+    case Qt::Key_Backtab: return 0x0b; // VT
+    case Qt::Key_Enter:
+    case Qt::Key_Return: return 0x0d; // CR
+    case Qt::Key_Escape: return 0x1b; // ESC
+    case Qt::Key_Space: return 0x20;        // 7 bit printable ASCII
+    case Qt::Key_Exclam: return 0x21;
+    case Qt::Key_QuoteDbl: return 0x22;
+    case Qt::Key_NumberSign: return 0x23;
+    case Qt::Key_Dollar: return 0x24;
+    case Qt::Key_Percent: return 0x25;
+    case Qt::Key_Ampersand: return 0x26;
+    case Qt::Key_Apostrophe: return 0x27;
+    case Qt::Key_ParenLeft: return 0x28;
+    case Qt::Key_ParenRight: return 0x29;
+    case Qt::Key_Asterisk: return 0x2a;
+    case Qt::Key_Plus: return 0x2b;
+    case Qt::Key_Comma: return 0x2c;
+    case Qt::Key_Minus: return 0x2d;
+    case Qt::Key_Period: return 0x2e;
+    case Qt::Key_Slash: return 0x2f;
+    case Qt::Key_0: return 0x30;
+    case Qt::Key_1: return 0x31;
+    case Qt::Key_2: return 0x32;
+    case Qt::Key_3: return 0x33;
+    case Qt::Key_4: return 0x34;
+    case Qt::Key_5: return 0x35;
+    case Qt::Key_6: return 0x36;
+    case Qt::Key_7: return 0x37;
+    case Qt::Key_8: return 0x38;
+    case Qt::Key_9: return 0x39;
+    case Qt::Key_Colon: return 0x3a;
+    case Qt::Key_Semicolon: return 0x3b;
+    case Qt::Key_Less: return 0x3c;
+    case Qt::Key_Equal: return 0x3d;
+    case Qt::Key_Greater: return 0x3e;
+    case Qt::Key_Question: return 0x3f;
+    case Qt::Key_At: return 0x40;
+    case Qt::Key_A: return 0x61; // 0x41 == 'A', 0x61 == 'a'
+    case Qt::Key_B: return 0x62;
+    case Qt::Key_C: return 0x63;
+    case Qt::Key_D: return 0x64;
+    case Qt::Key_E: return 0x65;
+    case Qt::Key_F: return 0x66;
+    case Qt::Key_G: return 0x67;
+    case Qt::Key_H: return 0x68;
+    case Qt::Key_I: return 0x69;
+    case Qt::Key_J: return 0x6a;
+    case Qt::Key_K: return 0x6b;
+    case Qt::Key_L: return 0x6c;
+    case Qt::Key_M: return 0x6d;
+    case Qt::Key_N: return 0x6e;
+    case Qt::Key_O: return 0x6f;
+    case Qt::Key_P: return 0x70;
+    case Qt::Key_Q: return 0x71;
+    case Qt::Key_R: return 0x72;
+    case Qt::Key_S: return 0x73;
+    case Qt::Key_T: return 0x74;
+    case Qt::Key_U: return 0x75;
+    case Qt::Key_V: return 0x76;
+    case Qt::Key_W: return 0x77;
+    case Qt::Key_X: return 0x78;
+    case Qt::Key_Y: return 0x79;
+    case Qt::Key_Z: return 0x7a;
+    case Qt::Key_BracketLeft: return 0x5b;
+    case Qt::Key_Backslash: return 0x5c;
+    case Qt::Key_BracketRight: return 0x5d;
+    case Qt::Key_AsciiCircum: return 0x5e;
+    case Qt::Key_Underscore: return 0x5f;
+    case Qt::Key_QuoteLeft: return 0x60;
+
+    case Qt::Key_BraceLeft: return 0x7b;
+    case Qt::Key_Bar: return 0x7c;
+    case Qt::Key_BraceRight: return 0x7d;
+    case Qt::Key_AsciiTilde: return 0x7e;
+
+    case Qt::Key_Delete: return 0;
+    case Qt::Key_Insert: return 0; // = 0x1006,
+    case Qt::Key_Pause: return 0; // = 0x1008,
+    case Qt::Key_Print: return 0; // = 0x1009,
+    case Qt::Key_SysReq: return 0; // = 0x100a,
+
+    case Qt::Key_Clear: return 0; // = 0x100b,
+
+    case Qt::Key_Home: return 0; // = 0x1010,        // cursor movement
+    case Qt::Key_End: return 0; // = 0x1011,
+    case Qt::Key_Left: return 0; // = 0x1012,
+    case Qt::Key_Up: return 0; // = 0x1013,
+    case Qt::Key_Right: return 0; // = 0x1014,
+    case Qt::Key_Down: return 0; // = 0x1015,
+    case Qt::Key_PageUp: return 0; // = 0x1016,
+    case Qt::Key_PageDown: return 0; // = 0x1017,
+    case Qt::Key_Shift: return 0; // = 0x1020,        // modifiers
+    case Qt::Key_Control: return 0; // = 0x1021,
+    case Qt::Key_Meta: return 0; // = 0x1022,
+    case Qt::Key_Alt: return 0; // = 0x1023,
+    case Qt::Key_CapsLock: return 0; // = 0x1024,
+    case Qt::Key_NumLock: return 0; // = 0x1025,
+    case Qt::Key_ScrollLock: return 0; // = 0x1026,
+    case Qt::Key_F1: return 0; // = 0x1030,        // function keys
+    case Qt::Key_F2: return 0; // = 0x1031,
+    case Qt::Key_F3: return 0; // = 0x1032,
+    case Qt::Key_F4: return 0; // = 0x1033,
+    case Qt::Key_F5: return 0; // = 0x1034,
+    case Qt::Key_F6: return 0; // = 0x1035,
+    case Qt::Key_F7: return 0; // = 0x1036,
+    case Qt::Key_F8: return 0; // = 0x1037,
+    case Qt::Key_F9: return 0; // = 0x1038,
+    case Qt::Key_F10: return 0; // = 0x1039,
+    case Qt::Key_F11: return 0; // = 0x103a,
+    case Qt::Key_F12: return 0; // = 0x103b,
+    case Qt::Key_F13: return 0; // = 0x103c,
+    case Qt::Key_F14: return 0; // = 0x103d,
+    case Qt::Key_F15: return 0; // = 0x103e,
+    case Qt::Key_F16: return 0; // = 0x103f,
+    case Qt::Key_F17: return 0; // = 0x1040,
+    case Qt::Key_F18: return 0; // = 0x1041,
+    case Qt::Key_F19: return 0; // = 0x1042,
+    case Qt::Key_F20: return 0; // = 0x1043,
+    case Qt::Key_F21: return 0; // = 0x1044,
+    case Qt::Key_F22: return 0; // = 0x1045,
+    case Qt::Key_F23: return 0; // = 0x1046,
+    case Qt::Key_F24: return 0; // = 0x1047,
+    case Qt::Key_F25: return 0; // = 0x1048,        // F25 .. F35 only on X11
+    case Qt::Key_F26: return 0; // = 0x1049,
+    case Qt::Key_F27: return 0; // = 0x104a,
+    case Qt::Key_F28: return 0; // = 0x104b,
+    case Qt::Key_F29: return 0; // = 0x104c,
+    case Qt::Key_F30: return 0; // = 0x104d,
+    case Qt::Key_F31: return 0; // = 0x104e,
+    case Qt::Key_F32: return 0; // = 0x104f,
+    case Qt::Key_F33: return 0; // = 0x1050,
+    case Qt::Key_F34: return 0; // = 0x1051,
+    case Qt::Key_F35: return 0; // = 0x1052,
+    case Qt::Key_Super_L: return 0; // = 0x1053,        // extra keys
+    case Qt::Key_Super_R: return 0; // = 0x1054,
+    case Qt::Key_Menu: return 0; // = 0x1055,
+    case Qt::Key_Hyper_L: return 0; // = 0x1056,
+    case Qt::Key_Hyper_R: return 0; // = 0x1057,
+    case Qt::Key_Help: return 0; // = 0x1058,
+    case Qt::Key_Direction_L: return 0; // = 0x1059,
+    case Qt::Key_Direction_R: return 0; // = 0x1060,
+
+    // Latin 1 codes adapted from X: keysymdef.h,v 1.21 94/08/28 16:17:06
+    case Qt::Key_nobreakspace: return char(0xa0);
+    case Qt::Key_exclamdown: return char(0xa1);
+    case Qt::Key_cent: return char(0xa2);
+    case Qt::Key_sterling: return char(0xa3);
+    case Qt::Key_currency: return char(0xa4);
+    case Qt::Key_yen: return char(0xa5);
+    case Qt::Key_brokenbar: return char(0xa6);
+    case Qt::Key_section: return char(0xa7);
+    case Qt::Key_diaeresis: return char(0xa8);
+    case Qt::Key_copyright: return char(0xa9);
+    case Qt::Key_ordfeminine: return char(0xaa);
+    case Qt::Key_guillemotleft: return char(0xab); // left angle quotation mar
+    case Qt::Key_notsign: return char(0xac);
+    case Qt::Key_hyphen: return char(0xad);
+    case Qt::Key_registered: return char(0xae);
+    case Qt::Key_macron: return char(0xaf);
+    case Qt::Key_degree: return char(0xb0);
+    case Qt::Key_plusminus: return char(0xb1);
+    case Qt::Key_twosuperior: return char(0xb2);
+    case Qt::Key_threesuperior: return char(0xb3);
+    case Qt::Key_acute: return char(0xb4);
+    case Qt::Key_mu: return char(0xb5);
+    case Qt::Key_paragraph: return char(0xb6);
+    case Qt::Key_periodcentered: return char(0xb7);
+    case Qt::Key_cedilla: return char(0xb8);
+    case Qt::Key_onesuperior: return char(0xb9);
+    case Qt::Key_masculine: return char(0xba);
+    case Qt::Key_guillemotright: return char(0xbb); // right angle quotation mar
+    case Qt::Key_onequarter: return char(0xbc);
+    case Qt::Key_onehalf: return char(0xbd);
+    case Qt::Key_threequarters: return char(0xbe);
+    case Qt::Key_questiondown: return char(0xbf);
+    case Qt::Key_Agrave: return char(0xc0);
+    case Qt::Key_Aacute: return char(0xc1);
+    case Qt::Key_Acircumflex: return char(0xc2);
+    case Qt::Key_Atilde: return char(0xc3);
+    case Qt::Key_Adiaeresis: return char(0xc4);
+    case Qt::Key_Aring: return char(0xe5);
+    case Qt::Key_AE: return char(0xe6);
+    case Qt::Key_Ccedilla: return char(0xc7);
+    case Qt::Key_Egrave: return char(0xc8);
+    case Qt::Key_Eacute: return char(0xc9);
+    case Qt::Key_Ecircumflex: return char(0xca);
+    case Qt::Key_Ediaeresis: return char(0xcb);
+    case Qt::Key_Igrave: return char(0xcc);
+    case Qt::Key_Iacute: return char(0xcd);
+    case Qt::Key_Icircumflex: return char(0xce);
+    case Qt::Key_Idiaeresis: return char(0xcf);
+    case Qt::Key_ETH: return char(0xd0);
+    case Qt::Key_Ntilde: return char(0xd1);
+    case Qt::Key_Ograve: return char(0xd2);
+    case Qt::Key_Oacute: return char(0xd3);
+    case Qt::Key_Ocircumflex: return char(0xd4);
+    case Qt::Key_Otilde: return char(0xd5);
+    case Qt::Key_Odiaeresis: return char(0xd6);
+    case Qt::Key_multiply: return char(0xd7);
+    case Qt::Key_Ooblique: return char(0xf8);
+    case Qt::Key_Ugrave: return char(0xd9);
+    case Qt::Key_Uacute: return char(0xda);
+    case Qt::Key_Ucircumflex: return char(0xdb);
+    case Qt::Key_Udiaeresis: return char(0xdc);
+    case Qt::Key_Yacute: return char(0xdd);
+    case Qt::Key_THORN: return char(0xde);
+    case Qt::Key_ssharp: return char(0xdf);
+    case Qt::Key_division: return char(0xf7);
+    case Qt::Key_ydiaeresis: return char(0xff);
+
+    // multimedia/internet keys - ignored by default - see QKeyEvent c'tor
+
+    case Qt::Key_Back : return 0; // = 0x1061,
+    case Qt::Key_Forward : return 0; // = 0x1062,
+    case Qt::Key_Stop : return 0; // = 0x1063,
+    case Qt::Key_Refresh : return 0; // = 0x1064,
+
+    case Qt::Key_VolumeDown: return 0; // = 0x1070,
+    case Qt::Key_VolumeMute : return 0; // = 0x1071,
+    case Qt::Key_VolumeUp: return 0; // = 0x1072,
+    case Qt::Key_BassBoost: return 0; // = 0x1073,
+    case Qt::Key_BassUp: return 0; // = 0x1074,
+    case Qt::Key_BassDown: return 0; // = 0x1075,
+    case Qt::Key_TrebleUp: return 0; // = 0x1076,
+    case Qt::Key_TrebleDown: return 0; // = 0x1077,
+
+    case Qt::Key_MediaPlay : return 0; // = 0x1080,
+    case Qt::Key_MediaStop : return 0; // = 0x1081,
+    case Qt::Key_MediaPrevious : return 0; // = 0x1082,
+    case Qt::Key_MediaNext : return 0; // = 0x1083,
+    case Qt::Key_MediaRecord: return 0; // = 0x1084,
+
+    case Qt::Key_HomePage : return 0; // = 0x1090,
+    case Qt::Key_Favorites : return 0; // = 0x1091,
+    case Qt::Key_Search : return 0; // = 0x1092,
+    case Qt::Key_Standby: return 0; // = 0x1093,
+    case Qt::Key_OpenUrl: return 0; // = 0x1094,
+
+    case Qt::Key_LaunchMail : return 0; // = 0x10a0,
+    case Qt::Key_LaunchMedia: return 0; // = 0x10a1,
+    case Qt::Key_Launch0 : return 0; // = 0x10a2,
+    case Qt::Key_Launch1 : return 0; // = 0x10a3,
+    case Qt::Key_Launch2 : return 0; // = 0x10a4,
+    case Qt::Key_Launch3 : return 0; // = 0x10a5,
+    case Qt::Key_Launch4 : return 0; // = 0x10a6,
+    case Qt::Key_Launch5 : return 0; // = 0x10a7,
+    case Qt::Key_Launch6 : return 0; // = 0x10a8,
+    case Qt::Key_Launch7 : return 0; // = 0x10a9,
+    case Qt::Key_Launch8 : return 0; // = 0x10aa,
+    case Qt::Key_Launch9 : return 0; // = 0x10ab,
+    case Qt::Key_LaunchA : return 0; // = 0x10ac,
+    case Qt::Key_LaunchB : return 0; // = 0x10ad,
+    case Qt::Key_LaunchC : return 0; // = 0x10ae,
+    case Qt::Key_LaunchD : return 0; // = 0x10af,
+    case Qt::Key_LaunchE : return 0; // = 0x10b0,
+    case Qt::Key_LaunchF : return 0; // = 0x10b1,
+
+    default: QTEST_ASSERT(false); return 0;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/tsrc/ut/hbautotest.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,279 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef HBAUTOTEST_H
+#define HBAUTOTEST_H
+
+#include <hbnamespace.h>
+#include <hbmainwindow.h>
+#include <QtTest/QtTest>
+
+class HbMainWindow;
+class HbWidget;
+class HbAutoTestMainWindow;
+class HbAutoTest;
+class HbAutoTestMouseEvent; 
+/*
+INSTRUCTIONS:
+The class HbAutoTest is meant to be used with Orbit applications auto testing instead of GUI testing APIs of QTestLib.
+
+The functions of this class is to used similarily to the related QTestLib functions.
+
+Use HbAutoTestMainWindow (defined below) instead of HbMainWindow to enble filtering.
+Filterin filters out UI events that are not sent by function defined in HbAutoTest class.
+
+*/
+
+class HbAutoTestMouseEvent : public QMouseEvent
+{
+public:
+    HbAutoTestMouseEvent(Type type, const QPoint & pos, const QPoint & globalPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers ) 
+        : QMouseEvent(type,pos,globalPos,button,buttons,modifiers){}
+};
+
+class HbAutoTestKeyEvent : public QKeyEvent
+{
+public:
+        HbAutoTestKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, const QString& text = QString(),
+              bool autorep = false, ushort count = 1 ) 
+        : QKeyEvent(type, key, modifiers, text, autorep, count){}
+};
+
+class HbAutoTest 
+{
+public:
+    
+    static void mouseMove (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos = QPointF(), int delay = -1 );
+    static void mousePress (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos = QPointF(), int delay = -1);
+    static void mouseRelease (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos = QPointF(), int delay = -1);
+    static void mouseClick (HbAutoTestMainWindow *window, const HbWidget *widget, QPointF pos = QPointF(), int delay = -1);
+   
+private:
+    static void drag(HbAutoTestMainWindow *window, QPointF targetPoint);
+    static QPointF middlePointOfWidget( const HbWidget* widget);
+
+    static bool pointerPressed;
+    static QPointF pressPoint;
+
+//Key event Part: copy-pasted from QTestLib and modified to support HbAutoTestKeyEvent to enable filtering.
+//see HbAutoTestMainWindow below.
+public:
+    
+    static Qt::Key asciiToKey(char ascii);
+    static char keyToAscii(Qt::Key key);
+
+    static void simulateEvent(QWidget *widget, bool press, int code,
+                              Qt::KeyboardModifiers modifier, QString text, bool repeat, int delay=-1);
+
+    static void sendKeyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key code,
+                             QString text, Qt::KeyboardModifiers modifier, int delay=-1);    
+
+    static void sendKeyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key code,
+                             char ascii, Qt::KeyboardModifiers modifier, int delay=-1);
+
+    static void keyEvent(QTest::KeyAction action, QWidget *widget, char ascii,
+                                Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+ 
+    static void keyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key key,
+                                Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+
+    static void keyClicks(QWidget *widget, const QString &sequence,
+                                 Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+
+    static void keyPress(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+    
+    static void keyRelease(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+    
+    static void keyClick(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+    
+    static void keyPress(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+   
+    static void keyRelease(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+
+    static void keyClick(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+};
+
+class HbTestEvent
+{
+public:
+    virtual void simulate(QWidget *w) = 0;
+    virtual HbTestEvent *clone() const = 0;
+
+    virtual ~HbTestEvent() {}
+};
+
+class HbTestKeyEvent: public HbTestEvent
+{
+public:
+    inline HbTestKeyEvent(QTest::KeyAction action, Qt::Key key, Qt::KeyboardModifiers modifiers, int delay)
+        : _action(action), _delay(delay), _modifiers(modifiers), _ascii(0), _key(key) {}
+    inline HbTestKeyEvent(QTest::KeyAction action, char ascii, Qt::KeyboardModifiers modifiers, int delay)
+        : _action(action), _delay(delay), _modifiers(modifiers),
+          _ascii(ascii), _key(Qt::Key_unknown) {}
+    inline HbTestEvent *clone() const { return new HbTestKeyEvent(*this); }
+
+    inline void simulate(QWidget *w)
+    {
+        if (_ascii == 0)
+            HbAutoTest::keyEvent(_action, w, _key, _modifiers, _delay);
+        else
+            HbAutoTest::keyEvent(_action, w, _ascii, _modifiers, _delay);
+    } 
+
+protected:
+    QTest::KeyAction _action;
+    int _delay;
+    Qt::KeyboardModifiers _modifiers;
+    char _ascii;
+    Qt::Key _key;
+};
+
+class HbTestKeyClicksEvent: public HbTestEvent
+{
+public:
+    inline HbTestKeyClicksEvent(const QString &keys, Qt::KeyboardModifiers modifiers, int delay)
+        : _keys(keys), _modifiers(modifiers), _delay(delay) {}
+    inline HbTestEvent *clone() const { return new HbTestKeyClicksEvent(*this); }
+
+    inline void simulate(QWidget *w)
+    {
+        HbAutoTest::keyClicks(w, _keys, _modifiers, _delay);
+    }
+
+private:
+    QString _keys;
+    Qt::KeyboardModifiers _modifiers;
+    int _delay;
+};
+
+class HbTestDelayEvent: public HbTestEvent
+{
+public:
+    inline HbTestDelayEvent(int msecs): _delay(msecs) {}
+    inline HbTestEvent *clone() const { return new HbTestDelayEvent(*this); }
+
+    inline void simulate(QWidget * /*w*/) { QTest::qWait(_delay); }
+
+private:
+    int _delay;
+};
+
+class HbTestEventList: public QList<HbTestEvent *>
+{
+public:
+    inline HbTestEventList() {}
+    inline HbTestEventList(const HbTestEventList &other): QList<HbTestEvent *>()
+    { for (int i = 0; i < other.count(); ++i) append(other.at(i)->clone()); }
+    inline ~HbTestEventList()
+    { clear(); }
+    inline void clear()
+    { qDeleteAll(*this); QList<HbTestEvent *>::clear(); }
+
+    inline void addKeyClick(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Click, qtKey, modifiers, msecs); }
+    inline void addKeyPress(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Press, qtKey, modifiers, msecs); }
+    inline void addKeyRelease(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Release, qtKey, modifiers, msecs); }
+    inline void addKeyEvent(QTest::KeyAction action, Qt::Key qtKey,
+                            Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { append(new HbTestKeyEvent(action, qtKey, modifiers, msecs)); }
+
+    inline void addKeyClick(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Click, ascii, modifiers, msecs); }
+    inline void addKeyPress(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Press, ascii, modifiers, msecs); }
+    inline void addKeyRelease(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Release, ascii, modifiers, msecs); }
+    inline void addKeyClicks(const QString &keys, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { append(new HbTestKeyClicksEvent(keys, modifiers, msecs)); }
+    inline void addKeyEvent(QTest::KeyAction action, char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { append(new HbTestKeyEvent(action, ascii, modifiers, msecs)); }
+
+    inline void addDelay(int msecs)
+    { append(new HbTestDelayEvent(msecs)); }
+
+    inline void simulate(QWidget *w)
+    {
+        for (int i = 0; i < count(); ++i)
+            at(i)->simulate(w);
+    }
+};
+
+class HbAutoTestMainWindow : public HbMainWindow
+{
+public:
+    HbAutoTestMainWindow() : HbMainWindow() {}
+    
+    void mousePressEvent(QMouseEvent *event)
+    {
+        qDebug(
+            "HbAutoTestMainWindow::mousePressEvent: x(%d) y(%d)",
+            event->x(),
+            event->y());
+         if ( dynamic_cast<HbAutoTestMouseEvent *>(event) ) {
+                HbMainWindow::mousePressEvent(event);
+            } else {
+                ;//Do nothing 
+         }
+    }
+
+    void mouseMoveEvent(QMouseEvent *event)
+    {
+        if ( dynamic_cast<HbAutoTestMouseEvent *>(event) ) {
+                HbMainWindow::mouseMoveEvent(event);
+            } else {
+                ;//Do nothing
+         }
+    }
+
+    void mouseReleaseEvent(QMouseEvent *event)
+    {
+         if ( dynamic_cast<HbAutoTestMouseEvent *>(event) ) {
+                HbMainWindow::mouseReleaseEvent(event);
+            } else {
+                ;//Do nothing  
+         }
+    }
+
+    void keyPressEvent(QKeyEvent *event)
+    {
+        if ( dynamic_cast<HbAutoTestKeyEvent *>(event) ) {
+                HbMainWindow::keyPressEvent(event);
+            } else {
+                ;//Do nothing  
+         }
+    }
+    void keyReleaseEvent(QKeyEvent *event)
+    {
+        if ( dynamic_cast<HbAutoTestKeyEvent *>(event) ) {
+                HbMainWindow::keyReleaseEvent(event);
+            } else {
+                ;//Do nothing  
+         }
+    }
+
+    void mouseDoubleClickEvent(QMouseEvent *event)
+    {
+        Q_UNUSED(event);
+        //Just ignore, not supported in Orbit
+    }
+};
+
+
+Q_DECLARE_METATYPE(HbTestEventList)
+#endif //HBAUTOTEST_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/tsrc/ut/testcmapplsettingsui.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,632 @@
+/*
+* Copyright (c) 2010 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:
+* CM Application Settings UI unit testing.
+*/
+
+#include <QSharedPointer>
+
+#include <HbApplication>
+#include <HbMainWindow>
+#include <HbDialog>
+#include <HbRadioButtonList>
+#include <HbAction>
+#include <QtTest/QtTest>
+
+#include "cmapplsettingsui_p.h"
+#include "cmradiodialog.h"
+
+#include "hbautotest.h"
+#include "testcmapplsettingsui.h"
+
+// -----------------------------------------------------------------------------
+// STATIC TEST DATA
+// -----------------------------------------------------------------------------
+
+// Time to wait before continuing after an UI step
+static const int waitTime = 10;
+
+// Destination list item for Connection Method selection
+static const QString dedicatedAccessPoint = "Dedicated access point";
+
+static const QStringList allDestinations = QStringList() <<
+    "Internet" <<
+    "My Snap" <<
+    dedicatedAccessPoint;
+
+static const QStringList allConnectionMethods = QStringList()
+    << "Home WLAN"
+    << "packet data 1"
+    << "packet data 2"
+    << "packet data 3"
+    << "Streaming"
+    << "WLAN IAP 1"
+    << "WLAN IAP 2"
+    << "WLAN IAP 3";
+
+static const QStringList gprsConnectionMethods = QStringList()
+    << "packet data 1"
+    << "packet data 2"
+    << "packet data 3"
+    << "Streaming";
+
+static const QStringList wlanConnectionMethods = QStringList()
+    << "Home WLAN"
+    << "WLAN IAP 1"
+    << "WLAN IAP 2"
+    << "WLAN IAP 3";
+
+// -----------------------------------------------------------------------------
+// FRAMEWORK FUNCTIONS
+// -----------------------------------------------------------------------------
+
+/**
+ * Test main function. Runs all test cases.
+ */
+#ifndef TESTCMAPPLSETTINGSUI_NO_OUTPUT_REDIRECT
+int main(int argc, char *argv[])
+{
+    HbApplication app(argc, argv);
+    app.setApplicationName("TestCmApplSettingsUi");
+    
+    char *pass[3];  
+    pass[0] = argv[0];
+    pass[1] = "-o"; 
+    pass[2] = "c:\\data\\TestCmApplSettingsUi.txt";
+ 
+    TestCmApplSettingsUi tc;
+    int res = QTest::qExec(&tc, 3, pass);
+ 
+    return res;
+}
+#else
+QTEST_MAIN(TestCmApplSettingsUi)
+#endif
+
+/**
+ * This function is be called before the first test case is executed.
+ */
+void TestCmApplSettingsUi::initTestCase()
+{
+    mMainWindow = new HbAutoTestMainWindow;
+    //mMainWindow = new HbMainWindow;
+    mMainWindow->show();
+    mSelection.result = CmApplSettingsUi::SelectionTypeDestination;
+    mSelection.id = 0;
+    mSignalFinished = NULL;
+}
+
+/**
+ * This function is be called after the last test case was executed.
+ */
+void TestCmApplSettingsUi::cleanupTestCase()
+{
+    delete mMainWindow;
+    mMainWindow = 0;
+}
+
+/**
+ * This function is be called before each test case is executed.
+ */
+void TestCmApplSettingsUi::init()
+{
+    // Initialize the CmApplSettingsUI object
+    mApplSettUi = new CmApplSettingsUi;
+
+    // Initialize code references
+    mApplSettingsPriv = mApplSettUi->d_ptr;
+    QVERIFY(mApplSettingsPriv != NULL);
+
+    // CmApplSettingsUI finished(uint) signal watcher
+    mSignalFinished = new QSignalSpy(mApplSettUi, SIGNAL(finished(uint)));
+    QVERIFY(mSignalFinished->isValid() == true);
+}
+
+/**
+ * This function is be called after each test case is executed.
+ */
+void TestCmApplSettingsUi::cleanup()
+{
+    delete mApplSettUi;
+    mApplSettUi = NULL;
+    
+    mApplSettingsPriv = NULL;
+    
+    QCOMPARE(mSignalFinished->count(), 0);
+    delete mSignalFinished;
+    mSignalFinished = NULL;
+}
+
+// -----------------------------------------------------------------------------
+// TEST CASES
+// -----------------------------------------------------------------------------
+
+void TestCmApplSettingsUi::tcConfigAndDelete()
+{
+    // Form the configuration parameters
+    mSelection.result = CmApplSettingsUi::SelectionTypeDestination;
+    mSelection.id = 0;
+    QFlags<CmApplSettingsUi::SelectionDialogItems> listItems;
+    listItems |= CmApplSettingsUi::ShowDestinations;
+    listItems |= CmApplSettingsUi::ShowConnectionMethods;
+    QSet<CmApplSettingsUi::BearerTypeFilter> filter;
+        
+    // Configure the dialog
+    mApplSettUi->setOptions(listItems, filter);
+    mApplSettUi->setSelection(mSelection);
+    
+    // Skip execution, to test premature deletion
+}
+
+void TestCmApplSettingsUi::tcNoContentToShow()
+{
+    // Configure the dialog
+    QFlags<CmApplSettingsUi::SelectionDialogItems> listItems;
+    QSet<CmApplSettingsUi::BearerTypeFilter> filter;
+    mApplSettUi->setOptions(listItems, filter);
+
+    // Run the dialog
+    mApplSettUi->open();
+    
+    // The dialog should fail to no content error code,
+    // since no selection dialog items were selected.
+    subCatchSignalFinished(CmApplSettingsUi::ApplSettingsErrorNoContent);
+}
+
+void TestCmApplSettingsUi::tcDestinationSelect()
+{
+    // Configure the dialog
+    QFlags<CmApplSettingsUi::SelectionDialogItems> listItems;
+    listItems |= CmApplSettingsUi::ShowDestinations;
+    QSet<CmApplSettingsUi::BearerTypeFilter> filter;
+    mApplSettUi->setOptions(listItems, filter);
+    
+    // Run the dialog
+    mApplSettUi->open();
+    
+    // Validate the dialog content
+    QStringList destinations;
+    destinations
+        << "Internet"
+        << "My Snap";
+    subCheckDialog(
+        mApplSettingsPriv->mDestinationDialog,
+        destinations,
+        0);
+    
+    // Click "OK"
+    subDismissDialog(mApplSettingsPriv->mDestinationDialog->mDialog, true);
+
+    // The dialog should succeed
+    subCatchSignalFinished(CmApplSettingsUi::ApplSettingsErrorNone);
+
+    // Selection should be Internet Destination
+    mSelection.result = CmApplSettingsUi::SelectionTypeDestination;
+    mSelection.id = 4099;
+    subVerifySelection(mSelection);
+}
+
+void TestCmApplSettingsUi::tcDestinationCancel()
+{
+    // Run the dialog with default parameters
+    mApplSettUi->open();
+
+    // Validate the dialog content
+    subCheckDialog(
+        mApplSettingsPriv->mDestinationDialog,
+        allDestinations,
+        0);
+
+    // Click "Cancel"
+    subDismissDialog(mApplSettingsPriv->mDestinationDialog->mDialog, false);
+
+    // The dialog should succeed
+    subCatchSignalFinished(CmApplSettingsUi::ApplSettingsErrorCancel);
+}
+
+void TestCmApplSettingsUi::tcDestinationFilterWlan()
+{
+    // Configure the dialog
+    QFlags<CmApplSettingsUi::SelectionDialogItems> listItems;
+    listItems |= CmApplSettingsUi::ShowDestinations;
+    QSet<CmApplSettingsUi::BearerTypeFilter> filter;
+    filter |= CMManagerShim::BearerTypeWlan;
+    mApplSettUi->setOptions(listItems, filter);
+    
+    // Run the dialog
+    mApplSettUi->open();
+    
+    // Validate the dialog content
+    QStringList destinations;
+    destinations
+        << "Internet"
+        << "My Snap";
+    subCheckDialog(
+        mApplSettingsPriv->mDestinationDialog,
+        destinations,
+        0);
+    
+    // Select "My Snap"
+    subSelectDialogItem(
+        mApplSettingsPriv->mDestinationDialog,
+        1);
+    
+    // Click "OK"
+    subDismissDialog(mApplSettingsPriv->mDestinationDialog->mDialog, true);
+
+    // The dialog should succeed
+    subCatchSignalFinished(CmApplSettingsUi::ApplSettingsErrorNone);
+
+    // Selection should be "My Snap" Destination
+    mSelection.result = CmApplSettingsUi::SelectionTypeDestination;
+    mSelection.id = 4102;
+    subVerifySelection(mSelection);
+}
+
+void TestCmApplSettingsUi::tcDestinationFilterUnknown()
+{
+    // Configure the dialog
+    QFlags<CmApplSettingsUi::SelectionDialogItems> listItems;
+    listItems |= CmApplSettingsUi::ShowDestinations;
+    listItems |= CmApplSettingsUi::ShowConnectionMethods;
+    QSet<CmApplSettingsUi::BearerTypeFilter> filter;
+    filter |= 0x10281BB7;       // Obsolete CSD bearer type
+    mApplSettUi->setOptions(listItems, filter);
+
+    // Run the dialog with default parameters
+    mApplSettUi->open();
+
+    // The dialog should fail since there's nothing to show
+    subCatchSignalFinished(CmApplSettingsUi::ApplSettingsErrorNoContent);
+}
+
+void TestCmApplSettingsUi::tcDedicatedConnMethodSelect()
+{
+    // Configure the dialog
+    mSelection.result = CmApplSettingsUi::SelectionTypeDestination;
+    mSelection.id = 4099;
+    mApplSettUi->setSelection(mSelection);
+    
+    // Run the dialog with default parameters
+    mApplSettUi->open();
+
+    // Validate the dialog content
+    subCheckDialog(
+        mApplSettingsPriv->mDestinationDialog,
+        allDestinations,
+        0);
+    
+    // Select "Dedicated access point"
+    subSelectDialogItem(
+        mApplSettingsPriv->mDestinationDialog,
+        2);
+    
+    // Click "OK"
+    subDismissDialog(mApplSettingsPriv->mDestinationDialog->mDialog, true);
+
+    // Connection method list should open
+    subCheckDialog(
+        mApplSettingsPriv->mConnMethodDialog,
+        allConnectionMethods,
+        0);
+
+    // Click "OK"
+    subDismissDialog(mApplSettingsPriv->mConnMethodDialog->mDialog, true);
+
+    // The dialog should succeed
+    subCatchSignalFinished(CmApplSettingsUi::ApplSettingsErrorNone);
+    
+    // Selection should be Connection Method "Home WLAN"
+    mSelection.result = CmApplSettingsUi::SelectionTypeConnectionMethod;
+    mSelection.id = 8;
+    subVerifySelection(mSelection);
+}
+
+void TestCmApplSettingsUi::tcDedicatedConnMethodCancel()
+{
+    // Configure the dialog
+    mSelection.result = CmApplSettingsUi::SelectionTypeConnectionMethod;
+    mSelection.id = 1;
+    mApplSettUi->setSelection(mSelection);
+    
+    // Run the dialog with default parameters
+    mApplSettUi->open();
+
+    // Validate the dialog content
+    subCheckDialog(
+        mApplSettingsPriv->mDestinationDialog,
+        allDestinations,
+        2);
+    
+    // Click "OK"
+    subDismissDialog(mApplSettingsPriv->mDestinationDialog->mDialog, true);
+
+    // Connection method list should open
+    subCheckDialog(
+        mApplSettingsPriv->mConnMethodDialog,
+        allConnectionMethods,
+        1);
+
+    // Click "Cancel"
+    subDismissDialog(mApplSettingsPriv->mConnMethodDialog->mDialog, false);
+
+    // The dialog should be cancelled
+    subCatchSignalFinished(CmApplSettingsUi::ApplSettingsErrorCancel);
+}
+
+void TestCmApplSettingsUi::tcConnMethodSelect()
+{
+    // Configure the dialog
+    QFlags<CmApplSettingsUi::SelectionDialogItems> listItems;
+    listItems |= CmApplSettingsUi::ShowConnectionMethods;
+    QSet<CmApplSettingsUi::BearerTypeFilter> filter;
+    mApplSettUi->setOptions(listItems, filter);
+    mSelection.result = CmApplSettingsUi::SelectionTypeConnectionMethod;
+    mSelection.id = 1;
+    mApplSettUi->setSelection(mSelection);
+    
+    // Run the dialog
+    mApplSettUi->open();
+    
+    // Validate the dialog content
+    subCheckDialog(
+        mApplSettingsPriv->mConnMethodDialog,
+        allConnectionMethods,
+        1);
+    
+    // Select "WLAN IAP 1"
+    subSelectDialogItem(
+        mApplSettingsPriv->mConnMethodDialog,
+        3);
+    
+    // Click "OK"
+    subDismissDialog(mApplSettingsPriv->mConnMethodDialog->mDialog, true);
+
+    // The dialog should succeed
+    subCatchSignalFinished(CmApplSettingsUi::ApplSettingsErrorNone);
+
+    // Selection should be Connection Method "packet data 3"
+    mSelection.result = CmApplSettingsUi::SelectionTypeConnectionMethod;
+    mSelection.id = 4;
+    subVerifySelection(mSelection);
+}
+
+void TestCmApplSettingsUi::tcConnMethodCancel()
+{
+    // Configure the dialog
+    QFlags<CmApplSettingsUi::SelectionDialogItems> listItems;
+    listItems |= CmApplSettingsUi::ShowConnectionMethods;
+    QSet<CmApplSettingsUi::BearerTypeFilter> filter;
+    mApplSettUi->setOptions(listItems, filter);
+    
+    // Run the dialog
+    mApplSettUi->open();
+    
+    // Validate the dialog content
+    subCheckDialog(
+        mApplSettingsPriv->mConnMethodDialog,
+        allConnectionMethods,
+        0);
+    
+    // Click "Cancel"
+    subDismissDialog(mApplSettingsPriv->mConnMethodDialog->mDialog, false);
+
+    // The dialog should succeed
+    subCatchSignalFinished(CmApplSettingsUi::ApplSettingsErrorCancel);
+}
+
+void TestCmApplSettingsUi::tcConnMethodFilterGprs()
+{
+    // Configure the dialog
+    QFlags<CmApplSettingsUi::SelectionDialogItems> listItems;
+    listItems |= CmApplSettingsUi::ShowConnectionMethods;
+    QSet<CmApplSettingsUi::BearerTypeFilter> filter;
+    filter |= CMManagerShim::BearerTypePacketData;
+    mApplSettUi->setOptions(listItems, filter);
+    mSelection.result = CmApplSettingsUi::SelectionTypeConnectionMethod;
+    mSelection.id = 9;
+    mApplSettUi->setSelection(mSelection);
+    
+    // Run the dialog
+    mApplSettUi->open();
+    
+    // Validate the dialog content
+    subCheckDialog(
+        mApplSettingsPriv->mConnMethodDialog,
+        gprsConnectionMethods,
+        3);
+    
+    // Select "packet data 3"
+    subSelectDialogItem(
+        mApplSettingsPriv->mConnMethodDialog,
+        2);
+    
+    // Click "OK"
+    subDismissDialog(mApplSettingsPriv->mConnMethodDialog->mDialog, true);
+
+    // The dialog should succeed
+    subCatchSignalFinished(CmApplSettingsUi::ApplSettingsErrorNone);
+
+    // Selection should be Connection Method "packet data 3"
+    mSelection.result = CmApplSettingsUi::SelectionTypeConnectionMethod;
+    mSelection.id = 4;
+    subVerifySelection(mSelection);
+}
+
+void TestCmApplSettingsUi::tcConnMethodFilterWlan()
+{
+    // Configure the dialog
+    QFlags<CmApplSettingsUi::SelectionDialogItems> listItems;
+    listItems |= CmApplSettingsUi::ShowConnectionMethods;
+    QSet<CmApplSettingsUi::BearerTypeFilter> filter;
+    filter |= CMManagerShim::BearerTypeWlan;
+    mApplSettUi->setOptions(listItems, filter);
+    mSelection.result = CmApplSettingsUi::SelectionTypeConnectionMethod;
+    mSelection.id = 6;
+    mApplSettUi->setSelection(mSelection);
+    
+    // Run the dialog
+    mApplSettUi->open();
+    
+    // Validate the dialog content
+    subCheckDialog(
+        mApplSettingsPriv->mConnMethodDialog,
+        wlanConnectionMethods,
+        2);
+    
+    // Select "WLAN IAP 1"
+    subSelectDialogItem(
+        mApplSettingsPriv->mConnMethodDialog,
+        1);
+    
+    // Click "OK"
+    subDismissDialog(mApplSettingsPriv->mConnMethodDialog->mDialog, true);
+
+    // The dialog should succeed
+    subCatchSignalFinished(CmApplSettingsUi::ApplSettingsErrorNone);
+
+    // Selection should be Connection Method "WLAN IAP 1"
+    mSelection.result = CmApplSettingsUi::SelectionTypeConnectionMethod;
+    mSelection.id = 5;
+    subVerifySelection(mSelection);
+}
+
+void TestCmApplSettingsUi::tcConnMethodFilterUnknown()
+{
+    // Configure the dialog
+    QFlags<CmApplSettingsUi::SelectionDialogItems> listItems;
+    listItems |= CmApplSettingsUi::ShowConnectionMethods;
+    QSet<CmApplSettingsUi::BearerTypeFilter> filter;
+    filter |= 0x10281BB7;       // Obsolete CSD bearer type
+    mApplSettUi->setOptions(listItems, filter);
+    
+    // Run the dialog
+    mApplSettUi->open();
+    
+    // The dialog should fail since there's nothing to show
+    subCatchSignalFinished(CmApplSettingsUi::ApplSettingsErrorNoContent);
+}
+
+// -----------------------------------------------------------------------------
+// SUB TEST CASES
+// -----------------------------------------------------------------------------
+
+/**
+ * Catch and verify the signal "finished(int)" emitted by mSignalFinished.
+ */
+void TestCmApplSettingsUi::subCatchSignalFinished(uint status)
+{
+    QTest::qWait(waitTime);
+    QCOMPARE(mSignalFinished->count(), 1);      // A sole signal
+    QList<QVariant> arguments = mSignalFinished->takeFirst();
+    // Verify the first result status
+    QVERIFY(arguments.at(0).toUInt() == status);
+}
+
+/**
+ * Verify the current selection against given selection
+ */
+void TestCmApplSettingsUi::subVerifySelection(CmApplSettingsUi::SettingSelection selection)
+{
+    mSelection = mApplSettUi->selection();
+    QCOMPARE(mSelection.result, selection.result);
+    QCOMPARE(mSelection.id, selection.id);    
+}
+
+/**
+ * Application settings ui dialog content validation subtestcase.
+ * Checks:
+ * -The dialog's radiobutton list content.
+ * -Dialog's current selection.
+ */
+void TestCmApplSettingsUi::subCheckDialog(
+    CmRadioDialog *radioDialog,
+    QStringList items,
+    int selected)
+{
+    // Wait for the dialog to show properly
+    QTest::qWait(waitTime);
+    
+    QVERIFY(radioDialog != NULL);
+    QVERIFY(radioDialog->mList != NULL);
+    QCOMPARE(radioDialog->mList->items(), items);
+    QCOMPARE(radioDialog->mList->selected(), selected);
+}
+
+/**
+ * Select an item from the radio dialog.
+ */
+void TestCmApplSettingsUi::subSelectDialogItem(
+    CmRadioDialog *radioDialog,
+    int selected)
+{
+    // Wait for the dialog to show properly
+    QTest::qWait(waitTime);
+    
+    QVERIFY(radioDialog != NULL);
+    QVERIFY(radioDialog->mList != NULL);
+    HbRadioButtonList *radioList = radioDialog->mList;
+
+    // Calculate radio list item center location inside the
+    // radio list widget
+    QSizeF radioListSize = radioList->size();
+    qDebug(
+        "Radio List size height(%f) width(%f)",
+        radioListSize.height(),
+        radioListSize.width());
+    int itemCount = radioList->items().count();
+    qDebug("Radio List item count: %d", itemCount);
+    qreal buttonHeight = radioListSize.height() / itemCount;
+    QPoint point(
+        radioListSize.width() / 2,
+        buttonHeight * (selected + 0.5));
+    
+    // Click the button
+    HbAutoTest::mouseClick(mMainWindow, radioList, point, waitTime);
+
+    // Verify that the selection succeeded
+    QCOMPARE(radioDialog->mList->selected(), selected);
+}
+
+/**
+ * Dismiss the dialog by pressing either "OK" or "Cancel".
+ */
+void TestCmApplSettingsUi::subDismissDialog(
+    QSharedPointer<HbDialog> dialog,
+    bool accept)
+{
+    // Wait for the dialog to show properly
+    QTest::qWait(waitTime);
+    
+    QVERIFY(dialog != NULL);
+    
+    // Calculate button center location inside the dialog
+    QSizeF dialogSize = dialog->size();
+    qDebug(
+        "Dialog size height(%f) width(%f)",
+        dialogSize.height(),
+        dialogSize.width());
+    QPoint point;
+    if (accept) {
+        // Left button: "OK"
+        point.setX(dialogSize.width() / 4);
+    } else {
+        // Right button: "Cancel"
+        point.setX(dialogSize.width() - (dialogSize.width() / 4));
+    }
+    point.setY(dialogSize.height() - 30);
+    
+    // Click the button
+    HbAutoTest::mouseClick(mMainWindow, dialog.data(), point, waitTime);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/tsrc/ut/testcmapplsettingsui.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,80 @@
+/*
+* Copyright (c) 2010 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:
+* CM Application Settings UI unit testing.
+*/
+
+#include <QSharedPointer>
+#include <QStringList>
+#include <QtTest/QtTest>
+
+#include "cmapplsettingsui.h"
+
+class HbDialog;
+class CmRadioDialog;
+class HbMainWindow;
+class HbAutoTestMainWindow;
+
+class TestCmApplSettingsUi : public QObject
+{
+    Q_OBJECT
+
+    public slots:
+        // Test framework functions
+        void initTestCase();
+        void cleanupTestCase();
+        void init();
+        void cleanup();
+
+    private slots:
+        // Test cases
+        void tcConfigAndDelete();
+        void tcNoContentToShow();
+        void tcDestinationSelect();
+        void tcDestinationCancel();
+        void tcDestinationFilterWlan();
+        void tcDestinationFilterUnknown();
+        void tcDedicatedConnMethodSelect();
+        void tcDedicatedConnMethodCancel();
+        void tcConnMethodSelect();
+        void tcConnMethodCancel();
+        void tcConnMethodFilterGprs();
+        void tcConnMethodFilterWlan();
+        void tcConnMethodFilterUnknown();
+
+    private:
+        // Sub test cases
+        void subCatchSignalFinished(uint status);
+        void subVerifySelection(CmApplSettingsUi::SettingSelection selection);
+        void subCheckDialog(
+            CmRadioDialog *radioDialog,
+            QStringList items,
+            int selection);
+        void subSelectDialogItem(
+            CmRadioDialog *radioDialog,
+            int selected);
+        void subDismissDialog(
+            QSharedPointer<HbDialog> dialog,
+            bool accept);
+
+    private:
+        // Code references
+        CmApplSettingsUiPrivate *mApplSettingsPriv;
+        
+        // Test data
+        HbAutoTestMainWindow *mMainWindow;
+        CmApplSettingsUi::SettingSelection mSelection;
+        CmApplSettingsUi *mApplSettUi;
+        QSignalSpy *mSignalFinished;
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/tsrc/ut/testcmapplsettingsui.pro	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,37 @@
+#
+# Copyright (c) 2010 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:
+# Project file for CM Application Settings UI Unit Tests.
+
+TEMPLATE = app
+
+TARGET = testcmapplsettingsui
+
+CONFIG += hb qtestlib
+
+INCLUDEPATH += . ../../inc
+DEPENDPATH += .
+
+HEADERS += \
+    hbautotest.h \
+    testcmapplsettingsui.h
+SOURCES += \
+    hbautotest.cpp \
+    testcmapplsettingsui.cpp
+
+LIBS += -lcmapplsettingsui
+
+symbian: {
+    TARGET.CAPABILITY = ALL -TCB
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/tsrc/ut/tools/applsettingsui_ctc.bat	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,89 @@
+::
+:: Copyright (c) 2010 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:
+:: Script running Application Settings UI test cases with CTC analysis.
+
+@echo off
+
+:: -----------------------------------------------------------------------------
+:: Instructions
+:: -----------------------------------------------------------------------------
+:: 
+:: Remember to use the test CommsDat that can be set and restored with the
+:: helper scripts:
+:: - commsdat_set.bat
+:: - commsdat_restore.bat
+
+::-----------------------------------------------------------------------------
+:: Set the local variables
+::-----------------------------------------------------------------------------
+
+:: Cm Application Settings UI base directory
+set cmapplsettingsui_dir=..\..\..
+pushd %cmapplsettingsui_dir%
+
+:: CTC instrumentation excludes
+set ctc_excludes=-C EXCLUDE=* -C NO_EXCLUDE=src\*.cpp
+
+
+::-----------------------------------------------------------------------------
+:: Remove old coverage data
+::-----------------------------------------------------------------------------
+
+echo Cleaning up...
+del MON.* ctcerr.txt profile.txt
+rd /s /q CTCHTML
+echo ...done
+
+::-----------------------------------------------------------------------------
+:: Build & instrument code
+::-----------------------------------------------------------------------------
+
+echo Building code and instrumenting..
+call del MON.* ctcerr.txt profile.txt
+call make distclean
+call qmake
+call ctcwrap -i d -2comp %ctc_excludes% sbs -c winscw_udeb
+echo ...done
+
+::-----------------------------------------------------------------------------
+:: Build test code
+::-----------------------------------------------------------------------------
+
+echo Building test code...
+call cd tsrc\ut
+call make distclean
+call qmake
+call sbs -c winscw_udeb
+echo ...done
+
+::-----------------------------------------------------------------------------
+:: Execute the tests
+::-----------------------------------------------------------------------------
+
+echo Running tests..
+cd ..\..
+call \epoc32\release\winscw\udeb\testcmapplsettingsui.exe
+echo ...done
+
+::-----------------------------------------------------------------------------
+:: Create coverage results
+::-----------------------------------------------------------------------------
+
+echo Creating results...
+call ctcpost -p profile.txt
+call ctc2html -i profile.txt
+echo ...done
+
+popd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/tsrc/ut/tools/commsdat_restore.bat	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,17 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem Script for restoring backup of commsdat.
+
+copy backup\cccccc00.cre \epoc32\winscw\c\private\10202be9\persists\cccccc00.cre
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmapplsettingsui/tsrc/ut/tools/commsdat_set.bat	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,19 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem Script for setting test commsdat.
+
+md backup
+copy \epoc32\winscw\c\private\10202be9\persists\cccccc00.cre backup\
+copy default.cre \epoc32\winscw\c\private\10202be9\persists\cccccc00.cre
Binary file cmmanager/cmapplsettingsui/tsrc/ut/tools/default.cre has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmanager.pro	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,31 @@
+#
+# Copyright (c) 2010 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:
+#
+
+TEMPLATE = subdirs
+
+SUBDIRS += \
+    connection_settings_shim \
+    cmapplsettingsui \
+    cpipsettingsplugin \
+    cpdestinationplugin \
+    cppacketdataapplugin \
+    cpwlanapplugin
+
+CONFIG += ordered
+
+symbian*: {
+    SYMBIAN_PLATFORMS = WINSCW ARMV5
+} 
--- a/cmmanager/cmmgr/Framework/BWinsCw/CmManager_prot_setupU.DEF	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,392 +0,0 @@
-EXPORTS
-	??0CCmPluginBaseEng@@IAE@PAVTCmPluginInitParam@@@Z @ 1 NONAME ; CCmPluginBaseEng::CCmPluginBaseEng(class TCmPluginInitParam *)
-	??0CCmPluginLanBase@@IAE@PAVTCmPluginInitParam@@@Z @ 2 NONAME ; CCmPluginLanBase::CCmPluginLanBase(class TCmPluginInitParam *)
-	??0CmPluginBaseSettingsDlg@@QAE@AAVCCmPluginBaseEng@@@Z @ 3 NONAME ; CmPluginBaseSettingsDlg::CmPluginBaseSettingsDlg(class CCmPluginBaseEng &)
-	??0CmPluginBaseSettingsDlgAdv@@QAE@AAVCCmPluginBaseEng@@@Z @ 4 NONAME ; CmPluginBaseSettingsDlgAdv::CmPluginBaseSettingsDlgAdv(class CCmPluginBaseEng &)
-	??0CmPluginBaseSettingsDlgIp@@QAE@AAVCCmPluginBaseEng@@@Z @ 5 NONAME ; CmPluginBaseSettingsDlgIp::CmPluginBaseSettingsDlgIp(class CCmPluginBaseEng &)
-	??0RCmDestination@@QAE@ABV0@@Z @ 6 NONAME ; RCmDestination::RCmDestination(class RCmDestination const &)
-	??0RCmDestinationExt@@QAE@ABV0@@Z @ 7 NONAME ; RCmDestinationExt::RCmDestinationExt(class RCmDestinationExt const &)
-	??1CCmApplicationSettingsUi@@UAE@XZ @ 8 NONAME ; CCmApplicationSettingsUi::~CCmApplicationSettingsUi(void)
-	??1CCmPluginBaseEng@@UAE@XZ @ 9 NONAME ; CCmPluginBaseEng::~CCmPluginBaseEng(void)
-	??1CCmPluginLanBase@@MAE@XZ @ 10 NONAME ; CCmPluginLanBase::~CCmPluginLanBase(void)
-	??1CCmSettingsUi@@UAE@XZ @ 11 NONAME ; CCmSettingsUi::~CCmSettingsUi(void)
-	??1CmPluginBaseSettingsDlg@@UAE@XZ @ 12 NONAME ; CmPluginBaseSettingsDlg::~CmPluginBaseSettingsDlg(void)
-	??1CmPluginBaseSettingsDlgAdv@@UAE@XZ @ 13 NONAME ; CmPluginBaseSettingsDlgAdv::~CmPluginBaseSettingsDlgAdv(void)
-	??1CmPluginBaseSettingsDlgIp@@UAE@XZ @ 14 NONAME ; CmPluginBaseSettingsDlgIp::~CmPluginBaseSettingsDlgIp(void)
-	??1RCmDestination@@QAE@XZ @ 15 NONAME ; RCmDestination::~RCmDestination(void)
-	??1RCmDestinationExt@@QAE@XZ @ 16 NONAME ; RCmDestinationExt::~RCmDestinationExt(void)
-	??4RCmDestination@@QAEAAV0@ABV0@@Z @ 17 NONAME ; class RCmDestination & RCmDestination::operator=(class RCmDestination const &)
-	??4RCmDestinationExt@@QAEAAV0@ABV0@@Z @ 18 NONAME ; class RCmDestinationExt & RCmDestinationExt::operator=(class RCmDestinationExt const &)
-	?AddCommonConversionTableL@CCmPluginBaseEng@@IAEXPBUTCmCommonAttrConvArrayItem@@@Z @ 19 NONAME ; void CCmPluginBaseEng::AddCommonConversionTableL(struct TCmCommonAttrConvArrayItem const *)
-	?AddConnectionMethodL@RCmDestinationExt@@QAEHVRCmConnectionMethodExt@@@Z @ 20 NONAME ; int RCmDestinationExt::AddConnectionMethodL(class RCmConnectionMethodExt)
-	?AddConverstionTableL@CCmPluginBaseEng@@IAEXPAPAVCCDRecordBase@CommsDat@@PAHPBUTCmAttribConvTable@@@Z @ 21 NONAME ; void CCmPluginBaseEng::AddConverstionTableL(class CommsDat::CCDRecordBase * *, int *, struct TCmAttribConvTable const *)
-	?AddEmbeddedDestinationL@RCmDestinationExt@@QAEHABV1@@Z @ 22 NONAME ; int RCmDestinationExt::AddEmbeddedDestinationL(class RCmDestinationExt const &)
-	?AddResourceFileL@CCmPluginBaseEng@@IAEXABVTDesC16@@@Z @ 23 NONAME ; void CCmPluginBaseEng::AddResourceFileL(class TDesC16 const &)
-	?AllDestinationsL@CCmManagerImpl@@QAEXAAV?$RArray@K@@@Z @ 24 NONAME ; void CCmManagerImpl::AllDestinationsL(class RArray<unsigned long> &)
-	?AllDestinationsL@RCmManager@@QBEXAAV?$RArray@K@@@Z @ 25 NONAME ; void RCmManager::AllDestinationsL(class RArray<unsigned long> &) const
-	?AllDestinationsL@RCmManagerExt@@QAEXAAV?$RArray@K@@@Z @ 26 NONAME ; void RCmManagerExt::AllDestinationsL(class RArray<unsigned long> &)
-	?AllocReadL@CCmPluginBaseEng@@IBEPAVHBufC16@@H@Z @ 27 NONAME ; class HBufC16 * CCmPluginBaseEng::AllocReadL(int) const
-	?AppendSettingTextsL@CmPluginBaseSettingsDlg@@IAEXAAVCDesC16Array@@HH@Z @ 28 NONAME ; void CmPluginBaseSettingsDlg::AppendSettingTextsL(class CDesC16Array &, int, int)
-	?AppendSettingTextsL@CmPluginBaseSettingsDlg@@IAEXAAVCDesC16Array@@HPBVHBufC16@@@Z @ 29 NONAME ; void CmPluginBaseSettingsDlg::AppendSettingTextsL(class CDesC16Array &, int, class HBufC16 const *)
-	?AppendSettingTextsL@CmPluginBaseSettingsDlg@@IBEXAAVCDesC16Array@@HHABVTDesC16@@H@Z @ 30 NONAME ; void CmPluginBaseSettingsDlg::AppendSettingTextsL(class CDesC16Array &, int, int, class TDesC16 const &, int) const
-	?AppendSettingTextsL@CmPluginBaseSettingsDlg@@IBEXAAVCDesC16Array@@HHHH@Z @ 31 NONAME ; void CmPluginBaseSettingsDlg::AppendSettingTextsL(class CDesC16Array &, int, int, int, int) const
-	?BearerPriorityArrayL@RCmManager@@QBEXAAV?$RArray@VTBearerPriority@@@@@Z @ 32 NONAME ; void RCmManager::BearerPriorityArrayL(class RArray<class TBearerPriority> &) const
-	?BearerPriorityArrayL@RCmManagerExt@@QBEXAAV?$RArray@VTBearerPriority@@@@@Z @ 33 NONAME ; void RCmManagerExt::BearerPriorityArrayL(class RArray<class TBearerPriority> &) const
-	?BearerRecordIdLC@CCmPluginLanBase@@MAEXAAPAVHBufC16@@AAK@Z @ 34 NONAME ; void CCmPluginLanBase::BearerRecordIdLC(class HBufC16 * &, unsigned long &)
-	?CheckDNSServerAddressL@CCmPluginBaseEng@@QAEXHAAV?$CMDBField@VTDesC16@@@CommsDat@@0AAV?$CMDBField@H@3@@Z @ 35 NONAME ; void CCmPluginBaseEng::CheckDNSServerAddressL(int, class CommsDat::CMDBField<class TDesC16> &, class CommsDat::CMDBField<class TDesC16> &, class CommsDat::CMDBField<int> &)
-	?CheckIPv4ValidityL@@YAHPAVCCmPluginBaseEng@@KPBX@Z @ 36 NONAME ; int CheckIPv4ValidityL(class CCmPluginBaseEng *, unsigned long, void const *)
-	?CheckIPv6ValidityL@@YAHPAVCCmPluginBaseEng@@KPBX@Z @ 37 NONAME ; int CheckIPv6ValidityL(class CCmPluginBaseEng *, unsigned long, void const *)
-	?CheckIfAlreadyConnected@CCmPluginBaseEng@@MBEHXZ @ 38 NONAME ; int CCmPluginBaseEng::CheckIfAlreadyConnected(void) const
-	?CheckIfNameModifiedL@CCmPluginBaseEng@@IBEXPAVCCDRecordBase@CommsDat@@@Z @ 39 NONAME ; void CCmPluginBaseEng::CheckIfNameModifiedL(class CommsDat::CCDRecordBase *) const
-	?CheckPortNumberValidityL@@YAHPAVCCmPluginBaseEng@@KPBX@Z @ 40 NONAME ; int CheckPortNumberValidityL(class CCmPluginBaseEng *, unsigned long, void const *)
-	?CheckRecordIdValidityL@@YAHPAVCCmPluginBaseEng@@KPBX@Z @ 41 NONAME ; int CheckRecordIdValidityL(class CCmPluginBaseEng *, unsigned long, void const *)
-	?CheckWAPWspOptionValidityL@@YAHPAVCCmPluginBaseEng@@KPBX@Z @ 42 NONAME ; int CheckWAPWspOptionValidityL(class CCmPluginBaseEng *, unsigned long, void const *)
-	?ClassifyIPv6Address@@YA?AW4TIPv6Types@CMManager@@ABVTDesC16@@@Z @ 43 NONAME ; enum CMManager::TIPv6Types ClassifyIPv6Address(class TDesC16 const &)
-	?CleanupGlobalPriorityArray@RCmManager@@QBEXAAV?$RArray@VTBearerPriority@@@@@Z @ 44 NONAME ; void RCmManager::CleanupGlobalPriorityArray(class RArray<class TBearerPriority> &) const
-	?CleanupGlobalPriorityArray@RCmManagerExt@@QBEXAAV?$RArray@VTBearerPriority@@@@@Z @ 45 NONAME ; void RCmManagerExt::CleanupGlobalPriorityArray(class RArray<class TBearerPriority> &) const
-	?Close@CCmTransactionHandler@@QAEXXZ @ 46 NONAME ABSENT ; void CCmTransactionHandler::Close(void)
-	?Close@RCmConnectionMethod@@QAEXXZ @ 47 NONAME ; void RCmConnectionMethod::Close(void)
-	?Close@RCmConnectionMethodExt@@QAEXXZ @ 48 NONAME ; void RCmConnectionMethodExt::Close(void)
-	?Close@RCmDestination@@QAEXXZ @ 49 NONAME ; void RCmDestination::Close(void)
-	?Close@RCmDestinationExt@@QAEXXZ @ 50 NONAME ; void RCmDestinationExt::Close(void)
-	?Close@RCmManager@@QAEXXZ @ 51 NONAME ; void RCmManager::Close(void)
-	?Close@RCmManagerExt@@QAEXXZ @ 52 NONAME ; void RCmManagerExt::Close(void)
-	?ConnectionMethodByIDL@RCmDestination@@QBE?AVRCmConnectionMethod@@H@Z @ 53 NONAME ; class RCmConnectionMethod RCmDestination::ConnectionMethodByIDL(int) const
-	?ConnectionMethodByIDL@RCmDestinationExt@@QAE?AVRCmConnectionMethodExt@@H@Z @ 54 NONAME ; class RCmConnectionMethodExt RCmDestinationExt::ConnectionMethodByIDL(int)
-	?ConnectionMethodCount@CCmDestinationImpl@@QAEHXZ @ 55 NONAME ; int CCmDestinationImpl::ConnectionMethodCount(void)
-	?ConnectionMethodCount@RCmDestination@@QBEHXZ @ 56 NONAME ; int RCmDestination::ConnectionMethodCount(void) const
-	?ConnectionMethodCount@RCmDestinationExt@@QAEHXZ @ 57 NONAME ; int RCmDestinationExt::ConnectionMethodCount(void)
-	?ConnectionMethodL@CCmDestinationImpl@@QAEPAVCCmPluginBaseEng@@H@Z @ 58 NONAME ; class CCmPluginBaseEng * CCmDestinationImpl::ConnectionMethodL(int)
-	?ConnectionMethodL@CCmManagerImpl@@QAEPAVCCmPluginBaseEng@@K@Z @ 59 NONAME ; class CCmPluginBaseEng * CCmManagerImpl::ConnectionMethodL(unsigned long)
-	?ConnectionMethodL@CCmManagerImpl@@QAEXAAV?$RArray@K@@HHHH@Z @ 60 NONAME ; void CCmManagerImpl::ConnectionMethodL(class RArray<unsigned long> &, int, int, int, int)
-	?ConnectionMethodL@RCmDestination@@QBE?AVRCmConnectionMethod@@H@Z @ 61 NONAME ; class RCmConnectionMethod RCmDestination::ConnectionMethodL(int) const
-	?ConnectionMethodL@RCmDestinationExt@@QAE?AVRCmConnectionMethodExt@@H@Z @ 62 NONAME ; class RCmConnectionMethodExt RCmDestinationExt::ConnectionMethodL(int)
-	?ConnectionMethodL@RCmManager@@QBE?AVRCmConnectionMethod@@K@Z @ 63 NONAME ; class RCmConnectionMethod RCmManager::ConnectionMethodL(unsigned long) const
-	?ConnectionMethodL@RCmManager@@QBEXAAV?$RArray@K@@HHH@Z @ 64 NONAME ; void RCmManager::ConnectionMethodL(class RArray<unsigned long> &, int, int, int) const
-	?ConnectionMethodL@RCmManagerExt@@QAE?AVRCmConnectionMethodExt@@K@Z @ 65 NONAME ; class RCmConnectionMethodExt RCmManagerExt::ConnectionMethodL(unsigned long)
-	?ConnectionMethodL@RCmManagerExt@@QAEXAAV?$RArray@K@@HHH@Z @ 66 NONAME ; void RCmManagerExt::ConnectionMethodL(class RArray<unsigned long> &, int, int, int)
-	?ConstructAndRunLD@CmPluginBaseSettingsDlg@@QAEHXZ @ 67 NONAME ; int CmPluginBaseSettingsDlg::ConstructAndRunLD(void)
-	?ConstructL@CCmPluginBaseEng@@MAEXXZ @ 68 NONAME ; void CCmPluginBaseEng::ConstructL(void)
-	?ConstructL@CCmPluginLanBase@@MAEXXZ @ 69 NONAME ; void CCmPluginLanBase::ConstructL(void)
-	?ConvTableItem@CCmPluginBaseEng@@QAEPBUTCmAttribConvTable@@K@Z @ 70 NONAME ; struct TCmAttribConvTable const * CCmPluginBaseEng::ConvTableItem(unsigned long)
-	?CopyConnectionMethodL@RCmManagerExt@@QAEHAAVRCmDestinationExt@@AAVRCmConnectionMethodExt@@@Z @ 71 NONAME ; int RCmManagerExt::CopyConnectionMethodL(class RCmDestinationExt &, class RCmConnectionMethodExt &)
-	?CreateConnectionMethodL@RCmDestinationExt@@QAE?AVRCmConnectionMethodExt@@K@Z @ 72 NONAME ; class RCmConnectionMethodExt RCmDestinationExt::CreateConnectionMethodL(unsigned long)
-	?CreateConnectionMethodL@RCmManagerExt@@QAE?AVRCmConnectionMethodExt@@K@Z @ 73 NONAME ; class RCmConnectionMethodExt RCmManagerExt::CreateConnectionMethodL(unsigned long)
-	?CreateCopyL@CCmPluginBaseEng@@UBEPAV1@XZ @ 74 NONAME ; class CCmPluginBaseEng * CCmPluginBaseEng::CreateCopyL(void) const
-	?CreateCopyL@RCmConnectionMethodExt@@QAE?AV1@XZ @ 75 NONAME ; class RCmConnectionMethodExt RCmConnectionMethodExt::CreateCopyL(void)
-	?CreateDestinationL@RCmManagerExt@@QAE?AVRCmDestinationExt@@ABVTDesC16@@@Z @ 76 NONAME ; class RCmDestinationExt RCmManagerExt::CreateDestinationL(class TDesC16 const &)
-	?CreateNewL@CCmPluginBaseEng@@UAEXXZ @ 77 NONAME ; void CCmPluginBaseEng::CreateNewL(void)
-	?CreateNewServiceRecordL@CCmPluginLanBase@@MAEXXZ @ 78 NONAME ; void CCmPluginLanBase::CreateNewServiceRecordL(void)
-	?DeleteConnectionMethodL@RCmDestinationExt@@QAEXAAVRCmConnectionMethodExt@@@Z @ 79 NONAME ; void RCmDestinationExt::DeleteConnectionMethodL(class RCmConnectionMethodExt &)
-	?DeleteL@CCmPluginBaseEng@@UAEHHH@Z @ 80 NONAME ; int CCmPluginBaseEng::DeleteL(int, int)
-	?DeleteL@RCmConnectionMethodExt@@QAEHXZ @ 81 NONAME ; int RCmConnectionMethodExt::DeleteL(void)
-	?DeleteLD@CCmDestinationImpl@@QAEXXZ @ 82 NONAME ; void CCmDestinationImpl::DeleteLD(void)
-	?DeleteLD@RCmDestinationExt@@QAEXXZ @ 83 NONAME ; void RCmDestinationExt::DeleteLD(void)
-	?Destination@CCmPluginBaseEng@@UBEPAVCCmDestinationImpl@@XZ @ 84 NONAME ; class CCmDestinationImpl * CCmPluginBaseEng::Destination(void) const
-	?DestinationL@CCmManagerImpl@@QAEPAVCCmDestinationImpl@@K@Z @ 85 NONAME ; class CCmDestinationImpl * CCmManagerImpl::DestinationL(unsigned long)
-	?DestinationL@RCmConnectionMethod@@QBE?AVRCmDestination@@XZ @ 86 NONAME ; class RCmDestination RCmConnectionMethod::DestinationL(void) const
-	?DestinationL@RCmConnectionMethodExt@@QBE?AVRCmDestinationExt@@XZ @ 87 NONAME ; class RCmDestinationExt RCmConnectionMethodExt::DestinationL(void) const
-	?DestinationL@RCmManager@@QBE?AVRCmDestination@@K@Z @ 88 NONAME ; class RCmDestination RCmManager::DestinationL(unsigned long) const
-	?DestinationL@RCmManagerExt@@QAE?AVRCmDestinationExt@@K@Z @ 89 NONAME ; class RCmDestinationExt RCmManagerExt::DestinationL(unsigned long)
-	?DynInitMenuPaneL@CmPluginBaseSettingsDlg@@MAEXHPAVCEikMenuPane@@@Z @ 90 NONAME ; void CmPluginBaseSettingsDlg::DynInitMenuPaneL(int, class CEikMenuPane *)
-	?DynInitMenuPaneL@CmPluginBaseSettingsDlgAdv@@UAEXHPAVCEikMenuPane@@@Z @ 91 NONAME ; void CmPluginBaseSettingsDlgAdv::DynInitMenuPaneL(int, class CEikMenuPane *)
-	?DynInitMenuPaneL@CmPluginBaseSettingsDlgIp@@UAEXHPAVCEikMenuPane@@@Z @ 92 NONAME ; void CmPluginBaseSettingsDlgIp::DynInitMenuPaneL(int, class CEikMenuPane *)
-	?EasyWlanIdL@CCmManagerImpl@@QAEKXZ @ 93 NONAME ; unsigned long CCmManagerImpl::EasyWlanIdL(void)
-	?EasyWlanIdL@RCmManager@@QBEKXZ @ 94 NONAME ; unsigned long RCmManager::EasyWlanIdL(void) const
-	?EasyWlanIdL@RCmManagerExt@@QAEKXZ @ 95 NONAME ; unsigned long RCmManagerExt::EasyWlanIdL(void)
-	?ElementId@RCmDestination@@QBEKXZ @ 96 NONAME ; unsigned long RCmDestination::ElementId(void) const
-	?ElementId@RCmDestinationExt@@QAEKXZ @ 97 NONAME ; unsigned long RCmDestinationExt::ElementId(void)
-	?EnableChargeCardL@CCmPluginBaseEng@@AAEXH@Z @ 98 NONAME ABSENT ; void CCmPluginBaseEng::EnableChargeCardL(int)
-	?EnableLocationL@CCmPluginBaseEng@@AAEXH@Z @ 99 NONAME ABSENT ; void CCmPluginBaseEng::EnableLocationL(int)
-	?EnableProxyL@CCmPluginBaseEng@@AAEXH@Z @ 100 NONAME ABSENT ; void CCmPluginBaseEng::EnableProxyL(int)
-	?FeatureSupported@CCmPluginBaseEng@@SAHH@Z @ 101 NONAME ; int CCmPluginBaseEng::FeatureSupported(int)
-	?GetBearerInfoBoolL@CCmManagerImpl@@QBEHKK@Z @ 102 NONAME ; int CCmManagerImpl::GetBearerInfoBoolL(unsigned long, unsigned long) const
-	?GetBearerInfoBoolL@RCmManager@@QBEHKK@Z @ 103 NONAME ; int RCmManager::GetBearerInfoBoolL(unsigned long, unsigned long) const
-	?GetBearerInfoBoolL@RCmManagerExt@@QBEHKK@Z @ 104 NONAME ; int RCmManagerExt::GetBearerInfoBoolL(unsigned long, unsigned long) const
-	?GetBearerInfoIntL@CCmManagerImpl@@QBEKKK@Z @ 105 NONAME ; unsigned long CCmManagerImpl::GetBearerInfoIntL(unsigned long, unsigned long) const
-	?GetBearerInfoIntL@RCmManager@@QBEKKK@Z @ 106 NONAME ; unsigned long RCmManager::GetBearerInfoIntL(unsigned long, unsigned long) const
-	?GetBearerInfoIntL@RCmManagerExt@@QBEKKK@Z @ 107 NONAME ; unsigned long RCmManagerExt::GetBearerInfoIntL(unsigned long, unsigned long) const
-	?GetBearerInfoString8L@CCmManagerImpl@@QBEPAVHBufC8@@KK@Z @ 108 NONAME ; class HBufC8 * CCmManagerImpl::GetBearerInfoString8L(unsigned long, unsigned long) const
-	?GetBearerInfoString8L@RCmManager@@QBEPAVHBufC8@@KK@Z @ 109 NONAME ; class HBufC8 * RCmManager::GetBearerInfoString8L(unsigned long, unsigned long) const
-	?GetBearerInfoString8L@RCmManagerExt@@QBEPAVHBufC8@@KK@Z @ 110 NONAME ; class HBufC8 * RCmManagerExt::GetBearerInfoString8L(unsigned long, unsigned long) const
-	?GetBearerInfoStringL@CCmManagerImpl@@QBEPAVHBufC16@@KK@Z @ 111 NONAME ; class HBufC16 * CCmManagerImpl::GetBearerInfoStringL(unsigned long, unsigned long) const
-	?GetBearerInfoStringL@RCmManager@@QBEPAVHBufC16@@KK@Z @ 112 NONAME ; class HBufC16 * RCmManager::GetBearerInfoStringL(unsigned long, unsigned long) const
-	?GetBearerInfoStringL@RCmManagerExt@@QBEPAVHBufC16@@KK@Z @ 113 NONAME ; class HBufC16 * RCmManagerExt::GetBearerInfoStringL(unsigned long, unsigned long) const
-	?GetBoolAttributeL@CCmPluginBaseEng@@UBEHK@Z @ 114 NONAME ; int CCmPluginBaseEng::GetBoolAttributeL(unsigned long) const
-	?GetBoolAttributeL@RCmConnectionMethod@@QBEHK@Z @ 115 NONAME ; int RCmConnectionMethod::GetBoolAttributeL(unsigned long) const
-	?GetBoolAttributeL@RCmConnectionMethodExt@@QBEHK@Z @ 116 NONAME ; int RCmConnectionMethodExt::GetBoolAttributeL(unsigned long) const
-	?GetConnectionMethodInfoBoolL@CCmManagerImpl@@QBEHKK@Z @ 117 NONAME ; int CCmManagerImpl::GetConnectionMethodInfoBoolL(unsigned long, unsigned long) const
-	?GetConnectionMethodInfoBoolL@RCmManager@@QBEHKK@Z @ 118 NONAME ; int RCmManager::GetConnectionMethodInfoBoolL(unsigned long, unsigned long) const
-	?GetConnectionMethodInfoBoolL@RCmManagerExt@@QBEHKK@Z @ 119 NONAME ; int RCmManagerExt::GetConnectionMethodInfoBoolL(unsigned long, unsigned long) const
-	?GetConnectionMethodInfoIntL@CCmManagerImpl@@QBEKKK@Z @ 120 NONAME ; unsigned long CCmManagerImpl::GetConnectionMethodInfoIntL(unsigned long, unsigned long) const
-	?GetConnectionMethodInfoIntL@RCmManager@@QBEKKK@Z @ 121 NONAME ; unsigned long RCmManager::GetConnectionMethodInfoIntL(unsigned long, unsigned long) const
-	?GetConnectionMethodInfoIntL@RCmManagerExt@@QBEKKK@Z @ 122 NONAME ; unsigned long RCmManagerExt::GetConnectionMethodInfoIntL(unsigned long, unsigned long) const
-	?GetConnectionMethodInfoString8L@CCmManagerImpl@@QBEPAVHBufC8@@KK@Z @ 123 NONAME ; class HBufC8 * CCmManagerImpl::GetConnectionMethodInfoString8L(unsigned long, unsigned long) const
-	?GetConnectionMethodInfoString8L@RCmManager@@QBEPAVHBufC8@@KK@Z @ 124 NONAME ; class HBufC8 * RCmManager::GetConnectionMethodInfoString8L(unsigned long, unsigned long) const
-	?GetConnectionMethodInfoString8L@RCmManagerExt@@QBEPAVHBufC8@@KK@Z @ 125 NONAME ; class HBufC8 * RCmManagerExt::GetConnectionMethodInfoString8L(unsigned long, unsigned long) const
-	?GetConnectionMethodInfoStringL@CCmManagerImpl@@QBEPAVHBufC16@@KK@Z @ 126 NONAME ; class HBufC16 * CCmManagerImpl::GetConnectionMethodInfoStringL(unsigned long, unsigned long) const
-	?GetConnectionMethodInfoStringL@RCmManager@@QBEPAVHBufC16@@KK@Z @ 127 NONAME ; class HBufC16 * RCmManager::GetConnectionMethodInfoStringL(unsigned long, unsigned long) const
-	?GetConnectionMethodInfoStringL@RCmManagerExt@@QBEPAVHBufC16@@KK@Z @ 128 NONAME ; class HBufC16 * RCmManagerExt::GetConnectionMethodInfoStringL(unsigned long, unsigned long) const
-	?GetHelpContext@CmPluginBaseSettingsDlg@@UBEXAAVTCoeHelpContext@@@Z @ 129 NONAME ; void CmPluginBaseSettingsDlg::GetHelpContext(class TCoeHelpContext &) const
-	?GetIPv6DNSTypeL@CmPluginBaseSettingsDlg@@QAEHKK@Z @ 130 NONAME ; int CmPluginBaseSettingsDlg::GetIPv6DNSTypeL(unsigned long, unsigned long)
-	?GetIntAttributeL@CCmPluginBaseEng@@UBEKK@Z @ 131 NONAME ; unsigned long CCmPluginBaseEng::GetIntAttributeL(unsigned long) const
-	?GetIntAttributeL@RCmConnectionMethod@@QBEKK@Z @ 132 NONAME ; unsigned long RCmConnectionMethod::GetIntAttributeL(unsigned long) const
-	?GetIntAttributeL@RCmConnectionMethodExt@@QBEKK@Z @ 133 NONAME ; unsigned long RCmConnectionMethodExt::GetIntAttributeL(unsigned long) const
-	?GetString8AttributeL@CCmPluginBaseEng@@UBEPAVHBufC8@@K@Z @ 134 NONAME ; class HBufC8 * CCmPluginBaseEng::GetString8AttributeL(unsigned long) const
-	?GetString8AttributeL@RCmConnectionMethod@@QBEPAVHBufC8@@K@Z @ 135 NONAME ; class HBufC8 * RCmConnectionMethod::GetString8AttributeL(unsigned long) const
-	?GetString8AttributeL@RCmConnectionMethodExt@@QBEPAVHBufC8@@K@Z @ 136 NONAME ; class HBufC8 * RCmConnectionMethodExt::GetString8AttributeL(unsigned long) const
-	?GetStringAttributeL@CCmPluginBaseEng@@UBEPAVHBufC16@@K@Z @ 137 NONAME ; class HBufC16 * CCmPluginBaseEng::GetStringAttributeL(unsigned long) const
-	?GetStringAttributeL@RCmConnectionMethod@@QBEPAVHBufC16@@K@Z @ 138 NONAME ; class HBufC16 * RCmConnectionMethod::GetStringAttributeL(unsigned long) const
-	?GetStringAttributeL@RCmConnectionMethodExt@@QBEPAVHBufC16@@K@Z @ 139 NONAME ; class HBufC16 * RCmConnectionMethodExt::GetStringAttributeL(unsigned long) const
-	?GlobalBearerPriority@CCmPluginBaseEng@@IBEHABVTDesC16@@@Z @ 140 NONAME ; int CCmPluginBaseEng::GlobalBearerPriority(class TDesC16 const &) const
-	?GlobalUiBearerPriority@CCmPluginBaseEng@@IBEHABVTDesC16@@@Z @ 141 NONAME ; int CCmPluginBaseEng::GlobalUiBearerPriority(class TDesC16 const &) const
-	?HandleListBoxEventL@CmPluginBaseSettingsDlg@@MAEXPAVCEikListBox@@W4TListBoxEvent@MEikListBoxObserver@@@Z @ 142 NONAME ; void CmPluginBaseSettingsDlg::HandleListBoxEventL(class CEikListBox *, enum MEikListBoxObserver::TListBoxEvent)
-	?HandleListboxDataChangeL@CmPluginBaseSettingsDlg@@QAEXXZ @ 143 NONAME ; void CmPluginBaseSettingsDlg::HandleListboxDataChangeL(void)
-	?IAPRecordElementId@CCmPluginBaseEng@@QBEKXZ @ 144 NONAME ; unsigned long CCmPluginBaseEng::IAPRecordElementId(void) const
-	?IconL@CCmDestinationImpl@@QAEPAVCGulIcon@@XZ @ 145 NONAME ; class CGulIcon * CCmDestinationImpl::IconL(void)
-	?IconL@RCmDestination@@QBEPAVCGulIcon@@XZ @ 146 NONAME ; class CGulIcon * RCmDestination::IconL(void) const
-	?IconL@RCmDestinationExt@@QAEPAVCGulIcon@@XZ @ 147 NONAME ; class CGulIcon * RCmDestinationExt::IconL(void)
-	?Id@RCmDestination@@QBEKXZ @ 148 NONAME ; unsigned long RCmDestination::Id(void) const
-	?Id@RCmDestinationExt@@QAEKXZ @ 149 NONAME ; unsigned long RCmDestinationExt::Id(void)
-	?InitTextsL@CmPluginBaseSettingsDlg@@UAEXXZ @ 150 NONAME ; void CmPluginBaseSettingsDlg::InitTextsL(void)
-	?InitializeWithUiL@CCmPluginLanBase@@UAEHH@Z @ 151 NONAME ; int CCmPluginLanBase::InitializeWithUiL(int)
-	?IsConnectedL@CCmDestinationImpl@@QBEHXZ @ 152 NONAME ; int CCmDestinationImpl::IsConnectedL(void) const
-	?IsConnectedL@RCmDestination@@QBEHXZ @ 153 NONAME ; int RCmDestination::IsConnectedL(void) const
-	?IsConnectedL@RCmDestinationExt@@QBEHXZ @ 154 NONAME ; int RCmDestinationExt::IsConnectedL(void) const
-	?IsHidden@CCmDestinationImpl@@QAEHXZ @ 155 NONAME ; int CCmDestinationImpl::IsHidden(void)
-	?IsHidden@RCmDestination@@QBEHXZ @ 156 NONAME ; int RCmDestination::IsHidden(void) const
-	?IsHidden@RCmDestinationExt@@QAEHXZ @ 157 NONAME ; int RCmDestinationExt::IsHidden(void)
-	?IsProtected@CCmPluginBaseEng@@QBEHXZ @ 158 NONAME ; int CCmPluginBaseEng::IsProtected(void) const
-	?IsUnspecifiedIPv4Address@@YAHABVTDesC16@@@Z @ 159 NONAME ; int IsUnspecifiedIPv4Address(class TDesC16 const &)
-	?LoadL@CCmPluginBaseEng@@UAEXK@Z @ 160 NONAME ; void CCmPluginBaseEng::LoadL(unsigned long)
-	?LoadResourceL@CmPluginBaseSettingsDlg@@IAEHABVTDesC16@@@Z @ 161 NONAME ; int CmPluginBaseSettingsDlg::LoadResourceL(class TDesC16 const &)
-	?LoadServiceSettingL@CCmPluginBaseEng@@MAEXXZ @ 162 NONAME ; void CCmPluginBaseEng::LoadServiceSettingL(void)
-	?LoadServiceSettingL@CCmPluginLanBase@@UAEXXZ @ 163 NONAME ; void CCmPluginLanBase::LoadServiceSettingL(void)
-	?MetadataL@RCmDestination@@QBEKW4TSnapMetadataField@CMManager@@@Z @ 164 NONAME ; unsigned long RCmDestination::MetadataL(enum CMManager::TSnapMetadataField) const
-	?MetadataL@RCmDestinationExt@@QBEKW4TSnapMetadataField@CMManager@@@Z @ 165 NONAME ; unsigned long RCmDestinationExt::MetadataL(enum CMManager::TSnapMetadataField) const
-	?ModifyPriorityL@RCmDestinationExt@@QAEXAAVRCmConnectionMethodExt@@I@Z @ 166 NONAME ; void RCmDestinationExt::ModifyPriorityL(class RCmConnectionMethodExt &, unsigned int)
-	?MoveConnectionMethodL@RCmManagerExt@@QAEHAAVRCmDestinationExt@@0AAVRCmConnectionMethodExt@@@Z @ 167 NONAME ; int RCmManagerExt::MoveConnectionMethodL(class RCmDestinationExt &, class RCmDestinationExt &, class RCmConnectionMethodExt &)
-	?NameLC@CCmDestinationImpl@@QAEPAVHBufC16@@XZ @ 168 NONAME ; class HBufC16 * CCmDestinationImpl::NameLC(void)
-	?NameLC@RCmDestination@@QBEPAVHBufC16@@XZ @ 169 NONAME ; class HBufC16 * RCmDestination::NameLC(void) const
-	?NameLC@RCmDestinationExt@@QAEPAVHBufC16@@XZ @ 170 NONAME ; class HBufC16 * RCmDestinationExt::NameLC(void)
-	?NewL@CCmApplicationSettingsUi@@SAPAV1@XZ @ 171 NONAME ; class CCmApplicationSettingsUi * CCmApplicationSettingsUi::NewL(void)
-	?NewL@CCmApplicationSettingsUiImpl@@SAPAV1@XZ @ 172 NONAME ; class CCmApplicationSettingsUiImpl * CCmApplicationSettingsUiImpl::NewL(void)
-	?NewL@CCmConnSettingsUiImpl@@SAPAV1@PAVCCmManagerImpl@@@Z @ 173 NONAME ; class CCmConnSettingsUiImpl * CCmConnSettingsUiImpl::NewL(class CCmManagerImpl *)
-	?NewL@CCmDestinationImpl@@SAPAV1@AAVCCmManagerImpl@@ABVTDesC16@@@Z @ 174 NONAME ; class CCmDestinationImpl * CCmDestinationImpl::NewL(class CCmManagerImpl &, class TDesC16 const &)
-	?NewL@CCmDestinationImpl@@SAPAV1@AAVCCmManagerImpl@@I@Z @ 175 NONAME ; class CCmDestinationImpl * CCmDestinationImpl::NewL(class CCmManagerImpl &, unsigned int)
-	?NewL@CCmPluginMultiLineDialog@@SAPAV1@AAVTDes16@@0W4TTone@CAknQueryDialog@@@Z @ 176 NONAME ; class CCmPluginMultiLineDialog * CCmPluginMultiLineDialog::NewL(class TDes16 &, class TDes16 &, enum CAknQueryDialog::TTone)
-	?NewL@CCmSettingsUi@@SAPAV1@XZ @ 177 NONAME ; class CCmSettingsUi * CCmSettingsUi::NewL(void)
-	?NewLC@CCmApplicationSettingsUi@@SAPAV1@XZ @ 178 NONAME ; class CCmApplicationSettingsUi * CCmApplicationSettingsUi::NewLC(void)
-	?NumOfConnMethodReferencesL@CCmPluginBaseEng@@UAEHXZ @ 179 NONAME ; int CCmPluginBaseEng::NumOfConnMethodReferencesL(void)
-	?OkToExitL@CmPluginBaseSettingsDlg@@MAEHH@Z @ 180 NONAME ; int CmPluginBaseSettingsDlg::OkToExitL(int)
-	?OpenL@RCmManager@@QAEXXZ @ 181 NONAME ; void RCmManager::OpenL(void)
-	?OpenL@RCmManagerExt@@QAEXXZ @ 182 NONAME ; void RCmManagerExt::OpenL(void)
-	?OpenLC@RCmManager@@QAEXXZ @ 183 NONAME ; void RCmManager::OpenLC(void)
-	?OpenLC@RCmManagerExt@@QAEXXZ @ 184 NONAME ; void RCmManagerExt::OpenLC(void)
-	?PreLayoutDynInitL@CmPluginBaseSettingsDlg@@MAEXXZ @ 185 NONAME ; void CmPluginBaseSettingsDlg::PreLayoutDynInitL(void)
-	?PrepareToLoadRecordsL@CCmPluginBaseEng@@MAEXXZ @ 186 NONAME ; void CCmPluginBaseEng::PrepareToLoadRecordsL(void)
-	?PrepareToUpdateRecordsL@CCmPluginBaseEng@@MAEXXZ @ 187 NONAME ; void CCmPluginBaseEng::PrepareToUpdateRecordsL(void)
-	?PrepareToUpdateRecordsL@CCmPluginLanBase@@UAEXXZ @ 188 NONAME ; void CCmPluginLanBase::PrepareToUpdateRecordsL(void)
-	?PriorityL@CCmDestinationImpl@@QAEIAAVCCmPluginBaseEng@@@Z @ 189 NONAME ABSENT ; unsigned int CCmDestinationImpl::PriorityL(class CCmPluginBaseEng &)
-	?PriorityL@RCmDestination@@QBEIABVRCmConnectionMethod@@@Z @ 190 NONAME ; unsigned int RCmDestination::PriorityL(class RCmConnectionMethod const &) const
-	?PriorityL@RCmDestinationExt@@QAEIABVRCmConnectionMethodExt@@@Z @ 191 NONAME ; unsigned int RCmDestinationExt::PriorityL(class RCmConnectionMethodExt const &)
-	?ProcessCommandL@CmPluginBaseSettingsDlg@@UAEXH@Z @ 192 NONAME ; void CmPluginBaseSettingsDlg::ProcessCommandL(int)
-	?ProtectionLevel@CCmDestinationImpl@@QAE?AW4TProtectionLevel@CMManager@@XZ @ 193 NONAME ; enum CMManager::TProtectionLevel CCmDestinationImpl::ProtectionLevel(void)
-	?ProtectionLevel@RCmDestination@@QBE?AW4TProtectionLevel@CMManager@@XZ @ 194 NONAME ; enum CMManager::TProtectionLevel RCmDestination::ProtectionLevel(void) const
-	?ProtectionLevel@RCmDestinationExt@@QAE?AW4TProtectionLevel@CMManager@@XZ @ 195 NONAME ; enum CMManager::TProtectionLevel RCmDestinationExt::ProtectionLevel(void)
-	?ReadDefConnL@RCmManager@@QAEXAAUTCmDefConnValue@@@Z @ 196 NONAME ; void RCmManager::ReadDefConnL(struct TCmDefConnValue &)
-	?ReadDefConnL@RCmManagerExt@@QAEXAAUTCmDefConnValue@@@Z @ 197 NONAME ; void RCmManagerExt::ReadDefConnL(struct TCmDefConnValue &)
-	?ReadOnlyAttributeL@@YAHPAVCCmPluginBaseEng@@KPBX@Z @ 198 NONAME ; int ReadOnlyAttributeL(class CCmPluginBaseEng *, unsigned long, void const *)
-	?RemoveAllReferencesL@RCmManagerExt@@QAEXAAVRCmConnectionMethodExt@@@Z @ 199 NONAME ; void RCmManagerExt::RemoveAllReferencesL(class RCmConnectionMethodExt &)
-	?RemoveCommonConversionTable@CCmPluginBaseEng@@IAEXPBUTCmCommonAttrConvArrayItem@@@Z @ 200 NONAME ; void CCmPluginBaseEng::RemoveCommonConversionTable(struct TCmCommonAttrConvArrayItem const *)
-	?RemoveConnectionMethodL@RCmDestinationExt@@QAEXVRCmConnectionMethodExt@@@Z @ 201 NONAME ; void RCmDestinationExt::RemoveConnectionMethodL(class RCmConnectionMethodExt)
-	?RemoveConnectionMethodL@RCmManagerExt@@QAEXAAVRCmDestinationExt@@AAVRCmConnectionMethodExt@@@Z @ 202 NONAME ; void RCmManagerExt::RemoveConnectionMethodL(class RCmDestinationExt &, class RCmConnectionMethodExt &)
-	?RemoveConversionTable@CCmPluginBaseEng@@IAEXPBUTCmAttribConvTable@@@Z @ 203 NONAME ; void CCmPluginBaseEng::RemoveConversionTable(struct TCmAttribConvTable const *)
-	?RemoveFromPool@CCmDestinationImpl@@QAEXXZ @ 204 NONAME ; void CCmDestinationImpl::RemoveFromPool(void)
-	?RemoveResourceFile@CCmPluginBaseEng@@IAEXABVTDesC16@@@Z @ 205 NONAME ; void CCmPluginBaseEng::RemoveResourceFile(class TDesC16 const &)
-	?Reset@CCmPluginBaseEng@@IAEXXZ @ 206 NONAME ; void CCmPluginBaseEng::Reset(void)
-	?RestoreAttributeL@CCmPluginBaseEng@@UAEXK@Z @ 207 NONAME ; void CCmPluginBaseEng::RestoreAttributeL(unsigned long)
-	?RunAdvancedSettingsL@CmPluginBaseSettingsDlgAdv@@UAEXXZ @ 208 NONAME ; void CmPluginBaseSettingsDlgAdv::RunAdvancedSettingsL(void)
-	?RunAdvancedSettingsL@CmPluginBaseSettingsDlgIp@@UAEXXZ @ 209 NONAME ; void CmPluginBaseSettingsDlgIp::RunAdvancedSettingsL(void)
-	?RunApplicationSettingsL@CCmApplicationSettingsUi@@QAEHAAUTCmSettingSelection@@@Z @ 210 NONAME ; int CCmApplicationSettingsUi::RunApplicationSettingsL(struct TCmSettingSelection &)
-	?RunApplicationSettingsL@CCmApplicationSettingsUi@@QAEHAAUTCmSettingSelection@@IAAV?$RArray@K@@@Z @ 211 NONAME ; int CCmApplicationSettingsUi::RunApplicationSettingsL(struct TCmSettingSelection &, unsigned int, class RArray<unsigned long> &)
-	?RunApplicationSettingsL@CCmApplicationSettingsUiImpl@@QAEHAAUTCmSettingSelection@@@Z @ 212 NONAME ; int CCmApplicationSettingsUiImpl::RunApplicationSettingsL(struct TCmSettingSelection &)
-	?RunApplicationSettingsL@CCmConnSettingsUiImpl@@QAEHAAUTCmSettingSelection@@IAAV?$RArray@K@@@Z @ 213 NONAME ; int CCmConnSettingsUiImpl::RunApplicationSettingsL(struct TCmSettingSelection &, unsigned int, class RArray<unsigned long> &)
-	?RunSettingsL@CCmPluginLanBase@@UAEHXZ @ 214 NONAME ; int CCmPluginLanBase::RunSettingsL(void)
-	?RunSettingsL@CCmSettingsUi@@QAE?AW4TResult@1@XZ @ 215 NONAME ; enum CCmSettingsUi::TResult CCmSettingsUi::RunSettingsL(void)
-	?SelectDestinationDlgL@CCmSettingsUi@@QAEHAAK@Z @ 216 NONAME ; int CCmSettingsUi::SelectDestinationDlgL(unsigned long &)
-	?SelectItem@CmPluginBaseSettingsDlg@@IAEXH@Z @ 217 NONAME ; void CmPluginBaseSettingsDlg::SelectItem(int)
-	?ServiceRecord@CCmPluginLanBase@@ABEAAVCCDLANServiceRecord@CommsDat@@XZ @ 218 NONAME ; class CommsDat::CCDLANServiceRecord & CCmPluginLanBase::ServiceRecord(void) const
-	?ServiceRecordIdLC@CCmPluginLanBase@@MAEXAAPAVHBufC16@@AAK@Z @ 219 NONAME ; void CCmPluginLanBase::ServiceRecordIdLC(class HBufC16 * &, unsigned long &)
-	?Session@CCmPluginBaseEng@@QBEAAVCMDBSession@CommsDat@@XZ @ 220 NONAME ; class CommsDat::CMDBSession & CCmPluginBaseEng::Session(void) const
-	?SetBoolAttributeL@CCmPluginBaseEng@@UAEXKH@Z @ 221 NONAME ; void CCmPluginBaseEng::SetBoolAttributeL(unsigned long, int)
-	?SetBoolAttributeL@RCmConnectionMethodExt@@QAEXKH@Z @ 222 NONAME ; void RCmConnectionMethodExt::SetBoolAttributeL(unsigned long, int)
-	?SetDNSServerAddressL@CCmPluginBaseEng@@QAEXKABVTDesC16@@K0KH@Z @ 223 NONAME ; void CCmPluginBaseEng::SetDNSServerAddressL(unsigned long, class TDesC16 const &, unsigned long, class TDesC16 const &, unsigned long, int)
-	?SetHiddenL@CCmDestinationImpl@@QAEXH@Z @ 224 NONAME ; void CCmDestinationImpl::SetHiddenL(int)
-	?SetHiddenL@RCmDestinationExt@@QAEXH@Z @ 225 NONAME ; void RCmDestinationExt::SetHiddenL(int)
-	?SetIconL@CCmDestinationImpl@@QAEXK@Z @ 226 NONAME ; void CCmDestinationImpl::SetIconL(unsigned long)
-	?SetIconL@RCmDestinationExt@@QAEXK@Z @ 227 NONAME ; void RCmDestinationExt::SetIconL(unsigned long)
-	?SetIntAttributeL@CCmPluginBaseEng@@UAEXKK@Z @ 228 NONAME ; void CCmPluginBaseEng::SetIntAttributeL(unsigned long, unsigned long)
-	?SetIntAttributeL@RCmConnectionMethodExt@@QAEXKK@Z @ 229 NONAME ; void RCmConnectionMethodExt::SetIntAttributeL(unsigned long, unsigned long)
-	?SetMetadataL@RCmDestinationExt@@QAEXW4TSnapMetadataField@CMManager@@K@Z @ 230 NONAME ; void RCmDestinationExt::SetMetadataL(enum CMManager::TSnapMetadataField, unsigned long)
-	?SetNameL@CCmDestinationImpl@@QAEXABVTDesC16@@@Z @ 231 NONAME ; void CCmDestinationImpl::SetNameL(class TDesC16 const &)
-	?SetNameL@RCmDestinationExt@@QAEXABVTDesC16@@@Z @ 232 NONAME ; void RCmDestinationExt::SetNameL(class TDesC16 const &)
-	?SetProtectionL@CCmDestinationImpl@@QAEXW4TProtectionLevel@CMManager@@@Z @ 233 NONAME ; void CCmDestinationImpl::SetProtectionL(enum CMManager::TProtectionLevel)
-	?SetProtectionL@RCmDestinationExt@@QAEXW4TProtectionLevel@CMManager@@@Z @ 234 NONAME ; void RCmDestinationExt::SetProtectionL(enum CMManager::TProtectionLevel)
-	?SetProxyServerNameL@@YAHPAVCCmPluginBaseEng@@KPBX@Z @ 235 NONAME ; int SetProxyServerNameL(class CCmPluginBaseEng *, unsigned long, void const *)
-	?SetString8AttributeL@CCmPluginBaseEng@@UAEXKABVTDesC8@@@Z @ 236 NONAME ; void CCmPluginBaseEng::SetString8AttributeL(unsigned long, class TDesC8 const &)
-	?SetString8AttributeL@RCmConnectionMethodExt@@QAEXKABVTDesC8@@@Z @ 237 NONAME ; void RCmConnectionMethodExt::SetString8AttributeL(unsigned long, class TDesC8 const &)
-	?SetStringAttributeL@CCmPluginBaseEng@@UAEXKABVTDesC16@@@Z @ 238 NONAME ; void CCmPluginBaseEng::SetStringAttributeL(unsigned long, class TDesC16 const &)
-	?SetStringAttributeL@RCmConnectionMethodExt@@QAEXKABVTDesC16@@@Z @ 239 NONAME ; void RCmConnectionMethodExt::SetStringAttributeL(unsigned long, class TDesC16 const &)
-	?ShowConfirmationQueryL@TCmCommonUi@@SAHH@Z @ 240 NONAME ; int TCmCommonUi::ShowConfirmationQueryL(int)
-	?ShowConfirmationQueryL@TCmCommonUi@@SAHHABVTDesC16@@@Z @ 241 NONAME ; int TCmCommonUi::ShowConfirmationQueryL(int, class TDesC16 const &)
-	?ShowConfirmationQueryWithInputL@TCmCommonUi@@SAHHAAVTDes16@@@Z @ 242 NONAME ; int TCmCommonUi::ShowConfirmationQueryWithInputL(int, class TDes16 &)
-	?ShowNoteL@TCmCommonUi@@SAHABVTDesC16@@W4TCmNoteType@1@@Z @ 243 NONAME ; int TCmCommonUi::ShowNoteL(class TDesC16 const &, enum TCmCommonUi::TCmNoteType)
-	?ShowNoteL@TCmCommonUi@@SAHHABVTDesC16@@W4TCmNoteType@1@@Z @ 244 NONAME ; int TCmCommonUi::ShowNoteL(int, class TDesC16 const &, enum TCmCommonUi::TCmNoteType)
-	?ShowNoteL@TCmCommonUi@@SAHHW4TCmNoteType@1@@Z @ 245 NONAME ; int TCmCommonUi::ShowNoteL(int, enum TCmCommonUi::TCmNoteType)
-	?ShowPopupIPv4DNSEditorL@CmPluginBaseSettingsDlg@@QAEHKKKK@Z @ 246 NONAME ; int CmPluginBaseSettingsDlg::ShowPopupIPv4DNSEditorL(unsigned long, unsigned long, unsigned long, unsigned long)
-	?ShowPopupIPv6DNSEditorL@CmPluginBaseSettingsDlg@@QAEHPBKKKK@Z @ 247 NONAME ; int CmPluginBaseSettingsDlg::ShowPopupIPv6DNSEditorL(unsigned long const *, unsigned long, unsigned long, unsigned long)
-	?ShowPopupIpSettingPageL@CmPluginBaseSettingsDlg@@QAEHKK@Z @ 248 NONAME ; int CmPluginBaseSettingsDlg::ShowPopupIpSettingPageL(unsigned long, unsigned long)
-	?ShowPopupListL@TCmCommonUi@@SAHABVTDesC16@@PAVCDesC16ArrayFlat@@PAV?$CArrayPtr@VCGulIcon@@@@IAAH@Z @ 249 NONAME ; int TCmCommonUi::ShowPopupListL(class TDesC16 const &, class CDesC16ArrayFlat *, class CArrayPtr<class CGulIcon> *, unsigned int, int &)
-	?ShowPopupPasswordSettingPageL@CmPluginBaseSettingsDlg@@QAEHKK@Z @ 250 NONAME ; int CmPluginBaseSettingsDlg::ShowPopupPasswordSettingPageL(unsigned long, unsigned long)
-	?ShowPopupPortNumSettingPageL@CmPluginBaseSettingsDlg@@QAEHKK@Z @ 251 NONAME ; int CmPluginBaseSettingsDlg::ShowPopupPortNumSettingPageL(unsigned long, unsigned long)
-	?ShowPopupSettingPageL@CmPluginBaseSettingsDlg@@MAEHKH@Z @ 252 NONAME ; int CmPluginBaseSettingsDlg::ShowPopupSettingPageL(unsigned long, int)
-	?ShowPopupSettingPageL@CmPluginBaseSettingsDlgAdv@@MAEHHH@Z @ 253 NONAME ; int CmPluginBaseSettingsDlgAdv::ShowPopupSettingPageL(int, int)
-	?ShowPopupTextSettingPageL@CmPluginBaseSettingsDlg@@QAEHKK@Z @ 254 NONAME ; int CmPluginBaseSettingsDlg::ShowPopupTextSettingPageL(unsigned long, unsigned long)
-	?ShowRadioButtonSettingPageL@CmPluginBaseSettingsDlg@@QAEHAAVCDesC16ArrayFlat@@AAHK@Z @ 255 NONAME ; int CmPluginBaseSettingsDlg::ShowRadioButtonSettingPageL(class CDesC16ArrayFlat &, int &, unsigned long)
-	?ShowRadioButtonSettingPageL@CmPluginBaseSettingsDlg@@QAEHPBKAAHK@Z @ 256 NONAME ; int CmPluginBaseSettingsDlg::ShowRadioButtonSettingPageL(unsigned long const *, int &, unsigned long)
-	?StringAttributeWithDefaultL@CmPluginBaseSettingsDlg@@IAEPAVHBufC16@@KK@Z @ 257 NONAME ; class HBufC16 * CmPluginBaseSettingsDlg::StringAttributeWithDefaultL(unsigned long, unsigned long)
-	?SupportedBearersL@RCmManagerExt@@QBEXAAV?$RArray@K@@@Z @ 258 NONAME ; void RCmManagerExt::SupportedBearersL(class RArray<unsigned long> &) const
-	?UncategorizedIconL@RCmManagerExt@@QBEPAVCGulIcon@@XZ @ 259 NONAME ; class CGulIcon * RCmManagerExt::UncategorizedIconL(void) const
-	?UpdateBearerPriorityArrayL@RCmManagerExt@@QAEXABV?$RArray@VTBearerPriority@@@@@Z @ 260 NONAME ; void RCmManagerExt::UpdateBearerPriorityArrayL(class RArray<class TBearerPriority> const &)
-	?UpdateL@CCmDestinationImpl@@QAEXXZ @ 261 NONAME ; void CCmDestinationImpl::UpdateL(void)
-	?UpdateL@CCmPluginBaseEng@@UAEXXZ @ 262 NONAME ; void CCmPluginBaseEng::UpdateL(void)
-	?UpdateL@RCmConnectionMethodExt@@QAEXXZ @ 263 NONAME ; void RCmConnectionMethodExt::UpdateL(void)
-	?UpdateL@RCmDestinationExt@@QAEXXZ @ 264 NONAME ; void RCmDestinationExt::UpdateL(void)
-	?UpdateListBoxContentL@CmPluginBaseSettingsDlg@@MAEXXZ @ 265 NONAME ; void CmPluginBaseSettingsDlg::UpdateListBoxContentL(void)
-	?UpdateListBoxContentL@CmPluginBaseSettingsDlgAdv@@MAEXXZ @ 266 NONAME ; void CmPluginBaseSettingsDlgAdv::UpdateListBoxContentL(void)
-	?UpdateListBoxContentL@CmPluginBaseSettingsDlgIp@@MAEXXZ @ 267 NONAME ; void CmPluginBaseSettingsDlgIp::UpdateListBoxContentL(void)
-	?UpdateProxyRecordL@CCmPluginBaseEng@@AAEXXZ @ 268 NONAME ABSENT ; void CCmPluginBaseEng::UpdateProxyRecordL(void)
-	?UpdateServiceRecordL@CCmPluginBaseEng@@MAEXXZ @ 269 NONAME ; void CCmPluginBaseEng::UpdateServiceRecordL(void)
-	?WriteDefConnL@RCmManagerExt@@QAEXABUTCmDefConnValue@@@Z @ 270 NONAME ; void RCmManagerExt::WriteDefConnL(struct TCmDefConnValue const &)
-	??0RCmDestination@@QAE@XZ @ 271 NONAME ; RCmDestination::RCmDestination(void)
-	??0RCmDestinationExt@@QAE@XZ @ 272 NONAME ; RCmDestinationExt::RCmDestinationExt(void)
-	??8RCmDestination@@QBEHABV0@@Z @ 273 NONAME ; int RCmDestination::operator==(class RCmDestination const &) const
-	??8RCmDestinationExt@@QBEHABV0@@Z @ 274 NONAME ; int RCmDestinationExt::operator==(class RCmDestinationExt const &) const
-	??9RCmDestination@@QBEHABV0@@Z @ 275 NONAME ; int RCmDestination::operator!=(class RCmDestination const &) const
-	??9RCmDestinationExt@@QBEHABV0@@Z @ 276 NONAME ; int RCmDestinationExt::operator!=(class RCmDestinationExt const &) const
-	??0CCmPluginBase@@QAE@PAVCCmPluginBaseEng@@@Z @ 277 NONAME ; CCmPluginBase::CCmPluginBase(class CCmPluginBaseEng *)
-	??1CCmPluginBase@@UAE@XZ @ 278 NONAME ; CCmPluginBase::~CCmPluginBase(void)
-	?AddResourceFileL@CCmPluginBase@@IAEXABVTDesC16@@@Z @ 279 NONAME ; void CCmPluginBase::AddResourceFileL(class TDesC16 const &)
-	?AllocReadL@CCmPluginBase@@IBEPAVHBufC16@@H@Z @ 280 NONAME ; class HBufC16 * CCmPluginBase::AllocReadL(int) const
-	?CmMgr@CCmPluginBase@@QBEAAVCCmManagerImpl@@XZ @ 281 NONAME ; class CCmManagerImpl & CCmPluginBase::CmMgr(void) const
-	?ConstructL@CCmPluginBase@@IAEXXZ @ 282 NONAME ; void CCmPluginBase::ConstructL(void)
-	?CreateCopyL@CCmPluginBase@@QBEPAV1@XZ @ 283 NONAME ; class CCmPluginBase * CCmPluginBase::CreateCopyL(void) const
-	?CreateNewL@CCmPluginBase@@QAEXXZ @ 284 NONAME ; void CCmPluginBase::CreateNewL(void)
-	?DeleteL@CCmPluginBase@@QAEHHH@Z @ 285 NONAME ; int CCmPluginBase::DeleteL(int, int)
-	?Destination@CCmPluginBase@@QBEPAVCCmDestinationImpl@@XZ @ 286 NONAME ; class CCmDestinationImpl * CCmPluginBase::Destination(void) const
-	?EnableChargeCardL@CCmPluginBase@@AAEXH@Z @ 287 NONAME ; void CCmPluginBase::EnableChargeCardL(int)
-	?EnableLocationL@CCmPluginBase@@AAEXH@Z @ 288 NONAME ; void CCmPluginBase::EnableLocationL(int)
-	?EnableProxyL@CCmPluginBase@@AAEXH@Z @ 289 NONAME ; void CCmPluginBase::EnableProxyL(int)
-	?GetBoolAttributeL@CCmPluginBase@@QBEHK@Z @ 290 NONAME ; int CCmPluginBase::GetBoolAttributeL(unsigned long) const
-	?GetConnectionMethodL@CCmDestinationImpl@@QAEPAVCCmPluginBase@@H@Z @ 291 NONAME ; class CCmPluginBase * CCmDestinationImpl::GetConnectionMethodL(int)
-	?GetConnectionMethodL@CCmManagerImpl@@QAEPAVCCmPluginBase@@K@Z @ 292 NONAME ; class CCmPluginBase * CCmManagerImpl::GetConnectionMethodL(unsigned long)
-	?GetIntAttributeL@CCmPluginBase@@QBEKK@Z @ 293 NONAME ; unsigned long CCmPluginBase::GetIntAttributeL(unsigned long) const
-	?GetString8AttributeL@CCmPluginBase@@QBEPAVHBufC8@@K@Z @ 294 NONAME ; class HBufC8 * CCmPluginBase::GetString8AttributeL(unsigned long) const
-	?GetStringAttributeL@CCmPluginBase@@QBEPAVHBufC16@@K@Z @ 295 NONAME ; class HBufC16 * CCmPluginBase::GetStringAttributeL(unsigned long) const
-	?IAPRecordElementId@CCmPluginBase@@QBEKXZ @ 296 NONAME ; unsigned long CCmPluginBase::IAPRecordElementId(void) const
-	?LoadL@CCmPluginBase@@QAEXK@Z @ 297 NONAME ; void CCmPluginBase::LoadL(unsigned long)
-	?LoadServiceSettingL@CCmPluginBase@@IAEXXZ @ 298 NONAME ; void CCmPluginBase::LoadServiceSettingL(void)
-	?NumOfConnMethodReferencesL@CCmPluginBase@@QAEHXZ @ 299 NONAME ; int CCmPluginBase::NumOfConnMethodReferencesL(void)
-	?ParentDestination@CCmPluginBase@@QBEPAVCCmDestinationImpl@@XZ @ 300 NONAME ; class CCmDestinationImpl * CCmPluginBase::ParentDestination(void) const
-	?Plugin@CCmPluginBase@@QBEPAVCCmPluginBaseEng@@XZ @ 301 NONAME ; class CCmPluginBaseEng * CCmPluginBase::Plugin(void) const
-	?PrepareToLoadRecordsL@CCmPluginBase@@IAEXXZ @ 302 NONAME ; void CCmPluginBase::PrepareToLoadRecordsL(void)
-	?PrepareToUpdateRecordsL@CCmPluginBase@@IAEXXZ @ 303 NONAME ; void CCmPluginBase::PrepareToUpdateRecordsL(void)
-	?RemoveResourceFile@CCmPluginBase@@IAEXABVTDesC16@@@Z @ 304 NONAME ; void CCmPluginBase::RemoveResourceFile(class TDesC16 const &)
-	?RestoreAttributeL@CCmPluginBase@@QAEXK@Z @ 305 NONAME ; void CCmPluginBase::RestoreAttributeL(unsigned long)
-	?Session@CCmPluginBase@@QBEAAVCMDBSession@CommsDat@@XZ @ 306 NONAME ; class CommsDat::CMDBSession & CCmPluginBase::Session(void) const
-	?SetBoolAttributeL@CCmPluginBase@@QAEXKH@Z @ 307 NONAME ; void CCmPluginBase::SetBoolAttributeL(unsigned long, int)
-	?SetIntAttributeL@CCmPluginBase@@QAEXKK@Z @ 308 NONAME ; void CCmPluginBase::SetIntAttributeL(unsigned long, unsigned long)
-	?SetString8AttributeL@CCmPluginBase@@QAEXKABVTDesC8@@@Z @ 309 NONAME ; void CCmPluginBase::SetString8AttributeL(unsigned long, class TDesC8 const &)
-	?SetStringAttributeL@CCmPluginBase@@QAEXKABVTDesC16@@@Z @ 310 NONAME ; void CCmPluginBase::SetStringAttributeL(unsigned long, class TDesC16 const &)
-	?UpdateL@CCmPluginBase@@QAEXXZ @ 311 NONAME ; void CCmPluginBase::UpdateL(void)
-	?UpdateProxyRecordL@CCmPluginBase@@AAEXXZ @ 312 NONAME ; void CCmPluginBase::UpdateProxyRecordL(void)
-	?UpdateServiceRecordL@CCmPluginBase@@IAEXXZ @ 313 NONAME ; void CCmPluginBase::UpdateServiceRecordL(void)
-	??0RCmConnectionMethod@@QAE@XZ @ 314 NONAME ; RCmConnectionMethod::RCmConnectionMethod(void)
-	??0RCmConnectionMethodExt@@QAE@XZ @ 315 NONAME ; RCmConnectionMethodExt::RCmConnectionMethodExt(void)
-	??4RCmConnectionMethod@@QAEAAV0@ABV0@@Z @ 316 NONAME ; class RCmConnectionMethod & RCmConnectionMethod::operator=(class RCmConnectionMethod const &)
-	??4RCmConnectionMethodExt@@QAEAAV0@ABV0@@Z @ 317 NONAME ; class RCmConnectionMethodExt & RCmConnectionMethodExt::operator=(class RCmConnectionMethodExt const &)
-	??8RCmConnectionMethod@@QBEHAAV0@@Z @ 318 NONAME ; int RCmConnectionMethod::operator==(class RCmConnectionMethod &) const
-	??8RCmConnectionMethodExt@@QBEHAAV0@@Z @ 319 NONAME ; int RCmConnectionMethodExt::operator==(class RCmConnectionMethodExt &) const
-	??9RCmConnectionMethod@@QBEHAAV0@@Z @ 320 NONAME ; int RCmConnectionMethod::operator!=(class RCmConnectionMethod &) const
-	??9RCmConnectionMethodExt@@QBEHAAV0@@Z @ 321 NONAME ; int RCmConnectionMethodExt::operator!=(class RCmConnectionMethodExt &) const
-	??1RCmConnectionMethod@@QAE@XZ @ 322 NONAME ; RCmConnectionMethod::~RCmConnectionMethod(void)
-	??1RCmConnectionMethodExt@@QAE@XZ @ 323 NONAME ; RCmConnectionMethodExt::~RCmConnectionMethodExt(void)
-	?ClearDestinationArrayToUse@CCmConnSettingsUiImpl@@QAEXXZ @ 324 NONAME ; void CCmConnSettingsUiImpl::ClearDestinationArrayToUse(void)
-	?SetDestinationArrayToUseL@CCmConnSettingsUiImpl@@QAEXV?$RArray@K@@@Z @ 325 NONAME ; void CCmConnSettingsUiImpl::SetDestinationArrayToUseL(class RArray<unsigned long>)
-	?GetAdditionalUids@CCmPluginBase@@QAEXAAV?$RArray@K@@@Z @ 326 NONAME ; void CCmPluginBase::GetAdditionalUids(class RArray<unsigned long> &)
-	?GetAdditionalUids@CCmPluginBaseEng@@UAEXAAV?$RArray@K@@@Z @ 327 NONAME ; void CCmPluginBaseEng::GetAdditionalUids(class RArray<unsigned long> &)
-	?WrapCmManager@CCmManagerImpl@@QAEXAAVRCmManagerExt@@@Z @ 328 NONAME ; void CCmManagerImpl::WrapCmManager(class RCmManagerExt &)
-	?CombineArraysForPriorityOrderL@CCmManagerImpl@@AAEXAAV?$RPointerArray@VCCmPluginBase@@@@0@Z @ 329 NONAME ; void CCmManagerImpl::CombineArraysForPriorityOrderL(class RPointerArray<class CCmPluginBase> &, class RPointerArray<class CCmPluginBase> &)
-	?CreateFlatCMListL@CCmManagerImpl@@QAEXKAAV?$RPointerArray@VCCmPluginBase@@@@@Z @ 330 NONAME ; void CCmManagerImpl::CreateFlatCMListL(unsigned long, class RPointerArray<class CCmPluginBase> &)
-	?FilterOutVirtualsL@CCmManagerImpl@@QAEXAAV?$RPointerArray@VCCmPluginBase@@@@@Z @ 331 NONAME ; void CCmManagerImpl::FilterOutVirtualsL(class RPointerArray<class CCmPluginBase> &)
-	?CreateFlatCMListLC@CCmManagerImpl@@QAEXKAAV?$RPointerArray@VCCmPluginBase@@@@@Z @ 332 NONAME ; void CCmManagerImpl::CreateFlatCMListLC(unsigned long, class RPointerArray<class CCmPluginBase> &)
-	??0RCmConnectionMethod@@QAE@ABV0@@Z @ 333 NONAME ; RCmConnectionMethod::RCmConnectionMethod(class RCmConnectionMethod const &)
-	??0RCmConnectionMethodExt@@QAE@ABV0@@Z @ 334 NONAME ; RCmConnectionMethodExt::RCmConnectionMethodExt(class RCmConnectionMethodExt const &)
-	?IsLinkedToIap@CCmPluginBase@@QAEHK@Z @ 335 NONAME ; int CCmPluginBase::IsLinkedToIap(unsigned long)
-	?IsLinkedToSnap@CCmPluginBase@@QAEHK@Z @ 336 NONAME ; int CCmPluginBase::IsLinkedToSnap(unsigned long)
-	?ParentDestination@CCmPluginBaseEng@@QBEPAVCCmDestinationImpl@@XZ @ 337 NONAME ; class CCmDestinationImpl * CCmPluginBaseEng::ParentDestination(void) const
-	?CreateTablesAndOpenL@RCmManagerExt@@QAEXXZ @ 338 NONAME ; void RCmManagerExt::CreateTablesAndOpenL(void)
-	?CreateConnectionMethodL@RCmDestinationExt@@QAE?AVRCmConnectionMethodExt@@KK@Z @ 339 NONAME ; class RCmConnectionMethodExt RCmDestinationExt::CreateConnectionMethodL(unsigned long, unsigned long)
-	?CreateConnectionMethodL@RCmManagerExt@@QAE?AVRCmConnectionMethodExt@@KK@Z @ 340 NONAME ; class RCmConnectionMethodExt RCmManagerExt::CreateConnectionMethodL(unsigned long, unsigned long)
-	?CreateDestinationL@RCmManagerExt@@QAE?AVRCmDestinationExt@@ABVTDesC16@@K@Z @ 341 NONAME ; class RCmDestinationExt RCmManagerExt::CreateDestinationL(class TDesC16 const &, unsigned long)
-	?SetPreDefinedId@CCmPluginBaseEng@@QAEXK@Z @ 342 NONAME ; void CCmPluginBaseEng::SetPreDefinedId(unsigned long)
-	?HandleResourceChange@CmPluginBaseSettingsDlg@@UAEXH@Z @ 343 NONAME ; void CmPluginBaseSettingsDlg::HandleResourceChange(int)
-	?Execute@CmPluginBaseSettingsDlg@@UAEXXZ @ 344 NONAME ; void CmPluginBaseSettingsDlg::Execute(void)
-	?CheckSpaceBelowCriticalLevelL@CCmPluginBaseEng@@QBEHXZ @ 345 NONAME ; int CCmPluginBaseEng::CheckSpaceBelowCriticalLevelL(void) const
-	?HandleLeaveError@CmPluginBaseSettingsDlg@@UAEXH@Z @ 346 NONAME ; void CmPluginBaseSettingsDlg::HandleLeaveError(int)
-	?AddConnectionMethodL@RCmDestination@@QAEHVRCmConnectionMethod@@@Z @ 347 NONAME ; int RCmDestination::AddConnectionMethodL(class RCmConnectionMethod)
-	?AddEmbeddedDestinationL@RCmDestination@@QAEHABV1@@Z @ 348 NONAME ; int RCmDestination::AddEmbeddedDestinationL(class RCmDestination const &)
-	?CopyConnectionMethodL@RCmManager@@QAEHAAVRCmDestination@@AAVRCmConnectionMethod@@@Z @ 349 NONAME ; int RCmManager::CopyConnectionMethodL(class RCmDestination &, class RCmConnectionMethod &)
-	?CreateConnectionMethodL@RCmDestination@@QAE?AVRCmConnectionMethod@@K@Z @ 350 NONAME ; class RCmConnectionMethod RCmDestination::CreateConnectionMethodL(unsigned long)
-	?CreateConnectionMethodL@RCmDestination@@QAE?AVRCmConnectionMethod@@KK@Z @ 351 NONAME ; class RCmConnectionMethod RCmDestination::CreateConnectionMethodL(unsigned long, unsigned long)
-	?CreateConnectionMethodL@RCmManager@@QAE?AVRCmConnectionMethod@@K@Z @ 352 NONAME ; class RCmConnectionMethod RCmManager::CreateConnectionMethodL(unsigned long)
-	?CreateConnectionMethodL@RCmManager@@QAE?AVRCmConnectionMethod@@KK@Z @ 353 NONAME ; class RCmConnectionMethod RCmManager::CreateConnectionMethodL(unsigned long, unsigned long)
-	?CreateCopyL@RCmConnectionMethod@@QAE?AV1@XZ @ 354 NONAME ; class RCmConnectionMethod RCmConnectionMethod::CreateCopyL(void)
-	?CreateDestinationL@RCmManager@@QAE?AVRCmDestination@@ABVTDesC16@@@Z @ 355 NONAME ; class RCmDestination RCmManager::CreateDestinationL(class TDesC16 const &)
-	?CreateDestinationL@RCmManager@@QAE?AVRCmDestination@@ABVTDesC16@@K@Z @ 356 NONAME ; class RCmDestination RCmManager::CreateDestinationL(class TDesC16 const &, unsigned long)
-	?CreateTablesAndOpenL@RCmManager@@QAEXXZ @ 357 NONAME ; void RCmManager::CreateTablesAndOpenL(void)
-	?DeleteConnectionMethodL@RCmDestination@@QAEXAAVRCmConnectionMethod@@@Z @ 358 NONAME ; void RCmDestination::DeleteConnectionMethodL(class RCmConnectionMethod &)
-	?DeleteL@RCmConnectionMethod@@QAEHXZ @ 359 NONAME ; int RCmConnectionMethod::DeleteL(void)
-	?DeleteLD@RCmDestination@@QAEXXZ @ 360 NONAME ; void RCmDestination::DeleteLD(void)
-	?ModifyPriorityL@RCmDestination@@QAEXAAVRCmConnectionMethod@@I@Z @ 361 NONAME ; void RCmDestination::ModifyPriorityL(class RCmConnectionMethod &, unsigned int)
-	?MoveConnectionMethodL@RCmManager@@QAEHAAVRCmDestination@@0AAVRCmConnectionMethod@@@Z @ 362 NONAME ; int RCmManager::MoveConnectionMethodL(class RCmDestination &, class RCmDestination &, class RCmConnectionMethod &)
-	?RemoveAllReferencesL@RCmManager@@QAEXAAVRCmConnectionMethod@@@Z @ 363 NONAME ; void RCmManager::RemoveAllReferencesL(class RCmConnectionMethod &)
-	?RemoveConnectionMethodL@RCmDestination@@QAEXVRCmConnectionMethod@@@Z @ 364 NONAME ; void RCmDestination::RemoveConnectionMethodL(class RCmConnectionMethod)
-	?RemoveConnectionMethodL@RCmManager@@QAEXAAVRCmDestination@@AAVRCmConnectionMethod@@@Z @ 365 NONAME ; void RCmManager::RemoveConnectionMethodL(class RCmDestination &, class RCmConnectionMethod &)
-	?SetBoolAttributeL@RCmConnectionMethod@@QAEXKH@Z @ 366 NONAME ; void RCmConnectionMethod::SetBoolAttributeL(unsigned long, int)
-	?SetHiddenL@RCmDestination@@QAEXH@Z @ 367 NONAME ; void RCmDestination::SetHiddenL(int)
-	?SetIconL@RCmDestination@@QAEXK@Z @ 368 NONAME ; void RCmDestination::SetIconL(unsigned long)
-	?SetIntAttributeL@RCmConnectionMethod@@QAEXKK@Z @ 369 NONAME ; void RCmConnectionMethod::SetIntAttributeL(unsigned long, unsigned long)
-	?SetMetadataL@RCmDestination@@QAEXW4TSnapMetadataField@CMManager@@K@Z @ 370 NONAME ; void RCmDestination::SetMetadataL(enum CMManager::TSnapMetadataField, unsigned long)
-	?SetNameL@RCmDestination@@QAEXABVTDesC16@@@Z @ 371 NONAME ; void RCmDestination::SetNameL(class TDesC16 const &)
-	?SetProtectionL@RCmDestination@@QAEXW4TProtectionLevel@CMManager@@@Z @ 372 NONAME ; void RCmDestination::SetProtectionL(enum CMManager::TProtectionLevel)
-	?SetString8AttributeL@RCmConnectionMethod@@QAEXKABVTDesC8@@@Z @ 373 NONAME ; void RCmConnectionMethod::SetString8AttributeL(unsigned long, class TDesC8 const &)
-	?SetStringAttributeL@RCmConnectionMethod@@QAEXKABVTDesC16@@@Z @ 374 NONAME ; void RCmConnectionMethod::SetStringAttributeL(unsigned long, class TDesC16 const &)
-	?SupportedBearersL@RCmManager@@QBEXAAV?$RArray@K@@@Z @ 375 NONAME ; void RCmManager::SupportedBearersL(class RArray<unsigned long> &) const
-	?UncategorizedIconL@RCmManager@@QBEPAVCGulIcon@@XZ @ 376 NONAME ; class CGulIcon * RCmManager::UncategorizedIconL(void) const
-	?UpdateBearerPriorityArrayL@RCmManager@@QAEXABV?$RArray@VTBearerPriority@@@@@Z @ 377 NONAME ; void RCmManager::UpdateBearerPriorityArrayL(class RArray<class TBearerPriority> const &)
-	?UpdateL@RCmConnectionMethod@@QAEXXZ @ 378 NONAME ; void RCmConnectionMethod::UpdateL(void)
-	?UpdateL@RCmDestination@@QAEXXZ @ 379 NONAME ; void RCmDestination::UpdateL(void)
-	?WriteDefConnL@RCmManager@@QAEXABUTCmDefConnValue@@@Z @ 380 NONAME ; void RCmManager::WriteDefConnL(struct TCmDefConnValue const &)
-	?WriteGenConnSettingsL@RCmManager@@QAEXABUTCmGenConnSettings@@@Z @ 381 NONAME ; void RCmManager::WriteGenConnSettingsL(struct TCmGenConnSettings const &)
-	?ReadGenConnSettingsL@RCmManager@@QAEXAAUTCmGenConnSettings@@@Z @ 382 NONAME ; void RCmManager::ReadGenConnSettingsL(struct TCmGenConnSettings &)
-	?WatcherRegisterL@CCmManagerImpl@@QAEXPAVMCmCommsDatWatcher@@@Z @ 383 NONAME ; void CCmManagerImpl::WatcherRegisterL(class MCmCommsDatWatcher *)
-	?DestinationStillExistedL@CCmManagerImpl@@QAEHPAVCCmDestinationImpl@@@Z @ 384 NONAME ; int CCmManagerImpl::DestinationStillExistedL(class CCmDestinationImpl *)
-	?IsIapStillInDestL@CCmManagerImpl@@QAEHPAVCCmDestinationImpl@@ABVCCmPluginBaseEng@@@Z @ 385 NONAME ; int CCmManagerImpl::IsIapStillInDestL(class CCmDestinationImpl *, class CCmPluginBaseEng const &)
-	?IapStillExistedL@CCmManagerImpl@@QAEHABVCCmPluginBaseEng@@@Z @ 386 NONAME ; int CCmManagerImpl::IapStillExistedL(class CCmPluginBaseEng const &)
-	?WatcherUnRegister@CCmManagerImpl@@QAEXXZ @ 387 NONAME ; void CCmManagerImpl::WatcherUnRegister(void)
-	?RemoveDestFromPool@CCmManagerImpl@@QAEXPAVCCmDestinationImpl@@@Z @ 388 NONAME ; void CCmManagerImpl::RemoveDestFromPool(class CCmDestinationImpl *)
-	?OfferKeyEventL@CmPluginBaseSettingsDlg@@MAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 389 NONAME ; enum TKeyResponse CmPluginBaseSettingsDlg::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode)
-
-
--- a/cmmanager/cmmgr/Framework/EABI/CmManager_prot_setupU.def	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,438 +0,0 @@
-EXPORTS
-	_Z18CheckIPv4ValidityLP16CCmPluginBaseEngmPKv @ 1 NONAME
-	_Z18CheckIPv6ValidityLP16CCmPluginBaseEngmPKv @ 2 NONAME
-	_Z18ReadOnlyAttributeLP16CCmPluginBaseEngmPKv @ 3 NONAME
-	_Z19ClassifyIPv6AddressRK7TDesC16 @ 4 NONAME
-	_Z19SetProxyServerNameLP16CCmPluginBaseEngmPKv @ 5 NONAME
-	_Z22CheckRecordIdValidityLP16CCmPluginBaseEngmPKv @ 6 NONAME
-	_Z24CheckPortNumberValidityLP16CCmPluginBaseEngmPKv @ 7 NONAME
-	_Z24IsUnspecifiedIPv4AddressRK7TDesC16 @ 8 NONAME
-	_Z26CheckWAPWspOptionValidityLP16CCmPluginBaseEngmPKv @ 9 NONAME
-	_ZN10RCmManager12ReadDefConnLER15TCmDefConnValue @ 10 NONAME
-	_ZN10RCmManager5CloseEv @ 11 NONAME
-	_ZN10RCmManager5OpenLEv @ 12 NONAME
-	_ZN10RCmManager6OpenLCEv @ 13 NONAME
-	_ZN11TCmCommonUi14ShowPopupListLERK7TDesC16P16CDesC16ArrayFlatP9CArrayPtrI8CGulIconEjRi @ 14 NONAME
-	_ZN11TCmCommonUi22ShowConfirmationQueryLEi @ 15 NONAME
-	_ZN11TCmCommonUi22ShowConfirmationQueryLEiRK7TDesC16 @ 16 NONAME
-	_ZN11TCmCommonUi31ShowConfirmationQueryWithInputLEiR6TDes16 @ 17 NONAME
-	_ZN11TCmCommonUi9ShowNoteLERK7TDesC16NS_11TCmNoteTypeE @ 18 NONAME
-	_ZN11TCmCommonUi9ShowNoteLEiNS_11TCmNoteTypeE @ 19 NONAME
-	_ZN11TCmCommonUi9ShowNoteLEiRK7TDesC16NS_11TCmNoteTypeE @ 20 NONAME
-	_ZN13CCmSettingsUi12RunSettingsLEv @ 21 NONAME
-	_ZN13CCmSettingsUi21SelectDestinationDlgLERm @ 22 NONAME
-	_ZN13CCmSettingsUi4NewLEv @ 23 NONAME
-	_ZN13CCmSettingsUiD0Ev @ 24 NONAME
-	_ZN13CCmSettingsUiD1Ev @ 25 NONAME
-	_ZN13CCmSettingsUiD2Ev @ 26 NONAME
-	_ZN13RCmManagerExt11EasyWlanIdLEv @ 27 NONAME
-	_ZN13RCmManagerExt12DestinationLEm @ 28 NONAME
-	_ZN13RCmManagerExt12ReadDefConnLER15TCmDefConnValue @ 29 NONAME
-	_ZN13RCmManagerExt13WriteDefConnLERK15TCmDefConnValue @ 30 NONAME
-	_ZN13RCmManagerExt16AllDestinationsLER6RArrayImE @ 31 NONAME
-	_ZN13RCmManagerExt17ConnectionMethodLER6RArrayImEiii @ 32 NONAME
-	_ZN13RCmManagerExt17ConnectionMethodLEm @ 33 NONAME
-	_ZN13RCmManagerExt18CreateDestinationLERK7TDesC16 @ 34 NONAME
-	_ZN13RCmManagerExt20RemoveAllReferencesLER22RCmConnectionMethodExt @ 35 NONAME
-	_ZN13RCmManagerExt21CopyConnectionMethodLER17RCmDestinationExtR22RCmConnectionMethodExt @ 36 NONAME
-	_ZN13RCmManagerExt21MoveConnectionMethodLER17RCmDestinationExtS1_R22RCmConnectionMethodExt @ 37 NONAME
-	_ZN13RCmManagerExt23CreateConnectionMethodLEm @ 38 NONAME
-	_ZN13RCmManagerExt23RemoveConnectionMethodLER17RCmDestinationExtR22RCmConnectionMethodExt @ 39 NONAME
-	_ZN13RCmManagerExt26UpdateBearerPriorityArrayLERK6RArrayI15TBearerPriorityE @ 40 NONAME
-	_ZN13RCmManagerExt5CloseEv @ 41 NONAME
-	_ZN13RCmManagerExt5OpenLEv @ 42 NONAME
-	_ZN13RCmManagerExt6OpenLCEv @ 43 NONAME
-	_ZN14CCmManagerImpl11EasyWlanIdLEv @ 44 NONAME
-	_ZN14CCmManagerImpl12DestinationLEm @ 45 NONAME
-	_ZN14CCmManagerImpl16AllDestinationsLER6RArrayImE @ 46 NONAME
-	_ZN14CCmManagerImpl17ConnectionMethodLER6RArrayImEiiii @ 47 NONAME
-	_ZN14CCmManagerImpl17ConnectionMethodLEm @ 48 NONAME
-	_ZN14RCmDestination5CloseEv @ 49 NONAME
-	_ZN14RCmDestinationC1ERKS_ @ 50 NONAME
-	_ZN14RCmDestinationC2ERKS_ @ 51 NONAME
-	_ZN14RCmDestinationD1Ev @ 52 NONAME
-	_ZN14RCmDestinationD2Ev @ 53 NONAME
-	_ZN14RCmDestinationaSERKS_ @ 54 NONAME
-	_ZN16CCmPluginBaseEng10ConstructLEv @ 55 NONAME
-	_ZN16CCmPluginBaseEng10CreateNewLEv @ 56 NONAME
-	_ZN16CCmPluginBaseEng12EnableProxyLEi @ 57 NONAME ABSENT
-	_ZN16CCmPluginBaseEng13ConvTableItemEm @ 58 NONAME
-	_ZN16CCmPluginBaseEng15EnableLocationLEi @ 59 NONAME ABSENT
-	_ZN16CCmPluginBaseEng16AddResourceFileLERK7TDesC16 @ 60 NONAME
-	_ZN16CCmPluginBaseEng16FeatureSupportedEi @ 61 NONAME
-	_ZN16CCmPluginBaseEng16SetIntAttributeLEmm @ 62 NONAME
-	_ZN16CCmPluginBaseEng17EnableChargeCardLEi @ 63 NONAME ABSENT
-	_ZN16CCmPluginBaseEng17RestoreAttributeLEm @ 64 NONAME
-	_ZN16CCmPluginBaseEng17SetBoolAttributeLEmi @ 65 NONAME
-	_ZN16CCmPluginBaseEng18RemoveResourceFileERK7TDesC16 @ 66 NONAME
-	_ZN16CCmPluginBaseEng18UpdateProxyRecordLEv @ 67 NONAME ABSENT
-	_ZN16CCmPluginBaseEng19LoadServiceSettingLEv @ 68 NONAME
-	_ZN16CCmPluginBaseEng19SetStringAttributeLEmRK7TDesC16 @ 69 NONAME
-	_ZN16CCmPluginBaseEng20AddConverstionTableLEPPN8CommsDat13CCDRecordBaseEPiPK18TCmAttribConvTable @ 70 NONAME
-	_ZN16CCmPluginBaseEng20SetDNSServerAddressLEmRK7TDesC16mS2_mi @ 71 NONAME
-	_ZN16CCmPluginBaseEng20SetString8AttributeLEmRK6TDesC8 @ 72 NONAME
-	_ZN16CCmPluginBaseEng20UpdateServiceRecordLEv @ 73 NONAME
-	_ZN16CCmPluginBaseEng21PrepareToLoadRecordsLEv @ 74 NONAME
-	_ZN16CCmPluginBaseEng21RemoveConversionTableEPK18TCmAttribConvTable @ 75 NONAME
-	_ZN16CCmPluginBaseEng22CheckDNSServerAddressLEiRN8CommsDat9CMDBFieldI7TDesC16EES4_RNS1_IiEE @ 76 NONAME
-	_ZN16CCmPluginBaseEng23PrepareToUpdateRecordsLEv @ 77 NONAME
-	_ZN16CCmPluginBaseEng25AddCommonConversionTableLEPK26TCmCommonAttrConvArrayItem @ 78 NONAME
-	_ZN16CCmPluginBaseEng26NumOfConnMethodReferencesLEv @ 79 NONAME
-	_ZN16CCmPluginBaseEng27RemoveCommonConversionTableEPK26TCmCommonAttrConvArrayItem @ 80 NONAME
-	_ZN16CCmPluginBaseEng5LoadLEm @ 81 NONAME
-	_ZN16CCmPluginBaseEng5ResetEv @ 82 NONAME
-	_ZN16CCmPluginBaseEng7DeleteLEii @ 83 NONAME
-	_ZN16CCmPluginBaseEng7UpdateLEv @ 84 NONAME
-	_ZN16CCmPluginBaseEngC2EP18TCmPluginInitParam @ 85 NONAME
-	_ZN16CCmPluginBaseEngD0Ev @ 86 NONAME
-	_ZN16CCmPluginBaseEngD1Ev @ 87 NONAME
-	_ZN16CCmPluginBaseEngD2Ev @ 88 NONAME
-	_ZN16CCmPluginLanBase10ConstructLEv @ 89 NONAME
-	_ZN16CCmPluginLanBase12RunSettingsLEv @ 90 NONAME
-	_ZN16CCmPluginLanBase16BearerRecordIdLCERP7HBufC16Rm @ 91 NONAME
-	_ZN16CCmPluginLanBase17InitializeWithUiLEi @ 92 NONAME
-	_ZN16CCmPluginLanBase17ServiceRecordIdLCERP7HBufC16Rm @ 93 NONAME
-	_ZN16CCmPluginLanBase19LoadServiceSettingLEv @ 94 NONAME
-	_ZN16CCmPluginLanBase23CreateNewServiceRecordLEv @ 95 NONAME
-	_ZN16CCmPluginLanBase23PrepareToUpdateRecordsLEv @ 96 NONAME
-	_ZN16CCmPluginLanBaseC2EP18TCmPluginInitParam @ 97 NONAME
-	_ZN16CCmPluginLanBaseD0Ev @ 98 NONAME
-	_ZN16CCmPluginLanBaseD1Ev @ 99 NONAME
-	_ZN16CCmPluginLanBaseD2Ev @ 100 NONAME
-	_ZN17RCmDestinationExt10SetHiddenLEi @ 101 NONAME
-	_ZN17RCmDestinationExt12SetMetadataLEN9CMManager18TSnapMetadataFieldEm @ 102 NONAME
-	_ZN17RCmDestinationExt14SetProtectionLEN9CMManager16TProtectionLevelE @ 103 NONAME
-	_ZN17RCmDestinationExt15ModifyPriorityLER22RCmConnectionMethodExtj @ 104 NONAME
-	_ZN17RCmDestinationExt15ProtectionLevelEv @ 105 NONAME
-	_ZN17RCmDestinationExt17ConnectionMethodLEi @ 106 NONAME
-	_ZN17RCmDestinationExt20AddConnectionMethodLE22RCmConnectionMethodExt @ 107 NONAME
-	_ZN17RCmDestinationExt21ConnectionMethodByIDLEi @ 108 NONAME
-	_ZN17RCmDestinationExt21ConnectionMethodCountEv @ 109 NONAME
-	_ZN17RCmDestinationExt23AddEmbeddedDestinationLERKS_ @ 110 NONAME
-	_ZN17RCmDestinationExt23CreateConnectionMethodLEm @ 111 NONAME
-	_ZN17RCmDestinationExt23DeleteConnectionMethodLER22RCmConnectionMethodExt @ 112 NONAME
-	_ZN17RCmDestinationExt23RemoveConnectionMethodLE22RCmConnectionMethodExt @ 113 NONAME
-	_ZN17RCmDestinationExt2IdEv @ 114 NONAME
-	_ZN17RCmDestinationExt5CloseEv @ 115 NONAME
-	_ZN17RCmDestinationExt5IconLEv @ 116 NONAME
-	_ZN17RCmDestinationExt6NameLCEv @ 117 NONAME
-	_ZN17RCmDestinationExt7UpdateLEv @ 118 NONAME
-	_ZN17RCmDestinationExt8DeleteLDEv @ 119 NONAME
-	_ZN17RCmDestinationExt8IsHiddenEv @ 120 NONAME
-	_ZN17RCmDestinationExt8SetIconLEm @ 121 NONAME
-	_ZN17RCmDestinationExt8SetNameLERK7TDesC16 @ 122 NONAME
-	_ZN17RCmDestinationExt9ElementIdEv @ 123 NONAME
-	_ZN17RCmDestinationExt9PriorityLERK22RCmConnectionMethodExt @ 124 NONAME
-	_ZN17RCmDestinationExtC1ERKS_ @ 125 NONAME
-	_ZN17RCmDestinationExtC2ERKS_ @ 126 NONAME
-	_ZN17RCmDestinationExtD1Ev @ 127 NONAME
-	_ZN17RCmDestinationExtD2Ev @ 128 NONAME
-	_ZN17RCmDestinationExtaSERKS_ @ 129 NONAME
-	_ZN18CCmDestinationImpl10SetHiddenLEi @ 130 NONAME
-	_ZN18CCmDestinationImpl14RemoveFromPoolEv @ 131 NONAME
-	_ZN18CCmDestinationImpl14SetProtectionLEN9CMManager16TProtectionLevelE @ 132 NONAME
-	_ZN18CCmDestinationImpl15ProtectionLevelEv @ 133 NONAME
-	_ZN18CCmDestinationImpl17ConnectionMethodLEi @ 134 NONAME
-	_ZN18CCmDestinationImpl21ConnectionMethodCountEv @ 135 NONAME
-	_ZN18CCmDestinationImpl4NewLER14CCmManagerImplRK7TDesC16 @ 136 NONAME
-	_ZN18CCmDestinationImpl4NewLER14CCmManagerImplj @ 137 NONAME
-	_ZN18CCmDestinationImpl5IconLEv @ 138 NONAME
-	_ZN18CCmDestinationImpl6NameLCEv @ 139 NONAME
-	_ZN18CCmDestinationImpl7UpdateLEv @ 140 NONAME
-	_ZN18CCmDestinationImpl8DeleteLDEv @ 141 NONAME
-	_ZN18CCmDestinationImpl8IsHiddenEv @ 142 NONAME
-	_ZN18CCmDestinationImpl8SetNameLERK7TDesC16 @ 143 NONAME
-	_ZN18CCmDestinationImpl9PriorityLER16CCmPluginBaseEng @ 144 NONAME ABSENT
-	_ZN19RCmConnectionMethod5CloseEv @ 145 NONAME
-	_ZN21CCmConnSettingsUiImpl23RunApplicationSettingsLER19TCmSettingSelectionjR6RArrayImE @ 146 NONAME
-	_ZN21CCmConnSettingsUiImpl4NewLEP14CCmManagerImpl @ 147 NONAME
-	_ZN21CCmTransactionHandler5CloseEv @ 148 NONAME ABSENT
-	_ZN22RCmConnectionMethodExt11CreateCopyLEv @ 149 NONAME
-	_ZN22RCmConnectionMethodExt16SetIntAttributeLEmm @ 150 NONAME
-	_ZN22RCmConnectionMethodExt17SetBoolAttributeLEmi @ 151 NONAME
-	_ZN22RCmConnectionMethodExt19SetStringAttributeLEmRK7TDesC16 @ 152 NONAME
-	_ZN22RCmConnectionMethodExt20SetString8AttributeLEmRK6TDesC8 @ 153 NONAME
-	_ZN22RCmConnectionMethodExt5CloseEv @ 154 NONAME
-	_ZN22RCmConnectionMethodExt7DeleteLEv @ 155 NONAME
-	_ZN22RCmConnectionMethodExt7UpdateLEv @ 156 NONAME
-	_ZN23CmPluginBaseSettingsDlg10InitTextsLEv @ 157 NONAME
-	_ZN23CmPluginBaseSettingsDlg10SelectItemEi @ 158 NONAME
-	_ZN23CmPluginBaseSettingsDlg13LoadResourceLERK7TDesC16 @ 159 NONAME
-	_ZN23CmPluginBaseSettingsDlg15GetIPv6DNSTypeLEmm @ 160 NONAME
-	_ZN23CmPluginBaseSettingsDlg15ProcessCommandLEi @ 161 NONAME
-	_ZN23CmPluginBaseSettingsDlg16DynInitMenuPaneLEiP12CEikMenuPane @ 162 NONAME
-	_ZN23CmPluginBaseSettingsDlg17ConstructAndRunLDEv @ 163 NONAME
-	_ZN23CmPluginBaseSettingsDlg17PreLayoutDynInitLEv @ 164 NONAME
-	_ZN23CmPluginBaseSettingsDlg19AppendSettingTextsLER12CDesC16ArrayiPK7HBufC16 @ 165 NONAME
-	_ZN23CmPluginBaseSettingsDlg19AppendSettingTextsLER12CDesC16Arrayii @ 166 NONAME
-	_ZN23CmPluginBaseSettingsDlg19HandleListBoxEventLEP11CEikListBoxN19MEikListBoxObserver13TListBoxEventE @ 167 NONAME
-	_ZN23CmPluginBaseSettingsDlg21ShowPopupSettingPageLEmi @ 168 NONAME
-	_ZN23CmPluginBaseSettingsDlg21UpdateListBoxContentLEv @ 169 NONAME
-	_ZN23CmPluginBaseSettingsDlg23ShowPopupIPv4DNSEditorLEmmmm @ 170 NONAME
-	_ZN23CmPluginBaseSettingsDlg23ShowPopupIPv6DNSEditorLEPKmmmm @ 171 NONAME
-	_ZN23CmPluginBaseSettingsDlg23ShowPopupIpSettingPageLEmm @ 172 NONAME
-	_ZN23CmPluginBaseSettingsDlg24HandleListboxDataChangeLEv @ 173 NONAME
-	_ZN23CmPluginBaseSettingsDlg25ShowPopupTextSettingPageLEmm @ 174 NONAME
-	_ZN23CmPluginBaseSettingsDlg27ShowRadioButtonSettingPageLEPKmRim @ 175 NONAME
-	_ZN23CmPluginBaseSettingsDlg27ShowRadioButtonSettingPageLER16CDesC16ArrayFlatRim @ 176 NONAME
-	_ZN23CmPluginBaseSettingsDlg27StringAttributeWithDefaultLEmm @ 177 NONAME
-	_ZN23CmPluginBaseSettingsDlg28ShowPopupPortNumSettingPageLEmm @ 178 NONAME
-	_ZN23CmPluginBaseSettingsDlg29ShowPopupPasswordSettingPageLEmm @ 179 NONAME
-	_ZN23CmPluginBaseSettingsDlg9OkToExitLEi @ 180 NONAME
-	_ZN23CmPluginBaseSettingsDlgC2ER16CCmPluginBaseEng @ 181 NONAME
-	_ZN23CmPluginBaseSettingsDlgD0Ev @ 182 NONAME
-	_ZN23CmPluginBaseSettingsDlgD1Ev @ 183 NONAME
-	_ZN23CmPluginBaseSettingsDlgD2Ev @ 184 NONAME
-	_ZN24CCmApplicationSettingsUi23RunApplicationSettingsLER19TCmSettingSelection @ 185 NONAME
-	_ZN24CCmApplicationSettingsUi23RunApplicationSettingsLER19TCmSettingSelectionjR6RArrayImE @ 186 NONAME
-	_ZN24CCmApplicationSettingsUi4NewLEv @ 187 NONAME
-	_ZN24CCmApplicationSettingsUi5NewLCEv @ 188 NONAME
-	_ZN24CCmApplicationSettingsUiD0Ev @ 189 NONAME
-	_ZN24CCmApplicationSettingsUiD1Ev @ 190 NONAME
-	_ZN24CCmApplicationSettingsUiD2Ev @ 191 NONAME
-	_ZN24CCmPluginMultiLineDialog4NewLER6TDes16S1_N15CAknQueryDialog5TToneE @ 192 NONAME
-	_ZN25CmPluginBaseSettingsDlgIp16DynInitMenuPaneLEiP12CEikMenuPane @ 193 NONAME
-	_ZN25CmPluginBaseSettingsDlgIp20RunAdvancedSettingsLEv @ 194 NONAME
-	_ZN25CmPluginBaseSettingsDlgIp21UpdateListBoxContentLEv @ 195 NONAME
-	_ZN25CmPluginBaseSettingsDlgIpC1ER16CCmPluginBaseEng @ 196 NONAME
-	_ZN25CmPluginBaseSettingsDlgIpC2ER16CCmPluginBaseEng @ 197 NONAME
-	_ZN25CmPluginBaseSettingsDlgIpD0Ev @ 198 NONAME
-	_ZN25CmPluginBaseSettingsDlgIpD1Ev @ 199 NONAME
-	_ZN25CmPluginBaseSettingsDlgIpD2Ev @ 200 NONAME
-	_ZN26CmPluginBaseSettingsDlgAdv16DynInitMenuPaneLEiP12CEikMenuPane @ 201 NONAME
-	_ZN26CmPluginBaseSettingsDlgAdv20RunAdvancedSettingsLEv @ 202 NONAME
-	_ZN26CmPluginBaseSettingsDlgAdv21ShowPopupSettingPageLEii @ 203 NONAME
-	_ZN26CmPluginBaseSettingsDlgAdv21UpdateListBoxContentLEv @ 204 NONAME
-	_ZN26CmPluginBaseSettingsDlgAdvC1ER16CCmPluginBaseEng @ 205 NONAME
-	_ZN26CmPluginBaseSettingsDlgAdvC2ER16CCmPluginBaseEng @ 206 NONAME
-	_ZN26CmPluginBaseSettingsDlgAdvD0Ev @ 207 NONAME
-	_ZN26CmPluginBaseSettingsDlgAdvD1Ev @ 208 NONAME
-	_ZN26CmPluginBaseSettingsDlgAdvD2Ev @ 209 NONAME
-	_ZN28CCmApplicationSettingsUiImpl23RunApplicationSettingsLER19TCmSettingSelection @ 210 NONAME
-	_ZN28CCmApplicationSettingsUiImpl4NewLEv @ 211 NONAME
-	_ZNK10RCmManager11EasyWlanIdLEv @ 212 NONAME
-	_ZNK10RCmManager12DestinationLEm @ 213 NONAME
-	_ZNK10RCmManager16AllDestinationsLER6RArrayImE @ 214 NONAME
-	_ZNK10RCmManager17ConnectionMethodLER6RArrayImEiii @ 215 NONAME
-	_ZNK10RCmManager17ConnectionMethodLEm @ 216 NONAME
-	_ZNK10RCmManager17GetBearerInfoIntLEmm @ 217 NONAME
-	_ZNK10RCmManager18GetBearerInfoBoolLEmm @ 218 NONAME
-	_ZNK10RCmManager20BearerPriorityArrayLER6RArrayI15TBearerPriorityE @ 219 NONAME
-	_ZNK10RCmManager20GetBearerInfoStringLEmm @ 220 NONAME
-	_ZNK10RCmManager21GetBearerInfoString8LEmm @ 221 NONAME
-	_ZNK10RCmManager26CleanupGlobalPriorityArrayER6RArrayI15TBearerPriorityE @ 222 NONAME
-	_ZNK10RCmManager27GetConnectionMethodInfoIntLEmm @ 223 NONAME
-	_ZNK10RCmManager28GetConnectionMethodInfoBoolLEmm @ 224 NONAME
-	_ZNK10RCmManager30GetConnectionMethodInfoStringLEmm @ 225 NONAME
-	_ZNK10RCmManager31GetConnectionMethodInfoString8LEmm @ 226 NONAME
-	_ZNK13RCmManagerExt17GetBearerInfoIntLEmm @ 227 NONAME
-	_ZNK13RCmManagerExt17SupportedBearersLER6RArrayImE @ 228 NONAME
-	_ZNK13RCmManagerExt18GetBearerInfoBoolLEmm @ 229 NONAME
-	_ZNK13RCmManagerExt18UncategorizedIconLEv @ 230 NONAME
-	_ZNK13RCmManagerExt20BearerPriorityArrayLER6RArrayI15TBearerPriorityE @ 231 NONAME
-	_ZNK13RCmManagerExt20GetBearerInfoStringLEmm @ 232 NONAME
-	_ZNK13RCmManagerExt21GetBearerInfoString8LEmm @ 233 NONAME
-	_ZNK13RCmManagerExt26CleanupGlobalPriorityArrayER6RArrayI15TBearerPriorityE @ 234 NONAME
-	_ZNK13RCmManagerExt27GetConnectionMethodInfoIntLEmm @ 235 NONAME
-	_ZNK13RCmManagerExt28GetConnectionMethodInfoBoolLEmm @ 236 NONAME
-	_ZNK13RCmManagerExt30GetConnectionMethodInfoStringLEmm @ 237 NONAME
-	_ZNK13RCmManagerExt31GetConnectionMethodInfoString8LEmm @ 238 NONAME
-	_ZNK14CCmManagerImpl17GetBearerInfoIntLEmm @ 239 NONAME
-	_ZNK14CCmManagerImpl18GetBearerInfoBoolLEmm @ 240 NONAME
-	_ZNK14CCmManagerImpl20GetBearerInfoStringLEmm @ 241 NONAME
-	_ZNK14CCmManagerImpl21GetBearerInfoString8LEmm @ 242 NONAME
-	_ZNK14CCmManagerImpl27GetConnectionMethodInfoIntLEmm @ 243 NONAME
-	_ZNK14CCmManagerImpl28GetConnectionMethodInfoBoolLEmm @ 244 NONAME
-	_ZNK14CCmManagerImpl30GetConnectionMethodInfoStringLEmm @ 245 NONAME
-	_ZNK14CCmManagerImpl31GetConnectionMethodInfoString8LEmm @ 246 NONAME
-	_ZNK14RCmDestination12IsConnectedLEv @ 247 NONAME
-	_ZNK14RCmDestination15ProtectionLevelEv @ 248 NONAME
-	_ZNK14RCmDestination17ConnectionMethodLEi @ 249 NONAME
-	_ZNK14RCmDestination21ConnectionMethodByIDLEi @ 250 NONAME
-	_ZNK14RCmDestination21ConnectionMethodCountEv @ 251 NONAME
-	_ZNK14RCmDestination2IdEv @ 252 NONAME
-	_ZNK14RCmDestination5IconLEv @ 253 NONAME
-	_ZNK14RCmDestination6NameLCEv @ 254 NONAME
-	_ZNK14RCmDestination8IsHiddenEv @ 255 NONAME
-	_ZNK14RCmDestination9ElementIdEv @ 256 NONAME
-	_ZNK14RCmDestination9MetadataLEN9CMManager18TSnapMetadataFieldE @ 257 NONAME
-	_ZNK14RCmDestination9PriorityLERK19RCmConnectionMethod @ 258 NONAME
-	_ZNK16CCmPluginBaseEng10AllocReadLEi @ 259 NONAME
-	_ZNK16CCmPluginBaseEng11CreateCopyLEv @ 260 NONAME
-	_ZNK16CCmPluginBaseEng11DestinationEv @ 261 NONAME
-	_ZNK16CCmPluginBaseEng16GetIntAttributeLEm @ 262 NONAME
-	_ZNK16CCmPluginBaseEng17GetBoolAttributeLEm @ 263 NONAME
-	_ZNK16CCmPluginBaseEng19GetStringAttributeLEm @ 264 NONAME
-	_ZNK16CCmPluginBaseEng20CheckIfNameModifiedLEPN8CommsDat13CCDRecordBaseE @ 265 NONAME
-	_ZNK16CCmPluginBaseEng20GetString8AttributeLEm @ 266 NONAME
-	_ZNK16CCmPluginBaseEng20GlobalBearerPriorityERK7TDesC16 @ 267 NONAME
-	_ZNK16CCmPluginBaseEng22GlobalUiBearerPriorityERK7TDesC16 @ 268 NONAME
-	_ZNK16CCmPluginBaseEng23CheckIfAlreadyConnectedEv @ 269 NONAME
-	_ZNK16CCmPluginBaseEng7SessionEv @ 270 NONAME
-	_ZNK16CCmPluginLanBase13ServiceRecordEv @ 271 NONAME
-	_ZNK17RCmDestinationExt12IsConnectedLEv @ 272 NONAME
-	_ZNK17RCmDestinationExt9MetadataLEN9CMManager18TSnapMetadataFieldE @ 273 NONAME
-	_ZNK18CCmDestinationImpl12IsConnectedLEv @ 274 NONAME
-	_ZNK19RCmConnectionMethod12DestinationLEv @ 275 NONAME
-	_ZNK19RCmConnectionMethod16GetIntAttributeLEm @ 276 NONAME
-	_ZNK19RCmConnectionMethod17GetBoolAttributeLEm @ 277 NONAME
-	_ZNK19RCmConnectionMethod19GetStringAttributeLEm @ 278 NONAME
-	_ZNK19RCmConnectionMethod20GetString8AttributeLEm @ 279 NONAME
-	_ZNK22RCmConnectionMethodExt12DestinationLEv @ 280 NONAME
-	_ZNK22RCmConnectionMethodExt16GetIntAttributeLEm @ 281 NONAME
-	_ZNK22RCmConnectionMethodExt17GetBoolAttributeLEm @ 282 NONAME
-	_ZNK22RCmConnectionMethodExt19GetStringAttributeLEm @ 283 NONAME
-	_ZNK22RCmConnectionMethodExt20GetString8AttributeLEm @ 284 NONAME
-	_ZNK23CmPluginBaseSettingsDlg14GetHelpContextER15TCoeHelpContext @ 285 NONAME
-	_ZNK23CmPluginBaseSettingsDlg19AppendSettingTextsLER12CDesC16ArrayiiRK7TDesC16i @ 286 NONAME
-	_ZNK23CmPluginBaseSettingsDlg19AppendSettingTextsLER12CDesC16Arrayiiii @ 287 NONAME
-	_ZTI16CCmPluginBaseEng @ 288 NONAME ; #<TI>#
-	_ZTI16CCmPluginLanBase @ 289 NONAME ; #<TI>#
-	_ZTI23CmPluginBaseSettingsDlg @ 290 NONAME ; #<TI>#
-	_ZTI25CmPluginBaseSettingsDlgIp @ 291 NONAME ; #<TI>#
-	_ZTI26CmPluginBaseSettingsDlgAdv @ 292 NONAME ; #<TI>#
-	_ZTIN11TCmCommonUi12CCmDesCArrayE @ 293 NONAME ; #<TI>#
-	_ZTV16CCmPluginBaseEng @ 294 NONAME ; #<VT>#
-	_ZTV16CCmPluginLanBase @ 295 NONAME ; #<VT>#
-	_ZTV23CmPluginBaseSettingsDlg @ 296 NONAME ; #<VT>#
-	_ZTV25CmPluginBaseSettingsDlgIp @ 297 NONAME ; #<VT>#
-	_ZTV26CmPluginBaseSettingsDlgAdv @ 298 NONAME ; #<VT>#
-	_ZTVN11TCmCommonUi12CCmDesCArrayE @ 299 NONAME ; #<VT>#
-	_ZThn156_N23CmPluginBaseSettingsDlg15ProcessCommandLEi @ 300 NONAME ; #<thunk>#
-	_ZThn156_N23CmPluginBaseSettingsDlg16DynInitMenuPaneLEiP12CEikMenuPane @ 301 NONAME ; #<thunk>#
-	_ZThn156_N25CmPluginBaseSettingsDlgIp16DynInitMenuPaneLEiP12CEikMenuPane @ 302 NONAME ; #<thunk>#
-	_ZThn156_N26CmPluginBaseSettingsDlgAdv16DynInitMenuPaneLEiP12CEikMenuPane @ 303 NONAME ; #<thunk>#
-	_ZThn176_N23CmPluginBaseSettingsDlg19HandleListBoxEventLEP11CEikListBoxN19MEikListBoxObserver13TListBoxEventE @ 304 NONAME ; #<thunk>#
-	_ZN14RCmDestinationC1Ev @ 305 NONAME
-	_ZN14RCmDestinationC2Ev @ 306 NONAME
-	_ZN17RCmDestinationExtC1Ev @ 307 NONAME
-	_ZN17RCmDestinationExtC2Ev @ 308 NONAME
-	_ZNK14RCmDestinationeqERKS_ @ 309 NONAME
-	_ZNK14RCmDestinationneERKS_ @ 310 NONAME
-	_ZNK17RCmDestinationExteqERKS_ @ 311 NONAME
-	_ZNK17RCmDestinationExtneERKS_ @ 312 NONAME
-	_ZN13CCmPluginBase10ConstructLEv @ 313 NONAME
-	_ZN13CCmPluginBase10CreateNewLEv @ 314 NONAME
-	_ZN13CCmPluginBase12EnableProxyLEi @ 315 NONAME
-	_ZN13CCmPluginBase15EnableLocationLEi @ 316 NONAME
-	_ZN13CCmPluginBase16AddResourceFileLERK7TDesC16 @ 317 NONAME
-	_ZN13CCmPluginBase16SetIntAttributeLEmm @ 318 NONAME
-	_ZN13CCmPluginBase17EnableChargeCardLEi @ 319 NONAME
-	_ZN13CCmPluginBase17RestoreAttributeLEm @ 320 NONAME
-	_ZN13CCmPluginBase17SetBoolAttributeLEmi @ 321 NONAME
-	_ZN13CCmPluginBase18RemoveResourceFileERK7TDesC16 @ 322 NONAME
-	_ZN13CCmPluginBase18UpdateProxyRecordLEv @ 323 NONAME
-	_ZN13CCmPluginBase19LoadServiceSettingLEv @ 324 NONAME
-	_ZN13CCmPluginBase19SetStringAttributeLEmRK7TDesC16 @ 325 NONAME
-	_ZN13CCmPluginBase20SetString8AttributeLEmRK6TDesC8 @ 326 NONAME
-	_ZN13CCmPluginBase20UpdateServiceRecordLEv @ 327 NONAME
-	_ZN13CCmPluginBase21PrepareToLoadRecordsLEv @ 328 NONAME
-	_ZN13CCmPluginBase23PrepareToUpdateRecordsLEv @ 329 NONAME
-	_ZN13CCmPluginBase26NumOfConnMethodReferencesLEv @ 330 NONAME
-	_ZN13CCmPluginBase5LoadLEm @ 331 NONAME
-	_ZN13CCmPluginBase7DeleteLEii @ 332 NONAME
-	_ZN13CCmPluginBase7UpdateLEv @ 333 NONAME
-	_ZN13CCmPluginBaseC1EP16CCmPluginBaseEng @ 334 NONAME
-	_ZN13CCmPluginBaseC2EP16CCmPluginBaseEng @ 335 NONAME
-	_ZN13CCmPluginBaseD0Ev @ 336 NONAME
-	_ZN13CCmPluginBaseD1Ev @ 337 NONAME
-	_ZN13CCmPluginBaseD2Ev @ 338 NONAME
-	_ZN14CCmManagerImpl20GetConnectionMethodLEm @ 339 NONAME
-	_ZN18CCmDestinationImpl20GetConnectionMethodLEi @ 340 NONAME
-	_ZNK13CCmPluginBase10AllocReadLEi @ 341 NONAME
-	_ZNK13CCmPluginBase11CreateCopyLEv @ 342 NONAME
-	_ZNK13CCmPluginBase11DestinationEv @ 343 NONAME
-	_ZNK13CCmPluginBase16GetIntAttributeLEm @ 344 NONAME
-	_ZNK13CCmPluginBase17GetBoolAttributeLEm @ 345 NONAME
-	_ZNK13CCmPluginBase17ParentDestinationEv @ 346 NONAME
-	_ZNK13CCmPluginBase19GetStringAttributeLEm @ 347 NONAME
-	_ZNK13CCmPluginBase20GetString8AttributeLEm @ 348 NONAME
-	_ZNK13CCmPluginBase5CmMgrEv @ 349 NONAME
-	_ZNK13CCmPluginBase6PluginEv @ 350 NONAME
-	_ZNK13CCmPluginBase7SessionEv @ 351 NONAME
-	_ZTI13CCmPluginBase @ 352 NONAME ; #<TI>#
-	_ZTV13CCmPluginBase @ 353 NONAME ; #<VT>#
-	_ZN19RCmConnectionMethodC1Ev @ 354 NONAME
-	_ZN19RCmConnectionMethodC2Ev @ 355 NONAME
-	_ZN19RCmConnectionMethodaSERKS_ @ 356 NONAME
-	_ZN22RCmConnectionMethodExtC1Ev @ 357 NONAME
-	_ZN22RCmConnectionMethodExtC2Ev @ 358 NONAME
-	_ZN22RCmConnectionMethodExtaSERKS_ @ 359 NONAME
-	_ZNK19RCmConnectionMethodeqERS_ @ 360 NONAME
-	_ZNK19RCmConnectionMethodneERS_ @ 361 NONAME
-	_ZNK22RCmConnectionMethodExteqERS_ @ 362 NONAME
-	_ZNK22RCmConnectionMethodExtneERS_ @ 363 NONAME
-	_ZN19RCmConnectionMethodD1Ev @ 364 NONAME
-	_ZN19RCmConnectionMethodD2Ev @ 365 NONAME
-	_ZN22RCmConnectionMethodExtD1Ev @ 366 NONAME
-	_ZN22RCmConnectionMethodExtD2Ev @ 367 NONAME
-	_ZN21CCmConnSettingsUiImpl25SetDestinationArrayToUseLE6RArrayImE @ 368 NONAME
-	_ZN21CCmConnSettingsUiImpl26ClearDestinationArrayToUseEv @ 369 NONAME
-	_ZN13CCmPluginBase17GetAdditionalUidsER6RArrayImE @ 370 NONAME
-	_ZN14CCmManagerImpl13WrapCmManagerER13RCmManagerExt @ 371 NONAME
-	_ZN16CCmPluginBaseEng17GetAdditionalUidsER6RArrayImE @ 372 NONAME
-	_ZN14CCmManagerImpl17CreateFlatCMListLEmR13RPointerArrayI13CCmPluginBaseE @ 373 NONAME
-	_ZN14CCmManagerImpl18FilterOutVirtualsLER13RPointerArrayI13CCmPluginBaseE @ 374 NONAME
-	_ZN14CCmManagerImpl30CombineArraysForPriorityOrderLER13RPointerArrayI13CCmPluginBaseES3_ @ 375 NONAME
-	_ZN14CCmManagerImpl18CreateFlatCMListLCEmR13RPointerArrayI13CCmPluginBaseE @ 376 NONAME
-	_ZN19RCmConnectionMethodC1ERKS_ @ 377 NONAME
-	_ZN19RCmConnectionMethodC2ERKS_ @ 378 NONAME
-	_ZN22RCmConnectionMethodExtC1ERKS_ @ 379 NONAME
-	_ZN22RCmConnectionMethodExtC2ERKS_ @ 380 NONAME
-	_ZN13CCmPluginBase13IsLinkedToIapEm @ 381 NONAME
-	_ZN13CCmPluginBase14IsLinkedToSnapEm @ 382 NONAME
-	_ZNK16CCmPluginBaseEng17ParentDestinationEv @ 383 NONAME
-	_ZN13RCmManagerExt20CreateTablesAndOpenLEv @ 384 NONAME
-	_ZN13RCmManagerExt18CreateDestinationLERK7TDesC16m @ 385 NONAME
-	_ZN13RCmManagerExt23CreateConnectionMethodLEmm @ 386 NONAME
-	_ZN16CCmPluginBaseEng15SetPreDefinedIdEm @ 387 NONAME
-	_ZN17RCmDestinationExt23CreateConnectionMethodLEmm @ 388 NONAME
-	_ZN23CmPluginBaseSettingsDlg20HandleResourceChangeEi @ 389 NONAME
-	_ZN23CmPluginBaseSettingsDlg7ExecuteEv @ 390 NONAME
-	_ZThn180_N23CmPluginBaseSettingsDlg7ExecuteEv @ 391 NONAME ; #<thunk>#
-	_ZN23CmPluginBaseSettingsDlg16HandleLeaveErrorEi @ 392 NONAME
-	_ZThn180_N23CmPluginBaseSettingsDlg16HandleLeaveErrorEi @ 393 NONAME ; #<thunk>#
-	_ZN10RCmManager13WriteDefConnLERK15TCmDefConnValue @ 394 NONAME
-	_ZN10RCmManager18CreateDestinationLERK7TDesC16 @ 395 NONAME
-	_ZN10RCmManager18CreateDestinationLERK7TDesC16m @ 396 NONAME
-	_ZN10RCmManager20CreateTablesAndOpenLEv @ 397 NONAME
-	_ZN10RCmManager20RemoveAllReferencesLER19RCmConnectionMethod @ 398 NONAME
-	_ZN10RCmManager21CopyConnectionMethodLER14RCmDestinationR19RCmConnectionMethod @ 399 NONAME
-	_ZN10RCmManager21MoveConnectionMethodLER14RCmDestinationS1_R19RCmConnectionMethod @ 400 NONAME
-	_ZN10RCmManager23CreateConnectionMethodLEm @ 401 NONAME
-	_ZN10RCmManager23CreateConnectionMethodLEmm @ 402 NONAME
-	_ZN10RCmManager23RemoveConnectionMethodLER14RCmDestinationR19RCmConnectionMethod @ 403 NONAME
-	_ZN10RCmManager26UpdateBearerPriorityArrayLERK6RArrayI15TBearerPriorityE @ 404 NONAME
-	_ZN14RCmDestination10SetHiddenLEi @ 405 NONAME
-	_ZN14RCmDestination12SetMetadataLEN9CMManager18TSnapMetadataFieldEm @ 406 NONAME
-	_ZN14RCmDestination14SetProtectionLEN9CMManager16TProtectionLevelE @ 407 NONAME
-	_ZN14RCmDestination15ModifyPriorityLER19RCmConnectionMethodj @ 408 NONAME
-	_ZN14RCmDestination20AddConnectionMethodLE19RCmConnectionMethod @ 409 NONAME
-	_ZN14RCmDestination23AddEmbeddedDestinationLERKS_ @ 410 NONAME
-	_ZN14RCmDestination23CreateConnectionMethodLEm @ 411 NONAME
-	_ZN14RCmDestination23CreateConnectionMethodLEmm @ 412 NONAME
-	_ZN14RCmDestination23DeleteConnectionMethodLER19RCmConnectionMethod @ 413 NONAME
-	_ZN14RCmDestination23RemoveConnectionMethodLE19RCmConnectionMethod @ 414 NONAME
-	_ZN14RCmDestination7UpdateLEv @ 415 NONAME
-	_ZN14RCmDestination8DeleteLDEv @ 416 NONAME
-	_ZN14RCmDestination8SetIconLEm @ 417 NONAME
-	_ZN14RCmDestination8SetNameLERK7TDesC16 @ 418 NONAME
-	_ZN19RCmConnectionMethod11CreateCopyLEv @ 419 NONAME
-	_ZN19RCmConnectionMethod16SetIntAttributeLEmm @ 420 NONAME
-	_ZN19RCmConnectionMethod17SetBoolAttributeLEmi @ 421 NONAME
-	_ZN19RCmConnectionMethod19SetStringAttributeLEmRK7TDesC16 @ 422 NONAME
-	_ZN19RCmConnectionMethod20SetString8AttributeLEmRK6TDesC8 @ 423 NONAME
-	_ZN19RCmConnectionMethod7DeleteLEv @ 424 NONAME
-	_ZN19RCmConnectionMethod7UpdateLEv @ 425 NONAME
-	_ZNK10RCmManager17SupportedBearersLER6RArrayImE @ 426 NONAME
-	_ZNK10RCmManager18UncategorizedIconLEv @ 427 NONAME
-	_ZN10RCmManager20ReadGenConnSettingsLER18TCmGenConnSettings @ 428 NONAME
-	_ZN10RCmManager21WriteGenConnSettingsLERK18TCmGenConnSettings @ 429 NONAME
-	_ZN14CCmManagerImpl16IapStillExistedLERK16CCmPluginBaseEng @ 430 NONAME
-	_ZN14CCmManagerImpl16WatcherRegisterLEP18MCmCommsDatWatcher @ 431 NONAME
-	_ZN14CCmManagerImpl17IsIapStillInDestLEP18CCmDestinationImplRK16CCmPluginBaseEng @ 432 NONAME
-	_ZN14CCmManagerImpl17WatcherUnRegisterEv @ 433 NONAME
-	_ZN14CCmManagerImpl18RemoveDestFromPoolEP18CCmDestinationImpl @ 434 NONAME
-	_ZN14CCmManagerImpl24DestinationStillExistedLEP18CCmDestinationImpl @ 435 NONAME
-	_ZN23CmPluginBaseSettingsDlg14OfferKeyEventLERK9TKeyEvent10TEventCode @ 436 NONAME
-
--- a/cmmanager/cmmgr/Framework/Group/bld.inf	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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:  Build file for Connection Method Manager's framework.
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-// export localised loc file
-../loc/cmmanager.loc             MW_LAYER_LOC_EXPORT_PATH(cmmanager.loc)
-../conf/cmmanager.confml         MW_LAYER_CONFML(cmmanager.confml)
-../conf/cmmanager_10207376.crml  MW_LAYER_CRML(cmmanager_10207376.crml)
-
-PRJ_MMPFILES
-cmmanager.mmp
-
-PRJ_EXTENSIONS
-START EXTENSION s60/mifconv
-OPTION TARGETFILE cmmanager.mif
-OPTION HEADERFILE cmmanager.mbg
-OPTION SOURCES -c8,8 qgn_indi_sett_protected_add\
-               -c8,8 qgn_prop_set_conn_dest_add\
-               -c8,8 qgn_prop_set_conn_dest_internet\
-               -c8,8 qgn_prop_set_conn_dest_wap\
-               -c8,8 qgn_prop_set_conn_dest_mms\
-               -c8,8 qgn_prop_set_conn_dest_intranet\
-               -c8,8 qgn_prop_set_conn_dest_operator\
-               -c8,8 qgn_prop_set_conn_dest_icon1\
-               -c8,8 qgn_prop_set_conn_dest_icon2\
-               -c8,8 qgn_prop_set_conn_dest_icon3\
-               -c8,8 qgn_prop_set_conn_dest_icon4\
-               -c8,8 qgn_prop_set_conn_dest_icon5\
-               -c8,8 qgn_prop_set_conn_dest_icon6\
-               -c8,8 qgn_prop_set_conn_dest_default\
-               -c8,8 qgn_prop_set_conn_dest_uncategorized\
-               -c8,8 qgn_prop_set_conn_bearer_avail_wlan\
-               -c8,8 qgn_prop_set_conn_bearer_avail_packetdata\
-               -c8,8 qgn_prop_set_conn_wlan_easy\
-               -c8,8 qgn_prop_set_conn_dest_internet_small\
-               -c8,8 qgn_prop_set_conn_dest_wap_small\
-               -c8,8 qgn_prop_set_conn_dest_mms_small\
-               -c8,8 qgn_prop_set_conn_dest_intranet_small\
-               -c8,8 qgn_prop_set_conn_dest_operator_small\
-               -c8,8 qgn_prop_set_conn_dest_icon1_small\
-               -c8,8 qgn_prop_set_conn_dest_icon2_small\
-               -c8,8 qgn_prop_set_conn_dest_icon3_small\
-               -c8,8 qgn_prop_set_conn_dest_icon4_small\
-               -c8,8 qgn_prop_set_conn_dest_icon5_small\
-               -c8,8 qgn_prop_set_conn_dest_icon6_small\
-               -c8,8 qgn_prop_set_conn_dest_default_small\
-               -c8,8 qgn_indi_cb_hot_add\
-               -c8,8 qgn_indi_default_conn_add
-END
--- a/cmmanager/cmmgr/Framework/Group/cmmanager.mmp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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:  Makefile of Connection Method Manager's framework.
-*
-*/
-
-#include <data_caging_paths.hrh>
-#include <platform_paths.hrh>
-
-TARGET        	cmmanager.dll
-TARGETTYPE    	dll
-UID           	0x1000008d 0x10207376
-CAPABILITY		CAP_GENERAL_DLL
-VENDORID VID_DEFAULT
-
-SOURCEPATH      ../Src
-
-SOURCE 			cmmanager.cpp
-SOURCE 			cmmanagerext.cpp
-SOURCE          cmmanagerimpl.cpp
-SOURCE 			cmdestination.cpp
-SOURCE          cmdestinationext.cpp
-SOURCE          cmdestinationimpl.cpp
-SOURCE 			ccmpluginbaseeng.cpp
-SOURCE 			cmpluginbase.cpp
-SOURCE 			cmsettingsui.cpp
-SOURCE 			cmapplicationsettingsui.cpp
-SOURCE 			cmapplicationsettingsuiimpl.cpp //just here to avoid bc break
-SOURCE 			cmsettingsuiimpl.cpp
-SOURCE 			cmconnsettingsuiimpl.cpp
-SOURCE          cmlogger.cpp
-SOURCE          destdlg.cpp
-SOURCE          destlistbox.cpp
-SOURCE          destlistboxmodel.cpp
-SOURCE          destlistitem.cpp
-SOURCE          destlistitemlist.cpp
-SOURCE          cmdlg.cpp
-SOURCE          cmlistbox.cpp
-SOURCE          cmlistboxmodel.cpp
-SOURCE          cmlistitem.cpp
-SOURCE          cmlistitemlist.cpp
-SOURCE          cmpbasesettingsdlg.cpp
-SOURCE          cmconnectionmethod.cpp
-SOURCE          cmconnectionmethodext.cpp
-SOURCE          cmcommonui.cpp
-SOURCE          cmwizard.cpp
-SOURCE 			cmconnselectrbpage.cpp
-SOURCE          cmconnectionmethodinfo.cpp
-SOURCE          cmtransactionhandler.cpp
-SOURCE          uncatdlg.cpp
-SOURCE          selectdestination.cpp
-SOURCE          cmdesticondialog.cpp
-SOURCE          cmdesticonmap.cpp
-SOURCE 			cmpluginlanbase.cpp
-SOURCE 			cmpbasesettingsdlgadv.cpp
-SOURCE 			cmpbasesettingsdlgip.cpp
-SOURCE 			cmpluginmultilinedialog.cpp
-SOURCE 			cmobjectpool.cpp
-SOURCE          ccmdexec.cpp
-SOURCE          cmcommsdatnotifier.cpp
-
-START RESOURCE ../SrcData/cmmanager.rss
-HEADER
-TARGETPATH   RESOURCE_FILES_DIR
-LANGUAGE_IDS
-END  // RESOURCE
-
-USERINCLUDE		../SrcData
-USERINCLUDE		../../Plugins/cmpluginembdestination/inc    // cmpluginembdestinationdef.h
-
-// Component specific internal headers 
-USERINCLUDE			../Inc
-
-// ADO specific internal headers 
-SYSTEMINCLUDE		../../../../inc
-
-//Macro to /epoc32 headers
-MW_LAYER_SYSTEMINCLUDE
-
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-APP_LAYER_SYSTEMINCLUDE
-#endif
-
-LIBRARY         hlplch.lib
-
-LIBRARY       	euser.lib
-LIBRARY         ECom.lib
-LIBRARY         COMMSDAT.lib
-LIBRARY         flogger.lib
-LIBRARY         FeatMgr.lib
-
-
-LIBRARY eikcore.lib egul.lib
-LIBRARY eikcoctl.lib avkon.lib eikdlg.lib
-LIBRARY eikctl.lib  cone.lib CommonEngine.lib
-LIBRARY bafl.lib fbscli.lib efsrv.lib CommonUI.LIB
-LIBRARY AknSkins.lib CdlEngine.lib
-LIBRARY ESock.lib
-LIBRARY AknLayout.lib
-LIBRARY AknLayout2.lib
-LIBRARY AknLayout2scalable.lib
-LIBRARY aknicon.lib
-LIBRARY ws32.lib
-LIBRARY cmmanagerdatabase.lib
-LIBRARY insock.lib
-LIBRARY sysutil.lib
-LIBRARY connectionuiutilities.lib
-LIBRARY touchfeedback.lib
-LIBRARY centralrepository.lib
-
-#if defined(ARMCC)
-    DEFFILE ../EABI/CmManager_prot_setup.def
-#elif defined( WINSCW )
-    DEFFILE ../BWinsCw/CmManager_prot_setup.DEF
-#elif defined( WINS )
-    DEFFILE ../BWins/CmManager_prot_setup.def
-#else
-    DEFFILE ../BMarm/CmManager_prot_setup.def
-#endif
--- a/cmmanager/cmmgr/Framework/Group/framework_icons.mk	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-#
-# Copyright (c)  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:  icons makefile for project CMManager Framework
-#
-ifeq (WINS,$(findstring WINS, $(PLATFORM)))
-ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\Z
-else
-ZDIR=\epoc32\data\z
-endif
-
-
-TARGETDIR=$(ZDIR)\resource\apps
-ICONTARGETFILENAME=$(TARGETDIR)\cmmanager.mif
-
-HEADERDIR=\epoc32\include
-HEADERFILENAME=$(HEADERDIR)\cmmanager.mbg
-
-do_nothing :
-	@rem do_nothing
-
-MAKMAKE : do_nothing
-
-BLD : do_nothing
-
-CLEAN : do_nothing
-
-LIB : do_nothing
-
-CLEANLIB : do_nothing
-
-# ----------------------------------------------------------------------------
-# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by
-# MifConv if the mask detph is defined.
-#
-# NOTE 2: Usually, source paths should not be included in the bitmap
-# definitions. MifConv searches for the icons in all icon directories in a
-# predefined order, which is currently \s60\icons, \s60\bitmaps2, \s60\bitmaps.
-# The directory \s60\icons is included in the search only if the feature flag
-# __SCALABLE_ICONS is defined.
-# ----------------------------------------------------------------------------
-
-RESOURCE :
-	mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME)  \
-                /c8,8 qgn_indi_sett_protected_add.bmp\
-                /c8,8 qgn_prop_set_conn_dest_add.bmp\
-                /c8,8 qgn_prop_set_conn_dest_internet.bmp\
-                /c8,8 qgn_prop_set_conn_dest_wap.bmp\
-                /c8,8 qgn_prop_set_conn_dest_mms.bmp\
-                /c8,8 qgn_prop_set_conn_dest_intranet.bmp\
-                /c8,8 qgn_prop_set_conn_dest_operator.bmp\
-                /c8,8 qgn_prop_set_conn_dest_icon1.bmp\
-                /c8,8 qgn_prop_set_conn_dest_icon2.bmp\
-                /c8,8 qgn_prop_set_conn_dest_icon3.bmp\
-                /c8,8 qgn_prop_set_conn_dest_icon4.bmp\
-                /c8,8 qgn_prop_set_conn_dest_icon5.bmp\
-                /c8,8 qgn_prop_set_conn_dest_icon6.bmp\
-                /c8,8 qgn_prop_set_conn_dest_default.bmp\
-                /c8,8 qgn_prop_set_conn_dest_uncategorized.bmp\
-                /c8,8 qgn_prop_set_conn_bearer_avail_wlan.bmp\
-                /c8,8 qgn_prop_set_conn_bearer_avail_packetdata.bmp\
-                /c8,8 qgn_prop_set_conn_wlan_easy.bmp\
-                /c8,8 qgn_prop_set_conn_dest_internet_small.bmp\
-                /c8,8 qgn_prop_set_conn_dest_wap_small.bmp\
-                /c8,8 qgn_prop_set_conn_dest_mms_small.bmp\
-                /c8,8 qgn_prop_set_conn_dest_intranet_small.bmp\
-                /c8,8 qgn_prop_set_conn_dest_operator_small.bmp\
-                /c8,8 qgn_prop_set_conn_dest_icon1_small.bmp\
-                /c8,8 qgn_prop_set_conn_dest_icon2_small.bmp\
-                /c8,8 qgn_prop_set_conn_dest_icon3_small.bmp\
-                /c8,8 qgn_prop_set_conn_dest_icon4_small.bmp\
-                /c8,8 qgn_prop_set_conn_dest_icon5_small.bmp\
-                /c8,8 qgn_prop_set_conn_dest_icon6_small.bmp\
-                /c8,8 qgn_prop_set_conn_dest_default_small.bmp\
-                /c8,8 qgn_indi_cb_hot_add.bmp\
-                /c8,8 qgn_indi_default_conn_add.bmp
-
-FREEZE : do_nothing
-
-SAVESPACE : do_nothing
-
-RELEASABLES :
-	@echo $(HEADERFILENAME)&& \
-	@echo $(ICONTARGETFILENAME)
-
-FINAL : do_nothing
--- a/cmmanager/cmmgr/Framework/Inc/ccmdexec.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
-* Copyright (c) 2008 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:  Signaling class for destination edit.
-*
-*/
-
-
-#ifndef C_CCMDEXEC_H
-#define C_CCMDEXEC_H
-
-class MCmdExec;
-
-NONSHARABLE_CLASS(CCmdExec) : public CActive
-    {
-
-public:
-
-    /**
-    * Destructor.
-    */
-    virtual ~CCmdExec();
-    
-    void Execute();
-    
-// from base class CActive
-public:
-    virtual void RunL();
-
-    virtual TInt RunError( TInt /*aError*/ );
-
-    virtual void DoCancel();
-
-    CCmdExec(MCmdExec& aOwner);
-
-protected: // data
-
-    /**
-     * Owner
-     * Not own.
-     */
-    MCmdExec& iOwner;
-    };
-
-#endif
--- a/cmmanager/cmmgr/Framework/Inc/cmapplicationsettingsuiimpl.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of application selection dialog
-*
-*/
-
-#ifndef C_CMAPLICATIONSETTINGSUIIMPL_H
-#define C_CMAPLICATIONSETTINGSUIIMPL_H
-
-#include <e32def.h>
-#include <e32base.h>
-#include <ConeResLoader.h>
-#include <badesca.h>    // CDesCArrayFlat
-#include "cmmanager.hrh"
-#include "cmapplicationsettingsui.h"
-
-class TCmSettingSelection;
-class CCmManagerImpl;
-class CCmDestinationImpl;
-
-
-//IMPLEMENTATION REMOVED!!!!
-//JUST HERE TO MANTAIN BC COMPATIBILITY!!!
-/**
- *  Implementation of application setting UI.
- *
- *  @lib cmmanage.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS(CCmApplicationSettingsUiImpl) : public CBase
-    {
-
-    public:
-
-        IMPORT_C static CCmApplicationSettingsUiImpl* NewL();
-
-
-    //=========================================================================    
-    // UI API
-    //
-    public:
-
-        /**
-        * Launches the 'easy to use' Settings UI provided for applications
-        * for handling Destinations and Connection Methods
-        * @since 3.1U
-        * @params aSelection User selection.
-        * @returns ETrue if a selection was made
-        */
-        TBool RunApplicationSettingsL( TCmSettingSelection& aSelection );
-
-
-        /**
-        * Enables/Disabled AlwaysAsk
-        * 
-        * @param ETrue enables
-        * @since S60 3.2
-        */
-        inline void EnableAlwaysAsk( TBool aEnable ) 
-                                        { iShowAlwaysAsk = aEnable; }
-        
-        /**
-        * Enables/Disabled EasyWlan
-        * 
-        * @param ETrue enables
-        * @since S60 3.2
-        */
-        inline void EnableEasyWlan( TBool aEnable )
-                                        { iShowEasyWlan = aEnable; }
-        
-        /**
-        * Enables/Disabled VirtualCMs
-        * 
-        * @param ETrue enables
-        * @since S60 3.2
-        */
-        inline void EnableVirtualCMs( TBool aEnable )
-                                        { iShowVirtualCMs = aEnable; }
-        
-        /**
-        * Enables/Disabled EmptyDestinations
-        * 
-        * @param ETrue enables
-        * @since S60 3.2
-        */
-        inline void EnableEmptyDestinations( TBool aEnable ) 
-                                        { iShowEmptyDestinations = aEnable; }
-                                        
-        /**
-        * Sets a destination id which should be omitted from the list
-        * typically this will be the parent destination of a virtual CM
-        * 
-        * @param aDestinationId
-        * @since S60 3.2
-        */
-        inline void SetDestinationToOmit( TUint32 aDestinationId )
-                                    { iDestinationToOmit = aDestinationId; }
-
-                         
-    private: // data
-
-        /**
-         * pointer to the CmManager - OWNED
-         */
-        CCmManagerImpl* iCmManagerImpl;
-        
-        /**
-         * resource loader
-         */
-        RConeResourceLoader iResourceReader;
-        
-        /**
-         * List of destination IDs to show
-         */ 
-        RArray<TUint32> iDestinations;
-                
-        /**
-         * Indicates whether Always Ask should be shown in the page
-         */
-        TBool iShowAlwaysAsk;
-        
-        /**
-         * Indicates whether EasyWlan should be shown in the page
-         */
-        TBool iShowEasyWlan;
-        
-        /**
-         * Indicates whether virtual iaps should be shown in the page
-         */
-        TBool iShowVirtualCMs;
-        
-        /**
-         * Indicates whether Empty destinations should be shown in the page
-         */
-        TBool iShowEmptyDestinations;
-        
-        /**
-         * Indicates the id of destination to specifically omit (usually a parent destination)
-         * if zero, it can be ignored
-         */
-        TUint iDestinationToOmit;
-    };
-
-#endif // C_CMAPLICATIONSETTINGSUIIMPL_H
--- a/cmmanager/cmmgr/Framework/Inc/cmcommsdatnotifier.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
-* 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:  Listens for changes in one CommsDat table through CenRep.
-*
-*/
-
-#ifndef CMCOMMSDATNOTIFIER_H
-#define CMCOMMSDATNOTIFIER_H
-
-_LIT( KIapDisappear, "Iap disappears from CommsDat" );
-_LIT( KDestDisappear, "Destination disappears from CommsDat" );
-
-class CCmManagerImpl;
-class CRepository;
-class MCmCommsDatWatcher;
-
-// A stack to store watchers
-typedef CArrayPtrFlat<MCmCommsDatWatcher> CCmCallBackArray;
-
-// Used to notify parent view what happens during son's view editing.
-const TInt KCmNotifiedNone = 0;
-const TInt KCmNotifiedDestinationDisappear = 1;
-const TInt KCmNotifiedIapIsNotInThisDestination = 2;
-const TInt KCmNotifiedIapDisappear = 3;
-
-class MCmCommsDatWatcher
-    {
-public:
-    // watcher should implement this function to get the notification of CommsDat changes.
-    // see class CCmManagerImpl for watcher registration
-    virtual void CommsDatChangesL() = 0;
-    };
-
-// Used for son's watcher to notify parent watcher that CommsDat has changes
-// if farther watcher wants to know what heppens when son's watcher exiting
-class CCmParentViewNotifier
-    {
-public:
-    virtual void NotifyParentView( TInt aValue ) = 0;
-    };
-
-/*
- * CommsDat can suddenly change with some reasons, e.g., an application may suddenly add/delete a destination
- * and Iap. Those changes may affect CmManager. This class will listen to changes in one CommsDat table
- * through CenRep and inform related watcher that is interesting in CommsDat changes.
- */
-NONSHARABLE_CLASS( CCmCommsDatNotifier ) : public CActive
-    {
-public:
-
-    static CCmCommsDatNotifier* NewL( TUint32 aTableId );
-
-    static CCmCommsDatNotifier* NewLC( TUint32 aTableId );
-
-    virtual ~CCmCommsDatNotifier();
-    
-    void WatcherRegisterL( MCmCommsDatWatcher* aWatcher );
-    void WatcherUnRegister( );
-
-private:
-    CCmCommsDatNotifier( TUint32 aTableId );
-
-    void ConstructL();
-    TInt RequestNotifications();
-    
-    void DeleteCallBackArray();
-
-private: // Methods from base class
-    void DoCancel();
-    void RunL();
-
-private:
-    TUint32 iTableId;
-    CRepository* iRepository;
-    MCmCommsDatWatcher* iWatcher; // callback object that wants to see changes in CommsDat
-    CCmCallBackArray* iCallBackArray; // used as stack to go to the next view
-    };
-
-#endif // CMCOMMSDATNOTIFIER_H
-
-// End-of-file
--- a/cmmanager/cmmgr/Framework/Inc/cmconnectionmethodinfo.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Connection Method interface class.
-*
-*/
-
-#ifndef CMCONNECTIONMETHODINFO_H
-#define CMCONNECTIONMETHODINFO_H
-
-#include <cmpluginbaseeng.h>
-
-/**
- *  Acts as a connection method that has no bearer type.
- *  Client applications can query connection method, but non-bearer specific
- *  attributes by calling RCmManager/Ext::GetConnectionMethodInfoXXXL()
- *  functions.
- *  Modification and update of a connetion method is not supported.
- *  Common records of a connection method are loaded, and kept in memory
- *  as long as the client application queries attribute of another connection
- *  method.
- *
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CCmConnectionMethodInfo ) : public CCmPluginBaseEng
-    {
-    public:
-    
-        static CCmConnectionMethodInfo* NewL( TCmPluginInitParam *aInitParam );
-
-        static CCmConnectionMethodInfo* NewLC( TCmPluginInitParam *aInitParam );
-
-        virtual ~CCmConnectionMethodInfo();
-
-        virtual CCmPluginBaseEng* 
-                CreateInstanceL( TCmPluginInitParam& /*aInitParam*/ ) const;
-        virtual CCmPluginBaseEng* CreateCopyL() const;
-
-    public: // new functions
-    
-        virtual TUint32 GetConnectionInfoIntL( const TUint32 aIapId, 
-                                          const TUint32 aAttribute );
-                                          
-        virtual TBool GetConnectionInfoBoolL( const TUint32 aIapId, 
-                                         const TUint32 aAttribute );
-                                         
-        virtual HBufC* GetConnectionInfoStringL( const TUint32 aIapId, 
-                                            const TUint32 aAttribute );
-        
-        virtual HBufC8* GetConnectionInfoString8L( const TUint32 aIapId, 
-                                             const TUint32 aAttribute );
-        
-        virtual void AdditionalReset(){};
-
-        void ResetIfInMemory( CCmPluginBaseEng* aCM );
-
-    private: // from CCmPluginBaseEng
-    
-        virtual TInt RunSettingsL();
-        virtual TBool InitializeWithUiL( TBool aManuallyConfigure );
-        virtual TBool CanHandleIapIdL( TUint32 aIapId ) const;
-        virtual TBool CanHandleIapIdL( CommsDat::CCDIAPRecord* aIapRecord ) const;
-        virtual void CopyAdditionalDataL( CCmPluginBaseEng* aDestInst );
-
-    private:
-    
-        virtual void ServiceRecordIdLC( HBufC* &aServiceName, 
-                                       TUint32& aRecordId );
-        virtual void BearerRecordIdLC( HBufC* &aBearerName, 
-                                           TUint32& aRecordId );
-        virtual void CreateNewServiceRecordL();
-        
-        void ResetAndLoadL( TUint32 aIapId );
-        
-    private:
-
-        CCmConnectionMethodInfo( TCmPluginInitParam *aInitParam );
-
-        void ConstructL();
-
-    private:    // new functions
-    
-    private: // data
-    };
-
-
-#endif // CMCONNECTIONMETHODINFO_H
--- a/cmmanager/cmmgr/Framework/Inc/cmconnselectrbpage.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,164 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Dialog for setting the gateway. It's used temporarily.
-*
-*/
-
-#ifndef C_CMCONNSELECTRBPAGE_H
-#define C_CMCONNSELECTRBPAGE_H
-
-#include <aknradiobuttonsettingpage.h>
-#include <csxhelp/cp.hlp.hrh>
-#include <cmcommonconstants.h>
-
-#include "cmmanagerimpl.h"
-#include "cmconnsettingsuiimpl.h"
-
-/**
- * Application Settings UI radio button page
- *
- *  @lib cmmanager.lib
- *  @since S60 3.2
- */
-NONSHARABLE_CLASS(CCMConnSelectRBPage) : public CAknRadioButtonSettingPage
-    {
-    
-   public: // construction/destruction
-    
-        /**
-         * Constructor
-         *
-         * @since S60 3.2
-         * @param aDialogResourceId resource id for the dialog
-         * @param aCurrentSelectionIndex the item to be highlighted
-         * @param aItemArray the items to be displayed
-         * @param aCmManagerImpl reference to the cm manager
-         * @param aSelectionMode the selected item type
-         * @param aHelpContext help context to use when Help menuitem is selected
-         */
-        CCMConnSelectRBPage( TInt aDialogResourceId,
-                          TInt& aCurrentSelectionIndex, 
-                          const MDesCArray* aItemArray, 
-                          CCmManagerImpl& aCmManagerImpl, 
-                          CMManager::TCmDCSettingSelectionMode& aSelectionMode,
-                          RArray<TUint32>& aDestinations,
-                          TBool areDestinations, 
-                          TBool aOpenDestination,
-                          TCoeContextName& aHelpContext );
-        
-        /**
-         * Destructor
-         */
-        ~CCMConnSelectRBPage();
-    
-    public: // derived functions
-    
-        /**
-        * From CCoeControl
-        *
-        * @since S60 3.2
-        * @param aKeyEvent The key event.
-        * @param aType Key event type.
-        * @return key response (was the key event consumed?).
-        */
-        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                     TEventCode aType );    
-        
-        /**
-        * Returns the help context
-        * From CCoeControl
-        * 
-        * @since S60 3.2
-        * @param aContext the returned help context
-        */
-        void GetHelpContext( TCoeHelpContext& aContext ) const;
-        
-        /**
-        * Handle list box events
-        * From CCoeControl
-        * 
-        * @since S60 5.0
-        * @param aListBox Reference to list box object.
-        * @param aEventType Type of event.
-        */
-        void HandleListBoxEventL(CEikListBox* aListBox, MEikListBoxObserver::TListBoxEvent aEventType);
-		
-    private: // derived functions
-        
-        /*
-        * From CEikDialog
-        *
-        * @since S60 3.2
-        * @param aButtonId
-        */
-        TBool OkToExitL( TInt aButtonId );
-        
-        /*
-         * From MEikMenuObserver
-         *
-         * @since S60 3.2
-         * @param aResourceId
-         * @param aMenuPane
-         */
-        void DynInitMenuPaneL( TInt aResourceId,
-                               CEikMenuPane* aMenuPane );    
-        
-        /**
-        * From MEikCommandObserver
-        *
-        * @since S60 3.2
-        * @param aCommandId
-        */
-        void ProcessCommandL( TInt aCommandId );
-
-    private: // data
-            
-        /**
-         * Resource id of the used dialog type
-         */
-		TInt iDialogResourceId;
-		
-        /**
-         * reference to the cm manager
-         */
-        CCmManagerImpl& iCmManagerImpl;
-        
-        /**
-         * The selection made by the user
-         */
-        CMManager::TCmDCSettingSelectionMode& iSelectionMode;
-        
-        /**
-         * A list of destination ids
-         */
-        RArray<TUint32>& iDestinations;
-        /**
-         * Indicates whether iDestinations holds destinatos or CMs
-         */
-        TBool iAreDestinations;
-        /**
-         * Indicates whether iDestinations should be openable
-         */
-        TBool iOpenDestination;
-        /**
-         * help context
-         */        
-        TCoeContextName iHelpContext;
-        /**
-         * Previously selected item
-         */
-        TInt iPrevItem;
-    };
-    
-#endif // C_CMAPPSETTRBPAGE_H
--- a/cmmanager/cmmgr/Framework/Inc/cmconnsettingsuiimpl.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,566 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of application selection dialog
-*
-*/
-
-#ifndef C_CMCONNSETTINGSUIIMPL_H
-#define C_CMCONNSETTINGSUIIMPL_H
-
-#include <e32def.h>
-#include <e32base.h>
-#include <ConeResLoader.h>
-#include <badesca.h>    // CDesCArrayFlat
-#include <cmdefconnvalues.h>
-#include <hlplch.h>
-
-#include "cmmanager.hrh"
-#include "cmapplicationsettingsui.h"
-
-class TCmDCSettingSelection;
-class CCmManagerImpl;
-class CCmDestinationImpl;
-class CCmPluginBase;
-
-//CONSTS
-const TInt KCmDefConnIndex = 0;
-const TInt KCmUserDefinedIndex  = 1;
-
-namespace CMManager
-    {
-    enum TCmDCSettingSelectionMode
-        {
-        EDCAlwaysAsk,         /**<
-                            * The user selected Always Ask
-                            */
-        EDCAskOnce,         /**<
-                            * The user selected Ask Once
-                            */
-        EDCDestination,       /**<
-                            * The user selected a destination
-                            */
-        EDCConnectionMethod,   /**<
-                            * The user selected a connection method
-                            */
-        EDCDefaultConnection   /**<
-                            * The user selected a connection method
-                            */
-        };
-    } //namespace CmManager
-    
-/**
- * Stores the details of a setting selection
- *
- *  @since S60 3.2
- */
-NONSHARABLE_STRUCT( TCmDCSettingSelection ) //extended with Ask Once
-    {
-    /**
-    * Selection that the user made
-    */
-    CMManager::TCmDCSettingSelectionMode iResult;
-    
-    /**
-    * Id of the selected destination or connection method
-    */
-    TUint iId;
-    // -----------------------------------------------------------------------------
-    // TCmDCSettingSelection::operator==
-    // -----------------------------------------------------------------------------
-    //
-    inline TBool TCmDCSettingSelection::operator==( TCmDCSettingSelection& aDCSettingSelection ) const
-        {
-        return ( (iResult == aDCSettingSelection.iResult) && ( iId == aDCSettingSelection.iId ) );
-        };
-
-    // -----------------------------------------------------------------------------
-    // TCmDCSettingSelection::operator!=
-    // -----------------------------------------------------------------------------
-    //
-    inline TBool TCmDCSettingSelection::operator!=( TCmDCSettingSelection& aDCSettingSelection ) const
-        {
-        return (!( (iResult == aDCSettingSelection.iResult) && ( iId == aDCSettingSelection.iId ) ));
-        };    
-    // -----------------------------------------------------------------------------
-    // TCmDCSettingSelection::ConvertToDefConn
-    // -----------------------------------------------------------------------------
-    //
-    inline TCmDefConnValue TCmDCSettingSelection::ConvertToDefConn( ) const
-        {
-        TCmDefConnValue defConnValue;
-        defConnValue.iType = ECmDefConnAlwaysAsk;
-        defConnValue.iId = 0;
-        switch ( iResult )
-            {
-            case CMManager::EDCAlwaysAsk :       
-                {
-                defConnValue.iType = ECmDefConnAlwaysAsk;
-                break;
-                }
-            case CMManager::EDCAskOnce :   
-                {
-                defConnValue.iType = ECmDefConnAskOnce;
-                break;
-                }
-            case CMManager::EDCDestination :
-                {
-                defConnValue.iType = ECmDefConnDestination;
-                defConnValue.iId = iId;
-                break;
-                }
-            case CMManager::EDCConnectionMethod :
-                {
-                defConnValue.iType = ECmDefConnConnectionMethod;
-                defConnValue.iId = iId;
-                break;
-                }
-            case CMManager::EDCDefaultConnection : 
-                {
-                defConnValue.iType = ECmDefConnAlwaysAsk; //default value
-                break;
-                }
-            default:
-                {
-                defConnValue.iType = ECmDefConnAlwaysAsk; //default value
-                break;
-                }
-            };
-        return defConnValue; 
-        };
-     };    
-    
-
-        
-/**
- *  Implementation of application setting UI.
- *
- *  @lib cmmanage.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS(CCmConnSettingsUiImpl) : public CBase
-    {
-
-    public:
-
-        IMPORT_C static CCmConnSettingsUiImpl* NewL( CCmManagerImpl* aCCmManagerImpl = NULL );
-        static CCmConnSettingsUiImpl* NewWithoutTablesL();
-
-        virtual ~CCmConnSettingsUiImpl();
-
-    //=========================================================================    
-    // UI API
-    //
-    public:
-
-        /**
-        * Launches the 'easy to use' Settings UI provided for applications
-        * for handling Destinations and Connection Methods
-        *
-        * @since 3.2
-        * @param aSelection If initialised to a valid value, sets the higlight to the
-        * corresponding list item at startup. If a list of Destinations is displayed, and
-        * the initial highlight is set to a Connection Method, the parent Destination
-        * gets highlighted. On return, holds user selection.
-        * @param aListItems A bit field which indicates which items shoud be
-        *                   shown in the selection dialog. The bitmasks are 
-        *                   defined in the TCmSelectionDialogItems enum.
-        *
-        * The function leaves with KErrNotSupported  if all the items which 
-        * were set to be shown are not supported/enabled. 
-        * E.g. Default Connection availability/support is controlled by the 
-        * Feature Manager so if only EShowDefaultConnection is set and the 
-        * Default Connection feature is not enabled than the function leaves
-        * with KErrNotSupported.
-        *
-        * In other cases (when an item or items are not supported/enabled but
-        * not all) the selected but not supported/enabled items are not added
-        * to the list. The request to show such an item is silently ignored.
-        *
-        *
-        * Special note about the EShowDestinations and EShowConnectionMethods
-        * bitmasks:      
-        *   The following enumerations controls how how destinations and 
-        *   Connection Methods are presented in the selection UI.
-        *   General rule about the EShowDestinations:
-        *     Destinations which does not contain any Connection Methods are 
-        *     not shown in the selection dialog. The same rule is applied if
-        *     the Destination containes Connection Methods but all of them 
-        *     are filtered out by the filtering criteria.
-        *   EShowDestinations is set and EShowConnectionMethods is set:
-        *     Destination list is added to the selection UI and a Connection
-        *     Method can be selected inside a Destination.
-        *   EShowDestinations is set and EShowConnectionMethods is not set:
-        *     Destination list is added to the selection UI and no Connection
-        *     Method can be selected inside a Destination. 
-        *   EShowDestinations is not set and EShowConnectionMethods is set:
-        *     Connection Method list is added to the selection UI. Connection
-        *     Methods are ordered according to the global bearer type 
-        *     priorities. Destination cannot be selected.
-        *   EShowDestinations is not set and EShowConnectionMethods is not set:
-        *     The selection UI will not contain any Destination or Connection 
-        *     Method. E.g. If EShowAlwaysAsk and EShowDefaultConnection was 
-        *     set then the selection UI will contain two entries (AlwaysAsk
-        *     and DefaultConnection).
-        *
-        * @param aFilterArray Only Connection Methods with bearer types from
-        *                     the aFilterArray will be showed. 
-        *                     All Connection Methods will be listed if the 
-        *                     array has no element.
-        * @return TBool seleceted or not.
-        *
-        * @leave KErrArgument If the selection dialog would have zero 
-        *                     elements based on the aListItems bitmask
-        *                     (aListItems is equal to zero). 
-        *
-        * @leave KErrNotSupported 
-        *                     If the selection dialog would have zero 
-        *                     elements based on the aListItems bitmask
-        *                     (all the selected elements in aListItems  
-        *	                  are not supported/disabled).
-        *                     E.g. aListItems = EShowDefaultConnection but 
-        *                     Default Connection feature is not enabled.
-        *
-        * @leave KErrNotFound If the selection dialog would have zero 
-        *                     elements caused by filtering out all the 
-        *                     Connection Methods with the aFilterArray
-        *                     and not requesting other list elements by 
-        *                     the aListItems bitfield than an error note
-        *                     is shown and the function call leaves with 
-        *                     KErrNotFound error code. 
-        *                     E.g. 
-        *                       - aListItems = EShowConnectionMethods
-        *                     but all Connection Methods are filtered 
-        *                     out by the aFilterArray.
-        */
-        IMPORT_C TBool RunApplicationSettingsL( 
-                                        TCmSettingSelection& aSelection, 
-                                        TUint aListItems,
-                                        TBearerFilterArray& aFilterArray);
-
-        /**
-        * Launches the Default Connection Radio Button Page
-        * for use in Destinations View
-        * @since 3.1U
-        * @params aSelection User selection.
-        * @returns ETrue if a selection was made
-        */
-        TBool RunDefaultConnecitonRBPageL ( TCmDCSettingSelection& aSelection );
-        
-        /**
-        * Creates and returns a string which contains the default connection name
-        * for use in Destinations View
-        * @since 3.1U
-        * @params aSelection User selection.
-        * @returns the default connection name
-        */        
-        HBufC* CreateDefaultConnectionNameL( TCmDefConnValue aSelection );
-        
-        /**
-        * Enables/Disables AlwaysAsk
-        * 
-        * @param ETrue enables
-        * @since S60 3.2
-        */
-        inline void EnableAlwaysAsk( TBool aEnable ) 
-                                        { iShowAlwaysAsk = aEnable; }
-        
-        /**
-        * Enables/Disables EasyWlan
-        * 
-        * @param ETrue enables
-        * @since S60 3.2
-        */
-        inline void EnableEasyWlan( TBool aEnable )
-                                        { iShowEasyWlan = aEnable; }
-        
-        /**
-        * Enables/Disables VirtualCMs
-        * 
-        * @param ETrue enables
-        * @since S60 3.2
-        */
-        inline void EnableVirtualCMs( TBool aEnable )
-                                        { iShowVirtualCMs = aEnable; }
-        
-        /**
-        * Enables/Disables EmptyDestinations
-        * 
-        * @param ETrue enables
-        * @since S60 3.2
-        */
-        inline void EnableEmptyDestinations( TBool aEnable ) 
-                                        { iShowEmptyDestinations = aEnable; }
-                                        
-        /**
-        * Sets a destination id which should be omitted from the list
-        * typically this will be the parent destination of a virtual CM
-        * 
-        * @param aDestinationId
-        * @since S60 3.2
-        */
-        inline void SetDestinationToOmit( TUint32 aDestinationId )
-                                    { iDestinationToOmit = aDestinationId; }
-        
-        /**
-        * Enables/Disables Ask Once
-        * 
-        * @param ETrue enables
-        * @since S60 3.2
-        */
-        inline void EnableAskOnce( TBool aEnable ) 
-                                        { iShowAskOnce = aEnable; }
-                                        
-        /**
-        * Enables/Disables Uncategorised item
-        * 
-        * @param ETrue enables
-        * @since S60 3.2
-        */
-        inline void EnableUncat( TBool aEnable ) 
-                                        { iShowUncat = aEnable; }
-                                        
-        /**
-        * Enables/Disables Default Connection item
-        * 
-        * @param ETrue enables
-        * @since S60 3.2
-        */
-        inline void EnableDefConn( TBool aEnable ) 
-                                        { iShowDefConn = aEnable; }
-
-
-
-        /**
-        * Sets the array of destinations to be used.
-        * Typically this routine will be used by plugins having 
-        * restrictions on possible destinations.
-        * 
-        * @param aDestinationArray
-        * @since S60 3.2
-        */
-        IMPORT_C void SetDestinationArrayToUseL( RArray<TUint32> aDestinationArray );
-
-        /**
-        * Clear previously passed destinations and return to normal use.
-        *
-        * @since S60 3.2
-        */
-        IMPORT_C void ClearDestinationArrayToUse();
-                                                
-    private:
-
-        CCmConnSettingsUiImpl();
-
-        void ConstructL( CCmManagerImpl* aCCmManagerImpl = NULL );
-
-        TInt LoadResourceL ();
-        
-        /**
-        * Displays a set of destinations for selecting a network connection
-        *
-        * @param aSelection If initialised to a valid value, sets the higlight to the
-        * corresponding list item at startup. If a list of Destinations is displayed, and
-        * the initial highlight is set to a Connection Method, the parent Destination
-        * gets highlighted. On return, holds user selection.
-        * @return soft key selection
-        */
-        TBool ShowConnSelectRadioPageL( TCmDCSettingSelection& aSelection, 
-                        const TInt aTitleStringResource, 
-                        TBearerFilterArray& aFilterArray );
-
-        /**
-        * Displays a the Default Connection/User Defined radio button page 
-        *
-        * @param aSelection If initialised to a valid value, sets the higlight to the
-        * corresponding list item at startup. If a list of Destinations is displayed, and
-        * the initial highlight is set to a Connection Method, the parent Destination
-        * gets highlighted. On return, holds user selection.
-        * @return soft key selection
-        */
-    //    TBool ShowDefConnRadioPageL( TInt& aSelection );
-
-        
-        /**
-        * Return array of destination of which have at least connection method
-        * @param aItems array of destination names
-        */
-        void BuildDestinationArrayL( CDesCArrayFlat* aItems, 
-                                        TBearerFilterArray& aFilterArray );
-
-        /**
-        * Return array of CMs of which have at least connection method
-        * @param aItems array of destination names
-        */
-        void BuildCMArrayL( CDesCArrayFlat* aItems, 
-                            TBearerFilterArray& aFilterArray );
-
-        /**
-        * Put the array of CMs into iConnMethods
-        */
-        void GetCMArrayL( );
-
-        /**
-        * Build uncategorized connection method array and append
-        * 'Uncategorized' item if there's any.
-        * @param aUncatArray array of uncategorized connection method ids.
-        * @param aItems array of destination names
-        */
-        void BuildUncatArrayL( RPointerArray<CCmPluginBase>& aUncatArray,
-                               CDesCArrayFlat* aItems, 
-                               TBearerFilterArray& aFilterArray );
-        /**
-        * Show destination selection dialog.
-        * @param aDestSelected index of selected destination
-        * @param aItems array of destination names
-        * @param aSelection If initialised to a valid value, sets the higlight to the
-        * corresponding list item at startup. If a list of Destinations is displayed, and
-        * the initial highlight is set to a Connection Method, the parent Destination
-        * gets highlighted. On return, holds user selection.
-        * @return ETrue if a selection was made
-        */
-        TBool UserSelectionDlgL( TInt& aDestSelected, 
-                                 CDesCArrayFlat* aItems, 
-                                 TCmDCSettingSelection& aSelection,
-                                 const TInt aTitleStringResource,
-                                 TBool aOpenDestination );
-
-        /**
-        * Show uncategorized connection method selection dialog
-        * @param aUncatArray list of uncategorized connection methods.
-        * @param aSelection If initialised to a valid value, sets the higlight to the
-        * corresponding list item at startup. On return, holds user selection.
-        * @return softkey selection.
-        */
-        TBool UserSelectedUncatItemL( RPointerArray<CCmPluginBase>& aUncatArray,
-                                      TCmDCSettingSelection& aSelection, 
-                                        const TInt aTitleStringResource );
-                                      
-        /**
-        * A radio button page of all the connection methods belonging to
-        * a the specified destination
-        *
-        * @param aDestinationId the destination from which a connection
-        *                       method will be selected
-        * @param aSelection If initialised to a valid value, sets the higlight to the
-        * corresponding list item at startup. On return, holds user selection.
-        * @return soft key selection
-        */
-        TBool ShowConnectionMethodsL( RPointerArray<CCmPluginBase>& aCmArray, 
-                                      TCmDCSettingSelection& aSelection, 
-                                      const TInt aTitleStringResource,
-                                      TBearerFilterArray& aFilterArray );
-
-        /**
-        * Checks if a Connection method is virtual
-        *
-        * @since S60 3.2
-        * @param aCmIapId the iap id of the CM
-        * @return ETrue if virtual
-        */
-        TBool IsCmVirtualL( TUint32 aCmIapId );
-                         
-    private: // data
-
-        /**
-         * pointer to the CmManager - OWNED
-         */
-        CCmManagerImpl* iCmManagerImpl;
-        
-        /**
-         * resource loader
-         */
-        RConeResourceLoader iResourceReader;
-        
-        /**
-         * List of destination or CM IDs to show
-         */ 
-        RArray<TUint32> iItems;
-        /**
-         * Indicates whether iItems holds destinatos or CMs
-         */
-        TBool iAreDestinations;
-                        
-        /**
-         * Indicates whether Always Ask should be shown in the page
-         */
-        TBool iShowAlwaysAsk;
-        
-        /**
-         * Indicates whether EasyWlan should be shown in the page
-         */
-        TBool iShowEasyWlan;
-        
-        /**
-         * Indicates whether virtual iaps should be shown in the page
-         */
-        TBool iShowVirtualCMs;
-        
-        /**
-         * Indicates whether Empty destinations should be shown in the page
-         */
-        TBool iShowEmptyDestinations;
-        
-        /**
-         * Indicates the id of destination to specifically omit (usually a parent destination)
-         * if zero, it can be ignored
-         */
-        TUint iDestinationToOmit;
-        
-        /**
-         * Indicates whether Ask Once item should be shown in the page
-         */
-        TBool iShowAskOnce;
-
-        /**
-         * Indicates whether Uncategorized item should be shown in the page
-         */
-        TBool iShowUncat;
-        
-        /**
-         * Indicates whether Default Connection item should be shown in the page
-         */
-        TBool iShowDefConn;
-                
-        /**
-         * Indicates whether we have an own CmManager that we have to create and destroy
-         */
-        TBool iOwnCmManager;
-
-        /**
-         * Indicates whether the selected destinaton should be opened
-         */
-        TBool iOpenDestination;
-        
-        /**
-        * Indicates whether to use a passed list of destinations 
-        * or use our own algorithm to get the list of possible destinations.
-        */
-        TBool iUsePassedDestinationArray;
-        
-        /**
-        * An Array to hold the passed destinations.
-        */
-        RArray<TUint32> iPassedDestinations;
-        
-        /**
-         * help context
-         */        
-        TCoeContextName iHelpContext;        
-
-        /**
-         * Indicates whether the tables should be created
-         */
-        TBool iCreateTables;
-    };
-#endif // C_CMCONNSETTINGSUIIMPL_H
--- a/cmmanager/cmmgr/Framework/Inc/cmdesticondialog.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Destination icon dialog
-*
-*/
-
-#ifndef CMDESTICONDIALOG_H
-#define CMDESTICONDIALOG_H
-
-#include <AknDialog.h>// <eikdialg.h>
-
-/**
- * Change Icon table for destinations.Contains all the icon available
- */
-NONSHARABLE_CLASS(CCmDestinationIconDialog) : public CAknDialog
-    {
-    public:
-
-        /**
-        * Destinations change Icon table constructor. 
-        *
-        * @param aIconIndex selected icon index. 
-        *
-        */
-        CCmDestinationIconDialog( TInt& aIconIndex );
-
-        /**
-        * Destinations change Icon table destructor. 
-        * C++ destructor
-        */
-        ~CCmDestinationIconDialog();
-
-    public: // from CEikDialog
-
-        /**
-        * Prepares and runs the dialog and returns the id of the button used to 
-        * dismiss it. The dialog is constructed from the resource with id 
-        * aResourceId and is destroyed on exit.
-        *
-        * @return Id of the button used to dismiss dialog.
-        */
-        TInt ExecuteLD();
-        
-#ifdef RD_SCALABLE_UI_V2
-
-	    //From MCoeControlObserver
-	    void HandleControlEventL( CCoeControl* aControl,
-	                              TCoeEvent aEventType );
-	    void HandleDialogPageEventL( TInt aEventID );
-	    
-#endif // RD_SCALABLE_UI_V2 	
-
-    public: // from CCoeControl
-
-        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                      TEventCode /*aType*/ );
-        void HandleResourceChange(TInt aType);
-        SEikControlInfo CreateCustomControlL(TInt aControlType);
-
-    protected: // from CEikDialog
-    
-         virtual TBool OkToExitL(TInt);
-         virtual void PreLayoutDynInitL();
-         virtual void SetSizeAndPosition(const TSize& aSize);
-
-    private: 
-
-         virtual void CEikDialog_Reserved_1();
-         virtual void CEikDialog_Reserved_2();
-
-    private: // new function
-    
-         virtual void CAknIconMapDialog_Reserved();
-
-    private:
-    
-        TInt* iIconIndex;
-
-#ifdef RD_SCALABLE_UI_V2     
-
-    	TBool iConSelected;
-
-#endif // RD_SCALABLE_UI_V2  
-    };
-
-#endif  // LMKICONDIALOG_H
--- a/cmmanager/cmmgr/Framework/Inc/cmdesticonmap.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,251 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Destination icon map
-*
-*/
-
-#ifndef CMDESTICONMAP_H
-#define CMDESTICONMAP_H
-
-#include <coecntrl.h>
-#include <AknUtils.h>
-#include <gulicon.h>
-#include <AknIconArray.h>
-
-
-class CCmDestinationIconMapExtension;
-class CEikScrollBarFrame;
-class CCmDestinationIconMapExtension;
-
-
-/**
- * Change Icon Dialog table Destination UI.
- *
- */
-NONSHARABLE_CLASS(CCmDestinationIconMap) : public CCoeControl
-                                         , public MEikScrollBarObserver
-    {
-    public: 
-        
-        /** 
-        * CCmDestinationIconMap two phase constructor
-        */
-        static CCmDestinationIconMap* NewL();    
-        
-        /** 
-        * CCmDestinationIconMap destructor
-        */
-         ~CCmDestinationIconMap();
-        
-        /** 
-        * CCmDestinationIconMap resource constructor.
-        * @param aReader Icon Dialog table Resource
-        */
-         void ConstructFromResourceL( TResourceReader& aReader );
-
-        /**
-        * Number of rows in the icon table.
-        * @return Number of rows in icon table.
-        */
-         TInt HeightInRows();
-        
-        /**
-        * Create the scrollbar Ptr and set the No of Rows in the 
-        * Icon table depends upon the Icon array count.
-        */
-         void CreateScrollBarAndIconRowL();
-        
-        /**
-        * Sets reference to the index where selected icon index is put.
-        * @param aIconIndex Reference to the integer where selected icon 
-        * index is put.
-        */
-         void SetIndex(TInt& aIconIndex);
-
-    private:
-    
-        /** 
-        * CCmDestinationIconMap constructor
-        */
-         CCmDestinationIconMap();
-
-        /** 
-        * CCmDestinationIconMap two phase constructor
-        */
-        void ConstructL();
-        
-    public: // from CCoeControl
-    
-         TSize MinimumSize();
-         TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode);
-         TCoeInputCapabilities InputCapabilities() const;
-         virtual void ActivateL();
-
-#ifdef RD_SCALABLE_UI_V2
-
- 	    void HandlePointerEventL( const TPointerEvent& aPointerEvent );
- 	    void SetObserver( MCoeControlObserver* aObserver  );
- 	    
-#endif //RD_SCALABLE_UI_V2
-
-    protected: // from CCoeControl
-    
-         void SizeChanged();
-         void HandleResourceChange(TInt aType);
-         TInt CountComponentControls() const;
-         CCoeControl* ComponentControl(TInt aIndex) const;
-
-    public: 
-
-        /**
-        * DrawOffscreenBackgroundIfRequired().
-        *
-        * @Description:Draw the offscreen bitmap if applicable.
-        *              Specially in case of Skin change
-        */
-        void DrawOffscreenBackgroundIfRequired() const;
-
-        /**
-        * DoLayout()
-        * @Description: Sets the Layout of the Icon table.
-        */
-        void DoLayout();
-
-    private:
-    
-        /**
-        * Draw().
-        *
-        * @Description:
-        */
-        void Draw(const TRect& aRect) const;
-
-        /**
-        * DrawItem().
-        *
-        * @Description:
-        */
-        void DrawItem( CWindowGc& aGc,
-                       const TRect& aSctPosition,
-                       TInt aIconIndex,
-                       TBool aHighlighted,
-                       TBool aDrawBackground ) const;
-
-        /**
-        * DrawCursor().
-        *
-        * @Description:
-        */
-        void DrawCursor() const;
-        
-        /**
-        * MoveCursorL().
-        *
-        * @Description:
-        */
-        void MoveCursorL( TInt aX, TInt aY );
-
-        /**
-        * DrawCell().
-        *
-        * @Description:
-        */
-        void DrawCell( TInt aCursorPos, TBool aHighLighted ) const;
-        
-        /**
-        * CursorRect().
-        *
-        * @Description:
-        */
-        TRect CursorRect( TInt aCursorPos ) const;
-        
-        /**
-        * CursorPoint().
-        *
-        * @Description:
-        */
-        TPoint CursorPoint( TInt aCursorPos ) const;
-
-        /**
-        * UpdateScrollIndicatorL().
-        *
-        * @Description:
-        */
-        void UpdateScrollIndicatorL();
-
-        /**
-        * CountMaxColumnsAndCellSizes().
-        *
-        * @Description:
-        */
-        void CountMaxColumnsAndCellSizes();
-
-        /**
-        * LoadIconL().
-        * This fucton leaves if the client does not have a valid UI context
-        *
-        * @Description:
-        */
-        void LoadIconL();
-
-        /**
-        * Extension().
-        *
-        * @Description:
-        */
-        CCmDestinationIconMapExtension* Extension() const;        
-     
-    private: //from CCoeContrl
-
-        void Reserved_1();
-        void Reserved_2();
-        
-    public:
-
-        void HandleScrollEventL( CEikScrollBar* aScrollBar, 
-                                 TEikScrollEvent aEventType);
-
-    private:
-        TInt                iGridItemWidth;
-        TInt                iGridItemHeight;
-        TBool               iIsMirrored;
-        TInt                iRows;
-        TInt                iFirstVisibleRow;
-        TPoint              iOffset;
-        TPoint              iGridTopLeft;
-
-        TPoint              iCursorPos;
-        TPoint              iOldCursorPos;
-        mutable TBool       iDrawnBefore;
-
-        CEikScrollBarFrame* iSBFrame;
-        TInt*               iIconIndex;
-
-        TBool               iAnimated;
-
-        CFbsBitmap*         iOffscreenBg;
-        CFbsBitmapDevice*   iBitmapDevice;
-        CFbsBitGc*          iBitmapGc;
-        TBool               iHasBitmapBackground;
-        mutable TBool       iOffscreenBgDrawn;
-
-        TInt                iMaxColumns;
-        TInt                iCurrentPage;
-        TInt                iNumPages;
-        CCmDestinationIconMapExtension*   iExtension;
-        CArrayPtr<CGulIcon>*  iConsArray;
-        TBool               iDragAlreadyActive;
-    };
-
-#endif // __CMDESTICONMAP_H
--- a/cmmanager/cmmgr/Framework/Inc/cmdestinationimpl.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,992 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of destination class.
-*
-*/
-
-#ifndef DESTINATIONIMPL_H
-#define DESTINATIONIMPL_H
-
-// User includes
-#include "cmmanager.hrh"
-#include <cmmanagerdef.h>
-
-// System includes
-#include <e32def.h>
-#include <e32base.h>
-#include <metadatabase.h>
-#include <commsdattypesv1_1.h>
-
-// CONSTANTS
-const TInt KCmInitIndex =  1;
-const TInt KNumOfIcons = 12;
-
-#define RECORD_FROM_ELEMENT_ID( elementId ) \
-                                    (( elementId & KCDMaskShowRecordId ) >> 8 )
-
-enum TSnapMetadataProtecionLevel
-    {
-    EProtectionLevel0 = 0x00000000,
-    EProtectionLevel1 = 0x10000000,
-    EProtectionLevel2 = 0x20000000
-    };
-    
-#define KSnapMetadataProtecionLevelMask 0xF0000000;
-
-// DATA TYPES    
-    
-// FORWARD DECLARATIONS
-class CCmManagerImpl;
-class CCmPluginBaseEng;
-class CCmPluginBase;
-class TCmPluginInitParam;
-class CPluginItem;
-class CCDDataMobilitySelectionPolicyRecord;
-class CGulIcon;
-class CCmTransactionHandler;
-class CCDSNAPMetadataRecord;
-
-typedef CArrayPtrFlat<CPluginItem> CCmArray;
-
-#define KFlagRemove 0x00000001
-
-typedef CCDDataMobilitySelectionPolicyRecord CCDSnapRecord;
-
-const TUint32 KCmDefaultDestinationAPTagId = 0x1000;
-
-// CLASS DECLARATION
-NONSHARABLE_CLASS(CPluginItem) : public CBase
-    {
-    public:
-    
-        enum
-            {
-            ERemoveCm   = 0x00000001
-            };
-            
-    public:
-        
-        CCDSnapRecord*     iDNRecord;
-        CCmPluginBase*   iPlugin;
-        TUint32             iFlags;
-    };        
-
-/**
- * Holds all the destination specific data of the CCmDestinationImpl
- * This class is put in the object pool and may be shared
- * among CCmDestinationImpl objects
- */
-NONSHARABLE_CLASS( CCmDestinationData ): public CBase
-    {
-    //=====================================================================
-    // Constructors/Destructors
-    // 
-    public:
-        CCmDestinationData( CCmManagerImpl& aCmMgr );
-        ~CCmDestinationData();
-        /**
-        * Increments the reference counter. Used by the object pool.
-        */
-        void IncrementRefCounter();
-        /**
-        * Increments the reference counter. Used by the object pool.
-        */
-        void DecrementRefCounter();
-    private:
-        /**
-        * Reset and, if needed, destroy the passed array.
-        * @since S60 3.2
-        * @param aArray array to be reseted and deleted
-        * @parar aDestroy ETrue if array has to be deleted
-        */
-        void ResetAndDestroyArray( CCmArray* &aArray, TBool aDestroy );
-        
-    public:
-        /**
-        * Returns the number of connection methods of the destination
-        * @param None
-        * @return TInt        
-        */                  
-        TInt ConnectionMethodCount();
-        
-        /**
-        * Returns the destination's Id attribute
-        * @param None
-        * @return TUint32        
-        */            
-        inline TUint32 Id(){return iDestAPRecord->iRecordTag;};
-                
-        /**
-        * Returns the destination's ElementId attribute
-        * @param None
-        * @return TUint32        
-        */            
-        inline TUint32 ElementId() 
-        { return iNetworkRecord->ElementId() & KCDMaskShowField;};
-    
-        /**
-        * Returns that the destination is protected or not.
-        * @return protection level   
-        */
-        CMManager::TProtectionLevel ProtectionLevel();
-        
-        /**
-        * Returns that the destination is hidden or not.
-        * @param None
-        * @return TBool   
-        */
-        TBool IsHiddenL(); 
-
-        /**
-        * Indicates if the Id is valid or if this is a new object which sitll
-        * haven't been updated. 
-        * Used by the object pool.
-        * @return TBool
-        */
-        TBool IdIsValid();
-
-        /**
-        * Returns the reference counter. Used by the object pool.
-        * @return TInt
-        */
-        TInt GetRefCounter();
-        /** 
-        * Returns pointer to the CmManager object
-        * Used in 'R' classes
-        */
-        CCmManagerImpl* Cmmgr();
-
-        /**
-        * Returns the Metadata
-        * @param None
-        * @return TUint32        
-        */            
-        TUint32 MetadataL( CMManager::TSnapMetadataField aMetaField ) const;
-
-    private:
-        CCmManagerImpl&               iCmMgr;         //< Not owned
-        CommsDat::CCDNetworkRecord*   iNetworkRecord;
-                
-        //To store Connection methods that belong to this destination
-        CCmArray* iConnMethodArray;
-        CCmArray* iDeleteCmArray;
-        
-        // DN_IAP Table has to be update if
-        // - new CM is added to the destination
-        // - CM is delete from the destination
-        // - CM priority modified
-        TBool iDNTableChanged;
-        
-        //Protection changed
-        TBool   iProtectionChanged;
-        //The last protection level of the destination
-        TUint   iLastProtectionLevel;
-        
-        CCDSNAPMetadataRecord* iMetaDataRec;
-        //Reference counter for the object pool
-        TInt                iRefCounter;
-        //indicates if the Id is valid or not (for the object pool)
-        TBool               iIdIsValid;                
-        CommsDat::CCDAccessPointRecord* iDestAPRecord;
-
-        friend class CCmDestinationImpl;
-        friend class CCmManagerImpl;
-        TBool               iNewWithId;
-    };
-/**
- *  RCmDestination is for getting/setting values of a network destination.
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CCmDestinationImpl ) : public CBase
-    {
-    public:
-    //=====================================================================
-    // Constructors/Destructors
-    // 
-    public:
-    
-        /** Destructor. */
-        ~CCmDestinationImpl();
-        
-        /** Epoc constructor 
-        * This should be used only by the object pool
-        */
-        IMPORT_C static CCmDestinationImpl* NewL( CCmManagerImpl& aCmMgr,
-                                                  const TDesC& aName );
-        
-        /** Epoc constructor 
-        * This should be used only by the object pool
-        */
-        static CCmDestinationImpl* NewL( CCmManagerImpl& aCmMgr,
-                                         CCmDestinationData* aData );
-        
-        /** Epoc constructor 
-        * This should be used only by the 'R' classes
-        */
-        static CCmDestinationImpl* NewLC( CCmDestinationData* aData );
-        
-        /** Epoc constructor 
-        * This should be used only by the object pool
-        */
-        IMPORT_C static CCmDestinationImpl* NewL( CCmManagerImpl& aCmMgr,
-                                                  TUint aDestinationId );
-        
-    public:
-        /** 
-        * Returns pointer to the CmManager object
-        * Used in 'R' classes
-        */
-        CCmManagerImpl* Cmmgr();
-        //=====================================================================
-        // Conn method handling
-        
-        /**
-        * Create a connection method belonging to the destination
-        * @param aImplementationUid - implementation uid of the connection 
-        * method
-        * @return CCmPluginBaseEng*
-        */
-        CCmPluginBase* CreateConnectionMethodL( TUint32 aBearerType );
-
-        /**
-        * Create a connection method belonging to the destination
-        * @param aBearerType - implementation uid of the connection 
-        * method
-        * @param aConnMethId - Predefined id for the connection method.
-        * @return CCmPluginBaseEng*
-        */
-        CCmPluginBase* CreateConnectionMethodL( TUint32 aBearerType,
-                                                TUint32 aConnMethId );
-        /*
-        * Adds an existing connection method to a destination
-        * @param
-        * @return TInt - index in the Connection Method list
-        */
-        TInt AddConnectionMethodL( CCmPluginBase& aConnectionMethod );
-        
-        /*
-        * Embeds an existing destination to the destination
-        * @param CCmDestinationImpl - Destinatio to be embedded
-        * @return TInt - index in the Connection Method list
-        */
-        TInt AddEmbeddedDestinationL( CCmDestinationImpl& aDestination );        
-        
-        /**
-        * Remove a connection method from a destination and delete it
-        * on update. 
-        * Exception: conenction method is not deleted  if it's referenced 
-        * from any other destination.
-        * @param aConnectionMethod the connection method to be deleted
-        * @return none.
-        */
-        void DeleteConnectionMethodL( CCmPluginBase& aConnectionMethod ); 
-    
-        /**
-        * Remove connection method from the destination
-        * @param aConnectionMethod connection method to be removed
-        */
-        void RemoveConnectionMethodL( const CCmPluginBase& aConnectionMethod );
-    
-        /**
-        * Remove connection method from the destination
-        * @param aConnectionMethod connection method to be removed
-        */
-        void RemoveConnectionMethodL( const CCmPluginBaseEng& aConnectionMethod );
-        
-        /**
-        * Notification from child plugin that it was deleted.
-        * Remove it from the array and update priorities.
-        * @param aConnectionMethod child connection method that was deleted.
-        */
-        void ConnectionMethodDeletedL( const CCmPluginBase& aConnectionMethod );
-        
-        /**
-        * Set the CCMItem's priority based on the passed new index
-        * @param aCCMItem The connection method item
-        * @param aIndex The new index of the item in the list
-        */
-        void ModifyPriorityL( CCmPluginBase& aCCMItem, TUint aIndex );
-
-        /**
-        * Obsolete 
-        */
-        TUint PriorityL( CCmPluginBaseEng& aCCMItem );
-
-        /**
-        * Return the priority of the passed connection method
-        * @param aCCMItem queried connection method
-        * @return the priority of the queried connection method 
-        */
-        TUint PriorityL( CCmPluginBase& aCCMItem );
-        
-        /**
-        * Returns the number of connection methods of the destination
-        * @param None
-        * @return TInt        
-        */                  
-        IMPORT_C TInt ConnectionMethodCount();
-        
-        //Operator
-
-        /**
-        * Obsolete
-        */
-        IMPORT_C CCmPluginBaseEng* ConnectionMethodL( TInt anIndex );
-
-        /**
-        * Returns a reference to the connection method. 
-        * The index must be less than the return value of ConnMethodCount()
-        * @param anIndex
-        * @return plugin instance - ownership NOT passed
-        */         
-        IMPORT_C CCmPluginBase* GetConnectionMethodL( TInt anIndex );
-
-        /**
-        * Returns a reference to the connection method. 
-        * The index must be less than the return value of ConnMethodCount()
-        * @param anIapId IAP id of the queried connection method
-        * @return plugin instance - ownership NOT passed
-        */         
-        CCmPluginBase* ConnectionMethodByIDL( TUint32 anIapId );
-
-        void ConnectMethodIdArrayL( RArray<TUint32>& aCmIds );
-        
-        //Getting attributes
-
-        /**
-        * Returns the destination's Name attribute
-        * HBuf ownership is passed to the caller
-        * @param None
-        * @return name of the destination. ownership is passed.
-        */      
-        IMPORT_C HBufC* NameLC();                        
-        
-        /**
-        * Returns the destination's Id attribute
-        * @param None
-        * @return TUint32        
-        */
-        inline TUint32 Id(){return iData->Id();};
-
-        /**
-        * Returns the destination's ElementId attribute
-        * @param None
-        * @return TUint32
-        */            
-        inline TUint32 ElementId(){ return iData->ElementId();};
-     
-        /**
-        * Returns the Icon pointer
-        * This fucton leaves if the client does not have a valid UI context
-        * @param None
-        * @return TUint32  
-        */ 
-        IMPORT_C CGulIcon* IconL();
-
-        /**
-        * Returns the Metadata
-        * @param None
-        * @return TUint32        
-        */            
-        TUint32 MetadataL( CMManager::TSnapMetadataField aMetaField ) const;
-        
-        /**
-        * Returns if there's connection created with any of the destination's
-        * connection method.
-        * @return ETrue if there's connection with any of the destination's
-        * connection method.
-        */
-        IMPORT_C TBool IsConnectedL() const;
-
-        //=====================================================================
-        //Setting Attributes
-        
-        /**
-        * Set the destination's Name attribute. Leaves if the name already 
-        * exists
-        * @param aDestinationName value to set
-        * @return None   
-        */
-        IMPORT_C void SetNameL( const TDesC& aName );
-           
-        /**
-        * Set the destination's Icon index.
-        * This fucton leaves if the client does not have a valid UI context
-        * @param aIconIndex value to set
-        * @return None   
-        */
-        IMPORT_C void SetIconL( TUint32 anIndex );
-    
-        /**
-        * Set the Metadata
-        * @param aMetaField field to be modified
-        * @param aValue value to be set
-        */            
-        void SetMetadataL( CMManager::TSnapMetadataField aMetaField, 
-                           TUint32 aValue );    
-    
-        /**
-        * Returns that the destination is protected or not.
-        * @return protection level   
-        */
-        IMPORT_C CMManager::TProtectionLevel ProtectionLevel();
-        
-        /**
-        * Set the protection of the destination.
-        * @param aProtectionLevel
-        * @return None   
-        */
-        IMPORT_C void SetProtectionL( CMManager::TProtectionLevel aProtectionLevel );
-        
-        /**
-        * Update all the attributes of the Connection Methods and the 
-        * Destination.
-        * @return None   
-        */        
-        IMPORT_C void UpdateL();         
-    
-        /**
-        * Deletes it's connection methods from comms.dat (unless shared)
-        * then deletes itself
-        */
-        IMPORT_C void DeleteLD();
-        
-        /**
-        * Performs RollbackTransactionL().
-        */
-        void Close();
-        
-        /**
-        * Set iPlugin to NULL in plugin array, but not delete it.
-        * Next reference to this connection method will load the
-        * plugin again.
-        */
-        void PluginClosed( CCmPluginBase* aPlugin );
-        
-        /**
-        * Returns that the destination is hidden or not.
-        * @param None
-        * @return TBool   
-        */
-        IMPORT_C TBool IsHidden(); 
-        
-        /**
-        * Set that the destination is hidden or not.
-        * @param aHidden - True if it is hidden.
-        * @return None   
-        */
-        IMPORT_C void SetHiddenL( TBool aHidden );         
-        
-        /**
-        * Check if the destination element id is already embeded.
-        * Leaves with KErrNotSupported (multiple levels of embedding is not 
-        * supported)
-        */
-        void CheckIfEmbeddedL( TInt aId );
-        
-        
-        static CGulIcon* IconIdL( CCmManagerImpl& aCmMgr,
-                                  CommsDat::TMDBElementId aId );
-                
-        static CMManager::TProtectionLevel ProtectionLevelL( CCmManagerImpl& aCmMgr,
-                                                  CommsDat::TMDBElementId aId );
-        
-        /**
-        * Removes this destination from the object pool.
-        */
-        IMPORT_C void RemoveFromPool();
-
-        /**
-        * Increments the reference counter. Used by the object pool.
-        */
-        void IncrementRefCounter();
-        /**
-        * Increments the reference counter. Used by the object pool.
-        */
-        void DecrementRefCounter();
-        /**
-        * Returns the reference counter. Used by the object pool.
-        * @return TInt
-        */
-        TInt GetRefCounter();
-
-        /**
-        * Returns iData. Used by the object pool and the API oprators.
-        * @return TInt
-        */
-        CCmDestinationData* GetData();
-        /**
-        * Used by the object pool and the API oprators.
-        */
-        void SetData(CCmDestinationData* aData);
-        /**
-        * Indicates if the Id is valid or if this is a new object which sitll
-        * haven't been updated. 
-        * Used by the object pool.
-        * @return TBool
-        */
-        TBool IdIsValid();
-
-        /**
-        * Returns pointer to embedded destination if there is any
-        * @return CCmDestinationImpl* Pointer to embedded destination
-        * Contains NULL if there is no destination embedded
-        */        
-        CCmDestinationImpl* EmbeddedL();
-        
-        /**
-        * Checks if this destination plus a possible embedded destinaion
-        * contains a connection method which can be used for a connection
-        * Doesn't check VPNs!
-        * @return TBool ETrue if this destination or a destination embedded into
-        * it contains a connection method. Otherwise returns EFalse
-        */            
-        TBool CanUseToConnectL();
-        
-        
-        /**
-        * Reload connection method under this destination so as to
-        * keep synchronization with CommsDat
-        */
-        void ReLoadConnectionMethodsL();
-
-        /** Epoc constructor 
-        * This should be used only by the object pool
-        */
-        static CCmDestinationImpl* NewL( CCmManagerImpl& aCmMgr,
-                                         const TDesC& aName,
-                                         TUint32 aDestId);
-                                         
-
-        /**
-        * Returns the Id of this Destination which is used to identify the Destination.
-        * It is the Id saved to Destination Access Point's Tag field.
-        */            
-        TUint32 GetDestinationAPTagId();
-
-        /**
-        * Checks if this destination already contains the given Connection Method
-        * @param aConnectionMethod Connection Method to be checked whether it 
-        * already exists.
-        * @return TBool ETrue if this Destination contais already the given CM. If the
-        * Destination does not contain the given CM returns EFalse. Otherwise leaves
-        * with system-wide error code.
-        */            
-        TBool CheckIfCMExistsL( CCmPluginBase& aConnectionMethod );
-
-            
-    //=========================================================================
-    // Construction
-    //
-    private:    
-    
-        /**
-        * Default constructor. 
-        * @param aCmManager connection method manager
-        */
-        CCmDestinationImpl( CCmManagerImpl& aCmMgr );
-
-        /*
-        * Create a new destination with the specified name
-        */
-        void ConstructL( const TDesC& aName );
-
-        void ConstructL( const TDesC& aName, TUint32 aDestId );
-
-        /*
-        * Create a destination and initializes it 
-        * from the commsdat based on the id
-        */
-        void ConstructL( TUint aDestinationId );
-
-    //=========================================================================
-    // New functions
-    //
-    private:
-                          
-        /**
-        * Check if the destination contains and embedded destination
-        * @since S60 3.2
-        * @return ETrue if the destination contains and embedded destination   
-        */
-        TBool HasEmbeddedL();        
-    
-        /**
-        * - Check if transaction is already opened
-        * - Set iOwnTransaction is not and opens it and
-            put 'this' on cleanup&close stack
-        */
-        void OpenTransactionLC();
-        
-        /**
-        * - Check if the transaction is ours.
-        * - If yes, commits the transaction.
-        * - anyway does nothing
-        * @praram aError - error id
-        */
-        void CommitTransactionL( TInt aError );
-        
-        /**
-        * Rollback transaction.
-        */
-        void RollbackTransaction();
-
-        /**
-        * Returns the CommsDat session.
-        * Do not close!
-        * @return commsdat session
-        */
-        CommsDat::CMDBSession& Session()const;
-        
-        /**
-        * Find the connection method in iConnMethodArray.
-        * @param aConnectionMethod connection method to be searched for
-        * @return index of the found item
-        */
-        TInt FindConnectionMethodL( const CCmPluginBase& aConnectionMethod );
-        
-        /**
-        * Find the connection method in iConnMethodArray.
-        * @param aConnectionMethod connection method to be searched for
-        * @return index of the found item
-        */
-        TInt FindConnectionMethodL( const CCmPluginBaseEng& aConnectionMethod );
-        
-        /**
-        * Update protection attributes of every connection method if changed.
-        */
-        void UpdateProtectionL();
-
-        /**
-        * Update every connection method.
-        */
-        void UpdateConnectionMethodsL();
-        
-        /**
-        * Create or update the record of the network table for this 
-        * destination.
-        */
-        void UpdateNetworkRecordL();
-
-        /**
-        * Update the SNAP table
-        */
-        void UpdateSNAPTableL();
-        
-        /**
-        * Update the SNAP Metadata table
-        */        
-        void UpdateSNAPMetadataTableL();
-        
-        /**
-        * Load network record. Destination id is passed, because
-        * id is from the client application, and destinaion id
-        * is the network id for them. :)
-        * @param aDestinationId network record id
-        */        
-        void LoadNetworkRecordL( TUint32 aDestinationId );
-
-        /**
-        * Load Destination AP record. Destination id is passed, because
-        * id is from the client application, and destinaion id
-        * is the network id for them. :)
-        * @param aDestinationId network record id
-        */        
-        void LoadDestAPRecordL( TUint32 aDestinationId );
-
-        /**
-        * Load connection methods of the destination
-        */        
-        void LoadConnectionMethodsL();
-        
-        /**
-        * Load SNAP Metadata table
-        */        
-        void LoadSNAPMetadataTableL();        
-        
-        /**
-        * Create a connection method belonging to the destination
-        * @param aImplementationUid - implementation uid of the connection 
-        * method
-        * @param aParams - plugin init param
-        * @return CCmPluginBaseEng*
-        */        
-        CCmPluginBase* CreateConnectionMethodL( TUid aImplementationUid, 
-                                                   TCmPluginInitParam& aParams );
-                
-        /**
-        * Compare two records from DNIAP by their priority field.
-        * @param aLeft one record from DN_IAP table.
-        * @param aRight one record from DN_IAP table.
-        * @return
-        *   - negative value, if aLeft is less than aRight;
-        *   - 0,              if aLeft equals to aRight;
-        *   - positive value, if aLeft is greater than aRight.
-        */
-        static TInt SortRecordsByPriority( const CommsDat::CMDBRecordBase& aLeft, 
-                                           const CommsDat::CMDBRecordBase& aRight);
-        
-        /**
-        * Add an item to the Connection Method array based on bearer priority 
-        * table.
-        * @param aItem An item to be added.
-        * @return TInt the index of the added item. The array contains an initial item,
-        * so always SUBTRACT KCmInitIndex to get the connection method index number!!!
-        */        
-        TInt AddToArrayL( CPluginItem* aItem );
-        
-        /**
-        * IAP is considered to be removed from the commsdat by third 
-        * party (someone else external).
-        * Seamlessness entries should also be removed.
-        * @param aIapId Iap was removed        
-        */        
-        void CleanUpSeamlessnessTableL( TUint32 aIapId );
-        
-        /**
-        * Embedded dest is considered to be removed from the commsdat 
-        * by third party (someone else external).
-        * Snap Metadata entries should also be removed.
-        * @param aSnap Id was removed        
-        */          
-        void CleanUpSnapMetadataTableL( TUint32 aSnap );        
-        
-        /**
-        * Embedded dest is considered to be removed from the commsdat 
-        * by third party (someone else external).
-        * Snap Metadata entries should also be removed.
-        * @param aSnap Id was removed        
-        */          
-        void CleanUpEmbeddedL( TUint32 aDestId );        
-        
-        /**
-        * Create and load plugin.
-        * @param item where plugin has to be loaded.
-        */
-        void LoadPluginL( CPluginItem& aItem );
-        
-        
-        /**
-        * Create embedded destination plugin.
-        * @param aItem - plugin item
-        * @param TUint32 destination id
-        */        
-        void CreateEmbeddedDestinationPluginL( CPluginItem& aItem, 
-                                               TInt aDestinationId );
-        /**
-        * Load embedded destination plugin.
-        * @param aItem - plugin item
-        */        
-        void LoadEmbeddedDestinationPluginL( CPluginItem& aItem );
-        
-        /**
-        * Check if there is destination with this name. 
-        * Leaves with KErrAlreadyExists if name already exists
-        * @param aName destination name
-        */        
-        void CheckIfDestinationNameExistL( const TDesC& aName );
-        
-        /**
-        * Set or clear attribute
-        * @aRecord record of which the attribute is to be set or clear
-        * @aAttribute attribute to be set or clear
-        * @aSet ETrue to set
-        */        
-        void SetAttribute( CommsDat::CMDBRecordBase* aRecord, 
-                           TUint32 aAttribute, 
-                           TBool aSet );
-
-
-        /**
-        * Delete all connection methods.
-        * @since S60 3.2
-        */
-        void DeleteConnectionMethodsL();
-        
-        /**
-        * Reference to a non-existing IAP found in the SNAP table.
-        * Remove the SNAP record and the metadata record of this
-        * IAP. IAP is most probably deleted by APEngine.
-        * @param aSnapRecord SNAP record point to a non-existing IAP
-        */
-        void DeleteIAPRecordsL( CommsDat::CMDBRecordBase* aSnapRecord );
-        
-        /**
-        * Check if the name of the passed record is the same as the name of 
-        * network one, and update it if not.
-        * @param aRecord record to be checked and updated if needed
-        */
-        void CheckIfNameModifiedL( CCDSnapRecord* aRecord );
-        
-        /**
-        * Checks if there's another SNAP with Internet bit set.
-        * Leaves with KErrAlreadyExists if so.
-        */
-        void CheckIfInternetExistsL();
-        
-        /**
-        * Return the index value of the connection method.
-        * @param aCmId id of the connection method
-        * @return index value in iConnMethodArray
-        */
-        TInt ConnectionMethodIndex( TUint32 aCmId );
-        
-        /**
-        * Retrieves the base of the priority counts in cm list
-        * It is the data of the plugin in case of none VPN.
-        * It is the data of the underlying cm in case of VPN over cm.
-        * It is "wildcard" in case of VPN over destination. 
-        * aRetBearer and aRetExtLevel are not filled in this case 
-        * @param aItem the plugin list item which data is get
-        * @param aRetPrio the default priority of the cm in return
-        * @param aRetBearer the bearer of the cm in return
-        * @param aRetExtLevel the extenson level of the cm in return
-        * @return ETrue if the cm is virtual else EFalse
-        */
-        TBool PrioDataL( CPluginItem* aItem, TUint32& aRetPrio, 
-                        TUint32& aRetBearer, TUint32& aRetExtLevel );
-                        
-                            
-                            
-        /**
-        * Determines the position of the inserted item into the cm list.
-        * This determination is based on the similarity of the bearer types.
-        * The inserted position is just after the last item with the
-        * same bearer type and virtuality - if exist else -1. 
-        * @param aBearerType bearer type od the inserted cm
-        * @param aIsVirtual virtuality of the inserted cm 
-        * @return The position in the cm list where the item should be inserted.
-        * If there is no cm with same bearer type in the list then it
-        * returns -1;
-        */
-        TInt InsertSameMethodL( TUint32 aBearerType, TBool aIsVirtual );
-
-        /**
-        * Determines the position of the inserted item into the cm list.
-        * This determination is based on the priority and the extension
-        * level of the cm's. 
-        * @param aPrio default bearer type of the inserted cm
-        * @param aExtLevel extension level of the inserted cm 
-        * @return The position in the cm list where the item should be inserted.
-        */
-        TInt InsertPriorityMethodL( TUint32 aPrio, TUint32 aExtLevel );
-                                 
-        /**
-        * Checks if there's another SNAP with the same localised bit set.
-        * Leaves with KErrAlreadyExists if so.
-        */
-        void CheckIfLocalisedDestExistL( TUint32 aValue );
-
-        /**
-        * Checks if there's another SNAP with the same purpose bit set.
-        * Leaves with KErrAlreadyExists if so.
-        */
-        void CheckIfPurposeExistL( TUint32 aValue );
-
-        static CGulIcon* IconL( TInt aIconIndex );
-        static CMManager::TProtectionLevel ProtectionLevel( CCDSNAPMetadataRecord* aMetaDataRec );
-
-        /**
-        * Deletes all the recordsrelated to this Destination to be
-        * deleted.
-        * @param None
-        * @return        
-        */
-        void DeleteRelatedRecordsL( TInt aCount );
-
-        /**
-        * Checks if this(current) destination is referenced by any
-        * Virtual Connection Method.
-        * @param None
-        * Leaves with KErrLocked if it's referenced.
-        */
-        void CheckIfReferencedByVirtualCML();
-
-        /**
-        * Initializes the Destination AccessPoint record
-        * deleted.
-        * @param aDestAPRecord Record to be initialized
-        * @return
-        */
-        void InitializeDestAPRecordL();
-
-        /**
-        * Sets the given (tag)id to the accesspoint record
-        * @param aDestId Id to be set
-        * @return
-        */
-        void SetIdL( TInt aDestId );
-
-        /**
-        * Checks that there isn't any destination with the given (tag)id.
-        * @param aDestId Id to be checked
-        * @return
-        */
-        void CheckIfDestinationIdExistsL( TUint32 aDestId );
-
-        /**
-        * Create or update the record of the accesspoint table for this 
-        * destination.
-        */
-        void UpdateDestAPRecordL();
-
-        /**
-        * Creates an unique (tag)id to the record of the accesspoint table for this 
-        * destination.
-        */
-        TUint32 CreateDestinationAPTagIdL();
-
-        /**
-        * Sets the default Tier Manager to the accesspoint record for this 
-        * destination.
-        */
-        void SetDefaultTierManagerL();
-
-        /**
-        * Sets the default Meta Connection Provider to the accesspoint record for this 
-        * destination.
-        */
-        void SetDefaultMCprL();
-
-        /**
-        * Sets the default Connection Provider to the accesspoint record for this 
-        * destination.
-        */
-        void SetDefaultCprL();
-
-        /**
-        * Sets the default Subconnection Provider to the accesspoint record for this 
-        * destination.
-        */
-        void SetDefaultSCprL();
-
-        /**
-        * Sets the default Protocol to the accesspoint record for this 
-        * destination.
-        */
-        void SetDefaultProtocolL();
-        
-    //=========================================================================        
-    // Member variables
-    //
-    private: 
-        CCmManagerImpl&     iCmMgr;         //< Not owned
-        CCmDestinationData* iData;
-    private:
-    
-        friend class CCmManagerImpl;
-    };
-    
-#endif // DESTINATIONIMPL_H
--- a/cmmanager/cmmgr/Framework/Inc/cmdlg.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,275 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Dialog for setting the gateway. It's used temporarily.
-*
-*/
-
-#ifndef CMDIALOG_H
-#define CMDIALOG_H
-
-//  INCLUDES
-
-#include <AknForm.h>
-#include <AknInfoPopupNoteController.h>
-#include "cmlistboxmodel.h"
-#include "cmlistbox.h"
-#include "cmdestinationimpl.h"
-#include "cmmanagerimpl.h"
-#include <mcmdexec.h>
-#include "cmcommsdatnotifier.h"
-
-//#include <EIKLBO.H>
-
-// CLASS DECLARATION
-class CEikStatusPane;
-class CAknTitlePane;
-class CAknNavigationControlContainer;
-class CAknNavigationDecorator;
-class CCmWizard;
-class CCmdExec;
-class CDestDlg;
-
-/**
- *  Dialog for displaying and editing connection methods
- *  also base class for CUncatDlg
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CCmDlg ) : public CAknDialog
-                            , MEikListBoxObserver
-                            , MAknInfoPopupNoteObserver
-                            , public MCmdExec
-                            , public MCmCommsDatWatcher
-    {
-    public :    // construction
-        CCmDlg( CCmManagerImpl* aCmManager, TUint32 aDestUid,
-                CDestDlg* aDestDlg );
-
-        ~CCmDlg();
-        
-        /**
-        * Two-phased constructor.
-        */
-        static CCmDlg* NewL( CCmManagerImpl* aCmManager, TUint32 aDestUid,
-                             CDestDlg* aDestDlg );
-        
-        TInt ConstructAndRunLD( TUint32 aHighLight, TUint32& aSelected );        
-
-        // From MEikMenuObserver
-        virtual void DynInitMenuPaneL( TInt aResourceId, 
-                                       CEikMenuPane* aMenuPane );
-        // From MEikCommandObserver
-        virtual void ProcessCommandL( TInt aCommandId ) ;
-        
-        /**
-        * Updates listbox data
-        */
-        virtual void HandleListboxDataChangeL();   
-        
-        /**
-        * Handle key event.
-        * @param aKeyEvent The key event.
-        * @param aType Key event type.
-        * @return Response (was the key event consumed?).
-        */
-        TKeyResponse OfferKeyEventL
-            ( const TKeyEvent& aKeyEvent, TEventCode aType );
-
-	public:
-        /**
-         * From base class MCmdExec
-         */
-        void Execute();
-
-    public: // From CCoeControl
-    
-        /**
-        * Returns the help context
-        * From CCoeControl
-        * 
-        * @since S60 3.2
-        * @param aContext the returned help context
-        */
-        void GetHelpContext( TCoeHelpContext& aContext ) const;
-        
-        /**
-        * Handles the resource change
-        * From CCoeControl
-        * 
-        * @since S60 5.0
-        * @param aType Type of the resource change
-        */
-		void HandleResourceChange( TInt aType );
-        
-    public: // From MCmCommsDatWatcher
-        
-        /**
-         * Watch changes in CommsDat
-         */
-        virtual void CommsDatChangesL();
-                 
-    protected :    // from CEikDialog
-        TBool OkToExitL( TInt aButtonId ) ;
-        
-        virtual void PreLayoutDynInitL();
-        
-        SEikControlInfo CreateCustomControlL ( TInt aControlType );
-
-        // From MEikListBoxObserver
-        void HandleListBoxEventL( CEikListBox* aListBox, 
-                                  TListBoxEvent aEventType );
-        
-        /**
-        * Initialises listbox texts
-        */
-        virtual void InitTextsL();
-        
-        /**
-        * Sets the number of conn methods text on navi pane
-        */
-        void SetNoOfCMsL(TInt aCount);
-        
-    
-        //from MAknInfoPopupNoteObserver
-        /* Handles events reported from info popup note.
-        * @param aController The controller that controls the note, from
-        *   where the event originates.
-        * @param aEvent The event.
-        */
-        void HandleInfoPopupNoteEvent(
-            CAknInfoPopupNoteController* aController,
-            TAknInfoPopupNoteEvent aEvent ); 
-        
-        /**
-        * @return the currently focused connection method in the list
-        */
-        virtual CCmPluginBase* CurrentCML();  
-        
-        /**
-        * @return the connection method in the list at the specified index
-        */
-        virtual CCmPluginBase* CMByIndexL( TInt aIndex );
-        
-        /**
-        * @return the connection mehtod count
-        */
-        virtual TInt CMCount();     
-        
-        /**
-        * deletes the currently highlighted conneciton method
-        */
-        void DeleteCurrentCmL();
-        
-        void RenameConnectionMethodL();
-        void PrioritiseConnectionMethodL();
-        void AddConnectionMethodL();
-        void CopyConnectionMethodL();
-        void MoveConnectionMethodL();
-        void EditConnectionMethodL();
-        
-        /**
-        * Indicates if a connection is in use and displays and error message
-        *
-        * @return ETrue if in use
-        */
-        TBool CurrentCmInUseL();
-        
-        virtual void ConstructCMArrayL( RArray<TUint32>& aCmIds );
-
-        /**
-         * Remove hidden Connection Methods from the Array
-         */
-        virtual void ClearHiddenCMsFromArrayL( RArray<TUint32>& aCmIds );
-                
-    public:
-        /**
-         * From base class MCmdExec
-         */
-        void HandleLeaveError( TInt aError );
-        
-    private:
-     
-        /**
-        * Finishes the priorizing method
-        *
-        * @param aOkPushed ETrue if the OK button pushed.
-        *                  EFalse if the Cancel button pushed. 
-        *
-        */
-        void FinishPriorizingL( TBool aOkPushed );    
-
-        /**
-         * Rebuild item index array to remove some Iap that has been deleted from
-         * CommsDat by other application
-         */
-        void ReBuildItemIndexArrayL();
-        
-        /**
-         * Reorder connection methods according to underlying connection in case of vpn
-         */
-        void ReOrderCMsL();
-               
-        
-        /**
-         * Get a proper index in list for priority
-         */
-        TInt GetInsertIndexL( TInt aCount, TUint32 aPriority );
-        
-    protected:
-        CCmListboxModel*    iModel;
-        TUint32             iHighlight;
-        TUint32*            iSelected;           
-        TBool               iModelPassed;
-        CCmListbox*         iListbox;
-        CEikStatusPane*     iStatusPane;    // NOT owned
-        CAknTitlePane*      iTitlePane;     // NOT owned
-        CAknNavigationControlContainer* iNaviPane;      // NOT owned
-        CAknNavigationDecorator*        iNaviDecorator; // owned
-        HBufC*              iOldTitleText;  
-        CCmManagerImpl*     iCmManager;   // NOT owned   
-        TUint32             iDestUid;  // uid of the destination the
-                                       // connection mehtods belong to
-        TBool               iPrioritising;
-        TInt                iExitReason; // Exit reason, can be KUserExit or 
-                                         // KUserBack used to pass user exit 
-                                         // event                                         
-        CAknInfoPopupNoteController*    iInfoPopupNoteController;
-        
-    private:        
-    
-        TInt                iCmToPrioritise; // connection mehthod index 
-                                            // selected to prioritise
-        CCmDestinationImpl* iCmDestinationImpl; // the destination the 
-
-        CCmWizard*          iCmWizard; // wizard for connection method creation
-        // Indicated that Escape has arrived and it should be forwarded when CmWizard
-        // finished its work
-        TBool               iEscapeArrived;
-        
-        TBool 				iProcessing;
-        TBool               iAlreadyConfirmedDelete;
-                                                // connection mehtods belongs to
-        TBool               iExitduringProcessing;
-        TBool               iBackduringProcessing;
-        CDestDlg*           iDestDlg;
-        
-    protected:
-        // This is nescessary becaue in case of not supported CMs the data base 
-        // and the lisbox content is different.(The listbox doesn' show the
-        // unsupported ones.)
-        RArray<TInt>        iItemIndex;
-        CCmdExec*           iCmdExec;
-    };
-
-#endif
--- a/cmmanager/cmmgr/Framework/Inc/cmlistbox.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of class CCmListbox.
-*
-*/
-
-#ifndef CM_LISTBOX_H
-#define CM_LISTBOX_H
-
-// INCLUDE FILES
-#include <aknlists.h>
-
-// FORWARD DECLARATION
-class CCmListboxModel;
-
-/**
- *  Model for the connection methods listbox. It is an array of CCmListItem
- *  pointers; items are owned.
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CCmListbox ) : public CAknDoubleGraphicStyleListBox
-    {
-    public:     // Construct / cmruct
-
-        /**
-        * Two-phased constructor. Leaves on failure.
-        * @param aParent Parent control.
-        * @return The constructed listbox.
-        */
-        static CCmListbox* NewL
-            ( const CCoeControl* aParent );
-
-        /**
-        * Cmructor.
-        */
-        virtual ~CCmListbox();
-
-        /**
-        * Constructor.
-        */
-        CCmListbox();
-
-    public :
-        /**
-        * Handle key event.
-        * @param aKeyEvent The key event.
-        * @param aType Key event type.
-        * @return Response (was the key event consumed?).
-        */
-        TKeyResponse OfferKeyEventL
-            ( const TKeyEvent& aKeyEvent, TEventCode aType );
-
-        /**
-        * Handle focus change.
-        * @param aDrawNow Draw now?
-        */
-        void FocusChanged( TDrawNow aDrawNow );
-
-        /**
-        * Gets the UID from a given item
-        * @param    The index of the item
-        * @return   The UID of the item given by itemindex
-        */
-        TUint32 Uid4Item( TInt aItem ) const;
-
-        /**
-        * Gets the UID of the current item
-        * @return  The UID of the current item
-        */
-        TUint32 CurrentItemUid() const;
-
-        /**
-        * Gets the name of the current item
-        * @return The name of the current item
-        */
-        const TDesC& CurrentItemNameL();
-        
-        // from CCoeControl
-        void HandleResourceChange(TInt aType);
-    };
-
-
-#endif
-
-// End of file
--- a/cmmanager/cmmgr/Framework/Inc/cmlistboxmodel.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of class CCmListboxModel.
-*
-*/
-
-#ifndef CMLISTBOX_LISTBOX_MODEL_H
-#define CMLISTBOX_LISTBOX_MODEL_H
-
-// INCLUDE FILES
-#include <eikdialg.h>
-#include "cmlistitemlist.h"
-#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <commsdat.h>
-#else
-#include <commsdat.h>
-#include <commsdat_partner.h>
-#endif
-
-// CONSTANTS
-// Granularity of the model array.
-const TInt KCMGranularity = 8;
-
-//"1\tFirstLabel\tSecondLabel\t0\t0" /**/
-_LIT( KListItemFormatCmProt, "%d\t%S\t%S\t%d" );
-//"0\tFirstLabel\tSecondLabel" /*\t%d*/
-_LIT( KListItemFormatCm, "%d\t%S\t%S" );
-//"0\tFirstLabel" /*\t%d*/
-_LIT( KListItemFormatEmbDest, "%d\t%S\t" );
-//"0\tFirstLabel\t0\t0" /*\t%d*/
-_LIT( KListItemFormatEmbDestProt, "%d\t%S\t\t%d" );
-
-const TInt KCMMaxFormatSize = sizeof( KListItemFormatCm );
-const TInt KCMMaxListItemNameLength = CommsDat::KMaxTextLength;
-const TInt KMaxCmListboxName = KCMMaxListItemNameLength+KCMMaxFormatSize;
-
-
-/**
-* Buffer size for formatting listbox text. Maximum item length
-* plus listbox internals (tabulators for icons etc.) must fit into it.
-*
-* Important note:
-* The model of the listbox is a CAknFilteredTextListBoxModel.
-* The *itemarray* of that model is this class. That is, whatever is in
-* the model (this class), it may not be visible, if it is filtered out.
-* We always must use the listbox's Model() to get visible ones.
-*/
-
-
-// CLASS DECLARATION
-
-/**
- * Model for the connection methods listbox.
- * pointers; items are owned.
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CCmListboxModel ) : public CCmListItemList
-                                     , public MDesCArray
-    {
-    public:     // Construct
-
-        /**
-        * Constructor.
-        */
-        CCmListboxModel();
-
-        /**
-        * CCmListboxructor.
-        */
-        virtual ~CCmListboxModel();
-
-    public:     // from MDesCArray
-
-        /**
-        * Get number of items in the model.
-        * @return number of items.
-        */
-        TInt MdcaCount() const;
-
-        /**
-        * Text to be displayed for this item.
-        * @param aIndex Index of item.
-        * @return for this item text (text owned by the model).
-        */
-        TPtrC MdcaPoint( TInt aIndex ) const;
-
-    public:        
-        
-        /**
-        * Sets the icon offset
-        * @param aOffset the offset of our icons in the iconarray
-        */
-        void SetOwnIconOffset( TInt aOffset );
-
-    protected:    // data
-    
-        /**
-        * Formats the text of the listbox, calls the leaving version trapped.
-        * @param aIndex Index of item.
-        * @param aBuf Buffer to store formatted text.
-        */
-        void FormatListboxText( TInt aIndex, TDes& aBuf ) const;
-
-        /**
-        * Formats the text of the listbox, leaving version.
-        * @param aIndex Index of item.
-        * @param aBuf Buffer to store formatted text.
-        */
-        void FormatListboxTextL( TInt aIndex, TDes& aBuf ) const;
-
-        /**
-        * MdcaPoint() cannot leave, so this buffer is allocated
-        * to allow formatting. Fortunately, doesn't have to be very
-        * large.
-        * We have to use MUTABLE CAST, as MdcaPoint is const (odd enough),
-        * so wouldn't allow formatting the text in a member...
-        */
-        __MUTABLE TBuf<KMaxCmListboxName> iBuf;
-        TInt iOffset;
-    };
-
-#endif // CMLISTBOX_LISTBOX_MODEL_H
--- a/cmmanager/cmmgr/Framework/Inc/cmlistitem.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of the CCmListItem class.
-*
-*/
-
-#ifndef CCMLISTITEM_H
-#define CCMLISTITEM_H
-
-//  INCLUDES
-#include <e32base.h>
-
-/**
- *  Representation of a list item.
- *  This class is used to hold the main information of a connection method.
- *  It is used in CCmSelect.
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CCmListItem ) :public CBase
-    {
-    public:  // Constructors and destructor
-
-        /**
-        * Two-phased constructor. Leaves on failure, places instance
-        * on cleanup stack.
-        * @param aUid The ID of the connection method
-        * @param aName The name of the connection method
-        * @param aPriority The priority of the connection method
-        * @param aIconIndex The icon index of the connection method's 
-        * bearer's icon
-        * @param aIsProtected Whether the given item is read-only or not
-        * @param aIsSingleLine Whether the given item has one line only      
-        * @return The constructed CCmListItem.
-        */
-        static CCmListItem* NewLC( TUint32 aUid,
-                                    HBufC* aName,
-                                    TInt aPriority, 
-                                    TUint aIconIndex, 
-                                    TBool aIsProtected, 
-                                    TBool aIsVPNOverDestination,
-                                    TBool aIsSingleLine, 
-                                    TBool aIsDefault);
-        /**
-        * Destructor.
-        */
-        virtual ~CCmListItem();
-
-    protected:      // Constructors
-    
-        /**
-        * C++ default constructor.
-        */
-        CCmListItem( HBufC* aName );
-
-        /**
-        * Second-phase constructor.
-        * @param aUid The ID of the connection method
-        * @param aPriority The priority of the connection method
-        * @param aIconIndex The icon index of the connection method's 
-        * bearer's icon
-        * @param aIsProtected Whether the given item is read-only or not
-        * @param aIsSingleLine Whether the given item has one line only
-        */
-        void ConstructL( TUint32 aUid,
-                         TInt aPriority, 
-                         TUint aIconIndex, 
-                         TBool aIsProtected, 
-                         TBool aIsVPNOverDestination,
-                         TBool aIsSingleLine, 
-                         TBool aIsDefault);
-    
-    public: // New functions
-
-        /**
-        * Gets the name of the 'current' connection method
-        * Ownership of the returned text is not passed.
-        * @return The name of the current connection method
-        */
-        const TDesC& Name();
-
-        /**
-        * Gets the UID of the current connection method
-        * @return The UID of the current connection method
-        */
-        TUint32 Uid();
-
-        /**
-        * Gets the Priority of the current connection method
-        * @return The Priority of the current connection method
-        */
-        TInt Priority();
-         
-        /**
-        * Gets the IconIndex of the current connection method's bearer icon
-        * @return The IconIndex of the current connection method's bearer icon
-        */
-        TUint IconIndex();
-        
-        /**
-        * Returns the connection method's protected flag
-        * @return ETrue if the connection method is protected
-        */       
-        TBool IsProtected();
-        
-        /**
-        * Returns the connection method's destination flag
-        * @return ETrue if the item has one line only
-        */       
-        TBool IsSingleLine();
-
-        /**
-        * Returns the connection method's default flag
-        * @return ETrue if the item is the default connection
-        */       
-        TBool IsDefault();
-
-        /**
-        * Used to figure out whether connection is VPN over destination.
-        * @return ETrue if the item is VPN over destination
-        */       
-        TBool IsVpnOverDestination();
-                
-    private:    // Data
-
-        TUint32         iUid;            // The ID of the access point
-        HBufC*          iName;           // The name of the access point
-        TInt            iPriority;       // The Priority of the access point
-        TUint           iIconIndex;      // The IconIndex of the access point
-        TBool           iIsProtected;    // The IsProtected flag of the access point
-        TBool           iIsSingleLine;   // ETrue if the item has one line only
-        TBool           iIsDefault;      // ETrue if the item is the default connection
-        TBool           iIsVpnOverDestination; // ETrue if the item is VPN over destination
-    };
-
-#endif      // CCMLISTITEM_H
--- a/cmmanager/cmmgr/Framework/Inc/cmlistitemlist.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of the CCmListItemList class.
-*
-*/
-
-#ifndef CCMLISTITEMLIST_H
-#define CCMLISTITEMLIST_H
-
-//  INCLUDES
-#include <e32base.h>
-
-// FORWARD DECLARATION
-class CCmListItem;
-
-/**
- *  A list of CCmListItem-s pointers; items are owned.
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CCmListItemList ) : public CArrayPtrFlat<CCmListItem>
-    {
-    public:  // Constructors and destructor
-
-        /**
-        * C++ default constructor.
-        */
-        CCmListItemList();
-
-        /**
-        * Destructor. Items in the list are destroyed.
-        */
-        virtual ~CCmListItemList();
-
-    public:  // New methods
-
-        /**
-        * Get pointer to the item having aUid, or NULL if no such item is in the
-        * list.
-        * @param aUid Uid of item to get.
-        * @return Pointer to the item having uid aUid, or NULL. Ownership
-        * not passed (the list still owns the item).
-        */
-        CCmListItem* ItemForUid( TUint32 aUid ) const;
-    };
-
-#endif
-
-// End of File
--- a/cmmanager/cmmgr/Framework/Inc/cmlogger.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,165 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of logger
-*
-*/
-
-#ifndef CONNECTIONMETHODLOGGER_H
-#define CONNECTIONMETHODLOGGER_H
-
-// INCLUDE FILES
-#include <e32svr.h>
-
-#ifdef _DEBUG
-
-#define __CONNECTION_METHOD_LOG__
-#include <flogger.h>
-
-// CONSTANTS
-
-class CFunctionEntryExit;
-
-//Logging to file in THUMB UDEB
-class TLogger
-    {
-    public: // methods
-
-        static void CreateLogger( TAny* aOwner );
-        static void CloseLogger( TAny* aOwner );
-
-        static void AttachLogger( const TAny* aOwner, 
-                                   const TAny* aAttach1,
-                                   const TAny* aAttach2 );
-       
-        static void NameIt( const TAny* aOwner, 
-                            TRefByValue<const TDesC> aNameFmt, 
-                            ... );
-        
-        static void LogIt( const TAny* aOwner, 
-                           TRefByValue<const TDesC> aFmt, 
-                           ... );
-        static void LogIt( const TAny* aOwner, 
-                           TRefByValue<const TDesC8> aFmt, 
-                           ... );
-        static void LogIt( const TAny* aOwner, 
-                           TRefByValue<const TDesC> aFmt, 
-                           VA_LIST aList );
-        static void LogIt( const TAny* aOwner, 
-                           TRefByValue<const TDesC8> aFmt, 
-                           VA_LIST aList );
-
-    private:       
-
-        TBuf<2048>      iLogBuf;
-        TBuf8<2048>     iLogBuf8;
-        TInt            iRefCounter;
-        TAny*           iOwner;
-    };
-
-NONSHARABLE_CLASS( CFunctionEntryExit ): public CBase
-    {
-    public:
-
-        CFunctionEntryExit( const TAny* aOwner, 
-                            TRefByValue<const TDesC> aFunc );
-        ~CFunctionEntryExit();
-
-    public:
-    
-        TPtrC       iFunc;  // function name
-        const TAny* iOwner;
-        TTime       iEntryTime;
-    };
-
-#define LOGGER_ENTERFN( a )     CFunctionEntryExit entryExit( this, _L(a) );
-#define CLOG_ENTERFN_PTR( a )   CFunctionEntryExit entryExit( NULL, _L(a) );
-
-#define CLOG_CREATE             TLogger::CreateLogger( this );
-#define CLOG_CREATE_PTR         TLogger::CreateLogger( NULL );
-#define CLOG_ATTACH( attach1, attach2 )  TLogger::AttachLogger( this, \
-                                                                   attach1, \
-                                                                   attach2 );
-#define CLOG_NAME( a )           TLogger::NameIt( this, a );
-#define CLOG_NAME_1( a, b )      TLogger::NameIt( this, a, b );
-#define CLOG_NAME_2( a, b, c )   TLogger::NameIt( this, a, b, c );
-#define CLOG_NAME_3( a, b, c, d )   TLogger::NameIt( this, a, b, c, d );
-#define CLOG_CLOSE               TLogger::CloseLogger( this );
-#define CLOG_WRITE( a )          TLogger::LogIt( this, _L(a) );
-#define CLOG_WRITE_FORMAT( a, b )   TLogger::LogIt( this, _L(a), b );
-#define CLOG_WRITE_1( a, b )     TLogger::LogIt( this, _L(a), b );
-#define CLOG_WRITE_2( a, b, c )  TLogger::LogIt( this, _L(a), b, c );
-#define CLOG_WRITE_3( a, b, c, d )  TLogger::LogIt( this, _L(a), b, c, d );
-#define CLOG_WRITE_4( a, b, c, d, e )   TLogger::LogIt( this, \
-                                                          _L(a), b, c, d, e );
-#define CLOG_WRITE8( a )         TLogger::LogIt( this, _L8(a) );
-#define CLOG_WRITE8_1( a, b )    TLogger::LogIt( this, _L8(a), b );
-#define CLOG_WRITE8_2( a, b, c ) TLogger::LogIt( this, _L8(a), b, c );
-#define CLOG_WRITE8_3( a, b, c, d ) TLogger::LogIt( this, _L8(a), b, c, d );
-#define CLOG_WRITE8_4( a, b, c, d, e )  TLogger::LogIt( this, \
-                                                          _L8(a), b, c, d, e );
-
-#define CLOG_NAME_PTR( ptr, a )                     TLogger::NameIt( ptr, a );
-#define CLOG_ATTACH_PTR( ptr, attach1, attach2 )    TLogger::AttachLogger( \
-                                                        ptr, attach1, attach2 );
-#define CLOG_WRITE_PTR( ptr, a )                    TLogger::LogIt( ptr, \
-                                                                      _L(a) );
-#define CLOG_WRITE_1_PTR( ptr, a, b )               TLogger::LogIt( ptr, \
-                                                                    _L(a), b );
-#define CLOG_WRITE_2_PTR( ptr, a, b, c )            TLogger::LogIt( ptr, \
-                                                                  _L(a), b, c );
-#define CLOG_WRITE_3_PTR( ptr, a, b, c, d )         TLogger::LogIt( ptr, \
-                                                               _L(a), b, c, d );
-#define CLOG_WRITE_4_PTR( ptr, a, b, c, d, e )      TLogger::LogIt( ptr, \
-                                                            _L(a), b, c, d, e );
-#define CLOG_WRITE_FORMAT_PTR( ptr, a, b )          TLogger::LogIt( ptr, \
-                                                                    _L(a), b );
-#define CLOG_CLOSE_PTR( ptr )   TLogger::CloseLogger( ptr );
-
-#else   // _DEBUG
-
-#define LOGGER_ENTERFN( a )
-#define CLOG_ENTERFN_PTR( a )
-
-#define CLOG_CREATE
-#define CLOG_CREATE_PTR
-#define CLOG_ATTACH( attach1, attach2 )
-#define CLOG_NAME( a )
-#define CLOG_NAME_1( a, b )
-#define CLOG_NAME_2( a, b, c )
-#define CLOG_NAME_3( a, b, c, d )
-#define CLOG_CLOSE
-#define CLOG_WRITE( a )                   
-#define CLOG_WRITE_FORMAT( a, b )              
-#define CLOG_WRITE_1( a, b )
-#define CLOG_WRITE_2( a, b, c )           
-#define CLOG_WRITE_3( a, b, c, d )        
-#define CLOG_WRITE_4( a, b, c, d, e )     
-#define CLOG_WRITE8( a )                  
-#define CLOG_WRITE8_1( a, b )             
-#define CLOG_WRITE8_2( a, b, c )          
-#define CLOG_WRITE8_3( a, b, c, d )       
-#define CLOG_WRITE8_4( a, b, c, d, e )    
-
-#define CLOG_NAME_PTR( ptr, a )
-#define CLOG_ATTACH_PTR( ptr, attach1, attach2 )
-#define CLOG_WRITE_PTR( ptr, a )
-#define CLOG_WRITE_1_PTR( ptr, a, b )
-#define CLOG_WRITE_2_PTR( ptr, a, b, c )
-#define CLOG_WRITE_3_PTR( ptr, a, b, c, d )
-#define CLOG_WRITE_4_PTR( ptr, a, b, c, d, e )
-#define CLOG_WRITE_FORMAT_PTR( ptr, a, b )
-#define CLOG_CLOSE_PTR( ptr )
-
-#endif // _DEBUG
-#endif // CONNECTIONMETHODLOGGER_H
--- a/cmmanager/cmmgr/Framework/Inc/cmmanager.hrh	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Resource definitions for connection method manager
-*
-*/
-
-#ifndef CMMANAGER_HRH
-#define CMMANAGER_HRH
-
-#define  KDestListboxType     3432
-#define  KCmListboxType     3432
-#define  KCmDestIconMapType     3433
-
-enum TCmManagerUiMenuCommands  /// Commands.
-    {
-    ECmManagerUiCmdCmEdit =1234,
-    ECmManagerUiCmdCmAdd,
-    ECmManagerUiCmdCmRename,
-    ECmManagerUiCmdCmDelete,
-    ECmManagerUiCmdCmUserExit,
-    ECmManagerUiCmdCmPrioritise,
-    ECmManagerUiCmdCmMoveToOtherDestination,
-    ECmManagerUiCmdCmCopyToOtherDestination,
-    ECmManagerUiCmdDestEdit,
-    ECmManagerUiCmdDestDefaultConnection,
-    ECmManagerUiCmdDestUserExit,
-    ECmManagerUiCmdDestAdd,
-    ECmManagerUiCmdDestRename,
-    ECmManagerUiCmdDestChangeIcon,
-    ECmManagerUiCmdDestDelete,
-    ECmManagerUiCmdDestSelect,
-    ECmManagerUiCmdCMSelect,
-    ECmManagerUiCmdCmPrioOk,
-    ECmManagerUiCmdCmPrioCancel
-    };
- 
-#include "cmpluginmenucommands.hrh"
-    
-enum TCmManagerUiDlgLineIds // dialog line IDs
-    {
-    KDestListboxId = 1,
-    KCmListboxId,
-    KPluginBaseListboxId,
-    ECmDestIconMapContentId
-    };
-
-enum TCmDialogIds
-    {
-    ECmWaitDialog = 1
-    };
-    
-    
-#endif // CMMANAGER_HRH
--- a/cmmanager/cmmgr/Framework/Inc/cmmanagerimpl.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1018 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of connection method manager
-*
-*/
-
-#ifndef CMMANAGERIMPL_H
-#define CMMANAGERIMPL_H
-
-// User Includes
-#include "cmmanager.hrh"
-#include "cmobjectpool.h"
-#include "cmconnectionmethodinfo.h"
-#include <datamobilitycommsdattypes.h>
-#include <cmmanagerdef.h>
-#include <cmdefconnvalues.h>
-#include <cmgenconnsettings.h>
-
-// System Includes
-#include <e32std.h>
-#include <e32base.h>
-#include <e32cmn.h>
-#include <f32file.h>    // RFs
-#include <barsc.h>      // RResourceFile
-#include <metadatabase.h>
-#include <commsdattypesv1_1.h>
-
-// Forward Declarations
-class CCmTransactionHandler;
-class CCmDestination;
-class CCmDestinationExt;
-class CCmDestinationImpl;
-class CCmPluginBaseEng;
-class CCmPluginBase;
-class CImplementationInformation;
-class TBearerPriority;
-class RConeResourceLoader;
-class CCmConnectionMethodInfo;
-class CGulIcon;
-class CCDGlobalBearerTypePriorizationRecord;
-class CCDDataMobilitySelectionPolicyRecord;
-class TCmPluginInitParam;
-class CCmDestinationData;
-class RCmManagerExt;
-class MCmCommsDatWatcher;
-class CCmCommsDatNotifier;
-
-// DATA TYPES
-typedef RPointerArray<CImplementationInformation>   RImplInfoPtrArray;
-typedef CCDGlobalBearerTypePriorizationRecord       CCmBearerPriRec;
-typedef CCDDataMobilitySelectionPolicyRecord        CCDSnapRecord;
-
-typedef struct
-    {
-    RResourceFile       iFile;  // resource file handler
-    TFileName           iFName; // resource filename
-    TInt                iRefs;  // number of references to this res file
-    }TResourceFiles;
-    
-/*#ifdef _DEBUG
-void DumIapTableL( CommsDat::CMDBSession& aSession );
-#define DUMP_IAP_TBL( session )  DumIapTableL( (session) );
-#else   // _DEBUG
-#define DUMP_IAP_TBL( session )
-#endif  // _DEBUG*/
-
-/**
- *  Implementation of connection method manager
- *
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CCmManagerImpl ) : public CBase
-      {          
-    // Construction/Destruction
-    public:
-    
-        /** Epoc constructor */
-        static CCmManagerImpl* NewL( TBool aCreateTables = ETrue );
-        
-        /** Destructor */
-        virtual ~CCmManagerImpl();
-        
-    protected:
-    
-        /** First stage constructor */
-        CCmManagerImpl();
-    
-        /** Epoc constructor */
-        void ConstructL(); // second-phase constructor
-        
-    public: // Transaction handling API
-    
-        void OpenTransactionLC( TBool aSetAttribs = ETrue );
-        void CommitTransactionL( TInt aError );
-        void RollbackTransaction();
-        
-        // This will be called when the first UI view is on
-        void StartCommsDatNotifierL();
-        
-    public: // Basic CM attribute query API
-    
-        /**
-        * GetBearerInfoXXX function can be used to query
-        * bearer informantion that doesn't belong
-        * to a specific connection method, such as 
-        * ECmCoverage or ECmDefaultPriority etc.
-        * HBuf ownership is passed to the caller
-        */
-        IMPORT_C TUint32 GetBearerInfoIntL( TUint32 aBearerType,
-                                            TUint32 aAttribute ) const;
-        IMPORT_C TBool GetBearerInfoBoolL( TUint32 aBearerType,
-                                           TUint32 aAttribute ) const;
-        IMPORT_C HBufC* GetBearerInfoStringL( TUint32 aBearerType,
-                                              TUint32 aAttribute ) const;
-        IMPORT_C HBufC8* GetBearerInfoString8L( TUint32 aBearerType,
-                                                TUint32 aAttribute ) const;
-                    
-        /**
-        * GetConnectionMethodInfoXXX function can be used to 
-        * query any, non-bearer specific information about
-        * a given connection method. This can be e.g. ECmBearerType,
-        * ECmName, ECmStartPage etc.
-        * HBuf ownership is passed to the caller
-        */
-        IMPORT_C TUint32 GetConnectionMethodInfoIntL( 
-                                                TUint32 aCmId,
-                                                TUint32 aAttribute ) const;
-        IMPORT_C TBool GetConnectionMethodInfoBoolL( 
-                                                TUint32 aCmId,
-                                                TUint32 aAttribute ) const;
-        IMPORT_C HBufC* GetConnectionMethodInfoStringL( 
-                                                TUint32 aCmId,
-                                                TUint32 aAttribute ) const;
-        IMPORT_C HBufC8* GetConnectionMethodInfoString8L( 
-                                                TUint32 aCmId,
-                                                TUint32 aAttribute ) const;
-                
-                    
-    //=========================================================================
-    // Creation/Destruction API
-    //
-    public:
-              
-        /**
-        * Creates a Destination by the given name
-        *
-        * @since 3.2
-        * @param aName the name of the new destination
-        * @return CCmDestination*, ownership is passed to the caller
-        */
-        CCmDestinationImpl* CreateDestinationL( const TDesC& aName );
-
-        /**
-        * Creates a Destination by the given name
-        *
-        * @since 3.2
-        * @param aName the name of the new destination
-        * @param aDestId Predefined id for the destination
-        * @return CCmDestination*, ownership is passed to the caller
-        */
-        CCmDestinationImpl* CreateDestinationL( const TDesC& aName,
-                                                TUint32      aDestId );
-
-        
-        /**
-        * Creates a connection method does not belong to any destination
-        *
-        * @since 3.2
-        * @param aImplementationUid - implementation uid of the connection 
-        * method
-        * @param aParentDestination - the destination which holds the 
-        *                             connection method, NULL means there is
-        *                             no parent
-        * @return CCmPluginBase*
-        */
-        CCmPluginBase* CreateConnectionMethodL( TUint32 aBearerType,
-                            CCmDestinationImpl* aParentDestination = NULL );
-
-        /**
-        * Creates a connection method does not belong to any destination
-        *
-        * @since 3.2
-        * @param aImplementationUid - implementation uid of the connection 
-        * method
-        * @param aConnMethodId Predefined id for the connection method
-        * @param aParentDestination - the destination which holds the 
-        *                             connection method, NULL means there is
-        *                             no parent
-        * @return CCmPluginBase*
-        */
-        CCmPluginBase* CreateConnectionMethodL( TUint32 aBearerType,
-        		            TUint32 aConnMethodId,             
-                            CCmDestinationImpl* aParentDestination = NULL );
-        
-        /**
-        * Creates a connection method does not belong to any destination
-        *
-        * @since 3.2
-        * @param pluginBaseEng - Object to put in the pool
-        * @return CCmPluginBase*
-        */
-        CCmPluginBase* CreateConnectionMethodL( 
-                            CCmPluginBaseEng* pluginBaseEng );
-
-        /**
-        * Insert a connection method does not belong to any destination
-        * API doesn't use CCmPluginBase. So, nothing returns
-        *
-        * @param pluginBaseEng - Object to put in the pool
-        */
-        void InsertConnectionMethodL( 
-                            CCmPluginBaseEng* pluginBaseEng );
-        
-        /**
-        * Creates a connection method does not belong to any destination
-        *
-        * @since 3.2
-        * @param aBearerType - implementation uid of the connection 
-        * method
-        * @param aParams - the destination which holds the 
-        *                             connection method, NULL means there is
-        *                             no parent
-        * @return CCmPluginBaseEng*
-        */
-        CCmPluginBaseEng* DoCreateConnectionMethodL( TUint32 aBearerType,
-                                       TCmPluginInitParam& aParams );
-
-        /**
-        * Creates a connection method does not belong to any destination
-        *
-        * @since 3.2
-        * @param aBearerType Implementation uid of the connection 
-        * method
-        * @param aParams Initialization params for the plugin.
-        * @param aConnMethodId Predefined id for the connection method.
-        * @return CCmPluginBaseEng*
-        */
-        CCmPluginBaseEng* DoCreateConnectionMethodL( TUint32 aBearerType,
-            TCmPluginInitParam& aParams, TUint32 aConnMethodId );
-
-    //=========================================================================
-    // Getter-Setter API
-    //
-    public:    
-            
-        /**
-        * Calls FeatureManager::FeatureSupported directly.
-        *
-        * @since 3.2
-        * @param aFeature feature ID
-        * @return feature support status
-        * @since 3.2
-        */
-        static TBool FeatureSupported( TInt aFeature );
-        
-        /**
-        * Obsolete
-        */
-        IMPORT_C CCmPluginBaseEng* ConnectionMethodL( TUint32 aCmId );
-
-        /**
-        * Return the connection method queried by it's ID
-        *
-        * @since 3.2
-        * @param aCmId
-        * @return CCmPluginBase*
-        */
-        IMPORT_C CCmPluginBase* GetConnectionMethodL( TUint32 aCmId );
-        
-        /**
-        * Return the list of connection methods do not belongs to any 
-        * destination
-        *
-        * @since 3.2
-        * @param aCMArray on return it is the array of IAP ids.
-        * @param aCheckBearerType If ETrue only connection methods with 
-        *                         supported bearer types are returned
-        * @param aLegacyOnly when set to ETrue only Legacy IAP ids will
-        *                         be returned
-        * @param aEasyWlan when set to ETrue EasyWlan id is returned, too
-        * @param aSortByBearer if ETrue the CMs will be ordered according
-        *                      to global bearer priority
-        */        
-        IMPORT_C void ConnectionMethodL( RArray<TUint32>& aCMArray,
-                                         TBool aCheckBearerType = ETrue,
-                                         TBool aLegacyOnly = ETrue,
-                                         TBool aEasyWlan = EFalse,
-                                         TBool aSortByBearer = EFalse );
-        /**
-        * Return an array of all destinations
-        *
-        * @since 3.2
-        * @param aDestArray on return it returns an array of destination ids
-        */
-        IMPORT_C void AllDestinationsL( RArray<TUint32>& aDestArray );
-
-        /**
-        * Return the number of destinations
-        *
-        * @since 3.2
-        * @return the number of destinations
-        */
-        inline TUint DestinationCountL() { return iDestinationCount; }
-
-        /**
-        * Return the destination implementation to which a specified 
-        * connection method belongs, search is by destination ID ( the
-        * id which is made by RECORD_FROM_ELEMENT_ID from the elementID)
-        * If the  destination implementation is allready in the  object
-        * pool returns it. If it is not in the pool than puts it in the
-        * pool using the GetDestinationL funciton.
-        *
-        * @since 3.2
-        * @param aId
-        * @return a pointer to a destination
-        */
-        IMPORT_C CCmDestinationImpl* DestinationL( TUint32 aId );
-        
-        /**
-        * Removes the destination implementation 
-        * from the object pool
-        *
-        * @since 3.2
-        * @param aId
-        */
-        IMPORT_C void RemoveDestFromPool( CCmDestinationImpl* aDestination );
-        
-        /**
-        * Removes the destination implementation 
-        * from the object pool
-        *
-        * @since 3.2
-        * @param aId
-        */
-        void RemoveDestFromPool( CCmDestinationData* aDestination );
-        
-        /**
-        * Removes the cm 
-        * from the object pool
-        *
-        * @since 3.2
-        */
-        void RemoveCMFromPoolL( CCmPluginBaseEng* aCM );
-        
-        /**
-        * Removes the cm 
-        * from the object pool
-        *
-        * @since 3.2
-        */
-        void RemoveCMFromPoolL( CCmPluginBase* aCM );
-
-        /**
-        * The destination have been updated if it was a new destination
-        * than the zero id must be changed to the new one 
-        *
-        * @param aDestination - the destination to change
-        */         
-        void DestinationUpdated( CCmDestinationImpl* aDestination );
-              
-        /**
-        * Copie a connection method belonging to one destination to 
-        * another. The connection method becomes shared.
-        *
-        * @since 3.2
-        * @param aTargetDestination target destination
-        * @param aConnectionMethodId connection method to be copied
-        * @return index in the Connection Method list
-        */
-        TInt CopyConnectionMethodL( CCmDestinationImpl& aTargetDestination,
-                                    CCmPluginBase& aConnectionMethod );
-        
-        /**
-        * Move a connection method belonging to one destination to 
-        * another. The connection method is removed from the source destination
-        *
-        * @since 3.2
-        * @param aSourceDestination source destination
-        * @param aTargetDestination target destination
-        * @param aConnectionMethod connection method to be moved
-        * @return index in the Connection Method list which the connection 
-        *         method has been moved to
-        */
-        TInt MoveConnectionMethodL( CCmDestinationImpl& aSourceDestination,
-                                    CCmDestinationImpl& aTargetDestination,
-                                    CCmPluginBase& aConnectionMethod );
-        
-        /**
-        * Remove connection method from the destination
-        *
-        * @since 3.2
-        * @param aDestination destination the connection method is attached to
-        * @param aConnectionMethod connection method to be removed
-        */
-        void RemoveConnectionMethodL( CCmDestinationImpl& aDestination,
-                                      CCmPluginBase& aConnectionMethod );
-
-        /**
-        * Return the copy of the bearer priority array. Ownership is passed.
-        *
-        * @since 3.2
-        * @param aArray bearer priority array
-        */          
-        void BearerPriorityArrayL( RArray<TBearerPriority>& aArray ) const;
-        
-        /*
-        * Update bearer priority array
-        *
-        * @since 3.2
-        * @param aArray array with new global bearer priority
-        */          
-        void UpdateBearerPriorityArrayL( const RArray<TBearerPriority>& aArray );
-        
-        /**
-        * Clean up passed global bearer priority array. Delete
-        * the elements and calls Reset and Close on the array.
-        *
-        * @since 3.2
-        * @param aArray array to be cleaned up
-        */
-        void CleanupGlobalPriorityArray( RArray<TBearerPriority>& aArray ) const;
-        
-        /**
-        * Search service type in the global priority table and
-        * Return its priority.
-        *
-        * @since 3.2
-        * @param aUiPriority ETrue if UI priority is requested
-        * @param aServiceType serched service type 
-        * @return priority of the service type or KErrNotFound
-        */
-        TInt GlobalBearerPriority( TBool aUiPriority, 
-                                   const TDesC& aServiceType ) const;
-                                   
-        /*
-        * Query all of the supported bearer types.
-        *
-        * @since 3.2
-        * @param aArray list of all supported bearer types.
-        */          
-        void SupportedBearersL( RArray<TUint32>& aArray ) const;
-        
-        /*
-        * Return "Uncategorized" icon.
-        * This fucton leaves if the client does not have a valid UI context
-        *
-        * @since 3.2
-        * @return CGulIcon icon of uncategorized connection methods.
-        */          
-        CGulIcon* UncategorizedIconL() const;
-
-        /**
-        * Returns the id of the EasyWlan connection method.
-        *
-        * @since S60 3.2
-        * @return id of the EasyWLan connection method. 0 if not found
-        */
-        IMPORT_C TUint32 EasyWlanIdL();
-
-        /**
-        * Create a SNAP record object and load it if record id not 0.
-        * @param aRecordId record Id. 0 means create only
-        * @return created/loaded SNAP record
-        */
-        CCDSnapRecord* SNAPRecordL( TUint32 aRecordId ) const;
-
-        CCDSnapRecord* CreateSNAPRecordL( TUint32 aRecordId ) const;
-    
-        /**
-        * Tells the CmManager that the given default connection is deleted,
-        * and it sets Default Connection to Always Ask (default value).
-        *
-        * @since S60 3.2
-        */
-        void HandleDefConnDeletedL( TCmDefConnValue& aDCSetting );
-        /**
-        * Returns the default connection method/SNAP.
-        *
-        * @since S60 3.2
-        */
-        void ReadDefConnL( TCmDefConnValue& aDCSetting );   
-        /**
-        * Stores the default connection method/SNAP.
-        *
-        * @since S60 3.2
-        */
-        void WriteDefConnL( const TCmDefConnValue& aDCSetting );  
-        /**
-        * Returns the default connection method/SNAP.
-        *
-        * @since S60 3.2
-        */
-        void ReadDefConnWoTransL( TCmDefConnValue& aDCSetting );   
-        /**
-        * Stores the default connection method/SNAP.
-        *
-        * @since S60 3.2
-        */
-        void WriteDefConnWoTransL( const TCmDefConnValue& aDCSetting );  
-        /**
-        * Returs ETrue if Default Connection feature is supported.
-        *
-        * @since S60 3.2
-        */        
-        TBool IsDefConnSupported();
-        /**
-        * Check if memory low so that process can continue
-        */
-        TBool IsMemoryLow(); 
-        /**
-        * Returns the general connection settings.
-        */
-        void ReadGenConnSettingsL( TCmGenConnSettings& aGenConnSettings );
-        /**
-        * Replaces the general connection settings.
-        */
-        void ReplaceGenConnSettingsL( const TCmGenConnSettings& aGenConnSettings );
-        /**
-        * Writes the general connection settings.
-        */
-        void WriteGenConnSettingsL( const TCmGenConnSettings& aGenConnSettings );
-        
-                
-    //=========================================================================
-    // Resource handling
-    //
-    public:
-        
-        /** add resource file */
-        void AddResourceFileL( TFileName& aName );
-        
-        /** 
-        * Remove resource file from array only if
-        * the reference count is zero.
-        * @param aName name of the resource file to be removed
-        */
-        void RemoveResourceFile( TFileName& aName );
-
-        /**
-        * Read string from resource
-        *
-        * @since 3.2
-        * @param aResourceId resource id of the localized string
-        * @return localized string
-        */
-        HBufC* AllocReadL( TInt aResourceId ) const;    
-    
-    //=========================================================================
-    // CM related functions
-    //
-    public:
-        
-        /**
-        * Return the number of references to the given connection method id
-        * in the DN_IAP table
-        *
-        * @since 3.2
-        * @param aId ID of the connection method        
-        * @param aRecSet entire record set of the detination table
-        * @return number of references to the connection method in DN_IAP table
-        */
-        TUint32 NumOfConnMethodReferencesL( 
-            TUint32 aId,
-            CommsDat::CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>* aRecSet = NULL 
-            );
-        
-        /**
-        * Indicates is at least one non-"level 1 protected" destinations
-        *
-        * @since S60 3.2
-        * @return ETrue if at least one level 1 protected destination
-        */
-        TBool HasUnprotectedDestinationsL();
-        
-        /**
-        * Walks through every connection methods to find out
-        * if the passed connection method is linked to any of them.
-        * @param aPlugin connection method to be checked
-        * @return ETrue if linked
-        */
-        TBool IsIapLinkedL( const CCmPluginBaseEng& aPlugin );
-        
-        /**
-        * Removes all references to this CM from SNAP table.
-        */
-        void RemoveAllReferencesL( const CCmPluginBaseEng& aPlugin );
-
-        /**
-        * Removes all references to this CM from SNAP table without
-        * transaction to commsdat.
-        */
-        void RemoveAllReferencesWoTransL( const CCmPluginBaseEng& aPlugin );
-
-        /**
-        * Return the bearer type of connection method.
-        *
-        * @since 3.2
-        * @param aId id of the connection method
-        * @return bearer type of the connection method
-        */
-        TUint32 BearerTypeFromCmIdL( TUint32 aCmId );
-                
-        /**
-        * Return the bearer type of connection method.
-        *
-        * @since 3.2
-        * @param aIapRecord CommsDat record of the connection method
-        * @return bearer type of the connection method
-        */
-        TUint32 BearerTypeFromIapRecordL( CommsDat::CCDIAPRecord* aIapRecord ) const;
-
-    private:
-    
-        /**
-        * Find and create a connection method.
-        *
-        * @since 3.2
-        * @param aCmId id of the connection method
-        * @aParentDest parent destination of the connection method. Can be NULL.
-        */
-        CCmPluginBase* DoFindConnMethodL( TUint32 aCmId, 
-                              CCmDestinationImpl* aParentDest );
-    
-        /**
-        * Find and create a connection method.
-        *
-        * @since 3.2
-        * @param aCmId id of the connection method
-        * @aParentDest parent destination of the connection method. Can be NULL.
-        */
-        CCmPluginBaseEng* DoFindConnMethL( TUint32 aCmId, 
-                               CCmDestinationImpl* aParentDest );
-
-        /**
-        * Check the existence of tables we need.
-        * Creates if it is not exist, get the table id otherwise
-        */
-        void CheckTablesL();
-
-    public:
-    
-        /**
-        * Return the destination network table ID
-        *
-        * @since 3.2
-        * @return iDestinationTableId element id of the destination table
-        */        
-        inline CommsDat::TMDBElementId DestinationTableId() const { return iDestinationTableId; };
-        
-        /**
-        * Return Global Bearer Type Priorization Table ID
-        *
-        * @since 3.2
-        * @return element id of the bearer type priority.
-        */        
-        inline CommsDat::TMDBElementId BearerTypePriorizationTableId() const { return iBearerTypePriorizationTableId; };
-        
-        /**
-        * Return the Destination network - Icon table ID
-        *
-        * @since 3.2
-        * @return element id of the icon table.
-        */        
-        inline CommsDat::TMDBElementId IconTableId() const { return iIconTableId; };
-        
-        /**
-        * Return true if help is on in the FeatureManager
-        *
-        * @since 3.2
-        * @return TBool.
-        */        
-        inline TBool IsHelpOn() const { return iHelp; };
-
-        /**
-        * Return the Seamlessness table ID
-        *
-        * @since 3.2
-        * @return element id of the seamlessness table.
-        */        
-        inline CommsDat::TMDBElementId SeamlessnessTableId() const { return iSeamlessnessTableId; };
-        
-        /**
-        * Checks if the current environment has the given capability.
-        * Leaves with KErrPermissionDenied if capability is missing. 
-        *
-        * @since 3.2
-        * @param aCapability capability to be checked
-        */
-        static void HasCapabilityL( TCapability aCapability );
-        
-        /**
-        * Return an array of all IAP records.
-        * @return array of all IAP records
-        */
-        CommsDat::CMDBRecordSet<CommsDat::CCDIAPRecord>* AllIapsL();
-        
-        /**
-        * Return all the SNAP record. Filtering can be made on 
-        * passed SNAP elemented id.
-        * @return array of SNAP records
-        */
-        CommsDat::CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>* 
-                    CCmManagerImpl::AllSNAPRecordsL( TUint32 aSnapElementId );
-        
-    public:
-    
-        CommsDat::CMDBSession& Session() const;
-
-        /**
-        * Wraps this implementation to an RCmManagerExt. OWNERSHIP IS NOT PASSED
-        * , SO NEVER CLOSE aCmManagerExt!!!
-        *
-        * @since 3.2
-        * @param aCmManagerExt class to wrap implementation into
-        */
-        
-        IMPORT_C void WrapCmManager( RCmManagerExt& aCmManagerExt );
-     
-        /** Remove the virtual methods from the passed list
-        *
-        * @since 3.2
-        * @param aCmDataArray array that contains the connection methods to be filtered
-        */
-        IMPORT_C void FilterOutVirtualsL( RPointerArray<CCmPluginBase>& aCmDataArray );
-
-        /** Create a 'flat list' of connection methods of a given destination
-        * ( connection methods inside embedded destinations which are in the destination,
-        * are also present in the list ) and
-        * order them according to the bearer type prioritisation rules
-        * and return the result in aCmArray.        
-        *
-        * @since 3.2
-        * @param aDestination destination that contains the connection methods
-        * for uncategorised connection methods, use KDestItemUncategorized
-        * @param aCmArray array to return the result
-        */
-
-        IMPORT_C void CreateFlatCMListL( TUint32 aDestination ,
-                                        RPointerArray<CCmPluginBase>& aCmArray );        
-                                        
-        /** Create a 'flat list' of connection methods of a given destination
-        * ( connection methods inside embedded destinations which are in the destination,
-        * are also present in the list ) and
-        * order them according to the bearer type prioritisation rules
-        * and return the result in aCmArray.        
-        * LC version        
-        *
-        * @since 3.2
-        * @param aDestination destination that contains the connection methods
-        * for uncategorised connection methods, use KDestItemUncategorized
-        * @param aCmArray array to return the result
-        */
-        IMPORT_C void CreateFlatCMListLC( TUint32 aDestination ,
-                                        RPointerArray<CCmPluginBase>& aCmArray );        
-      
-        
-        /** Get a list of uncategorised connection methods in an RPointerArray 
-        * contains the parameters passed to ConnectionMethodL
-        *
-        * @since 3.2
-        * @param aCmArray the returned list of uncategorised connection methods
-        * @param aCheckBearerType see ConnectionMethodL
-        * @param aLegacyOnly see ConnectionMethodL
-        * @param aEasyWlan see ConnectionMethodL
-        * @param aSortByBearer see ConnectionMethodL
-        */
-        void AppendUncatCmListL(RPointerArray<CCmPluginBase>& aCmArray,
-                                         TBool aCheckBearerType = ETrue,
-                                         TBool aLegacyOnly = ETrue,
-                                         TBool aEasyWlan = EFalse,
-                                         TBool aSortByBearer = EFalse );
-        
-        /** Get a list of uncategorised connection methods in an RPointerArray 
-        * contains the parameters passed to ConnectionMethodL
-        * LC version
-        *
-        * @since 3.2
-        * @param aCmArray the returned list of uncategorised connection methods
-        * @param aCheckBearerType see ConnectionMethodL
-        * @param aLegacyOnly see ConnectionMethodL
-        * @param aEasyWlan see ConnectionMethodL
-        * @param aSortByBearer see ConnectionMethodL
-        */
-        void AppendUncatCmListLC(RPointerArray<CCmPluginBase>& aCmArray,
-                                         TBool aCheckBearerType = ETrue,
-                                         TBool aLegacyOnly = ETrue,
-                                         TBool aEasyWlan = EFalse,
-                                         TBool aSortByBearer = EFalse );
-        
-        /**
-        * Returns a list of references to the connection methods in the destination. 
-        *
-        * @since 3.2
-        * @param aPluginArray A pointer array to hold the values
-        * ownership is passed
-        */
-        void AppendCmListL( TUint32 aDestintaionId, RPointerArray<CCmPluginBase>& aCmArray);
-        
-        /**
-        * Returns a list of references to the connection methods in the destination. 
-        *
-        * @since 3.2
-        * @param aPluginArray A pointer array to hold the values
-        * ownership is passed
-        */
-        // and puts it on the CleanupStack
-        void AppendCmListLC( TUint32 aDestintaionId, RPointerArray<CCmPluginBase>& aCmArray);
-
-        /**
-        * Returns a list of references to the connection methods in the supported uid list . 
-        *
-        * @since 3.2
-        * @param aPluginArray A pointer array to hold the values
-        * ownership is passed
-        */
-        void AppendCmListFromUidsL( RArray<TUint32>& cmIdList, RPointerArray<CCmPluginBase>& aCMArray );        
-
-        /**
-        * Returns internet destination id. If internety destination is not found then -1 is returned.
-        *
-        * @since 5.0
-        * @return Internet destination id
-        */
-        TUint32 GetInternetDestinationIdL();
-        
-        /**
-        * Register aWatcher as watcher for change of CommsDat
-        */
-        IMPORT_C void WatcherRegisterL( MCmCommsDatWatcher* aWatcher );
-        
-        /**
-         * UnRegister current watcher
-         */
-        IMPORT_C void WatcherUnRegister();
-        
-        /*
-         * Find if aDest is still existed if some change is watched
-         */
-        IMPORT_C TBool DestinationStillExistedL( CCmDestinationImpl* aDest );
-        
-        /*
-         * Find if an Iap is still existed if some change is watched
-         * 
-         * The Iap, as parameter, is contained in the instance aPlugin
-         */        
-        IMPORT_C TBool IapStillExistedL( const CCmPluginBaseEng& aPlugin );
-        
-        /*
-         * Find if an Iap is still in aDest if some change is watched
-         * 
-         * The Iap, as parameter, is contained in the instance aPlugin
-         */
-        IMPORT_C TBool IsIapStillInDestL( CCmDestinationImpl* aDest, const CCmPluginBaseEng& aPlugin );
-
-    private:
-            
-        /**
-        * Creates bearer priority array
-        *
-        * @since 3.2
-        */          
-        void CreateBearerPriorityArrayL();   
-        
-        /**
-        * Look for the given resource file in the resource
-        * file array and return the index value of it.
-        *
-        * @since 3.2
-        * @param aName resource file name, not localized
-        * @return index of the resource file in the array
-        */
-        TInt FindResourceFile( TFileName& aName ) const;
-        
-        /**
-        * Build an array of all bearer specific plugins.
-        *
-        * @since 3.2
-        */
-        void BuildPluginArrayL();
-    
-        /**
-        * Return the copy of the bearer priority array. Ownership is passed.
-        *
-        * @since 3.2
-        * @param aArray bearer priority array
-        */          
-        void CopyBearerPriorityArrayL( RArray<TBearerPriority>& aArray ) const;
-        
-        /**
-        * Return if the IAP record points to an EasyWLan service record.
-        *
-        * @since 3.2
-        * @param aIapRecord IAP record to be checked
-        * @return ETrue if AP is EasyWLan
-        */
-        TBool IsEasyWLanL( CommsDat::CCDIAPRecord* aIapRecord ) const;
-        
-        /**
-        * Replaces the Default Connection record with the new one.
-        *
-        * @since 3.2
-        * @param aDCSetting Default Connection value to set
-        */
-        void ReplaceDefConnRecordL( const TCmDefConnValue aDCSetting );
-        
-        /**
-        * Combines two lists of CCmPluginBase pointers into one, according to default
-        * priority order
-        *
-        * @since 3.2
-        * @param aCmArray first list of connection methods to combine
-        * @param aCmLinkedArray second list of connection methods to combine
-        */
-        void CombineArraysForPriorityOrderL( 
-                                        RPointerArray<CCmPluginBase>& aCmArray , 
-                                        RPointerArray<CCmPluginBase>& aCmLinkedArray );        
-
-
-        /**
-        * Gets the destination for the given element ID
-        *
-        * @since 3.2
-        * @param aCmId The element ID of the destination
-        * @return Id of the parent
-        */
-        TUint32 ParentDestinationL( TUint32 aCmId );
-                
-        /**
-        * Returns the default general connection values.
-        *
-        * @since 9.2
-        * @param aGenConnSettings The general connection settings structure
-        */
-        void SetGenConnSettingsToDefault( TCmGenConnSettings& aGenConnSettings );
-        
-        /** 
-         * Leaves if no sufficient is available for creation operations
-         * 
-         * @since 9.2
-         */
-        void CheckAvailableSpaceL();
-        
-	    /**
-         * Get Snap Table ID from CommsDat
-         */
-        TUint32 GetSnapTableIdL();
-
-        /**
-         * Check if the attribute is bearerspecific
-         *
-         * @since 9.2
-         * @param aAttribute  attribute-id to be checked
-         * @return ETrue if aAttribute is bearerspecific, otherwise EFalse
-         */
-        TBool IsBearerSpecific( TUint32 aAttribute ) const;
-        
-#include "cmmanagerimpl.inl"               
-    //=========================================================================
-    // Member data
-        
-    private:
-    
-        CCmTransactionHandler*          iTrans;
-        
-        RFs                             iFs;
-        CArrayPtrFlat<TResourceFiles>*  iResourceFiles;
-        
-        // Destination network table ID
-        CommsDat::TMDBElementId iDestinationTableId;
-        //Global Bearer Type Priorization Table
-        CommsDat::TMDBElementId iBearerTypePriorizationTableId;
-        // Destination network - Icon table
-        CommsDat::TMDBElementId iIconTableId;
-        // Destination network - Icon table
-        CommsDat::TMDBElementId iSeamlessnessTableId;        
-        // Default Connection table
-        CommsDat::TMDBElementId iDefConnTableId;        
-        // Bearer priorities
-        RArray<TBearerPriority>* iBearerPriorityArray;
-        
-        CArrayPtrFlat<const CCmPluginBaseEng>* iPlugins;
-        
-        CCmConnectionMethodInfo* iPluginImpl;
-        
-        TUint iDestinationCount;
-        
-        CCMObjectPool* iObjectPool;
-              
-        // for the FeatureManager
-        TBool iIsFeatureManagerInitialised;
-        TBool iHelp;
-        TBool iDefConnSupported;
-        TBool iCreateTables;
-        TBool iWLan;
-               
-        // For CommsDat watcher
-        CCmCommsDatNotifier* iCommsDatIapNotifier;
-        CCmCommsDatNotifier* iCommsDatSnapNotifier;
-    private:
-    
-        friend class CCmDestinationImpl;
-        friend class CCMObjectPool;
-        friend class CCmConnectionMethodInfo;
-    };
-
-#endif // CMMANAGERIMPL_H
--- a/cmmanager/cmmgr/Framework/Inc/cmmanagerimpl.inl	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of connection method manager
-*
-*/
-
-#ifndef CMMANAGERIMPL_INL
-#define CMMANAGERIMPL_INL
-
-public:
-        /**
-        * The cm have been updated if it was a new cm
-        * than the zero id must be changed to the new one 
-        *
-        * @param aCM - the cm to change
-        */         
-        inline void ConnMethodUpdatedL( CCmPluginBaseEng* aCM )
-            {
-            iObjectPool->ConnMethodUpdatedL( aCM );
-            iPluginImpl->ResetIfInMemory( aCM );
-            }
-
-public:
-        template<typename TArrayToCleanup>
-        /*
-        * Pushes an array to the CleanupStack, calling it's ResetAndDestroy
-        * when destroying it.
-        */
-        static void CleanupResetAndDestroyPushL(TArrayToCleanup& aPtr)
-            {
-            void (*p)(TAny*) = CCmManagerImpl::ResetAndDestroy<TArrayToCleanup>;
-            CleanupStack::PushL( TCleanupItem(p, (void*)(&aPtr)) );
-            }
-private:
-        /**
-        * A cleanup function for TCleanupItem construction for
-        * cleanup of pointers in an RPointerArray
-        * usage: 
-        * CleanupStack::PushL( TCleanupItem( CCmManagerImpl::DestroyRPointerArray<ItemTypeName>, (void*)(PointerToArray)) )
-        * @return TInt
-        */        
-        template<typename TArrayToCleanup>
-        static void ResetAndDestroy(TAny* aPtr)
-        {
-        TArrayToCleanup *p = static_cast <TArrayToCleanup*> (aPtr);
-        p->ResetAndDestroy();
-        }   
-#endif // CMMANAGERIMPL_H
--- a/cmmanager/cmmgr/Framework/Inc/cmobjectpool.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,188 +0,0 @@
-/*
-* Copyright (c) 2007 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:  Object pool for storing destinations and connection
-*                methods.
-*
-*/
-
-#ifndef CMOBJECTPOOL_H
-#define CMOBJECTPOOL_H
-
-class CCmPluginBaseEng;
-class CCmPluginBase;
-class CCmManagerImpl;
-
-// User includes
-#include "cmdestinationimpl.h"
-#include <e32def.h>
-
-/**
- *  Object pool to  hold destination implementations and 
- *  connetion method implementations
- *
- *  The get and remove functions must be used in pairs
- */
-NONSHARABLE_CLASS( CCMObjectPool ) : public CBase
-	{
-
-	public:
-		CCMObjectPool(CCmManagerImpl& aCmManagerImpl);
-		virtual ~CCMObjectPool();
-        /**
-        * If the destinaton impl is in the pool returns a pointer to it. 
-        * If the destinaton impl is not in the pool creates it.
-        *
-        * @param aDestinationId - ID of the destination requested
-        * @return pointer to the destination - ownership passed
-        */         
-        CCmDestinationImpl* GetDestinationL( TUint32 aDestinationId );
-        /**
-        * If the destinaton impl is in the pool returns a pointer to it. 
-        * If the destinaton impl is not in the pool creates it.
-        *
-        * @param aName - name of the destination requested
-        * @return pointer to the destination - ownership passed
-        */         
-        CCmDestinationImpl* GetDestinationL( const TDesC& aName );
-
-        /**
-        * Creates a destination if it does not exist.
-        * 
-        * @param aName - name of the destination requested
-        * @param aDestId - predefined id for the destination
-        * @return pointer to the destination - ownership passed
-        */         
-        CCmDestinationImpl* CreateDestinationL( const TDesC& aName, TUint32 aDestId );
-
-        /**
-        * Returns a pointer to an allready existing connecton method
-        *
-        * @param aCmId - ID of the CM requested
-        * @param aParentDest - parent destination
-        * @return plugin instance - ownership passed
-        */         
-        CCmPluginBase* GetConnectionMethodL( TUint32             aCmId, 
-                                             CCmDestinationImpl* aParentDest );
-        /**
-        * Creates cm and places it into the pool.
-        *
-        * @param aImplementationUid - Bearer Type
-        * @param aParams Init params for the plugin
-        * @return plugin instance - ownership passed
-        */         
-        CCmPluginBase* CreateConnectionMethodL( TUint32 aImplementationUid, 
-                                 TCmPluginInitParam& aParams );
-
-        /**
-        * Creates cm and places it into the pool.
-        *
-        * @param aImplementationUid - Bearer Type
-        * @param aParams Init params for the plugin
-        * @param aConnMethodId Predefined id for the connection method.
-        * @return plugin instance - ownership passed
-        */         
-        CCmPluginBase* CreateConnectionMethodL( TUint32 aImplementationUid, 
-                                                TCmPluginInitParam& aParams,
-                                                TUint32 aConnMethodId );
-
-        /**
-        * Creates cm and places it into the pool.
-        *
-        * @param pluginBaseEng - Object to put in the pool
-        * @return plugin instance - ownership passed
-        */         
-        CCmPluginBase* CreateConnectionMethodL( CCmPluginBaseEng* pluginBaseEng );
-
-        /**
-        * Insert cm and places it into the pool.
-        * API doesn't use CCmPluginBase. So, nothing returns
-        *
-        * @param pluginBaseEng - Object to put in the pool
-        */         
-        void InsertConnectionMethodL( CCmPluginBaseEng* pluginBaseEng );
-
-        /**
-        * Removes a destination impl from the object pool. 
-        *
-        * @param aDestination - the destination to remove
-        */         
-        void RemoveDestination( CCmDestinationImpl* aDestination );
-        
-        /**
-        * Removes a destination data from the object pool. 
-        *
-        * @param aDestination - the destination to remove
-        */         
-        void RemoveDestination( CCmDestinationData* aDestination );
-        
-        /**
-        * Removes a connection method impl from the object pool. 
-        *
-        * @param aDestinationId - ID of the connection method to remove
-        */         
-        void RemoveConnectionMethodL( CCmPluginBase* aCM );
-        
-        /**
-        * Removes a connection method impl from the object pool. 
-        *
-        * @param aDestinationId - ID of the connection method to remove
-        */         
-        void RemoveConnectionMethodL( CCmPluginBaseEng* aCM );
-
-        /**
-        * This is called after the new destination have been updated 
-        * This function updates the iDestinationId 
-        * field in the TObjectPoolDestinationItem
-        *
-        * @param aDestination - the destination to change
-        */         
-        void DestinationUpdated( CCmDestinationImpl* aDestination );
-
-        /**
-        * This is called after the new cm have been updated 
-        * This function updates the Id 
-        * field
-        *
-        * @param aCM - the CM to change
-        */         
-        void ConnMethodUpdatedL( CCmPluginBaseEng* aCM );
-        
-    private:
-		class TObjectPoolDestinationItem  
-		    {
-		    public:
-                TObjectPoolDestinationItem(
-                        CCmDestinationData* aDestinationItem, 
-                        TUint32             aDestinationId);  
-    		    TInt                iDestinationId;
-    		    CCmDestinationData* iDestinationItem;
-		    };
-		class TObjectPoolCMItem  
-		    {
-		    public:
-                TObjectPoolCMItem(
-                        CCmPluginBaseEng* iConnectionMethodItem, 
-                        TUint32           iConnectionMethodId); 
-    		    TInt                iConnectionMethodId;
-    		    CCmPluginBaseEng*   iConnectionMethodItem;
-		    };
-	private:
-	    CCmManagerImpl&                     iCmManagerImpl;
-	    // object pool for holding destination implementations
-	    RArray<TObjectPoolDestinationItem>  iDestinationArray;
-	    // object pool for holding connetion method implementations
-	    RArray<TObjectPoolCMItem>           iConnectionMethodArray;
-};
-
-#endif // CMOBJECTPOOL_H
--- a/cmmanager/cmmgr/Framework/Inc/cmpluginmenucommands.hrh	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Menu command ids for connection method plugins
-*
-*/
-
-#ifndef CMPLUGINMENUCOMMANDS_HRH
-#define CMPLUGINMENUCOMMANDS_HRH
-
-enum TCmPluginMenuCommands  /// Commands.
-    {
-    EPluginBaseCmdChange = 202,
-    EPluginBaseCmdAdvanced,
-    EPluginBaseCmdExit
-    };
-
-#endif // CMPLUGINMENUCOMMANDS_HRH
--- a/cmmanager/cmmgr/Framework/Inc/cmpluginmultilinedialog.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of class CCmPluginMultiLineDialog.
-*
-*/
-
-#ifndef CM_PLUGIN_MULTILINE_DIALOG_H
-#define CM_PLUGIN_MULTILINE_DIALOG_H
-
-// INCLUDE FILES
-#include <AknQueryDialog.h>
-
-/**
- *  A new class to extend the functionality of the existing 
- *  CAKnMultiLineIpQueryDialog to be able to accept 0 length settings...
- *  Nothing else is changed.
- *
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CCmPluginMultiLineDialog ) : 
-                    public CAknMultiLineDataQueryDialog
-    {
-    public:
-
-        /**
-        * Multiline data query dialog, 2 lines
-        * @param aText1 Text1
-        * @param aText2 Text2
-        * @param aTone Tone 
-        * @return A constructed CCmPluginMultiLineDialog
-        */
-       IMPORT_C static CCmPluginMultiLineDialog* NewL(
-                            TDes&  aText1, TDes&  aText2, 
-                            TTone aTone = ENoTone);
-
-    protected:
-
-        /**
-        * If the query text is ok (retrieved form query controls) then 
-        * display the left soft key, otherwise hide it.
-        */
-        void UpdateLeftSoftKeyL();
-
-    private:
-
-        /**
-        * Constructor
-        * @param aTone Tone
-        */
-        CCmPluginMultiLineDialog( const TTone& aTone );
-    };
-
-#endif
--- a/cmmanager/cmmgr/Framework/Inc/cmsettingsuiimpl.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of setting UI
-*
-*/
-
-#ifndef C_CMSETTINGSUIIMPL_H
-#define C_CMSETTINGSUIIMPL_H
-
-#include <e32def.h>
-#include <e32base.h>
-#include <ConeResLoader.h>
-
-class CCmManagerImpl;
-
-/**
- *  Implementation of setting UI
- *
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS(CCmSettingsUiImpl) : public CBase
-    {
-    public:
-
-        /** Epoc constructor */
-        static CCmSettingsUiImpl* NewL();
-
-        /** Destructor */
-        virtual ~CCmSettingsUiImpl();
-
-    //=========================================================================    
-    // UI API
-    //
-    public:
-
-        /**
-        * Launches the Settings UI 
-        * for handling Destinations and Connection Methods
-        * @since 3.2
-        */
-        TInt RunSettingsL();
-        
-        /**
-        * Launches a dialog with a list of Destination
-        * @since 3.2
-        * @param  aDestinationId ID of the selected Destination
-        * @return TBool
-        */
-        TBool SelectDestinationDlgL( TUint32& aDestinationId );
-
-    private:
-
-        /** First stage constructor */
-        CCmSettingsUiImpl();
-
-        /** Epoc constructor */
-        void ConstructL();
-
-        /** Load resource */
-        TInt LoadResourceL ();
-
-    private: // data
-
-        CCmManagerImpl* iCmManagerImpl;
-        RConeResourceLoader iResourceReader;
-    };
-
-#endif // C_CMSETTINGSUIIMPL_H
--- a/cmmanager/cmmgr/Framework/Inc/cmtransactionhandler.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of transaction handler
-*
-*/
-
-#ifndef CMTRANSACTION_HANDLER_H
-#define CMTRANSACTION_HANDLER_H
-
-#include <commsdattypesv1_1.h>
-
-/**
- *  Transaction handler.
- *
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CCmTransactionHandler ) : public CBase
-    {
-    public:
-
-        /** Epoc constructor */
-        static CCmTransactionHandler* NewL( CommsDat::CMDBSession& aDb );
-        
-        // destructor is intentionally not virtual.
-        ~CCmTransactionHandler();
-
-    public:
-    
-        /**
-        * @return commsdat session
-        */
-        CommsDat::CMDBSession& Session()const{ return iDb; };
-        
-        /**
-        * - Checks if transaction is already opened
-        * - Set iOwnTransaction is not and opens it and
-        *   put 'this' on cleanup&close stack
-        */
-        void OpenTransactionLC( TBool aSetAttribs = ETrue );
-        
-        /**
-        * - Checks if the transaction is ours.
-        * - If yes, commits the transaction.
-        * - anyway does nothing
-        * @praram aError - error id
-        */
-        void CommitTransactionL( TInt aError = KErrNone );
-        
-        /**
-        * Performs RollbackTransactionL().
-        */
-        void Close();     
-
-    private:
-    
-        /** Constructor. */
-        CCmTransactionHandler( CommsDat::CMDBSession& aDb );
-
-        /**
-        * Second phase constructor. Leaves on failure.
-        */      
-        void ConstructL();
-
-    private: // data
-    
-        CommsDat::CMDBSession&    iDb;   ///< Not owned CommsDat session pointer
-        TUint32         iRefCount;
-        TUint32         iProtectionFlag;
-    };
-
-#endif // CMTRANSACTION_HANDLER
--- a/cmmanager/cmmgr/Framework/Inc/cmwizard.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Wizard used for adding connection methods
-*
-*/
-
-#ifndef T_TCMWIZARD_H
-#define T_TCMWIZARD_H
-
-// INCLUDE FILES
-#include <e32def.h>
-#include <AknProgressDialog.h>
-
-// FORWARD DECLARATIONS
-class CAknWaitDialog;
-class CCmDestinationImpl;
-class CCmManagerImpl;
-class CCmPluginBase;
-
-/**
- *  Connection Method wizard
- *
- *  Wizard used for creating a new Connection Method.
- *
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CCmWizard ) : public CBase,
-                                 public MProgressDialogCallback
-    {
-    public: // constructor
-
-        /**
-         * Constructor.
-         *
-         * @param aCmManager Connection Method Manager implementation passed
-         * for queries.
-         */
-        CCmWizard( CCmManagerImpl& aCmManager );
-
-        /**
-        * Destructor.
-        */
-        ~CCmWizard();
-
-    public: // public methods
-    
-        /**
-        * Key method for creating a new Connection Method. This function
-        * guides the user through several steps and then finally creates
-        * a new Connection Method based on the information the user has given.
-         * @param aTargetDestination Target destination to which the new
-         * connection method will be added. Can be NULL if the
-         * destination is to be selected by the user later on (via a dialog).
-        */
-        TInt CreateConnectionMethodL
-                            ( CCmDestinationImpl* aTargetDestination = NULL );
-
-    public: // from MProgressDialogCallback
-    
-        /**
-        * @see MProgressDialogCallback mixin for more details.
-        */
-        void DialogDismissedL( TInt aButtonId );
-
-    private: // internal helper methods
-    
-        /**
-        * Shows a dialog asking the user if he/she wants to have the available
-        * connection methods automatically checked for.
-        * @return ETrue if the user wants the conn methods be automatically
-        * discovered, EFalse if he/she wants to discover them manually.
-        */
-        TBool AutoCheckForCmsL() const;
-
-        /**
-        * If automatic CM detection has failed, the user is prompted a dialog
-        * asking if he/she wants to proceed with manual configuration.
-        * @return ETrue if the user wants to proceed with manual configuration,
-        * EFalse otherwise.
-        */
-        TBool ManualCheckForCmsL() const;
-
-        /**
-        * Checks for availability of packet data and WLAN bearer types. Shows
-        * a wait dialog until discovery is not complete.
-        * @param aCoverageArray This array is supposed to hold the UIDs of
-        * bearers that have network coverage for the moment.
-        */
-        void CheckForCmsL( RArray<TUint32>& aCoverageArray );
-        
-        
-        /**
-         * Finds the target destination to which the currently creted VPN
-         * connection method points. It can be a destination or the destination
-         * which includes the connection method to which the VPN points.
-         * @param aPlugin VPN plugin.
-         * @return the Id of the destination 
-         */
-        TUint32 FindTargetDestinationL( CCmPluginBase* aPlugin );
-
-        /**
-         * Finds the parent destination of a connection method.
-         * @param Id of the connection method
-         * @return Id of the destination which contains cmId 
-         */
-        TUint32 FindParentDestinationL( TUint32 aCmId );
-
-    private: // data
-    
-        CAknWaitDialog* iCheckConnDlg;  ///< Owned.
-        TBool iCheckConnDlgCancelled;
-        
-        CCmManagerImpl& iCmManager;     ///< Only a reference == not owned.
-    };
-
-#endif // T_TCMWIZARD_H
--- a/cmmanager/cmmgr/Framework/Inc/destdlg.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,249 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Dialog for displaying and editing destinations.
-*
-*/
-
-#ifndef DESTDIALOG_H
-#define DESTDIALOG_H
-
-//  INCLUDES
-#include <AknForm.h>
-#include <cmsettingsui.h>
-#include "destlistboxmodel.h"
-#include "destlistbox.h"
-#include "cmmanagerimpl.h"
-#include "cmconnsettingsuiimpl.h"
-#include <mcmdexec.h>
-#include "cmcommsdatnotifier.h"
-
-// CLASS DECLARATION
-class CEikStatusPane;
-class CAknTitlePane;
-class CAknNavigationControlContainer;
-class CAknNavigationDecorator;
-class CCmWizard;
-class CCmdExec;
-
-/**
-*  Dialog for setting the gateway's IP address
-*/
-NONSHARABLE_CLASS( CDestDlg ) : public CAknDialog
-                              , MEikListBoxObserver
-                              , public MCmdExec
-                              , public MCmCommsDatWatcher
-    {
-    public :    // construction
-    
-        /**
-        * Default constructor.
-        */
-        CDestDlg();
-
-        /**
-        * Destructor.
-        */
-        ~CDestDlg();
-        
-         /**
-        * Create and launch dialog.
-        * @return           The code returned by the dialogs' ExecuteLD
-        */
-        TInt ConstructAndRunLD( CCmManagerImpl* aCmManager, TUint32 aHighLight, 
-                                TUint32& aSelected, TBool& aExiting );
-
-        // From MEikMenuObserver
-        virtual void DynInitMenuPaneL( TInt aResourceId, 
-                                       CEikMenuPane* aMenuPane );
-
-        // From MEikCommandObserver
-        virtual void ProcessCommandL( TInt aCommandId ) ; 
-
-        /**
-        * Updates listbox data
-        */
-        void HandleListboxDataChangeL();
-
-        /**
-        * Handle key event.
-        * @param aKeyEvent The key event.
-        * @param aType Key event type.
-        * @return Response (was the key event consumed?).
-        */
-        TKeyResponse OfferKeyEventL
-            ( const TKeyEvent& aKeyEvent, TEventCode aType );        
-        
-     
-	public:
-        /**
-         * From base class MCmdExec
-         */
-        void Execute();
-
-        /**
-         * From base class MCmdExec
-         */
-        void CDestDlg::HandleLeaveError( TInt aError );
-
-    public: // From CCoeControl
-    
-        /**
-        * Returns the help context
-        * From CCoeControl
-        * 
-        * @since S60 3.2
-        * @param aContext the returned help context
-        */
-        void GetHelpContext( TCoeHelpContext& aContext ) const;
-        
-        /**
-        * Handles the resource change
-        * From CCoeControl
-        * 
-        * @since S60 5.0
-        * @param aType Type of the resource change
-        */
-		void HandleResourceChange( TInt aType );
-        
-        /**
-        * Show default connection note
-        * 
-        * @since S60 5.0
-        * @param aOldConn Old default connection
-        */
-        void ShowDefaultConnectionNoteL(TCmDefConnValue aOldDefConn);
-        
-    public: // From MCmCommsDatWatcher
-        
-        /**
-         * Watch changes in CommsDat
-         */
-        void CommsDatChangesL();
-        
-    protected :    // from CEikDialog
-    
-        /**
-        * Set the gateway's IP address, if the user pressed OK.
-        * @param aButtonId The ID of the pressed button.
-        * @return May the dialog exit?
-        */
-        TBool OkToExitL( TInt aButtonId ) ;
-        
-        void PreLayoutDynInitL();
-        
-        SEikControlInfo CreateCustomControlL ( TInt aControlType );
-
-        // From MEikListBoxObserver
-        void HandleListBoxEventL( CEikListBox* aListBox, 
-                                  TListBoxEvent aEventType );
-                                  
-        /**
-        * Sets the number of connections text on navi pane
-        */                                  
-        void SetNoOfDestsL(TInt aCount);                                  
-
-    private:
-    
-        /**
-        * Initialises listbox texts
-        */    
-        void InitTextsL();
-
-        /**
-        * Creates a new destination and adds it to Destination view.
-        */
-        void AddDestinationL();
-        
-        /**
-        * Called when user selected edit on a destination.
-        */
-        void OnCommandDestinationEditL();
-        
-        /**
-        * Called when user selected delete on a destination.
-        */
-        void OnCommandDestinationDeleteL();
-        
-        /**
-        * Called when user selected rename on a destination.
-        */
-        void OnCommandDestinationRenameL();
-        
-        /**
-        * Called when destination is about to be deleted.
-        */
-        TBool IsThereProtectedMethodL( CCmDestinationImpl* aDest );
-        
-        /**
-        * Sets the text of the middle soft key by the text resource. 
-        */
-        void CDestDlg::SetMskL( TInt aResourceId );
-        
-        /**
-        * Shows the 'Default set to:' note.
-        */
-        void ShowDefaultSetNoteL(TCmDefConnValue aSelection);
-        
-        /**
-        * Shows the 'Default:' in navi pane.
-        */
-        void SetDefaultNaviL( TCmDefConnValue aSelection );
-        
-        /**
-        * Counts how many CMs can be displayed.(Shouldn't display
-        * CMs for which the plugin is not loaded.)
-        */
-        TUint32 NumberOfCMsL( RArray<TUint32> cmArray );
-
-        /**
-        * Enforced to release allocated memory and reset protection
-        * when some exceptions occur
-        */
-        void EnforcedResetCDestDlg();
-     
-    protected:
-    
-        CDestListboxModel*      iModel;
-        CDestListbox*           iListbox;
-        TUint32                 iHighlight;
-        TUint32*                iSelected;           
-        TBool                   iModelPassed;
-        CEikStatusPane*         iStatusPane;    // NOT owned
-        CAknTitlePane*          iTitlePane;     // NOT owned
-        CAknNavigationControlContainer* iNaviPane;      // NOT owned
-        CAknNavigationDecorator*        iNaviDecorator; // owned
-        HBufC*                  iOldTitleText;
-        CCmManagerImpl*         iCmManagerImpl; // NOT owned
-        TInt                    iExitReason;    // Exit reason, can be 
-                                                // KUserExit or KUserBack
-                                                // used to pass user exit event   
-        CCmConnSettingsUiImpl* iConnSettingsImpl;
-        CCmdExec*             iCmdExec;        
-        
-     private:     
-
-        CCmWizard*          iCmWizard; // wizard for connection method creation
-        // Indicated that Escape has arrived and it should be forwarded when CmWizard
-        // finished its work
-        TBool               iEscapeArrived;
-        
-        // Indicates whether the Exit button was pressed. Not owned.
-        TBool*              iExiting;
-        
-        // This dialog shouldn't exit while processing in a plugin
-        // Indicates whether processing or not
-        TBool               iProcessing;
-    };
-
-#endif
--- a/cmmanager/cmmgr/Framework/Inc/destlistbox.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of class CDestListbox.
-*
-*/
-
-#ifndef APSELECTOR_LISTBOX_H
-#define APSELECTOR_LISTBOX_H
-
-// INCLUDE FILES
-#include <aknlists.h>
-
-// FORWARD DECLARATION
-class CDestListboxModel;
-
-/**
- *  Model for the destinations listbox. It is an array of CDestListItem
- *  pointers; items are owned.
- *
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CDestListbox ) : public CAknDoubleLargeStyleListBox
-    {
-    public:     // Construct / destruct
-
-        /**
-        * Two-phased constructor. Leaves on failure.
-        * @param aParent Parent control.
-        * @return The constructed listbox.
-        */
-        static CDestListbox* NewL
-            ( const CCoeControl* aParent );
-
-        /**
-        * Destructor.
-        */
-        virtual ~CDestListbox();
-
-        /**
-        * Constructor.
-        */
-        CDestListbox();
-
-    public:
-    
-        /**
-        * Handle key event.
-        * @param aKeyEvent The key event.
-        * @param aType Key event type.
-        * @return Response (was the key event consumed?).
-        */
-        TKeyResponse OfferKeyEventL
-            ( const TKeyEvent& aKeyEvent, TEventCode aType );
-
-        /**
-        * Handle focus change.
-        * @param aDrawNow Draw now?
-        */
-        void FocusChanged( TDrawNow aDrawNow );
-
-        /**
-        * Gets the UID from a given item
-        * @param    The index of the item
-        * @return   The UID of the item given by itemindex
-        */
-        TUint32 Uid4Item( TInt aItem ) const;
-
-        /**
-        * Gets the UID of the current item
-        * @return  The UID of the current item
-        */
-        TUint32 CurrentItemUid() const;
-
-        /**
-        * Gets the name of the current item
-        * @return The name of the current item
-        */
-        const TDesC& CurrentItemNameL();
-        
-
-        // from CCoeControl
-        void HandleResourceChange(TInt aType);
-    };
-
-#endif
--- a/cmmanager/cmmgr/Framework/Inc/destlistboxmodel.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of class CDestListboxModel.
-*
-*/
-
-#ifndef DESTLISTBOX_LISTBOX_MODEL_H
-#define DESTLISTBOX_LISTBOX_MODEL_H
-
-// INCLUDE FILES
-#include <eikdialg.h>
-#include "destlistitemlist.h"
-#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <commsdat.h>
-#else
-#include <commsdat.h>
-#include <commsdat_partner.h>
-#endif
-
-// CONSTANTS
-// Granularity of the model array.
-const TInt KGranularity = 8;
-_LIT( KListItemFormatDestProt, "%d\t%S\t%S\t%d" );
-_LIT( KListItemFormatDest, "%d\t%S\t%S" );
-const TInt KMaxFormatSize = sizeof( KListItemFormatDest );
-const TInt KMaxListItemNameLength = CommsDat::KMaxTextLength;
-const TInt KMaxDestListboxName = KMaxListItemNameLength+KMaxFormatSize;
-
-/**
- *  Model for the destinations listbox.
- *  pointers; items are owned.
- *
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CDestListboxModel ) : public CDestListItemList
-                                       , public MDesCArray
-    {
-    public:     // Construct / Destruct
-
-        /**
-        * Constructor.
-        * @param aGraphicType   The used graphic type
-        */
-        CDestListboxModel();
-
-        /**
-        * Destructor.
-        */
-        virtual ~CDestListboxModel();
-
-    public:     // from MDesCArray
-
-        /**
-        * Get number of items in the model.
-        * @return Number of items.
-        */
-        TInt MdcaCount() const;
-
-        /**
-        * Text to be displayed for this item.
-        * @param aIndex Index of item.
-        * @return TPtrC for this item text (text owned by the model).
-        */
-        TPtrC MdcaPoint( TInt aIndex ) const;
-
-    public:        
-        
-        /**
-        * Sets the icon offset
-        * @param aOffset    The offset of our icons in the iconarray
-        */
-        void SetOwnIconOffset( TInt aOffset );
-
-    private:    // data
-    
-        /**
-        * Formats the text of the listbox, calls the leaving version trapped.
-        * @param aIndex Index of item.
-        * @param aBuf Buffer to store formatted text.
-        */
-        void FormatListboxText( TInt aIndex, TDes& aBuf ) const;
-
-        /**
-        * Formats the text of the listbox, leaving version.
-        * @param aIndex Index of item.
-        * @param aBuf Buffer to store formatted text.
-        */
-        void FormatListboxTextL( TInt aIndex,
-                                                TDes& aBuf ) const;
-        /**
-        * MdcaPoint() cannot leave, so this buffer is allocated
-        * to allow formatting. Fortunately, doesn't have to be very
-        * large.
-        * We have to use MUTABLE CAST, as MdcaPoint is const (odd enough),
-        * so wouldn't allow formatting the text in a member...
-        */
-        __MUTABLE TBuf<KMaxDestListboxName> iBuf;
-        TInt iOffset;
-    };
-
-#endif
--- a/cmmanager/cmmgr/Framework/Inc/destlistitem.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*     Declaration of the CDestSelect class.
-*
-*/
-
-
-#ifndef CDESTLISTITEM_H
-#define CDESTLISTITEM_H
-
-#include <e32base.h>
-#include <cmmanagerdef.h>
-
-/**
- *  Representation of a destinations list item.
- *  This class is used to hold the main information of a destination.
- *
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CDestListItem ) : public CBase
-    {
-    public:  // Constructors and destructor
-
-        /**
-        * Two-phased constructor. Leaves on failure, places instance
-        * on cleanup stack.
-        * @param aUid The ID of the destination
-        * @param aName The name of the destination
-        * @param aNumOfCMs the number of connection methods belonging to the destination
-        * @param aIconIndex The icon index of the destination
-        * @param aIsProtected Whether the given item is read-only or not
-        * @return The constructed CDestListItem.
-        */
-         static CDestListItem* NewLC( TUint32 aUid,
-                                      HBufC* aName,
-                                      TInt aNumOfCMs, 
-                                      TUint aIconIndex, 
-                                      CMManager::TProtectionLevel aProtectionLevel,
-                                      TBool aIsDefault );
-
-        /**
-        * Destructor.
-        */
-        virtual ~CDestListItem();
-
-    protected:      // Constructors
-    
-        /**
-        * C++ default constructor.
-        */
-        CDestListItem( HBufC* aName );
-        
-        /**
-        * Second-phase constructor.
-        * @param aUid The ID of the destination
-        * @param aNumOfCMs the number of connection methods belonging to the destination
-        * @param aIconIndex The icon index of the destination
-        * @param aIsProtected Whether the given item is read-only or not
-        * @return The constructed CDestListItem.
-        */
-        void ConstructL( TUint32 aUid,
-                         TInt aNumOfCMs, 
-                         TUint aIconIndex, 
-                         CMManager::TProtectionLevel aProtectionLevel,
-                         TBool aIsDefault );
-    public: // New functions
-
-        /**
-        * Gets the name of the 'current' destination
-        * Ownership of the returned text is not passed.
-        * @return The name of the current destination
-        */
-        const TDesC& Name();
-
-        /**
-        * Gets the UID of the current destination
-        * @return The UID of the current destination
-        */
-        TUint32 Uid();
-
-        /**
-        * Gets the number of connection mehtods belonging to the current destination
-        * @return The number of connection mehtods belonging to the current destination
-        */
-        TInt NumOfCMs();
-         
-        /**
-        * Gets the IconIndex of the current destination
-        * @return The IconIndex of the current destination
-        */
-        TUint IconIndex();
-
-        /**
-        * Returns the destination's protected flag
-        * @return ETrue if the destination is protected
-        */ 
-        TUint IsProtected();
-        /**
-        * Returns the Protection Level
-        * @return TProtectionLevel
-        */ 
-        CMManager::TProtectionLevel GetProtectionLevel();
-        TUint IsDefault();
-
-    private:    // Data
-
-        TUint32         iUid;           ///< The ID of the destination
-        HBufC*          iName;          ///< The name of the destination
-        TInt            iNumOfCMs;      ///< The number of connection mehtods belonging to the
-                                        //// destination
-        TUint           iIconIndex;     ///< The iIconIndex of the destination
-        TBool           iIsProtected;   ///< The IsProtected flag of the destination
-        TBool           iIsDefault;   ///< The IsDefault flag of the destination
-        CMManager::TProtectionLevel iProtectionLevel;
-    };
-
-#endif      // CDESTLISTITEM_H
--- a/cmmanager/cmmgr/Framework/Inc/destlistitemlist.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of the CDestListItemList class.
-*
-*/
-
-#ifndef CDestLISTITEMLIST_H
-#define CDestLISTITEMLIST_H
-
-//  INCLUDES
-#include <e32base.h>
-
-// FORWARD DECLARATION
-class CDestListItem;
-
-/**
- *  A list of CDestListItem-s pointers; items are owned.
- *
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CDestListItemList ) : public CArrayPtrFlat<CDestListItem>
-    {
-    public:  // Constructors and destructor
-
-        /**
-        * C++ default constructor.
-        */
-        CDestListItemList();
-
-        /**
-        * Destructor. Items in the list are destroyed.
-        */
-        virtual ~CDestListItemList();
-
-    public:  // New methods
-
-        /**
-        * Get pointer to the item having aUid,
-        * or NULL if no such item is in the
-        * list.
-        * @param aUid Uid of item to get.
-        * @return Pointer to the item having uid aUid, or NULL. Ownership
-        * not passed (the list still owns the item).
-        */
-        CDestListItem* ItemForUid( TUint32 aUid ) const;
-    };
-
-#endif
--- a/cmmanager/cmmgr/Framework/Inc/selectdestinationdlg.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Shows the "Select destination:" dialog, where the user can 
-                 select one of the available destinations.
-*
-*/
-
-#ifndef SELECTDESTINATIONDLG_H
-#define SELECTDESTINATIONDLG_H
-
-// INCLUDES
-#include <aknlistquerydialog.h>
-
-// FORWARD DECLARATIONS
-class CCmManagerImpl;
-class CCmDestinationImpl;
-
-// CLASS DECLARATION
-
-/**
- *  Show a query containing a title, a message box (contain a short explanation
- *  of the query) and a listbox. The listbox contains a list of available
- *  destinations from which the user can choose.
- *
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CSelectDestinationDlg ) : public CAknListQueryDialog
-    {
-    public: // Constructors, destructor
-    
-        /**
-        * Two-phase constructor.
-        * @param aDestinationId Variable reference used to hold the return
-        * value of list selection.
-        * @param aCmManager Reference to CM Manager implementation used for
-        * querying destination specific data.
-        * @return Newly created dialog object.
-        */
-        static CSelectDestinationDlg* NewL( 
-                                        TUint32& aDestinationId,
-                                        CCmManagerImpl& aCmManager,
-                                        RArray<TUint32>* aDestArray = NULL);
-
-        /**
-        * Two-phase constructor.
-        * @param aDestinationId Variable reference used to hold the return
-        * value of list selection.
-        * @param aCmManager Reference to CM Manager implementation used for
-        * querying destination specific data.
-        * @return Newly created dialog object.
-        */
-        static CSelectDestinationDlg* NewLC( 
-                                        TUint32& aDestinationId,
-                                        CCmManagerImpl& aCmManager,
-                                        RArray<TUint32>* aDestArray = NULL);
-
-        /**
-        * Destructor.
-        */
-        ~CSelectDestinationDlg();
-
-    private: // constructors
-    
-        /**
-        * Constructor.
-        */
-        CSelectDestinationDlg( TInt aDummyIndex, TUint32& aDestinationId );
-
-        /**
-        * Second-phase constructor.
-        * @param aCmManager Reference to CM Manager implementation used for
-        * querying destination specific data.
-        */
-        void ConstructL( CCmManagerImpl& aCmManager, 
-                         RArray<TUint32>* aDestArray );
-
-    private: // From CAknListQueryDialog
-    
-        /**
-        * @see CAknListQueryDialog
-        */
-        virtual void PreLayoutDynInitL();
-
-        /**
-        * @see CAknListQueryDialog
-        */
-        TBool OkToExitL( TInt aButtonId );
-
-    private: // internal helper methods
-    
-        /**
-        * Handle resource change events. 
-        * @param aType: The type of resources that have changed
-        */
-        void HandleResourceChange( TInt aType );
-
-    private:  // New functions
-
-        /**
-        * Sets graphic icons
-        */
-        void SetIconsL();
-
-    private: //data
-
-        TUint32& iDestinationId;
-        RPointerArray<CCmDestinationImpl> iDestinations;
-    };
-
-#endif  // SELECTDESTINATIONDLG_H
--- a/cmmanager/cmmgr/Framework/Inc/uncatdlg.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Dialog for displaying and editing legacy connection methods
-*
-*/
-
-#ifndef UNCATDIALOG_H
-#define UNCATDIALOG_H
-
-//  INCLUDES
-#include "cmdlg.h"
-
-// CLASS DECLARATION
-class CEikStatusPane;
-class CAknTitlePane;
-class CAknNavigationControlContainer;
-class CAknNavigationDecorator;
-
-typedef struct
-    {
-    CCmPluginBase*      iPlugin;
-    TUint32             iCmId;
-    }TUncatItem;
-    
-/**
- *  Dialog for displaying and editing legacy iaps
- *
- *  @lib cmmanager.lib
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CUncatDlg ) : public CCmDlg
-    {
-    public :    // construction
-    
-        /** Epoc constructor */
-        static CUncatDlg* NewL( CCmManagerImpl* aCmManager );
-
-        /** Destructor. */
-        ~CUncatDlg();
-        
-    public: // New functions
-    
-        /**
-        * Create and launch dialog.
-        * @return The code returned by the dialogs' ExecuteLD
-        */
-        TInt ConstructAndRunLD( TUint32 aHighLight, TUint32& aSelected );        
-
-        // From MEikMenuObserver
-        void DynInitMenuPaneL( TInt aResourceId, 
-                               CEikMenuPane* aMenuPane );
-
-        // From MEikCommandObserver
-        void ProcessCommandL( TInt aCommandId ) ; 
-        
-        /**
-        * Updates listbox data
-        */
-        void ConstructCMArrayL( RArray<TUint32>& aCmIds );
-        
-        /**
-        * Remove hidden Connection Methods from the Array
-        */
-        void ClearHiddenCMsFromArrayL( RArray<TUint32>& aCmIds );
-        
-    public: // From MCmCommsDatWatcher
-        
-        /**
-         * Watch changes in CommsDat
-         */        
-        void CommsDatChangesL();
-                
-       private:    // Constructor 
-        
-        /**
-        * Default constructor.
-        */
-        CUncatDlg( CCmManagerImpl* aCmManager );
-
-    private :    // from CEikDialog
-    
-        /**
-        * Set the gateway's IP address, if the user pressed OK.
-        * @param aButtonId The ID of the pressed button.
-        * @return May the dialog exit?
-        */
-        void InitTextsL();   
-        
-        /**
-        * Returns the currently focused connection method in the list
-        */
-        CCmPluginBase* CurrentCML(); 
-                
-        /**
-        * Returns the connection method in the list at the specified index
-        */
-        CCmPluginBase* CMByIndexL( TInt aIndex );
-       
-        /**
-        * Returns the connection mehtod count
-        */
-        TInt CMCount();
-        
-        /**
-        * Cleans up iCmUncatItems
-        *
-        * @param aReuse whether the array will be used again or not
-        * @since S60 3.2
-        */
-        void CleanupUncatArray( TBool aReuseArray = EFalse );
-
-    protected:
-    
-        RArray<TUncatItem>   iCmUncatItems;
-    };
-
-#endif
-
-// End of File
--- a/cmmanager/cmmgr/Framework/Src/ccmdexec.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
-* Copyright (c) 2008 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:  Execute command without blocking the process. Needed for
-*                touch UI implementation.
-*
-*/
-
-#include <e32base.h>
-#include <mcmdexec.h>
-#include "ccmdexec.h"
-
-// ----------------------------------------------------------------------------
-// C++ default constructor can NOT contain any code, that might leave.
-// ----------------------------------------------------------------------------
-//
-CCmdExec::CCmdExec(MCmdExec& aOwner) :
-    CActive( CActive::EPriorityStandard ),
-    iOwner(aOwner)
-    {
-    CActiveScheduler::Add(this);
-    }
-
-// ----------------------------------------------------------------------------
-// Destructor.
-// ----------------------------------------------------------------------------
-//
-CCmdExec::~CCmdExec()
-    {
-    Cancel();
-    }
-
-void CCmdExec::Execute()
-    {
-    // Cancel possible previous request
-    Cancel();
-    
-    // Do request
-    TRequestStatus *requestStatus = &iStatus;
-    User::RequestComplete(requestStatus, KErrNone);
-    SetActive();
-    }
-            
-void CCmdExec::RunL()
-    {
-    iOwner.Execute();
-    }
-
-TInt CCmdExec::RunError( TInt aError )
-    {
-    if (aError != 0)
-        iOwner.HandleLeaveError( aError );
-    return KErrNone;
-    }
-
-void CCmdExec::DoCancel()
-    {
-    
-    }
--- a/cmmanager/cmmgr/Framework/Src/ccmpluginbaseeng.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3553 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of plugin base class
-*
-*/
-#include <cmmanager.rsg>
-#include <es_sock.h>    // RSocketServ, RConnection
-#include <in_sock.h>    // KAfInet
-#include <es_enum.h>    // TConnectionInfo
-#include <StringLoader.h>
-#include <AknUtils.h>
-#include <data_caging_path_literals.hrh>
-#include <sysutil.h> 
-
-#include <cmmanager.h>
-#include "cmmanagerimpl.h"
-#include "cmdestinationimpl.h"
-#include <cmpluginbaseeng.h>
-#include <cmpsettingsconsts.h>
-#include "cmlogger.h"
-#include <cmcommonui.h>
-
-using namespace CMManager;
-using namespace CommsDat;
-
-// EXTERNAL LINKS
-
-// MACROS
-
-#undef _IPV6_DISABLED
-
-// CONSTANTS
-const TInt KApMaxConnNameLength = 30;
-_LIT(KFormatPostfix, "%02d");
-_LIT(KFormatLargePostfix, "%d");
-_LIT(KFormatNameWithPostfix, "%S(%S)" );
-_LIT(KFormatNoPostfix, "%S");
-const TInt KMaxPostfixLength = 5;
-const TInt KEstimatedOverhead = 8192;
-
-_LIT( KDefWapGatewayIpAddress, "0.0.0.0" );
-    
-_LIT( KLocationName, "Mobile" );
-
-static const TCmAttribConvTable SIapConvTbl[] = 
-    {
-    // iAttribId, iCommsDatId, iValidFuncL, 
-    // iTitleId, 
-    // iMaxLength, iAttribFlags, iDefValueResId, iEditorResId, iNotUsed1, iNotUsed2
-    // first element describes the min-max values, does not connects to DB!
-    { ECmName, ECmIapId, NULL },
-    { ECmName, KCDTIdRecordName, NULL,
-        R_CMMANAGERUI_CONNECTION_NAME,
-        KMaxConnNameLength, EConvNoZeroLength | EConvCompulsory, 
-        0, R_TEXT_SETTING_PAGE_CONN_NAME, NULL, NULL },
-    { ECmIapId, KCDTIdRecordTag, NULL },
-    { 0, 0, NULL },
-    };
-
-static const TCmAttribConvTable SProxyConvTbl[] = 
-    {
-    // iAttribId, iCommsDatId, iValidFuncL, 
-    // iTitleId, 
-    // iMaxLength, iAttribFlags, iDefValueResId, iEditorResId, iNotUsed1, iNotUsed2
-    { ECmProxyUsageEnabled, ECmProxyRangeMax, NULL },
-    { ECmProxyUsageEnabled, KCDTIdUseProxyServer, NULL },
-    { ECmProxyServerName,   KCDTIdServerName, &SetProxyServerNameL, 
-        R_QTN_SET_PROXY_SERVER_ADDRESS, 
-        KMaxProxyServerLength, 0, R_QTN_SET_PROXY_SERVER_ADDRESS_NONE, R_TEXT_SETTING_PAGE_PROXY_SERVER_ADDR, NULL, NULL },
-    { ECmProxyProtocolName, KCDTIdProtocolName, NULL },
-    { ECmProxyPortNumber,   KCDTIdPortNumber, &CheckPortNumberValidityL,
-        R_QTN_SET_PROXY_PORT_NUMBER,
-        KMaxProxyPortNumberLength, EConvNumber, 0, 0, NULL, NULL },
-    { ECmProxyExceptions,   KCDTIdExceptions, NULL },
-    { 0, 0, NULL },
-    };
-
-static const TCmAttribConvTable SChargeCardConvTbl[] =
-    {
-    { ECmChargeCardUsageEnabled, ECmChargeCardRangeMax, NULL },
-    { ECmChargeCardAccountNumber, KCDTIdAccountNo, NULL },
-    { ECmChargeCardPIN, KCDTIdPin, NULL },
-    { ECmChargeCardLocalRule, KCDTIdLocalRule, NULL },
-    { ECmChargeCardNatRule, KCDTIdNatRule, NULL },
-    { ECmChargeCardIntlRule, KCDTIdIntlRule, NULL },
-    { 0, 0, NULL },
-    };
-
-static const TCmAttribConvTable SLocationConvTbl[] =
-    {
-    { ECmLocationUsageEnabled, ECmLocationRangeMax, NULL },
-    { ECmLocationIntlPrefixCode, KCDTIdIntlPrefixCode, NULL },
-    { ECmLocationNatPrefixCode, KCDTIdNatPrefixCode, NULL },
-    { ECmLocationNatCode, KCDTIdNatCode, NULL },
-    { ECmLocationAreaCode, KCDTIdAreaCode, NULL },
-    { ECmLocationDialOutCode, KCDTIdDialOutCode, NULL },
-    { ECmLocationDisableCallWaitingCode, KCDTIdDisableCallWaitingCode, NULL },
-    { ECmLocationMobile, KCDTIdMobile, NULL },
-    { ECmLocationUsePulseDial, KCDTIdUsePulseDial, NULL },
-    { ECmLocationWaitForDialTone, KCDTIdWaitForDialTone, NULL },
-    { ECmLocationPauseAfterDialOut, KCDTIdPauseAfterDialOut, NULL },
-    { 0, 0, NULL },
-    };
-
-static const TCmAttribConvTable SWapConvTbl[] = 
-    {
-    { ECmWapIPGatewayAddress, ECmWapRangeMax, NULL },
-    { ECmWapIPGatewayAddress, KCDTIdWAPGatewayAddress, &CheckIPv4ValidityL },
-    { ECmWapIPWSPOption, KCDTIdWAPWSPOption, &CheckWAPWspOptionValidityL },
-    { ECmWapIPSecurity, KCDTIdWAPSecurity, NULL },
-    { ECmWapIPProxyPort, KCDTIdWAPProxyPort, &CheckPortNumberValidityL },
-    { ECmWapIPProxyLoginName, KCDTIdWAPProxyLoginName, NULL },
-    { ECmWapIPProxyLoginPass, KCDTIdWAPProxyLoginPass, NULL },
-    { 0, 0, NULL },
-    };
-
-static const TCmAttribConvTable SUiTable[] = 
-    {
-    { ECmName, 0, NULL,
-        R_CMMANAGERUI_CONNECTION_NAME,
-        KMaxConnNameLength, EConvNoZeroLength | EConvCompulsory, 0, R_TEXT_SETTING_PAGE_CONN_NAME, NULL, NULL },
-    { ECmBearerSettingName, 0, NULL,
-        R_PLUGIN_BASE_SET_AP_BEARER,
-        0, 0, 0, 0, NULL, NULL },
-    { ECmStartPage, 0, NULL,
-        R_QTN_SET_STARTING_PAGE,
-        KMaxStartPageLength, 0, R_QTN_SET_HOME_PAGE_NONE, R_TEXT_SETTING_PAGE_STARTING_PAGE, 
-        R_START_PAGE_DEF_VALUE, NULL, NULL },
-    { 0, 0, NULL,
-        0, 
-        0, 0, 0, NULL, NULL },
-    };
-
-/**
- * Private data of plugin base
- */
-NONSHARABLE_CLASS( CCmPluginBasePrivate ) : public CBase
-    {
-    public:
-    
-        CCmPluginBasePrivate();
-        ~CCmPluginBasePrivate();
-    
-    public:
-    
-        CCDWAPAccessPointRecord*    iWapAPRecord;
-        CCDWAPIPBearerRecord*       iWapIPBearerRecord;
-        CCDIAPMetadataRecord*       iMetaDataRecord;
-        
-        TNamingMethod   iNamingMethod;
-        
-        CArrayPtrFlat<TCmAttrConvArrayItem>*        iConvTblArray;
-        RArray<const TCmCommonAttrConvArrayItem*>   iCommonConvTblArray;
-        
-        TInt    iLoadResult;
-    };    
-
-// ======== LOCAL FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// ReadOnlyAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool ReadOnlyAttributeL( CCmPluginBaseEng* aThis, 
-                                  TUint32 aAttribute,
-                                  const TAny* aValue )
-    {
-    User::Leave( KErrNotSupported );
-
-    (void)aThis;
-    (void)aAttribute;
-    (void)aValue;
-    
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CheckIPv4ValidityL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CheckIPv4ValidityL( CCmPluginBaseEng* aThis, 
-                                  TUint32 aAttribute,
-                                  const TAny* aValue )
-    {
-    (void)aThis;
-    (void)aAttribute;
-    (void)aValue;
-    
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CheckIPv6ValidityL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CheckIPv6ValidityL( CCmPluginBaseEng* aThis, 
-                                  TUint32 aAttribute,
-                                  const TAny* aValue )
-    {
-    (void)aThis;
-    (void)aAttribute;
-    (void)aValue;
-    
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CheckPortNumberValidityL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CheckPortNumberValidityL( CCmPluginBaseEng* aThis, 
-                                        TUint32 aAttribute,
-                                        const TAny* aValue )
-    {
-    (void)aThis;
-    (void)aAttribute;
-    (void)aValue;
-    
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CheckRecordIdValidityL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CheckRecordIdValidityL( CCmPluginBaseEng* aThis, 
-                                      TUint32 aAttribute,
-                                      const TAny* aValue )
-    {
-    TUint32 recId = *(TUint32*)aValue;
-    
-    if( recId < 1 || recId > 254 )
-        {
-        CLOG_WRITE_1_PTR( aThis, "Not valid Rec id: [%d]", recId );
-        User::Leave( KErrArgument );
-        }
-
-    (void)aThis;
-    (void)aAttribute;
-    (void)aValue;
-    
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CheckWAPWspOptionValidityL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CheckWAPWspOptionValidityL( CCmPluginBaseEng* aThis, 
-                                          TUint32 aAttribute,
-                                          const TAny* aValue )
-    {
-    TUint32 wspOpt = (TUint32)aValue;
-    
-    
-    if( wspOpt != ECmWapWspOptionConnectionless &&
-        wspOpt != ECmWapWspOptionConnectionOriented )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    (void)aThis;
-    (void)aAttribute;
-    (void)aValue;
-    
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// IsUnspecifiedIPv4Address
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool IsUnspecifiedIPv4Address( const TDesC& aIpv4Address )
-    {
-    if( aIpv4Address.Length() == 0 ||
-        !aIpv4Address.CompareF( KUnspecifiedIPv4 ) )
-        {
-        return ETrue;
-        }
-        
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// ClassifyIPv6Address
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TIPv6Types ClassifyIPv6Address( const TDesC& aIpv6Address )
-    {
-    if( aIpv6Address.Length() == 0 ||
-        !aIpv6Address.CompareF( KDynamicIpv6Address ) )
-        {
-        return EIPv6Unspecified;
-        }
-    else if( !aIpv6Address.CompareF( KKnownIp6NameServer1 ) ||
-             !aIpv6Address.CompareF( KKnownIp6NameServer2 ) )
-        {
-        return EIPv6WellKnown;
-        }
-        
-    return EIPv6UserDefined;
-    }
-
-// ---------------------------------------------------------------------------
-// SetProxyServerNameL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool SetProxyServerNameL( CCmPluginBaseEng* aThis, 
-                                   TUint32 /*aAttribute*/, 
-                                   const TAny* aValue )
-    {
-    const TDesC* proxyServer = (const TDesC*)aValue;
-    
-    return aThis->SetProxyServerNameL( *proxyServer );
-    }
-    
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// TCmPluginInitParam::TCmPluginInitParam
-// ---------------------------------------------------------------------------
-//
-TCmPluginInitParam::TCmPluginInitParam( CCmManagerImpl& aCmMgr )
-    : iCmMgr( aCmMgr )
-    {
-    iParentDest = 0;
-    iNotused1 = NULL;
-    iNotused2 = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBasePrivate::CCmPluginBasePrivate
-// ---------------------------------------------------------------------------
-//
-CCmPluginBasePrivate::CCmPluginBasePrivate()
-    : iNamingMethod( ENamingUnique )
-    , iCommonConvTblArray( KDefAttrsArrayGranSize )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBasePrivate::~CCmPluginBasePrivate
-// ---------------------------------------------------------------------------
-//
-CCmPluginBasePrivate::~CCmPluginBasePrivate()
-    {
-    delete iWapAPRecord;
-    delete iWapIPBearerRecord;
-    delete iMetaDataRecord;
-    
-    if ( iConvTblArray )
-        {
-        iConvTblArray->ResetAndDestroy();
-        delete iConvTblArray;
-        }
-        
-    iCommonConvTblArray.Reset();
-    iCommonConvTblArray.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CCmPluginBaseEng
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CCmPluginBaseEng::CCmPluginBaseEng( TCmPluginInitParam *aInitParam )
-    : iCmMgr( aInitParam->iCmMgr )
-    , iParentDest( aInitParam->iParentDest )
-    {
-    CLOG_CREATE;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::~CCmPluginBaseEng
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CCmPluginBaseEng::~CCmPluginBaseEng()
-    {
-    Reset();
-    
-    delete iPriv;
-    
-    REComSession::DestroyedImplementation( iDtor_ID_Key );
-    CLOG_CLOSE;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::ConstructL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::ConstructL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::ConstructL" );
-
-    iPriv = new (ELeave) CCmPluginBasePrivate;
-    
-    // 4 for our tables + 4 for bearer specific ones.
-    iPriv->iConvTblArray = new (ELeave)CArrayPtrFlat<TCmAttrConvArrayItem>( 8 );
-
-    AddConverstionTableL( (CCDRecordBase**)&iIapRecord, 
-                          NULL, SIapConvTbl );
-    AddConverstionTableL( (CCDRecordBase**)&iProxyRecord, 
-                          NULL, SProxyConvTbl );
-    AddConverstionTableL( (CCDRecordBase**)&iChargeCardRecord, 
-                          &iChargeCardEnabled, SChargeCardConvTbl );
-    AddConverstionTableL( (CCDRecordBase**)&iLocationRecord, 
-                          &iLocationEnabled, SLocationConvTbl );
-    AddConverstionTableL( (CCDRecordBase**)&iPriv->iWapIPBearerRecord, 
-                          NULL, SWapConvTbl );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::GetIntAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TUint32 
-            CCmPluginBaseEng::GetIntAttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetIntAttributeL" );
-
-    TUint32 retVal( 0 );
-    
-    switch ( aAttribute )
-        {
-        case ECmBearerIcon:
-            {
-            retVal = 0; // bearer doesn't provide any icon
-            }
-            break;
-            
-        case ECmBearerAvailableIcon:            
-            {
-            retVal = 0; // bearer doesn't provide any icon
-            }
-            break;
-            
-        case ECmId: // if the CM has an IapId than the ECmId is the ECmId
-        case ECmIapId:
-            {
-            retVal = iIapId;
-            }
-            break;
-        case ECmWapId:
-            {
-            retVal = iPriv->iWapIPBearerRecord->iWAPAccessPointId;
-            }
-            break;
-        case ECmIapServiceId:
-            {
-            retVal = TUint32(iIapRecord->iService);
-            }
-            break;
-        case ECmBearerType:
-            {
-            retVal = iBearerType;
-            }
-            break;
-            
-        case ECmDefaultPriority:
-            {
-            retVal = KDataMobilitySelectionPolicyPriorityWildCard;
-            }
-            break;
-            
-        case ECmDefaultUiPriority:
-            {
-            retVal = KDataMobilitySelectionPolicyPriorityWildCard;
-            }
-            break;
-            
-        case ECmNamingMethod:
-            {
-            retVal = iPriv->iNamingMethod;
-            }
-            break;
-            
-        case ECmExtensionLevel:
-            {
-            retVal = KExtensionBaseLevel;
-            }
-            break;
-            
-        case ECmInvalidAttribute:
-            {
-            retVal = iInvalidAttribute;
-            }
-            break;
-            
-        case ECmCommsDBBearerType:
-            {
-            User::Leave( KErrUnknown );
-            }
-            break;
-            
-        case ECmSeamlessnessLevel:
-            {
-            retVal = iPriv->iMetaDataRecord->iSeamlessness;
-            }
-            break;
-            
-        case ECmElementID:
-            {
-            if ( !iIapRecord )
-                {
-                User::Leave( KErrNotReady );
-                }
-                
-            retVal = (KCDMaskShowField & iIapRecord->ElementId());
-            }
-            break;
-            
-        case ECmLoadResult:
-            {
-            retVal = iPriv->iLoadResult;
-            }
-            break;
-            
-        case ECmNetworkId:
-            {
-            retVal = iIapRecord->iNetwork;
-            }
-            break;
-            
-        default:
-            {
-            TUint32 attribute = CheckForCommonAttribute( aAttribute );            
-            CMDBField<TUint32>* field;
-
-            FindFieldL( attribute, ECmInt, (CMDBElement*&)field );
-
-            retVal = *field;        
-            }
-            break;
-        }
-        
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::GetBoolAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool 
-        CCmPluginBaseEng::GetBoolAttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetBoolAttributeL" );
-
-    TBool retVal;
-
-    switch ( aAttribute )
-        {
-        case ECmProtected:
-            {
-            retVal = IsProtected();
-            }
-            break;
-            
-        case ECmHidden:
-            {
-            retVal = iIapRecord->Attributes() & ECDHidden;
-            }
-            break;
-
-        case ECmDestination:
-            {
-            retVal = EFalse;
-            }
-            break;
-            
-        case ECmChargeCardUsageEnabled:
-            {
-            retVal = iChargeCardEnabled;
-            }
-            break;
-            
-        case ECmCoverage:
-            // In default the plugin has no network coverage
-            {
-            retVal = EFalse;
-            }
-            break;
-            
-        case ECmAddToAvailableList:
-            {
-            retVal = EFalse;
-            }
-            break;
-            
-        case ECmBearerHasUi:
-            {
-            retVal = EFalse;
-            }
-            break;
-            
-        case ECmMetaHighlight:
-            {
-            retVal = iPriv->iMetaDataRecord->iMetadata & EMetaHighlight;
-            }
-            break;
-            
-        case ECmMetaHiddenAgent:
-            {
-            retVal = iPriv->iMetaDataRecord->iMetadata & EMetaHiddenAgent;
-            }
-            break;
-            
-        case ECmIPv6Supported:
-            {
-            retVal = FeatureSupported( KFeatureIdIPv6 );
-            }
-            break;
-            
-        case ECmConnected:
-            {
-            retVal = CheckIfAlreadyConnected();
-            }
-            break;
-
-        case ECmVirtual:
-            {
-            retVal = EFalse;
-            }
-            break;
-            
-        case ECmIsLinked:
-            {
-            retVal = iCmMgr.IsIapLinkedL( *this );
-            }
-            break;
-            
-        default:
-            {
-            TUint32 attribute = CheckForCommonAttribute( aAttribute );            
-            CMDBField<TBool>* field;
-
-            FindFieldL( attribute, ECmBool, (CMDBElement*&)field );
-
-            retVal = *field;        
-            }
-        }
-
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::GetStringAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C HBufC* 
-    CCmPluginBaseEng::GetStringAttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetStringAttributeL" );
-
-    HBufC* retVal = NULL;
-    
-    switch ( aAttribute )
-        {
-        case ECmStartPage:
-            {
-            retVal = TPtrC(iPriv->iWapAPRecord->iWAPStartPage).AllocL();
-            }
-            break;
-            
-        case ECmName:
-            {
-            retVal = TPtrC(iIapRecord->iRecordName).AllocL();
-            }
-            break;
-
-        default:
-            {
-            TUint32 attribute = CheckForCommonAttribute( aAttribute );
-            CMDBField<TDesC>* field;
-            
-            FindFieldL( attribute, ECmText, (CMDBElement*&)field );
-
-            if ( !field->IsNull() )
-                {
-                retVal = field->GetL().AllocL();
-                }
-            else
-                {
-                retVal = KNullDesC().AllocL();
-                }
-            }
-        }
-        
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::GetString8AttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C HBufC8* 
-    CCmPluginBaseEng::GetString8AttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetString8AttributeL" );
-
-    HBufC8* retVal = NULL;
-    
-    switch ( aAttribute )
-        {
-        default:
-            {
-            TUint32 attribute = CheckForCommonAttribute( aAttribute );
-            CMDBField<TDesC8>* field;
-                        
-            FindFieldL( attribute, ECmText8, (CMDBElement*&)field );
-
-            if ( !field->IsNull() )
-                {
-                retVal = field->GetL().AllocL();
-                }
-            else
-                {
-                retVal = KNullDesC8().AllocL();
-                }
-            }
-        }
-        
-    return retVal;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::SetIntAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::SetIntAttributeL( const TUint32 aAttribute, 
-                                                  TUint32 aValue )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetIntAttributeL" );
-
-    switch ( aAttribute )
-        {
-        case ECmNamingMethod:
-            {
-            iPriv->iNamingMethod = (TNamingMethod)aValue;
-            }
-            break;
-
-        case ECmCommsDBBearerType:
-        case ECmElementID:
-        case ECmIapId:
-        case ECmId:
-            {
-            User::Leave( KErrNotSupported );
-            }
-            break;
-            
-        case ECmSeamlessnessLevel:
-            {
-            if ( aValue == ESeamlessnessConfirmFirst ||
-                 aValue == ESeamlessnessShowprogress )
-                {
-                iPriv->iMetaDataRecord->iSeamlessness = aValue;
-                }
-            else
-                {
-                User::Leave( KErrNotSupported );
-                }
-            }
-            break;
-                                   
-        case ECmNetworkId:
-            {
-            User::Leave( KErrNotSupported );
-            }
-            break;
-           
-        default:
-            {
-            TUint32 attribute = CheckForCommonAttribute( aAttribute );
-            CMDBField<TUint32>* field;
-            
-            TValidationFunctionL func = 
-                        FindFieldL( attribute, ECmInt, (CMDBElement*&)field );
-            
-            if( func )
-                {
-                func( this, attribute, (TAny*)aValue );
-                }
-                
-            *field = aValue;
-            }
-            break;
-        }
-        
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::SetBoolAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::SetBoolAttributeL( const TUint32 aAttribute, 
-                                                   TBool aValue )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetBoolAttributeL" );
-
-    switch ( aAttribute )
-        {
-        case ECmProtected:
-            {
-            SetAttribute( iIapRecord, ECDProtectedWrite, aValue );
-            }
-            break;
-            
-        case ECmHidden:
-            {
-            // Check that this is not Default Connection
-            TCmDefConnValue defConn;
-            iCmMgr.ReadDefConnL( defConn );
-            if ( defConn.iType == ECmDefConnConnectionMethod &&
-                 defConn.iId == iIapRecord->RecordId() )
-                {
-                User::Leave( KErrArgument );
-                }
-            
-            SetAttribute( iIapRecord, ECDHidden, aValue );
-            }
-            break;
-            
-        case ECmProxyUsageEnabled:
-            {
-            EnableProxyL( aValue );
-            }
-            break;
-            
-        case ECmChargeCardUsageEnabled:
-            {
-            EnableChargeCardL( aValue );
-            }
-            break;
-            
-        case ECmLocationUsageEnabled:
-            {
-            EnableLocationL( aValue );
-            }
-            break;
-            
-        case ECmMetaHighlight:
-            {
-            if( aValue )
-                {
-                iPriv->iMetaDataRecord->iMetadata =
-                          EMetaHighlight | iPriv->iMetaDataRecord->iMetadata;
-                }
-            else
-                {
-                iPriv->iMetaDataRecord->iMetadata =
-                        ~EMetaHighlight & iPriv->iMetaDataRecord->iMetadata;
-                }
-            }
-            break;
-            
-        case ECmMetaHiddenAgent:
-            {
-            if( aValue )
-                {
-                iPriv->iMetaDataRecord->iMetadata =
-                        EMetaHiddenAgent | iPriv->iMetaDataRecord->iMetadata;
-                }
-            else
-                {
-                iPriv->iMetaDataRecord->iMetadata = 
-                      ~EMetaHiddenAgent & iPriv->iMetaDataRecord->iMetadata;
-                }
-            }
-            break;
-            
-        default:
-            {
-            TUint32 attribute = CheckForCommonAttribute( aAttribute );
-            CMDBField<TBool>* field;
-            
-            TValidationFunctionL func = 
-                        FindFieldL( attribute, ECmBool, (CMDBElement*&)field );
-            
-            if( func )
-                {
-                func( this, attribute, (const TAny*)aValue );
-                }
-                
-
-            *field = aValue;
-            }
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::SetStringAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::SetStringAttributeL( const TUint32 aAttribute, 
-                                                     const TDesC16& aValue )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetStringAttributeL" );
-
-    TUint32 commonattribute = MappedCommonAttribute( aAttribute );
-    switch ( commonattribute )
-        {
-        case ECmStartPage:
-            {
-            iPriv->iWapAPRecord->iWAPStartPage.SetL( aValue );
-            }
-            break;
-            
-        case ECmName:
-            {
-            SetNameL( aValue );
-            }
-            break;
-        case ECmIPAddress:
-            {
-            GenericStringWriterL( commonattribute, aValue );
-            if (( aValue.Compare(KUnspecifiedIPv4) == 0) || ( aValue.Compare(KNullDesC)==0 ) )
-                {
-                SetBoolAttributeL( ECmIPAddFromServer, ETrue );
-                }
-            else
-                {
-                SetBoolAttributeL( ECmIPAddFromServer, EFalse );
-                }
-            }
-            break;
-        default:
-            {
-            GenericStringWriterL( commonattribute, aValue );
-            }
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::SetString8AttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::SetString8AttributeL( const TUint32 aAttribute, 
-                                                      const TDesC8& aValue )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetString8AttributeL" );
-
-    switch ( aAttribute )
-        {
-        default:
-            {
-            TUint32 attribute = CheckForCommonAttribute( aAttribute );
-            CMDBField<TDesC8>* field;
-            
-            TValidationFunctionL func = 
-                        FindFieldL( attribute, ECmText8, (CMDBElement*&)field );
-            
-            if( func )
-                {
-                func( this, attribute, (const TAny*)&aValue );
-                }
-
-            field->SetL( aValue );
-            }
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::RestoreAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::RestoreAttributeL( const TUint32 aAttribute )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::RestoreAttributeL" );
-
-    TCmAttrConvArrayItem* item = ConversionTable( aAttribute );
-
-    TInt index( 0 );
-    CMDBElement& field = FieldByAttributeL( item, aAttribute, index );
-    
-    TRAPD( err, field.LoadL( Session() ) );
-    if( err == KErrNotFound )
-        {
-        switch ( field.Type() )
-            {
-            case EText:
-            case EMedText:
-            case ELongText:
-                {
-                CMDBField<TDesC>* textField = static_cast<CMDBField<TDesC>*>( &field );
-                
-                textField->SetL( KNullDesC );
-                }
-                break;
-
-            case EDesC8:
-                {
-                CMDBField<TDesC8>* textField = static_cast<CMDBField<TDesC8>*>( &field );
-                
-                textField->SetL( KNullDesC8 );
-                }
-                break;
-                
-            case EUint32:
-            case EInt:
-            case EBool:
-                {
-                CMDBField<TInt>* intField = static_cast<CMDBField<TInt>*>( &field );
-                
-                intField->SetL( 0 );
-                }
-                break;
-                
-            default:
-                {
-                User::Leave( KErrArgument );
-                }
-                break;
-            }
-        }
-    else
-        {
-        User::LeaveIfError( err );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::Destination
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CCmDestinationImpl* CCmPluginBaseEng::Destination() const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::Destination" );
-
-    return NULL;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::UpdateL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateL" );
-
-    CheckSpaceBelowCriticalLevelL();
-
-    OpenTransactionLC();
-    
-    PrepareToUpdateRecordsL();
-    
-    UpdateChargeCardRecordL();
-    UpdateServiceRecordL();
-    
-    UpdateLocationRecordL();
-    UpdateNetworkRecordL();
-    
-    UpdateIAPRecordL();
-
-    UpdateWapRecordL();
-    UpdateProxyRecordL();
-    UpdateSeamlessnessRecordL();
-    UpdateConnPrefSettingL();
-    
-    UpdateAdditionalRecordsL();
-    
-    CommitTransactionL( 0 );
-    iCmMgr.ConnMethodUpdatedL( this );
-    iIdIsValid = ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::NumOfConnMethodReferencesL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CCmPluginBaseEng::NumOfConnMethodReferencesL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::NumOfConnMethodReferencesL" );
-
-    return iCmMgr.NumOfConnMethodReferencesL( iIapId );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::Session
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CMDBSession& CCmPluginBaseEng::Session()const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::Session" );
-
-    return iCmMgr.Session();
-    }
-
-// ---------------------------------------------------------------------------
-// Delete this connection methond.
-// Record ids are checked to be sure that we delete only records
-// that were loaded before.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CCmPluginBaseEng::DeleteL( TBool aForced,
-                                          TBool aOneRefAllowed )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::DeleteL" );
-    
-    if ( CheckIfAlreadyConnected() )
-        {
-        User::Leave( KErrInUse );
-        }
-
-    if( iPriv->iLoadResult )
-        // previous load failed -> do NOT delete this partially loaded cm.
-        {
-        User::Leave( KErrNotReady );
-        }
-        
-    if( GetBoolAttributeL( ECmIsLinked ) )
-        {
-        User::Leave( KErrLocked );
-        }
-        
-    // If there is no parent destination, we can delete
-    TBool retVal(ETrue);
-    
-    if( !aForced )
-        {
-        TInt refs = NumOfConnMethodReferencesL();
-        
-        switch ( refs )
-            {
-            case 0:
-                // no referencies to this cm
-                {
-                CLOG_WRITE( "No ref -> do delete it" );
-                }
-                break;
-                
-            case 1: 
-                // one reference
-                {
-                if ( !aOneRefAllowed )
-                    // this is not a legacy cm -> cannot be deleted.
-                    {
-                    retVal = EFalse;
-                    }
-                }
-                break;
-                
-            default:
-                // connection method is multiple referenced from
-                // destinations -> no delete
-                {
-                retVal = EFalse;
-                }
-                break;
-            }
-        }
-        
-    if ( retVal )
-        {
-        TCmDefConnValue deletedItem;
-        deletedItem.iType = ECmDefConnConnectionMethod;
-        deletedItem.iId = iIapId;
-        iCmMgr.HandleDefConnDeletedL( deletedItem );       
-
-        if( aForced )
-            {
-            iCmMgr.RemoveAllReferencesWoTransL( *this );
-            }
-
-        OpenTransactionLC();
-        // And now we have everything from CommsDat, 
-        // so we delete only those records.
-        PrepareToDeleteRecordsL();
-
-        if ( iIapRecord && iIapRecord->RecordId() )
-            {
-            iIapRecord->DeleteL( Session() );
-            }
-        
-        if ( iProxyRecord && iProxyRecord->RecordId() )
-            {
-            iProxyRecord->DeleteL( Session() );
-            }
-            
-        if ( iServiceRecord && iServiceRecord->RecordId() )
-            {
-            iServiceRecord->DeleteL( Session() );
-            }
-        
-        if ( iChargeCardRecord && iChargeCardRecord->RecordId() )
-            {
-            iChargeCardRecord->DeleteL( Session() );
-            }
-        
-        if ( iNetworkRecord && iNetworkRecord->RecordId() )
-            {
-            iNetworkRecord->DeleteL( Session() );
-            }
-        
-        if ( iLocationRecord && iLocationRecord->RecordId() )
-            {
-            iLocationRecord->DeleteL( Session() );
-            }
-        
-        if ( iPriv->iWapAPRecord && 
-            iPriv->iWapAPRecord->RecordId() )
-            {
-            iPriv->iWapAPRecord->DeleteL( Session() );
-            }
-        
-        if ( iPriv->iWapIPBearerRecord && 
-            iPriv->iWapIPBearerRecord->RecordId() )
-            {
-            iPriv->iWapIPBearerRecord->DeleteL( Session() );
-            }
-
-        if ( iPriv->iMetaDataRecord &&
-             iPriv->iMetaDataRecord->RecordId() )
-            {
-            iPriv->iMetaDataRecord->DeleteL( Session() );
-            }
-        
-        DeleteAdditionalRecordsL();
-
-        CommitTransactionL( KErrNone );
-        }
-
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::LoadL( TUint32 aIapId )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadL" );
-    CLOG_NAME_2( _L("plugin_0x%x_%d"), this, aIapId );
-
-    OpenTransactionLC();
-
-    // trap it to set iPriv->iLoadResult
-    TRAP( iPriv->iLoadResult, DoLoadL( aIapId ) );
-
-    User::LeaveIfError( iPriv->iLoadResult );
-    
-    RollbackTransaction();
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CreateNewL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::CreateNewL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CreateNewL" );
-
-    CheckSpaceBelowCriticalLevelL();
-    
-    if ( iIapId )
-        // we already have IAP id ->
-        {
-        User::Leave( KErrAlreadyExists );
-        }
-
-    iPreDefIapId = 0;
-
-    // optional record are disable in default
-    iChargeCardEnabled = EFalse;
-    iLocationEnabled = EFalse;
-    
-    // create mandatory records
-    iIapRecord = static_cast<CCDIAPRecord *>
-                          (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
-    iNetworkRecord = static_cast<CCDNetworkRecord *>
-                          (CCDRecordBase::RecordFactoryL(KCDTIdNetworkRecord));
-    iProxyRecord = static_cast<CCDProxiesRecord *>
-                  (CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord));
-    NewWapRecordL();
-    iPriv->iWapIPBearerRecord->iWAPGatewayAddress.SetL( 
-                                                    KDefWapGatewayIpAddress );
-    
-    iPriv->iMetaDataRecord = NewSeamlessnessRecordL( ETrue );
-
-    // call plugin to create its own records
-    CreateNewServiceRecordL();
-    CreateAdditionalRecordsL();
-
-    EnableProxyL( EFalse );
-
-    // Load default CM name from resource
-    HBufC* defApName = AllocReadL( R_CMMANAGERENG_DEFAULT_AP_NAME );
-    CleanupStack::PushL( defApName );
-
-    SetNameL( *defApName );
-
-    CleanupStack::PopAndDestroy( defApName );
-
-    iIapRecord->iNetworkWeighting = 0; // it's always 0.
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CreateCopyL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CCmPluginBaseEng* CCmPluginBaseEng::CreateCopyL() const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CreateCopyL" );
-    CheckSpaceBelowCriticalLevelL();
-    
-    TCmPluginInitParam params( iCmMgr );
-    
-    CCmPluginBaseEng* copyInst = CreateInstanceL( params );
-    CleanupStack::PushL( copyInst );
-    
-    copyInst->CreateNewL();
-
-    TInt err( KErrNone );
-    TRAP( err, copyInst->SetBoolAttributeL( ECmChargeCardUsageEnabled, iChargeCardEnabled ) );
-    if( err != KErrNotSupported )
-        {
-        User::LeaveIfError( err );
-        }
-    TRAP( err, copyInst->SetBoolAttributeL( ECmLocationUsageEnabled, iLocationEnabled ) );
-    if( err != KErrNotSupported )
-        {
-        User::LeaveIfError( err );
-        }
-    copyInst->SetIntAttributeL( ECmNamingMethod, iPriv->iNamingMethod );
-    copyInst->SetStringAttributeL( ECmName, TPtrC( iIapRecord->iRecordName ) );
-    copyInst->SetStringAttributeL( ECmStartPage, TPtrC( iPriv->iWapAPRecord->iWAPStartPage ) );
-
-
-    PrepareToCopyDataL( *copyInst );
-
-    for ( TInt tblInd = 0; tblInd < iPriv->iConvTblArray->Count(); ++tblInd )
-        {
-        const TCmAttrConvArrayItem* item = (*iPriv->iConvTblArray)[tblInd];
-        
-        if ( item->iEnabled && !(*item->iEnabled) )
-            // Enabled flag is set to 'disabled' state
-            {
-            continue;
-            }
-            
-        if( !item->iRecord || 
-            (item->iRecord && !(*item->iRecord)) )
-            // no record
-            {
-            continue;
-            }
-                
-        for ( TInt attrInd = 1; item->iConvTable[attrInd].iAttribId; ++attrInd )
-            {
-            if( item->iConvTable[attrInd].iAttribFlags & EConvReadOnly )
-                // Read-only flags are not copied.
-                {
-                continue;
-                }
-                
-            TInt commsdatid( item->iConvTable[attrInd].iCommsDatId );
-
-            if ( !commsdatid )
-                { // not connected to the DB, calculated field, no copy
-                continue;
-                }
-                
-            CMDBElement* field = (*item->iRecord)->GetFieldByIdL( commsdatid );
-    
-            if( field->IsNull() )
-                {
-                continue;
-                }
-                
-            switch ( field->Type() )
-                {
-                case EText:
-                case EMedText:
-                case ELongText:
-                    {
-                    CMDBField<TDesC>* textField = (CMDBField<TDesC>*)field;
-                
-                    TRAP( err, copyInst->SetStringAttributeL( 
-                                            item->iConvTable[attrInd].iAttribId,
-                                            *textField ) );
-                    if( err != KErrNotSupported )
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                    break;
-                    
-                case EDesC8:
-                    {
-                    CMDBField<TDesC8>* textField = (CMDBField<TDesC8>*)field;
-                
-                    TRAP( err, copyInst->SetString8AttributeL( 
-                                            item->iConvTable[attrInd].iAttribId,
-                                            *textField ) );
-                    if( err != KErrNotSupported )
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                    break;
-                    
-                case EUint32:
-                case EInt:
-                    {
-                    CMDBField<TUint32>* intField = (CMDBField<TUint32>*)field;
-                    
-                    TRAP( err, copyInst->SetIntAttributeL( 
-                                            item->iConvTable[attrInd].iAttribId,
-                                            *intField ) );
-                    if ( !(( err == KErrNotSupported ) || ( err == KErrArgument )) )
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                    break;
-                    
-                case EBool:
-                    {
-                    CMDBField<TBool>* intField = (CMDBField<TBool>*)field;
-                    
-                    TRAP( err, copyInst->SetBoolAttributeL( 
-                                            item->iConvTable[attrInd].iAttribId,
-                                            *intField ) );
-                    if( err != KErrNotSupported )
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                    break;
-                    
-                case ELink: // links are not copied!
-                default:
-                    {
-                    }
-                    break;
-                }
-            }                    
-        }
-
-    CopyAdditionalDataL( *copyInst );
-    
-    CleanupStack::Pop( copyInst );
-    
-    return copyInst;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::AddResourceFileL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::AddResourceFileL( const TDesC& aName )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::AddResourceFileL" );
-    
-    CLOG_WRITE_1( "[%S]", &aName );
-    
-    TParse fp;
-    TInt err = fp.Set( aName, 
-                        &KDC_RESOURCE_FILES_DIR, 
-                        NULL ); 
-    if ( err != KErrNone)
-        {
-        User::Leave( err );
-        }
-        
-    TFileName fName;
-    
-    fName.Copy( fp.FullName() );
-
-    iCmMgr.AddResourceFileL( fName );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::RemoveResourceFile
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::RemoveResourceFile( const TDesC& aName )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::RemoveResourceFileL" );
-
-    TParse fp;
-    TInt err = fp.Set( aName, 
-                        &KDC_RESOURCE_FILES_DIR, 
-                        NULL ); 
-    CLOG_WRITE_1( "Set: [%d]", err );
-        
-    TFileName fName;
-    
-    fName.Copy( fp.FullName() );
-
-    iCmMgr.RemoveResourceFile( fName );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::AllocReadL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C HBufC* CCmPluginBaseEng::AllocReadL( TInt aResourceId ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::AllocReadL" );
-
-    return iCmMgr.AllocReadL( aResourceId );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::OpenTransactionLC
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::OpenTransactionLC()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::OpenTransactionL" );
-
-    iCmMgr.OpenTransactionLC( ETrue );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CommitTransactionL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::CommitTransactionL( TInt aError )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CommitTransactionL" );
-    
-    iCmMgr.CommitTransactionL( aError );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::RollbackTransaction
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::RollbackTransaction()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::RollbackTransaction" );
-    
-    iCmMgr.RollbackTransaction();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::PrepareToLoadRecordsL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::DoLoadL( TUint32 aIapId )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::DoLoadL" );
-
-    PrepareToLoadRecordsL();
-    
-    LoadIAPRecordL( aIapId );
-    LoadWapRecordL();
-    LoadSeamlessnessRecordL();
-    LoadNetworkSettingL();
-    LoadLocationSettingL();
-
-    // This is a connectionmethodinfo instance, that has no
-    // service and proxy setting.
-    if( KDummyBearerType != iBearerType )
-        {
-        LoadServiceSettingL();
-        LoadProxySettingL();
-        }
-
-    LoadAdditionalRecordsL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::PrepareToLoadRecordsL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::PrepareToLoadRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::PrepareToLoadRecordsL" );
-
-    iChargeCardEnabled = EFalse;
-    iLocationEnabled = EFalse;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadIAPRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::LoadIAPRecordL( TUint32 aIapId )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadIAPRecordL" );
-
-    iIapId = aIapId;
-    
-    // Load IAP record
-    CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord *>
-                            (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
-                            
-    CleanupStack::PushL( iapRecord );
-    
-    iapRecord->SetRecordId( iIapId );
-    
-    iapRecord->LoadL( Session() );
-    
-    CleanupStack::Pop( iapRecord );
-    
-    iIapRecord = iapRecord;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadProxySettingL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::LoadProxySettingL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadProxySettingL" );
-    
-    // Load Proxy record
-    CMDBRecordSet<CCDProxiesRecord>* proxieRS = 
-              new(ELeave) CMDBRecordSet<CCDProxiesRecord>(KCDTIdProxiesRecord);
-    CleanupStack::PushL(proxieRS);
-
-    // Now try to find the linked proxy record
-    // create new record
-    CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord *>
-                          (CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord));
-
-    CleanupStack::PushL( proxyRecord );
-    
-    // Prime record
-    TPtrC serviceType( iIapRecord->iServiceType );
-    
-    proxyRecord->iServiceType.SetL( serviceType );
-    
-    proxieRS->iRecords.AppendL( proxyRecord );
-
-    CleanupStack::Pop( proxyRecord );
-    
-    proxyRecord = NULL;
-    
-    CLOG_WRITE_1( "Looking for proxy: [%d]", TUint32(iIapRecord->iService) );
-    
-    if ( proxieRS->FindL(Session()) )
-        {
-        TInt i(0);
-        while( i<proxieRS->iRecords.Count() )
-            // Now that we have a list of services with the proper service type 
-            // search for our proxy record and remove it from the array, 
-            // then destroy the array.
-            {
-            CCDProxiesRecord* proxyRecord = (*proxieRS)[i];
-            
-            // Compare the record id of these 2 services
-            if ( TUint32(proxyRecord->iService) == 
-                TUint32(iIapRecord->iService) )
-                {
-                iProxyRecord = proxyRecord;
-                // take ownership of this record
-                proxieRS->iRecords.Remove( i );
-                break;
-                }
-            ++i;
-            }
-        }
-    
-    proxieRS->iRecords.ResetAndDestroy();
-    
-    if( !iProxyRecord )
-        {
-        // This creates a proxy record, where usage is disabled.
-        EnableProxyL( EFalse );
-        }
-
-    CleanupStack::PopAndDestroy( proxieRS );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadServiceSettingL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::LoadServiceSettingL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadServiceSettingL" );
-    
-    if ( iServiceRecord )
-        {
-        iServiceRecord->SetRecordId( iIapRecord->iService );
-        TRAPD( err, iServiceRecord->LoadL( Session() ) );
-        if( err == KErrNotFound )
-            // record not found -> create a default one
-            {
-            CreateNewServiceRecordL();
-            }
-        else
-            {
-            User::LeaveIfError( err );
-            }
-        }
-    else
-        {
-        CLOG_WRITE( "CCmPluginBaseEng::LoadServiceSettingL: No service rec" );
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadChargeCardSettingL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::LoadChargeCardSettingL( TUint32 aRecordId )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadChargeCardSettingL" );
-
-    if ( !aRecordId )
-        // No charge card is link to this IAP
-        {
-        iChargeCardEnabled = EFalse;
-        
-        CLOG_WRITE( "CCmPluginBaseEng::LoadChargeCardSettingL: No charge card" );
-        return;
-        }
-        
-    iChargeCardRecord = static_cast<CCDChargecardRecord *>
-                       (CCDRecordBase::RecordFactoryL(KCDTIdChargecardRecord));
-    iChargeCardRecord->SetRecordId( aRecordId );
-    TRAPD( err, iChargeCardRecord->LoadL( Session() ) );
-    if( err == KErrNotFound )
-        // referenced but doesn't exist. Try to fix it.
-        {
-        iChargeCardRecord->SetRecordId( KCDNewRecordRequest );
-        
-        // if it fails we can't do anything to solve this problem
-        iChargeCardRecord->StoreL( Session() );
-        }
-    else
-        {
-        User::LeaveIfError( err );
-        }
-    
-    iChargeCardEnabled = ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadNetworkSettingL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::LoadNetworkSettingL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadNetworkSettingL" );
-    
-    CCDNetworkRecord* networkRecord = static_cast<CCDNetworkRecord*>
-                          (CCDRecordBase::RecordFactoryL(KCDTIdNetworkRecord));
-    CleanupStack::PushL( networkRecord );
-                       
-    networkRecord->SetRecordId( iIapRecord->iNetwork );
-    TRAPD( err, networkRecord->LoadL( Session() ) );
-    if( err == KErrNotFound )
-        {
-        CleanupStack::PopAndDestroy( networkRecord );
-
-        networkRecord = static_cast<CCDNetworkRecord*>
-                          (CCDRecordBase::RecordFactoryL(KCDTIdNetworkRecord));
-        }
-    else
-        // KErrNotFound -> doesn't matter. We will do it UpdateL()
-        {
-        User::LeaveIfError( err );
-
-        CleanupStack::Pop( networkRecord );
-        }
-
-    iNetworkRecord = networkRecord;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadLocationSettingL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::LoadLocationSettingL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadLocationSettingL" );
-
-    CCDLocationRecord* locationRecord = static_cast<CCDLocationRecord*>
-                         (CCDRecordBase::RecordFactoryL(KCDTIdLocationRecord));
-         
-    CleanupStack::PushL( locationRecord );
-
-    locationRecord->SetRecordId( iIapRecord->iLocation );
-    if ( locationRecord->FindL(Session()) )
-        {
-        iLocationEnabled = ETrue;
-        
-        iLocationRecord = locationRecord;
-        
-        CleanupStack::Pop( locationRecord );
-        }
-    else
-        {
-        iLocationEnabled = EFalse;
-
-        CleanupStack::PopAndDestroy( locationRecord );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::PrepareToUpdateRecordsL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::PrepareToUpdateRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::PrepareToUpdateRecordsL" );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateIAPRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::UpdateIAPRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateIAPRecordL" );
-
-    if ( !iIapId )
-        {
-        if ( iPreDefIapId )
-            {
-            iIapRecord->SetRecordId( iPreDefIapId );
-            iPreDefIapId = 0;
-            }
-        else
-            {
-            iIapRecord->SetRecordId( KCDNewRecordRequest );
-            }
-
-        TUint32 id;
-        HBufC* name;
-        
-        ServiceRecordIdLC( name, id );
-        iIapRecord->iService = id;
-        iIapRecord->iServiceType.SetL( *name );
-        CleanupStack::PopAndDestroy( name );
-            
-        BearerRecordIdLC( name, id );
-        iIapRecord->iBearer = id;
-        iIapRecord->iBearerType.SetL( *name );
-        CleanupStack::PopAndDestroy( name );
-
-        iIapRecord->iNetwork = iNetworkRecord->RecordId();
-        
-        if ( iLocationRecord )
-            {
-            iIapRecord->iLocation = iLocationRecord->RecordId();
-            }
-            
-        iIapRecord->iLocation = GetLocationIdL();
-        
-        iIapRecord->StoreL( Session() );
-        iIapId = iIapRecord->RecordId();
-        
-        CLOG_NAME_2( _L("plugin_0x%x_%d"), this, iIapId );
-        CLOG_WRITE_1( "New IapId: [%d]", iIapId );
-        }
-    else
-        {
-        iIapRecord->ModifyL( Session() );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateProxyRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::UpdateProxyRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateProxyRecordL" );
-
-    CopyAttributes( iIapRecord, iProxyRecord );
-    CheckIfNameModifiedL( iProxyRecord );
-    
-    if ( iProxyRecord->iUseProxyServer )
-        {
-        if ( !iProxyRecord->RecordId() )
-            // new proxy setting -> create new record
-            {
-            iProxyRecord->iService = iServiceRecord->RecordId();
-            iProxyRecord->iServiceType.SetL( iIapRecord->iServiceType );
-
-            // By default protocol is set to "http"
-            if ( TPtrC(iProxyRecord->iProtocolName).Length() == 0 )
-                {
-                iProxyRecord->iProtocolName.SetL(KDefProxyProtocolName);
-                }
-
-            iProxyRecord->SetRecordId( KCDNewRecordRequest );
-
-            iProxyRecord->StoreL( Session() );
-            }
-        else
-            // already existing record -> update only
-            {
-            iProxyRecord->ModifyL( Session() );
-            }        
-        }
-    else
-        {
-        if ( iProxyRecord->RecordId() )
-            {
-            iProxyRecord->DeleteL( Session() );
-            }
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateSeamlessnessRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::UpdateSeamlessnessRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateSeamlessnessRecordL" );
-
-    CopyAttributes( iIapRecord, iPriv->iMetaDataRecord );
-    CheckIfNameModifiedL( iPriv->iMetaDataRecord );
-    
-    if ( !iPriv->iMetaDataRecord->RecordId() )
-        {
-        iPriv->iMetaDataRecord->iIAP = IAPRecordElementId();
-        iPriv->iMetaDataRecord->SetRecordId( KCDNewRecordRequest );
-        iPriv->iMetaDataRecord->StoreL( Session() );
-        }
-    else
-        {
-        iPriv->iMetaDataRecord->ModifyL( Session() );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateChargeCardRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::UpdateChargeCardRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateChargeCardRecordL" );
-    if ( iChargeCardEnabled )
-        {
-        CopyAttributes( iIapRecord, iChargeCardRecord );
-        CheckIfNameModifiedL( iChargeCardRecord );
-        
-        if ( !iChargeCardRecord->RecordId() )
-            {
-            iChargeCardRecord->SetRecordId( KCDNewRecordRequest );
-            iChargeCardRecord->StoreL( Session() );
-            }
-        else
-            {
-            iChargeCardRecord->ModifyL( Session() );
-            }
-        }
-    else
-        {
-        if ( iChargeCardRecord )
-            {
-            iChargeCardRecord->DeleteL( Session() );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateServiceRecordL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::UpdateServiceRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateServiceRecordL" );
-    
-    if ( iServiceRecord )
-        {
-        CopyAttributes( iIapRecord, iServiceRecord );
-        CheckIfNameModifiedL( iServiceRecord );
-        
-        if ( !iServiceRecord->RecordId() )
-            {
-            iServiceRecord->SetRecordId( KCDNewRecordRequest );
-            iServiceRecord->StoreL( Session() );
-            }
-        else
-            {
-            iServiceRecord->ModifyL( Session() );
-            }
-        }
-    else
-        {
-        CLOG_WRITE( "No service record" );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateNetworkRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::UpdateNetworkRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateNetworkRecordL" );
-    
-    CopyAttributes( iIapRecord, iNetworkRecord );
-    if ( !iNetworkRecord->RecordId() )
-        {
-        CheckIfNameModifiedL( iNetworkRecord );
-        
-        iNetworkRecord->SetRecordId( KCDNewRecordRequest );
-        iNetworkRecord->StoreL( Session() );
-        }
-    else
-        {
-        iNetworkRecord->ModifyL( Session() );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateLocationRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::UpdateLocationRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateLocationRecordL" );
-    if ( iLocationEnabled )
-        {
-        CopyAttributes( iIapRecord, iLocationRecord );
-        CheckIfNameModifiedL( iLocationRecord );
-                        
-        if ( !iLocationRecord->RecordId() )
-            {
-            iLocationRecord->SetRecordId( KCDNewRecordRequest );
-            iLocationRecord->StoreL( Session() );
-            }
-        else
-            {
-            iLocationRecord->ModifyL( Session() );
-            }
-        }
-    else
-        {
-        if ( iLocationRecord )
-            {
-            iLocationRecord->DeleteL( Session() );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateConnPrefSettingL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::UpdateConnPrefSettingL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateConnPrefSettingL" );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::EnableProxyL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::EnableProxyL( TBool aEnable )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::EnableProxyL" );
-
-    if ( !iServiceRecord )
-        {
-        CLOG_WRITE( "No service record -> no proxy" );
-        User::Leave( KErrNotSupported );
-        }
-
-    if( !iProxyRecord )
-        {
-        iProxyRecord = static_cast<CCDProxiesRecord *>
-                      (CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord));
-        }
-        
-    iProxyRecord->iUseProxyServer = aEnable;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::EnableChargeCardL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::EnableChargeCardL( TBool aEnable )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::EnableChargeCardL" );
-
-    if ( aEnable )
-        {
-        if ( !iChargeCardRecord )
-            {
-            iChargeCardRecord = static_cast<CCDChargecardRecord *>
-                       (CCDRecordBase::RecordFactoryL(KCDTIdChargecardRecord));
-            }
-        }
-    else
-        // charge card is disabled. To be deleted in UpdateL
-        // Nothing to do here
-        {
-        }
-        
-    iChargeCardEnabled = aEnable;        
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::EnableLocationL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::EnableLocationL( TBool aEnable )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::EnableLocationL" );
-
-    if ( aEnable )
-        {
-        if ( !iLocationRecord )
-            {
-            iLocationRecord = static_cast<CCDLocationRecord *>
-                         (CCDRecordBase::RecordFactoryL(KCDTIdLocationRecord));
-            }
-        }
-    else
-        // location is disabled. To be deleted in UpdateL.
-        // Nothing to do here
-        {
-        }
-        
-    iLocationEnabled = aEnable;        
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadWapRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::LoadWapRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadWapRecordL" );
-
-    iPriv->iWapIPBearerRecord = FindWAPRecordL();
-    if ( iPriv->iWapIPBearerRecord )
-        {
-        CCDWAPAccessPointRecord *wapApRecord = static_cast<CCDWAPAccessPointRecord *>
-                   (CCDRecordBase::RecordFactoryL(KCDTIdWAPAccessPointRecord));
-                   
-        CleanupStack::PushL( wapApRecord );
-                                        
-        wapApRecord->SetRecordId( 
-                                iPriv->iWapIPBearerRecord->iWAPAccessPointId );
-        TRAPD( err, wapApRecord->LoadL( Session() ) );
-        if( err == KErrNotFound )
-            {
-            CleanupStack::PopAndDestroy( wapApRecord );
-            
-            wapApRecord = static_cast<CCDWAPAccessPointRecord *>
-                   (CCDRecordBase::RecordFactoryL(KCDTIdWAPAccessPointRecord));
-            }
-        else
-            {
-            CLOG_WRITE( "WAP bearer record found, WAP AP Not??" );
-
-            User::LeaveIfError( err );
-
-            CleanupStack::Pop( wapApRecord );
-            }
-        
-        iPriv->iWapAPRecord = wapApRecord;
-        }
-    else
-        // No WAP record found -> create a new one
-        {
-        NewWapRecordL();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadSeamlessnessRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::LoadSeamlessnessRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadSeamlessnessRecordL" );
-
-    iPriv->iMetaDataRecord = FindSeamlessnessRecordL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateWapRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::UpdateWapRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateWapRecordL" );
-    
-    if ( !iPriv->iWapIPBearerRecord )
-        // nothing to update
-        {
-        return;
-        }
-    
-    // we have the bearer but to make sure that we have WAP_AP, too.    
-    NewWapRecordL();
-    
-    CopyAttributes( iIapRecord, iPriv->iWapAPRecord );
-    CopyAttributes( iIapRecord, iPriv->iWapIPBearerRecord );
-    
-    CheckIfNameModifiedL( iPriv->iWapAPRecord );
-    CheckIfNameModifiedL( iPriv->iWapIPBearerRecord );
-
-    if ( !iPriv->iWapAPRecord->RecordId() )
-        {
-        iPriv->iWapAPRecord->SetRecordId( KCDNewRecordRequest );
-        iPriv->iWapAPRecord->StoreL( Session() );
-        }
-    else
-        {
-        iPriv->iWapAPRecord->ModifyL( Session() );
-        }
-    
-    if ( !iPriv->iWapIPBearerRecord->RecordId() )
-        {
-        iPriv->iWapIPBearerRecord->iWAPAccessPointId = iPriv->iWapAPRecord->RecordId();
-        iPriv->iWapIPBearerRecord->iWAPIAP = iIapId;
-        
-        iPriv->iWapIPBearerRecord->SetRecordId( KCDNewRecordRequest );
-        iPriv->iWapIPBearerRecord->StoreL( Session() );
-        }
-    else
-        {
-        iPriv->iWapIPBearerRecord->ModifyL( Session() );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::NewWapRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::NewWapRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::NewWapBearerRecordL" );
-
-    if ( !iPriv->iWapIPBearerRecord )
-        {
-        iPriv->iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord *>
-                      (CCDRecordBase::RecordFactoryL(KCDTIdWAPIPBearerRecord));
-        iPriv->iWapIPBearerRecord->iWAPProxyPort = 0;
-        iPriv->iWapIPBearerRecord->iWAPWSPOption = ECmWapWspOptionConnectionOriented;
-        iPriv->iWapIPBearerRecord->iWAPSecurity = EFalse;
-        }
-
-    if ( !iPriv->iWapAPRecord )
-        {
-        iPriv->iWapAPRecord = static_cast<CCDWAPAccessPointRecord *>
-                   (CCDRecordBase::RecordFactoryL(KCDTIdWAPAccessPointRecord));
-        // SMS bearer is not supported by this version
-        iPriv->iWapAPRecord->iWAPCurrentBearer.SetL( 
-                                               TPtrC(KCDTypeNameWAPIPBearer) );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::NewSeamlessnessRecordL
-// ---------------------------------------------------------------------------
-//
-CCDIAPMetadataRecord* CCmPluginBaseEng::NewSeamlessnessRecordL( TBool aSetDef )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::NewSeamlessnessRecordL" );
-
-    CCDIAPMetadataRecord* record = new (ELeave) CCDIAPMetadataRecord( 
-                                          iCmMgr.SeamlessnessTableId() );
-                                          
-    if( aSetDef )
-        {
-        record->iSeamlessness = ESeamlessnessConfirmFirst;
-        }
-        
-    return record;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::SetAttribute
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::SetAttribute( CCDRecordBase* aRecord, 
-                                     TUint32 aAttribute, 
-                                     TBool aSet )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetAttribute" );
-   
-    if ( aSet )
-        {
-        aRecord->SetAttributes( aAttribute );
-        }
-    else
-        {
-        aRecord->ClearAttributes( aAttribute );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CopyAttributes
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::CopyAttributes( CCDRecordBase* aSrcRecord, 
-                                       CCDRecordBase* aDstRecord )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CopyAttributes" );
-
-    TMDBAttributeFlags attr( aSrcRecord->Attributes() );
-    
-    aDstRecord->SetAttributes( attr );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::FindWAPRecordL
-// ---------------------------------------------------------------------------
-//
-CCDWAPIPBearerRecord* CCmPluginBaseEng::FindWAPRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::FindWAPRecordL" );
-
-    CMDBRecordSet<CCDWAPIPBearerRecord>* wapRS = 
-            new(ELeave) 
-                   CMDBRecordSet<CCDWAPIPBearerRecord>(KCDTIdWAPIPBearerRecord);
-    CleanupStack::PushL( wapRS );
-    
-    CCDWAPIPBearerRecord* wapBearerRecord = static_cast<CCDWAPIPBearerRecord *>
-                      (CCDRecordBase::RecordFactoryL(KCDTIdWAPIPBearerRecord));
-                      
-    CleanupStack::PushL( wapBearerRecord );
-    
-    wapBearerRecord->iWAPIAP = iIapId;
-    wapRS->iRecords.AppendL( wapBearerRecord );
-    
-    CleanupStack::Pop( wapBearerRecord );
-    wapBearerRecord = NULL;
-    
-    if ( wapRS->FindL(Session()) )
-        {
-        CLOG_WRITE( "WAP bearer record found" );
-        
-        wapBearerRecord = 
-                        static_cast<CCDWAPIPBearerRecord *>(wapRS->iRecords[0]);
-
-        // we take over the ownership of this record
-        wapRS->iRecords.Remove( 0 );
-        }
-
-    CleanupStack::PopAndDestroy( wapRS );
-        
-    return wapBearerRecord;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::FindSeamlessnessRecordL
-// ---------------------------------------------------------------------------
-//
-CCDIAPMetadataRecord* CCmPluginBaseEng::FindSeamlessnessRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::FindSeamlessnessRecordL" );
-
-    CMDBRecordSet<CCDIAPMetadataRecord>* slnRS = 
-      new(ELeave) CMDBRecordSet<CCDIAPMetadataRecord>(iCmMgr.SeamlessnessTableId());
-    CleanupStack::PushL( slnRS );
-    
-    CCDIAPMetadataRecord* slnRecord = 
-            new (ELeave) CCDIAPMetadataRecord( iCmMgr.SeamlessnessTableId() );
-                                                                  
-    slnRecord->iIAP = IAPRecordElementId();
-    slnRS->iRecords.AppendL( slnRecord );
-    
-    slnRecord = NULL;
-    
-    if ( slnRS->FindL(Session()) )
-        {
-        CMDBRecordBase* record = slnRS->iRecords[0];
-
-        slnRecord = NewSeamlessnessRecordL( EFalse );
-        slnRecord->SetRecordId( record->RecordId() );
-        
-        // This can leave only in case of OOM.
-        slnRecord->LoadL( Session() );
-        }
-    else
-        {
-        slnRecord = NewSeamlessnessRecordL( ETrue );
-        }
-
-    CleanupStack::PopAndDestroy( slnRS );
-        
-    return slnRecord;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::DoMakeValidNameL
-// ---------------------------------------------------------------------------
-//
-HBufC* CCmPluginBaseEng::DoMakeValidNameL( const TDesC& aName )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::DoMakeValidNameL" );
-
-    TBool changed( EFalse );
-    HBufC* temp = HBufC::NewLC( KApMaxConnNameLength );
-    HBufC* temp2 = HBufC::NewLC( KApMaxConnNameLength );
-
-    HBufC* corrname = EnsureMaxLengthLC( aName, changed );
-    *temp = *corrname;
-    TInt postfix( 0 );
-    TInt pf( 0 );
-    TInt i( 0 );
-    TBool valid ( EFalse );
-
-    TPtrC prefix = GetPrefix( *corrname );
-    
-    postfix = GetPostfix( *temp, prefix );
-    postfix = -1;
-    do
-        {       
-        valid = IsValidNameL( *temp );
-        if ( !valid )
-            {
-            changed = ETrue;
-            postfix++;
-            // check the length of postfix, check text length accordingly
-            pf = postfix;
-            for (i=1; i<10; i++)
-                {
-                pf /= 10;
-                if ( !pf )
-                    break;
-                }
-            TPtr sgdptr( temp->Des() );
-            TPtr sgdptr2( temp2->Des() );
-            if ( postfix )
-                {
-                if ( postfix < 10 )
-                    {
-                    sgdptr2 = prefix.Left( KApMaxConnNameLength - i - 3 );
-                    }
-                else
-                    {
-                    sgdptr2 = prefix.Left( KApMaxConnNameLength - i - 2 );
-                    }
-                }
-            else
-                {
-                sgdptr2 = prefix.Left( KApMaxConnNameLength );
-                }
-            if ( postfix )
-                {
-                TBuf< KMaxPostfixLength > postfixString;
-                if ( postfix > 9 )
-                    {
-                    postfixString.Format( KFormatLargePostfix, postfix );
-                    AknTextUtils::LanguageSpecificNumberConversion( postfixString );
-                    }
-                else
-                    {
-                    postfixString.Format( KFormatPostfix, postfix );
-                    AknTextUtils::LanguageSpecificNumberConversion( postfixString );
-                    }
-                sgdptr.Format( KFormatNameWithPostfix, &sgdptr2,
-                                   &postfixString );
-                }
-            else
-                {
-                sgdptr.Format( KFormatNoPostfix, &sgdptr2 );
-                }
-            }
-        } while ( !valid );
-
-    CleanupStack::PopAndDestroy( corrname );
-    CleanupStack::PopAndDestroy( temp2 );
-
-    if ( changed )
-        {
-        CLOG_WRITE_1( "New name: [%S]", temp );
-        CleanupStack::Pop( temp );
-        }
-    else
-        {
-        CleanupStack::PopAndDestroy( temp );
-        temp = NULL;
-        }
-
-    return temp;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::EnsureMaxLengthLC
-// ---------------------------------------------------------------------------
-//
-HBufC* CCmPluginBaseEng::EnsureMaxLengthLC( const TDesC& aName, 
-                                            TBool& aChanged )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::EnsureMaxLengthLC" );
-
-    TInt length = aName.Length();
-    
-    aChanged = EFalse;
-    
-    if ( !length )
-        {
-        // Name is required.        
-        User::Leave( KErrArgument );
-        }
-
-    HBufC* corrname;
-    if ( KApMaxConnNameLength < length )
-        { // name too long, truncate.
-        corrname = aName.Left( KApMaxConnNameLength ).AllocLC();
-        aChanged = ETrue;
-        }
-    else
-        {
-        corrname = aName.AllocLC();
-        corrname->Des().Trim();
-        if ( corrname->Length() == 0 )
-            {
-            User::Leave( KErrArgument );
-            }
-        // comes here only if name is valid
-        if ( corrname->Length() != aName.Length() )
-            {
-            aChanged = ETrue;
-            }
-        }
-
-    return corrname;
-    }
-
-// ---------------------------------------------------------------------------
-// Given aName in the format <prefix> or <prefix><brace><integer><brace>,
-// return a pointer to the leading part.
-// That is, if there is trailing <space><integer>,
-// then that is excluded; if there is no trailing part, then the original
-// decriptor is returned.
-// Examples:
-//   - "Foo" returns "Foo";
-//   - "Foo 12" returns "Foo 12";
-//   - "Foo(12)" returns "Foo";
-//   - "Foo 12 (34)" returns "Foo 12 ";
-//   - "Foo bar" returns "Foo bar";
-//   - "Foo " returns "Foo ".
-// ---------------------------------------------------------------------------
-TPtrC CCmPluginBaseEng::GetPrefix( const TDesC& aName )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetPrefix" );
-
-    TPtrC prefix = aName;
-    TInt lastBrace = aName.LocateReverse('(');
-    if ( lastBrace != KErrNotFound )
-        {
-        // aName looks like "<prefix><brace><something>".
-        // See if <something> is an integer number.
-        TPtrC num = aName.Right( aName.Length() - lastBrace - 1 );
-        TInt val;
-        TLex lex( num );
-        if ( lex.Val( val ) == KErrNone )
-            {
-            // Yes, the trailer is an integer.
-            prefix.Set( aName.Left( lastBrace ) );
-            }
-        }
-    return prefix;
-    }
-
-
-// ---------------------------------------------------------------------------
-// If aName is constructed from aPrefix with a postfix, get the numeric
-// value of the postfix, e.g:
-//   - GetPostfix( "Foo (3)", "Foo" ) == 3
-//   - GetPostfix( "Foo 23 (45)", "Foo 23" ) == 45
-// If aName is the same as aPrefix, return 0, e.g.:
-//   - GetPostfix( "Foo", "Foo" ) == 0
-// If aName is not constructed from aPrefix, return -1, e.g.:
-//   - GetPostfix( "Foobar", "Foo" ) == -1
-//   - GetPostfix( "Fo 23 45", "Foo" ) == -1
-// ---------------------------------------------------------------------------
-TInt CCmPluginBaseEng::GetPostfix( const TDesC& aName, const TDesC& aPrefix )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetPostfix" );
-    TInt postfix( KErrNotFound );
-    TInt nameLength = aName.Length();
-    TInt prefixLength = aPrefix.Length();
-    if ( nameLength >= prefixLength && aName.FindF( aPrefix ) == 0 )
-        {
-        // aName is longer or equal length, and
-        // aPrefix can be found in the beginning of aName.
-        if ( nameLength == prefixLength )
-            {
-            // They have the same length; they equal.
-            postfix = 0;
-            }
-        else
-            {
-            if ( prefixLength > 0 )
-                {
-                if ( aName[ prefixLength ] == '(' )
-                    {
-                    // (Now we know that aName is longer than aPrefix.)
-                    // aName looks like "aPrefix<brace><something>".
-                    // See if <something> is an integer number.
-                    TPtrC num = aName.Right( nameLength - prefixLength - 1 );
-                        TBuf< KApMaxConnNameLength > pf;
-                    pf = num;
-                    AknTextUtils::ConvertDigitsTo( pf, EDigitTypeWestern );
-                    TInt val;
-                    TLex lex( pf );
-                    if ( lex.Val( val ) == KErrNone )
-                        {
-                        // Yes, the trailer is an integer.
-                        if ( val > 0 )
-                            {
-                            postfix = val;
-                            }
-                        else
-                            {
-                            // signal that it is invalid...
-                            postfix = -1;
-                            }
-                        }
-	                }
-                }
-            else
-                {
-                postfix = -1;
-                }
-            }
-        }
-    return postfix;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::IsValidNameL
-// ---------------------------------------------------------------------------
-//
-TBool CCmPluginBaseEng::IsValidNameL( const TDesC& aNameText )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::IsValidNameL" );
-
-    TBool retVal( ETrue );
-    
-    OpenTransactionLC();
-    
-    CMDBRecordSet<CCDIAPRecord>* iapRS = 
-                      new(ELeave) CMDBRecordSet<CCDIAPRecord>(KCDTIdIAPRecord);
-    CleanupStack::PushL(iapRS);
-
-    CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord *>
-                            (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
-
-    CleanupStack::PushL( iapRecord );
-    
-    // Prime record
-    iapRecord->iRecordName.SetL( aNameText );
-    
-    iapRS->iRecords.AppendL( iapRecord );
-
-    CleanupStack::Pop( iapRecord );
-    
-    iapRecord = NULL;
-    
-    if ( iapRS->FindL(Session()) )
-        {
-        if ( iIapId )
-            // this is not a new CM
-            {
-            for ( TInt i = 0; i < iapRS->iRecords.Count(); ++i )
-                {
-                if ( iapRS->iRecords[i]->RecordId() != iIapId )
-                    // duplication because it's not our name
-                    {
-                    retVal = EFalse;
-                    break;
-                    }
-                }
-            }
-        else
-            // new CM -> any occurence is a duplication
-            {
-            retVal = EFalse;
-            }
-        }
-        
-    CleanupStack::PopAndDestroy( iapRS );
-    
-    RollbackTransaction();
-        
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::EscapeTextLC
-// ---------------------------------------------------------------------------
-//
-HBufC* CCmPluginBaseEng::EscapeTextLC( const TDesC& aLiteral )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::EscapeTextLC" );
-
-    TInt l( aLiteral.Length() );
-    //> 2*, to ensure correct esc. even if ALL chars are quotes...
-    HBufC* retbuf = HBufC::NewLC( 2*l );
-    TPtr ret = retbuf->Des();
-    TUint quote( '\'' );  // TChar gives warnings in THUMB & ARMI
-    TInt i( 0 );
-
-    for ( i=0; i<l; i++ )
-        {
-        ret.Append( aLiteral[i] );
-        if ( aLiteral[i] == quote )
-            {
-            // Duplicate quote.
-            ret.Append( quote );
-            }
-        }
-    return retbuf;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::SetNameL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::SetNameL( const TDesC& aName )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetNameL" );
-    
-    if ( iPriv->iNamingMethod == ENamingNothing )
-        {
-        iIapRecord->iRecordName.SetL( aName );
-        }
-    else if ( iPriv->iNamingMethod == ENamingUnique )
-        {
-        HBufC* newName = DoMakeValidNameL( aName );
-        
-        if ( newName )
-            // name converted to unique
-            {
-            CleanupStack::PushL( newName );
-            iIapRecord->iRecordName.SetL( *newName );
-            CleanupStack::PopAndDestroy( newName );
-            }
-        else
-            {
-            iIapRecord->iRecordName.SetL( aName );
-            }
-        }
-    else if ( iPriv->iNamingMethod == ENamingNotAccept )
-        {
-        if ( IsValidNameL( aName ) )
-            {
-            iIapRecord->iRecordName.SetL( aName );
-            }
-        else
-            {
-            User::Leave( KErrArgument );
-            }
-        }
-    else
-        {
-        User::Leave( KErrCorrupt );
-        }
-        
-    CLOG_WRITE_1( "Finale name: [%S]", &FIELD_TO_TDESC(iIapRecord->iRecordName) );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::AddConverstionTableL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::AddConverstionTableL( CCDRecordBase* *aRecord,
-                           TBool* aEnabled,
-                           const TCmAttribConvTable* aConvTable )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::AddConverstionTableL" );
-    TCmAttrConvArrayItem* item = new (ELeave) TCmAttrConvArrayItem;
-    
-    item->iRecord = aRecord;
-    item->iEnabled = aEnabled;
-    item->iConvTable = aConvTable;
-    
-    iPriv->iConvTblArray->AppendL( item );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::AddConverstionTableL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::AddCommonConversionTableL( 
-                                const TCmCommonAttrConvArrayItem* aConvTable )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::AddCommonConversionTableL" );
-
-    User::LeaveIfError( iPriv->iCommonConvTblArray.Append( aConvTable ) );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::RemoveConversionTable
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::RemoveConversionTable( 
-                                    const TCmAttribConvTable* aConvTable )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::RemoveConversionTable" );
-
-    for ( TInt i = 0; i < iPriv->iConvTblArray->Count(); ++i )
-        {
-        if ( (*iPriv->iConvTblArray)[i]->iConvTable == aConvTable )
-            {
-            delete (*iPriv->iConvTblArray)[i];
-            iPriv->iConvTblArray->Delete( i );
-            }
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::RemoveCommonConversionTable
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::RemoveCommonConversionTable( 
-                                 const TCmCommonAttrConvArrayItem* aConvTable )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::RemoveCommonConversionTable" );
-
-    for ( TInt i = 0; i < iPriv->iCommonConvTblArray.Count(); ++i )
-        {
-        if ( iPriv->iCommonConvTblArray[i] == aConvTable )
-            {
-            iPriv->iCommonConvTblArray.Remove( i );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::FindFieldL
-// ---------------------------------------------------------------------------
-//
-TValidationFunctionL CCmPluginBaseEng::FindFieldL( TUint32 aAttribute,
-                                           TCMFieldTypes aType,
-                                           CMDBElement* &aElement ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::FindFieldL" );
-
-    TValidationFunctionL func = NULL;
-    const TCmAttrConvArrayItem* foundItem = ConversionTable( aAttribute );
-    
-    aElement = NULL;
-    
-    if( !foundItem )
-        {
-        User::Leave( KErrNotSupported );
-        }
-        
-    if ( foundItem->iEnabled )
-        {
-        if ( !(*foundItem->iEnabled) )
-            {
-            User::Leave( KErrNotSupported );
-            }
-        }
-
-    if ( !(*foundItem->iRecord) )
-        {
-        User::Leave( KErrNotSupported );
-        }
-            
-    TInt index( 0 );
-    CMDBElement& field = FieldByAttributeL( foundItem, aAttribute, index );
-    switch ( field.Type() )
-        {
-        case EText:
-        case EMedText:
-        case ELongText:
-            {
-            if ( aType == ECmText )
-                {
-                aElement = &field;
-                }
-            else
-                {
-                User::Leave( KErrNotSupported );
-                }
-            }
-            break;
-
-        case EDesC8:
-            {
-            if ( aType == ECmText8 )
-                {
-                aElement = &field;
-                }
-            else
-                {
-                User::Leave( KErrNotSupported );
-                }
-            }
-            break;
-            
-        case EUint32:
-        case EInt:
-        case EBool:
-            {
-            if ( aType == ECmInt ||
-                 aType == ECmBool )
-                {
-                aElement = &field;
-                }
-            else
-                {
-                User::Leave( KErrNotSupported );
-                }
-            }
-            break;
-            
-        default:
-            {
-            User::Leave( KErrArgument );
-            }
-            break;
-        }
-        
-    if( aElement )
-        {
-        func = foundItem->iConvTable[index].iValidFuncL;
-        }
-    else
-        {
-        User::Leave( KErrNotSupported );
-        }
-    
-    return func;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::Reset
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::Reset()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::Reset" );
-
-    iIapId = 0;
-    
-    delete iIapRecord; iIapRecord = NULL;
-    delete iProxyRecord; iProxyRecord = NULL;
-    delete iServiceRecord; iServiceRecord = NULL;
-    delete iChargeCardRecord; iChargeCardRecord = NULL;
-    delete iNetworkRecord; iNetworkRecord = NULL;
-    delete iLocationRecord; iLocationRecord = NULL;
-    if ( iPriv )
-        {
-        iPriv->iLoadResult = KErrNone;
-        delete iPriv->iWapAPRecord; iPriv->iWapAPRecord = NULL;
-        delete iPriv->iWapIPBearerRecord; iPriv->iWapIPBearerRecord = NULL;
-        delete iPriv->iMetaDataRecord; iPriv->iMetaDataRecord = NULL;            
-        }
-    
-    iChargeCardEnabled = EFalse;
-    iLocationEnabled = EFalse;
-    }
-    
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CheckIfAlreadyConnected
-// ---------------------------------------------------------------------------
-EXPORT_C TBool CCmPluginBaseEng::CheckIfAlreadyConnected() const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CheckIfAlreadyConnected" );
-
-    TBool retVal( EFalse );
-    RSocketServ serv;
-    RConnection connection;
-    TUint   count;
-
-    if ( serv.Connect() == KErrNone )
-        {
-        if ( connection.Open( serv, KAfInet ) == KErrNone )
-            {
-            if ( connection.EnumerateConnections( count ) == KErrNone )
-                {
-                TPckgBuf<TConnectionInfo> connInfo;
-
-                for ( TUint32 i = 1; i <= count; ++i )
-                    {
-                    connection.GetConnectionInfo( i, connInfo );
-
-                    if ( connInfo().iIapId == iIapId )
-                        {
-                        CLOG_WRITE( "Found connection" );
-                        retVal = ETrue;
-                        break;
-                        }
-                    }
-                }
-
-            connection.Close();
-            }
-
-        serv.Close();
-        }
-
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CheckIfNameModifiedL
-// ---------------------------------------------------------------------------
-EXPORT_C void 
-        CCmPluginBaseEng::CheckIfNameModifiedL( CCDRecordBase* aRecord ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CheckIfNameModifiedL" );
-
-    if ( !TPtrC(iIapRecord->iRecordName).CompareF( TPtrC(aRecord->iRecordName)) )
-        // names matche
-        {
-        return;
-        }
-    
-    aRecord->iRecordName.SetL( TPtrC(iIapRecord->iRecordName) );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::IAPRecordElementId
-// ---------------------------------------------------------------------------
-TMDBElementId CCmPluginBaseEng::IAPRecordElementId() const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::IAPRecordElementId" );
-    
-    return ( KCDMaskShowField & iIapRecord->ElementId() );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::IsProtected
-// ---------------------------------------------------------------------------
-TBool CCmPluginBaseEng::IsProtected() const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::IsProtected" );
-
-    return ( iIapRecord->Attributes() & ECDProtectedWrite );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::GetLocationIdL
-// ---------------------------------------------------------------------------
-TUint32 CCmPluginBaseEng::GetLocationIdL() const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetLocationIdL" );
-
-    TUint32 locId( 0 );
-    CMDBRecordSet<CCDLocationRecord>* locRS = 
-            new(ELeave) CMDBRecordSet<CCDLocationRecord>(KCDTIdLocationRecord);
-    CleanupStack::PushL( locRS );
-    
-    CCDLocationRecord* locRecord = static_cast<CCDLocationRecord *>
-                         (CCDRecordBase::RecordFactoryL(KCDTIdLocationRecord));
-
-    CleanupStack::PushL( locRecord );
-    locRecord->iRecordName.SetL( KLocationName );                                            
-    locRS->iRecords.AppendL( locRecord );
-    CleanupStack::Pop( locRecord );
-   
-    if ( locRS->FindL(Session()) )
-        {
-        locRecord = static_cast<CCDLocationRecord *>(locRS->iRecords[0]);
-        
-        locId = locRecord->RecordId();
-        }
-    else
-        {
-        CLOG_WRITE( "Loc id not found" );
-        User::Leave( KErrNotFound );
-        }
-        
-    CleanupStack::PopAndDestroy( locRS );
-        
-    return locId;
-    }            
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CheckForCommonAttribute
-// ---------------------------------------------------------------------------
-TUint32 
-    CCmPluginBaseEng::CheckForCommonAttribute( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CheckForCommonAttribute" );
-
-    TUint32 convAttr( aAttribute );
-    
-    if ( iPriv->iCommonConvTblArray.Count() &&
-        aAttribute > ECmCommonAttributesStart &&
-        aAttribute < ECmCommonAttributesEnd )
-        {
-        for ( TInt i = 0; i < iPriv->iCommonConvTblArray.Count(); ++i )
-            {
-            const TCmCommonAttrConvArrayItem* convArray = 
-                                                iPriv->iCommonConvTblArray[i];
-            for ( TInt item = 0; convArray[item].iCommonAttribId; ++item )
-                {
-                if ( convArray[item].iCommonAttribId == aAttribute )
-                    {
-                    return convArray[item].iAttribId;
-                    }
-                }
-            }
-        }
-        
-    return convAttr;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CommonAttribute
-// ---------------------------------------------------------------------------
-/*TUint32 CCmPluginBaseEng::CommonAttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CommonAttribute" );
-
-    if ( iPriv->iCommonConvTblArray.Count() )
-        {
-        for ( TInt i = 0; i < iPriv->iCommonConvTblArray.Count(); ++i )
-            {
-            const TCmCommonAttrConvArrayItem* convArray = 
-                                                iPriv->iCommonConvTblArray[i];
-            for ( TInt item = 0; convArray[item].iCommonAttribId; ++item )
-                {
-                if ( convArray[item].iAttribId == aAttribute )
-                    {
-                    return convArray[item].iCommonAttribId;
-                    }
-                }
-            }
-        }
-        
-    User::Leave( KErrArgument );
-    
-    return 0;
-    }*/
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::FeatureSupported
-// ---------------------------------------------------------------------------
-EXPORT_C TBool CCmPluginBaseEng::FeatureSupported( TInt aFeature )
-    {
-#ifdef _IPV6_DISABLED
-    if( aFeature == KFeatureIdIPv6 )
-        {
-        return EFalse;
-        }
-#endif
-    return CCmManagerImpl::FeatureSupported( aFeature );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::GlobalBearerPriority
-// ---------------------------------------------------------------------------
-EXPORT_C TInt 
-    CCmPluginBaseEng::GlobalBearerPriority( const TDesC& aServiceType ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GlobalBearerPriority" );
-
-    return iCmMgr.GlobalBearerPriority( EFalse, aServiceType );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::GlobalUiBearerPriority
-// ---------------------------------------------------------------------------
-EXPORT_C TInt 
-    CCmPluginBaseEng::GlobalUiBearerPriority( const TDesC& aServiceType ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GlobalUiBearerPriority" );
-
-    return iCmMgr.GlobalBearerPriority( ETrue, aServiceType );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::SetProxyServerNameL
-// ---------------------------------------------------------------------------
-TBool CCmPluginBaseEng::SetProxyServerNameL( const TDesC& aProxyServer )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetProxyServerNameL" );
-
-    iProxyRecord->iServerName.SetL( aProxyServer );
-    if( !aProxyServer.Length() )
-        {
-        iProxyRecord->iPortNumber = 0;
-        iProxyRecord->iUseProxyServer = EFalse;
-        }
-    else
-        {
-        iProxyRecord->iUseProxyServer = ETrue;
-        }
-        
-    return ETrue;        
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::ConvTableItemL
-// ---------------------------------------------------------------------------
-EXPORT_C const TCmAttribConvTable* 
-                        CCmPluginBaseEng::ConvTableItem( TUint32 aAttribute )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::ConvTableItem" );
-
-    TInt i;
-    TCmAttrConvArrayItem* foundItem = ConversionTable( aAttribute );
-         
-    if( foundItem )
-        {
-        // From 2nd item, because the first one is for the range.            
-        for ( i = 1; foundItem->iConvTable[i].iAttribId; ++i )
-            {
-            if ( foundItem->iConvTable[i].iAttribId == aAttribute )
-                {
-                return &foundItem->iConvTable[i];
-                }
-            }
-        }
-    else
-        {
-        // I know that this is a not nice solution, but 
-        // I couldn't find any more inteligent way of adding
-        // ECmBearerSettingName to the array.
-        const TCmAttribConvTable* item = SUiTable;
-        
-        // This is a where use 
-        for ( i = 0; item[i].iAttribId; ++i )
-            {
-            if( item[i].iAttribId == aAttribute )
-                {
-                return &item[i];
-                }
-            }
-        }
-        
-    return NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::ConversionTable
-// ---------------------------------------------------------------------------
-TCmAttrConvArrayItem* 
-                CCmPluginBaseEng::ConversionTable( TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::ConversionTable" );
-
-    TCmAttrConvArrayItem* foundItem = NULL;
-    TInt i;
-    
-    for ( i = 0; i < iPriv->iConvTblArray->Count(); ++i )
-        {
-        TCmAttrConvArrayItem* item = (*iPriv->iConvTblArray)[i];
-        
-        if ( item->iConvTable[0].iAttribId <= aAttribute &&
-             item->iConvTable[0].iCommsDatId >= aAttribute )
-            {
-            foundItem = item;
-            break;
-            }
-        }
-        
-    return foundItem;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::FieldByAttributeL
-// ---------------------------------------------------------------------------
-CMDBElement& CCmPluginBaseEng::FieldByAttributeL( 
-                                            const TCmAttrConvArrayItem* aItem,
-                                            const TUint32 aAttribute,
-                                            TInt& aIndex ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::FieldByAttributeL" );
-
-    // From 2nd item, because the first one is for the range.            
-    for ( aIndex = 1; aItem->iConvTable[aIndex].iAttribId; ++aIndex )
-        {
-        if ( aItem->iConvTable[aIndex].iAttribId == aAttribute )
-            {
-            return *(*aItem->iRecord)->GetFieldByIdL( 
-                                      aItem->iConvTable[aIndex].iCommsDatId );
-            }
-        }
-        
-    User::Leave( KErrNotFound );
-    // Dead code
-    return *(CMDBElement*)1;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::SetDNSServerAddressL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::SetDNSServerAddressL( TUint32 aSrv1Attr,
-                                                      const TDesC& aSrv1,
-                                                      TUint32 aSrv2Attr,
-                                                      const TDesC& aSrv2,
-                                                      TUint32 aAddrFromSrvAttr,
-                                                      TBool aIPv6 )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetDNSServerAddressL" );
-
-    TBool undef1;
-    TBool undef2;
-    TPtrC dynamic;
-    
-    if( aIPv6 )
-        // IPv6
-        {
-        undef1 = ClassifyIPv6Address( aSrv1 ) == EIPv6Unspecified;
-        undef2 = ClassifyIPv6Address( aSrv2 ) == EIPv6Unspecified;
-        
-        dynamic.Set( KDynamicIpv6Address );
-        }
-    else
-        {
-        undef1 = IsUnspecifiedIPv4Address( aSrv1 );
-        undef2 = IsUnspecifiedIPv4Address( aSrv2 );
-        
-        dynamic.Set( KUnspecifiedIPv4 );
-        }
-        
-    if( undef1 )
-        {
-        SetStringAttributeL( aSrv1Attr, aSrv2 );
-        SetStringAttributeL( aSrv2Attr, dynamic );
-        
-        SetBoolAttributeL( aAddrFromSrvAttr, undef2 );
-        }
-    else
-        {
-        SetStringAttributeL( aSrv1Attr, aSrv1 );
-        SetStringAttributeL( aSrv2Attr, aSrv2 );
-
-        SetBoolAttributeL( aAddrFromSrvAttr, EFalse );
-        }        
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CheckDNSServerAddressL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::CheckDNSServerAddressL( TBool aIPv6,
-                                                        CMDBField<TDesC>& aDNS1,
-                                                        CMDBField<TDesC>& aDNS2,
-                                                        CMDBField<TBool>& /*aDNSFromServer*/ )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CheckDNSServerAddressL" );
-
-    // aDNSFromServer is commented out because the API must not set this
-    // field any more. It is only set from the UI
-    if( !(aDNS1.ElementId() & KCDChangedFlag) &&
-        !(aDNS2.ElementId() & KCDChangedFlag) )
-        // No change
-        {
-        return;
-        }
-
-    if( aIPv6 )
-        {
-        if( ClassifyIPv6Address( aDNS1 ) == EIPv6Unspecified )
-            {
-            if( ClassifyIPv6Address( aDNS2 ) != EIPv6Unspecified )
-                {
-                aDNS1.SetL( aDNS2 );
-                aDNS2.SetL( KDynamicIpv6Address );
-                }
-            }
-        }
-    else // IPv4
-        {
-        if( IsUnspecifiedIPv4Address( aDNS1 ) )
-            {
-            if( !IsUnspecifiedIPv4Address( aDNS2 ) )
-                {
-                aDNS1.SetL( aDNS2 );
-                aDNS2.SetL( KUnspecifiedIPv4 );
-                }
-            }
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CheckSpaceBelowCriticalLevelL
-// ---------------------------------------------------------------------------
-//
-TBool CCmPluginBaseEng::CheckSpaceBelowCriticalLevelL() const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CheckSpaceBelowCriticalLevelL" );
-
-    // OOD handling. If disk space is low user is notified.
-    RFs fs;
-    User::LeaveIfError( fs.Connect() );
-    CleanupClosePushL<RFs>( fs );
-    
-    // Checks the FFS space "after" addition
-    TBool belowCL = SysUtil::FFSSpaceBelowCriticalLevelL
-            ( &fs, KEstimatedOverhead );
-    
-    CleanupStack::PopAndDestroy(); // fs
-    
-    if( belowCL )
-        {
-        // Raise a dialog to notify the user.
-        TCmCommonUi::ShowMemoryFullConfirmationQueryL();
-        // It must leave because it is the only way to notify the caller about
-        // the operation failed. (Its caller does not return indicator.)
-        // KLeaveWithoutAlert means no more dialog will raise
-        User::Leave( KLeaveWithoutAlert );
-        }
-        
-    // Return value keept to have a suitable API    
-    return belowCL;    
-    
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmPluginBaseEng::IncrementRefCounter
-// -----------------------------------------------------------------------------
-void CCmPluginBaseEng::IncrementRefCounter()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::IncrementRefCounter" );
-
-    iRefCounter++;
-    }
-// -----------------------------------------------------------------------------
-// CCmPluginBaseEng::DecrementRefCounter
-// -----------------------------------------------------------------------------
-void CCmPluginBaseEng::DecrementRefCounter()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::DecrementRefCounter" );
-
-    iRefCounter--;
-    }
-// -----------------------------------------------------------------------------
-// CCmPluginBaseEng::GetRefCounter
-// -----------------------------------------------------------------------------
-TInt CCmPluginBaseEng::GetRefCounter()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetRefCounter" );
-
-    return iRefCounter;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmPluginBaseEng::IdIsValid
-// -----------------------------------------------------------------------------
-TBool CCmPluginBaseEng::IdIsValid()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::IdIsValid" );
-
-    return iIdIsValid;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmPluginBaseEng::IdIsValid
-// -----------------------------------------------------------------------------
-void CCmPluginBaseEng::SetIdValidity(TBool validity)
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetIdValidity" );
-
-    iIdIsValid = validity;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmPluginBaseEng::GetRefCounter
-// -----------------------------------------------------------------------------
-void CCmPluginBaseEng::GenericStringWriterL( const TUint32 aAttribute, 
-                                             const TDesC16& aValue )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GenericStringWriterL" );
-
-    TUint32 attribute = CheckForCommonAttribute( aAttribute );
-    CMDBField<TDesC>* field;
-    
-    TValidationFunctionL func = 
-                FindFieldL( attribute, ECmText, (CMDBElement*&)field );
-    
-    if( func )
-        {
-        func( this, attribute, (const TAny*)&aValue );
-        }
-        
-    field->SetL( aValue );    
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::MappedCommonAttribute
-// ---------------------------------------------------------------------------
-TUint32 
-    CCmPluginBaseEng::MappedCommonAttribute( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::MappedCommonAttribute" );
-
-    TUint32 convAttr( aAttribute );
-    
-    if ( iPriv->iCommonConvTblArray.Count() )
-        {
-        for ( TInt i = 0; i < iPriv->iCommonConvTblArray.Count(); ++i )
-            {
-            const TCmCommonAttrConvArrayItem* convArray = 
-                                                iPriv->iCommonConvTblArray[i];
-            for ( TInt item = 0; convArray[item].iCommonAttribId; ++item )
-                {
-                if ( convArray[item].iAttribId == aAttribute )
-                    {
-                    return convArray[item].iCommonAttribId;
-                    }
-                }
-            }
-        }
-        
-    return convAttr;
-    }
-//-----------------------------------------------------------------------------
-// CCmPluginBaseEng::ParentDestination
-// -----------------------------------------------------------------------------
-EXPORT_C CCmDestinationImpl* CCmPluginBaseEng::ParentDestination() const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::ParentDestination" );
-
-    if (iParentDest)
-        {
-        CCmDestinationImpl* parentDest = NULL;
-        TRAPD( err, parentDest = iCmMgr.DestinationL( iParentDest ) );
-        if ( !err )
-            {
-            return parentDest;
-            }
-        }
-    
-    return NULL;
-    }
-   
-//-----------------------------------------------------------------------------
-// CCmPluginBaseEng::GetAdditionalUids
-// -----------------------------------------------------------------------------
-EXPORT_C void CCmPluginBaseEng::GetAdditionalUids( RArray<TUint32>& /*aIapIds*/ )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetAdditionalUids" );
-    }
-
-//-----------------------------------------------------------------------------
-// CCmPluginBaseEng::SetPreDefinedId
-// -----------------------------------------------------------------------------
-EXPORT_C void CCmPluginBaseEng::SetPreDefinedId( const TUint32 aPreDefId )
-	{
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetPreDefinedId" );
-
-	iPreDefIapId = aPreDefId;
-	}
-
--- a/cmmanager/cmmgr/Framework/Src/cmapplicationsettingsui.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Application Setting UI
-*
-*/
-
-#include "cmapplicationsettingsui.h"
-#include <cmmanager.h>
-#include "cmconnsettingsuiimpl.h"
-#include "cmmanager.hrh"
-
-using namespace CMManager;
-//-----------------------------------------------------------------------------
-//  CCmApplicationSettingsUi::NewL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C CCmApplicationSettingsUi* CCmApplicationSettingsUi::NewL()
-    {
-    CCmApplicationSettingsUi* self = new (ELeave) CCmApplicationSettingsUi();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );   // self
-    return self;
-    }
-    
-//-----------------------------------------------------------------------------
-//  CCmApplicationSettingsUi::NewLC()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C CCmApplicationSettingsUi* CCmApplicationSettingsUi::NewLC()
-    {
-    CCmApplicationSettingsUi* self = new (ELeave) CCmApplicationSettingsUi();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmApplicationSettingsUi::CCmApplicationSettingsUi()
-//-----------------------------------------------------------------------------
-//
-CCmApplicationSettingsUi::CCmApplicationSettingsUi()
-    {
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmApplicationSettingsUi::~CCmApplicationSettingsUi()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C CCmApplicationSettingsUi::~CCmApplicationSettingsUi()
-    {
-    delete iImpl;
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmApplicationSettingsUi::ConstructL()
-//-----------------------------------------------------------------------------
-//
-void CCmApplicationSettingsUi::ConstructL()
-    {
-    iImpl = CCmConnSettingsUiImpl::NewWithoutTablesL();
-    }
-    
-//-----------------------------------------------------------------------------
-//  CCmApplicationSettingsUi::RunSettingsL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C TBool CCmApplicationSettingsUi::RunApplicationSettingsL( 
-                                               TCmSettingSelection& aSelection )
-    {
-    TBearerFilterArray aFilterArray;
-    return iImpl->RunApplicationSettingsL(  aSelection,
-                                            EShowDefaultConnection | 
-                                            EShowDestinations | 
-                                            EShowConnectionMethods,
-                                            aFilterArray );
-    }    
-    
-//-----------------------------------------------------------------------------
-//  CCmApplicationSettingsUi::RunSettingsL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C TBool CCmApplicationSettingsUi::RunApplicationSettingsL( 
-                                        TCmSettingSelection& aSelection, 
-                                        TUint aListItems,
-                                        TBearerFilterArray& aFilterArray)
-    {
-    return iImpl->RunApplicationSettingsL(  aSelection,
-                                            aListItems,
-                                            aFilterArray );
-    }    
--- a/cmmanager/cmmgr/Framework/Src/cmapplicationsettingsuiimpl.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of application setting UI.
-*
-*/
-
-#include <coemain.h>
-#include <featmgr.h>
-#include <data_caging_path_literals.hrh>
-#include <AknsUtils.h>
-
-#include "cmapplicationsettingsui.h"
-#include <cmmanager.h>
-#include "cmmanagerimpl.h"
-#include <cmpluginbaseeng.h>
-#include "cmapplicationsettingsuiimpl.h"
-
-using namespace CMManager;
-
-typedef struct
-    {
-    TInt                iCmIapId;
-    TInt                iCmDefaultPriority;
-    }TCmListItem;
-
-//---------------------------------------------------------------------------
-//  CCmApplicationSettingsUiImpl::NewL
-//---------------------------------------------------------------------------
-//
-EXPORT_C CCmApplicationSettingsUiImpl* CCmApplicationSettingsUiImpl::NewL()
-    {
-    return NULL;
-    }
-
-
-//---------------------------------------------------------------------------
-//  CCmApplicationSettingsUiImpl::RunSettingsL()
-//---------------------------------------------------------------------------
-//
-EXPORT_C TBool CCmApplicationSettingsUiImpl::RunApplicationSettingsL( 
-                                          TCmSettingSelection& /*aSelection*/ )
-    {
-    return EFalse;
-    }    
-
--- a/cmmanager/cmmgr/Framework/Src/cmcommonui.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,687 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Defines common UI methods.
-*
-*/
-
-#include <aknlists.h>       // CAknDoubleLargeGraphicPopupMenuStyleListBox
-#include <aknPopup.h>       // CAknPopupList
-#include <AknQueryDialog.h>
-#include <aknnotedialog.h>
-#include <badesca.h>        // CDesCArray
-#include <e32def.h>
-#include <e32std.h>
-#include <eikfrlb.h>        // CEikFormattedCellListBox
-#include <eiklbm.h>         // ELbmDoesNotOwnItemArray
-#include <gulicon.h>
-#include <StringLoader.h>
-#include <cmmanager.rsg>
-
-#include <cmcommonconstants.h>
-#include <cmcommonui.h>
-#include "cmlogger.h"
-#include "cmmanagerimpl.h"
-#include "cmmanager.hrh"
-#include <cmconnectionmethoddef.h>
-
-using namespace CMManager;
-
-const TInt KDefaultListBoxFlags = 0;
-
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::CCmDesCArray::CCmDesCArray
-// ---------------------------------------------------------------------------
-//
-TCmCommonUi::CCmDesCArray::CCmDesCArray()
-    : CDesCArrayFlat( KCmArraySmallGranularity )
-    , iUids( KCmArraySmallGranularity )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::CCmDesCArray::~CCmDesCArray
-// ---------------------------------------------------------------------------
-//
-TCmCommonUi::CCmDesCArray::~CCmDesCArray()
-    {
-    iUids.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::CCmDesCArray::AppendL
-// ---------------------------------------------------------------------------
-//
-void TCmCommonUi::CCmDesCArray::AppendL( TUint aUid, const TDesC& aItem )
-    {
-    iUids.AppendL( aUid );
-    CDesCArray::AppendL( aItem );
-    }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::CCmDesCArray::Uid
-// ---------------------------------------------------------------------------
-//
-TUint TCmCommonUi::CCmDesCArray::Uid( TInt aIndex ) const
-    {
-    return iUids[ aIndex ];
-    }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowConfirmationQueryWithInputL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt TCmCommonUi::ShowConfirmationQueryWithInputL( TInt aResId, 
-                                                            TDes& aInput )
-    {
-    CLOG_ENTERFN_PTR( "ShowConfirmationQueryWithInputL" );
-    HBufC* prompt = CEikonEnv::Static()->AllocReadResourceAsDes16LC( aResId );
-    
-    CAknTextQueryDialog* dlg =
-                 CAknTextQueryDialog::NewL( aInput, CAknQueryDialog::ENoTone );
-    
-    // Handle the allowable enterable length of the text
-    CLOG_WRITE_1_PTR( NULL, "max length input: [%d   ]", aInput.MaxLength() );
-    dlg->SetMaxLength( aInput.MaxLength() );
-    
-    TInt retval = dlg->ExecuteLD( R_TEXT_QUERY, *prompt );
-    
-    CleanupStack::PopAndDestroy( prompt );
-    
-    return retval;
-    }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowConfirmationQueryL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt TCmCommonUi::ShowConfirmationQueryL( TInt aResId )
-    {
-    CLOG_ENTERFN_PTR( "ShowConfirmationQueryL" );
-    HBufC* prompt = CEikonEnv::Static()->AllocReadResourceL( aResId );
-
-    // Ownership (of 'prompt') is handed over to callee. That's why we don't
-    // bother with cleanup stack either - let it be the callee's problem.
-    return ShowConfirmationQueryL( prompt );
-    }    
-    
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowConfirmationQueryL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt TCmCommonUi::ShowConfirmationQueryL( TInt aResId, 
-                                                   const TDesC& aString )
-    {
-    CLOG_ENTERFN_PTR( "ShowConfirmationQueryL" );
-    HBufC* prompt = StringLoader::LoadL( aResId, aString );
-    
-    // Ownership (of 'prompt') is handed over to callee.
-    return ShowConfirmationQueryL( prompt );
-    }    
-    
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowAvailableMethodsL
-// ---------------------------------------------------------------------------
-//
-TUint32 TCmCommonUi::ShowAvailableMethodsL(
-                                    const RArray<TUint32>& aAvailableBearers,
-                                    const CCmManagerImpl& aCmManager )
-    {
-    CLOG_ENTERFN_PTR( "ShowAvailableMethodsL" );
-
-    TUint32 retval = 0;
-
-    // Create listbox and popup list and perform some initialization on them.
-    CEikFormattedCellListBox* listBox =
-                    new (ELeave) CAknDoubleLargeGraphicPopupMenuStyleListBox();
-    CleanupStack::PushL( listBox );
-    
-    CAknPopupList* popupList =
-         CAknPopupList::NewL( listBox,
-                              R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT,
-                              AknPopupLayouts::EMenuDoubleLargeGraphicWindow );
-    CleanupStack::PushL( popupList );
-
-    listBox->ConstructL( popupList, KDefaultListBoxFlags );
-    listBox->CreateScrollBarFrameL( ETrue );
-    listBox->ScrollBarFrame()->SetScrollBarVisibilityL(
-                                                   CEikScrollBarFrame::EOff,
-                                                   CEikScrollBarFrame::EAuto );
-
-    // Create the icon and item text arrays.
-    CArrayPtr<CGulIcon>* icons =
-                new(ELeave) CArrayPtrFlat<CGulIcon>( KCmArraySmallGranularity );
-    CleanupStack::PushL( icons );
-
-    CCmDesCArray* itemArray = new (ELeave) CCmDesCArray();
-    listBox->Model()->SetItemTextArray( itemArray );
-    // just to be on the safe side: next line is not mandatory, but advisable
-    listBox->Model()->SetOwnershipType( ELbmOwnsItemArray );
-
-    // Note: we don't have to put 'itemArray' on to the cleanup stack, as the
-    // model has already taken this object over.
-
-    // Fill up the arrays
-    for ( TInt i = 0; i < aAvailableBearers.Count(); i++ )
-        {
-        TUint32 bearerUid = aAvailableBearers[i];
-
-        // Add icons to the icon array
-        CGulIcon* icon = (CGulIcon*)(aCmManager.GetBearerInfoIntL(
-                                                  bearerUid,
-                                                  ECmBearerAvailableIcon ) );
-
-        if( !icon )
-            {
-            continue;
-            }
-                
-        CleanupStack::PushL( icon );
-        icons->AppendL( icon );
-        CleanupStack::Pop( icon );  // icon array took over ownership
-
-        // Add item text to the array.
-        // Query the name of the bearer first.
-        HBufC* firstLine = aCmManager.GetBearerInfoStringL(
-                                                  bearerUid,
-                                                  ECmBearerAvailableName );
-        CleanupStack::PushL( firstLine );
-
-        // Query the availability string of the bearer second.
-        HBufC* secondLine = aCmManager.GetBearerInfoStringL(
-                                                  bearerUid,
-                                                  ECmBearerAvailableText );
-        CleanupStack::PushL( secondLine );
-
-        // Third, combine these two strings along with an icon index.
-        HBufC* listBoxLine = FormattedTextForListBoxLC( i,
-                                                        *firstLine,
-                                                        *secondLine );
-
-        // Finally add the resulting string to the item array.
-        itemArray->AppendL( bearerUid, *listBoxLine );
-        
-        CLOG_WRITE_1_PTR( NULL, 
-                          "ShowAvailableMethodsL new listbox item: [%S]",
-                          listBoxLine );
-
-        // Clean-up: firstLine, secondLine, listBoxLine.
-        CleanupStack::PopAndDestroy( 3, firstLine );
-        }
-
-    // Handing over the ownership of the icon array to the listbox
-    listBox->ItemDrawer()->FormattedCellData()->SetIconArrayL( icons );
-    
-    CleanupStack::Pop( icons ); // ownership already handed over
-
-    // Set title
-    HBufC* title = StringLoader::LoadLC( R_CMWIZARD_AVAILABLE_METHODS );
-    popupList->SetTitleL( *title );
-    CleanupStack::PopAndDestroy( title );
-    
-    if ( popupList->ExecuteLD() )
-        {
-        retval = itemArray->Uid( listBox->CurrentItemIndex() );
-        }
-
-    CleanupStack::Pop( popupList ); // ExecuteLD has already destroyed it
-    CleanupStack::PopAndDestroy( listBox );
-
-    CLOG_WRITE_1_PTR( NULL, "ShowAvailableMethodsL exit, retval: [%d]", retval );
-
-    return retval;
-    }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::SelectBearerL
-// ---------------------------------------------------------------------------
-//
-TUint32 TCmCommonUi::SelectBearerL( const CCmManagerImpl& aCmManager )
-    {
-    CLOG_ENTERFN_PTR( "SelectBearerL" );
-    TUint32 retval = 0;
-
-    CEikFormattedCellListBox* listBox =
-                    new (ELeave) CAknSingleGraphicPopupMenuStyleListBox();
-    CleanupStack::PushL( listBox );
-    
-    CAknPopupList* popupList =
-         CAknPopupList::NewL( listBox,
-                              R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT,
-                              AknPopupLayouts::EMenuGraphicWindow );
-    CleanupStack::PushL( popupList );
-
-    listBox->ConstructL( popupList, KDefaultListBoxFlags );
-    listBox->CreateScrollBarFrameL( ETrue );
-    listBox->ScrollBarFrame()->SetScrollBarVisibilityL(
-                                                   CEikScrollBarFrame::EOff,
-                                                   CEikScrollBarFrame::EAuto );
-
-    RArray<TUint32> bearers( KCmArrayMediumGranularity );
-    CleanupClosePushL( bearers );
-    aCmManager.SupportedBearersL( bearers );
-    
-    TInt i;
-    
-    for ( i = 0; i < bearers.Count(); ++i )
-        {
-        if( !aCmManager.GetBearerInfoBoolL( bearers[i],
-                                            ECmBearerHasUi ) )
-            {
-            bearers.Remove( i );
-            --i;
-            }
-            
-        }
-
-    CArrayPtr<CGulIcon>* icons =
-              new(ELeave) CArrayPtrFlat<CGulIcon>( KCmArrayMediumGranularity );
-    CleanupStack::PushL( icons );
-
-    // Note: it's interesting that we, in fact, set up an *ordered* list of
-    // icons. Ordering of the icon array is based on the order of supported
-    // bearers.
-    for ( i = 0; i < bearers.Count(); ++i )
-        {
-        CGulIcon* icon = (CGulIcon*)(aCmManager.GetBearerInfoIntL(
-                                                bearers[i],
-                                                ECmBearerIcon ) );
-
-        if( !icon )
-            {
-            bearers.Remove( i );
-            --i;
-            continue;
-            }
-            
-        CleanupStack::PushL( icon );
-
-        icons->AppendL( icon );
-
-        CleanupStack::Pop( icon );  // icon array took over ownership
-        }
-
-    // Handing over the ownership of the icon array to the listbox
-    listBox->ItemDrawer()->FormattedCellData()->SetIconArrayL( icons );
-    
-    CleanupStack::Pop( icons ); // ownership already handed over
-
-    CCmDesCArray* itemArray = new (ELeave) CCmDesCArray();
-    listBox->Model()->SetItemTextArray( itemArray );
-    // just to be on the safe side: next line is not mandatory, but advisable
-    listBox->Model()->SetOwnershipType( ELbmOwnsItemArray );
-
-    // Note: we don't have to put 'itemArray' on to the cleanup stack, as the
-    // model has already taken this object over.
-
-    for ( TInt i = 0; i < bearers.Count(); i++ )
-        {
-        // Here we take advantage of the fact that our icon array is ordered.
-        // That is, the indices of the icons in the array will always be
-        // in sync with those in the item text array (i.e. each bearer will
-        // have the right icon associated with it).
-        HBufC* bearerName = aCmManager.GetBearerInfoStringL( bearers[i],
-                                                      ECmBearerSupportedName );
-        CleanupStack::PushL( bearerName );
-
-        HBufC* lineText = FormattedTextForListBoxLC( i, *bearerName );
-
-        itemArray->AppendL( bearers[i], *lineText );
-
-        CLOG_WRITE_1_PTR( NULL, "SelectBearerL new listbox item: [%S]",
-                               lineText );
-        
-        CleanupStack::PopAndDestroy( 2, bearerName ); // lineText, bearerName
-        }
-
-    CleanupStack::PopAndDestroy( &bearers );
-
-    // Set title
-    HBufC* title = StringLoader::LoadLC( R_CMWIZARD_SELECT_CONN_METHOD );
-    popupList->SetTitleL( *title );
-    CleanupStack::PopAndDestroy( title );
-    
-    if ( popupList->ExecuteLD() )
-        {
-        retval = itemArray->Uid( listBox->CurrentItemIndex() );
-        }
-
-    CleanupStack::Pop( popupList ); // ExecuteLD has already destroyed it
-    CleanupStack::PopAndDestroy( listBox );
-
-    CLOG_WRITE_1_PTR( NULL, "SelectBearerL exit, retval: [%d]", retval );
-
-    return retval;
-    }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowConfirmationQueryL
-// ---------------------------------------------------------------------------
-//
-TInt TCmCommonUi::ShowConfirmationQueryL( HBufC* aPrompt )
-    {
-    CLOG_ENTERFN_PTR( "ShowConfirmationQueryL" );
-
-    CleanupStack::PushL( aPrompt );
-    
-    CAknQueryDialog* dlg = 
-            CAknQueryDialog::NewL( CAknQueryDialog::EConfirmationTone );
-    TInt retval = dlg->ExecuteLD( R_CONFIRMATION_QUERY, *aPrompt );
-
-    CleanupStack::PopAndDestroy( aPrompt );
-
-    return retval;
-    }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowMemoryFullConfirmationQueryL
-// ---------------------------------------------------------------------------
-//
-TInt TCmCommonUi::ShowMemoryFullConfirmationQueryL()
-    {
-    CLOG_ENTERFN_PTR( "ShowMemoryFullConfirmationQueryL" );
-
-    //  need to check if EikonEnv exists in this context
-    CEikonEnv* eikPtr = CEikonEnv::Static();
-    TInt retval( KErrNone ); 
-    if( eikPtr )
-        {        
-        HBufC* prompt = eikPtr->AllocReadResourceL( R_QTN_MEMLO_MEMORY_FULL );        
-        CleanupStack::PushL( prompt );
-        CAknQueryDialog* dlg = 
-            CAknQueryDialog::NewL( CAknQueryDialog::EConfirmationTone );
-        retval = dlg->ExecuteLD( R_MEMORY_FULL_CONFIRMATION_QUERY, *prompt );
-        CleanupStack::PopAndDestroy( prompt );
-        }
-
-    return retval;
-    }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowNoteL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt TCmCommonUi::ShowNoteL( TInt aResId, TCmNoteType aNoteType )
-    {
-    CLOG_ENTERFN_PTR( "ShowNoteL" );
-    HBufC* prompt = CEikonEnv::Static()->AllocReadResourceLC( aResId );
-
-    TInt result = ShowNoteL( *prompt, aNoteType );
-
-    CleanupStack::PopAndDestroy( prompt );
-
-    return result;
-    }    
-    
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowNoteL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt TCmCommonUi::ShowNoteL( TInt aResId, const TDesC& aString,
-                                      TCmNoteType aNoteType )
-    {
-    CLOG_ENTERFN_PTR( "ShowNoteL" );
-    HBufC* prompt = StringLoader::LoadLC( aResId, aString );
-    
-    TInt result = ShowNoteL( *prompt, aNoteType );
-
-    CleanupStack::PopAndDestroy( prompt );
-
-    return result;
-    }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowNoteL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt TCmCommonUi::ShowNoteL( const TDesC& aPrompt, TCmNoteType aNoteType )
-    {
-    CLOG_ENTERFN_PTR( "ShowNoteL" );
-
-    CAknNoteDialog* dlg = new (ELeave) CAknNoteDialog(
-                             CAknNoteDialog::ENoTone,
-                             CAknNoteDialog::ELongTimeout );
-
-    TInt resId;
-    switch ( aNoteType )
-        {
-        case ECmOkNote:
-            {
-            resId = R_OK_NOTE;
-            break;
-            }
-        case ECmWarningNote:
-            {
-            resId = R_WARNING_NOTE;
-            break;
-            }
-        case ECmErrorNote:
-            {
-            resId = R_ERROR_NOTE;
-            break;
-            }
-        default:
-            {
-            resId = R_INFO_NOTE;
-            }
-        }
-
-    // no need to worry about LC (PrepareLC), RunLD takes care of it
-    dlg->PrepareLC( resId );
-    dlg->SetTextL( aPrompt );
-
-    return dlg->RunLD();
-    }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::FormattedTextForListBoxLC
-// ---------------------------------------------------------------------------
-//
-HBufC* TCmCommonUi::FormattedTextForListBoxLC( TInt aIconIndex,
-                                               const TDesC& aLineText )
-    {
-    HBufC* formattedString =
-                HBufC::NewL( KNumberOfStaticCharsIn1LineFormattedString +
-                             aLineText.Length() );
-
-    TPtr des = formattedString->Des();
-    des.AppendFormat( KSingleNumberAsString, aIconIndex );
-    des.Append( TChar( KSettingsListBoxItemPrefix ) );
-    des.Append( aLineText );
-
-    CleanupStack::PushL( formattedString );
-
-    return formattedString;
-    }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::FormattedTextForListBoxLC
-// ---------------------------------------------------------------------------
-//
-HBufC* TCmCommonUi::FormattedTextForListBoxLC( TInt aIconIndex,
-                                               const TDesC& aFirstLine,
-                                               const TDesC& aSecondLine )
-    {
-    HBufC* formattedString =
-                HBufC::NewL( KNumberOfStaticCharsIn2LineFormattedString +
-                             aFirstLine.Length() +
-                             aSecondLine.Length() );
-
-    TPtr des = formattedString->Des();
-    des.AppendFormat( KSingleNumberAsString, aIconIndex );
-    des.Append( TChar( KSettingsListBoxItemPrefix ) );
-    des.Append( aFirstLine );
-    des.Append( TChar( KSettingsListBoxItemPrefix ) );
-    des.Append( aSecondLine );
-
-    CleanupStack::PushL( formattedString );
-
-    return formattedString;
-    }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::FormattedTextForListBoxLC
-// ---------------------------------------------------------------------------
-//
-HBufC* TCmCommonUi::FormattedTextForListBoxLC( TInt aIconIndex,
-                                               TInt aFirstLineResId,
-                                               TInt aSecondLineResId )
-    {
-    HBufC* secondLine = StringLoader::LoadLC( aSecondLineResId );
-
-    HBufC* formattedString = FormattedTextForListBoxL( aIconIndex,
-                                                       aFirstLineResId,
-                                                       *secondLine );
-
-    CleanupStack::PopAndDestroy( secondLine );
-
-    CleanupStack::PushL( formattedString );
-
-    return formattedString;
-    }
-
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::FormattedTextForListBoxLC
-// ---------------------------------------------------------------------------
-//
-HBufC* TCmCommonUi::FormattedTextForListBoxLC( TInt aIconIndex,
-                                               TInt aFirstLineResId,
-                                               TInt aSecondLineResId,
-                                               TInt aReplacementInSecondLine )
-    {
-    HBufC* secondLine = StringLoader::LoadLC( aSecondLineResId,
-                                              aReplacementInSecondLine );
-
-    HBufC* formattedString = FormattedTextForListBoxL( aIconIndex,
-                                                       aFirstLineResId,
-                                                       *secondLine );
-
-    CleanupStack::PopAndDestroy( secondLine );
-
-    CleanupStack::PushL( formattedString );
-
-    return formattedString;
-    }
-
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::FormattedTextForListBoxL
-// ---------------------------------------------------------------------------
-//
-HBufC* TCmCommonUi::FormattedTextForListBoxL( TInt aIconIndex,
-                                               TInt aFirstLineResId,
-                                               const TDesC& aSecondLine )
-    {
-    HBufC* firstLine = StringLoader::LoadLC( aFirstLineResId );
-    
-    HBufC* formattedString =
-                HBufC::NewL( KNumberOfStaticCharsIn2LineFormattedString +
-                             firstLine->Length() +
-                             aSecondLine.Length() );
-
-    TPtr des = formattedString->Des();
-    des.AppendFormat( KSingleNumberAsString, aIconIndex );
-    des.Append( TChar( KSettingsListBoxItemPrefix ) );
-    des.Append( *firstLine );
-    des.Append( TChar( KSettingsListBoxItemPrefix ) );
-    des.Append( aSecondLine );
-    
-    CleanupStack::PopAndDestroy( firstLine );
-
-    return formattedString;
-    }
-
-
-// --------------------------------------------------------------------------
-// TCmCommonUi::ShowPopupListL
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool TCmCommonUi::ShowPopupListL( const TDesC& aTitle,
-                                            CDesCArrayFlat* aTextItems,
-                                            CArrayPtr<CGulIcon>* aIconArray,
-                                            const TUint aSoftKeys,
-                                            TInt& aSelection )
-    {
-    TBool retVal ( EFalse );
-    
-    // Prepare the dialog
-    CEikFormattedCellListBox* list = NULL;
-    if ( aIconArray )
-        {
-        list = new ( ELeave ) CAknSingleGraphicPopupMenuStyleListBox;
-        }
-    else
-        {
-        list = new ( ELeave ) CAknSinglePopupMenuStyleListBox;
-        }
-        
-    CleanupStack::PushL( list );
-    
-    CAknPopupList* popupList = CAknPopupList::NewL(
-                                       list, aSoftKeys,
-                                       AknPopupLayouts::EMenuWindow );
-    CleanupStack::PushL( popupList );
-
-    // initialise listbox.
-    list->ConstructL( popupList, CEikListBox::ELeftDownInViewRect );
-    list->CreateScrollBarFrameL( ETrue );
-    list->ScrollBarFrame()->SetScrollBarVisibilityL(
-                                               CEikScrollBarFrame::EOff,
-                                               CEikScrollBarFrame::EAuto );
-                                               
-    // Handing over the ownership of the icon array to the listbox
-    if ( aIconArray )
-        {
-        list->ItemDrawer()->FormattedCellData()->SetIconArrayL( aIconArray );
-        }
-	
-	// Items
-    list->Model()->SetItemTextArray( aTextItems );
-   
-    // Title
-    popupList->SetTitleL( aTitle );
-    
-    // Show the dialog
-    if ( popupList->ExecuteLD() )
-        {
-        aSelection = list->CurrentItemIndex();
-        retVal = ETrue;
-        }
-
-    CleanupStack::Pop( popupList );
-    CleanupStack::PopAndDestroy( list );
-    
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// TCmCommonUi::ShowAlwaysAskNoteL
-// ---------------------------------------------------------------------------
-//
-TBool TCmCommonUi::ShowAlwaysAskNoteL( TCmDefConnValue aOldDefConn,
-                                        CCmManagerImpl& aCmManagerImpl )
-    {
-    TCmDefConnValue newConn;
-    aCmManagerImpl.ReadDefConnL( newConn );
-    if ( newConn != aOldDefConn )
-        {
-         ShowNoteL( R_CMMANAGERUI_CONF_DEFAULT_ALWAYS_ASK,
-                                                TCmCommonUi::ECmOkNote );
-        return ETrue;
-        }
-    return EFalse;
-    }
-   
-    
--- a/cmmanager/cmmgr/Framework/Src/cmcommsdatnotifier.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,168 +0,0 @@
-/*
-* Copyright (c) 2009- Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Listens for changes in one CommsDat table through CenRep.
-*
-*/
-
-#include <commsdat.h>
-#include <centralrepository.h>
-#include <cmcommonconstants.h>
-
-#include "cmcommsdatnotifier.h"
-#include "cmmanagerimpl.h"
-
-// Repository for CommsDat
-const TUid KCDCommsRepositoryId = { 0xCCCCCC00 };
-
-CCmCommsDatNotifier* CCmCommsDatNotifier::NewL( TUint32 aTableId )
-    {
-    CCmCommsDatNotifier* self = CCmCommsDatNotifier::NewLC( aTableId );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-CCmCommsDatNotifier* CCmCommsDatNotifier::NewLC( TUint32 aTableId )
-    {
-    CCmCommsDatNotifier* self = new( ELeave ) CCmCommsDatNotifier( aTableId );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-CCmCommsDatNotifier::~CCmCommsDatNotifier()
-    {
-    // Cancel outstanding request, if exists
-    if( iWatcher )
-        {
-        Cancel();
-        }
-    delete iRepository;
-    
-    DeleteCallBackArray();
-    
-    iWatcher = NULL;
-    }
-
-void CCmCommsDatNotifier::DeleteCallBackArray()
-    {
-    TInt count = iCallBackArray->Count();
-    TInt index( 0 );
-    while( count > 0 )
-        {
-        iCallBackArray->Delete( index );
-        iCallBackArray->Compress();
-        
-        count = iCallBackArray->Count();
-        }
-    
-    delete iCallBackArray;
-    iCallBackArray = NULL;
-    }
-
-CCmCommsDatNotifier::CCmCommsDatNotifier( TUint32 aTableId )
-        :
-        CActive( EPriorityStandard ),
-        iTableId( aTableId ),
-        iWatcher( NULL )
-    {
-    iRepository = NULL;
-    }
-
-void CCmCommsDatNotifier::ConstructL()
-    {
-    iCallBackArray = new (ELeave) CCmCallBackArray( KCmArrayBigGranularity );
-    
-    iRepository = CRepository::NewL( KCDCommsRepositoryId );
-    CActiveScheduler::Add( this );
-    }
-
-void CCmCommsDatNotifier::WatcherRegisterL( MCmCommsDatWatcher* aWatcher )
-    {
-    if( !aWatcher )
-        {
-        return;
-        }
-    
-    if( !iWatcher )
-        {
-        TInt err( RequestNotifications() );
-        User::LeaveIfError( err );
-        }
-    
-    iCallBackArray->AppendL( aWatcher );
-    
-    iWatcher = aWatcher;
-    }
-
-void CCmCommsDatNotifier::WatcherUnRegister( )
-    {
-    TInt index = iCallBackArray->Count();
-    index --;
-    
-    if (index >= 0)
-        {
-        iCallBackArray->Delete( index );
-        iCallBackArray->Compress();
-        }
-    
-    index = iCallBackArray->Count();
-    index --;
-    if (index >= 0)
-        {
-        iWatcher = (*iCallBackArray)[index];
-        }
-    else
-        {
-        iWatcher = NULL;
-        }
-    
-    if( !iWatcher )
-        {
-        Cancel();
-        }
-    }
-
-TInt CCmCommsDatNotifier::RequestNotifications()
-    {
-    TInt err = iRepository->NotifyRequest( iTableId, KCDMaskShowRecordType, iStatus );
-
-    if ( KErrNone == err )
-        {
-        SetActive();
-        }
-        
-    return err;
-    }
-
-void CCmCommsDatNotifier::DoCancel()
-    {
-    iRepository->NotifyCancel( iTableId, KCDMaskShowRecordType );
-    }
-
-void CCmCommsDatNotifier::RunL()
-    {
-    if ( iStatus.Int() < KErrNone )
-        {
-        return;
-        }
-
-    if ( iWatcher )
-        {
-        iWatcher->CommsDatChangesL();
-        
-        RequestNotifications();
-        }
-    }
-
-// End-of-file
--- a/cmmanager/cmmgr/Framework/Src/cmconnectionmethod.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,433 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of RCmConnectionMethod
-*
-*/
-
-// INCLUDES
-#include "cmmanagerimpl.h"
-#include <cmdestination.h>
-#include <cmpluginbase.h>
-#include <cmpluginbaseeng.h>
-#include <cmconnectionmethod.h>
-#include "cmdestinationimpl.h"
-
-using namespace CMManager;
-// ======== MEMBER FUNCTIONS ========
-
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::RCmConnectionMethod()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethod::RCmConnectionMethod(
-                                const RCmConnectionMethod& aItem)
-    : iImplementation( aItem.iImplementation )
-    {
-    iImplementation->IncrementRefCounter();
-    }
-
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::Close()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmConnectionMethod::Close()
-    {
-    if( !iImplementation )
-        {
-        return;
-        }
-
-    TRAP_IGNORE( iImplementation->CmMgr().RemoveCMFromPoolL(iImplementation) );
-    iImplementation = NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::~RCmConnectionMethod()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethod::~RCmConnectionMethod()
-    {
-    Close();
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::GetIntAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TUint32 
-            RCmConnectionMethod::GetIntAttributeL( TUint32 aAttribute ) const
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    return iImplementation->GetIntAttributeL( aAttribute );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::GetBoolAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool 
-            RCmConnectionMethod::GetBoolAttributeL( TUint32 aAttribute ) const
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    return iImplementation->GetBoolAttributeL( aAttribute );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::GetStringAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC* 
-            RCmConnectionMethod::GetStringAttributeL( TUint32 aAttribute ) const
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    return iImplementation->GetStringAttributeL( aAttribute );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::GetString8AttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC8* RCmConnectionMethod::GetString8AttributeL( TUint32 aAttribute ) const
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    return iImplementation->GetString8AttributeL( aAttribute );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::SetIntAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmConnectionMethod::SetIntAttributeL( TUint32 aAttribute, 
-                                                        TUint32 aValue )
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    if( iImplementation->GetBoolAttributeL( ECmProtected ) )
-        {
-        // Only clients with NetworkControl capability can modify
-        // protection setting!
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-
-    iImplementation->SetIntAttributeL( aAttribute, aValue );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::SetBoolAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmConnectionMethod::SetBoolAttributeL( TUint32 aAttribute, 
-                                                      TBool aValue )
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    if( iImplementation->GetBoolAttributeL( ECmProtected ) )
-        {
-        // Only clients with NetworkControl capability can modify
-        // protection setting!
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    iImplementation->SetBoolAttributeL( aAttribute, aValue );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::SetStringAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmConnectionMethod::SetStringAttributeL( TUint32 aAttribute, 
-                                                        const TDesC16& aValue )
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    if( iImplementation->GetBoolAttributeL( ECmProtected ) )
-        {
-        // Only clients with NetworkControl capability can modify
-        // protection setting!
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-
-    iImplementation->SetStringAttributeL( aAttribute, aValue );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::SetString8AttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmConnectionMethod::SetString8AttributeL( TUint32 aAttribute, 
-                                                         const TDesC8& aValue )
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    if( iImplementation->GetBoolAttributeL( ECmProtected ) )
-        {
-        // Only clients with NetworkControl capability can modify
-        // protection setting!
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    iImplementation->SetString8AttributeL( aAttribute, aValue );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::UpdateL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmConnectionMethod::UpdateL()
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    iImplementation->UpdateL();
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::DeleteL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmConnectionMethod::DeleteL()
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    if( iImplementation->GetBoolAttributeL( ECmProtected ) )
-        {
-        // Only clients with NetworkControl capability can delete
-        // this destination
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-            
-    // Check it's not connected
-    if ( iImplementation->GetBoolAttributeL( ECmConnected ) )
-        {
-        User::Leave( KErrInUse );
-        }
-
-    // Check it's not referenced by Virtual CM
-    if( iImplementation->GetBoolAttributeL( ECmIsLinked ) )
-        {
-        User::Leave( KErrLocked );
-        }
-
-    // Check that it's not the last CM in a destination which is
-    // referenced by Virtual CM
-    CCmDestinationImpl* destImpl = iImplementation->ParentDestination();
-    TUint32 destId ( 0 );
-    TUint32 count( 0 ); 
-    
-    if ( destImpl )
-        {
-        destId = destImpl->Id();
-        count = destImpl->ConnectionMethodCount();
-        }
-    delete destImpl;
-    destImpl = NULL;
-
-    if ( count  == 1 )
-        {
-        // The IAP is in destination and it's the last one
-            // for each IAP in CM manager
-            //   1. check if it is virtual
-            //      if not => goto 1.
-            //      if yes:
-            //      2. check if it links to the destination of this CM
-            //         if yes => carryOn = EFalse, ERROR
-            //         if not: carryOn = ETrue
-        TBool carryOn = ETrue;
-        
-        CommsDat::CMDBRecordSet<CommsDat::CCDIAPRecord>* iaps = iImplementation->CmMgr().AllIapsL();
-        CleanupStack::PushL( iaps );
-
-        // for each IAP in CM manager
-        for ( TInt i = KCmInitIndex; carryOn && i < iaps->iRecords.Count(); ++i )
-            {
-            CommsDat::CCDIAPRecord* rec = (*iaps)[i];
-            TUint32 bearerType = 0;
-
-            TRAP_IGNORE( bearerType = iImplementation->CmMgr().BearerTypeFromIapRecordL( rec ) );
-            if ( !bearerType )
-                {
-                continue;
-                }
-
-            // check if it is virtual
-            if ( iImplementation->CmMgr().GetBearerInfoBoolL( bearerType, ECmVirtual ) )
-                {
-                // check if it links to the current destination
-                CCmPluginBase* plugin = NULL;            
-                TRAP_IGNORE( plugin = iImplementation->CmMgr().GetConnectionMethodL( rec->RecordId() ) );
-
-                if ( !plugin )
-                    {
-                    continue;
-                    }
-
-                if ( plugin->IsLinkedToSnap( destId ) )
-                    {
-                    // the CM links to this destination, deletion not allowed
-                    carryOn = EFalse;
-                    }
-
-                delete plugin;
-                }
-            }
-
-        CleanupStack::PopAndDestroy( iaps );
-
-        if ( !carryOn )
-            {
-            User::Leave( KErrLocked );
-            }
-        }
-        
-    // ETrue = delete it. It doesn't matter how many referencies there are.
-    TBool deleteRes = iImplementation->DeleteL( ETrue );
-    if( deleteRes )
-        {
-        CCmDestinationImpl* dest = iImplementation->ParentDestination();
-        if( dest )
-            {
-            CCmPluginBase* connMethod = new (ELeave) 
-                                    CCmPluginBase(iImplementation);
-            CleanupStack::PushL( connMethod );        
-            dest->ConnectionMethodDeletedL( *connMethod );
-            CleanupStack::PopAndDestroy(connMethod);//deletes iImplementation
-            iImplementation = NULL;
-            }
-        delete dest;
-        }
-        
-    return deleteRes;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::Destination()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmDestination RCmConnectionMethod::DestinationL() const
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }        
-    if (!iImplementation->Destination())
-        {
-        User::Leave(KErrNotSupported);
-        }
-    
-    RCmDestination dest;
-    dest.iDestinatonData = 
-                iImplementation->Destination()->GetData();
-    dest.iDestinatonData->IncrementRefCounter();
-    return dest;
-    }
-// --------------------------------------------------------------------------
-// RCmConnectionMethod::RCmConnectionMethod
-// --------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethod::RCmConnectionMethod()
-    : iImplementation( NULL )
-    {
-    }
-
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::operator=()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethod& RCmConnectionMethod::operator=(
-                                const RCmConnectionMethod& aConnMethod)
-    {
-    if (this != &aConnMethod) 
-        {
-        Close();
-        iImplementation = aConnMethod.iImplementation;
-        iImplementation->IncrementRefCounter();
-        }
-    return *this;
-    }
-
-// --------------------------------------------------------------------------
-// RCmConnectionMethod::operator==
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmConnectionMethod::operator==( 
-                                    RCmConnectionMethod& aConnMethod ) const
-    {
-    return ( iImplementation == aConnMethod.iImplementation );
-    };
-
-
-// --------------------------------------------------------------------------
-// RCmConnectionMethod::operator!=
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmConnectionMethod::operator!=( 
-                                    RCmConnectionMethod& aConnMethod ) const
-    {
-    return !( iImplementation == aConnMethod.iImplementation );
-    };
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::CreateCopyL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethod RCmConnectionMethod::CreateCopyL()
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    RCmConnectionMethod cm;
-
-    cm.iImplementation = iImplementation->CreateCopyL();
-    cm.iImplementation->CmMgr().InsertConnectionMethodL(cm.iImplementation);
-
-    return cm;
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmconnectionmethodext.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,438 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of RCmConnectionMethodExt
-*
-*/
-
-// INCLUDES
-#include "cmmanagerimpl.h"
-#include <cmdestinationext.h>
-#include <cmpluginbase.h>
-#include <cmconnectionmethodext.h>
-#include "cmdestinationimpl.h"
-
-using namespace CMManager;
-// ======== MEMBER FUNCTIONS ========
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::RCmConnectionMethodExt()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethodExt::RCmConnectionMethodExt(
-                                const RCmConnectionMethodExt& aItem)
-    : iImplementation( aItem.iImplementation )
-    {
-    iImplementation->IncrementRefCounter();
-    }
-
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::Close()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmConnectionMethodExt::Close()
-    {
-    if( !iImplementation )
-        {
-        return;
-        }
-
-    TRAP_IGNORE( iImplementation->CmMgr().RemoveCMFromPoolL(iImplementation) );
-    iImplementation = NULL;
-    }
-
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::CreateCopyL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethodExt RCmConnectionMethodExt::CreateCopyL()
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    RCmConnectionMethodExt cm;
-    
-    cm.iImplementation = iImplementation->CreateCopyL();
-
-    cm.iImplementation->CmMgr().InsertConnectionMethodL(cm.iImplementation);
-    
-    return cm;
-    }
-    
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::GetIntAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TUint32 
-            RCmConnectionMethodExt::GetIntAttributeL( TUint32 aAttribute ) const
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    return iImplementation->GetIntAttributeL( aAttribute );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::GetBoolAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool 
-           RCmConnectionMethodExt::GetBoolAttributeL( TUint32 aAttribute ) const
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    
-    return iImplementation->GetBoolAttributeL( aAttribute );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::GetStringAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC* 
-        RCmConnectionMethodExt::GetStringAttributeL( TUint32 aAttribute ) const
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    
-    return iImplementation->GetStringAttributeL( aAttribute );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::GetString8AttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC8* 
-        RCmConnectionMethodExt::GetString8AttributeL( TUint32 aAttribute ) const
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    return iImplementation->GetString8AttributeL( aAttribute );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::SetIntAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmConnectionMethodExt::SetIntAttributeL( TUint32 aAttribute, 
-                                                        TUint32 aValue )
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    if( iImplementation->GetBoolAttributeL( ECmProtected ) )
-        {
-        // Only clients with NetworkControl capability can modify
-        // protection setting!
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-
-    iImplementation->SetIntAttributeL( aAttribute, aValue );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::SetBoolAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmConnectionMethodExt::SetBoolAttributeL( TUint32 aAttribute, 
-                                                         TBool aValue )
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    if( iImplementation->GetBoolAttributeL( ECmProtected ) )
-        {
-        // Only clients with NetworkControl capability can modify
-        // protection setting!
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    iImplementation->SetBoolAttributeL( aAttribute, aValue );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::SetStringAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void 
-            RCmConnectionMethodExt::SetStringAttributeL( TUint32 aAttribute, 
-                                                         const TDesC16& aValue )
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    if( iImplementation->GetBoolAttributeL( ECmProtected ) )
-        {
-        // Only clients with NetworkControl capability can modify
-        // protection setting!
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-
-    iImplementation->SetStringAttributeL( aAttribute, aValue );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::SetString8AttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void 
-            RCmConnectionMethodExt::SetString8AttributeL( TUint32 aAttribute, 
-                                                          const TDesC8& aValue )
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    if( iImplementation->GetBoolAttributeL( ECmProtected ) )
-        {
-        // Only clients with NetworkControl capability can modify
-        // protection setting!
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    iImplementation->SetString8AttributeL( aAttribute, aValue );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::UpdateL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmConnectionMethodExt::UpdateL()
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    iImplementation->UpdateL();
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::DeleteL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmConnectionMethodExt::DeleteL()
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    if( iImplementation->GetBoolAttributeL( ECmProtected ) )
-        {
-        // Only clients with NetworkControl capability can delete
-        // this destination
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-
-    // Check it's not connected
-    if ( iImplementation->GetBoolAttributeL( ECmConnected ) )
-        {
-        User::Leave( KErrInUse );
-        }
-
-    // Check it's not referenced by Virtual CM
-    if( iImplementation->GetBoolAttributeL( ECmIsLinked ) )
-        {
-        User::Leave( KErrLocked );
-        }
-
-    // Check that it's not the last CM in a destination which is
-    // referenced by Virtual CM
-    CCmDestinationImpl* destImpl = iImplementation->ParentDestination();
-    TUint32 destId ( 0 );
-    TUint32 count( 0 ); 
-    
-    if ( destImpl )
-        {
-        destId = destImpl->Id();
-        count = destImpl->ConnectionMethodCount();
-        }
-    delete destImpl;
-    destImpl = NULL;
-
-    if ( count  == 1 )
-        {
-        // The IAP is in destination and it's the last one
-            // for each IAP in CM manager
-            //   1. check if it is virtual
-            //      if not => goto 1.
-            //      if yes:
-            //      2. check if it links to the destination of this CM
-            //         if yes => carryOn = EFalse, ERROR
-            //         if not: carryOn = ETrue
-        TBool carryOn = ETrue;
-        
-        CommsDat::CMDBRecordSet<CommsDat::CCDIAPRecord>* iaps = iImplementation->CmMgr().AllIapsL();
-        CleanupStack::PushL( iaps );
-
-        // for each IAP in CM manager
-        for ( TInt i = KCmInitIndex; carryOn && i < iaps->iRecords.Count(); ++i )
-            {
-            CommsDat::CCDIAPRecord* rec = (*iaps)[i];
-            TUint32 bearerType = 0;
-
-            TRAP_IGNORE( bearerType = iImplementation->CmMgr().BearerTypeFromIapRecordL( rec ) );
-            if ( !bearerType )
-                {
-                continue;
-                }
-
-            // check if it is virtual
-            if ( iImplementation->CmMgr().GetBearerInfoBoolL( bearerType, ECmVirtual ) )
-                {
-                // check if it links to the current destination
-                CCmPluginBase* plugin = NULL;            
-                TRAP_IGNORE( plugin = iImplementation->CmMgr().GetConnectionMethodL( rec->RecordId() ) );
-
-                if ( !plugin )
-                    {
-                    continue;
-                    }
-
-                if ( plugin->IsLinkedToSnap( destId ) )
-                    {
-                    // the CM links to this destination, deletion not allowed
-                    carryOn = EFalse;
-                    }
-
-                delete plugin;
-                }
-            }
-
-        CleanupStack::PopAndDestroy( iaps );
-
-        if ( !carryOn )
-            {
-            User::Leave( KErrLocked );
-            }
-        }
-
-    // ETrue = delete it. It doesn't matter how many referencies there are.
-    TBool deleteRes = iImplementation->DeleteL( ETrue );
-    if( deleteRes )
-        {
-        CCmDestinationImpl* dest = iImplementation->ParentDestination();
-        if( dest )
-            {
-            CCmPluginBase* connMethod = new (ELeave) 
-                                    CCmPluginBase(iImplementation);
-            CleanupStack::PushL( connMethod );        
-            dest->ConnectionMethodDeletedL( *connMethod );
-            CleanupStack::PopAndDestroy(connMethod);//deletes iImplementation
-            iImplementation = NULL;
-            }
-        delete dest;
-        }
-        
-    return deleteRes;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::Destination()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmDestinationExt RCmConnectionMethodExt::DestinationL() const
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }        
-    if (!iImplementation->Destination())
-        {
-        User::Leave(KErrNotSupported);
-        }
-    
-    RCmDestinationExt dest;
-    dest.iDestinatonData = 
-                iImplementation->Destination()->GetData();
-    dest.iDestinatonData->IncrementRefCounter();
-    return dest;
-    }
-// --------------------------------------------------------------------------
-// RCmConnectionMethod::RCmConnectionMethod
-// --------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethodExt::RCmConnectionMethodExt()
-    : iImplementation( NULL )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::~RCmConnectionMethodExt()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethodExt::~RCmConnectionMethodExt()
-    {
-    Close();
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::operator=()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethodExt& RCmConnectionMethodExt::operator=(
-                                const RCmConnectionMethodExt& aConnMethod)
-    {
-    if (this != &aConnMethod) 
-        {
-        Close();
-        iImplementation = aConnMethod.iImplementation;
-        iImplementation->IncrementRefCounter();
-        }
-    return *this;
-    }
-
-// --------------------------------------------------------------------------
-// RCmConnectionMethod::operator==
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmConnectionMethodExt::operator==( 
-                                    RCmConnectionMethodExt& aConnMethod ) const
-    {
-    return ( iImplementation == aConnMethod.iImplementation );
-    };
-
-
-// --------------------------------------------------------------------------
-// RCmConnectionMethod::operator!=
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmConnectionMethodExt::operator!=( 
-                                    RCmConnectionMethodExt& aConnMethod ) const
-    {
-    return !( iImplementation == aConnMethod.iImplementation );
-    };
--- a/cmmanager/cmmgr/Framework/Src/cmconnectionmethodinfo.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,315 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CCmConnectionMethodInfo
-*
-*/
-#include <cmpluginbase.h>
-#include "cmmanagerimpl.h"
-#include "cmlogger.h"
-#include "cmconnectionmethodinfo.h"
-
-using namespace CommsDat;
-
-// ======== LOCAL FUNCTIONS ========
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::CCmConnectionMethodInfo
-// ---------------------------------------------------------------------------
-//
-CCmConnectionMethodInfo::CCmConnectionMethodInfo( 
-                                                TCmPluginInitParam *aInitParam )
-    : CCmPluginBaseEng( aInitParam )
-    {
-    CLOG_CREATE;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CCmConnectionMethodInfo::ConstructL()
-    {
-    // Dummy bearer type
-    iBearerType = KDummyBearerType;
-    
-    CCmPluginBaseEng::ConstructL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::NewL
-// ---------------------------------------------------------------------------
-//
-CCmConnectionMethodInfo* 
-                CCmConnectionMethodInfo::NewL( TCmPluginInitParam *aInitParam )
-    {
-    CCmConnectionMethodInfo* self = CCmConnectionMethodInfo::NewLC( aInitParam );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::NewLC
-// ---------------------------------------------------------------------------
-//
-CCmConnectionMethodInfo* 
-                CCmConnectionMethodInfo::NewLC( TCmPluginInitParam *aInitParam )
-    {
-    CCmConnectionMethodInfo* self = 
-                            new( ELeave ) CCmConnectionMethodInfo( aInitParam );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::~CCmConnectionMethodInfo
-// ---------------------------------------------------------------------------
-//
-CCmConnectionMethodInfo::~CCmConnectionMethodInfo()
-    {
-    CLOG_CLOSE;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::GetConnectionInfoIntL
-// ---------------------------------------------------------------------------
-//
-TUint32 CCmConnectionMethodInfo::GetConnectionInfoIntL( const TUint32 aIapId, 
-                                                 const TUint32 aAttribute )
-    {
-    CCmPluginBase* plugin = CmMgr().GetConnectionMethodL( aIapId );
-    CleanupStack::PushL( plugin );
-     
-    if ( !plugin ) 
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    ResetAndLoadL( aIapId );
-        
-    TUint32 info = plugin->GetIntAttributeL( aAttribute );
-    CleanupStack::PopAndDestroy( plugin );
-
-    return info;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::GetConnectionInfoBoolL
-// ---------------------------------------------------------------------------
-//
-TBool CCmConnectionMethodInfo::GetConnectionInfoBoolL( const TUint32 aIapId, 
-                                                const TUint32 aAttribute )
-    {
-    CCmPluginBase* plugin = CmMgr().GetConnectionMethodL( aIapId );
-    CleanupStack::PushL( plugin );
-    
-    if ( !plugin ) 
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    ResetAndLoadL( aIapId );
-        
-	TBool info = plugin->GetBoolAttributeL( aAttribute );
-    CleanupStack::PopAndDestroy( plugin );
-    
-    return info;
-	}
-                                 
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::GetConnectionInfoStringL
-// ---------------------------------------------------------------------------
-//
-HBufC* 
-   CCmConnectionMethodInfo::GetConnectionInfoStringL( const TUint32 aIapId, 
-                                                      const TUint32 aAttribute )
-    {
-    CCmPluginBase* plugin = CmMgr().GetConnectionMethodL( aIapId );
-    CleanupStack::PushL( plugin );
-    
-    if ( !plugin ) 
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    ResetAndLoadL( aIapId );
-
-    HBufC* info = plugin->GetStringAttributeL( aAttribute );
-    CleanupStack::PopAndDestroy( plugin );
-    
-    return info;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::GetConnectionInfoStringL
-// ---------------------------------------------------------------------------
-//
-HBufC8* CCmConnectionMethodInfo::GetConnectionInfoString8L( 
-                                                     const TUint32 aIapId, 
-                                                     const TUint32 aAttribute )
-    {
-    CCmPluginBase* plugin = CmMgr().GetConnectionMethodL( aIapId );
-    CleanupStack::PushL( plugin );
-    
-    if ( !plugin ) 
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    ResetAndLoadL( aIapId );
-
-    HBufC8* info = plugin->GetString8AttributeL( aAttribute );
-    CleanupStack::PopAndDestroy( plugin );
-    
-    return info;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::RunSettingsL
-// ---------------------------------------------------------------------------
-//
-TInt CCmConnectionMethodInfo::RunSettingsL()
-    {
-    User::Leave( KErrNotSupported );
-    return KErrNotSupported;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::InitializeWithUiL
-// ---------------------------------------------------------------------------
-//
-TBool CCmConnectionMethodInfo::InitializeWithUiL( TBool /*aManuallyConfigure*/ )
-    {
-    User::Leave( KErrNotSupported );
-
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::CanHandleIapIdL
-// ---------------------------------------------------------------------------
-//
-TBool CCmConnectionMethodInfo::CanHandleIapIdL( TUint32 /*aIapId*/ ) const
-    {
-    User::Leave( KErrNotSupported );
-    
-    return EFalse;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::CanHandleIapIdL
-// ---------------------------------------------------------------------------
-//
-TBool CCmConnectionMethodInfo::CanHandleIapIdL( 
-                                            CCDIAPRecord* /*aIapRecord*/ ) const
-    {
-    User::Leave( KErrNotSupported );
-    
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::ServiceRecordIdLC
-// ---------------------------------------------------------------------------
-//
-void CCmConnectionMethodInfo::ServiceRecordIdLC( HBufC* &/*aBearerName*/, 
-                                         TUint32& /*aRecordId*/ )
-    {
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::BearerRecordIdLC
-// ---------------------------------------------------------------------------
-//
-void CCmConnectionMethodInfo::BearerRecordIdLC( HBufC* &/*aBearerName*/, 
-                                         TUint32& /*aRecordId*/ )
-    {
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::CreateNewServiceRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmConnectionMethodInfo::CreateNewServiceRecordL()
-    {
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::ResetAndLoadL
-// ---------------------------------------------------------------------------
-//
-void CCmConnectionMethodInfo::ResetAndLoadL( TUint32 aIapId )
-    {
-    if( iIapId != aIapId )
-        {
-        Reset();
-        LoadL( aIapId );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::CopyAdditionalDataL
-// ---------------------------------------------------------------------------
-//
-void CCmConnectionMethodInfo::CopyAdditionalDataL( CCmPluginBaseEng* /*aDestInst*/ )
-    {
-    User::Leave( KErrNotSupported );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::CreateInstanceL
-// ---------------------------------------------------------------------------
-//
-CCmPluginBaseEng* CCmConnectionMethodInfo::
-                CreateInstanceL( TCmPluginInitParam& /*aInitParam*/ ) const
-    {
-    User::Leave( KErrNotSupported );
-    
-    return NULL;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::CreateCopyL
-// ---------------------------------------------------------------------------
-//
-CCmPluginBaseEng* CCmConnectionMethodInfo::CreateCopyL() const
-    {
-    User::Leave( KErrNotSupported );
-    
-    return NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmConnectionMethodInfo::ResetIfInMemory
-// ---------------------------------------------------------------------------
-//
-void CCmConnectionMethodInfo::ResetIfInMemory( CCmPluginBaseEng* aCM )
-    {
-    TUint32 cmId = 0;
-    TRAPD( err, cmId = aCM->GetIntAttributeL( CMManager::ECmId ) );
-    if ( KErrNone == err )
-        {
-        if( cmId > 0 && iIapId == cmId )
-            {
-            Reset();
-            TRAP_IGNORE( LoadL( cmId ) );
-            }
-        }
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmconnselectrbpage.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,404 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of plugin base class
-*
-*/
-
-
-#include <cmmanager.rsg>
-#include <StringLoader.h>
-
-#include "cmconnselectrbpage.h"
-#include "cmmanager.hrh"
-#include "cmconnsettingsuiimpl.h"
-#include "cmlogger.h"
-
-using namespace CMManager;
-
-// ---------------------------------------------------------------------------
-// CCMConnSelectRBPage::CCMConnSelectRBPage
-// ---------------------------------------------------------------------------
-//
-CCMConnSelectRBPage::CCMConnSelectRBPage( TInt aDialogResourceId, 
-                                    TInt& aCurrentSelectionIndex, 
-                                    const MDesCArray* aItemArray, 
-                                    CCmManagerImpl& aCmManagerImpl, 
-                                    TCmDCSettingSelectionMode& aSelectionMode,
-                                    RArray<TUint32>& aDestinations,
-                                    TBool areDestinations,
-                                    TBool aOpenDestination,
-                                    TCoeContextName& aContext )
-    : CAknRadioButtonSettingPage( aDialogResourceId, 
-                                  aCurrentSelectionIndex, 
-                                  aItemArray )
-	, iDialogResourceId (aDialogResourceId)
-    , iCmManagerImpl( aCmManagerImpl )
-    , iSelectionMode( aSelectionMode )
-    , iDestinations( aDestinations )
-    , iAreDestinations( areDestinations )
-    , iOpenDestination( aOpenDestination )
-    , iHelpContext ( aContext )
-    {
-    CLOG_CREATE;
-    iPrevItem = iDestinations[aCurrentSelectionIndex];
-    }
-
-// ---------------------------------------------------------------------------
-// CCMConnSelectRBPage::~CCMConnSelectRBPage
-// ---------------------------------------------------------------------------
-//
-CCMConnSelectRBPage::~CCMConnSelectRBPage()
-    {
-    CLOG_CLOSE;    
-    }
-
-// ---------------------------------------------------------------------------
-// CCMConnSelectRBPage::OkToExitL
-// Good to know : EAknSoftkeyCancel is never called, because
-// EEikDialogFlagNotifyEsc flag is not set in the resource.
-// ---------------------------------------------------------------------------
-//
-TBool CCMConnSelectRBPage::OkToExitL( TInt aButtonId )
-    {
-    LOGGER_ENTERFN("CCMConnSelectRBPage::OkToExitL");
-
-    // Convert the button presses into commands for the appui & current
-    // view to handle
-    TBool retval( EFalse );
-    if ( aButtonId ==  EAknSoftkeyOk )
-        {
-        ProcessCommandL( ECmManagerUiCmdDestSelect );
-        retval = ETrue;        
-        }
-    else 
-        {
-        if ( aButtonId == EAknSoftkeyOptions )
-            {
-            //*iSelected = iListbox->CurrentItemUid();
-            //retval = ETrue;
-            DisplayMenuL();
-            retval = EFalse;  
-            }
-        else
-            {
-           	retval = ETrue;
-            }
-        }
-
-    return retval;
-    }
-
-// ---------------------------------------------------------------------------
-// CCMConnSelectRBPage::ProcessCommandL
-// ---------------------------------------------------------------------------
-//
-void CCMConnSelectRBPage::ProcessCommandL( TInt aCommandId )
-    {
-    LOGGER_ENTERFN("CCMConnSelectRBPage::ProcessCommandL");
-    
-    if ( MenuShowing() )
-        {
-        HideMenu();
-        }
-
-    switch ( aCommandId )
-        {
-        case EAknSoftkeyOptions:
-            {
-            DisplayMenuL();
-            break;
-            }
-
-        case EAknSoftkeyCancel:
-            {
-            AttemptExitL(EFalse);   
-            break;
-            }
-
-        case EAknSoftkeyOk:                   
-        case EAknSoftkeySelect:                   
-        case ECmManagerUiCmdDestSelect:
-            {
-            TUint selectedItem = 
-                    iDestinations[ ListBoxControl()->CurrentItemIndex() ];
-            if ( selectedItem == KDestItemAlwaysAsk )
-                {
-                iSelectionMode = EDCAlwaysAsk;
-                }
-            else if ( selectedItem == KDestItemAskOnce )
-                {
-                iSelectionMode = EDCAskOnce;
-                }
-            else if ( selectedItem == KDestItemDefaultConnection )
-                {
-                iSelectionMode = EDCDefaultConnection;
-                }
-            else if ( selectedItem == KDestItemUncategorized )
-                {
-                iSelectionMode = EDCConnectionMethod;
-                }
-            else 
-                {
-                if (iAreDestinations)
-                    {
-                    iSelectionMode = EDCDestination;
-                    }
-                else
-                    {
-                    iSelectionMode = EDCConnectionMethod;                        
-                    }    
-                }
-            //iId is to be defined in the caller class   
-            SelectCurrentItemL();         
-            AttemptExitL(ETrue);
-            break;
-            }
-
-        case ECmManagerUiCmdCMSelect:
-            {
-            iSelectionMode = EDCConnectionMethod;
-            SelectCurrentItemL();         
-            AttemptExitL( ETrue );                   
-            break;
-            }
-        case EAknCmdHelp:
-            {
-            HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
-                                    iEikonEnv->EikAppUi()->AppHelpContextL() );
-            }
-            break;
-        default:
-            {
-            break;
-            }
-        }
-    }    
-
-// ---------------------------------------------------------------------------
-// CCMConnSelectRBPage::DynInitMenuPaneL
-// ---------------------------------------------------------------------------
-//
-void CCMConnSelectRBPage::DynInitMenuPaneL( TInt aResourceId,
-                                         CEikMenuPane* aMenuPane )
-    {
-    LOGGER_ENTERFN("CCMConnSelectRBPage::DynInitMenuPaneL");
-
-    CAknSettingPage::DynInitMenuPaneL( aResourceId, aMenuPane );
-    if ( aResourceId == R_SELECT_NETW_CONN_MENU )
-        {
-    	if (!iCmManagerImpl.IsHelpOn())
-            {
-            aMenuPane->DeleteMenuItem( EAknCmdHelp );		    
-            }
-        TUint32 currentItem = 
-                    iDestinations[ ListBoxControl()->CurrentItemIndex() ];
-        
-        // Always Ask ( always the first item )
-        if ( (currentItem == KDestItemAlwaysAsk) || 
-             (currentItem == KDestItemAskOnce) || 
-             (currentItem == KDestItemDefaultConnection) ||
-              !iOpenDestination )
-            {
-            aMenuPane->SetItemDimmed( ECmManagerUiCmdCMSelect, ETrue );
-            }        
-        else if ( ( currentItem != KDestItemAlwaysAsk ) && 
-                  ( currentItem != KDestItemAskOnce ) && 
-                  ( currentItem != KDestItemDefaultConnection ) &&
-                  ( currentItem != KDestItemUncategorized ))
-            {
-            CCmDestinationImpl* destImpl = iCmManagerImpl.DestinationL( currentItem );
-            
-            if ( !destImpl->ConnectionMethodCount() )
-                {
-                aMenuPane->SetItemDimmed( ECmManagerUiCmdCMSelect, ETrue );                
-                }
-                
-            delete destImpl;
-            }
-        else
-            {
-            RArray<TUint32> uncatArray( KCmArraySmallGranularity );
-            CleanupClosePushL( uncatArray );
-            iCmManagerImpl.ConnectionMethodL( uncatArray );
-            
-            // Uncategorised - cannot be selected
-            if ( currentItem == KDestItemUncategorized )
-                {
-                aMenuPane->SetItemDimmed( ECmManagerUiCmdDestSelect, ETrue );
-                }
-            CleanupStack::PopAndDestroy( &uncatArray );
-            }
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCMConnSelectRBPage::OfferKeyEventL
-// ---------------------------------------------------------------------------
-//
-TKeyResponse CCMConnSelectRBPage::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                               TEventCode aType )    
-    {
-    LOGGER_ENTERFN("CCMConnSelectRBPage::OfferKeyEventL");
-    
-    TKeyResponse retVal ( EKeyWasNotConsumed );
-    // save for the future use
-    iPrevItem = iDestinations[ListBoxControl()->CurrentItemIndex()];
-    
-    switch ( aKeyEvent.iScanCode )
-        {
-        case EStdKeyDownArrow:
-        case EStdKeyUpArrow:
-            {
-            if ( iOpenDestination ) //only if we are on 'destination level' and we are able to
-                //open destinations
-                {            
-                // If focus is on the 'uncategorised' destination, 
-                // change the soft key to 'Open'
-                if ( iDestinations[ ListBoxControl()->CurrentItemIndex() ] == 
-                                                        KDestItemUncategorized )
-                    {
-                    HBufC* text = StringLoader::LoadLC( R_QTN_MSK_OPEN );
-                    Cba()->SetCommandL( EAknSoftkeySelect, *text );
-                    Cba()->DrawNow();
-                    CleanupStack::PopAndDestroy( text );                
-                    }
-                else
-                    {
-                    HBufC* text = StringLoader::LoadLC( R_QTN_MSK_SELECT );
-                    Cba()->SetCommandL( EAknSoftkeySelect, *text );
-                    Cba()->DrawNow();
-                    CleanupStack::PopAndDestroy( text );
-                    }
-                }
-            break;
-            }
-        default:
-            {
-            break;
-            }
-        }
-    retVal = CAknRadioButtonSettingPage::OfferKeyEventL( aKeyEvent, aType );
-    
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CCMConnSelectRBPage::GetHelpContext
-// --------------------------------------------------------------------------
-//
-void CCMConnSelectRBPage::GetHelpContext( TCoeHelpContext& aContext ) const
-    {
-    LOGGER_ENTERFN("CCMConnSelectRBPage::GetHelpContext");
-        
-    aContext.iMajor = KHelpUidPlugin;
-    aContext.iContext = iHelpContext; 
-    }
-
-// ---------------------------------------------------------------------------
-// CCMConnSelectRBPage::HandleListBoxEventL
-// ---------------------------------------------------------------------------
-//
-void CCMConnSelectRBPage::HandleListBoxEventL(CEikListBox* aListBox, 
-		MEikListBoxObserver::TListBoxEvent aEventType)
-	{
-    LOGGER_ENTERFN("CCMConnSelectRBPage::HandleListBoxEventL");
-        
-    if ( AknLayoutUtils::PenEnabled() )
-        {
-
-		if (iDialogResourceId == R_RADIO_BUTTON_SETTING_PAGE_OK_CANCEL)
-			{
-			// Call base class implementation and return if no options menu
-			CAknRadioButtonSettingPage::HandleListBoxEventL(aListBox, aEventType);
-		
-	    	switch ( aEventType )
-    	    	{
-        		case EEventEnterKeyPressed:
-        		case EEventItemDoubleClicked:
-        		case EEventItemSingleClicked:
-				case EEventItemClicked:        	
-            		{
-            		ProcessCommandL(ECmManagerUiCmdDestSelect);
-            		break;
-            		}
-
-        		default:
-	            	{
-    	        	break;
-            		}
-        		}
-			return;
-			}
-		
-        switch ( aEventType )
-            {
-            // All these actions are activating the listbox item
-            case MEikListBoxObserver::EEventEnterKeyPressed:
-            case MEikListBoxObserver::EEventItemActioned:
-                CAknRadioButtonSettingPage::HandleListBoxEventL(aListBox, aEventType);
-                break;
-
-            case MEikListBoxObserver::EEventItemClicked:
-            case MEikListBoxObserver::EEventItemSingleClicked:
-                if (iPrevItem == iDestinations[ListBoxControl()->CurrentItemIndex()])
-                    {
-                    ProcessCommandL(ECmManagerUiCmdDestSelect);
-                    }
-                else
-                    {
-                    // save for the later use
-                    iPrevItem = iDestinations[ListBoxControl()->CurrentItemIndex()];
-					    
-		            if ( iOpenDestination ) //only if we are on 'destination level' and we are able to
-        		        //open destinations
-                		{            
-                		// If focus is on the 'uncategorised' destination, 
-                		// change the soft key to 'Open'
-                		if ( iDestinations[ ListBoxControl()->CurrentItemIndex() ] == 
-		                                                        KDestItemUncategorized )
-        		            {
-                		    HBufC* text = StringLoader::LoadLC( R_QTN_MSK_OPEN );
-                    		Cba()->SetCommandL( EAknSoftkeySelect, *text );
-                    		Cba()->DrawNow();
-                    		CleanupStack::PopAndDestroy( text );                
-                    		}
-                		else
-                    		{
-                    		HBufC* text = StringLoader::LoadLC( R_QTN_MSK_SELECT );
-                    		Cba()->SetCommandL( EAknSoftkeySelect, *text );
-                    		Cba()->DrawNow();
-                    		CleanupStack::PopAndDestroy( text );
-                    		}
-                		CAknRadioButtonSettingPage::SelectCurrentItemL();
-                		}
-                	}
-                break;
-                
-            case MEikListBoxObserver::EEventItemDoubleClicked:
-                ProcessCommandL(ECmManagerUiCmdDestSelect);
-                break;
-
-            default:
-                CAknRadioButtonSettingPage::HandleListBoxEventL(aListBox, aEventType);            
-                break;
-            }
-        }
-    else
-        {
-        CAknRadioButtonSettingPage::HandleListBoxEventL(aListBox, aEventType);
-		}		
-	}
-
-
--- a/cmmanager/cmmgr/Framework/Src/cmconnsettingsuiimpl.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1163 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of application setting UI.
-*
-*/
-
-#include <coemain.h>
-#include <featmgr.h>
-#include <data_caging_path_literals.hrh>
-#include <StringLoader.h>
-#include <cmmanager.rsg>
-#include <AknsUtils.h>
-#include <ConnectionUiUtilities.h>
-
-
-#include <cmcommonconstants.h>
-#include "cmapplicationsettingsui.h"
-#include <cmmanager.h>
-#include "cmmanagerimpl.h"
-#include "cmdestinationimpl.h"
-#include "cmmanagerimpl.h"
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-#include "cmconnsettingsuiimpl.h"
-#include "cmconnselectrbpage.h"
-
-using namespace CMManager;
-
-typedef struct
-    {
-    TInt                iCmIapId;
-    TInt                iCmDefaultPriority;
-    }TCmListItem;
-
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::NewL
-//---------------------------------------------------------------------------
-//
-EXPORT_C CCmConnSettingsUiImpl* CCmConnSettingsUiImpl::NewL( CCmManagerImpl* aCCmManagerImpl )
-    {
-    CCmConnSettingsUiImpl* self = 
-                                new (ELeave) CCmConnSettingsUiImpl();
-    CleanupStack::PushL( self );
-    self->ConstructL( aCCmManagerImpl );
-    CleanupStack::Pop( self );   // self
-    return self;
-    }
-    
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::NewL
-//---------------------------------------------------------------------------
-//
-CCmConnSettingsUiImpl* CCmConnSettingsUiImpl::NewWithoutTablesL()
-    {
-    CCmConnSettingsUiImpl* self = 
-                                new (ELeave) CCmConnSettingsUiImpl();
-    CleanupStack::PushL( self );
-    self->iCreateTables = EFalse;
-    self->ConstructL( NULL );
-    CleanupStack::Pop( self );   // self
-    return self;
-    }    
-
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::TCmDCSettingSelection
-//---------------------------------------------------------------------------
-//
-CCmConnSettingsUiImpl::CCmConnSettingsUiImpl()
-    : iResourceReader( *CCoeEnv::Static() )
-    , iAreDestinations ( ETrue )
-    , iShowAlwaysAsk( EFalse )
-    , iShowEasyWlan( EFalse )
-    , iShowVirtualCMs( ETrue )
-    , iShowEmptyDestinations( EFalse )
-    , iShowAskOnce( EFalse )
-    , iShowUncat( EFalse )
-    , iShowDefConn( EFalse )
-    , iUsePassedDestinationArray( EFalse )
-    , iHelpContext ( KSET_HLP_APP_DEST_ASSOC_VIEW )
-    , iCreateTables( ETrue )
-    {
-    }
-
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::~TCmDCSettingSelection
-//---------------------------------------------------------------------------
-//
-CCmConnSettingsUiImpl::~CCmConnSettingsUiImpl()
-    {
-    if ( iOwnCmManager )
-        {
-        delete iCmManagerImpl;
-        }    
-    iResourceReader.Close();
-    iItems.Close();
-    iPassedDestinations.Close();
-    }
-
-//---------------------------------------------------------------------------
-// CCmConnSettingsUiImpl::LoadResourceL
-// Load the resource for the dll module
-//---------------------------------------------------------------------------
-//
-TInt CCmConnSettingsUiImpl::LoadResourceL ()
-    {    
-    // Add resource file.
-    TParse* fp = new(ELeave) TParse(); 
-    TInt err = fp->Set( KACMManagerResDirAndFileName, 
-                        &KDC_RESOURCE_FILES_DIR, 
-                        NULL ); 
-    if ( err != KErrNone)
-        {
-        User::Leave( err );
-        }   
-
-    TFileName resourceFileNameBuf = fp->FullName();
-    delete fp;
-
-    iResourceReader.OpenL( resourceFileNameBuf );
-    return err;
-    }
-
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::ConstructL()
-//---------------------------------------------------------------------------
-//
-void CCmConnSettingsUiImpl::ConstructL( CCmManagerImpl* aCCmManagerImpl )
-    {
-    iOwnCmManager = !(aCCmManagerImpl);
-    if ( iOwnCmManager )
-        {
-        if (iCreateTables)
-            {
-            iCmManagerImpl = CCmManagerImpl::NewL();            
-            }
-        else
-            {
-            iCmManagerImpl = CCmManagerImpl::NewL(EFalse);                            
-            }
-        }
-    else
-        {
-        iCmManagerImpl = aCCmManagerImpl;
-        }
-    LoadResourceL();
-    AknsUtils::SetAvkonSkinEnabledL( ETrue );
-    }
-
-//---------------------------------------------------------------------------
-// CCmConnSettingsUiImpl::ShowConnSelectRadioPageL
-//---------------------------------------------------------------------------
-//
-TBool CCmConnSettingsUiImpl::ShowConnSelectRadioPageL( 
-                                           TCmDCSettingSelection& aSelection, 
-                                           const TInt aTitleStringResource,
-                                           TBearerFilterArray& aFilterArray )
-    {
-    TBool retVal( EFalse );
-//    aSelection.iResult = EDCAlwaysAsk;
-
-    CDesCArrayFlat* items = 
-                    new ( ELeave ) CDesCArrayFlat( KCmArrayBigGranularity );
-    CleanupStack::PushL( items );
-    
-    if (iAreDestinations)
-        {
-        BuildDestinationArrayL( items, aFilterArray );        
-        }
-    else    
-        {
-        BuildCMArrayL( items, aFilterArray ); 
-               
-        }
-    // Uncategorized connection methods
-    RPointerArray<CCmPluginBase> uncatArray( KCmArraySmallGranularity );
-    CCmManagerImpl::CleanupResetAndDestroyPushL< RPointerArray<CCmPluginBase> >( uncatArray );
-    if ( iShowUncat )
-        {
-        BuildUncatArrayL( uncatArray, items,
-                    aFilterArray);
-        }
-    //appending items in reverse order of priority    
-    // Check if Ask Once should be shown 
-    if ( iShowAskOnce )
-        {
-        HBufC* buf = StringLoader::LoadLC( R_CMMANAGERUI_SETT_ASK_ONCE );
-        items->InsertL( 0, *buf );
-        iItems.InsertL( KDestItemAskOnce, 0 );
-        CleanupStack::PopAndDestroy( buf );    
-        }
-
-    // Check if Always Ask should be shown
-    if ( iShowAlwaysAsk )
-        {
-        HBufC* buf = StringLoader::LoadLC( R_CMMANAGERUI_SETT_ALWAYS_ASK );
-        items->InsertL( 0, *buf );
-        iItems.InsertL( KDestItemAlwaysAsk, 0 );
-        CleanupStack::PopAndDestroy( buf );    
-        }
-    // Check if Default Connection should be shown 
-    //feautre flag
-    if ( iCmManagerImpl->IsDefConnSupported() )
-        {
-        //client's selection
-        if ( iShowDefConn )
-            {
-            HBufC* buf = StringLoader::LoadLC( R_CMMANAGERUI_SETT_DEFAULT_CONNECTION );
-            items->InsertL( 0, *buf );
-            iItems.InsertL( KDestItemDefaultConnection, 0 );
-            CleanupStack::PopAndDestroy( buf );    
-            } 
-        }
-    if (!items->Count())
-        {
-        User::Leave(KErrConnectionNotFound);           
-        }
-    
-    TInt listIndex(0);
-    
-    if (iAreDestinations)
-        {
-        switch ( aSelection.iResult )
-                {
-                case EDCDestination:
-                    {
-                    TInt newIndex = iItems.Find(aSelection.iId);
-                    if (newIndex >=0)
-                        {
-                        listIndex = newIndex;
-                        }
-                    break;
-                    }
-                case EDCConnectionMethod:
-                    {
-                    TInt err(KErrNotFound);
-                    CCmPluginBase* cm = NULL;
-                    TRAP( err, cm = iCmManagerImpl->GetConnectionMethodL(aSelection.iId));
-                    if ( err == KErrNone )
-                        {
-                        // connection method is valid
-                        CleanupStack::PushL( cm );
-                        TUint32 parentId = 0;
-                        CCmDestinationImpl* parent = cm->ParentDestination();
-                        if (parent)
-                            {
-                            // it has a parent, get it's id
-                            parentId = parent->Id();
-                            delete parent;
-                            }
-                        else
-                            {
-                            // no parent means Uncategorised
-                            parentId = KDestItemUncategorized;
-                            }
-                        // get the index based on id    
-                        TInt tempIndex = iItems.Find( parentId );
-                        if ( tempIndex != KErrNotFound )
-                            {
-                            // found destination id in list
-                            listIndex = tempIndex;
-                            }                            
-                        CleanupStack::PopAndDestroy( cm );
-                        }
-                    break;
-                    }
-                case EDCDefaultConnection:
-                    {
-                    TInt newIndex = iItems.Find(KDestItemDefaultConnection);
-                    if (newIndex >=0)
-                        {
-                        listIndex = newIndex;
-                        }
-                    break;
-                    }
-                case EDCAlwaysAsk:
-                    {
-                    TInt newIndex = iItems.Find(KDestItemAlwaysAsk);
-                    if (newIndex >=0)
-                        {
-                        listIndex = newIndex;
-                        }
-                    break;
-                    }
-                case EDCAskOnce:
-                    {
-                    TInt newIndex = iItems.Find(KDestItemAskOnce);
-                    if (newIndex >=0)
-                        {
-                        listIndex = newIndex;
-                        }
-                    break;
-                    }                
-                default: // use default value (0)
-                    {
-                    break;
-                    }                            
-                }
-            }
-         else
-            {
-            if (aSelection.iResult == EDCConnectionMethod)
-                {
-                TInt newIndex = iItems.Find(aSelection.iId);
-                if (newIndex >=0)
-                    {
-                    listIndex = newIndex;
-                    }
-                }
-            }
-    
-    if ( aTitleStringResource == R_CMMANAGERUI_DEFAULT_CONNECTION_TITLE )
-        {
-        // It is not allowed to choose Connection Methods 
-        // in Default connection -dialog.
-        //
-        iOpenDestination = EFalse;
-        }
-    
-    if ( UserSelectionDlgL( listIndex, items, aSelection, 
-                            aTitleStringResource,
-                            iOpenDestination) )
-        {
-        // Handle selection
-        
-        switch ( aSelection.iResult )
-            {
-            case EDCConnectionMethod:
-                {
-                // from the first list?
-                if (!iAreDestinations)
-                    {
-                    aSelection.iId = iItems[listIndex];
-                    retVal = ETrue;                    
-                    }
-                else
-                    {
-                    // Uncategorised?
-                    TUint32 destId = iItems[ listIndex ];
-                    if ( destId == KDestItemUncategorized )
-                        {
-                        TBearerFilterArray emptyFilter;
-                        retVal = ShowConnectionMethodsL( uncatArray, 
-                                        aSelection, aTitleStringResource, emptyFilter );
-                        }
-                    else
-                        {
-                        RPointerArray<CCmPluginBase> cmArray ( KCmArrayMediumGranularity );
-                        if ( iShowVirtualCMs ) //create a flat list to show cms in embedded destinations
-                            {
-                            iCmManagerImpl->CreateFlatCMListLC( destId, cmArray);
-                            }
-                         else
-                            {
-                            //append only the cms in the destination
-                            iCmManagerImpl->AppendCmListLC( destId, cmArray ); 
-                            }
-                        retVal = ShowConnectionMethodsL( cmArray, 
-                                        aSelection, aTitleStringResource,
-                                        aFilterArray );
-                        CleanupStack::PopAndDestroy( &cmArray );
-                        }                    
-                    }
-                break;
-                }
-            case EDCDestination:
-                {
-                // Store the destination Id
-                aSelection.iId = iItems[listIndex];
-                retVal = ETrue;
-                break;
-                }
-            case EDCAlwaysAsk:
-                {
-                // nothing more to do
-                retVal = ETrue;
-                break;
-                }        
-            case EDCDefaultConnection:
-                {
-                // nothing more to do
-                retVal = ETrue;
-                break;
-                }            
-            case EDCAskOnce:
-                {
-                // nothing more to do
-                retVal = ETrue;
-                break;
-                }            
-            default:
-                {
-                break;
-                }
-            }
-        }
-
-    CleanupStack::PopAndDestroy( &uncatArray );
-    CleanupStack::PopAndDestroy( items );
-
-    return retVal;
-    }
-
-
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::RunSettingsL()
-//---------------------------------------------------------------------------
-//
-EXPORT_C TBool CCmConnSettingsUiImpl::RunApplicationSettingsL( 
-                                        TCmSettingSelection& aSelection, 
-                                        TUint aListItems,
-                                        TBearerFilterArray& aFilterArray)
-    {
-    iItems.Close();
-    iAreDestinations = ETrue;
-    if (!aListItems)
-        {
-        User::Leave(KErrArgument);        
-        }
-    if ( !iCmManagerImpl->IsDefConnSupported() &&
-         !(aListItems & EShowAlwaysAsk) &&  
-         !(aListItems & EShowConnectionMethods) &&  
-         !(aListItems & EShowDestinations) 
-         )
-        {
-        // default conn would be the only one but not supported
-        User::Leave(KErrNotSupported);   
-        }
-
-    if ( aListItems & EShowDefaultConnection )
-        {
-        EnableDefConn( ETrue );        
-        }
-    else
-        {
-        EnableDefConn( EFalse );                
-        }
-    if (aListItems & EShowAlwaysAsk)
-        {
-        EnableAlwaysAsk( ETrue );
-        }
-    else
-        {
-        EnableAlwaysAsk( EFalse );
-        }
-    if ( (aListItems & EShowConnectionMethods) && (aListItems & EShowDestinations) )
-        {
-        iOpenDestination = ETrue;
-        iShowUncat = ETrue;
-        }
-    else
-        {
-        iOpenDestination = EFalse;
-        }
-    if ( (aListItems & EShowConnectionMethods) && !(aListItems & EShowDestinations) )
-        {
-        iAreDestinations = EFalse;
-        GetCMArrayL( );            
-        }
-    else if ( aListItems & EShowDestinations )
-        {
-        if (iUsePassedDestinationArray)
-            {
-            // now fill up iItems
-            for( TInt i=0; i<iPassedDestinations.Count(); i++)
-                {
-                iItems.Append(iPassedDestinations[i]);
-                }
-            }
-        else
-            {
-            iCmManagerImpl->AllDestinationsL( iItems );
-            TInt i( 0 );
-            TInt count = iItems.Count();
-            for ( i=0; i < count; i++ )
-                {
-                if ( iItems[i] > 0 && iItems[i] < 255 )
-                    {
-                    CCmDestinationImpl* dest = 
-        	                            iCmManagerImpl->DestinationL( iItems[i] );
-                    CleanupStack::PushL( dest );
-        	        if ( dest->IsHidden() )
-                        {
-                        iItems.Remove(i);
-                        i--;
-                        count = count-1;
-                        }
-                    CleanupStack::PopAndDestroy();
-                    }
-                }
-            iItems.Compress();
-            }
-        }
-
-    TBool ret = EFalse;
-    TCmDCSettingSelection userDefSelection;
-
-    // convert selection
-    switch ( aSelection.iResult )
-        {
-        case EDestination: 
-            {
-            userDefSelection.iResult = EDCDestination; 
-            userDefSelection.iId = aSelection.iId;        
-            break;
-            }
-            
-        case EConnectionMethod: 
-            {
-            userDefSelection.iResult = EDCConnectionMethod; 
-            userDefSelection.iId = aSelection.iId;        
-            break;
-            }
-
-        case EDefaultConnection: 
-            {
-            userDefSelection.iResult = EDCDefaultConnection; 
-            userDefSelection.iId = 0;
-            break;
-            }
-
-        case EAlwaysAsk: 
-            {
-            userDefSelection.iResult = EDCAlwaysAsk; 
-            userDefSelection.iId = 0;
-            break;
-            }
-
-        default: 
-            {
-            // do not leave, perhaps there was no default selection
-            }                            
-        }
-    
-    
-    
-    if ( ShowConnSelectRadioPageL( userDefSelection, 
-            R_CMMANAGERUI_SETT_DESTINATION , aFilterArray))
-        {
-        switch ( userDefSelection.iResult )
-            {
-            case EDCDestination:
-                {
-                aSelection.iResult = EDestination;
-                aSelection.iId = userDefSelection.iId;
-                break;
-                }
-            case EDCConnectionMethod:
-                {
-                aSelection.iResult = EConnectionMethod;
-                aSelection.iId = userDefSelection.iId;
-                break;
-                }
-            case EDCDefaultConnection:
-                {
-                aSelection.iResult = EDefaultConnection;
-                aSelection.iId = 0;
-                break;
-                }
-            case EDCAlwaysAsk:
-                {
-                aSelection.iResult = EAlwaysAsk;
-                aSelection.iId = 0;
-                break;
-                }
-            default: //should not ever get here, unhandled branch
-                {
-                User::Leave( KErrGeneral );
-                break;
-                }                            
-            }
-        ret = ETrue;
-        }
-    else
-        {
-        ret = EFalse;
-        }
-    return ret;        
-    }    
-
-    
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::RunDefaultConnecitonRBPageL()
-//---------------------------------------------------------------------------
-//
-TBool CCmConnSettingsUiImpl::RunDefaultConnecitonRBPageL( 
-                                          TCmDCSettingSelection& aSelection )
-    {
-    iHelpContext = KSET_HLP_DEFAULT_CONN;
-    iItems.Close();
-    iOpenDestination = ETrue;
-    iCmManagerImpl->AllDestinationsL( iItems );
-    EnableAlwaysAsk( EFalse );
-    EnableAskOnce( EFalse );
-    EnableUncat( EFalse );
-    TBearerFilterArray aFilterArray;
-    iAreDestinations = ETrue;
-    iShowEmptyDestinations = ETrue;
-    return  ShowConnSelectRadioPageL( aSelection , 
-        R_CMMANAGERUI_DEFAULT_CONNECTION_TITLE, aFilterArray );
-    }
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::GetCMArrayL()
-//---------------------------------------------------------------------------
-//
-void CCmConnSettingsUiImpl::GetCMArrayL( )
-    {
-    iCmManagerImpl->ConnectionMethodL( iItems, ETrue, EFalse,EFalse, ETrue );
-    TInt count = iItems.Count();
-
-    if ( !iShowVirtualCMs )
-        {
-        // Don't show virtual CMs
-        for ( TInt i = 0; i < count; i++ )
-            {
-            if ( IsCmVirtualL( iItems[i] ) )
-                {
-                iItems.Remove( i );
-                count--;
-                i--;
-                }
-            }
-        }
-    }
-
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::BuildCMArrayL()
-//---------------------------------------------------------------------------
-//
-void CCmConnSettingsUiImpl::BuildCMArrayL( CDesCArrayFlat* aItems, 
-                                           TBearerFilterArray& aFilterArray )
-    {
-    // Add the New Connection Item        
-    for ( TInt i = 0; i < iItems.Count(); i++ )
-        {
-        CCmPluginBase* cm = NULL;
-        TInt err(KErrNone);
-        TRAP( err, cm = iCmManagerImpl->GetConnectionMethodL(iItems[i]));
-        if (err == KErrNoMemory)
-        {
-            User::Leave(KErrNoMemory);
-        }
-        else if (err != KErrNone)
-        {
-            continue;
-        }                            
-        CleanupStack::PushL( cm );
-        if (aFilterArray.Count())
-            {
-            TUint cmBearerType = cm->GetIntAttributeL( ECmBearerType );
-            if ( aFilterArray.Find( cmBearerType ) == KErrNotFound )
-                {
-                CleanupStack::PopAndDestroy( cm );            
-                iItems.Remove(i);
-                i--;
-                continue;    
-                }
-            }
-        // CM Iap Id
-        TUint32 cmId = cm->GetIntAttributeL( ECmId );
-                                
-        // Should virtual bearer types be shown?
-        if ( iShowVirtualCMs || !IsCmVirtualL( cmId ) )
-            {
-            // CM name
-            HBufC* cmName = cm->GetStringAttributeL( ECmName );
-            CleanupStack::PushL( cmName );
-            // embedded destination has a special text format
-            aItems->AppendL( *cmName );
-            CleanupStack::PopAndDestroy( cmName );
-            }
-        CleanupStack::PopAndDestroy( cm );            
-        }
-    }
-
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::BuildDestinationArray()
-//---------------------------------------------------------------------------
-//
-void CCmConnSettingsUiImpl::BuildDestinationArrayL( CDesCArrayFlat* aItems, 
-                                         TBearerFilterArray& aFilterArray )
-    {
-    /*
-     * The behavior of this function is as follow.
-     * 1. If aFilterArray.Count() == 0 (This just means no filter provided by user) then the function will
-     *    show all of available destinations (if iShowVirtualCMs == ETrue; Otherwise, destination with only
-     *    virtualCMs will be filted out) (default).
-     * 2. If aFilterArray.Count() != 0 then destination with only unavailable bearer-type IAPs will be 
-     *    filted out.
-     */
-    TInt count = iItems.Count();           
-    // Add the New Connection Item
-    for ( TInt i = 0; i < count; i++ )
-        {
-        // Get the destinations from their IDs
-        CCmDestinationImpl* dest = 
-                            iCmManagerImpl->DestinationL( iItems[i] );
-        CleanupStack::PushL( dest );
-
-        TInt cmCount = dest->ConnectionMethodCount();
-        TInt validCmCount = cmCount;
-        
-        if ( !iUsePassedDestinationArray )
-            {
-            // Check if empty destinations should be displayed
-            if ( !iShowVirtualCMs || aFilterArray.Count())
-                {            
-                for ( TInt j = 0; j < cmCount; j++ )
-                    {
-                    CCmPluginBase& cm = *dest->GetConnectionMethodL(j);
-                    // check if this destination only contains virtual CMs
-                    if (!iShowVirtualCMs)// See if the virtual CM (Default in case no filter provided by user)
-                        {
-                        // CM Iap Id
-                        TUint32 cmIapId = cm.GetIntAttributeL( ECmId );                
-                        // real CMs were found
-                        if ( IsCmVirtualL( cmIapId ) )
-                            {
-                            validCmCount--;
-                            continue;
-                            }
-                        // We can not break the loop with else case here
-                        // for cm might be filted out by aFilterArray
-                        }
-                    
-                    if (aFilterArray.Count()) // See if the CM is filtered out
-                        {                       
-                        TUint cmBearerType = cm.GetIntAttributeL( ECmBearerType );
-                        if ( aFilterArray.Find( cmBearerType ) == KErrNotFound )
-                            {
-                            validCmCount--;
-                            }
-                        else
-                            {
-                            break;//there is at least one CM in this dest    
-                            }                    
-                        }
-                    }
-                }
-            }
-        
-        // check if the destination should be omitted
-        // check if empty destinations should be displayed
-        
-        // We can use a destination to make a connection only
-        // if it contains something else than an empty embedded
-        // destination. Otherwise, consider it empty.
-        TBool canUseDestToConnect = dest->CanUseToConnectL();
-        
-        if ( iDestinationToOmit != iItems[i] && 
-                            ( ( validCmCount && canUseDestToConnect )
-                               || iShowEmptyDestinations ) )
-            {
-            // Check whether the MMS SNAP is in question. 
-            // It should not be shown on the UI in the destinations list
-            TInt snapMetadata = 0;
-            TRAPD( metaErr, snapMetadata = dest->MetadataL( CMManager::ESnapMetadataPurpose ));
-            if ( metaErr == KErrNone && snapMetadata == CMManager::ESnapPurposeMMS )
-                {
-                iItems.Remove(i);
-                count--;
-                i--;
-                }
-            else
-                {
-                HBufC* destName = dest->NameLC();
-
-                aItems->AppendL( *destName );
-                CleanupStack::PopAndDestroy( destName );
-                }
-            }
-        else
-            {
-            iItems.Remove(i);
-            count--;
-            i--;
-            }
-            
-        CleanupStack::PopAndDestroy( dest );
-        }
-    }
-    
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::BuildUncatArrayL()
-//---------------------------------------------------------------------------
-//
-void CCmConnSettingsUiImpl::BuildUncatArrayL( RPointerArray<CCmPluginBase>& aUncatArray,
-                                           CDesCArrayFlat* aItems, 
-                                           TBearerFilterArray& aFilterArray )
-    {
-    if ( iShowEasyWlan )
-        {
-        // Get the uncategorised CMs including EasyWLAN
-        iCmManagerImpl->AppendUncatCmListL( aUncatArray, ETrue, ETrue, ETrue );
-        }
-    else
-        {
-        iCmManagerImpl->AppendUncatCmListL( aUncatArray );
-        }
-    
-    // Remove hidden Connection Methods
-    for ( TInt i = 0; i < aUncatArray.Count(); i++ )
-        {
-        if ( aUncatArray[i]->GetBoolAttributeL( ECmHidden ) )
-            {
-            delete aUncatArray[i];
-            aUncatArray.Remove(i);
-            i--;
-            }
-        }
-        
-    if (aFilterArray.Count())
-        {
-        for ( TInt i = 0; i < aUncatArray.Count(); i++ )
-            {
-            CCmPluginBase* cm = aUncatArray[i];
-            TUint cmBearerType = cm->GetIntAttributeL( ECmBearerType );
-            if ( aFilterArray.Find( cmBearerType ) == KErrNotFound )
-                {
-                delete aUncatArray[i];
-                aUncatArray.Remove(i);
-                i--;
-                }
-            }
-        }
-    TInt count = aUncatArray.Count();
-
-    if ( !iShowVirtualCMs )
-        {
-        // Don't show virtual CMs
-        for ( TInt i = 0; i < count; i++ )
-            {
-            if ( IsCmVirtualL( aUncatArray[i]->GetIntAttributeL( ECmId ) ) )
-                {
-                delete aUncatArray[i];
-                aUncatArray.Remove( i );
-                count--;
-                i--;
-                }
-            }
-        }
-    // Show the 'Uncategorised' destination
-    if ( count )
-        {
-        HBufC* buf = StringLoader::LoadLC( R_CMMANAGERUI_DEST_UNCATEGORIZED );
-        aItems->AppendL( *buf );
-        CleanupStack::PopAndDestroy( buf );        
-        iItems.AppendL( KDestItemUncategorized );
-        }
-    }
-
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::UserSelectionDlgL()
-//---------------------------------------------------------------------------
-//
-TBool CCmConnSettingsUiImpl::UserSelectionDlgL( 
-                                        TInt& aDestSelected, 
-                                        CDesCArrayFlat* aItems, 
-                                        TCmDCSettingSelection& aSelection, 
-                                        const TInt aTitleStringResource, 
-                                        TBool aOpenDestination)
-    {
-    // Should an item be highlighted?
-    if ( aSelection.iResult == EDCDestination )
-        {
-        for ( TInt i = 0; i < iItems.Count(); i++ )
-            {
-            if ( iItems[i] == aSelection.iId )
-                {
-                aDestSelected = i;
-                }
-            }
-        }
-    
-    HBufC* buf = StringLoader::LoadLC( aTitleStringResource );
-    TInt dialogResourceId = R_RADIO_BUTTON_SETTING_PAGE_OK_CANCEL;
-    if ( aOpenDestination ) // OPTIONS/CANCEL is available only if we can open
-                            //destinations
-        {
-        dialogResourceId = R_RADIO_BUTTON_SETTING_PAGE;
-        }
-    CCMConnSelectRBPage* page = 
-                        new ( ELeave ) CCMConnSelectRBPage( dialogResourceId,
-                                                         aDestSelected, 
-                                                         aItems,
-                                                         *iCmManagerImpl,
-                                                         aSelection.iResult,
-                                                         iItems,
-                                                         iAreDestinations,
-                                                         aOpenDestination ,
-                                                         iHelpContext );
-    CleanupStack::PushL( page );
-    page->SetSettingTextL( *buf );
-    CleanupStack::Pop( page );
-    
-    CleanupStack::PopAndDestroy( buf );
-    buf = NULL;
-    
-    return page->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
-    }    
-
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::UserSelectedUncatItemL()
-//---------------------------------------------------------------------------
-//
-TBool CCmConnSettingsUiImpl::UserSelectedUncatItemL(
-                                           RPointerArray<CCmPluginBase>& aUncatArray,
-                                           TCmDCSettingSelection& aSelection, 
-                                        const TInt aTitleStringResource )
-    {
-    TBool retVal( EFalse );
-    CDesCArrayFlat* items = 
-                    new ( ELeave ) CDesCArrayFlat( KCmArrayBigGranularity );
-    CleanupStack::PushL( items );
-
-    TInt cmSelected( 0 );
-
-    TInt count = aUncatArray.Count();
-    for ( TInt i = 0; i < count; ++i )     
-        {
-        CCmPluginBase* cm = NULL;
-        TRAPD( err,
-               cm = iCmManagerImpl->GetConnectionMethodL( aUncatArray[i]->GetIntAttributeL( ECmId) ) 
-               );
-        
-        if ( !err )
-            {
-            CleanupStack::PushL( cm );
-            HBufC* cmName = cm->GetStringAttributeL( ECmName );
-            CleanupStack::PushL( cmName );
-            items->AppendL( *cmName );
-            
-            // Virtual CMs have underlying CMs, highlight
-            if ( cm->GetBoolAttributeL( ECmVirtual ) )
-                {
-                TUint32 iapId (0);
-                iapId = cm->GetIntAttributeL( ECmNextLayerIapId );
-                if ( iapId && iapId == aSelection.iId )
-                    {
-                    cmSelected = i;
-                    }
-                }            
-            CleanupStack::PopAndDestroy( 2, cm );
-            }
-        else
-            {
-            //not handled iap, remove from list
-            aUncatArray.Remove( i );
-            count--;
-            i--;
-            }
-        }
-    
-    
-    CAknRadioButtonSettingPage* rbPage = 
-                new ( ELeave ) CAknRadioButtonSettingPage(
-                                    R_RADIO_BUTTON_SETTING_PAGE_OK_CANCEL, 
-                                    cmSelected, 
-                                    items );
-    CleanupStack::PushL( rbPage );
-                        
-    HBufC* buf = StringLoader::LoadLC( aTitleStringResource );    
-    rbPage->SetSettingTextL( *buf );
-    CleanupStack::PopAndDestroy( buf );
-    
-    if ( rbPage->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
-        {
-        CCmPluginBase* cm = 
-                iCmManagerImpl->GetConnectionMethodL( aUncatArray[cmSelected]->GetIntAttributeL( ECmId) );
-
-        // ECmIapId can be surely queried here. It won't leave, but PushL to be
-        // on the safe side
-        CleanupStack::PushL( cm );
-        aSelection.iId = cm->GetIntAttributeL( ECmId );
-        CleanupStack::PopAndDestroy( cm );
-
-        aSelection.iResult = EDCConnectionMethod; 
-        
-        retVal = ETrue;
-        }
-    CleanupStack::Pop( rbPage );
-    CleanupStack::PopAndDestroy( items );
-    
-    return retVal;
-    }
-
-
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::ShowConnectionMethodsL()
-//---------------------------------------------------------------------------
-//
-TBool CCmConnSettingsUiImpl::ShowConnectionMethodsL( 
-                    RPointerArray<CCmPluginBase>& aCmArray, TCmDCSettingSelection& aSelection, 
-                    const TInt aTitleStringResource,
-                    TBearerFilterArray& aFilterArray  )
-    {
-    TInt retVal ( EFalse );
-    
-    // List texts
-    CDesCArrayFlat* items = 
-            new ( ELeave ) CDesCArrayFlat( KCmArrayMediumGranularity );
-    CleanupStack::PushL( items );
-    
-    // keeps track of the CMs in the list
-    
-    // idArray is used to put valid IAP ID.
-    // aFilterArray might filt some of IAPs (e.g., virtual IAPs) out. In this case,
-    // aCmArray can not be used to select IAP. So, idArray may be used for IAP selection
-    // for it only stores valid IAPs (i.e., not filted-out IAPs).
-    RArray<TUint32> idArray;
-    TInt cmSelected( 0 );
-    TInt j( 0 );
-    
-    // Collect item texts
-    TInt cmCount = aCmArray.Count();
-    for ( TInt i = 0; i < cmCount; i++ )
-        {
-        // CM info
-        if (aFilterArray.Count())
-            {
-            TUint cmBearerType = aCmArray[i]->GetIntAttributeL( ECmBearerType );
-            if ( aFilterArray.Find( cmBearerType ) == KErrNotFound )
-                {
-                continue;    
-                }
-            }
-        
-        // CM Iap Id
-        TUint32 cmIapId = aCmArray[i]->GetIntAttributeL( ECmId );
-        
-        // Should virtual bearer types be shown?
-        if ( iShowVirtualCMs || !IsCmVirtualL( cmIapId ) )
-            {
-            // CM name
-            HBufC* name = aCmArray[i]->GetStringAttributeL( ECmName );
-            CleanupStack::PushL( name );
-            
-            items->AppendL( *name );
-            idArray.Append( cmIapId );
-            
-             // Virtual CMs have underlying CMs, highlight
-            if ( cmIapId == aSelection.iId )
-                {
-                cmSelected = j;
-                j++;
-                }
-            
-            CleanupStack::PopAndDestroy( name );
-            }
-        }
-    
-    // create the dialog             
-    CAknRadioButtonSettingPage* dlg = 
-                            new ( ELeave ) CAknRadioButtonSettingPage(
-                                    R_RADIO_BUTTON_SETTING_PAGE_OK_CANCEL,
-                                    cmSelected, 
-                                    items );
-    CleanupStack::PushL( dlg );
-    
-    // Title
-    HBufC* title = StringLoader::LoadLC ( aTitleStringResource );
-    dlg->SetSettingTextL( *title );
-    
-    // Show the dialog
-    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
-        {
-        aSelection.iId = idArray[cmSelected];
-        aSelection.iResult = EDCConnectionMethod; 
-        retVal = ETrue;
-        }
-    idArray.Close();
-    
-    CleanupStack::PopAndDestroy( title );
-    CleanupStack::Pop( dlg );
-    CleanupStack::PopAndDestroy( items );
-    
-    return retVal;
-    }
-
-
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::IsCmVirtualL
-//---------------------------------------------------------------------------
-//
-TBool CCmConnSettingsUiImpl::IsCmVirtualL( TUint32 aIapId )
-    {
-    // check if bearer is virtual
-    TInt bearerType = iCmManagerImpl->GetConnectionMethodInfoIntL( 
-                                                aIapId, ECmBearerType );
-    return iCmManagerImpl->GetBearerInfoBoolL( bearerType, ECmVirtual );
-    }
-
-
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::CreateDefaultConnectionNameL
-//---------------------------------------------------------------------------
-//
-HBufC* CCmConnSettingsUiImpl::CreateDefaultConnectionNameL( 
-                                            TCmDefConnValue aSelection )
-    {
-    HBufC* ret = NULL;
-    switch ( aSelection.iType )
-        {
-        case ECmDefConnDestination:
-            {
-            CCmDestinationImpl* dest = 
-                        iCmManagerImpl->DestinationL( aSelection.iId );
-            CleanupStack::PushL( dest );
-            ret = dest->NameLC();
-            CleanupStack::Pop( ret );
-            CleanupStack::PopAndDestroy( dest );
-            break;
-            }
-        case ECmDefConnConnectionMethod:
-            {
-            ret = iCmManagerImpl->GetConnectionMethodInfoStringL( 
-                                                aSelection.iId, ECmName );
-            break;
-            }
-        }
-    return ret;
-    }
-   
-
-
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::SetDestinationArrayToUseL
-//---------------------------------------------------------------------------
-//
-EXPORT_C void CCmConnSettingsUiImpl::SetDestinationArrayToUseL(
-                                         RArray<TUint32> aDestinationArray )
-    {
-    iPassedDestinations.Close();
-    for (TInt i=0; i<aDestinationArray.Count(); i++)
-        {
-        iPassedDestinations.AppendL(aDestinationArray[i]);
-        }
-    
-    iUsePassedDestinationArray = ETrue;
-    }
-
-
-//---------------------------------------------------------------------------
-//  CCmConnSettingsUiImpl::ClearDestinationArrayToUse
-//---------------------------------------------------------------------------
-//
-EXPORT_C void CCmConnSettingsUiImpl::ClearDestinationArrayToUse()
-    {
-    iPassedDestinations.Close();
-    iUsePassedDestinationArray = EFalse;
-    }
-
-
--- a/cmmanager/cmmgr/Framework/Src/cmdesticondialog.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,268 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CCmDestinationIconDialog
-*
-*/
-
-// INCLUDE FILES
-#include <uikon.hrh>
-#include <e32std.h>
-#include <eikcapc.h>
-
-#include <aknlayoutscalable_avkon.cdl.h>
-#include <layoutmetadata.cdl.h>
-
-#include <aknborders.h>
-#include <aknconsts.h>
-#include <AknUtils.h>
-#include <aknPopupHeadingPane.h>
-#include <AknSettingCache.h>
-
-#include <AknLayout.lag>
-#include <e32property.h>
-
-#include <cmmanager.rsg>
-
-#include "cmmanager.hrh"
-#include "cmdesticondialog.h"
-#include "cmdesticonmap.h"
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// ----------------------------------------------------------------------------
-// CCmDestinationIconDialog class
-// CCmDestinationIconDialog() - constructor
-// ----------------------------------------------------------------------------
-//
-CCmDestinationIconDialog::CCmDestinationIconDialog( TInt& aIconIndex )
-    : iIconIndex(&aIconIndex)
-    {
-    CEikDialog::SetBorder( AknBorderId::EAknBorderNotePopup );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconDialog::~CCmDestinationIconDialog()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationIconDialog::~CCmDestinationIconDialog()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconDialog::HandleResourceChange()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconDialog::HandleResourceChange(TInt aType)
-    {
-    CAknDialog::HandleResourceChange(aType);
-
-    if (aType==KEikDynamicLayoutVariantSwitch)
-        {
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconDialog::OkToExitL()
-// -----------------------------------------------------------------------------
-//
-TBool CCmDestinationIconDialog::OkToExitL(TInt aButtonId)
-    {
-    CCmDestinationIconMap* iconmapControl = 
-        STATIC_CAST(CCmDestinationIconMap*, Control(ECmDestIconMapContentId));
-    // Selection key / select softkey adds a iconacter only if 5-key was not 
-    // used to select multiple icons before.
-    if ( aButtonId == EAknSoftkeyOk || aButtonId == EAknSoftkeySelect )
-        {
-        TKeyEvent key;
-        key.iCode=EKeyOK;
-        key.iModifiers=0;
-        iconmapControl->OfferKeyEventL(key, EEventKey);
-        }
-    return(ETrue);
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconDialog::PreLayoutDynInitL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconDialog::PreLayoutDynInitL()
-    {
-    CCmDestinationIconMap* iconmapControl = 
-       STATIC_CAST( CCmDestinationIconMap*, Control( ECmDestIconMapContentId ));
-    CAknPopupHeadingPane* headingPane =
-       STATIC_CAST( CAknPopupHeadingPane*, Control( EAknSCTQueryHeadingId ));
-
-    iconmapControl->SetIndex(*iIconIndex);    
-
-    SetLineNonFocusing(EAknSCTQueryHeadingId);
-
-    // add title    
-    CEikonEnv* env = CEikonEnv::Static();
-    HBufC* title = env->AllocReadResourceL( R_CMMANAGERUI_PRMPT_SELECT_ICON );
-    CleanupStack::PushL( title );
-    headingPane->SetTextL( *title );
-    CleanupStack::PopAndDestroy( title );
-    title = NULL;
-
-#ifdef RD_SCALABLE_UI_V2
-
-	iconmapControl->SetObserver(this);
-	
-#endif // RD_SCALABLE_UI_V2
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconDialog::SetSizeAndPosition()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconDialog::SetSizeAndPosition( const TSize& aSize )
-    {
-    SetBorder( TGulBorder::ENone ); // No Dialog borders in SCT.
-    CAknDialog::SetSizeAndPosition( aSize );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconDialog::OfferKeyEventL()
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CCmDestinationIconDialog::OfferKeyEventL(
-                             const TKeyEvent& aKeyEvent, TEventCode aModifiers )
-    {
-    if ( aModifiers == EEventKey )
-        {
-        TUint code=aKeyEvent.iCode;
-        CCmDestinationIconMap* iconmapControl =
-                            STATIC_CAST( CCmDestinationIconMap*, 
-                                         Control( ECmDestIconMapContentId ));
-
-        switch ( code )
-            {
-            case EKeyLeftArrow:
-            case EKeyRightArrow:
-            case EKeyUpArrow:
-            case EKeyDownArrow:
-                {
-                TKeyResponse res(
-                    iconmapControl->OfferKeyEventL( aKeyEvent, aModifiers ));
-                return res;
-                }
-                
-            case EKeyEnter:
-                // change fro EKeyEnter to EKeyOK
-                {
-                TKeyEvent keyEvent;
-                keyEvent.iCode = EKeyOK;
-                keyEvent.iScanCode = aKeyEvent.iScanCode;
-                keyEvent.iModifiers = aKeyEvent.iModifiers;
-                keyEvent.iRepeats = aKeyEvent.iRepeats;
-                return CEikDialog::OfferKeyEventL( keyEvent, aModifiers );
-                }
-                
-            default:
-                break;
-            }
-        }
-        
-    return CEikDialog::OfferKeyEventL( aKeyEvent, aModifiers );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconDialog::ExecuteLD()
-// -----------------------------------------------------------------------------
-//
-TInt CCmDestinationIconDialog::ExecuteLD()
-    {
-    // Prepare real icon map
-    CEikDialog::PrepareLC( R_ICONSEL_DIALOG );
-    return(RunLD());
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconDialog::CEikDialog_Reserved_1()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconDialog::CEikDialog_Reserved_1()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconDialog::CEikDialog_Reserved_2()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconDialog::CEikDialog_Reserved_2()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconDialog::CCmDestinationIconDialog_Reserved()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconDialog::CAknIconMapDialog_Reserved()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconDialog::CreateCustomControlL()
-// Virtual function override from the base class to implement the custom control
-// -----------------------------------------------------------------------------
-//    
-SEikControlInfo CCmDestinationIconDialog::CreateCustomControlL(
-    TInt aControlType)
-    {
-    CCmDestinationIconMap *control= NULL;
-    if ( aControlType == KCmDestIconMapType )
-        {
-        control = CCmDestinationIconMap::NewL();
-        }
-    SEikControlInfo info;
-    info.iControl = control;
-    info.iFlags = 0;
-    info.iTrailerTextId = 0;
-    return info;
-    }
-
-#ifdef RD_SCALABLE_UI_V2
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconDialog::HandleControlEventL
-// Handles the event.
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconDialog::HandleControlEventL( 
-                                                CCoeControl* /*aControl*/,
-                                                TCoeEvent aEventType )
-    {
-    if( aEventType == EEventStateChanged)
-		{
-	    iConSelected = ETrue;
-		}
-    } 
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconDialog::HandleDialogPageEventL
-// Handles the event.
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconDialog::HandleDialogPageEventL(TInt aEventID)
-	{
-    if ( AknLayoutUtils::PenEnabled() && ( aEventID == 
-         MEikDialogPageObserver::EDialogPageTapped && iConSelected ) )
-	    {
-	    TryExitL( EAknSoftkeyOk );
-	    }
-	}
-	
-#endif //RD_SCALABLE_UI_V2
-
-//  End of File
--- a/cmmanager/cmmgr/Framework/Src/cmdesticonmap.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2058 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CCmDestinationIconMap
-*
-*/
-
-#include <eikenv.h>
-#include <eiksbfrm.h>
-#include <eikscrlb.h>
-#include <bidivisual.h>
-#include <avkon.rsg>
-#include <AknPanic.h>
-#include <avkon.hrh>
-#include <AknUtils.h>
-#include <aknlayoutscalable_avkon.cdl.h>
-#include <layoutmetadata.cdl.h>
-#include <AknLayout.lag>
-#include <data_caging_path_literals.hrh>
-#include <aknappui.h>
-#include <aknconsts.h>
-#include <AknDef.h>
-#include <PUAcodes.hrh>
-#include <s32file.h>
-#include <eikscrlb.h>   // TEikScrollBarModelType
-#include <AknsDrawUtils.h>
-#include <featmgr.h>
-#include <AknsFrameBackgroundControlContext.h>
-#include <cmmanager.mbg>
-#include <cmcommonconstants.h>
-#include <touchfeedback.h>
-#include "cmdesticonmap.h"
-#include "cmmanagerimpl.h"
-
-// The offset because of CEikDialogPage
-const TInt KHorizontalDialogMargin = 0;
-const TInt KVerticalDialogMargin = 0;
-const TInt KAknSctCBaButtonDirections = 3; // bottom, right and left
-
-/**
- * Extension class to CCmDestinationIconMap
- *
- * @since S60 v3.2
- */
-NONSHARABLE_CLASS( CCmDestinationIconMapExtension ) : public CBase, 
-                                                      public MObjectProvider
-    {
-    public:
-    
-        CCmDestinationIconMapExtension();
-        ~CCmDestinationIconMapExtension();
-    
-    protected:
-    
-        TTypeUid::Ptr MopSupplyObject( TTypeUid aId );
-        MObjectProvider* MopNext();
-    
-    public: // data
-        
-        MCoeControlObserver *iObserver;
-        
-        TUint iFlags;
-        MObjectProvider* iIconMap;       
-        TInt iMaxVisibleRows;
-        CAknsFrameBackgroundControlContext* iBgContext;
-    };
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMapExtension::CCmDestinationIconMapExtension
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CCmDestinationIconMapExtension::CCmDestinationIconMapExtension()
-    : iMaxVisibleRows( 0 )
-    {
-    iObserver = NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMapExtension::MopSupplyObject()
-// -----------------------------------------------------------------------------
-//
-TTypeUid::Ptr CCmDestinationIconMapExtension::MopSupplyObject( TTypeUid aId )
-    {
-    return MAknsControlContext::SupplyMopObject( aId, iBgContext );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMapExtension::MopNext()
-// -----------------------------------------------------------------------------
-//    
-MObjectProvider* CCmDestinationIconMapExtension::MopNext()
-    {
-    return iIconMap;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMapExtension::~CCmDestinationIconMapExtension()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationIconMapExtension::~CCmDestinationIconMapExtension()
-    {
-    delete iBgContext;
-    iBgContext = NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::CCmDestinationIconMap
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CCmDestinationIconMap::CCmDestinationIconMap() 
-    : iCursorPos( TPoint( 0,0 ) )
-    , iOldCursorPos( TPoint( 0,0 ) )
-    , iMaxColumns( -1 )
-    , iDragAlreadyActive( EFalse )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CCmDestinationIconMap* CCmDestinationIconMap::NewL()
-    {
-    CCmDestinationIconMap* self = new( ELeave ) CCmDestinationIconMap();
-
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self ); //self
-    return self;    
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::ConstructL()
-    {
-    // Must be created here to get the member variables available
-    iExtension = new ( ELeave ) CCmDestinationIconMapExtension;
-    iExtension->iIconMap = this;
-        
-    iConsArray = new( ELeave ) CAknIconArray( KNumOfIcons );
-    
-    iExtension->iFlags = 0x00;
-        
-    DoLayout();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::~CCmDestinationIconMap()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationIconMap::~CCmDestinationIconMap()
-    {
-    delete iSBFrame; iSBFrame = NULL;
-    
-    delete iOffscreenBg;
-    delete iBitmapDevice;
-    delete iBitmapGc;
-
-    delete iExtension; 
-    iExtension = ( CCmDestinationIconMapExtension* )NULL;
-    
-    if ( iConsArray )
-        {
-        iConsArray->ResetAndDestroy();
-        delete iConsArray;
-        iConsArray = NULL;
-        }
-   }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::DoLayout()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::DoLayout() 
-    {
-    TRAPD( err,LoadIconL() );
-    if ( err )
-        {
-        return;
-        }
-    
-    iIsMirrored = AknLayoutUtils::LayoutMirrored();
-    iDrawnBefore = EFalse;
-    CountMaxColumnsAndCellSizes();
-    SizeChanged();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::ConstructFromResourceL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::ConstructFromResourceL( 
-                                                TResourceReader& /*aReader*/ )
-    {
-    LoadIconL();
-    CreateScrollBarAndIconRowL();
-
-    iExtension->iBgContext = CAknsFrameBackgroundControlContext::NewL( 
-                                                            KAknsIIDQsnFrPopup, 
-                                                            TRect( 0, 0, 1, 1 ), 
-                                                            TRect( 0, 0, 1, 1 ), 
-                                                            EFalse );
-
-    if ( DrawableWindow() && AknLayoutUtils::PenEnabled() )
-        {
-        EnableDragEvents();       
-        SetGloballyCapturing( ETrue );
-        SetPointerCapture( ETrue );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::LoadIcons()
-// This actually load the all icons to be shown on dialog from icon file
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::LoadIconL()
-    { 
-    iConsArray->ResetAndDestroy();
-    // Draw all the Icons.
-    TParse mbmFile;
-    User::LeaveIfError( mbmFile.Set( KManagerIconFilename, 
-                                     &KDC_APP_BITMAP_DIR, NULL ) );
-        
-    // Create icon bitmap and mask.
-    for ( TInt i( 0 ); i < ( KNumOfIcons * 2 ); i++ )
-        {
-        CFbsBitmap* bitmap = NULL;
-        CFbsBitmap* bitmapMask = NULL;
-        AknIconUtils::CreateIconLC( 
-                   bitmap, 
-                   bitmapMask, mbmFile.FullName(),
-                   EMbmCmmanagerQgn_prop_set_conn_dest_internet_small + i, 
-                   EMbmCmmanagerQgn_prop_set_conn_dest_internet_small + i + 1 );
-        i++;
-        AknIconUtils::SetSize( bitmap, 
-                               TSize( iGridItemWidth, iGridItemHeight ) );
-        AknIconUtils::SetSize( bitmapMask, 
-                               TSize( iGridItemWidth, iGridItemHeight ) );
-        CGulIcon* icon = CGulIcon::NewL( bitmap, bitmapMask );
-        CleanupStack::PushL( icon );
-        iConsArray->AppendL( icon );       
-        CleanupStack::Pop( 3, bitmap );
-        }        
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::HeightInRows()
-// This actually returns the no of rows to be shown on a page
-// Depends upon the Layout size
-// -----------------------------------------------------------------------------
-//
-TInt CCmDestinationIconMap::HeightInRows()
-    {
-    return ( iRows );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::CreateScrollBarAndIconRowL()
-// This actually creates the scroll bar sets the number of 
-// pages and rows on a page to be shown
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::CreateScrollBarAndIconRowL()
-    {
-    iRows = ( ( iConsArray->Count() - 1 ) / iMaxColumns ) + 1 ;
-    iFirstVisibleRow = 0;
-    iAnimated = EFalse;
-    iCursorPos = TPoint( 0, 0 );
-    iNumPages = ( iRows / iExtension->iMaxVisibleRows ) + 
-                ( iRows % iExtension->iMaxVisibleRows ? 1 : 0 );
-    iCurrentPage = 1;
-    
-    // Create and set the scb visible even though there is nothing to scroll   
-    delete iSBFrame; iSBFrame=NULL;
-
-    if ( AknLayoutUtils::PenEnabled() )
-        {
-        iSBFrame=new( ELeave ) CEikScrollBarFrame( this, this, ETrue ); 
-        }
-    else
-        {
-        iSBFrame=new( ELeave ) CEikScrollBarFrame( this, NULL, ETrue );
-        }
-    // Decide which type of scrollbar is shown
-    CAknAppUi* appUi = iAvkonAppUi;
-    if ( AknLayoutUtils::DefaultScrollBarType( appUi ) == 
-         CEikScrollBarFrame::EDoubleSpan )
-        {
-        // For EDoubleSpan type scrollbar
-        if ( AknLayoutUtils::PenEnabled() )
-            {
-            // window owning scrollbar
-            iSBFrame->CreateDoubleSpanScrollBarsL( ETrue, 
-                                                   EFalse, 
-                                                   ETrue, 
-                                                   EFalse );
-            }
-        else
-            {
-            // non-window owning scrollbar
-            iSBFrame->CreateDoubleSpanScrollBarsL( EFalse, 
-                                                   EFalse, 
-                                                   ETrue, 
-                                                   EFalse ); 
-            }
-        iSBFrame->SetTypeOfVScrollBar( CEikScrollBarFrame::EDoubleSpan );
-        }
-    else
-        {
-        // For EArrowHead type scrollbar
-        iSBFrame->SetTypeOfVScrollBar( CEikScrollBarFrame::EArrowHead );
-        }
-    
-    iSBFrame->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff,
-                                       CEikScrollBarFrame::EAuto );
-    iSBFrame->VerticalScrollBar()->SetMopParent( iExtension );
-    UpdateScrollIndicatorL();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::SetIndex
-// set the reference of the selected icon index from the table
-// -----------------------------------------------------------------------------
-// 
-void CCmDestinationIconMap::SetIndex( TInt& aIconIndex )
-    {
-    iIconIndex = &aIconIndex;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::MinimumSize
-// 
-// -----------------------------------------------------------------------------
-//
-TSize CCmDestinationIconMap::MinimumSize()
-    {    
-    iIsMirrored = AknLayoutUtils::LayoutMirrored();
-    CountMaxColumnsAndCellSizes();
-
-    TRect rect;
-    // Used the set rect, but resolution changes cannot be handled when it is used
-              
-    TAknLayoutRect dialogLayRect;
-        
-    // Main pane without softkeys
-    TRect mainPaneRect;
-    if ( !AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect ) )
-    {
-    mainPaneRect = iAvkonAppUi->ClientRect();
-    }
-    
-    // Dialog layout, check variety first
-    TAknLayoutScalableParameterLimits iconMapDialogVariety = 
-               AknLayoutScalable_Avkon::popup_grid_graphic_window_ParamLimits();
-    
-    // Calc the variety
-    TInt maxVariety = iconMapDialogVariety.LastVariety();
-    
-    // Check the CBA, if the orientation is not landscape 
-    // there is not so much varieties
-    AknLayoutUtils::TAknCbaLocation location = AknLayoutUtils::CbaLocation();
-    // the offset for the certain cba location variety
-    TInt maxVarietyOffset = 0; 
-    // the number of varieties
-    TInt varietyOffset = maxVariety + 1;
-    
-    // landscape variety number must be calculated offset == number of varieties
-    // same applies to the variety number for the biggest sized layout for the 
-    // variety
-    if ( Layout_Meta_Data::IsLandscapeOrientation() )
-       {
-       // the offset for one variety
-       varietyOffset = ( maxVariety + 1 ) / KAknSctCBaButtonDirections;
-       }
-    
-    // for right and left cba buttons the max variety is not zero
-    // the varities are ordered by the location of the cba and the descending order
-    // e.g the biggest sized layout first, the smallest last
-    if ( location == AknLayoutUtils::EAknCbaLocationRight )
-       {
-       maxVarietyOffset = varietyOffset;
-       }
-    else if ( location == AknLayoutUtils::EAknCbaLocationLeft )
-       {
-       maxVarietyOffset = varietyOffset + varietyOffset; // 2*
-       }
-    
-    TInt varietyNumber = varietyOffset - iRows - 1; 
-    
-    // if more lines than possible to show, use the default 
-    // ( the biggest grid ) variety
-    if ( varietyNumber < 0 )
-       varietyNumber = 0;
-    // if zero rows, use the minimum
-    else if ( iRows<=0 )
-       varietyNumber -= 1;
-    
-    //add the varietyoffset
-    varietyNumber += maxVarietyOffset;
-
-    if ( Layout_Meta_Data::IsLandscapeOrientation() && 
-        location == AknLayoutUtils::EAknCbaLocationRight )
-       {
-       varietyNumber = 10;
-       }
-    else
-        {
-        if( iRows == 0 )
-            {
-            varietyNumber = 5;
-            }
-        else
-            {
-            varietyNumber = 3;
-            }
-        }       
-    // Layout the dialog size
-    dialogLayRect.LayoutRect( mainPaneRect, 
-       AknLayoutScalable_Avkon::popup_grid_graphic_window( varietyNumber ) );
-       
-    // Layout the grid
-    TAknLayoutRect gridWithScrollLayRect;
-    gridWithScrollLayRect.LayoutRect( dialogLayRect.Rect(), 
-       AknLayoutScalable_Avkon::listscroll_popup_graphic_pane() );
-    
-    return TSize( dialogLayRect.Rect().Width(), 
-        gridWithScrollLayRect.Rect().Height() );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::ActivateL()
-// This method is needed to set correct initial value to scroll indicator.
-// -----------------------------------------------------------------------------
-//
- void CCmDestinationIconMap::ActivateL()
-    {
-    CCoeControl::ActivateL();
-    if ( iRows > iExtension->iMaxVisibleRows )
-        {
-        UpdateScrollIndicatorL();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::OfferKeyEventL
-// Handles all the Keypad events
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CCmDestinationIconMap::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                                    TEventCode /*aModifiers*/ )
-    {
-    TUint code=aKeyEvent.iCode;
-    
-    switch ( code )
-        {
-        case EKeyLeftArrow:
-        case '4':
-            MoveCursorL( -1,0 );
-            break;
-        case EKeyRightArrow:
-        case '6':
-            MoveCursorL( 1,0 );
-            break;
-        case EKeyUpArrow:
-        case '2':
-            MoveCursorL( 0,-1 );
-            break;
-        case EKeyDownArrow:
-        case '8':
-            MoveCursorL( 0,1 );
-            break;
-        case EKeyOK:
-        case '5':  
-        case EKeySpace:
-            {
-            if ( iConsArray )
-                {
-                TInt ret = iMaxColumns * 
-                           ( iFirstVisibleRow + iCursorPos.iY ) + 
-                           iCursorPos.iX;
-                if ( ret <= iConsArray->Count() )
-                    {
-                    *iIconIndex = ret;    
-                    }
-                else
-                    {
-                    *iIconIndex = -1;
-                    }
-                }
-               
-            }
-            break;
-        default:
-            return EKeyWasNotConsumed;
-
-        }
-    return EKeyWasConsumed;
-    }
-
-#ifdef RD_SCALABLE_UI_V2 
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::HandlePointerEventL
-// Handles all the Keypad events
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::HandlePointerEventL(
-                                const TPointerEvent& aPointerEvent )
-    {
-    if ( AknLayoutUtils::PenEnabled() )
-        {
-        TInt newGridX; // For the whole
-        TInt newGridY; // For the whole grid.
-        TInt yInPixels = aPointerEvent.iPosition.iY - iGridTopLeft.iY;
-        newGridY = yInPixels / iGridItemHeight;
-        if ( ( aPointerEvent.iPosition.iX - iGridTopLeft.iX ) < 0 )
-            {
-            newGridX = -1;
-            }
-        else
-            {
-            newGridX = ( aPointerEvent.iPosition.iX - iGridTopLeft.iX )
-                                                        / iGridItemWidth;
-            }
-
-        // The pointer has been set down or dragged into the area of the grid. 
-        // (it might be in the "white space" at the end of the grid)
-        if ( ( yInPixels >= 0 && yInPixels < iGridItemHeight 
-                * iExtension->iMaxVisibleRows) &&
-            // When the pointer is in rows except the recent icon row
-                ( ( ( ( newGridY + iFirstVisibleRow ) != 0 ) && 
-                newGridX < iMaxColumns && newGridX >= 0 ) ||
-            // When the pointer is in the recent icon row
-                ( ( newGridY + iFirstVisibleRow == 0 ) && 
-                ( newGridX < iMaxColumns ) ) ) )
-            {
-            TUint globalY = newGridY + iFirstVisibleRow;
-            // For any action to be taken, the pointer event must either be a
-            // Button1Down or a drag event which has originated from a
-            // Button1Down in to the grid.
-            if ( aPointerEvent.iType == TPointerEvent::EButton1Down ||
-                 aPointerEvent.iType == TPointerEvent::EDrag )
-                {
-                if ( aPointerEvent.iType == TPointerEvent::EDrag ) 
-                    {
-                    iDragAlreadyActive = ETrue;
-                    }
-
-                // The user tapps a cell which has no icon. it is ignored.
-                if ( iConsArray->Count() > globalY * iMaxColumns + newGridX )
-                    {
-              	    // If icon is already selected then on single tap it
-              	    // should select the icon.
-                    if( iCursorPos.iY == newGridY && 
-                        iCursorPos.iX == newGridX &&
-                        aPointerEvent.iType != TPointerEvent::EDrag )
-                        {
-                        if ( iExtension->iObserver )
-                            {
-                            iExtension->iObserver->HandleControlEventL( 
-                                  this, 
-                                  MCoeControlObserver::EEventStateChanged );
-                            } 
-                        }
-                    else if ( iCursorPos.iX + ( iCursorPos.iY + 
-                              iFirstVisibleRow ) * iMaxColumns  < 
-                              iConsArray->Count() )
-                        {
-                        iOldCursorPos = iCursorPos;
-                        iCursorPos.iY = newGridY;
-                        iCursorPos.iX = newGridX;
-                        DrawCursor();
-                        }
-                    else
-                        {
-                        iOldCursorPos.iX = 0;
-                        iOldCursorPos.iY = 0;
-                        }
-				    }
-                }
-            else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
-                {
-                // The pointer has been set and dragged into the area of 
-                // the grid.
-                if ( yInPixels >= 0 && yInPixels < iGridItemHeight * 
-                     iExtension->iMaxVisibleRows && 
-                     iDragAlreadyActive && 
-                     iOldCursorPos == iCursorPos &&
-                     (iConsArray->Count() > (globalY * iMaxColumns + newGridX)))
-                    {
-                    if ( iExtension->iObserver )
-                        {
-                        iExtension->iObserver->HandleControlEventL( 
-                                this, 
-                                MCoeControlObserver::EEventStateChanged );
-                        }
-                	iDragAlreadyActive = EFalse;    
-                    }
-                }
-
-            MTouchFeedback* feedback = MTouchFeedback::Instance();
-        
-            if ( feedback )
-                {
-                if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
-                    {
-                    feedback->InstantFeedback( this, ETouchFeedbackBasic );
-                    }
-                else if ( aPointerEvent.iType == TPointerEvent::EDrag && iCursorPos != iOldCursorPos )
-                    {
-                    feedback->InstantFeedback( this, ETouchFeedbackSensitive );	
-                    }
-                }
-            }
-        else // For a non window owning scrollbar.
-            {
-            if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
-                {
-                iDragAlreadyActive = EFalse;
-                }
-            }
-        
-        CCoeControl::HandlePointerEventL( aPointerEvent );
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::SetObserver
-// Sets the observer.
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::SetObserver( MCoeControlObserver* aObserver  )
-    {
-    if ( iExtension )
-        {
-        iExtension->iObserver = aObserver;
-        }
-    }
-
-#endif //RD_SCALABLE_UI_V2    
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::InputCapabilities()
-//
-// -----------------------------------------------------------------------------
-//
-TCoeInputCapabilities CCmDestinationIconMap::InputCapabilities() const
-    {
-    return TCoeInputCapabilities( TCoeInputCapabilities::EAllText );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::SizeChanged()
-// Control position of this control is registered for skin library when 
-// necessary in CEikDialogPage::SetDataPosition, so we do not do that in this 
-// method.
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::SizeChanged()
-    {
-    // Get the layout
-    
-    // Main pane without softkeys
-    TRect mainPaneRect;
-   
-    if ( !AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, 
-                                             mainPaneRect ) )
-       {
-       mainPaneRect = iAvkonAppUi->ClientRect();
-       }
-    
-    // Dialog layout, check variety first
-    TAknLayoutScalableParameterLimits iconMapDialogVariety = 
-               AknLayoutScalable_Avkon::popup_grid_graphic_window_ParamLimits();
-    
-    TInt maxVariety = iconMapDialogVariety.LastVariety();
-    
-    // Check the CBA, if the orientation is not landscape 
-    // there is not so much varieties
-    AknLayoutUtils::TAknCbaLocation location = AknLayoutUtils::CbaLocation();
-    // the offset for the certain cba location variety
-    TInt maxVarietyOffset = 0;
-    TInt varietyOffset = maxVariety + 1;
-    
-    // landscape variety number must be calculated offset == number of varieties
-    // same applies to the variety number for the biggest sized layout for the 
-    // variety
-    if ( Layout_Meta_Data::IsLandscapeOrientation() )
-       {
-       // the offset for one variety
-       varietyOffset = ( maxVariety + 1 ) / KAknSctCBaButtonDirections;
-       }
-    
-    // for right and left cba buttons the max variety is not zero
-    // the varities are ordered by the location of the cba and the descending 
-    // order e.g the biggest sized layout first, the smallest last
-    if ( location == AknLayoutUtils::EAknCbaLocationRight )
-       {
-       maxVarietyOffset = varietyOffset;
-       }
-    else if ( location == AknLayoutUtils::EAknCbaLocationLeft )
-       {
-       maxVarietyOffset = varietyOffset + varietyOffset; // 2*
-       }
-    
-    TInt varietyNumber = varietyOffset - iRows - 1; 
-    
-    // if more lines than possible to show, use the default 
-    // ( the biggest grid ) variety
-    if ( varietyNumber < 0 )
-       varietyNumber = 0;
-    // if zero rows, use the minimum
-    else if ( iRows<=0 )
-       varietyNumber -= 1;
-    
-    //add the varietyoffset
-    varietyNumber += maxVarietyOffset;
-    
-    if ( Layout_Meta_Data::IsLandscapeOrientation() && 
-         location == AknLayoutUtils::EAknCbaLocationRight )
-       {
-       varietyNumber = 10;
-       }
-    else
-        {
-        if ( iRows == 0 )
-            {
-            varietyNumber = 5;
-            }
-        else
-            {
-            varietyNumber = 3;
-            }            
-        
-        }       
-    
-    TAknLayoutRect popupGridLayRect;
-    popupGridLayRect.LayoutRect( mainPaneRect, 
-          AknLayoutScalable_Avkon::popup_grid_graphic_window( varietyNumber ) );
-    
-    // Calculate the size relatively
-    TRect relativeDialog( TPoint( 0,0 ),popupGridLayRect.Rect().Size() );
-    
-    // Get the layout of the actual icon grid with scrollbar
-    TAknLayoutRect gridWithScrollLayRect;
-    gridWithScrollLayRect.LayoutRect( relativeDialog, 
-       AknLayoutScalable_Avkon::listscroll_popup_graphic_pane() );
-            
-    // Then the grid area without scrollbar
-    // NOTE: The grid with scroll bar is used as reference
-    TAknLayoutRect gridLayRect;
-    gridLayRect.LayoutRect( gridWithScrollLayRect.Rect(), 
-       AknLayoutScalable_Avkon::grid_graphic_popup_pane( 0 ) );
-
-    // Different parent if SCT inside editing menu.
-    TRect contentRect = gridLayRect.Rect();
-
-    // The x coordinate is 3 pixels to right and y coordinate 3 pixels up 
-    // so substract from x coordinate and add to y coordinate
-    if ( iIsMirrored ) 
-        {
-        iOffset = TPoint( 
-            contentRect.iBr.iX - KHorizontalDialogMargin - iGridItemWidth + 1,  
-            contentRect.iTl.iY - KVerticalDialogMargin + 1 );
-        
-        iGridTopLeft.iX = contentRect.iBr.iX - 
-                          KHorizontalDialogMargin - 
-                          ( iMaxColumns * iGridItemWidth );
-        iGridTopLeft.iY = contentRect.iTl.iY - KVerticalDialogMargin;
-        }
-    else  // not mirrored
-        {
-        iOffset = TPoint( contentRect.iTl.iX - KHorizontalDialogMargin + 1, 
-                         contentRect.iTl.iY - KVerticalDialogMargin + 1 );
-        iGridTopLeft.iX = contentRect.iTl.iX - KHorizontalDialogMargin;
-        iGridTopLeft.iY = contentRect.iTl.iY - KVerticalDialogMargin;
-        }
-    
-       
-    // The last, update background context
-    if ( iExtension->iBgContext )
-       {            
-        TInt bgVariety = 0;
-        if ( Layout_Meta_Data::IsLandscapeOrientation() )
-            {
-            bgVariety = 1;
-            }
-            
-        TAknLayoutRect innerRect;
-        innerRect.LayoutRect( 
-                relativeDialog, 
-                AknLayoutScalable_Avkon::bg_popup_window_pane_g1( bgVariety ) );
-
-       iExtension->iBgContext->SetFrameRects( relativeDialog, 
-                                              innerRect.Rect() );
-       }
-    
-    TRAPD( err,UpdateScrollIndicatorL() );
-    if ( err )
-        {
-        return;
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::HandleResourceChange()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::HandleResourceChange( TInt aType )
-    {
-    if ( aType == KEikDynamicLayoutVariantSwitch )
-        {
-        // save the old info for the magnitudes of the SCT grid
-        TInt oldMaxColumns = iMaxColumns;
-        //TInt oldMaxRows = 0;
-        //oldMaxRows = iRows;
-        // calculate the new magnitudes
-        DoLayout();
-        
-        // then calculate the index position of the cursor in the icon table
-        // and update the x and y positions for the new grid with it
-        
-        TInt oldCursorPosition = ( iFirstVisibleRow + iOldCursorPos.iY ) * 
-                                 oldMaxColumns +
-                                 iOldCursorPos.iX;
-        
-        TInt currentCursorPosition = ( iFirstVisibleRow + iCursorPos.iY ) * 
-                                     oldMaxColumns +
-                                     iCursorPos.iX;
-        
-        // the new first row is the top row on the page where the new focus is
-        iFirstVisibleRow = iExtension->iMaxVisibleRows * 
-                           ( currentCursorPosition / 
-                           ( iMaxColumns * iExtension->iMaxVisibleRows ) );
-        
-        // the cursor positions are relative to current page
-        iCursorPos.iY = ( currentCursorPosition - 
-                        ( iMaxColumns * iFirstVisibleRow ) ) / 
-                        iMaxColumns;
-        iCursorPos.iX = currentCursorPosition - 
-                        ( iMaxColumns * iFirstVisibleRow ) - 
-                        ( iMaxColumns * iCursorPos.iY );
-           
-        iOldCursorPos.iY = ( oldCursorPosition - 
-                           ( iMaxColumns * iFirstVisibleRow ) ) / 
-                           iMaxColumns;
-        iOldCursorPos.iX = oldCursorPosition - 
-                           ( iMaxColumns * iFirstVisibleRow ) - 
-                           ( iMaxColumns * iOldCursorPos.iY );
-        }
-
-    if ( aType == KAknsMessageSkinChange )
-        {
-        iOffscreenBgDrawn = EFalse;
-        }
-        
-    CCoeControl::HandleResourceChange( aType );   
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::Draw()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::Draw( const TRect& /*aRect*/ ) const
-    {    
-    TInt cursorPos = 0;
-    CWindowGc& gc=SystemGc();
-    
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
-    
-    TRect rect = Rect();
-    
-    // Main pane without softkeys
-    TRect mainPaneRect;
-    if ( !AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, 
-                                             mainPaneRect ) )
-       {
-       mainPaneRect = iAvkonAppUi->ClientRect();
-       }
-    
-    // Dialog layout, check variety first
-    TAknLayoutScalableParameterLimits iconMapDialogVariety = 
-       AknLayoutScalable_Avkon::popup_grid_graphic_window_ParamLimits();
-       
-    // The variety starts from 0 so add +1
-    TInt maxVariety = iconMapDialogVariety.LastVariety();
-    
-    // Check the CBA, if the orientation is not landscape 
-    // there is not so much varieties
-    AknLayoutUtils::TAknCbaLocation location = AknLayoutUtils::CbaLocation();
-    // the offset for the certain cba location variety
-    TInt maxVarietyOffset = 0;
-    TInt varietyOffset = maxVariety + 1;
-    
-    // landscape variety number must be calculated offset == number of varieties
-    // same applies to the variety number for the biggest sized layout for the 
-    // variety
-    if ( Layout_Meta_Data::IsLandscapeOrientation() )
-       {
-       // the offset for one variety
-       varietyOffset = ( maxVariety + 1 )/KAknSctCBaButtonDirections;
-       }
-    
-    // for right and left cba buttons the max variety is not zero
-    // the varities are ordered by the location of the cba and the descending 
-    // order e.g the biggest sized layout first, the smallest last
-    if ( location == AknLayoutUtils::EAknCbaLocationRight )
-       {
-       maxVarietyOffset = varietyOffset;
-       }
-    else if ( location == AknLayoutUtils::EAknCbaLocationLeft )
-       {
-       maxVarietyOffset = varietyOffset + varietyOffset; // 2*
-       }
-    
-    TInt varietyNumber = varietyOffset - iRows - 1; 
-    
-    // if more lines than possible to show, use the default 
-    // ( the biggest grid ) variety
-    if ( varietyNumber < 0 )
-        {
-        varietyNumber = 0;
-        }
-    // if zero rows, use the minimum
-    else if ( iRows<=0 )
-        {
-        varietyNumber -= 1;
-        }
-    
-    //add the varietyoffset
-    varietyNumber += maxVarietyOffset;
-
-    if ( Layout_Meta_Data::IsLandscapeOrientation() && 
-         location == AknLayoutUtils::EAknCbaLocationRight )
-        {
-        varietyNumber = 10;
-        }
-    else
-        {
-        varietyNumber = 3;
-        }    
-    // Layout the dialog size
-    TAknLayoutRect dialogLayRect;
-    dialogLayRect.LayoutRect( 
-           mainPaneRect, 
-          AknLayoutScalable_Avkon::popup_grid_graphic_window( varietyNumber ) );
-    
-    // Get the missing height for the background
-    TInt backgroundHeightOffset = dialogLayRect.Rect().Height() - rect.iBr.iY;
-    
-    rect.iBr.iY += backgroundHeightOffset;
-
-    // Check if we got an offscreen bitmap allocated for skin background and
-    // there is bitmap background in the current skin.
-    if ( iOffscreenBg && iHasBitmapBackground )
-        {
-        DrawOffscreenBackgroundIfRequired();
-        gc.BitBlt( rect.iTl, iOffscreenBg );
-        }
-    else
-        {
-        AknsDrawUtils::Background( skin, cc, this, gc, rect );
-        }
-
-    TInt numberOfIconsToBeDrawn = iConsArray->Count();
-    numberOfIconsToBeDrawn -= ( iFirstVisibleRow * iMaxColumns );
-    if ( numberOfIconsToBeDrawn > 0 )
-        {
-        if ( numberOfIconsToBeDrawn > 
-            ( iExtension->iMaxVisibleRows * iMaxColumns ) )
-            {
-            numberOfIconsToBeDrawn = iExtension->iMaxVisibleRows * iMaxColumns;
-            }
-
-        gc.SetPenStyle( CGraphicsContext::ESolidPen );    
-        gc.SetBrushStyle( CGraphicsContext::ENullBrush );
-        gc.SetPenSize( TSize( 1,1 ) );
-
-        // 2 ) Draw the grid
-        const TSize gridItemRectSize( iGridItemWidth + 1, iGridItemHeight + 1 );
-             
-        TInt numberOfGridCellsToBeDrawn = numberOfIconsToBeDrawn;
-
-        TRgb colorLine = AKN_LAF_COLOR( 219 );
-        AknsUtils::GetCachedColor( skin, 
-                                   colorLine, 
-                                   KAknsIIDQsnLineColors, 
-                                   EAknsCIQsnLineColorsCG5 );
-        TRgb colorRecentLine = AKN_LAF_COLOR( 215 );
-        AknsUtils::GetCachedColor( skin, 
-                                   colorRecentLine, 
-                                   KAknsIIDQsnLineColors, 
-                                   EAknsCIQsnLineColorsCG7 );
-
-        // default pen color
-        gc.SetPenColor( colorLine );
-        
-        TInt fullRows = numberOfGridCellsToBeDrawn / iMaxColumns;
-
-        // how many left after the full rows
-        numberOfGridCellsToBeDrawn -= fullRows * iMaxColumns;
-
-        TPoint pos = iGridTopLeft;
-
-        TInt endX = pos.iX + iGridItemWidth * iMaxColumns + 1;
-        TInt endY = pos.iY + iGridItemHeight * fullRows;
-
-        TInt ii = 0;
-
-        if ( fullRows )
-            {
-            // Draw full vertical lines
-            for ( ii = 0 ; ii <= iMaxColumns ; ii++ )
-                {
-                gc.SetPenColor( colorLine );
-                gc.SetPenSize( TSize( 1,1 ) );
-                gc.DrawLine( pos, TPoint( pos.iX, endY ) );
-                pos.iX += iGridItemWidth;
-                }
-
-                pos = iGridTopLeft;
-
-            // Draw full horizontal lines
-            for ( ii = 0 ; ii <= fullRows ; ii++ )
-                {
-                gc.SetPenSize( TSize( 1,1 ) );    
-                gc.SetPenColor( colorLine );
-                gc.DrawLine( pos, TPoint( endX, pos.iY ) );
-                pos.iY += iGridItemHeight;
-                }
-            gc.SetPenColor( colorLine );
-            gc.SetPenSize( TSize( 1,1 ) );    
-            }
-
-        if ( numberOfGridCellsToBeDrawn )
-            {
-            // Remaining cells in the last, non-full row
-            pos = iOffset;
-            // iOffset is cell area topLeft, grid is not included in it
-            pos.iX--;
-            pos.iY--;
-
-            pos.iY += iGridItemHeight * fullRows;
-
-            for ( ii = 0 ; ii < numberOfGridCellsToBeDrawn ; ii++ )
-                {
-                gc.DrawRect( TRect( pos, gridItemRectSize ) );
-
-                if ( iIsMirrored ) 
-                    pos.iX -= iGridItemWidth;
-                else // not mirrored
-                    pos.iX += iGridItemWidth; 
-                }
-            }
-        
-        TInt iconIndex = ( iCurrentPage - 1 ) * 
-                         ( iMaxColumns * iExtension->iMaxVisibleRows );
-        TInt lCnt =  iConsArray->Count(); 
-        cursorPos = iCursorPos.iX + iCursorPos.iY * iMaxColumns;
-        if ( lCnt > 0 )
-            {
-            TRect cellRect( TPoint( 0,0 ), 
-                            TSize( iGridItemWidth - 1, iGridItemHeight - 1 ) );
-            for ( TInt j = iconIndex, i = 0; 
-                  j < lCnt && i < numberOfIconsToBeDrawn;
-                  j++, i++ )
-                {
-                DrawItem( gc, CursorRect( i ), j, cursorPos == i, EFalse );        
-                }     
-            }
-            
-        }
-    iDrawnBefore = ETrue;
-    gc.DiscardFont();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::DrawItem()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::DrawItem( 
-    CWindowGc& aGc,
-    const TRect& aSctPosition,
-    TInt aIconIndex,
-    TBool aHighlighted,
-    TBool aDrawBackground ) const
-    {
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
-    
-    TBool skins = AknsDrawUtils::Background( skin,cc,aGc, aSctPosition );    
-    TRgb color;
-    if ( !skins )
-        aGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-    if ( aHighlighted )
-        {
-        TRgb colorHightLightRect = AKN_LAF_COLOR( 215 );
-        AknsUtils::GetCachedColor( skin, 
-                                   colorHightLightRect, 
-                                   KAknsIIDQsnLineColors, 
-                                   EAknsCIQsnLineColorsCG7 );
-        aGc.SetPenColor( colorHightLightRect );
-        aGc.DrawRect( aSctPosition );
-
-        // Shrink by one pixel in all directions.
-        TRect innerRect = aSctPosition;
-        innerRect.Shrink( 1,1 );
-
-        color = AKN_LAF_COLOR( 210 );
-        AknsUtils::GetCachedColor( skin, 
-                                   color, 
-                                   KAknsIIDQsnHighlightColors, 
-                                   EAknsCIQsnHighlightColorsCG1 ); 
-        aGc.SetBrushColor( color );       
-        aGc.Clear( innerRect );
-        }
-    else if ( aDrawBackground )
-        {
-        TRect innerRect = aSctPosition;
-        aGc.SetBrushColor( AKN_LAF_COLOR( 0 ) );
-        if ( !skins )
-            {
-            aGc.Clear( innerRect );
-            }
-        else 
-            {
-            AknsDrawUtils::Background( skin, cc, this, aGc, innerRect );
-            }
-        }
-    
-    if ( iConsArray )
-        {
-        TInt lCnt =  iConsArray->Count(); 
-        if ( lCnt > 0 && aIconIndex < lCnt && aIconIndex >= 0 )
-            {
-            TRect cellRect( TPoint( 0,0 ), 
-                            TSize( iGridItemWidth - 1, iGridItemHeight - 1 ) );
-
-            CGulIcon* bitmap = NULL;
-            bitmap = iConsArray->At( aIconIndex );
-            TInt numIconsInaPage = iExtension->iMaxVisibleRows * iMaxColumns;
-            TInt cellIndex = aIconIndex;
-            if ( aIconIndex >= numIconsInaPage )
-                {
-                cellIndex = aIconIndex % numIconsInaPage;
-                }
-            aGc.BitBltMasked( CursorPoint( cellIndex ),
-                            bitmap->Bitmap(),
-                            cellRect,
-                            bitmap->Mask(),
-                            EFalse );
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::DrawCursor()
-// Optimizes drawing. Only cursor is drawn.
-// -----------------------------------------------------------------------------
-void CCmDestinationIconMap::DrawCursor() const
-    {
-    // Whole Icon Map has to be drawn at least once. 
-    // If the user presses arrow key before Icon Map has been drawn,
-    // only cursor position is drawn without this check.
-    if ( !iDrawnBefore )
-        {
-        DrawNow();
-        }
-    // Only redraw old and new cursor position cells
-    ActivateGc();
-    CWindowGc& gc = SystemGc();
-
-    TInt cursorPos = iOldCursorPos.iX + iOldCursorPos.iY * iMaxColumns;   
-    DrawCell( cursorPos, EFalse );
-
-    cursorPos = iCursorPos.iX + iCursorPos.iY * iMaxColumns;
-    DrawCell( cursorPos, ETrue );
-
-    gc.DiscardFont();
-    DeactivateGc();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::DrawCell
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::DrawCell( 
-    TInt aCursorPos,
-    TBool aHighlighted ) const
-    {
-    // calculate icon index
-    TInt iconIndex = aCursorPos + iFirstVisibleRow * iMaxColumns;
-
-    // If we are only redrawing for animations, no need to draw non-animated
-    // items.
-    TRect rect = CursorRect( aCursorPos );
-
-    Window().Invalidate( rect );
-    Window().BeginRedraw( rect );
-    DrawItem( SystemGc(), rect, iconIndex, aHighlighted, ETrue );
-    Window().EndRedraw();
-    SystemGc().DiscardFont();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::CursorRect
-// -----------------------------------------------------------------------------
-//
-TRect CCmDestinationIconMap::CursorRect( TInt aCursorPos ) const
-    {
-    TPoint pos = iOffset;
-
-    if ( iIsMirrored )
-        {
-        pos.iX -= ( aCursorPos % iMaxColumns ) * iGridItemWidth;
-        }
-    else // Not mirrored
-        {
-        pos.iX += ( aCursorPos % iMaxColumns ) * iGridItemWidth;
-        }
-
-    pos.iY += ( aCursorPos / iMaxColumns ) * iGridItemHeight; 
-    return TRect( pos, TSize( iGridItemWidth - 1, iGridItemHeight - 1 ) );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::CursorPoint
-// -----------------------------------------------------------------------------
-//
-TPoint CCmDestinationIconMap::CursorPoint( TInt aCursorPos ) const
-    {
-    TPoint pos = iOffset;
-
-    if ( iIsMirrored )
-        {
-        pos.iX -= ( aCursorPos % iMaxColumns ) * iGridItemWidth;
-        }
-    else // Not mirrored
-        {
-        pos.iX += ( aCursorPos % iMaxColumns ) * iGridItemWidth;
-        }
-
-    pos.iY += ( aCursorPos / iMaxColumns ) * iGridItemHeight; 
-    return pos;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::MoveCursorL
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::MoveCursorL( TInt aDeltaX, TInt aDeltaY )
-    {           
-    if ( iIsMirrored )
-        aDeltaX = -aDeltaX;
-    
-    if ( ( iConsArray->Count() < 8 ) )
-       return;
-
-    iOldCursorPos = iCursorPos;
-    TInt oldFirstVisibleRow = iFirstVisibleRow;
-
-    TInt globalYPos = iCursorPos.iY + iFirstVisibleRow;
-    TInt lastColumnOnLastRow = ( ( iConsArray->Count() - 1 ) % iMaxColumns );
-
-    TInt skipicon = aDeltaX != 0 ? 1: 0;
-
-    if ( aDeltaX < 0 )
-        {
-        // Cursor was moved to left.
-        if ( iCursorPos.iX > skipicon - 1 )
-            {
-            iCursorPos.iX -= skipicon;
-            }
-        else
-            {
-            if ( skipicon > iMaxColumns )
-                {
-                globalYPos--;
-                iCursorPos.iX = iMaxColumns;
-                }
-            // Go to previous line
-            globalYPos--;
-            if ( globalYPos < 0 )
-                {
-                // Cursor was on the first line - go to last line.
-                globalYPos = iRows - 1;
-                // x - position to the last item on the last row.
-                iCursorPos.iX = lastColumnOnLastRow;
-                }
-            else
-                {
-                // x - position to last column.
-                iCursorPos.iX = iMaxColumns - skipicon;
-                }
-            }
-        }
-
-    if ( aDeltaX > 0 )
-        {
-        // Cursor was moved to right.
-        if ( globalYPos < iRows - 1 )
-            {
-            // Not in the last row.
-            if ( iCursorPos.iX < iMaxColumns - skipicon )
-                {
-                // If not on the last columns, move cursor to next column.
-                iCursorPos.iX += skipicon;
-                }
-            else
-                {
-                // Cursor was on last column,
-                // move to first column of the next line.
-                iCursorPos.iX = 0;
-                globalYPos++;
-                }
-            }
-        else
-            {
-            // Currently on the last row.
-            if ( iCursorPos.iX < lastColumnOnLastRow )
-                {
-                // If there are more items on this row, move cursor to next item.
-                iCursorPos.iX++;
-                }
-            else
-                {
-                // No more item on the current row.
-                // Move to first item on the first row.
-                iCursorPos.iX = 0;
-                globalYPos = 0;
-                }
-            }
-        }
-
-    if ( aDeltaY < 0 )
-        {
-        iCursorPos.iX -= skipicon;
-        if ( iCursorPos.iX < 0 )
-            {
-            iCursorPos.iX += ( iMaxColumns - 1 );
-            globalYPos--;
-            }
-        // Cursor was moved to up.
-        if ( globalYPos > 0 )
-            {
-            // Cursor was not on the first line - move it to previous row.
-            globalYPos--;
-            }
-        else
-            {
-            // Move cursot to last to row.
-            globalYPos = iRows - 1;
-            if ( iCursorPos.iX > lastColumnOnLastRow )
-                {
-                // No items in the current column on the last row - 
-                // move cursor to last item on the row.
-                iCursorPos.iX = lastColumnOnLastRow;
-                }
-            }
-        }
-    
-    if ( aDeltaY > 0 )
-        {
-        iCursorPos.iX = ( iCursorPos.iX + skipicon ) % iMaxColumns;
-        globalYPos += ( iCursorPos.iX + skipicon ) / iMaxColumns;
-        // Cursor was moved to down.
-        if ( globalYPos < iRows - 1 )
-            {
-            // Cursor is not on the last row. Move cursor to next row.
-            globalYPos++;
-            if ( globalYPos == iRows - 1 && 
-                 iCursorPos.iX > lastColumnOnLastRow )
-                {
-                // No items in the current column on the last row - 
-                // move cursor to last item on the row.
-                iCursorPos.iX = lastColumnOnLastRow;
-                }
-            }
-        else 
-            {
-            // Cursor was at the last row - move it to the first row.
-            globalYPos = 0;
-            }        
-        }
-    iCursorPos.iY = globalYPos - iFirstVisibleRow;
-
-    if ( globalYPos < iFirstVisibleRow )
-        {
-        // Cursor was moved from the top row.
-        if ( globalYPos <= 0 )
-            {
-            iFirstVisibleRow = 0;
-            iCursorPos = TPoint( iCursorPos.iX, 0 );
-            }
-        else
-            {
-            // If cursor was moved up out of the visible area - show it again.
-            iFirstVisibleRow -= iExtension->iMaxVisibleRows;
-            iCursorPos = TPoint( iCursorPos.iX, 
-                                 iExtension->iMaxVisibleRows - 1 );
-            }
-        }
-    
-    if ( globalYPos > iFirstVisibleRow + iExtension->iMaxVisibleRows - 1 )
-        {
-        if ( globalYPos == iRows - 1 )
-            {
-            // When cursor has moved from the top line,
-            // it is adjusted to a page boundary.
-            iCursorPos = TPoint( 
-                iCursorPos.iX,
-                ( iRows - 1 ) % iExtension->iMaxVisibleRows
-                );
-            iFirstVisibleRow = ( ( iRows - 1 ) / iExtension->iMaxVisibleRows ) * 
-                               iExtension->iMaxVisibleRows;
-            }
-        else
-            {
-            // If cursor was moved down out of the visible area - show it again.
-            iFirstVisibleRow += iExtension->iMaxVisibleRows;
-            iCursorPos = TPoint( iCursorPos.iX, 0 );
-            }
-        }
-       
-    //TInt increment( 1 );
-    //if ( aDeltaY < 0 || aDeltaX < 0 )
-    //    {
-    ////    increment = -1;
-    //    }
-    if ( iRows > iExtension->iMaxVisibleRows && 
-        ( iOldCursorPos.iY + oldFirstVisibleRow != 
-          iCursorPos.iY + iFirstVisibleRow ) )
-        {
-        UpdateScrollIndicatorL();
-        }
-
-    if ( oldFirstVisibleRow == iFirstVisibleRow )
-        {
-        // Draw only cursor if the view to the content was not scrolled.
-        DrawCursor();
-        }
-    else
-        {
-        DrawNow();
-        }
-
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::UpdateScrollIndicatorL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::UpdateScrollIndicatorL()
-    {    
-    if ( !iSBFrame )
-        {
-        return;
-        }
-    TEikScrollBarModel hSbarModel;
-    TEikScrollBarModel vSbarModel;
-    
-    TEikScrollBarFrameLayout layout;
-    
-    // Main pane without softkeys
-    TRect mainPaneRect;
-    if ( !AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, 
-                                             mainPaneRect ) )
-       {
-       mainPaneRect = iAvkonAppUi->ClientRect();
-       }
-        
-    // Dialog layout, check variety first
-    TAknLayoutScalableParameterLimits iconMapDialogVariety = 
-       AknLayoutScalable_Avkon::popup_grid_graphic_window_ParamLimits();
-    
-    TInt maxVariety = iconMapDialogVariety.LastVariety();
-    
-    // Check the CBA, if the orientation is not landscape 
-    // there is not so much varieties
-    AknLayoutUtils::TAknCbaLocation location = AknLayoutUtils::CbaLocation();
-    // the offset for the certain cba location variety
-    TInt maxVarietyOffset = 0;
-    TInt varietyOffset = maxVariety + 1;
-    
-    // landscape variety number must be calculated offset == number of varieties
-    // same applies to the variety number for the biggest sized layout for the 
-    // variety
-    if ( Layout_Meta_Data::IsLandscapeOrientation() )
-       {
-       // the offset for one variety
-       varietyOffset = ( maxVariety + 1 )/KAknSctCBaButtonDirections;
-       }
-    
-    // for right and left cba buttons the max variety is not zero
-    // the varities are ordered by the location of the cba and the descending 
-    // order e.g the biggest sized layout first, the smallest last
-    if ( location == AknLayoutUtils::EAknCbaLocationRight )
-       {
-       maxVarietyOffset = varietyOffset;
-       }
-    else if ( location == AknLayoutUtils::EAknCbaLocationLeft )
-       {
-       maxVarietyOffset = varietyOffset + varietyOffset; // 2*
-       }
-    
-    TInt varietyNumber = varietyOffset - iRows - 1; 
-    
-    // if more lines than possible to show, use the default 
-    // ( the biggest grid ) variety
-    if ( varietyNumber < 0 )
-        {
-        varietyNumber = 0;
-        }
-    // if zero rows, use the minimum
-    else if ( iRows <= 0 )
-        {
-        varietyNumber -= 1;
-        }
-    
-    //add the varietyoffset
-    varietyNumber += maxVarietyOffset;
-
-    if ( Layout_Meta_Data::IsLandscapeOrientation() && 
-         location == AknLayoutUtils::EAknCbaLocationRight )
-       {
-       varietyNumber = 10;
-       }
-    else
-        {
-        varietyNumber = 3;
-        }     
-    // Layout the dialog size
-    TAknLayoutRect dialogLayRect;
-    dialogLayRect.LayoutRect( mainPaneRect, 
-       AknLayoutScalable_Avkon::popup_grid_graphic_window( varietyNumber ) );
-    
-    TRect dialogRect = dialogLayRect.Rect();
-    
-    // Get the layout of the actual icon grid with scrollbar
-    TAknLayoutRect gridWithScrollLayRect;
-       
-    gridWithScrollLayRect.LayoutRect( 
-                    TRect( TPoint( 0,0 ),
-                    TSize( dialogRect.Size() ) ), 
-                    AknLayoutScalable_Avkon::listscroll_popup_graphic_pane() );
-
-    // Calculate the relative rect for the grid
-    TRect parent = gridWithScrollLayRect.Rect();
-    
-    TAknWindowComponentLayout scrollbarLayout = 
-                                    AknLayoutScalable_Avkon::scroll_pane_cp5();
-    
-    iCurrentPage = ( iFirstVisibleRow / iExtension->iMaxVisibleRows ) + 1;
-
-    vSbarModel.iScrollSpan = iNumPages * iExtension->iMaxVisibleRows;
-    vSbarModel.iThumbSpan = iExtension->iMaxVisibleRows;
-    
-    if ( iSBFrame && iSBFrame->TypeOfVScrollBar() == 
-         CEikScrollBarFrame::EDoubleSpan )
-        {    
-        // For EDoubleSpan type scrollbar
-        vSbarModel.iThumbPosition = ( iCurrentPage - 1 ) * 
-                                    iExtension->iMaxVisibleRows;
-        TAknDoubleSpanScrollBarModel hDsSbarModel( hSbarModel );
-        TAknDoubleSpanScrollBarModel vDsSbarModel( vSbarModel );
-        
-        // The y coordinate must be sifted 3 pixels up and x 3 to left
-        parent.iTl.iY -= KVerticalDialogMargin;
-        parent.iBr.iY -= KVerticalDialogMargin;        
-        parent.iTl.iX -= KHorizontalDialogMargin;
-        parent.iBr.iX -= KHorizontalDialogMargin;
-        
-        layout.iTilingMode = TEikScrollBarFrameLayout::EInclusiveRectConstant;
-        iSBFrame->Tile( &vDsSbarModel ); 
-        AknLayoutUtils::LayoutVerticalScrollBar( iSBFrame, 
-                                                 parent, 
-                                                 scrollbarLayout );       
-        iSBFrame->SetVFocusPosToThumbPos( vDsSbarModel.FocusPosition() );
-        }
-    else
-        {
-        // For EArrowHead type scrollbar
-        vSbarModel.iThumbPosition = iCursorPos.iY + iFirstVisibleRow;
-        iSBFrame->TileL( &hSbarModel,&vSbarModel,parent,parent,layout );        
-        iSBFrame->SetVFocusPosToThumbPos( vSbarModel.iThumbPosition );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::Reserved_1()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::Reserved_1()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::Reserved_2()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::Reserved_2()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::DrawOffscreenBackgroundIfRequired
-// 
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::DrawOffscreenBackgroundIfRequired() const
-    {
-    if ( iOffscreenBg && iHasBitmapBackground )
-        {
-        if ( !iOffscreenBgDrawn )
-            {
-            TRect mainPaneRect;
-            if ( !AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, 
-                                                     mainPaneRect ) )
-               {
-               mainPaneRect = iAvkonAppUi->ClientRect();
-               }
-            
-            // Dialog layout, check variety first
-            TAknLayoutScalableParameterLimits iconMapDialogVariety = 
-               AknLayoutScalable_Avkon::popup_grid_graphic_window_ParamLimits();
-            
-            TInt maxVariety = iconMapDialogVariety.LastVariety();
-            
-            // Check the CBA, if the orientation is not landscape 
-            // there is not so much varieties
-            AknLayoutUtils::TAknCbaLocation location = 
-                                                  AknLayoutUtils::CbaLocation();
-            // the offset for the certain cba location variety
-            TInt maxVarietyOffset = 0;
-            TInt varietyOffset = maxVariety + 1;
-            
-            // landscape variety number must be calculated offset == number of 
-            // varieties same applies to the variety number for the biggest 
-            // sized layout for the variety
-            if ( Layout_Meta_Data::IsLandscapeOrientation() )
-               {
-               // the offset for one variety
-               varietyOffset = ( maxVariety + 1 )/KAknSctCBaButtonDirections;
-               }
-            
-            // for right and left cba buttons the max variety is not zero
-            // the varities are ordered by the location of the cba and the 
-            // descending order e.g the biggest sized layout first, the smallest last
-            if ( location == AknLayoutUtils::EAknCbaLocationRight )
-               {
-               maxVarietyOffset = varietyOffset;
-               }
-            else if ( location == AknLayoutUtils::EAknCbaLocationLeft )
-               {
-               maxVarietyOffset = varietyOffset + varietyOffset; // 2*
-               }   
-            TInt varietyNumber = varietyOffset - iRows - 1; 
-            
-            // if more lines than possible to show, use the default 
-            // ( the biggest grid ) variety
-            if ( varietyNumber < 0 )
-                {
-                varietyNumber = 0;
-                }
-            // if zero rows, use the minimum
-            else if ( iRows<=0 )
-                {
-                varietyNumber -= 1;
-                }
-            
-            //add the varietyoffset
-            varietyNumber += maxVarietyOffset;
-                   
-            TAknLayoutRect popupGridLayRect;
-            popupGridLayRect.LayoutRect( mainPaneRect, 
-               AknLayoutScalable_Avkon::popup_grid_graphic_window( 5 ) );
-            
-            TRect popupGridRect = popupGridLayRect.Rect();
-            
-            // set the top left height as the control starting point
-            popupGridRect.iTl.iY = Rect().iTl.iY;
-            
-            //if ( popupGridRect.iBr.iY < mainPaneRect.iBr.iY )
-            //    popupGridRect.iBr.iY = mainPaneRect.iBr.iY
-            MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-            MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
-            
-            // draw to upper left corner, and normalize the retangle to 
-            // fact that the dialog starts from coordinates ( 0,0 ), 
-            // so the y-coordinate is correct ( heading pane ) 
-            // but x must be set to zero
-            TPoint point = TPoint( 0, 0 );
-            popupGridRect.Move( -popupGridRect.iTl.iX,0 );
-            
-            AknsDrawUtils::DrawBackground( skin,
-                                           cc,
-                                           this,
-                                           *iBitmapGc,
-                                           point,
-                                           popupGridRect,
-                                           KAknsDrawParamDefault );
-
-            iOffscreenBgDrawn = ETrue;
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::ComponentControl( TInt aIndex ) const
-// Return the controll pointer
-// -----------------------------------------------------------------------------
-//
-CCoeControl* CCmDestinationIconMap::ComponentControl( TInt aIndex ) const
-    {
-    if ( aIndex == 0 && 
-         iSBFrame && 
-         iSBFrame->TypeOfVScrollBar() == CEikScrollBarFrame::EDoubleSpan )
-        {    
-        return iSBFrame->VerticalScrollBar();
-        }
-    else
-        {
-        return NULL;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::CountComponentControls()
-// Return no of controll to be placed on the container control
-// -----------------------------------------------------------------------------
-// 
-TInt CCmDestinationIconMap::CountComponentControls() const
-    {
-    if ( iSBFrame && 
-         iSBFrame->TypeOfVScrollBar() == CEikScrollBarFrame::EDoubleSpan )
-        {    
-        return 1;
-        }
-    else
-        {
-        return 0;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::CountMaxColumnsAndCellSizes
-// Counts no of columns and the cell size will be displayed in the icon table
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationIconMap::CountMaxColumnsAndCellSizes()
-    {    
-    TRect cellRect; // retangle of one item in grid
-    TRect gridRect; // retangle of the grid contaning the items
-    
-    // 1. Get the layout 
-    
-    // Get the parent rect
-    TRect mainPaneRect;
-    if ( !AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, 
-                                             mainPaneRect ) )
-       {
-       mainPaneRect = iAvkonAppUi->ClientRect();
-       }
-    
-    // Calculate the layout of the whole popup with the biggest possible -> 0
-    // Dialog layout, check variety first
-    
-    // Get the layout rect of the dialog
-    
-    // Check variety first
-    TAknLayoutScalableParameterLimits iconMapDialogVariety = 
-        AknLayoutScalable_Avkon::popup_grid_graphic_window_ParamLimits();
-    
-    TInt maxVariety = iconMapDialogVariety.LastVariety();
-    
-    // Check the CBA, if the orientation is not landscape 
-    // there is not so much varieties
-    AknLayoutUtils::TAknCbaLocation location = AknLayoutUtils::CbaLocation();
-    // the offset for the certain cba location variety
-    TInt maxVarietyOffset = 0;
-    TInt varietyOffset = maxVariety + 1; // the number of varieties
-        
-    // landscape variety number must be calculated offset == number of varieties
-    // same applies to the variety number for the biggest sized layout for the 
-    // variety
-    if ( Layout_Meta_Data::IsLandscapeOrientation() )
-       {
-       // the offset for one variety
-       varietyOffset = ( maxVariety + 1 ) / KAknSctCBaButtonDirections;
-       }
-       
-    if ( location == AknLayoutUtils::EAknCbaLocationRight )
-       {
-       maxVarietyOffset = varietyOffset;
-       }
-    else if ( location == AknLayoutUtils::EAknCbaLocationLeft )
-       {
-       maxVarietyOffset = varietyOffset + varietyOffset; // 2*
-       }
-    
-    TAknLayoutRect popupGridLayRect;
-    popupGridLayRect.LayoutRect( mainPaneRect,
-       AknLayoutScalable_Avkon::popup_grid_graphic_window( maxVarietyOffset ) );
-    
-    // Get the layout of the actual icon grid with scrollbar
-    TAknLayoutRect gridWithScrollLayRect;
-    gridWithScrollLayRect.LayoutRect( popupGridLayRect.Rect(), 
-       AknLayoutScalable_Avkon::listscroll_popup_graphic_pane() );
-    
-    // Then the grid area without scrollbar
-    // NOTE: The grid with scroll bar is used as reference
-    TAknLayoutRect gridLayRect;
-    gridLayRect.LayoutRect( gridWithScrollLayRect.Rect(), 
-       AknLayoutScalable_Avkon::grid_graphic_popup_pane( 0 ) );
-
-    // Different parent if SCT inside editing menu.
-    TRect rect = Rect();
-    gridRect = gridLayRect.Rect();
-    // cell size, AGAIN 7 item
-    TAknLayoutRect cellLayRect;
-    cellLayRect.LayoutRect( 
-                    gridRect, 
-                    AknLayoutScalable_Avkon::cell_graphic_popup_pane( 0,0,0 ) );
-
-    cellRect = cellLayRect.Rect();
-        
-    // 2. Calculate width related
-    // - item width
-    // - max number of columns
-    
-    // Width of the items area
-    TInt gridWidth = gridRect.Width();
-    
-    // Width of one item
-    TInt cellWidth = cellRect.Width();
-  
-     // ensure the item width and store it
-    TAknLayoutRect secondCellLayRect;
-    secondCellLayRect.LayoutRect( gridRect, 
-                    AknLayoutScalable_Avkon::cell_graphic_popup_pane( 0,1,0 ) );
-       
-    iGridItemWidth = secondCellLayRect.Rect().iTl.iX - 
-                     cellLayRect.Rect().iTl.iX;
-    
-    if ( iGridItemWidth < 0 )
-        {
-        // The result is negative with lay file data if the layout is mirrored.
-        iGridItemWidth = -iGridItemWidth;
-        }
-    
-    // Calculate the amount of columns
-    iMaxColumns = gridWidth / cellWidth;
-    
-    
-    // 2. Calculate height related
-    // - item height
-    // - max number of rows
-        
-    // Get the grid height
-    // NOTE: in landscape the LAF is wrong so use the main panes height
-    TInt gridHeight = gridRect.Height();
-    
-    // get the item height
-    TInt cellHeight = cellRect.Height();
-    
-    // calculate the number of items fitting to grid
-    iExtension->iMaxVisibleRows = 3;//gridHeight / cellHeight;
-    
-    // Store the item height
-    TAknLayoutRect secondRowLayRect;
-    secondRowLayRect.LayoutRect( gridLayRect.Rect(), 
-       AknLayoutScalable_Avkon::cell_graphic_popup_pane( 0,0,1 ) );
-
-    iGridItemHeight = secondRowLayRect.Rect().iTl.iY - 
-                      cellLayRect.Rect().iTl.iY;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::HandleScrollEventL
-// Handles the different scroll events so that the map reacts accordingly.
-// -----------------------------------------------------------------------------
-// 
-void CCmDestinationIconMap::HandleScrollEventL( CEikScrollBar* aScrollBar, 
-                                                TEikScrollEvent aEventType )
-    {
-    TBool update = EFalse;
-    
-    switch ( aEventType )
-        {       
-        case EEikScrollUp:
-        case EEikScrollPageUp:
-            {           
-            // nothing done if we are already on the first page.
-            if ( iFirstVisibleRow != 0 )
-                {               
-                iFirstVisibleRow -= iExtension->iMaxVisibleRows;             
-                update = ETrue;
-                }
-            UpdateScrollIndicatorL();
-            }
-            break;
-        
-        case EEikScrollDown:
-        case EEikScrollPageDown:
-            {           
-            // nothing done if we are already on the last page.
-            if ( iFirstVisibleRow != iRows/iExtension->iMaxVisibleRows * 
-                                     iExtension->iMaxVisibleRows )
-                {
-                iFirstVisibleRow += iExtension->iMaxVisibleRows;
-                update = ETrue;
-                }
-            UpdateScrollIndicatorL();
-            }
-            break;   
-               
-        case EEikScrollThumbDragVert:
-            {           
-            TInt thumbPosition;         
-            TInt halfPage = iExtension->iMaxVisibleRows/2;
-            // Ask which type of scrollbar is shown
-            //CAknAppUi* appUi = iAvkonAppUi;            
-            TBool isDoubleSpan = 
-                CEikScrollBarFrame::EDoubleSpan == iSBFrame->TypeOfVScrollBar();
-            if ( isDoubleSpan )
-                {
-                thumbPosition = static_cast <const TAknDoubleSpanScrollBarModel*>( 
-                                            aScrollBar->Model() )->FocusPosition();
-                }
-            else
-                {
-                thumbPosition = aScrollBar->Model()->iThumbPosition;
-                }
-
-            // If the slider is in the range of less then a half page from a 
-            // possible correct thumb position. thus 0 <= iFirstVisibleRow - 
-            // thumbPosition < halfPage. Or in the other direction:
-            // 0 <= thumbPosition - iFirstVisibleRow < halfPage
-            if ( !( ( 0 <= iFirstVisibleRow - thumbPosition &&
-                        iFirstVisibleRow - thumbPosition < halfPage )||                         
-                  ( 0 <= thumbPosition - iFirstVisibleRow && 
-                        thumbPosition - iFirstVisibleRow < halfPage ) ) )
-                {               
-                TReal toRound = thumbPosition / 
-                                ( TReal )iExtension->iMaxVisibleRows;
-                if ( toRound * 2 > ( TInt )toRound * 2 + 1 )
-                    {
-                    toRound++;
-                    }                  
-                iFirstVisibleRow = ( TInt )toRound * 
-                                   iExtension->iMaxVisibleRows;
-                update = ETrue;
-                }
-            }
-            break;
-        
-        case EEikScrollThumbReleaseVert:
-            {
-            UpdateScrollIndicatorL();
-            }
-            break;
-        
-        case EEikScrollLeft: // flow through            
-        case EEikScrollRight: // flow through
-        case EEikScrollPageLeft: // flow through
-        case EEikScrollPageRight: // flow through
-        case EEikScrollThumbDragHoriz: // flow through
-        case EEikScrollThumbReleaseHoriz: // flow through
-            // do nothing
-            break;  
-            
-        default: 
-            // do nothing
-            break; 
-        }
-        
-    // If we have moved down to the last page we check that the cursor is in 
-    // a place where it can be drawn.       
-    if ( iFirstVisibleRow == 
-         iRows/iExtension->iMaxVisibleRows * iExtension->iMaxVisibleRows )
-        {
-        // the old cursor is set to a "safe" position where it at least can be.
-        iOldCursorPos.iX = 0;
-        iOldCursorPos.iY = 0;                                                    
-        // if the last page has only one line which isn't filled complitely.
-        if ( ( iConsArray->Count() % iMaxColumns - 1 < iCursorPos.iX ) && 
-             ( iRows % iExtension->iMaxVisibleRows ) == 1 )
-            {
-            iCursorPos.iX = iConsArray->Count()%iMaxColumns - 1;
-            }                        
-        // If the cursor is in a position where it would go unto a spot without 
-        // a icon when scrolled.
-        if ( iCursorPos.iY + iFirstVisibleRow >= iRows )
-            {                        
-            if ( iConsArray->Count() % iMaxColumns > iCursorPos.iX )
-                {                                                      
-                iCursorPos.iY = iRows - 1 - iFirstVisibleRow;                             
-                }
-            else
-                {                            
-                iCursorPos.iY = iRows - 2 - iFirstVisibleRow;
-                } 
-            }
-        // If the cursor is actually on the last row, but is still in the
-        // area where there is now icons. ( the rest of the last row )
-        if ( ( iConsArray->Count() <= ( iFirstVisibleRow + iCursorPos.iY ) 
-                                        * iMaxColumns + iCursorPos.iX ) &&
-             ( iCursorPos.iY + iFirstVisibleRow + 1 == iRows ) )
-            {
-            iCursorPos.iY--;
-            }
-        // if the corrections did not help and the cursor is in the area
-        // where there is a valid row, but no icons anymore
-        }
-        
-    // to avoid flicker we draw only if there really was something new to draw.
-    if ( update )
-        {              
-        if ( iExtension->iObserver )
-            {
-            iExtension->iObserver->HandleControlEventL( 
-                                      this, 
-                                      MCoeControlObserver::EEventRequestFocus );
-            } 
-        DrawDeferred();    
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationIconMap::Extension
-// -----------------------------------------------------------------------------
-//
-CCmDestinationIconMapExtension* CCmDestinationIconMap::Extension() const
-    {
-    return iExtension;
-    }    
--- a/cmmanager/cmmgr/Framework/Src/cmdestination.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,662 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of RCmDestination
-*
-*/
-
-#include <cmdestination.h>
-#include "cmdestinationimpl.h"
-#include "cmmanagerimpl.h"
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-
-using namespace CMManager;
-
-// -----------------------------------------------------------------------------
-// RCmDestination::Close()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmDestination::Close()
-    {
-    if( !iDestinatonData )
-        {
-        return;
-        }
-
-    iDestinatonData->Cmmgr()->RemoveDestFromPool(iDestinatonData);     
-    iDestinatonData = NULL;
-    }
-    
-
-// -----------------------------------------------------------------------------
-// RCmDestination::~RCmDestination()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmDestination::~RCmDestination()
-    {
-    Close();
-    }
-
-
-// -----------------------------------------------------------------------------
-// RCmDestination::RCmDestination( RCmDestination& )
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmDestination::RCmDestination(
-                                const RCmDestination& aCmDestination)    
-    : iDestinatonData( aCmDestination.iDestinatonData )
-    {
-    iDestinatonData->IncrementRefCounter();
-    }
-
-
-
-// -----------------------------------------------------------------------------
-// RCmDestination::RCmDestination::operator=()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmDestination& RCmDestination::operator=(
-                                const RCmDestination& aCmDestination)
-    {
-    if (this != &aCmDestination) 
-        {
-        delete iDestinatonData;
-        iDestinatonData = aCmDestination.iDestinatonData;        
-        iDestinatonData->IncrementRefCounter();
-        }
-    return *this;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::ConnectionMethodCount()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C TInt RCmDestination::ConnectionMethodCount() const    
-    {
-    __ASSERT_ALWAYS( iDestinatonData, User::Panic(_L( "CMManager" ), KErrBadHandle ) );
-
-    return iDestinatonData->ConnectionMethodCount();
-    };
-        
-// -----------------------------------------------------------------------------
-// RCmDestination::ConnectionMethodL
-// -----------------------------------------------------------------------------
-//     
-EXPORT_C RCmConnectionMethod 
-                            RCmDestination::ConnectionMethodL( TInt anIndex ) const
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    RCmConnectionMethod cm;
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    cm.iImplementation = 
-        aImplementation->GetConnectionMethodL( anIndex )->Plugin();
-    //CCmDestinationImpl::GetConnectionMethodL doesn't give ownership
-    cm.iImplementation->IncrementRefCounter();
-    CleanupStack::PopAndDestroy(aImplementation);
-    
-    return cm;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::ConnectionMethodByIDL
-// -----------------------------------------------------------------------------
-//     
-EXPORT_C RCmConnectionMethod 
-                        RCmDestination::ConnectionMethodByIDL( TInt aIapId ) const
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    RCmConnectionMethod cm;
-    
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    cm.iImplementation = 
-        aImplementation->ConnectionMethodByIDL( aIapId )->Plugin();
-    //CCmDestinationImpl::ConnectionMethodByIDL doesn't give ownership
-    cm.iImplementation->IncrementRefCounter();
-    CleanupStack::PopAndDestroy(aImplementation);
-    
-    return cm;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::PriorityL()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C TUint RCmDestination::PriorityL(const RCmConnectionMethod& aCCMItem ) const
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    TUint retValue = aImplementation->PriorityL( *aCCMItem.iImplementation );
-    CleanupStack::PopAndDestroy(aImplementation);
-    return retValue;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::NameLC()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C HBufC* RCmDestination::NameLC ( ) const
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    HBufC* retValue = aImplementation->NameLC();
-    CleanupStack::Pop(retValue);
-    CleanupStack::PopAndDestroy(aImplementation);
-    CleanupStack::PushL(retValue);
-    return retValue;
-    };
-
-// -----------------------------------------------------------------------------
-// RCmDestination::Id()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C TUint32 RCmDestination::Id() const
-    {
-    __ASSERT_ALWAYS( iDestinatonData, User::Panic(_L( "CMManager" ), 
-                                                  KErrBadHandle ) );
-    
-    return iDestinatonData->Id();
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::ElementId()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C TUint32 RCmDestination::ElementId() const
-    {
-    __ASSERT_ALWAYS( iDestinatonData, User::Panic(_L( "CMManager" ), 
-                                                  KErrBadHandle ) );
-
-    return iDestinatonData->ElementId();
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::IconL()
-// -----------------------------------------------------------------------------
-//      
-EXPORT_C CGulIcon* RCmDestination::IconL() const
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    CGulIcon* retValue = aImplementation->IconL();
-    CleanupStack::PopAndDestroy(aImplementation);
-    return retValue;
-    }
-
-
-// -----------------------------------------------------------------------------
-// RCmDestination::MetadataL()
-// -----------------------------------------------------------------------------
-//      
-EXPORT_C 
-    TUint32 RCmDestination::MetadataL( TSnapMetadataField aMetaField ) const
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    return iDestinatonData->MetadataL( aMetaField );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::ProtectionLevel()
-// -----------------------------------------------------------------------------
-//  
-EXPORT_C TProtectionLevel RCmDestination::ProtectionLevel() const
-    {
-    __ASSERT_ALWAYS( iDestinatonData, User::Panic(_L( "CMManager" ), 
-                                                  KErrBadHandle ) );
-
-    return iDestinatonData->ProtectionLevel();
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::IsHidden()
-// -----------------------------------------------------------------------------
-//          
-EXPORT_C TBool RCmDestination::IsHidden() const
-    {
-    __ASSERT_ALWAYS( iDestinatonData, User::Panic(_L( "CMManager" ), 
-                                                  KErrBadHandle ) );
-
-    TBool hidden( EFalse );
-    TRAPD( err, hidden = iDestinatonData->IsHiddenL() );
-    __ASSERT_ALWAYS( err == KErrNone, User::Panic(_L( "CMManager" ), 
-                                                  KErrArgument ) );
-                                                  
-    return hidden;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::CreateConnectionMethodL()
-// -----------------------------------------------------------------------------
-//  
-EXPORT_C RCmConnectionMethod RCmDestination::CreateConnectionMethodL
-   ( TUint32 aImplementationUid )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    RCmConnectionMethod cm;
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    CCmPluginBase* imp = aImplementation->CreateConnectionMethodL( 
-                                        aImplementationUid );
-    imp->IncrementRefCounter();
-    CleanupStack::PushL(imp);                                    
-    cm.iImplementation = imp->Plugin();
-    CleanupStack::PopAndDestroy(imp);
-    
-    CleanupStack::PopAndDestroy(aImplementation);
-    return cm;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::CreateConnectionMethodL()
-// -----------------------------------------------------------------------------
-//  
-EXPORT_C RCmConnectionMethod RCmDestination::CreateConnectionMethodL( 
-    TUint32 aImplementationUid,
-    TUint32  aConnMethId )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    RCmConnectionMethod cm;
-    CCmDestinationImpl* implementation = 
-                                     CCmDestinationImpl::NewLC( iDestinatonData );
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    CCmPluginBase* imp = implementation->CreateConnectionMethodL( 
-                                                            aImplementationUid,
-                                                            aConnMethId );
-    imp->IncrementRefCounter();
-    CleanupStack::PushL(imp);                                    
-    cm.iImplementation = imp->Plugin();
-    CleanupStack::PopAndDestroy(imp);
-
-    CleanupStack::PopAndDestroy(implementation);
-    return cm;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::AddConnectionMethodL()
-// -----------------------------------------------------------------------------
-// 
-EXPORT_C TInt RCmDestination::AddConnectionMethodL( 
-    RCmConnectionMethod aConnectionMethod )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-        
-    CCmDestinationImpl* implementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-
-    CCmPluginBase* connMethod = new (ELeave) 
-                            CCmPluginBase(aConnectionMethod.iImplementation);
-    connMethod->IncrementRefCounter();    
-    CleanupStack::PushL( connMethod );        
-
-    // Check if the given connection method exists already in this destination
-    if ( aConnectionMethod.iImplementation->IdIsValid() &&
-         implementation->CheckIfCMExistsL( *connMethod ) )
-        {
-        CleanupStack::PopAndDestroy( connMethod );
-        CleanupStack::PopAndDestroy( implementation );
-        User::Leave( KErrAlreadyExists );
-        }
-
-    TInt retValue =  implementation->AddConnectionMethodL( *connMethod );
-    CleanupStack::PopAndDestroy( connMethod );
-    CleanupStack::PopAndDestroy( implementation );
-    return retValue;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::AddEmbeddedDestinationL()
-// -----------------------------------------------------------------------------
-// 
-EXPORT_C TInt RCmDestination::AddEmbeddedDestinationL( 
-    const RCmDestination& aDestination )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    if ( this == &aDestination )
-        {
-        User::Leave( KErrArgument );
-        }
-    
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting will decrement the ref counter
-    aImplementation->IncrementRefCounter();
-    CCmDestinationImpl* aDestToAdd = 
-            CCmDestinationImpl::NewLC(aDestination.iDestinatonData);
-    // Deleting will decrement the ref counter
-    aDestToAdd->IncrementRefCounter();
-        
-    TInt retValue =  aImplementation->AddEmbeddedDestinationL( 
-                                                *aDestToAdd );        
-    CleanupStack::PopAndDestroy(aDestToAdd);
-    CleanupStack::PopAndDestroy(aImplementation);
-    return retValue;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::DeleteConnectionMethodL()
-// -----------------------------------------------------------------------------
-// 
-EXPORT_C void RCmDestination::DeleteConnectionMethodL( 
-    RCmConnectionMethod& aConnectionMethod )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    CCmPluginBase* connMethod = new (ELeave) 
-                            CCmPluginBase(aConnectionMethod.iImplementation);
-    connMethod->IncrementRefCounter();    
-    CleanupStack::PushL( connMethod );        
-    aImplementation->DeleteConnectionMethodL( 
-                                           *connMethod );
-    CleanupStack::PopAndDestroy(connMethod);
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-    
-// -----------------------------------------------------------------------------
-// RCmDestination::RemoveConnectionMethodL()
-// -----------------------------------------------------------------------------
-// 
-EXPORT_C void RCmDestination::RemoveConnectionMethodL( 
-    RCmConnectionMethod aConnectionMethod )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    aImplementation->RemoveConnectionMethodL( 
-                                           *aConnectionMethod.iImplementation );
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-    
-// -----------------------------------------------------------------------------
-// RCmDestination::ModifyPriorityL()
-// -----------------------------------------------------------------------------
-//      
-EXPORT_C void RCmDestination::ModifyPriorityL( 
-    RCmConnectionMethod& aCCmItem, 
-    TUint aIndex )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    CCmPluginBase* connMethod = new (ELeave) 
-                            CCmPluginBase(aCCmItem.iImplementation);
-    connMethod->IncrementRefCounter();    
-    CleanupStack::PushL( connMethod );        
-    aImplementation->ModifyPriorityL( *connMethod, aIndex );
-    CleanupStack::PopAndDestroy(connMethod);
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-    
-// -----------------------------------------------------------------------------
-// RCmDestination::SetNameL()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C void RCmDestination::SetNameL( const TDesC& aName )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    aImplementation->SetNameL( aName );
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::SetIconL()
-// -----------------------------------------------------------------------------
-//      
-EXPORT_C void RCmDestination::SetIconL( TUint32 anIndex )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    if ( anIndex > KNumOfIcons )
-        {
-        User::Leave( KErrArgument );
-        }
-        
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    aImplementation->SetIconL( anIndex );        
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::SetMetadataL()
-// -----------------------------------------------------------------------------
-//      
-EXPORT_C void RCmDestination::SetMetadataL( TSnapMetadataField aMetaField, 
-                                            TUint32 aValue ) 
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    aImplementation->SetMetadataL( aMetaField, aValue );
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::SetProtectionL()
-// -----------------------------------------------------------------------------
-//  
-EXPORT_C void RCmDestination::SetProtectionL( TProtectionLevel aProtLevel )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    aImplementation->SetProtectionL( aProtLevel );
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::SetHiddenL()
-// -----------------------------------------------------------------------------
-//          
-EXPORT_C void RCmDestination::SetHiddenL( TBool aHidden )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    aImplementation->SetHiddenL( aHidden );         
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::UpdateL()
-// -----------------------------------------------------------------------------
-//          
-EXPORT_C void RCmDestination::UpdateL()
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    aImplementation->UpdateL();
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::DeleteLD()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmDestination::DeleteLD()
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    iDestinatonData->IncrementRefCounter();
-    aImplementation->DeleteLD();  
-    CleanupStack::Pop(aImplementation);
-    iDestinatonData = NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::IsConnectedL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmDestination::IsConnectedL() const 
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    TBool retValue = aImplementation->IsConnectedL();    
-    CleanupStack::PopAndDestroy(aImplementation);
-    return retValue;
-    }
-    
-// -----------------------------------------------------------------------------
-// RCmDestination::RCmDestination
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmDestination::RCmDestination()    
-    : iDestinatonData( NULL )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestination::operator==
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmDestination::operator==(const RCmDestination& aDestination ) const
-    {
-    return ( iDestinatonData == aDestination.iDestinatonData );
-    };
-
-// -----------------------------------------------------------------------------
-// RCmDestination::operator!=
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmDestination::operator!=(const RCmDestination& aDestination ) const
-    {
-    return !( iDestinatonData == aDestination.iDestinatonData );
-    };
-    
-// End of file
--- a/cmmanager/cmmgr/Framework/Src/cmdestinationext.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,665 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of RCmDestinationExt
-*
-*/
-
-#include <cmdestinationext.h>
-#include "cmdestinationimpl.h"
-#include <cmconnectionmethodext.h>
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-#include "cmmanagerimpl.h"
-
-using namespace CMManager;
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::Close()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmDestinationExt::Close()
-    {
-    if( !iDestinatonData )
-        {
-        return;
-        }
-
-    iDestinatonData->Cmmgr()->RemoveDestFromPool(iDestinatonData);     
-    iDestinatonData = NULL;
-    }
-    
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::~RCmDestinationExt()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmDestinationExt::~RCmDestinationExt()
-    {
-    Close();
-    }
-
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::RCmDestinationExt( RCmDestinationExt& )
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmDestinationExt::RCmDestinationExt(
-                                const RCmDestinationExt& aCmDestination)    
-    : iDestinatonData( aCmDestination.iDestinatonData )
-    {
-    iDestinatonData->IncrementRefCounter();
-    }
-
-
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::RCmDestinationExt::operator=()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmDestinationExt& RCmDestinationExt::operator=(
-                                const RCmDestinationExt& aCmDestination)
-    {
-    if (this != &aCmDestination) 
-        {
-        Close();
-        iDestinatonData = aCmDestination.iDestinatonData;        
-        iDestinatonData->IncrementRefCounter();
-        }
-    return *this;
-    }
-    
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::ConnectionMethodCount()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C TInt RCmDestinationExt::ConnectionMethodCount()    
-    {
-    __ASSERT_ALWAYS( iDestinatonData, User::Panic(_L( "CMManager" ), 
-                                                  KErrBadHandle ) );
-
-    return iDestinatonData->ConnectionMethodCount();
-    };
-    
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::ConnectionMethodL
-// -----------------------------------------------------------------------------
-//     
-EXPORT_C RCmConnectionMethodExt 
-                            RCmDestinationExt::ConnectionMethodL( TInt anIndex )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    RCmConnectionMethodExt cm;
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    cm.iImplementation = 
-        aImplementation->GetConnectionMethodL( anIndex )->Plugin();
-    //CCmDestinationImpl::GetConnectionMethodL doesn't give ownership
-    cm.iImplementation->IncrementRefCounter();
-    CleanupStack::PopAndDestroy(aImplementation);    
-    return cm;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::ConnectionMethodByIDL
-// -----------------------------------------------------------------------------
-//     
-EXPORT_C RCmConnectionMethodExt 
-                        RCmDestinationExt::ConnectionMethodByIDL( TInt aIapId )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    RCmConnectionMethodExt cm;
-    
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    cm.iImplementation = 
-        aImplementation->ConnectionMethodByIDL( aIapId )->Plugin();
-    //CCmDestinationImpl::ConnectionMethodByIDL doesn't give ownership
-    cm.iImplementation->IncrementRefCounter();
-    CleanupStack::PopAndDestroy(aImplementation);
-    
-    return cm;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::PriorityL()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C TUint RCmDestinationExt::PriorityL(const RCmConnectionMethodExt& aCCMItem )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    TUint retValue = aImplementation->PriorityL( *aCCMItem.iImplementation );
-    CleanupStack::PopAndDestroy(aImplementation);
-    return retValue;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::NameLC()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C HBufC* RCmDestinationExt::NameLC ( )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    HBufC* retValue = aImplementation->NameLC();
-    CleanupStack::Pop(retValue);
-    CleanupStack::PopAndDestroy(aImplementation);
-    CleanupStack::PushL(retValue);
-    return retValue;
-    };
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::Id()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C TUint32 RCmDestinationExt::Id() 
-    {
-    __ASSERT_ALWAYS( iDestinatonData, User::Panic(_L( "CMManager" ), 
-                                                  KErrBadHandle ) );
-
-    return iDestinatonData->Id();
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::ElementId()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C TUint32 RCmDestinationExt::ElementId() 
-    {
-    __ASSERT_ALWAYS( iDestinatonData, User::Panic(_L( "CMManager" ), 
-                                                  KErrBadHandle ) );
-
-    return iDestinatonData->ElementId();
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::IconL()
-// -----------------------------------------------------------------------------
-//      
-EXPORT_C CGulIcon* RCmDestinationExt::IconL() 
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    CGulIcon* retValue = aImplementation->IconL();
-    CleanupStack::PopAndDestroy(aImplementation);
-    return retValue;
-    }
-
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::MetadataL()
-// -----------------------------------------------------------------------------
-//      
-EXPORT_C 
-    TUint32 RCmDestinationExt::MetadataL( TSnapMetadataField aMetaField ) const
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    return iDestinatonData->MetadataL( aMetaField );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::ProtectionLevel()
-// -----------------------------------------------------------------------------
-//  
-EXPORT_C TProtectionLevel RCmDestinationExt::ProtectionLevel()
-    {
-    __ASSERT_ALWAYS( iDestinatonData, User::Panic(_L( "CMManager" ), 
-                                                  KErrBadHandle ) );
-
-    return iDestinatonData->ProtectionLevel();
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::IsHidden()
-// -----------------------------------------------------------------------------
-//          
-EXPORT_C TBool RCmDestinationExt::IsHidden()
-    {
-    __ASSERT_ALWAYS( iDestinatonData, User::Panic(_L( "CMManager" ), 
-                                                  KErrBadHandle ) );
-
-    TBool hidden( EFalse );
-    TRAPD( err, hidden = iDestinatonData->IsHiddenL() );
-    __ASSERT_ALWAYS( err == KErrNone, User::Panic(_L( "CMManager" ), 
-                                                  KErrArgument ) );
-                                                  
-    return hidden;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::CreateConnectionMethodL()
-// -----------------------------------------------------------------------------
-//  
-EXPORT_C RCmConnectionMethodExt 
-        RCmDestinationExt::CreateConnectionMethodL( TUint32 aImplementationUid )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    RCmConnectionMethodExt cm;
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    CCmPluginBase* imp = aImplementation->CreateConnectionMethodL( 
-                                        aImplementationUid );
-    imp->IncrementRefCounter();
-    CleanupStack::PushL(imp);                                    
-    cm.iImplementation = imp->Plugin();
-    CleanupStack::PopAndDestroy(imp);
-    
-    CleanupStack::PopAndDestroy(aImplementation);
-    return cm;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::CreateConnectionMethodL()
-// -----------------------------------------------------------------------------
-//  
-EXPORT_C RCmConnectionMethodExt RCmDestinationExt::CreateConnectionMethodL( 
-    TUint32 aImplementationUid,
-    TUint32  aConnMethId )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    RCmConnectionMethodExt cm;
-    CCmDestinationImpl* implementation = 
-                                     CCmDestinationImpl::NewLC( iDestinatonData );
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    CCmPluginBase* imp = implementation->CreateConnectionMethodL( 
-                                                            aImplementationUid,
-                                                            aConnMethId );
-    imp->IncrementRefCounter();
-    CleanupStack::PushL(imp);                                    
-    cm.iImplementation = imp->Plugin();
-    CleanupStack::PopAndDestroy(imp);
-
-    CleanupStack::PopAndDestroy(implementation);
-    return cm;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::AddConnectionMethodL()
-// -----------------------------------------------------------------------------
-// 
-EXPORT_C TInt RCmDestinationExt::AddConnectionMethodL( 
-                                      RCmConnectionMethodExt aConnectionMethod )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-        
-    CCmDestinationImpl* implementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-
-    CCmPluginBase* connMethod = new (ELeave) 
-                            CCmPluginBase(aConnectionMethod.iImplementation);
-    connMethod->IncrementRefCounter();    
-    CleanupStack::PushL( connMethod );        
-
-    // Check if the given connection method exists already in this destination
-    if ( aConnectionMethod.iImplementation->IdIsValid() &&
-         implementation->CheckIfCMExistsL( *connMethod ) )
-        {
-        CleanupStack::PopAndDestroy( connMethod );
-        CleanupStack::PopAndDestroy( implementation );
-        User::Leave( KErrAlreadyExists );
-        }
-
-    TInt retValue =  implementation->AddConnectionMethodL( *connMethod );
-    CleanupStack::PopAndDestroy( connMethod );
-    CleanupStack::PopAndDestroy( implementation );
-    return retValue;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::AddEmbeddedDestinationL()
-// -----------------------------------------------------------------------------
-// 
-EXPORT_C TInt RCmDestinationExt::AddEmbeddedDestinationL( 
-                                           const RCmDestinationExt& aDestination )
-    {
-    if ( !iDestinatonData )
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    if ( this == &aDestination )
-        {
-        User::Leave( KErrArgument );
-        }
-    
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting will decrement the ref counter
-    aImplementation->IncrementRefCounter();
-    CCmDestinationImpl* aDestToAdd = 
-            CCmDestinationImpl::NewLC(aDestination.iDestinatonData);
-    // Deleting will decrement the ref counter
-    aDestToAdd->IncrementRefCounter();
-        
-    TInt retValue =  aImplementation->AddEmbeddedDestinationL( 
-                                                *aDestToAdd );        
-    CleanupStack::PopAndDestroy(aDestToAdd);
-    CleanupStack::PopAndDestroy(aImplementation);
-    return retValue;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::DeleteConnectionMethodL()
-// -----------------------------------------------------------------------------
-// 
-EXPORT_C void RCmDestinationExt::DeleteConnectionMethodL( 
-                                      RCmConnectionMethodExt& aConnectionMethod )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    CCmPluginBase* connMethod = new (ELeave) 
-                            CCmPluginBase(aConnectionMethod.iImplementation);
-    connMethod->IncrementRefCounter();    
-    CleanupStack::PushL( connMethod );        
-    aImplementation->DeleteConnectionMethodL( 
-                                           *connMethod );
-    CleanupStack::PopAndDestroy(connMethod);
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-    
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::RemoveConnectionMethodL()
-// -----------------------------------------------------------------------------
-// 
-EXPORT_C void RCmDestinationExt::RemoveConnectionMethodL( 
-                                      RCmConnectionMethodExt aConnectionMethod )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    aImplementation->RemoveConnectionMethodL( 
-                                           *aConnectionMethod.iImplementation );
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-    
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::ModifyPriorityL()
-// -----------------------------------------------------------------------------
-//      
-EXPORT_C void RCmDestinationExt::ModifyPriorityL( 
-                                                RCmConnectionMethodExt& aCCmItem, 
-                                                TUint aIndex )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    CCmPluginBase* connMethod = new (ELeave) 
-                            CCmPluginBase(aCCmItem.iImplementation);
-    connMethod->IncrementRefCounter();    
-    CleanupStack::PushL( connMethod );        
-    aImplementation->ModifyPriorityL( *connMethod, aIndex );
-    CleanupStack::PopAndDestroy(connMethod);
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-    
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::SetNameL()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C void RCmDestinationExt::SetNameL( const TDesC& aName )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    aImplementation->SetNameL( aName );
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::SetIconL()
-// -----------------------------------------------------------------------------
-//      
-EXPORT_C void RCmDestinationExt::SetIconL( TUint32 anIndex )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-        
-    if ( anIndex > KNumOfIcons )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    aImplementation->SetIconL( anIndex );        
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::SetMetadataL()
-// -----------------------------------------------------------------------------
-//      
-EXPORT_C void RCmDestinationExt::SetMetadataL( TSnapMetadataField aMetaField, 
-		                                       TUint32 aValue ) 
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    aImplementation->SetMetadataL( aMetaField, aValue );
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::SetProtectionL()
-// -----------------------------------------------------------------------------
-//  
-EXPORT_C void RCmDestinationExt::SetProtectionL( TProtectionLevel aProtLevel )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    aImplementation->SetProtectionL( aProtLevel );
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::SetHiddenL()
-// -----------------------------------------------------------------------------
-//          
-EXPORT_C void RCmDestinationExt::SetHiddenL( TBool aHidden )
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    aImplementation->SetHiddenL( aHidden );         
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::UpdateL()
-// -----------------------------------------------------------------------------
-//          
-EXPORT_C void RCmDestinationExt::UpdateL()
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    aImplementation->UpdateL();
-    CleanupStack::PopAndDestroy(aImplementation);
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::DeleteLD()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmDestinationExt::DeleteLD()
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    iDestinatonData->IncrementRefCounter();
-    aImplementation->DeleteLD();  
-    CleanupStack::Pop(aImplementation);
-    iDestinatonData = NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::IsConnectedL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmDestinationExt::IsConnectedL() const 
-    {
-    if (!iDestinatonData)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    iDestinatonData->IncrementRefCounter();
-    TBool retValue = aImplementation->IsConnectedL();    
-    CleanupStack::PopAndDestroy(aImplementation);
-    return retValue;
-    }
-    
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::RCmDestinationExt
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmDestinationExt::RCmDestinationExt()    
-    : iDestinatonData( NULL )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::operator==
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmDestinationExt::operator==(const RCmDestinationExt& aDestination ) const
-    {
-    return ( iDestinatonData == aDestination.iDestinatonData );
-    };
-
-// -----------------------------------------------------------------------------
-// RCmDestinationExt::operator!=
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmDestinationExt::operator!=(const RCmDestinationExt& aDestination ) const
-    {
-    return !( iDestinatonData == aDestination.iDestinatonData );
-    };
-    
-// End of file
--- a/cmmanager/cmmgr/Framework/Src/cmdestinationimpl.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3500 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CCmDestinationImpl
-*
-*/
-
-#include "cmdestinationimpl.h"
-#include "cmmanagerimpl.h"
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-#include <cmmanager.h>
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <commsdattypeinfov1_1_internal.h>
-#include <commsdattypesv1_1_partner.h> 
-#endif
-#include "cmlogger.h"
-#include "cmmanager.hrh"
-#include <cmcommonconstants.h>
-#include "datamobilitycommsdattypes.h"
-#include <cmpluginembdestinationdef.h>
-#include <cmmanagerdef.h>
-#include <data_caging_path_literals.hrh>
-#include <cmmanager.rsg>
-#include <cmmanager.mbg>   // icons
-#include <AknsUtils.h>
-#include <e32cmn.h>
-
-// System includes
-#include <ecom/ecom.h>        // For REComSession
-#include <commsdattypesv1_1.h>
-
-#include <in_sock.h>
-
-using namespace CMManager;
-using namespace CommsDat;
-
-const TUint KDefaultTierManagerTagId = KAfInet;
-
-const TInt KDestinationIconConvTable[][4] = {
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnIndiSettProtectedAdd,
-      EMbmCmmanagerQgn_prop_set_conn_dest_internet, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_internet_mask },
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_wap, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_wap_mask },                   
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_mms, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_mms_mask },
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_intranet, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_intranet_mask },          
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_operator, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_operator_mask },
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon1, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon1_mask },     
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon2, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon2_mask },
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon3, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon3_mask },            
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon4, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon4_mask },       
-
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon5, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon5_mask }, 
-             
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon6, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon6_mask }, 
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_default, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_default_mask },            
-    {0, 0, 0, 0}
-    };
-
-// ================= MEMBER FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::NewL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CCmDestinationImpl* 
-                           CCmDestinationImpl::NewL( CCmManagerImpl& aCmMgr,
-                                                     const TDesC& aName )
-    {
-    CCmDestinationImpl* dest = 
-                    new (ELeave) CCmDestinationImpl( aCmMgr );
-    CleanupStack::PushL( dest );
-    
-    dest->ConstructL( aName );
-    
-    CleanupStack::Pop( dest );
-    return dest;        
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::NewL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CCmDestinationImpl* 
-                        CCmDestinationImpl::NewL( CCmManagerImpl& aCmMgr,
-                                                  TUint aDestinationId )
-    {
-    CCmDestinationImpl* dest = 
-                    new (ELeave) CCmDestinationImpl( aCmMgr );
-    CleanupStack::PushL( dest );
-    
-    dest->ConstructL( aDestinationId );
-    
-    CleanupStack::Pop( dest );
-    return dest;        
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::NewL()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationImpl* CCmDestinationImpl::NewL( CCmManagerImpl& aCmMgr,
-                                              CCmDestinationData* aData )
-    {
-    CCmDestinationImpl* dest = 
-                    new (ELeave) CCmDestinationImpl( aCmMgr );
-    dest->iData = aData;
-    return dest;        
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::NewL()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationImpl* CCmDestinationImpl::NewL( CCmManagerImpl& aCmMgr,
-                                              const TDesC& aName,
-                                              TUint32 aDestId)
-    {
-    CCmDestinationImpl* dest = 
-                              new (ELeave) CCmDestinationImpl( aCmMgr );
-    CleanupStack::PushL( dest );
-
-    dest->ConstructL( aName, aDestId );
-
-    CleanupStack::Pop( dest );
-    return dest;        
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::NewLC()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationImpl* CCmDestinationImpl::NewLC( CCmDestinationData* aData )
-    {
-    CCmDestinationImpl* dest = 
-                    new (ELeave) CCmDestinationImpl( aData->iCmMgr );
-    CleanupStack::PushL( dest );
-    dest->iData = aData;
-    return dest;        
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CCmDestinationImpl()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationImpl::CCmDestinationImpl( CCmManagerImpl& aCmMgr )
-    : iCmMgr( aCmMgr )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationData::CCmDestinationData()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationData::CCmDestinationData( CCmManagerImpl& aCmMgr )
-    : iCmMgr( aCmMgr ),
-    iNewWithId ( EFalse )
-    {
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationData::~CCmDestinationData()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationData::~CCmDestinationData()
-    {
-    delete iMetaDataRec;
-    delete iNetworkRecord;
-    delete iDestAPRecord;
-
-    if (iConnMethodArray)
-        {
-        ResetAndDestroyArray( iConnMethodArray, ETrue );        
-        }
-    if (iDeleteCmArray)
-        {
-        ResetAndDestroyArray( iDeleteCmArray, ETrue );        
-        }
-    
-    CLOG_CLOSE;
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::~CCmDestinationImpl()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationImpl::~CCmDestinationImpl()
-    {
-    if (iData)
-        {
-        if (GetRefCounter())
-            {
-            iCmMgr.RemoveDestFromPool(this);        
-            }
-        else //if leaves during construction refcounter is 0
-            {
-            delete iData; 
-            }        
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConstructL()
-// -----------------------------------------------------------------------------
-//    
-void CCmDestinationImpl::ConstructL( const TDesC& aName )
-    {
-    CLOG_CREATE;
-    CLOG_NAME_2( _L("Destination_0x%x_%S"), this, &aName );
-    
-    iData =  new (ELeave) CCmDestinationData(iCmMgr);
-    iData->iNetworkRecord = static_cast<CCDNetworkRecord *>(
-                         CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) );
-    
-    iData->iConnMethodArray = new (ELeave) CCmArray( KCmArrayBigGranularity );
-    iData->iDeleteCmArray = new (ELeave) CCmArray( KCmArrayBigGranularity );
-    
-    iData->iMetaDataRec = new (ELeave) CCDSNAPMetadataRecord( 
-                                       iCmMgr.IconTableId() );
-
-    iData->iDestAPRecord = static_cast<CCDAccessPointRecord *>(
-                    CCDRecordBase::RecordFactoryL( KCDTIdAccessPointRecord ) );
-
-    SetNameL( aName );
-
-    InitializeDestAPRecordL();
-
-    CPluginItem* item = new (ELeave) CPluginItem;
-    CleanupStack::PushL( item );
-
-    // create the new record
-    item->iDNRecord = iCmMgr.SNAPRecordL( 0 );
-    CleanupStack::PushL( item->iDNRecord );
-    
-    AddToArrayL( item );
-    
-    CleanupStack::Pop( 2, item );  // iDNRecord, item
-    iData->iIdIsValid = EFalse;// the Id is still zero here
-    } 
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConstructL()
-// -----------------------------------------------------------------------------
-//    
-void CCmDestinationImpl::ConstructL( const TDesC& aName, TUint32 aDestId )
-    {
-    CLOG_CREATE;
-    CLOG_NAME_2( _L("Destination_0x%x_%S"), this, &aName );
-
-    iData =  new (ELeave) CCmDestinationData(iCmMgr);
-    iData->iNetworkRecord = static_cast<CCDNetworkRecord *>(
-                    CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) );
-
-    iData->iConnMethodArray = new (ELeave) CCmArray( KCmArrayBigGranularity );
-    iData->iDeleteCmArray = new (ELeave) CCmArray( KCmArrayBigGranularity );
-
-    iData->iMetaDataRec = new (ELeave) CCDSNAPMetadataRecord( iCmMgr.IconTableId() );
-
-    iData->iDestAPRecord = static_cast<CCDAccessPointRecord *>(
-                    CCDRecordBase::RecordFactoryL( KCDTIdAccessPointRecord ) );
-
-    SetNameL( aName );
-    
-    TInt correctAPId = aDestId;
-    TInt correctNetworkId = aDestId;
-	
-    if ( aDestId > 0 && aDestId < 255 )
-        {
-        correctAPId = aDestId + KCmDefaultDestinationAPTagId;
-        }
-    else if ( aDestId > KCmDefaultDestinationAPTagId 
-              && ( aDestId < ( KCmDefaultDestinationAPTagId+255 ) ) )
-        {
-        correctNetworkId = aDestId - KCmDefaultDestinationAPTagId;
-        }
-    else
-        {
-        User::Leave( KErrArgument );
-        }
-    
-    SetIdL( correctAPId );
-
-    InitializeDestAPRecordL();
-
-    CPluginItem* item = new (ELeave) CPluginItem;
-    CleanupStack::PushL( item );
-
-    // create the new record
-    iData->iNetworkRecord->SetRecordId( correctNetworkId );
-    iData->iNewWithId = ETrue;
-    item->iDNRecord = iCmMgr.SNAPRecordL( 0 );
-    CleanupStack::PushL( item->iDNRecord );
-
-    AddToArrayL( item );
-
-    CleanupStack::Pop( 2, item );  // iDNRecord, item
-    iData->iIdIsValid = EFalse;// the Id is still zero here
-    } 
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetIdL()
-// -----------------------------------------------------------------------------
-//        
-void CCmDestinationImpl::SetIdL( TInt aDestId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetIdL" );
-
-    TInt correctAPId( aDestId );
-    if ( aDestId > 0 && aDestId < 255 )
-        {
-        correctAPId = aDestId + KCmDefaultDestinationAPTagId;
-        }
-    else if ( aDestId < KCmDefaultDestinationAPTagId + 1
-             || aDestId > KCmDefaultDestinationAPTagId + 255 )
-        {
-        User::Leave( KErrArgument );
-        }
-        
-    CheckIfDestinationIdExistsL( correctAPId );
-
-    iData->iDestAPRecord->iRecordTag = correctAPId;
-    };
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfDestinationIdExistsL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::CheckIfDestinationIdExistsL( TUint32 aDestId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CheckIfDestinationNameExistL" );
-
-    CMDBRecordSet<CCDAccessPointRecord>*  ptrRecordSet = 
-          new (ELeave) CMDBRecordSet<CCDAccessPointRecord>( KCDTIdAccessPointRecord );
-    CleanupStack::PushL( ptrRecordSet );    
-
-    // Prime record
-    CCDAccessPointRecord* record = static_cast<CCDAccessPointRecord *>
-                                   ( CCDRecordBase::RecordFactoryL( KCDTIdAccessPointRecord ) );
-    CleanupStack::PushL( record );
-
-    record->iRecordTag = ( TInt )aDestId;
-
-    ptrRecordSet->iRecords.AppendL( record );
-
-    CleanupStack::Pop( record );
-    record = NULL;
-
-    if ( ptrRecordSet->FindL( Session() ) )
-        {
-        User::Leave( KErrAlreadyExists );      
-        }
-
-    ptrRecordSet->iRecords.ResetAndDestroy();
-    CleanupStack::PopAndDestroy( ptrRecordSet );
-
-    iData->iDestAPRecord->iRecordTag = aDestId;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfDestinationNameExistL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::CheckIfDestinationNameExistL( const TDesC& aName )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CheckIfDestinationNameExistL" );
-    
-    CMDBRecordSet<CCDSnapRecord>*  ptrRecordSet = 
-                            new (ELeave) CMDBRecordSet<CCDSnapRecord>( 
-                                 iCmMgr.DestinationTableId() );
-    CleanupStack::PushL( ptrRecordSet );    
-    
-    // Prime record
-    CCDSnapRecord* record = iCmMgr.SNAPRecordL( 0 );
-    CleanupStack::PushL( record );
-    
-    record->iRecordName.SetL( aName );
-    
-    ptrRecordSet->iRecords.AppendL( record );
-
-    CleanupStack::Pop( record );
-    record = NULL;
-                
-    if ( ptrRecordSet->FindL( Session() ) )
-        {
-        User::Leave( KErrAlreadyExists );          
-        }
-        
-    ptrRecordSet->iRecords.ResetAndDestroy();
-    CleanupStack::PopAndDestroy( ptrRecordSet );            
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConstructL()
-// -----------------------------------------------------------------------------
-//    
-void CCmDestinationImpl::ConstructL( TUint aDestinationId )
-    {
-    CLOG_CREATE;
-    CLOG_NAME_2( _L("Destination_0x%x_%d"), this, aDestinationId );
-    iData =  new (ELeave) CCmDestinationData(iCmMgr);
-    OpenTransactionLC();
-    
-    iData->iNetworkRecord = static_cast<CCDNetworkRecord *>(
-                         CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) );
-
-    iData->iDestAPRecord = static_cast<CCDAccessPointRecord *>(
-                         CCDRecordBase::RecordFactoryL( KCDTIdAccessPointRecord ) );
-    
-    iData->iConnMethodArray = new (ELeave) CCmArray( KCmArrayBigGranularity );
-    iData->iDeleteCmArray = new (ELeave) CCmArray( KCmArrayBigGranularity );
-
-    TInt correctAPId = aDestinationId;
-    TInt correctNetworkId = aDestinationId;
-	
-    if ( aDestinationId > 0 && aDestinationId < 255 )
-        {
-        correctAPId = aDestinationId + KCmDefaultDestinationAPTagId;
-        }
-    else if ( aDestinationId > KCmDefaultDestinationAPTagId 
-              && ( aDestinationId < ( KCmDefaultDestinationAPTagId+255 ) ) )
-        {
-        correctNetworkId = aDestinationId - KCmDefaultDestinationAPTagId;
-        }
-    else
-        {
-        User::Leave( KErrArgument );
-        }
-        
-    LoadDestAPRecordL( correctAPId );
-    
-    LoadNetworkRecordL( correctNetworkId );
-
-    LoadConnectionMethodsL();
-    LoadSNAPMetadataTableL();
-    
-    RollbackTransaction();
-    
-    iData->iIdIsValid = ETrue;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::Session()
-// -----------------------------------------------------------------------------
-//        
-CMDBSession& CCmDestinationImpl::Session()const
-    {
-    return iCmMgr.Session();
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmDestinationImpl::OpenTransactionLC
-// ---------------------------------------------------------------------------
-//
-void CCmDestinationImpl::OpenTransactionLC()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::OpenTransactionL" );
-    // Do NOT call OpenTransactionLC() more then once!
-    iCmMgr.OpenTransactionLC( ETrue );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDestinationImpl::CommitTransactionL
-// ---------------------------------------------------------------------------
-//
-void CCmDestinationImpl::CommitTransactionL( TInt aError )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CommitTransactionL" );
-    
-    iCmMgr.CommitTransactionL( aError );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDestinationImpl::RollbackTransaction
-// ---------------------------------------------------------------------------
-//
-void CCmDestinationImpl::RollbackTransaction()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::RollbackTransaction" );
-    
-    iCmMgr.RollbackTransaction();
-    }
-
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::NameLC()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C HBufC* CCmDestinationImpl::NameLC( )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::NameLC" );
-
-    HBufC* name = NULL;
-    const TUint32 KSnapMetadataNameMask = 0x0000000F;
-
-    TUint32 val = TUint32(iData->iMetaDataRec->iMetadata) & KSnapMetadataNameMask;
-    TUint32 val2 = (TUint32(iData->iMetaDataRec->iMetadata) & ESnapMetadataDestinationIsLocalised)
-                     >> 4;                   
-    
-    if( (val == ESnapMetadataInternet) ||
-        (val2 == ELocalisedDestInternet) )
-        {
-        name = iCmMgr.AllocReadL( R_CMMANAGERUI_DEST_INTERNET );
-        }
-    else if ( val2 == ELocalisedDestWap )
-        {
-        name = iCmMgr.AllocReadL( R_CMMANAGERUI_DEST_WAP );
-        }
-    else if ( val2 == ELocalisedDestMMS )
-        {
-        name = iCmMgr.AllocReadL( R_CMMANAGERUI_DEST_MMS );
-        }
-    else if ( val2 == ELocalisedDestIntranet )
-        {
-        name = iCmMgr.AllocReadL( R_CMMANAGERUI_DEST_INTRANET );
-        }
-    else
-        {
-        name = TPtrC(iData->iNetworkRecord->iRecordName).AllocL();
-        }
-        
-    CleanupStack::PushL( name );
-        
-    return name;
-    };
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetNameL()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C void CCmDestinationImpl::SetNameL( const TDesC& aName )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetNameL" );
-
-    // Destination cannot be renamed if it's
-    // - protected
-    // - Internet    
-    if ( ProtectionLevel() == EProtLevel1 ||
-         ProtectionLevel() == EProtLevel2 ||
-         MetadataL( ESnapMetadataInternet ) )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-
-    OpenTransactionLC();
-    CheckIfDestinationNameExistL( aName );
-    CommitTransactionL( KErrNone );        
-
-    iData->iNetworkRecord->iRecordName.SetL( aName );
-    iData->iDestAPRecord->iRecordName.SetL( aName );
-    };
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConnectionMethodCount()
-// -----------------------------------------------------------------------------
-//        
-TInt CCmDestinationData::ConnectionMethodCount()
-    {    
-    LOGGER_ENTERFN( "CCmDestinationImpl::ConnectionMethodCount" );
-
-    return iConnMethodArray->Count() - KCmInitIndex;
-    };
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConnectionMethodCount()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C TInt CCmDestinationImpl::ConnectionMethodCount()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::ConnectionMethodCount" );
-    
-    return iData->ConnectionMethodCount();
-    };
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConnectionMethodL
-// -----------------------------------------------------------------------------
-//     
-EXPORT_C CCmPluginBaseEng* CCmDestinationImpl::ConnectionMethodL( TInt /*aIndex*/ )
-    {
-    LOGGER_ENTERFN( "Error: Obsolete function CCmDestinationImpl::ConnectionMethodL used" );
-    User::Panic( _L("CMManager"), KErrNotSupported );
-    return NULL;    
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConnectionMethodL
-// -----------------------------------------------------------------------------
-//     
-EXPORT_C CCmPluginBase* CCmDestinationImpl::GetConnectionMethodL( TInt aIndex )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::ConnectionMethodL" );
-    // Initial entry!
-   
-    CCmPluginBase* retVal = NULL;    
-    TInt index = KCmInitIndex + aIndex;
-    CPluginItem* item = (*(iData->iConnMethodArray))[index];
-
-    LoadPluginL( *item );
-    retVal = item->iPlugin;
-    
-    return retVal;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConnectionMethodByIDL
-// -----------------------------------------------------------------------------
-//     
-CCmPluginBase* CCmDestinationImpl::ConnectionMethodByIDL( TUint32 aCmId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::ConnectionMethodByIDL" );
-
-    TInt found = ConnectionMethodIndex( aCmId );
-
-    if( found == KErrNotFound )
-        {
-        User::Leave( KErrNotFound );
-        }
-        
-    CPluginItem* item = (*(iData->iConnMethodArray))[found];
-
-    LoadPluginL( *item );
-    
-    return item->iPlugin;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConnectMethodIdArrayL
-// -----------------------------------------------------------------------------
-//     
-void CCmDestinationImpl::ConnectMethodIdArrayL( RArray<TUint32>& aCmIds )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::ConnectMethodIdArrayL" );
-
-    TInt count = iData->iConnMethodArray->Count();    
-
-    for( TInt i = KCmInitIndex; i < count; ++i )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-
-        TUint32 elementId = item->iDNRecord->iIAP ?
-                          RECORD_FROM_ELEMENT_ID( TUint32(item->iDNRecord->iIAP) ) :
-                          TUint32( item->iDNRecord->iEmbeddedSNAP );
-                          
-        User::LeaveIfError( aCmIds.Append( elementId ) );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::AddToArrayL
-// -----------------------------------------------------------------------------
-// 
-TInt CCmDestinationImpl::AddToArrayL( CPluginItem* aItem )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::AddToArrayL" );
-
-    TInt count = iData->iConnMethodArray->Count();    
-    if ( 0 == count  )
-        {
-        iData->iConnMethodArray->AppendL( aItem );
-        CLOG_WRITE_1( "inserted: [%d]", count );
-        return count;
-        }
-        
-    // Fill in SNAP record with IAP/EmbSNAP/SNAP values    
-    TMDBElementId iapElemetid( 0 );
-    TInt embDestId( 0 );
-
-    // No plugin means this is the template record.
-    TBool isDestination = aItem->iPlugin->GetBoolAttributeL( ECmDestination );
-    if ( isDestination )
-        {
-        embDestId = aItem->iPlugin->Destination()->Id();    
-        }
-    else
-        {
-        iapElemetid = aItem->iPlugin->IAPRecordElementId();   
-        }
-        
-    aItem->iDNRecord->iIAP = iapElemetid;
-    aItem->iDNRecord->iEmbeddedSNAP = embDestId;
-
-    TUint32 prio = 0;
-    TUint32 bearerType = 0;
-    TUint32 extLevel = 0;
-    
-    TBool isVirtual( EFalse );
-    
-    if ( count == KCmInitIndex )
-        {
-        if( !aItem->iDNRecord->iIAP && !aItem->iDNRecord->iEmbeddedSNAP )
-            {
-            iData->iConnMethodArray->AppendL( aItem );
-            }
-        else
-            {
-            isVirtual = PrioDataL( aItem, prio, bearerType, extLevel );
-            aItem->iDNRecord->iPriority = prio;
-            iData->iConnMethodArray->AppendL( aItem );
-            }
-        return count;
-        }
-    
-    TInt insertedAt( -1 );
-
-    if ( !isDestination )
-        {
-        // This function returns the info necessary for determining the priority
-        // It is the cm data in none VPN case 
-        // It is the data of the underlying cm in case of VPN over cm
-        // It is wildcard prio in case of VPN over destination
-        isVirtual = PrioDataL( aItem, prio, bearerType, extLevel );
-
-        CLOG_WRITE_3( "inserted item prio: [%d], bearer: [%x] ext: [%d]", 
-                       prio, bearerType, extLevel );
-
-        // wildcard priority goes to back
-        if ( KDataMobilitySelectionPolicyPriorityWildCard == prio ) 
-            {
-            // Set the default priority of a wildcard bearer
-            aItem->iDNRecord->iPriority = prio;
-            }   
-        else 
-            {
-            insertedAt = InsertSameMethodL( bearerType, isVirtual );
-            if( insertedAt == -1 )
-                {
-                insertedAt = InsertPriorityMethodL( prio, extLevel );
-                }
- 
-            } // if wildcard
-        } // if !destination
-   
-    if( insertedAt == -1 )
-        {
-        //Add to the end of the list        
-        iData->iConnMethodArray->AppendL( aItem );
-        insertedAt = iData->iConnMethodArray->Count()-1;
-        CLOG_WRITE_1( "inserted as last: [%d]", insertedAt );
-        }
-    else
-        {
-        iData->iConnMethodArray->InsertL( insertedAt, aItem );
-        }    
-
-    CLOG_WRITE_1( "inserted at: [%d]", insertedAt );
-        
-    return insertedAt;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::PrioDataL
-// -----------------------------------------------------------------------------
-// 
-TBool CCmDestinationImpl::PrioDataL( CPluginItem* aItem,  TUint32& aRetPrio, 
-                                     TUint32& aRetBearer, TUint32& aRetExtLevel )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::PrioDataL" );
-
-    // Gets the data affecting the priority of the plugin in the list.
-    // It means the VPN priory based on the barer priority of the underlying cm
-    // or "wildcard" if VPN points to a destination      
-    aRetPrio   = aItem->iPlugin->GetIntAttributeL( ECmDefaultPriority );
-    aRetBearer = aItem->iPlugin->GetIntAttributeL( ECmBearerType );
-    aRetExtLevel = aItem->iPlugin->GetIntAttributeL( ECmExtensionLevel );
-    
-    TBool isVirtual = aItem->iPlugin->GetBoolAttributeL( ECmVirtual );
-    if( isVirtual )
-        {
-        // Embeded destination is also virtual but further checking should
-        // not be done. 
-        TBool isDestination = aItem->iPlugin->GetBoolAttributeL( ECmDestination );
-        if( !isDestination )
-            {
-            TUint32 underlying = aItem->iPlugin->GetIntAttributeL( 
-                                                           ECmNextLayerIapId );
-            if ( underlying != 0 )
-                {
-                // Gets the bearer of the underlying cm
-                aRetBearer = iCmMgr.BearerTypeFromCmIdL( underlying );
-                // Gets the prio of the bearer
-                aRetPrio = 
-                iCmMgr.GetBearerInfoIntL( aRetBearer, ECmDefaultPriority );
-                aRetExtLevel = 
-                iCmMgr.GetBearerInfoIntL( aRetBearer, ECmExtensionLevel );
-                }
-            else
-                {
-                // VPN points to a destination so its priority is "wildcard"
-                aRetPrio = KDataMobilitySelectionPolicyPriorityWildCard;
-                }    
-            }
-        }
-
-    return isVirtual;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::InsertSameMethodL
-// -----------------------------------------------------------------------------
-// 
-TInt CCmDestinationImpl::InsertSameMethodL( TUint32 aBearerType, TBool aIsVirtual )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::InsertSameMethodL" );
-
-    TInt insertedAt( -1 );
-    TUint32 bearerInList( 0 );
-    TUint32 prioInList( 0 );
-    TUint32 extLevelInList( 0 ); 
-    TBool isVirtualInList( EFalse );
-     
-    TInt count = iData->iConnMethodArray->Count();    
-    // Loops throught the items in the list
-    for ( TInt i = count-1; ( i >= KCmInitIndex ) && ( insertedAt == -1) ; i-- )
-        {
-        // Loads the plugin
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        LoadPluginL( *item );
-        
-        // Gets the data of the list item    
-        isVirtualInList = PrioDataL( item, 
-                                    prioInList, bearerInList, extLevelInList );
-
-        CLOG_WRITE_4( "actual item [%d] prio: [%d], bearer: [%x] ext: [%d]", 
-                            i, prioInList, bearerInList, extLevelInList );
-          
-        // Bearer type the same
-        if( aBearerType == bearerInList )
-            {
-            // puts Virt/Virt or !Virt/!Virt or !Virt/Virt
-            if( ( aIsVirtual == isVirtualInList ) || ( aIsVirtual && !isVirtualInList ))
-                {
-                insertedAt = i+1;
-                CLOG_WRITE_1( "inserted same bearer: [%d]", insertedAt );
-                }
-            } // if bearer
-        } // for
-        return insertedAt;
-    }
-    
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::InsertPriorityMethodL
-// -----------------------------------------------------------------------------
-// 
-TInt CCmDestinationImpl::InsertPriorityMethodL( TUint32 aPrio, TUint32 aExtLevel )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::InsertPriorityMethodL" );
-
-    TInt insertedAt = -1;
-    TUint32 bearerInList( 0 );
-    TUint32 prioInList( 0 );
-    TUint32 extLevelInList( 0 );
-
-    TInt count = iData->iConnMethodArray->Count();    
-    // Loops throught the items in the list
-    ////for ( TInt i = KCmInitIndex; ( i < count ) && ( insertedAt == -1) ; i++ )
-    TInt i ( count-1 );
-    for ( ; ( i >= KCmInitIndex ) && ( insertedAt == -1) ; i-- )
-        {
-        // Loads the plugin
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        LoadPluginL( *item );
-
-        // Gets the data of the list item    
-        PrioDataL( item, prioInList, bearerInList, extLevelInList );
-
-        CLOG_WRITE_4( "actual item [%d] prio: [%d], bearer: [%x] ext: [%d]", 
-                        i, prioInList, bearerInList, extLevelInList );
-        
-        // If the priority is the same then it should be inserted near here
-        if ( aPrio == prioInList )
-            {
-            if( aExtLevel <= extLevelInList )
-                {
-                insertedAt = i+1;
-                CLOG_WRITE_1( "inserted same bearer non virtual: [%d]", insertedAt );
-                }
-            }
-        // Insert in front of the higher priority (prio 1 is the highest ...)    
-        else if ( aPrio > prioInList )
-            {
-            insertedAt = i+1;
-            CLOG_WRITE_1( "inserted higher prio: [%d]", insertedAt );
-            } // if same prio
-            
-        } // for
-        
-    // This is the highest priority one. It should be inserted at the first pos. 
-    if( -1 == insertedAt )
-        {
-        insertedAt = KCmInitIndex;
-        CLOG_WRITE_1( "inserted first position: [%d]", insertedAt );
-        } // if same prio
-
-    return insertedAt;
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationData::ProtectionLevel()
-// -----------------------------------------------------------------------------
-//  
-TProtectionLevel CCmDestinationData::ProtectionLevel()
-    {
-    TInt protection = TUint32(iMetaDataRec->iMetadata) & 
-                      KSnapMetadataProtecionLevelMask;
-    return TProtectionLevel(protection >> 28);
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ProtectionLevel()
-// -----------------------------------------------------------------------------
-//  
-EXPORT_C 
-    TProtectionLevel CCmDestinationImpl::ProtectionLevel()
-    {
-    return iData->ProtectionLevel();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetAttributeL()
-// -----------------------------------------------------------------------------
-//  
-EXPORT_C void CCmDestinationImpl::SetProtectionL( TProtectionLevel aProtectionLevel )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetProtectionL" );
-    
-    CLOG_WRITE_1( "Level: [%d]", aProtectionLevel );
-
-    CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-    
-    // Make a destination protected.
-    TUint32 mask = ~KSnapMetadataProtecionLevelMask;
-    TUint32 temp = TUint32(iData->iMetaDataRec->iMetadata) & mask;    
-    iData->iMetaDataRec->iMetadata = aProtectionLevel << 28;
-    iData->iMetaDataRec->iMetadata = temp | TUint32(iData->iMetaDataRec->iMetadata);
-    
-    iData->iProtectionChanged = ETrue;
-    }
-        
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CreateConnectionMethodL()
-// -----------------------------------------------------------------------------
-//  
-CCmPluginBase* CCmDestinationImpl::CreateConnectionMethodL( 
-                                                   TUint32 aImplementationUid )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CreateConnectionMethodL" );
-
-    CCmPluginBase* retval = NULL;
-    if( ProtectionLevel() == EProtLevel1 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-    retval = iCmMgr.CreateConnectionMethodL(aImplementationUid, this);
-    CleanupStack::PushL(retval); 
-    AddConnectionMethodL(*retval);
-    CleanupStack::Pop(retval);
-    return retval;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CreateConnectionMethodL()
-// -----------------------------------------------------------------------------
-//  
-CCmPluginBase* CCmDestinationImpl::CreateConnectionMethodL( 
-    TUint32 aImplementationUid,
-    TUint32 aConnMthId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CreateConnectionMethodL" );
-
-    CCmPluginBase* retval = NULL;
-    if( ProtectionLevel() == EProtLevel1 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-
-    retval = iCmMgr.CreateConnectionMethodL( aImplementationUid,
-                                             aConnMthId,
-                                             this );
-    CleanupStack::PushL(retval);
-    AddConnectionMethodL(*retval);
-    CleanupStack::Pop(retval);
-    return retval;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::AddConnectionMethodL()
-// -----------------------------------------------------------------------------
-//
-TInt CCmDestinationImpl::AddConnectionMethodL( 
-                                           CCmPluginBase& aConnectionMethod )
-    {    
-    LOGGER_ENTERFN( "CCmDestinationImpl::AddConnectionMethodL" );
-
-    if( ProtectionLevel() == EProtLevel1 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    TUint cmId = aConnectionMethod.GetIntAttributeL( ECmId );
-    
-    CPluginItem* item = new (ELeave) CPluginItem;
-    CleanupStack::PushL( item ); // 1
-    
-    // get the plugin
-    CCmPluginBase* connMethod = new (ELeave) 
-                            CCmPluginBase(aConnectionMethod.Plugin());
-    CleanupStack::PushL( connMethod );// 2           
-    connMethod->IncrementRefCounter();    
-    item->iPlugin = connMethod;
-        
-    CleanupStack::PushL( item->iPlugin ); // 3         
-    // create the new record
-    item->iDNRecord = iCmMgr.SNAPRecordL( 0 );
-
-    CleanupStack::PushL( item->iDNRecord ); // 4
-    
-    // if the destination is protection level 1, the connection method must be protected
-    if ( ProtectionLevel() == EProtLevel1 )
-        {
-        item->iPlugin->SetBoolAttributeL( ECmProtected, ETrue );
-        }
-    
-    TInt index = AddToArrayL( item );
-    index = index - KCmInitIndex; //the array contains one initial item, so subtract KCmInitIndex from the index to get cm index!
-    
-    CleanupStack::Pop( 4, item ); // item, connMethod, iDNRecord, iPlugin
-    
-    return index;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::AddEmbeddedDestinationL()
-// -----------------------------------------------------------------------------
-//
-TInt CCmDestinationImpl::AddEmbeddedDestinationL( 
-                                             CCmDestinationImpl& aDestination )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::AddEmbeddedDestinationL" );
-    
-    if( ProtectionLevel() == EProtLevel1 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    //Check to avoid multiple levels of embedding
-    CheckIfEmbeddedL( Id() );
-    
-    //Check to avoid multiple levels of embedding
-    if ( aDestination.HasEmbeddedL() )
-        {
-        User::Leave( KErrNotSupported );
-        }
-        
-    // Only one embedded destination per destination is allowed
-    if ( HasEmbeddedL() )
-        {
-        User::Leave( KErrNotSupported );
-        }
-           
-    CPluginItem* item = new (ELeave) CPluginItem;
-    CleanupStack::PushL( item ); // 1
-
-    CreateEmbeddedDestinationPluginL( *item, aDestination.Id() );
-     // create the new record
-    item->iDNRecord = iCmMgr.SNAPRecordL( 0 );
-    item->iDNRecord->iPriority = KDataMobilitySelectionPolicyPriorityWildCard;
-
-    CleanupStack::PushL( item->iDNRecord ); // 2    
-    TInt index = AddToArrayL( item );
-    index = index - KCmInitIndex; //the array contains one initial item, so subtract KCmInitIndex from the index to get cm index!
-    
-    CleanupStack::Pop( 2, item ); // item, iDNRecord
-    
-    return index;   
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::DeleteConnectionMethodL()
-// -----------------------------------------------------------------------------
-// 
-void CCmDestinationImpl::DeleteConnectionMethodL( 
-                                        CCmPluginBase& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::DeleteConnectionMethodL" );
-    
-    if( ProtectionLevel() == EProtLevel1 ||
-        ProtectionLevel() == EProtLevel3 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    if ( aConnectionMethod.GetBoolAttributeL( ECmConnected ) )
-        {
-        User::Leave( KErrInUse );
-        }
-        
-    TInt index = FindConnectionMethodL( aConnectionMethod );
-
-    // move this method to the 'to be deleted' array         
-    CPluginItem* item = (*(iData->iConnMethodArray))[index];
-    
-    LoadPluginL( *item );
-    
-    if( item->iPlugin->GetBoolAttributeL( ECmIsLinked ) )
-        {
-        User::Leave( KErrLocked );
-        }
-
-    if ( ConnectionMethodCount() == 1 )
-        {
-        // Check if this destination is referenced by Virtual CM 
-        CheckIfReferencedByVirtualCML();
-        }
-
-    iData->iDeleteCmArray->AppendL( item );
-    iData->iConnMethodArray->Delete( index );
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::RemoveConnectionMethodL()
-// -----------------------------------------------------------------------------
-// 
-void CCmDestinationImpl::RemoveConnectionMethodL( 
-                                     const CCmPluginBase& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::DeleteConnectionMethodL" );
-
-    if( ProtectionLevel() == EProtLevel1 ||
-        ProtectionLevel() == EProtLevel3 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-    
-    if ( ConnectionMethodCount() == 1 )
-        {
-        // Check if this destination is referenced by Virtual CM 
-        CheckIfReferencedByVirtualCML();
-        }
-        
-    TInt index = FindConnectionMethodL( aConnectionMethod );
-
-    // move this method to the 'to be deleted' array, but
-    // set remove only from, not to delete it on update.
-    CPluginItem* item = (*(iData->iConnMethodArray))[index];
-    
-    item->iFlags |= CPluginItem::ERemoveCm;
-   
-    iData->iDeleteCmArray->AppendL( item );
-    iData->iConnMethodArray->Delete( index );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfReferencedByVirtualCML()
-// -----------------------------------------------------------------------------
-// 
-void CCmDestinationImpl::CheckIfReferencedByVirtualCML()
-    {
-    // for each IAP in CM manager
-    //   1. check if it is virtual
-    //      if not => goto 1.
-    //      if yes:
-    //      2. check if it links to the destination of this CM
-    //         if yes => carryOn = EFalse, ERROR
-    //         if not: carryOn = ETrue
-    CommsDat::CMDBRecordSet<CommsDat::CCDIAPRecord>* iaps = iCmMgr.AllIapsL();
-    CleanupStack::PushL( iaps );
-
-    TBool carryOn = ETrue;
-    TUint32 destId = Id();
-
-    // for each IAP in CM manager
-    for ( TInt i = KCmInitIndex; carryOn && i < iaps->iRecords.Count(); ++i )
-        {
-        CommsDat::CCDIAPRecord* rec = (*iaps)[i];
-        TUint32 bearerType = 0;
-
-        TRAP_IGNORE( bearerType = iCmMgr.BearerTypeFromIapRecordL( rec ) );
-        if ( !bearerType )
-            {
-            continue;
-            }
-
-        // check if it is virtual
-        if ( iCmMgr.GetBearerInfoBoolL( bearerType, ECmVirtual ) )
-            {
-            // check if it links to the current destination
-            CCmPluginBase* plugin = NULL;            
-            TRAP_IGNORE( plugin = iCmMgr.GetConnectionMethodL( rec->RecordId() ) );
-
-            if ( !plugin )
-                {
-                continue;
-                }
-
-            if ( plugin->IsLinkedToSnap( destId ) )
-                {
-                // the CM links to this destination, deletion not allowed
-                carryOn = EFalse;
-                }
-
-            delete plugin;
-            }
-        }
-
-    CleanupStack::PopAndDestroy( iaps );
-
-    if ( !carryOn )
-        {
-        User::Leave( KErrLocked );
-        }
-    }
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::RemoveConnectionMethodL()
-// -----------------------------------------------------------------------------
-// 
-void CCmDestinationImpl::RemoveConnectionMethodL( 
-                                     const CCmPluginBaseEng& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::DeleteConnectionMethodL" );
-
-    if( ProtectionLevel() == EProtLevel1 ||
-        ProtectionLevel() == EProtLevel3 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    TInt index = FindConnectionMethodL( aConnectionMethod );
-
-    // move this method to the 'to be deleted' array, but
-    // set remove only from, not to delete it on update.
-    CPluginItem* item = (*(iData->iConnMethodArray))[index];
-    
-    item->iFlags |= CPluginItem::ERemoveCm;
-   
-    iData->iDeleteCmArray->AppendL( item );
-    iData->iConnMethodArray->Delete( index );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConnectionMethodDeletedL()
-// -----------------------------------------------------------------------------
-// 
-void CCmDestinationImpl::ConnectionMethodDeletedL( 
-                                    const CCmPluginBase& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::ConnectionMethodDeletedL" );
-
-    TInt found( KErrNotFound );
-    TUint32 aCmId = aConnectionMethod.GetIntAttributeL( ECmId );
-
-    found = ConnectionMethodIndex( aCmId );
-
-    if( found != KErrNotFound )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[found];
-        
-        (*(iData->iConnMethodArray))[found] = NULL;
-        iData->iConnMethodArray->Delete( found );
-        iData->iConnMethodArray->Compress();
-        
-        // The iPlugin is deleted in plugin interface function
-        // that called this function.
-        delete item->iDNRecord;
-        delete item;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::FindConnectionMethodL()
-// -----------------------------------------------------------------------------
-// 
-TInt CCmDestinationImpl::FindConnectionMethodL( 
-                                     const CCmPluginBase& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::FindConnectionMethodL" );
-
-    TInt cmId = aConnectionMethod.GetIntAttributeL( ECmId );
-    TBool embeded = aConnectionMethod.GetBoolAttributeL( ECmDestination ) ?
-                      ETrue :
-                      EFalse;
-
-    CLOG_WRITE_2( "ID: [%d], embDest: [%d]", 
-                  cmId, 
-                  aConnectionMethod.GetBoolAttributeL( ECmDestination ) );
-    
-    for ( TInt i = KCmInitIndex; i < iData->iConnMethodArray->Count(); ++i )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        if( embeded )
-            {
-            if( item->iDNRecord->iEmbeddedSNAP == cmId )
-                {
-                return i;
-                }        
-            }
-        else
-            {
-            if( RECORD_FROM_ELEMENT_ID(item->iDNRecord->iIAP) == cmId )
-                {
-                return i;
-                }
-            }
-        }
-        
-    CLOG_WRITE( "Not found" );
-    User::Leave( KErrNotFound );
-    
-    // dummy return value. never used.
-    return -1;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::FindConnectionMethodL()
-// -----------------------------------------------------------------------------
-// 
-TInt CCmDestinationImpl::FindConnectionMethodL( 
-                                     const CCmPluginBaseEng& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::FindConnectionMethodL" );
-
-    TInt cmId = aConnectionMethod.GetIntAttributeL( ECmId );
-    TBool embeded = aConnectionMethod.GetBoolAttributeL( ECmDestination ) ?
-                      ETrue :
-                      EFalse;
-
-    CLOG_WRITE_2( "ID: [%d], embDest: [%d]", 
-                  cmId, 
-                  aConnectionMethod.GetBoolAttributeL( ECmDestination ) );
-    
-    for ( TInt i = KCmInitIndex; i < iData->iConnMethodArray->Count(); ++i )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        if( embeded )
-            {
-            if( item->iDNRecord->iEmbeddedSNAP == cmId )
-                {
-                return i;
-                }        
-            }
-        else
-            {
-            if( RECORD_FROM_ELEMENT_ID(item->iDNRecord->iIAP) == cmId )
-                {
-                return i;
-                }
-            }
-        }
-        
-    CLOG_WRITE( "Not found" );
-    User::Leave( KErrNotFound );
-    
-    // dummy return value. never used.
-    return -1;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ModifyPriorityL()
-// -----------------------------------------------------------------------------
-//      
-void CCmDestinationImpl::ModifyPriorityL( CCmPluginBase& aCCMItem, 
-                                          TUint aIndex )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::ModifyPriorityL" );
-    
-    if (aCCMItem.GetBoolAttributeL(ECmDestination) ||
-        (aCCMItem.GetBoolAttributeL(ECmVirtual) &&
-         aCCMItem.GetIntAttributeL(ECmNextLayerSNAPId)))
-        {
-        // Priority can not be changed for this cm
-        return;
-        }
-        
-    if( ProtectionLevel() == EProtLevel1 ||
-        ProtectionLevel() == EProtLevel3 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    TBool found( EFalse );
-    TInt cm2 = aCCMItem.GetIntAttributeL( ECmId );
-    
-    if ( aIndex >= ( iData->iConnMethodArray->Count() - KCmInitIndex ) )
-        {
-        User::Leave( KErrArgument );
-        }
-    
-    for ( TInt i = KCmInitIndex; i < iData->iConnMethodArray->Count(); i++ )
-        {
-        LoadPluginL( *(*(iData->iConnMethodArray))[i] );
-            
-        // Compare the IAP IDs
-        TInt cm1 = (*(iData->iConnMethodArray))[i]->iPlugin->GetIntAttributeL( ECmId );        
-        
-        if ( cm1 == cm2 )
-            {
-            CPluginItem* item = (*(iData->iConnMethodArray))[i];
-            
-            TInt pri = (*(iData->iConnMethodArray))[i]->iDNRecord->iPriority;
-            if ( pri == KDataMobilitySelectionPolicyPriorityWildCard )
-                {
-                TUint32 prio = 0;
-                TUint32 bearerType = 0;
-                TUint32 extLevel = 0;
-                
-                TBool isVirtual = PrioDataL( item, prio, bearerType, extLevel );
-                if (prio != KDataMobilitySelectionPolicyPriorityWildCard)
-                    {
-                    // The priority will be changed later when UpdateL is called
-                    // So, the priority will simply be chnaged from
-                    // KDataMobilitySelectionPolicyPriorityWildCard to value i
-                    (*(iData->iConnMethodArray))[i]->iDNRecord->iPriority = i; 
-                    }
-                }
-            
-            (*(iData->iConnMethodArray))[i] = NULL;
-            
-            // remove from array
-            iData->iConnMethodArray->Delete( i );
-            iData->iConnMethodArray->Compress();
-            iData->iConnMethodArray->InsertL( KCmInitIndex + aIndex, item );
-            
-            found = ETrue;           
-            break;
-            }
-        }
-        
-    if ( !found )
-        {
-        User::Leave( KErrArgument );
-        }
-        
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::PriorityL()
-// -----------------------------------------------------------------------------
-//          
-TUint CCmDestinationImpl::PriorityL( CCmPluginBaseEng& aCCMItem )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::PriorityL" );
-
-    TInt index = FindConnectionMethodL( aCCMItem );
-    
-    return (*(iData->iConnMethodArray))[index]->iDNRecord->iPriority;
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::PriorityL()
-// -----------------------------------------------------------------------------
-//          
-TUint CCmDestinationImpl::PriorityL( CCmPluginBase& aCCMItem )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::PriorityL" );
-
-    TInt index = FindConnectionMethodL( aCCMItem );
-    
-    return (*(iData->iConnMethodArray))[index]->iDNRecord->iPriority;
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::UpdateL()
-// -----------------------------------------------------------------------------
-//          
-EXPORT_C void CCmDestinationImpl::UpdateL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::UpdateL" );
-
-    // Connection methods and destination records are updated in 
-    // one transaction.
-    OpenTransactionLC();
-    
-    DeleteConnectionMethodsL();
-
-    // Update protection level of connection methods if it's changed in 
-    // the destination
-    UpdateProtectionL();
-    // Updates all modified connection methods.
-    UpdateConnectionMethodsL();
-    UpdateNetworkRecordL();
-    UpdateDestAPRecordL();
-    UpdateSNAPTableL();
-    UpdateSNAPMetadataTableL();
-        
-    CommitTransactionL( KErrNone );
-    
-    // set the last updated protection level of the destination
-    iData->iLastProtectionLevel = ProtectionLevel();
-
-    // Clear the modified flag
-    iData->iProtectionChanged = EFalse;
-
-    // empty the array, but do not delete it
-    iData->ResetAndDestroyArray( iData->iDeleteCmArray, EFalse );
-        
-    iCmMgr.DestinationUpdated(this);
-    iData->iIdIsValid = ETrue;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::DeleteLD()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CCmDestinationImpl::DeleteLD()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::DeleteLD" );
-
-    if( ProtectionLevel() == EProtLevel1 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    TInt count = iData->iConnMethodArray->Count();
-
-    if( IsConnectedL() )
-        {
-        User::Leave( KErrInUse );
-        }
-
-    // Check first that any of the CMs in this Destination is not
-    // referenced by Virtual CM
-    TInt i( 0 );
-    
-    for( i = KCmInitIndex; i < count; ++i )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        
-        LoadPluginL( *item );
-            
-        if( item->iPlugin->GetBoolAttributeL( ECmIsLinked ) )
-            {
-            User::Leave( KErrLocked );
-            }
-        }
-    // Check that this Destination is not referenced by any Virtual CM
-    if ( ConnectionMethodCount() > 0 )
-        {
-        CheckIfReferencedByVirtualCML();
-        }
-
-    OpenTransactionLC();
-    TRAPD( err, DeleteRelatedRecordsL( count ) );
-    if ( err )
-        {
-        RollbackTransaction();
-        User::Leave( err );
-        }
-    CommitTransactionL(KErrNone);
-
-    delete this;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::DeleteRelatedRecordsL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::DeleteRelatedRecordsL( TInt aCount )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::DeleteRelatedRecordsL" );
-
-    CleanUpEmbeddedL( Id() );
-
-    TCmDefConnValue deletedItem;
-    deletedItem.iType = ECmDefConnDestination;
-    deletedItem.iId = Id();
-    iCmMgr.HandleDefConnDeletedL( deletedItem );       
-    CMDBRecordBase* dnIapRecord;
-    TInt i;
-    
-    // Here we don't use KCmInitIndex becouse initial entry should be deleted
-    // too!
-    for ( i = 0; i < aCount; i++ )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        
-        // Delete the plugin
-        if ( i >= KCmInitIndex )
-            {
-            if ( !item->iPlugin->Plugin()->IdIsValid() )
-                {
-                // Delete incomplete plugin 
-                delete item->iPlugin;
-                item->iPlugin = NULL;
-                }
-            else
-                {
-                TRAPD( err, item->iPlugin->DeleteL( EFalse ) );
-                
-                if( err != KErrLocked &&
-                    err != KErrNotReady )
-                    {
-                    User::LeaveIfError( err );
-                    }
-                    
-                delete item->iPlugin;
-                item->iPlugin = NULL;
-                }
-            }  
-        
-        // Delete the DN-IAP record
-        dnIapRecord = item->iDNRecord;
-        
-        if ( dnIapRecord->RecordId() )
-            // If we have record Id, this record is already in CommsDat
-            {
-            dnIapRecord->DeleteL( Session() );
-            }   
-        delete item->iDNRecord;
-        item->iDNRecord = NULL;
-        }
-
-    iData->iDestAPRecord->DeleteL( Session() ); // deletes a record
-    iData->iNetworkRecord->DeleteL( Session() ); // deletes a record
-    
-    // Delete SNAPMetadata table    
-    CMDBRecordSet<CCDSNAPMetadataRecord>*  ptrRecordSet = 
-                    new (ELeave) CMDBRecordSet<CCDSNAPMetadataRecord>( 
-                                                 iCmMgr.IconTableId() );
-    CleanupStack::PushL( ptrRecordSet );
-
-    // Prime record
-    CCDSNAPMetadataRecord* record = 
-        new (ELeave) CCDSNAPMetadataRecord( iCmMgr.IconTableId() );
-    CleanupStack::PushL( record );
-    record->iSNAP = Id();
-    ptrRecordSet->iRecords.AppendL( record );
-
-    CleanupStack::Pop( record );
-    record = NULL;
-                
-    if ( ptrRecordSet->FindL( Session() ) )
-        {
-        (*ptrRecordSet)[0]->DeleteL( Session() );          
-        }
-        
-    ptrRecordSet->iRecords.ResetAndDestroy();
-    CleanupStack::PopAndDestroy( ptrRecordSet );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfEmbeddedL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::CheckIfEmbeddedL( TInt aId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CheckIfEmbeddedL" );
-    
-    CMDBRecordSet<CCDSnapRecord>*  ptrRecordSet = 
-                    new (ELeave) CMDBRecordSet<CCDSnapRecord>( 
-                                          iCmMgr.DestinationTableId() );
-    CleanupStack::PushL( ptrRecordSet );
-
-    // Prime record
-    CCDSnapRecord* record = iCmMgr.SNAPRecordL( 0 );
-    CleanupStack::PushL( record );
-    record->iEmbeddedSNAP = aId;
-    ptrRecordSet->iRecords.AppendL( record );
-
-    CleanupStack::Pop( record );
-    record = NULL;
-        
-    OpenTransactionLC();    
-    if( ptrRecordSet->FindL( Session() ) )
-        // Match found - it's embedded
-        {
-        User::Leave( KErrNotSupported );          
-        }
-    RollbackTransaction();
-
-    ptrRecordSet->iRecords.ResetAndDestroy();
-    
-    CleanupStack::PopAndDestroy( ptrRecordSet );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::HasEmbeddedL
-// -----------------------------------------------------------------------------
-//
-TBool CCmDestinationImpl::HasEmbeddedL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::HasEmbeddedL" );
-
-    return ( EmbeddedL() != NULL )? ETrue : EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::EmbeddedL
-// -----------------------------------------------------------------------------
-//
-CCmDestinationImpl* CCmDestinationImpl::EmbeddedL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::EmbeddedL" );
-
-    CCmDestinationImpl* retVal = NULL;
-    // Check if the destination contains embedded destinations
-    for ( TInt i = KCmInitIndex; i < iData->iConnMethodArray->Count(); i++ )
-        {
-        LoadPluginL( *(*(iData->iConnMethodArray))[i] );
-        // It's an embedded destination ( this is also true for VPN CMs )
-        retVal = (*(iData->iConnMethodArray))[i]->iPlugin->Destination();
-        if ( retVal )
-            {
-            // as there can be only one
-            // embedded destination, the first one is enough
-            break;
-            }
-        }
-    
-    return retVal;
-    }
- 
- // -----------------------------------------------------------------------------
-// CCmDestinationImpl::CanUseToConnectL
-// -----------------------------------------------------------------------------
-//
-TBool CCmDestinationImpl::CanUseToConnectL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CanUseToConnectL" );
-
-    const TInt KZeroItem = 0;
-    const TInt KOneItem = 1;
-    TInt cmCount = ConnectionMethodCount(); //without KCmInitIndex !!!
-    switch ( cmCount )
-        {
-        case KZeroItem:// no items at all
-            {
-            return EFalse;
-            }
-        case KOneItem:// One item, a possible empty embedded destination!
-            {
-            CCmDestinationImpl* embeddedDest = EmbeddedL();
-            if ( embeddedDest )
-                {
-                // If embeddedDest->ConnectionMethodCount() is not zero,
-                // we have something in the embedded destination
-                // which cannot be another embedded destination, 
-                // since multiple embedding is not allowed.
-                return embeddedDest->ConnectionMethodCount();
-                }
-             else
-                {
-                return ETrue; //not an embedded destination
-                }
-            }
-        default: // more than one item, only one can be an empty embedded
-                 // destination, so we surely contain a valid cm
-            {
-            return ETrue;
-            }
-            
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::UpdateNetworkRecordL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::UpdateNetworkRecordL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::UpdateNetworkRecordL" );
-
-    if ( !iData->iNetworkRecord->RecordId() || iData->iNewWithId )
-        {
-        CLOG_WRITE( "New Destination, create it!" );
-        //Create a network record, set the host name and add it to the database    
-
-        if ( !iData->iNewWithId )
-        	{
-        	iData->iNetworkRecord->SetRecordId(KCDNewRecordRequest);
-        	}
-
-        SetAttribute( iData->iNetworkRecord, 
-                      ECDProtectedWrite, 
-                      ProtectionLevel() == EProtLevel1 );
-
-        iData->iNetworkRecord->StoreL( Session() ); //adds a new record
-        iData->iNewWithId = EFalse;
-        }
-    else
-        {
-        SetAttribute( iData->iNetworkRecord, 
-                      ECDProtectedWrite, 
-                      ProtectionLevel() == EProtLevel1 );
-
-        iData->iNetworkRecord->ModifyL( Session() );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::UpdateDestAPRecordL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::UpdateDestAPRecordL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::UpdateDestAPRecordL" );
-
-    if ( !iData->iDestAPRecord->RecordId() )
-        {
-        CLOG_WRITE( "New Destination, create AP for it!" );
-        //Create an AP record, set the selection policy(network id)
-        //and add it to the database
-        iData->iDestAPRecord->SetRecordId(KCDNewRecordRequest);
-        iData->iDestAPRecord->iRecordTag = CreateDestinationAPTagIdL();
-        iData->iDestAPRecord->iCustomSelectionPolicy = iData->iNetworkRecord->RecordId();
-        iData->iDestAPRecord->iRecordName.SetL(iData->iNetworkRecord->iRecordName);
-        iData->iDestAPRecord->StoreL( Session() ); //adds a new record
-        }
-    else
-        {
-        iData->iDestAPRecord->iCustomSelectionPolicy = iData->iNetworkRecord->RecordId();
-        iData->iDestAPRecord->iRecordName.SetL(iData->iNetworkRecord->iRecordName);
-        iData->iDestAPRecord->ModifyL( Session() ); //modifies the existing
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CreateDestinationAPTagId()
-// -----------------------------------------------------------------------------
-//
-TUint32 CCmDestinationImpl::CreateDestinationAPTagIdL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CreateDestinationAPTagId" );
-
-    return KCmDefaultDestinationAPTagId + iData->iNetworkRecord->RecordId();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::GetDestinationAPTagId()
-// -----------------------------------------------------------------------------
-//
-TUint32 CCmDestinationImpl::GetDestinationAPTagId( )
-    {
-    return iData->iNetworkRecord->RecordId() + KCmDefaultDestinationAPTagId;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::UpdateProtectionL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::UpdateProtectionL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::UpdateProtectionL" );
-
-    if( !iData->iProtectionChanged )
-        // protection level not changed -> nothing to update here
-        {
-        return;
-        }
-        
-    for ( TInt i = KCmInitIndex; i < iData->iConnMethodArray->Count(); i++ )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        
-        LoadPluginL( *item );
-        
-        switch ( ProtectionLevel() ) 
-            {
-            case EProtLevel0:
-            case EProtLevel2:
-                {
-                // from the protection level 0 to 2 and vice versa 
-                // the ECmProtected value of the CM is not changed                
-                if( iData->iLastProtectionLevel == EProtLevel1 ||
-                    iData->iLastProtectionLevel == EProtLevel3 )
-                    {
-                    item->iPlugin->SetBoolAttributeL( ECmProtected, EFalse );
-                    }
-                }
-              break;
-            case EProtLevel1:
-            case EProtLevel3:
-                {
-                item->iPlugin->SetBoolAttributeL( ECmProtected, ETrue );
-                }
-              break;
-            default:
-                {
-                //
-                }
-              break;              
-             }                      
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::UpdateConnectionMethodsL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::UpdateConnectionMethodsL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::UpdateConnectionMethodsL" );
-
-    for( TInt i = KCmInitIndex; i < iData->iConnMethodArray->Count(); ++i )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        
-        // If the plugin is not loaded, it means that this a old one, or nothing
-        // modified in it -> there's no need to update it.
-        if( item->iPlugin )
-            {
-            item->iPlugin->UpdateL();
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetAttribute()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::SetAttribute( CMDBRecordBase* aRecord, 
-                                       TUint32 aAttribute, TBool aSet )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetAttribute" );
-    
-    if ( aSet && !aRecord->IsSetAttribute( aAttribute ) )
-        {
-        aRecord->SetAttributes( aAttribute );
-        }
-    else if( !aSet && aRecord->IsSetAttribute( aAttribute ) )
-        {
-        aRecord->ClearAttributes( aAttribute );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::UpdateSNAPTableL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::UpdateSNAPTableL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::UpdateSNAPTableL" );
-    
-    TInt i;
-    CCDSnapRecord* dnIapRecord;
-
-    // Now we have only records of which are new or needs to be updated
-    for ( i = KCmInitIndex; i < iData->iConnMethodArray->Count(); ++i )
-        {
-        TInt pri = (*(iData->iConnMethodArray))[i]->iDNRecord->iPriority;
-
-        if ( pri != i &&
-             pri != KDataMobilitySelectionPolicyPriorityWildCard )
-            // wildcard priority CM have to be the last one in the array.
-            // In theory they cannot be re-prioritized.
-            {
-            (*(iData->iConnMethodArray))[i]->iDNRecord->iPriority = i;
-            }
-        }
-
-    // Here we don't use KCmInitIndex becouse initial entry should be updated 
-    // too!
-    for ( i = 0; i < iData->iConnMethodArray->Count(); ++i )
-        {
-        dnIapRecord = (*(iData->iConnMethodArray))[i]->iDNRecord;
-        
-        if( dnIapRecord->iIAP )
-            {
-            if( !RECORD_FROM_ELEMENT_ID( dnIapRecord->iIAP ) )
-                {
-                dnIapRecord->iIAP = (*(iData->iConnMethodArray))[i]->iPlugin->IAPRecordElementId();
-                }
-            }
-        
-        // Set protection on connection methods 
-        SetAttribute( dnIapRecord, 
-                      ECDProtectedWrite, 
-                      ProtectionLevel() == EProtLevel1 ? ETrue : EFalse );
-        // Metadata is used instead of ECDHidden Attribute                      
-        //SetAttribute( dnIapRecord, ECDHidden, iData->iNetworkRecord->Attributes() & ECDHidden );
-        CheckIfNameModifiedL( dnIapRecord );
-             
-        if ( dnIapRecord->RecordId() )
-            {           
-            dnIapRecord->ModifyL( Session() );
-            }
-        else
-            // this is a new record
-            {
-            dnIapRecord->SetRecordId(KCDNewRecordRequest);
-            dnIapRecord->iSNAP = Id();
-            dnIapRecord->StoreL( Session() );
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::UpdateSNAPMetadataTableL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::UpdateSNAPMetadataTableL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::UpdateSNAPMetadataTableL" );
-    
-    if( !iData->iMetaDataRec->RecordId() )
-        // new record
-        {
-        iData->iMetaDataRec->iSNAP = Id();
-        iData->iMetaDataRec->SetRecordId( KCDNewRecordRequest );
-        iData->iMetaDataRec->StoreL( Session() );
-        }
-    else
-        {
-        iData->iMetaDataRec->ModifyL( Session() );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::LoadSNAPMetadataTableL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::LoadSNAPMetadataTableL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::LoadSNAPMetadataTableL" );
-
-    iData->iMetaDataRec = new (ELeave) CCDSNAPMetadataRecord( 
-                                            iCmMgr.IconTableId() );
-
-    iData->iMetaDataRec->iSNAP = Id();
-                
-    if ( !iData->iMetaDataRec->FindL( Session() ) )
-        // Not found -> fill in with default values
-        {
-        iData->iMetaDataRec->iSNAP = Id();
-        iData->iMetaDataRec->iIcon = 0;
-        iData->iMetaDataRec->iMetadata = 0;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::LoadNetworkRecordL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::LoadNetworkRecordL( TUint32 /*aDestinationId*/ )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::LoadNetworkRecordL" );
-
-    // set the record ID
-    iData->iNetworkRecord->SetRecordId( iData->iDestAPRecord->iCustomSelectionPolicy );
-  
-    // load the record ID
-    iData->iNetworkRecord->LoadL( Session() );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::LoadDestAPRecordL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::LoadDestAPRecordL( TUint32 aDestinationId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::LoadDestAPRecordL" );
-
-    if ( aDestinationId > KCmDefaultDestinationAPTagId )
-        {
-        // set the record ID
-        iData->iDestAPRecord->iRecordTag = aDestinationId;
-        // load the record ID
-        if ( iData->iDestAPRecord->FindL( Session() ) )
-            {
-            iData->iDestAPRecord->LoadL( Session() );
-            }
-        else
-            {
-            User::Leave( KErrNotFound );
-            }
-        }
-    else
-        {
-        User::Leave( KErrArgument );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::LoadConnectionMethodsL()
-// -----------------------------------------------------------------------------
-//    
-void CCmDestinationImpl::LoadConnectionMethodsL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::LoadConnectionMethodsL" );
-    
-    CMDBRecordSet<CCDSnapRecord>*  ptrRecordSet = 
-                        new (ELeave) CMDBRecordSet<CCDSnapRecord>( 
-                                          iCmMgr.DestinationTableId() );
-    CleanupStack::PushL( ptrRecordSet );
-
-    // Prime record
-    CCDSnapRecord* snapRec = iCmMgr.SNAPRecordL( 0 );
-    CleanupStack::PushL( snapRec );
-    snapRec->iSNAP = Id();
-    ptrRecordSet->iRecords.AppendL( snapRec );
-
-    CleanupStack::Pop( snapRec );
-    snapRec = NULL;
-
-    OpenTransactionLC();            
-    if ( !ptrRecordSet->FindL(Session()) )
-        // no conn method is to this destination -> it was not us who made it
-        {
-        CLOG_WRITE( "Empty destination" );
-        User::Leave( KErrUnderflow );
-        }
-
-    TLinearOrder<CMDBRecordBase> orderbyId( 
-                                    CCmDestinationImpl::SortRecordsByPriority );
-    ptrRecordSet->iRecords.Sort(orderbyId);
-
-    TInt count = ptrRecordSet->iRecords.Count();
-    
-    //Load IAP records to be used to check if the IAPs are existing
-    CMDBRecordSet<CCDIAPRecord>*  ptrIapSet = 
-                    new (ELeave) CMDBRecordSet<CCDIAPRecord>( KCDTIdIAPRecord );
-    CleanupStack::PushL( ptrIapSet );
-    
-    TRAPD( err, ptrIapSet->LoadL( Session() ) );
-
-    if( !err )
-        {
-        CLOG_WRITE_1_PTR( NULL, "Record num [%d]", ptrIapSet->iRecords.Count() );
-        
-        // Here we don't use CM_INIT_INDEX because initial entry should be 
-        // loaded too!
-        for ( TInt i = 0; i < count; i++ )
-            {
-            snapRec = (*ptrRecordSet)[i];
-            TBool exist( EFalse );
-            
-            // Check if CM really exists, if not 
-            // it should be cleared from selection policy table
-            TInt32 embedded = QUERY_INT_FIELD( 
-                                snapRec, 
-                                KCDTIdDataMobilitySelectionPolicyEmbeddedSNAP );
-            TInt32 iap = RECORD_FROM_ELEMENT_ID( 
-                            QUERY_INT_FIELD( 
-                                       snapRec, 
-                                       KCDTIdDataMobilitySelectionPolicyIAP ) );
-            // Item could be embedded destination or iap
-            if ( embedded )
-                {
-                CCDAccessPointRecord * destAPRecord = static_cast<CCDAccessPointRecord *>(
-                                CCDRecordBase::RecordFactoryL( KCDTIdAccessPointRecord ) );
-                CleanupStack::PushL( destAPRecord );
-                destAPRecord->iRecordTag = embedded;
-                if ( !destAPRecord->FindL( Session() ) )
-                    {
-                    CleanUpSnapMetadataTableL( embedded );
-                    (*ptrRecordSet)[i]->DeleteL( Session() );
-                    }
-                else
-                    {
-                    exist = ETrue;
-                    }
-                    
-                CleanupStack::PopAndDestroy( destAPRecord );
-                }                
-            else if ( iap )
-                // This is an AP
-                {
-                for ( TInt iapInd = 0; iapInd < ptrIapSet->iRecords.Count(); ++iapInd )
-                    {
-                    CMDBRecordBase* iapRec = (*ptrIapSet)[iapInd];
-
-                    if ( iap == iapRec->RecordId() )
-                        {
-                        exist = ETrue;
-                        delete iapRec;
-                        // this way we can filter out duplicated CMs
-                        ptrIapSet->iRecords.Remove( iapInd );
-                        break;
-                        }
-                    }
-                if ( !exist )
-                    {
-                    DeleteIAPRecordsL( snapRec );
-                    }
-                }
-            
-            // The first record is a dummy one where iap and snap are zero
-            if ( exist || ( !embedded && !iap ) )
-                {
-                // The item may have to be loaded at this stage so that the supported can be checked 
-                // before it is put into iData->iConnMethodArray for the item may be unsupported.
-                TInt err( 0 );
-                
-                if ( i != 0 )
-                    {
-                    if ( embedded )
-                        {
-                        TRAP( err, TUint32 bearerType = iCmMgr.BearerTypeFromCmIdL( embedded ) );
-                        }
-                    else if ( iap )
-                        {
-                        TRAP( err, TUint32 bearerType = iCmMgr.BearerTypeFromCmIdL( iap ) );
-                        }
-                    }
-               
-                if ( !err )
-                    {
-                    CPluginItem* item = new (ELeave) CPluginItem;
-                    CleanupStack::PushL( item );
-                    
-                    item->iDNRecord = iCmMgr.SNAPRecordL( snapRec->RecordId() );
-                    item->iPlugin = NULL;
-
-                    iData->iConnMethodArray->AppendL( item );
-                
-                    CleanupStack::Pop( item );
-                    }
-                }
-            }
-        }
-    else
-        // There's no connection method in the phone
-        {
-        CPluginItem* item = new (ELeave) CPluginItem;
-        
-        CleanupStack::PushL( item );
-        
-        item->iDNRecord = iCmMgr.SNAPRecordL( (*ptrRecordSet)[0]->RecordId() );
-
-        iData->iConnMethodArray->AppendL( item );       
-        
-        CleanupStack::Pop( item );                 
-        }
-        
-    CleanupStack::PopAndDestroy( ptrIapSet );
-    RollbackTransaction();
-        
-    ptrRecordSet->iRecords.ResetAndDestroy();
-    CleanupStack::PopAndDestroy( ptrRecordSet );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ReLoadConnectionMethodsL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::ReLoadConnectionMethodsL()
-    {
-    TInt count = iData->iConnMethodArray->Count();
-    //TInt index = KCmInitIndex;
-    TInt index = 0;
-    
-    while ( index < count )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[index];
-        item->iFlags |= CPluginItem::ERemoveCm;
-        
-        iData->iDeleteCmArray->AppendL( item );
-        iData->iConnMethodArray->Delete( index );
-        iData->iConnMethodArray->Compress();
-        
-        count = iData->iConnMethodArray->Count();
-        }
-    
-    // Empty the array, but do not delete it
-    iData->ResetAndDestroyArray( iData->iDeleteCmArray, EFalse );
-    
-    LoadConnectionMethodsL();
-    }
-    
-// ---------------------------------------------------------
-// CCmDestinationImpl::CleanUpEmbeddedL
-// ---------------------------------------------------------
-//
-void CCmDestinationImpl::CleanUpEmbeddedL(TUint32 aDestId)
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CleanUpEmbeddedL" );
-
-    TBool found = EFalse;
-    CMDBRecordSet<CCDSnapRecord>*  ptrRecordSet = 
-                        new (ELeave) CMDBRecordSet<CCDSnapRecord>( 
-                                          iCmMgr.DestinationTableId() );
-    CleanupStack::PushL( ptrRecordSet );
-    // Prime record
-    CCDSnapRecord* snapRec = iCmMgr.SNAPRecordL( 0 );
-    CleanupStack::PushL( snapRec );
-    snapRec->iEmbeddedSNAP = aDestId;
-    ptrRecordSet->iRecords.AppendL( snapRec );
-    CleanupStack::Pop( snapRec );
-    snapRec = NULL;
-
-    if ( ptrRecordSet->FindL(Session()) )
-        {
-        for ( TInt i = 0; i <ptrRecordSet->iRecords.Count(); i++ )
-            {
-            (*ptrRecordSet)[i]->DeleteL( Session() );
-            }
-        found = ETrue;
-        }
-    CleanupStack::PopAndDestroy( ptrRecordSet );
-    if (found)
-        {
-        CleanUpSnapMetadataTableL(aDestId);    
-        }
-    }
-// ---------------------------------------------------------
-// CCmDestinationImpl::CleanUpSnapMetadataTableL
-// ---------------------------------------------------------
-//
-void CCmDestinationImpl::CleanUpSnapMetadataTableL( TUint32 aSnap )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CleanUpSnapMetadataTableL" );
-    
-    // Just to test how many record we have
-    CMDBRecordSet<CCDSNAPMetadataRecord>*  ptrRecordSet 
-                = new (ELeave) CMDBRecordSet<CCDSNAPMetadataRecord>( 
-                                                iCmMgr.IconTableId() );
-    CleanupStack::PushL( ptrRecordSet );
-        
-    // Prime record
-    CCDSNAPMetadataRecord* record = 
-            new (ELeave) CCDSNAPMetadataRecord( iCmMgr.IconTableId() );
-    CleanupStack::PushL( record );
-    
-    record->iSNAP = aSnap;
-    ptrRecordSet->iRecords.AppendL( record );
-    
-    CleanupStack::Pop( record );
-    record = NULL;
-    
-    if ( ptrRecordSet->FindL( Session() ) )
-        {
-        for ( TInt i = 0; i <ptrRecordSet->iRecords.Count(); i++ )
-            {
-            (*ptrRecordSet)[i]->DeleteL( Session() );
-            }
-        }
-        
-    CleanupStack::PopAndDestroy( ptrRecordSet );    //ptrRecordSet 
-    }
-
-// ---------------------------------------------------------
-// CCmDestinationImpl::CleanUpSeamlessnessTableL
-// ---------------------------------------------------------
-//
-void CCmDestinationImpl::CleanUpSeamlessnessTableL( TUint32 aIapId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CleanUpSeamlessnesstableL" );
-    
-    // Just to test how many record we have
-    CMDBRecordSet<CCDIAPMetadataRecord>*  ptrRecordSet 
-        = new (ELeave) CMDBRecordSet<CCDIAPMetadataRecord>( 
-                                        iCmMgr.SeamlessnessTableId() );
-    CleanupStack::PushL( ptrRecordSet );
-        
-    // Prime record
-    CCDIAPMetadataRecord* record = 
-      new (ELeave) CCDIAPMetadataRecord( iCmMgr.SeamlessnessTableId() );
-    CleanupStack::PushL( record );
-    
-    TMDBElementId elementid = iCmMgr.SeamlessnessTableId() & 
-                              KCDTIdIAPMetadataIAP & 
-                              aIapId;
-    record->iSeamlessness = elementid;
-    ptrRecordSet->iRecords.AppendL( record );
-    
-    CleanupStack::Pop( record );
-    record = NULL;
-    
-    if ( ptrRecordSet->FindL( Session() ) )
-        {
-        for ( TInt i = 0; i <ptrRecordSet->iRecords.Count(); i++ )
-            {
-            (*ptrRecordSet)[i]->DeleteL( Session() );
-            }
-        }
-        
-    CleanupStack::PopAndDestroy( ptrRecordSet );
-    }
-    
-// ---------------------------------------------------------
-// CCmDestinationImpl::SortRecordsByPriority
-// ---------------------------------------------------------
-//
-TInt CCmDestinationImpl::SortRecordsByPriority( const CMDBRecordBase& aLeft, 
-                                                const CMDBRecordBase& aRight )
-    {
-    TUint left = QUERY_INT_FIELD( const_cast<CMDBRecordBase*>(&aLeft), 
-                                  KCDTIdDataMobilitySelectionPolicyPriority );
-    TUint right = QUERY_INT_FIELD( const_cast<CMDBRecordBase*>(&aRight),
-                                   KCDTIdDataMobilitySelectionPolicyPriority );
-
-    /*
-    *   - negative value, if aLeft is less than aRight;
-    *   - 0,              if aLeft equals to aRight;
-    *   - positive value, if aLeft is greater than aRight.
-    */
-    if ( left == right )
-        {
-        return 0;
-        }
-    
-    return ( left < right ) ? -1 : 1;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::IconL()
-// -----------------------------------------------------------------------------
-//      
-EXPORT_C CGulIcon* CCmDestinationImpl::IconL() 
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::IconL" );
-
-    return IconL( iData->iMetaDataRec->iIcon );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetIconL()
-// -----------------------------------------------------------------------------
-//      
-void CCmDestinationImpl::SetIconL( TUint32 anIndex )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetIconL" )
-    
-    if( ProtectionLevel() == EProtLevel1 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    iData->iMetaDataRec->iIcon = anIndex;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationData::MetadataL()
-// -----------------------------------------------------------------------------
-//
-TUint32 CCmDestinationData::MetadataL( TSnapMetadataField aMetaField ) const
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::MetadataL" )
-
-    TUint retVal( 0 );
-
-    switch( aMetaField )
-        {
-        case ESnapMetadataInternet:
-            {
-            retVal = TUint32(iMetaDataRec->iMetadata) & 
-                     ESnapMetadataInternet;
-            }
-            break;
-            
-        case ESnapMetadataHighlight:
-            {
-            retVal = TUint32(iMetaDataRec->iMetadata) & 
-                     ESnapMetadataHighlight;
-            }
-            break;
-            
-        case ESnapMetadataHiddenAgent:
-            {
-            retVal = TUint32(iMetaDataRec->iMetadata) &
-                     ESnapMetadataHiddenAgent;
-            }
-            break;
-
-        case ESnapMetadataDestinationIsLocalised:
-            {
-            retVal = (TUint32(iMetaDataRec->iMetadata) &
-                      ESnapMetadataDestinationIsLocalised) >> 4;
-            }
-            break;
-            
-        case ESnapMetadataPurpose:
-            {
-            retVal = (TUint32(iMetaDataRec->iMetadata) &
-                     ESnapMetadataPurpose) >> 8;
-            }
-            break;
-
-        default:
-            {
-            User::Leave( KErrArgument );
-            }
-        }
-    
-    return retVal;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::MetadataL()
-// -----------------------------------------------------------------------------
-//
-TUint32 CCmDestinationImpl::MetadataL( TSnapMetadataField aMetaField ) const
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::MetadataL" )
-    return iData->MetadataL(aMetaField);
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetMetadataL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::SetMetadataL( TSnapMetadataField aMetaField, 
-		                               TUint32 aValue )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetMetadata" );
-    
-    if( ProtectionLevel() == EProtLevel1 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    switch( aMetaField )
-        {
-        case ESnapMetadataInternet:
-            {
-            if( aValue )
-                {
-                CheckIfInternetExistsL();
-                
-                iData->iMetaDataRec->iMetadata = 
-                        ESnapMetadataInternet | iData->iMetaDataRec->iMetadata;
-
-                // Set the new way, too!!!
-                SetMetadataL( ESnapMetadataDestinationIsLocalised, 
-                              ELocalisedDestInternet );
-                }
-            else
-                {
-                iData->iMetaDataRec->iMetadata =
-                        ~ESnapMetadataInternet & iData->iMetaDataRec->iMetadata;
-                // Clear the new way, too!!!
-                SetMetadataL( ESnapMetadataDestinationIsLocalised, 
-                              ENotLocalisedDest );                
-                }
-            }
-            break;
-
-        case ESnapMetadataDestinationIsLocalised:
-            {
-            // Check that aValue is within valid range.
-            if ( aValue > ELocalisedDestIntranet )
-                {
-                User::Leave( KErrArgument );
-                }
-            
-            TUint32 oldVal = TUint32(iData->iMetaDataRec->iMetadata) & 
-                             ESnapMetadataInternet;
-            if ( aValue != ENotLocalisedDest )
-                {
-                // check if already exists...
-                CheckIfLocalisedDestExistL( aValue );
-                // does not exists, first clear original value
-                // if old one was Internet, clear that, too:
-                if ( oldVal )
-                    {
-                    // copied here to avoid recursivity!!!
-                    // SetMetadataL(ESnapMetadataInternet, 0 );
-                    iData->iMetaDataRec->iMetadata =
-                        ~ESnapMetadataInternet & iData->iMetaDataRec->iMetadata;
-                    }
-                // clearing
-                iData->iMetaDataRec->iMetadata =
-                                                ~ESnapMetadataDestinationIsLocalised &
-                                                iData->iMetaDataRec->iMetadata;
-                // set new value
-                TUint32 mask = aValue << 4; 
-                iData->iMetaDataRec->iMetadata = 
-                                                mask | 
-                                                iData->iMetaDataRec->iMetadata;
-                // for backward compatibility, if it is internet, 
-                // set it the old way, too
-                if ( aValue == ELocalisedDestInternet )
-                    {
-                    // copied here to avoid recursivity!!!
-                    iData->iMetaDataRec->iMetadata = 
-                        ESnapMetadataInternet | iData->iMetaDataRec->iMetadata;
-                    // SetMetadataL(ESnapMetadataInternet, 1 );
-                    }
-                }
-            else
-                {
-                // not localised, set to ENotLocalisedDest = 0
-                // for backward compatibility, if it was internet, 
-                // set it the old way, too
-                if ( oldVal )
-                    {
-                    SetMetadataL(ESnapMetadataInternet, 0 );
-                    }
-                // clear the new way...
-                iData->iMetaDataRec->iMetadata =
-                                                ~ESnapMetadataDestinationIsLocalised &
-                                                iData->iMetaDataRec->iMetadata;
-                }
-
-            break;
-            }
-
-        case ESnapMetadataPurpose:
-            {
-            // Check that aValue is within valid range.
-            if ( aValue > ESnapPurposeIntranet )
-                {
-                User::Leave( KErrArgument );
-                }
-            
-            // Check if destination with the given purpose already
-            // exists
-            CheckIfPurposeExistL( aValue );
-            
-            // ESnapPurposeInternet and ESnapPurposeMMS need special
-            // handling
-            switch( aValue )
-                {
-                case ESnapPurposeUnknown:
-                    {
-                    // This also clears ESnapMetadataInternet
-                    SetMetadataL( ESnapMetadataDestinationIsLocalised, ENotLocalisedDest );
-                    break;
-                    }
-                case ESnapPurposeInternet:
-                    {
-                    // This sets ESnapMetadataInternet and
-                    // ELocalisedDestInternet
-                    SetMetadataL( ESnapMetadataInternet, 1 );
-                    }
-                    break;
-                case ESnapPurposeOperator:
-                    {
-                    SetMetadataL( ESnapMetadataDestinationIsLocalised, 
-                                  ELocalisedDestWap );
-                    }
-                	break;
-                case ESnapPurposeMMS:
-                    {
-                    SetMetadataL( ESnapMetadataDestinationIsLocalised, 
-                                  ELocalisedDestMMS );
-                    iData->iMetaDataRec->iMetadata = 
-                        ESnapMetadataHiddenAgent | iData->iMetaDataRec->iMetadata;
-                    }
-                    break;
-                case ESnapPurposeIntranet:
-                    {
-                    SetMetadataL( ESnapMetadataDestinationIsLocalised,
-                                  ELocalisedDestIntranet );
-                    }
-                    break;
-                default:
-                    break;
-                }
-            
-            TUint32 value = aValue << 8;
-            // reset the purpose bit
-            iData->iMetaDataRec->iMetadata = ~ESnapMetadataPurpose & iData->iMetaDataRec->iMetadata;
-            // set the purpose bit
-            iData->iMetaDataRec->iMetadata = value | iData->iMetaDataRec->iMetadata;
-            }
-            break;
-
-        case ESnapMetadataHighlight:
-            {
-            if( aValue )
-                {
-                iData->iMetaDataRec->iMetadata = 
-                        ESnapMetadataHighlight | iData->iMetaDataRec->iMetadata;
-                }
-            else
-                {
-                iData->iMetaDataRec->iMetadata =
-                        ~ESnapMetadataHighlight & iData->iMetaDataRec->iMetadata;
-                }
-            }
-            break;
-            
-        case ESnapMetadataHiddenAgent:
-            {
-            TUint32 internet = iData->iMetaDataRec->iMetadata & ESnapMetadataInternet;
-            TUint32 internetLocal = ( iData->iMetaDataRec->iMetadata & ESnapMetadataDestinationIsLocalised ) >> 4;
-            TUint32 internetPurpose = ( iData->iMetaDataRec->iMetadata & ESnapMetadataPurpose ) >> 8;
-            if( aValue )
-                {
-                if ( internet
-                     || ( internetLocal == ELocalisedDestInternet )
-                     || ( internetPurpose == ESnapPurposeInternet ) )
-                    {
-                    User::Leave( KErrArgument );
-                    }
-
-                iData->iMetaDataRec->iMetadata = 
-                        ESnapMetadataHiddenAgent | iData->iMetaDataRec->iMetadata;
-                }
-            else
-                {
-                iData->iMetaDataRec->iMetadata = 
-                        ~ESnapMetadataHiddenAgent & iData->iMetaDataRec->iMetadata;
-                }
-            }
-            break;
-            
-        default:
-            {
-            User::Leave( KErrArgument );
-            }
-        }
-    }
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CreateEmbeddedDestinationPluginL()
-// -----------------------------------------------------------------------------
-//      
-void CCmDestinationImpl::CreateEmbeddedDestinationPluginL( 
-                                                        CPluginItem& aItem, 
-                                                        TInt aDestinationId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CreateEmbeddedDestinationPluginL" );
-
-    aItem.iPlugin = iCmMgr.CreateConnectionMethodL(KUidEmbeddedDestination, this); 
-    CleanupStack::PushL( aItem.iPlugin );
-    // Load this destination
-    aItem.iPlugin->LoadL( aDestinationId );
-    CleanupStack::Pop( aItem.iPlugin );        
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::LoadEmbeddedDestinationPluginL()
-// -----------------------------------------------------------------------------
-//      
-void CCmDestinationImpl::LoadEmbeddedDestinationPluginL( 
-                                                        CPluginItem& aItem )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::LoadEmbeddedDestinationPluginL" );
-
-    CreateEmbeddedDestinationPluginL(aItem, aItem.iDNRecord->ElementId());
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::LoadPluginL()
-// -----------------------------------------------------------------------------
-//      
-void CCmDestinationImpl::LoadPluginL( CPluginItem& aItem )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::LoadPluginL" );
-    
-    if( aItem.iPlugin )
-        {
-        return;
-        }
-        
-    TUint32 cmId;
-    if ( aItem.iDNRecord->iEmbeddedSNAP )
-        // This is an embedded destination
-        {
-        cmId = aItem.iDNRecord->iEmbeddedSNAP;
-        
-        }
-    else
-        // Normal IAP id
-        {
-        cmId = RECORD_FROM_ELEMENT_ID( aItem.iDNRecord->iIAP );
-        }
-
-    aItem.iPlugin = iCmMgr.DoFindConnMethodL( 
-                        cmId, 
-                        this );
-                        
-    CLOG_ATTACH( aItem.iPlugin, this );
-    }    
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::PluginClosed()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::PluginClosed( CCmPluginBase* aPlugin )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::PluginClosed" );
-
-    if (iData->iConnMethodArray)
-        {
-        for ( TInt i = 0; i < iData->iConnMethodArray->Count(); ++i )
-            {
-            if ( (*(iData->iConnMethodArray))[i]->iPlugin == aPlugin )
-                {
-                // Must NOT delete it here. Simply forget that
-                // we had this plugin instance.
-                (*(iData->iConnMethodArray))[i]->iPlugin = NULL;
-                
-                break;
-                }
-            }        
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationData::IsHiddenL()
-// -----------------------------------------------------------------------------
-//          
-TBool CCmDestinationData::IsHiddenL()
-    {
-    TSnapMetadataField hiddenValue = ( TSnapMetadataField )MetadataL( ESnapMetadataHiddenAgent );
-    if ( hiddenValue == ESnapMetadataHiddenAgent )
-        {
-    	return ETrue;
-        }
-    else
-        {
-    	return EFalse;
-        }
-    }    
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::IsHiddenL()
-// -----------------------------------------------------------------------------
-//          
-EXPORT_C TBool CCmDestinationImpl::IsHidden()
-    {
-    TBool hidden( EFalse );
-    TRAPD( err, hidden = iData->IsHiddenL() );
-    __ASSERT_ALWAYS( err == KErrNone, User::Panic(_L( "CMManager" ), err ) );
-    
-    return hidden;
-    }    
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetHiddenL()
-// -----------------------------------------------------------------------------
-//          
-EXPORT_C void CCmDestinationImpl::SetHiddenL( TBool aHidden )
-    {
-    if( ProtectionLevel() == EProtLevel1 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-    SetMetadataL( ESnapMetadataHiddenAgent, aHidden );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::DeleteConnectionMethodsL
-//
-// Can be called only during opened transaction. 
-// Array is emptied only after transaction commited!
-//
-// -----------------------------------------------------------------------------
-//          
-void CCmDestinationImpl::DeleteConnectionMethodsL()
-    {
-    LOGGER_ENTERFN( "DeleteConnectionMethodsL" );
-    
-    TInt i;
-    
-    for ( i = 0; i < iData->iDeleteCmArray->Count(); ++i )
-        {
-        CPluginItem* item = (*iData->iDeleteCmArray)[i];
-        
-        LoadPluginL( *item );   
-
-        if( !(item->iFlags & CPluginItem::ERemoveCm) )
-            {
-            item->iPlugin->DeleteL( EFalse );
-            }
-            
-        item->iDNRecord->DeleteL( Session() );
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationData::ResetAndDestroyArray
-// -----------------------------------------------------------------------------
-//          
-void CCmDestinationData::ResetAndDestroyArray( CCmArray* &aArray, TBool aDestroy )
-    {
-    if( aArray )
-        {
-        for ( TInt i = 0; i < aArray->Count(); ++i )
-            {
-            CPluginItem* item = (*aArray)[i];
-            
-            delete item->iPlugin;
-            delete item->iDNRecord;
-            }
-            
-        aArray->ResetAndDestroy();
-        
-        if( aDestroy )
-            {
-            delete aArray; aArray = NULL;
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::DeleteIAPRecordsL
-// -----------------------------------------------------------------------------
-//          
-void CCmDestinationImpl::DeleteIAPRecordsL( CMDBRecordBase* aSnapRecord )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::DeleteIAPRecordsL" );
-
-    // First delete the metadata record
-    CCDIAPMetadataRecord* metaRec = new (ELeave) CCDIAPMetadataRecord( 
-                                        iCmMgr.SeamlessnessTableId() );
-                                        
-    CleanupStack::PushL( metaRec );
-
-    metaRec->iIAP = RECORD_FROM_ELEMENT_ID( 
-                                QUERY_INT_FIELD( 
-                                       aSnapRecord, 
-                                       KCDTIdDataMobilitySelectionPolicyIAP ) );
-
-    if( metaRec->FindL( Session() ) )
-        {
-        metaRec->DeleteL( Session() );
-        }
-        
-    CleanupStack::PopAndDestroy( metaRec );
-    
-    // and now delete the SNAP record
-    aSnapRecord->DeleteL( Session() );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfNameModifiedL
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::CheckIfNameModifiedL( CCDSnapRecord* aRecord )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CheckIfNameModifiedL" );
-            
-    if ( !TPtrC(iData->iDestAPRecord->iRecordName).CompareF( TPtrC(aRecord->iRecordName) ) )
-        // names matches
-        {
-        return;
-        }
-    
-    aRecord->iRecordName.SetL( TPtrC(iData->iDestAPRecord->iRecordName) );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::IsConnectedL
-// -----------------------------------------------------------------------------
-EXPORT_C TBool CCmDestinationImpl::IsConnectedL() const
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::IsConnectedL" );
-
-    CCmDestinationImpl* myThis = const_cast<CCmDestinationImpl*>( this );
-    TBool retVal( EFalse );
-    TInt i;
-    
-    for( i = KCmInitIndex; i < iData->iConnMethodArray->Count(); ++i )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        
-        myThis->LoadPluginL( *item );
-            
-        if( item->iPlugin->GetBoolAttributeL( ECmConnected ) )
-            {
-            retVal = ETrue;
-            break;
-            }
-        }
-        
-    return retVal;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfInternetExistsL
-//
-// There can be only one SNAP with Internet metadata field set.
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::CheckIfInternetExistsL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CheckIfInternetExistsL" );
-
-    OpenTransactionLC();
-
-    CMDBRecordSet<CCDSNAPMetadataRecord>* metaSet = 
-           new ( ELeave ) CMDBRecordSet<CCDSNAPMetadataRecord>( 
-                                                 iCmMgr.IconTableId() );
-    CleanupStack::PushL( metaSet );
-
-    TRAP_IGNORE( metaSet->LoadL( Session() ) );
-
-    for ( TInt i = 0; i < metaSet->iRecords.Count(); ++i )
-        {
-        TInt meta = QUERY_INT_FIELD( metaSet->iRecords[i], 
-                                     KCDTIdSNAPMetadataMetadata );
-
-        if( meta & ESnapMetadataInternet )
-            {
-            if( Id() != QUERY_INT_FIELD( metaSet->iRecords[i], 
-                                                KCDTIdSNAPMetadataSNAP ) )
-                {
-                User::Leave( KErrAlreadyExists );
-                }
-            }
-        }
-    
-    CleanupStack::PopAndDestroy( metaSet );
-    
-    RollbackTransaction();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConnectionMethodIndex
-// -----------------------------------------------------------------------------
-TInt CCmDestinationImpl::ConnectionMethodIndex( TUint32 aCmId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::ConnectionMethodIndex" );
-
-    TInt found( KErrNotFound );
-    
-    for ( TInt i = KCmInitIndex; i < iData->iConnMethodArray->Count(); ++i )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        if ( RECORD_FROM_ELEMENT_ID(item->iDNRecord->iIAP) == aCmId ||
-             (item->iDNRecord->iEmbeddedSNAP == aCmId && aCmId != 0) )
-            {
-            found = i;
-            break;
-            }        
-        }
-        
-    return found;
-    }        
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::IconIdL
-// -----------------------------------------------------------------------------
-CGulIcon* CCmDestinationImpl::IconIdL( CCmManagerImpl& aCmMgr,
-                                       TMDBElementId aId )
-    {
-    CGulIcon* retVal = NULL;
-    CCDSNAPMetadataRecord* metaDataRec = new (ELeave) CCDSNAPMetadataRecord( 
-                                                        aCmMgr.IconTableId() );
-    CleanupStack::PushL( metaDataRec );
-    metaDataRec->iSNAP = aId;
-                
-    if ( metaDataRec->FindL( aCmMgr.Session() ) )
-        // Not found -> fill in with default values
-        {
-        retVal = IconL( metaDataRec->iIcon );
-        }
-    else
-        {
-        User::Leave( KErrNotFound );
-        }
-        
-    CleanupStack::PopAndDestroy( metaDataRec );
-    
-    return retVal;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ProtectionLevelL
-// -----------------------------------------------------------------------------
-TProtectionLevel CCmDestinationImpl::ProtectionLevelL( CCmManagerImpl& aCmMgr, 
-                                                       TMDBElementId aId ) 
-    {
-    TProtectionLevel retVal( EProtLevel0 );
-    CCDSNAPMetadataRecord* metaDataRec = new (ELeave) CCDSNAPMetadataRecord( 
-                                                        aCmMgr.IconTableId() );
-    CleanupStack::PushL( metaDataRec );
-    metaDataRec->iSNAP = aId;
-                
-    if ( metaDataRec->FindL( aCmMgr.Session() ) )
-        // Not found -> fill in with default values
-        {
-        retVal = ProtectionLevel( metaDataRec );
-        }
-    else
-        {
-        User::Leave( KErrNotFound );
-        }
-        
-    CleanupStack::PopAndDestroy( metaDataRec );
-    return retVal;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ProtectionLevel
-// -----------------------------------------------------------------------------
-TProtectionLevel CCmDestinationImpl::ProtectionLevel( 
-                                           CCDSNAPMetadataRecord* aMetaDataRec )
-    {
-    TInt protection = TUint32(aMetaDataRec->iMetadata) & 
-                      KSnapMetadataProtecionLevelMask;
-    return TProtectionLevel(protection >> 28);
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ProtectionLevelL
-// -----------------------------------------------------------------------------
-CGulIcon* CCmDestinationImpl::IconL( TInt aIconIndex )
-    {
-    MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-           
-    TParse mbmFile;
-    User::LeaveIfError( mbmFile.Set( KManagerIconFilename, 
-                                     &KDC_BITMAP_DIR, 
-                                     NULL ) );
-                                     
-    TAknsItemID aknItemID;
-    aknItemID.Set( KDestinationIconConvTable[aIconIndex][0],
-                   KDestinationIconConvTable[aIconIndex][1] );
-           
-    CGulIcon* icon = AknsUtils::CreateGulIconL( 
-                            skinInstance, 
-                            aknItemID,
-                            mbmFile.FullName(), 
-                            KDestinationIconConvTable[aIconIndex][2], 
-                            KDestinationIconConvTable[aIconIndex][3] );
-                            
-    return icon;
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::RemoveFromPool
-// -----------------------------------------------------------------------------
-EXPORT_C void CCmDestinationImpl::RemoveFromPool()
-    {
-    iCmMgr.RemoveDestFromPool(this);            
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::IncrementRefCounter
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::IncrementRefCounter()
-    {
-    iData->IncrementRefCounter();
-    }
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::DecrementRefCounter
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::DecrementRefCounter()
-    {
-    iData->DecrementRefCounter();
-    }
-// -----------------------------------------------------------------------------
-// CCmDestinationData::IncrementRefCounter
-// -----------------------------------------------------------------------------
-void CCmDestinationData::IncrementRefCounter()
-    {
-    iRefCounter++;
-    }
-// -----------------------------------------------------------------------------
-// CCmDestinationData::DecrementRefCounter
-// -----------------------------------------------------------------------------
-void CCmDestinationData::DecrementRefCounter()
-    {
-    iRefCounter--;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationData::GetRefCounter
-// -----------------------------------------------------------------------------
-TInt CCmDestinationData::GetRefCounter()
-    {
-    return iRefCounter;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::GetRefCounter
-// -----------------------------------------------------------------------------
-TInt CCmDestinationImpl::GetRefCounter()
-    {
-    return iData->iRefCounter;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::GetData
-// -----------------------------------------------------------------------------
-CCmDestinationData* CCmDestinationImpl::GetData()
-    {
-    return iData;
-    }
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetData
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::SetData(CCmDestinationData* aData)
-    {
-    iData = aData;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationData::IdIsValid
-// -----------------------------------------------------------------------------
-TBool CCmDestinationData::IdIsValid()
-    {
-    return iIdIsValid;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::IdIsValid
-// -----------------------------------------------------------------------------
-TBool CCmDestinationImpl::IdIsValid()
-    {
-    return iData->iIdIsValid;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::Cmmgr
-// -----------------------------------------------------------------------------
-CCmManagerImpl* CCmDestinationData::Cmmgr()
-    {
-    return &iCmMgr;    
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::Cmmgr
-// -----------------------------------------------------------------------------
-CCmManagerImpl* CCmDestinationImpl::Cmmgr()
-    {
-    return &iCmMgr;    
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfLocalisedDestExistL
-//
-// There can be only one SNAP with a certain localised metadata field set.
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::CheckIfLocalisedDestExistL( TUint32 aValue )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CheckIfLocalisedDestExistL" );
-
-    OpenTransactionLC();
-
-    CMDBRecordSet<CCDSNAPMetadataRecord>* metaSet = 
-                new ( ELeave ) CMDBRecordSet<CCDSNAPMetadataRecord>( iCmMgr.IconTableId() );
-    CleanupStack::PushL( metaSet );
-
-    TRAP_IGNORE( metaSet->LoadL( Session() ) );
-
-    for ( TInt i = 0; i < metaSet->iRecords.Count(); ++i )
-        {
-        TInt meta = QUERY_INT_FIELD( metaSet->iRecords[i], 
-                                     KCDTIdSNAPMetadataMetadata );
-
-        if ( meta & ESnapMetadataDestinationIsLocalised )
-            {
-            TInt locval = (meta & ESnapMetadataDestinationIsLocalised) >> 4;
-            if ( aValue == locval )
-                {
-                if( Id() != QUERY_INT_FIELD( metaSet->iRecords[i], KCDTIdSNAPMetadataSNAP ) )
-                    {
-                    User::Leave( KErrAlreadyExists );
-                    }
-                }
-            if ( aValue ==  ELocalisedDestInternet )
-                { // internet might also be set the 'old way', check it!
-                if( meta & ESnapMetadataInternet )
-                    {
-                    if( Id() != QUERY_INT_FIELD( metaSet->iRecords[i], KCDTIdSNAPMetadataSNAP ) )
-                        {
-                        User::Leave( KErrAlreadyExists );
-                        }
-                    }                
-                }
-            }            
-        }
-
-    CleanupStack::PopAndDestroy( metaSet );
-
-    RollbackTransaction();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfPurposeExistL
-//
-// There can be only one SNAP with a certain purpose metadata field set.
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::CheckIfPurposeExistL( TUint32 aValue )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CheckIfPurposeExistL" );
-
-    OpenTransactionLC();
-
-    CMDBRecordSet<CCDSNAPMetadataRecord>* metaSet = 
-                new ( ELeave ) CMDBRecordSet<CCDSNAPMetadataRecord>( iCmMgr.IconTableId() );
-    CleanupStack::PushL( metaSet );
-
-    TRAP_IGNORE( metaSet->LoadL( Session() ) );
-
-    for ( TInt i = 0; i < metaSet->iRecords.Count(); ++i )
-        {
-        TInt meta = QUERY_INT_FIELD( metaSet->iRecords[i], 
-                                     KCDTIdSNAPMetadataMetadata );
-
-        if ( meta & ESnapMetadataPurpose )
-            {
-            TInt purVal = ( meta & ESnapMetadataPurpose ) >> 8;
-            if ( aValue == purVal )
-                {
-                if( Id() != QUERY_INT_FIELD( metaSet->iRecords[i], 
-                                        KCDTIdSNAPMetadataSNAP ) )
-                    {
-                    User::Leave( KErrAlreadyExists );
-                    }
-                }
-            }            
-        }
-
-    CleanupStack::PopAndDestroy( metaSet );
-
-    RollbackTransaction();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::InitializeDestAPRecordL
-//
-// 
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::InitializeDestAPRecordL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::InitializeDestAPRecordL" );
-
-    SetDefaultTierManagerL();
-    SetDefaultMCprL();
-    SetDefaultCprL();
-    SetDefaultSCprL();
-    SetDefaultProtocolL();
-    iData->iDestAPRecord->iCustomSelectionPolicy = 0;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetDefaultTierManagerL
-//
-// 
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::SetDefaultTierManagerL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetDefaultTierManagerL" );
-
-    CCDTierRecord* tierRec = static_cast<CCDTierRecord *>
-                               ( CCDRecordBase::RecordFactoryL( KCDTIdTierRecord ) );
-    CleanupStack::PushL( tierRec );
-
-    tierRec->iRecordTag = KDefaultTierManagerTagId;
-
-    if ( tierRec->FindL( Session() ) )
-        {
-        iData->iDestAPRecord->iTier = tierRec->ElementId();
-        }
-    else
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    CleanupStack::PopAndDestroy();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetDefaultMCprL
-//
-// 
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::SetDefaultMCprL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetDefaultMCprL" );
-
-    CCDMCprRecord* mcprRec = static_cast<CCDMCprRecord *>
-                             ( CCDRecordBase::RecordFactoryL( KCDTIdMCprRecord ) );
-    CleanupStack::PushL( mcprRec );
-
-    mcprRec->SetRecordId( 1 );
-
-    mcprRec->LoadL( Session() );
-	
-	iData->iDestAPRecord->iMCpr = mcprRec->ElementId();
-
-    CleanupStack::PopAndDestroy();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetDefaultCprL
-//
-// 
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::SetDefaultCprL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetDefaultCprL" );
-
-    CCDCprRecord* cprRec = static_cast<CCDCprRecord *>
-                             ( CCDRecordBase::RecordFactoryL( KCDTIdCprRecord ) );
-    CleanupStack::PushL( cprRec );
-
-    cprRec->SetRecordId( 1 );
-
-    cprRec->LoadL( Session() );
-	iData->iDestAPRecord->iCpr = cprRec->ElementId();
-
-    CleanupStack::PopAndDestroy();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetDefaultSCprL
-//
-// 
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::SetDefaultSCprL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetDefaultSCprL" );
-
-    CCDSCprRecord* scprRec = static_cast<CCDSCprRecord *>
-                             ( CCDRecordBase::RecordFactoryL( KCDTIdSCprRecord ) );
-    CleanupStack::PushL( scprRec );
-
-    scprRec->SetRecordId( 1 );
-
-    scprRec->LoadL( Session() );
-	iData->iDestAPRecord->iSCpr = scprRec->ElementId();
-
-    CleanupStack::PopAndDestroy();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetDefaultProtocolL
-//
-// 
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::SetDefaultProtocolL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetDefaultProtocolL" );
-
-    CCDProtocolRecord* protocolRec = static_cast<CCDProtocolRecord *>
-                             ( CCDRecordBase::RecordFactoryL( KCDTIdProtocolRecord ) );
-    CleanupStack::PushL( protocolRec );
-
-    protocolRec->SetRecordId( 1 );
-
-    protocolRec->LoadL( Session() );
-	iData->iDestAPRecord->iProtocol = protocolRec->ElementId();
-
-    CleanupStack::PopAndDestroy();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfCMExists
-//
-// 
-// -----------------------------------------------------------------------------
-TBool CCmDestinationImpl::CheckIfCMExistsL( CCmPluginBase& aConnectionMethod )
-    {
-    TRAPD( err, (void)FindConnectionMethodL( aConnectionMethod ) );
-    if ( err )
-        {
-        if ( err == KErrNotFound )
-            {
-            return EFalse;
-            }
-        else
-            {
-            User::Leave( err );
-            }
-        }
-
-    return ETrue;
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmdlg.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1974 +0,0 @@
-/*
-* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CCmDlg
-*
-*/
-
-#include <avkon.hrh>
-#include <eikdef.h>
-#include <eikenv.h>
-#include <eikedwin.h>
-#include <cmmanager.rsg>
-#include <data_caging_path_literals.hrh>
-#include <aknnavide.h>
-#include <akntitle.h>
-#include <eikmenup.h>
-#include <StringLoader.h>
-#include <AknIconArray.h>
-#include <aknnavilabel.h>
-#include <cmmanager.mbg>
-#include <cmpluginembdestinationdef.h>
-#include <featmgr.h>
-
-#include <hlplch.h>
-#include <csxhelp/cp.hlp.hrh>
-
-#include "cmdlg.h"
-#include "cmmanager.hrh"
-#include "cmlistitem.h"
-#include "cmlistitemlist.h"
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-#include "cmdestinationimpl.h"
-#include <cmcommonui.h>
-#include <cmcommonconstants.h>
-#include <cmpbasesettingsdlg.h>
-#include "cmwizard.h"
-#include "selectdestinationdlg.h"
-#include <cmmanagerdef.h>
-#include <mcmdexec.h>
-#include "ccmdexec.h"
-#include "destdlg.h"
-#include "cmlogger.h"
-#include "cmconnsettingsuiimpl.h"
-
-using namespace CMManager;
-using namespace CommsDat;
-
-// ---------------------------------------------------------------------------
-// CCmDlg::ConstructAndRunLD
-// Constructs the dialog and runs it.
-// ---------------------------------------------------------------------------
-//
-TInt CCmDlg::ConstructAndRunLD(  TUint32 aHighlight,
-                                          TUint32& aSelected )
-    {
-    CleanupStack::PushL( this );
-
-    iHighlight = aHighlight;
-    iSelected = &aSelected;
-    
-    ConstructL( R_CM_MENUBAR );
-    PrepareLC( R_CM_DIALOG );
-    CleanupStack::Pop( this );
-
-    iModel = new( ELeave )CCmListboxModel();
-    
-    iCmDestinationImpl = iCmManager->DestinationL( iDestUid );
-    
-    iInfoPopupNoteController = CAknInfoPopupNoteController::NewL();
-    
-    // Trace changes in CommsDat
-    iCmManager->WatcherRegisterL( this );
-        
-    return RunLD();
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmDlg::NewL()
-// Two-phase dconstructor, second phase is ConstructAndRunLD
-// ---------------------------------------------------------------------------
-//
-CCmDlg* CCmDlg::NewL(CCmManagerImpl* aCmManager, TUint32 aDestUid,
-                     CDestDlg* aDestDlg)
-    {
-    CCmDlg* self = new (ELeave) CCmDlg( aCmManager, aDestUid, aDestDlg );
-    return self;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmDlg::CCmDlg()
-// ---------------------------------------------------------------------------
-//
-CCmDlg::CCmDlg( CCmManagerImpl* aCmManager, TUint32 aDestUid,
-                CDestDlg* aDestDlg )
-    : iModelPassed( EFalse )
-    , iCmManager( aCmManager )
-    , iDestUid ( aDestUid )
-    , iPrioritising ( EFalse )
-    , iExitReason( KDialogUserBack )
-    , iEscapeArrived( EFalse )
-    , iExitduringProcessing( EFalse )
-    , iBackduringProcessing( EFalse )
-    , iDestDlg( aDestDlg )
-    {
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmDlg::~CCmDlg
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CCmDlg::~CCmDlg()
-    {
-    // iModel is deleted by the ListBox because LB owns the model...
-    // of course only after we passed ownership...
-    if ( !iModelPassed )
-        {
-        delete iModel;
-        }
-        
-    delete iNaviDecorator;
-    
-    if ( iTitlePane )
-        {
-        // set old text back, if we have it...
-        if ( iOldTitleText )
-            {
-            TRAP_IGNORE( iTitlePane->SetTextL( *iOldTitleText ) );
-            delete iOldTitleText; iOldTitleText = NULL;
-            }
-        }    
-        
-    delete iOldTitleText;
-    
-    if(iCmDestinationImpl)
-        {
-        delete iCmDestinationImpl;
-        iCmDestinationImpl = NULL;
-        }    
-    
-    if ( iInfoPopupNoteController )
-        {
-        delete iInfoPopupNoteController;
-        }
-        
-    if( iCmWizard )
-        {
-        delete iCmWizard;
-        }
-    iItemIndex.Close();
-    
-    delete iCmdExec;
-    iCmdExec = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDlg::PreLayoutDynInitL();
-// called by framework before dialog is shown
-// ---------------------------------------------------------------------------
-//
-void CCmDlg::PreLayoutDynInitL()
-    {
-    iListbox = STATIC_CAST( CCmListbox*, Control( KCmListboxId ) );
-    iListbox->CreateScrollBarFrameL( ETrue );
-    iListbox->ScrollBarFrame()->SetScrollBarVisibilityL
-                        ( CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
-    iListbox->SetListBoxObserver( this );
-
-    iListbox->Model()->SetItemTextArray( iModel );
-    iModelPassed = ETrue;
-    InitTextsL();
-    HandleListboxDataChangeL();
-    iListbox->HandleItemAdditionL();
-    
-    if ( iHighlight )
-        {
-        iListbox->ScrollToMakeItemVisible( iHighlight );
-        iListbox->SetCurrentItemIndexAndDraw( iHighlight );
-        }    
-    }
-    
-// --------------------------------------------------------------------------
-// CCmDlg::DynInitMenuPaneL
-// --------------------------------------------------------------------------
-//
-void CCmDlg::DynInitMenuPaneL( TInt aResourceId,
-                                        CEikMenuPane* aMenuPane )
-    {
-    CAknDialog::DynInitMenuPaneL( aResourceId, aMenuPane );        
-    if ( aResourceId == R_CM_MENU )
-        {
-    	if (aResourceId == R_CM_MENU && !iCmManager->IsHelpOn())
-            {
-            aMenuPane->DeleteMenuItem( EAknCmdHelp );		    
-            }
-        // Menu items
-    	TBool hideEdit      ( EFalse );
-        TBool hideAdd       ( EFalse );
-        TBool hideRename    ( EFalse );
-        TBool hideDelete    ( EFalse );
-        TBool hideCopy      ( EFalse );
-        TBool hideMove      ( EFalse );
-        TBool hidePrioritise( EFalse );
-           
-        // Edit, Rename, Delete and Organise menu items are hidden if:
-        // 1. CM List is empty
-        // 2. Embedded Destinations
-        if ( !( iListbox->Model()->ItemTextArray()->MdcaCount() ) )
-            {
-            hidePrioritise = ETrue;
-            hideEdit = ETrue;
-            hideRename  = ETrue;
-            hideDelete  = ETrue;
-            hideCopy = ETrue;
-            hideMove = ETrue;
-            }
-        // Embedded destinations can be deleted but not edited
-        else if ( ( CurrentCML()->GetBoolAttributeL(ECmDestination) ) )
-            {
-            hideRename  = ETrue;
-            }
-        // Only one CM in the list OR highlighted CM is a virtual CM
-        else if ( ( iListbox->Model()->ItemTextArray()->MdcaCount() == 1 ) )
-            {
-            hidePrioritise = ETrue;
-            }            
-        // virtual CMs pointing to destinations
-        else if ( CurrentCML()->GetBoolAttributeL( ECmVirtual ) )
-            {
-            if ( CurrentCML()->GetIntAttributeL( ECmNextLayerSNAPId ) )
-                {
-                hidePrioritise = ETrue;
-                }
-            }
-     
-        // Show or hide menu items
-        if ( aResourceId == R_CM_MENU )
-            {            
-            aMenuPane->SetItemDimmed( ECmManagerUiCmdCmEdit,    hideEdit );
-            aMenuPane->SetItemDimmed( ECmManagerUiCmdCmAdd,     hideAdd );
-            aMenuPane->SetItemDimmed( ECmManagerUiCmdCmRename,  hideRename );            
-            aMenuPane->SetItemDimmed( ECmManagerUiCmdCmDelete,  hideDelete );    
-            aMenuPane->SetItemDimmed( ECmManagerUiCmdCmPrioritise, hidePrioritise );
-            aMenuPane->SetItemDimmed( ECmManagerUiCmdCmMoveToOtherDestination, hideMove );
-            aMenuPane->SetItemDimmed( ECmManagerUiCmdCmCopyToOtherDestination, hideCopy ); 
-            }
-        }   
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmDlg::InitTextsL
-// called before the dialog is shown
-// to initialize localized textual data
-// ---------------------------------------------------------------------------
-//
-void CCmDlg::InitTextsL()
-    {
-    // set pane text if neccessary...
-    // pane text needed if not pop-up...
-    HBufC* primary = 
-              iEikonEnv->AllocReadResourceLC( R_CMMANAGERUI_EMPTY_METHOD_VIEW_PRIMARY );
-    HBufC* secondary = 
-              iEikonEnv->AllocReadResourceLC( R_CMMANAGERUI_EMPTY_METHOD_VIEW_SECONDARY );
-    CDesCArrayFlat* items = new (ELeave) CDesCArrayFlat(2);
-    CleanupStack::PushL(items);
-    items->AppendL(primary->Des()); 
-    items->AppendL(secondary->Des());      
-    HBufC* emptyText = 
-          StringLoader::LoadLC( R_TWO_STRING_FOR_EMPTY_VIEW , *items);              
-    iListbox->View()->SetListEmptyTextL( *emptyText );    
-    CleanupStack::PopAndDestroy( emptyText );
-    CleanupStack::PopAndDestroy( items );
-    CleanupStack::PopAndDestroy( secondary );
-    CleanupStack::PopAndDestroy( primary );
-
-    iStatusPane = iEikonEnv->AppUiFactory()->StatusPane();
-    iTitlePane = ( CAknTitlePane* )iStatusPane->ControlL(
-                                          TUid::Uid( EEikStatusPaneUidTitle ) );
-
-    iOldTitleText = iTitlePane->Text()->AllocL();
-    HBufC* name = iCmDestinationImpl->NameLC();
-    iTitlePane->SetTextL( *name );
-    CleanupStack::PopAndDestroy( name );
-
-    iNaviPane = ( CAknNavigationControlContainer* ) 
-                    iStatusPane->ControlL( 
-                            TUid::Uid( EEikStatusPaneUidNavi ) );
-    iNaviDecorator = iNaviPane->CreateNavigationLabelL( KNullDesC );
-    iNaviPane->PushL( *iNaviDecorator );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDlg::SetNoOfCMsL
-// ---------------------------------------------------------------------------
-//
-
-void CCmDlg::SetNoOfCMsL(TInt aCount)
-    {
-    if ( iNaviDecorator )
-        {
-        if ( iNaviDecorator->ControlType() == 
-             CAknNavigationDecorator::ENaviLabel)
-            {
-            CAknNaviLabel* naviLabel = 
-                            (CAknNaviLabel*)iNaviDecorator->DecoratedControl();
-            if (aCount)
-                {
-                HBufC* title = NULL;
-                
-                if (aCount == 1)
-                    {
-                    title = StringLoader::LoadLC( 
-                                           R_CMMANAGERUI_NAVI_ONE_CONN_METHOD );
-                    }
-                else
-                    {
-                    title = StringLoader::LoadLC( 
-                                           R_CMMANAGERUI_NAVI_MANY_CONN_METHODS, 
-                                           aCount );
-                    }
-                    
-                naviLabel->SetTextL(*title);
-                  CleanupStack::PopAndDestroy( title );
-                }
-            else
-                {
-                naviLabel->SetTextL(KNullDesC);
-                }
-                
-            iNaviPane->PushL( *iNaviDecorator );
-            }
-        }
-      
-    }
-
-//----------------------------------------------------------
-// CCmDlg::CreateCustomControlL
-//----------------------------------------------------------
-//
-SEikControlInfo CCmDlg::CreateCustomControlL( TInt aControlType )
-    {
-    SEikControlInfo controlInfo;
-    controlInfo.iTrailerTextId = 0;
-    controlInfo.iFlags = 0;
-    if ( aControlType == KCmListboxType )
-        {
-        controlInfo.iControl = new ( ELeave ) CCmListbox;
-        }
-    else
-        {
-        controlInfo.iControl = NULL;
-        }
-    return controlInfo;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDlg::OkToExitL
-// Good to know : EAknSoftkeyCancel is never called, because
-// EEikDialogFlagNotifyEsc flag is not set in the resource.
-// ---------------------------------------------------------------------------
-//
-TBool CCmDlg::OkToExitL( TInt aButtonId )
-    {
-    LOGGER_ENTERFN( "CCmDlg::OkToExitL" );
-
-    // Translate the button presses into commands for the appui & current
-    // view to handle
-    // Dialog should not exit
-    TBool retVal( EFalse );
-    
-    switch ( aButtonId )
-        {
-        case EAknSoftkeyOk:
-        case ECmManagerUiCmdCmEdit:
-            {
-            if ( !iProcessing )
-                {
-                if ( CMCount() )
-                    {
-                    iProcessing = ETrue;
-                    ProcessCommandL( aButtonId );
-                    iProcessing = EFalse;
-                    }
-                else
-                    {
-                    iProcessing = ETrue;
-                    AddConnectionMethodL();
-                    iProcessing = EFalse;
-                    }
-                }
-            break;
-            }
-        case EAknSoftkeyClear:
-            {
-            ProcessCommandL( aButtonId );
-            break;
-            }
-        case ECmManagerUiCmdCmPrioOk:
-            {
-            if ( iPrioritising )
-                {
-                FinishPriorizingL( ETrue );
-                }
-                
-            break;
-            }               
-       case ECmManagerUiCmdCmPrioCancel:            
-            {
-            if ( !MenuShowing() )            
-                {
-                if ( iPrioritising )
-                    {
-                    FinishPriorizingL( EFalse );
-                    }
-                }            
-            break;
-            }           
-        case ECmManagerUiCmdCmUserExit:
-            {
-            iCmManager->WatcherUnRegister();
-                        
-            iExitReason = KDialogUserExit;
-            break;
-            }
-        case EAknSoftkeyBack:
-            {
-            iCmManager->WatcherUnRegister();
-            
-            if ( !iProcessing )
-                {
-                *iSelected = 0;
-                TryExitL( iExitReason );
-                }
-            else
-                {
-                iBackduringProcessing = ETrue;
-                }
-            break;
-            }
-        default:
-            {
-            if ( !iProcessing )
-                {
-                if ( aButtonId == EAknSoftkeyOptions )
-                    {
-                    DisplayMenuL();
-                    }
-                else
-                    {
-                    retVal = ETrue;
-                    }
-                }
-            if ( iProcessing )
-                {
-                iExitduringProcessing = ETrue;
-                if( aButtonId == KDialogUserExit )
-                    {
-                    retVal = ETrue;
-                    } 
-                }
-            break;
-            }
-        }
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDlg::HandleListBoxEventL
-// ---------------------------------------------------------------------------
-//
-void CCmDlg::HandleListBoxEventL( CEikListBox* /*aListBox*/,
-                                  TListBoxEvent aEventType )
-    {
-    LOGGER_ENTERFN( "CCmDlg::HandleListBoxEventL" );
-
-    switch ( aEventType )
-        {
-        case EEventEnterKeyPressed:
-            {
-            if ( iPrioritising )
-                {
-                FinishPriorizingL( ETrue );
-                }
-            else
-                {
-                if ( !iProcessing )
-                    {
-                    delete iCmdExec;
-                    iCmdExec = NULL;
-                    iCmdExec = new (ELeave) CCmdExec(*this);
-                    iCmdExec->Execute();
-                    }
-                }           
-            break;            
-            }
-        case EEventItemSingleClicked:
-            {
-            if ( !iProcessing )
-                {
-                delete iCmdExec;
-                iCmdExec = NULL;
-                iCmdExec = new (ELeave) CCmdExec(*this);
-                iCmdExec->Execute();
-                }
-            break;
-            }
-        case EEventEditingStarted:
-            {
-            break;
-            }
-        case EEventEditingStopped:
-            {
-            break;
-            }
-        default:
-            {
-            break;
-            };
-        };
-    }
-       
-    
-// ---------------------------------------------------------------------------
-// CCmDlg::ProcessCommandL
-// ---------------------------------------------------------------------------
-//
-void CCmDlg::ProcessCommandL( TInt aCommandId )
-    {
-    LOGGER_ENTERFN( "CCmDlg::ProcessCommandL" );
-
-    if ( MenuShowing() )
-        {
-        HideMenu();
-        }
-
-    switch ( aCommandId )
-        {        
-        // Connection Method Modification Commands
-        case ECmManagerUiCmdCmAdd:
-            {
-            if ( !iProcessing )
-                {
-                iProcessing = ETrue;
-                TRAPD( err, AddConnectionMethodL() );
-                // Memory full
-                if (err == KLeaveWithoutAlert || err == KErrNoMemory)
-                    {
-                    iProcessing = EFalse;
-                    return;
-                    }
-                iProcessing = EFalse;
-
-                if ( iBackduringProcessing )
-                    {
-                    iBackduringProcessing = EFalse;
-                    TryExitL( KDialogUserBack );
-                    }
-                }
-            break;
-            }
-
-        case ECmManagerUiCmdCmRename:            
-            {
-            RenameConnectionMethodL();
-            break;
-            }
-            
-        case EAknSoftkeyClear:
-        case ECmManagerUiCmdCmDelete:            
-            {
-            if ( iPrioritising )
-                {
-                // Delete cannot be done if priorising has started.
-                break;
-                }
-            DeleteCurrentCmL();         
-            break;
-            }
-            
-        case ECmManagerUiCmdCmPrioritise:            
-            {
-            PrioritiseConnectionMethodL();
-            break;
-            }
-            
-        case ECmManagerUiCmdCmCopyToOtherDestination:            
-            {
-            CopyConnectionMethodL();            
-            break;
-            }
-            
-        case ECmManagerUiCmdCmMoveToOtherDestination:            
-            {            
-            MoveConnectionMethodL();
-            break;
-            }
-            
-        case EAknSoftkeyOk:
-        case ECmManagerUiCmdCmEdit:
-            {
-            EditConnectionMethodL();
-            break;
-            }   
-
-        // Button Selection commands
-        case EAknSoftkeyOptions:
-            {
-            DisplayMenuL();
-            break;
-            }
-            
-        case ECmManagerUiCmdCmUserExit:
-            {
-            iExitReason = KDialogUserExit;
-            }
-            
-        case EAknSoftkeyBack:
-            {
-            if (!iProcessing)
-                {
-                *iSelected = 0;
-                TryExitL( iExitReason );
-                }
-            break;
-            }
-        case EAknCmdHelp:
-            {
-            HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
-                                    iEikonEnv->EikAppUi()->AppHelpContextL() );
-            }
-            break;
-
-        default:
-            {
-            break;
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDlg::DeleteCurrentCmL
-// ---------------------------------------------------------------------------
-//
-void CCmDlg::DeleteCurrentCmL( )
-    {
-    LOGGER_ENTERFN( "CCmDlg::DeleteCurrentCmL" );
-
-    TCmDefConnValue oldConn;
-    if (iCmManager->IsDefConnSupported())
-        {
-        iCmManager->ReadDefConnL( oldConn );
-        }
-    CCmPluginBase* cm = CurrentCML();
-    if ( !cm )
-    	{
-    	return;
-    	}
-
-    if ( cm->GetBoolAttributeL( ECmProtected ) )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );
-                                
-        return;
-        }
-   
-    if ( cm->GetBoolAttributeL( ECmIsLinked ) )//same check as KErrLocked below
-        {
-        TCmCommonUi::ShowNoteL( 
-                            R_QTN_NETW_CONSET_INFO_CANNOT_DELETE_VIRTUAL_REF,
-                            TCmCommonUi::ECmErrorNote );
-        
-        return;
-        }
-   
-    if ( cm->GetBoolAttributeL( ECmConnected ) )//same check as KErrInUse below
-        {
-        TCmCommonUi::ShowNoteL( R_CMMANAGERUI_INFO_CM_IN_USE_CANNOT_DELETE,
-                                TCmCommonUi::ECmErrorNote );
-        
-        return;
-        }
-
-    // EKOA-74KC3L: check if it is the last CM in a destination being referenced
-    // by a VPN
-    if ( iCmDestinationImpl &&
-         iCmDestinationImpl->ConnectionMethodCount() == 1 )
-        {
-        // it is definitely the last, but is it referenced?
-
-        // for each IAP in CM manager
-        //   1. check if it is virtual
-        //      if not => goto 1.
-        //      if yes:
-        //      2. check if it links to the destination of this CM
-        //         if yes => carryOn = EFalse, ERROR
-        //         if not: carryOn = ETrue
-
-        CommsDat::CMDBRecordSet<CommsDat::CCDIAPRecord>* iaps = 
-                                                    iCmManager->AllIapsL();
-        
-        CleanupStack::PushL( iaps );
-        
-        TBool carryOn = ETrue;
-        TUint32 destId = iCmDestinationImpl->Id();
-
-        // for each IAP in CM manager
-        for ( TInt i = 0; carryOn && i < iaps->iRecords.Count(); ++i )
-            {
-            CommsDat::CCDIAPRecord* rec = (*iaps)[i];
-            TUint32 bearerType = 0;
-            
-            TRAP_IGNORE( bearerType = 
-                             iCmManager->BearerTypeFromIapRecordL( rec ) );
-            if ( !bearerType )
-                {
-                continue;
-                }
-                
-            // check if it is virtual
-            if ( iCmManager->GetBearerInfoBoolL( bearerType, ECmVirtual ) )
-                {
-                // check if it links to the current destination
-                CCmPluginBase* plugin = NULL;            
-                TRAP_IGNORE( plugin = iCmManager->GetConnectionMethodL( 
-                                                           rec->RecordId() ) );
-
-                if ( !plugin )
-                    {
-                    continue;
-                    }
-                
-                if ( plugin->IsLinkedToSnap( destId ) )
-                    {
-                    // the CM links to this destination, deletion not allowed
-                    carryOn = EFalse;
-                    }
-
-                delete plugin;
-                }
-                    
-            }
-            
-        CleanupStack::PopAndDestroy( iaps );
-        
-        if ( !carryOn )
-            {
-            TCmCommonUi::ShowNoteL( R_QTN_NETW_CONSET_INFO_CANNOT_DELETE_VIRTUAL_REF,
-                                TCmCommonUi::ECmErrorNote );
-            return;            
-            }
-        
-        }
-    
-
-    // If it's an embedded destination, show a warning
-    TBool showCmDeleteQuery( ETrue );
-    if ( cm->GetBoolAttributeL( ECmDestination ) )
-        {
-        if ( TCmCommonUi::ShowConfirmationQueryL(
-                            R_CMMANAGERUI_QUEST_EMBEDDED_DEST_DELETE ) )
-            {
-            // user wants to delete, set flag to avoid 2nd query message
-            showCmDeleteQuery = EFalse;
-            }
-        else
-            {
-            return; // user cancelled delete request
-            }
-        }
-
-    HBufC* cmName = cm->GetStringAttributeL( ECmName );
-    CleanupStack::PushL( cmName );
-    
-    // Query for CM deletion - which will be skipped in the case of embedded 
-    // destintations
-    // Protected CM's cannot be deleted either
-    if ( !showCmDeleteQuery || iAlreadyConfirmedDelete ||
-         TCmCommonUi::ShowConfirmationQueryL( 
-                                    R_CMMANAGERUI_QUEST_CM_DELETE,
-                                    *cmName ) )
-        {
-        TInt err = KErrNone;
-        if ( iCmDestinationImpl )
-            {
-            TRAP( err, iCmDestinationImpl->DeleteConnectionMethodL( *cm ) );
-            }
-        else
-            {
-            TRAP( err, (void)cm->DeleteL( ETrue ) );
-            }
-        
-        switch ( err )
-            {
-            case KErrInUse: //shouldn't get here, already checked above
-                {
-                TCmCommonUi::ShowNoteL
-                    ( R_CMMANAGERUI_INFO_CM_IN_USE_CANNOT_DELETE,
-                    TCmCommonUi::ECmErrorNote );
-                }
-                break;
-                
-            case KErrLocked://shouldn't get here, already checked above
-                {
-                TCmCommonUi::ShowNoteL
-                    ( R_QTN_NETW_CONSET_INFO_CANNOT_DELETE_VIRTUAL_REF,
-                      TCmCommonUi::ECmErrorNote );
-                }
-                break;
-                
-            case KErrNone:
-                {
-                if ( iCmDestinationImpl )
-                    {
-                    iCmDestinationImpl->UpdateL();
-                    }
-                if (iCmManager->IsDefConnSupported())
-                    {
-                    iDestDlg->ShowDefaultConnectionNoteL( oldConn );
-                    }
-                HandleListboxDataChangeL();
-                }
-                break;
-
-            default:
-                {
-                }
-                break;
-            }
-        }
-
-    CleanupStack::PopAndDestroy( cmName );
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::RenameConnectionMethodL    
-// --------------------------------------------------------------------------
-//
-void CCmDlg::RenameConnectionMethodL()
-    {
-    LOGGER_ENTERFN( "CCmDlg::RenameConnectionMethodL" );
-
-    CCmPluginBase* cm = CurrentCML();
-    if ( !cm )
-        {
-        return;
-        }
-
-    if ( cm->GetBoolAttributeL( ECmProtected ) )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );
-        return;
-        }
-
-    if ( CurrentCmInUseL() )
-        {
-        return;
-        } 
-           
-    TBuf<KConnMethodNameMaxLength> buf;
-    
-    HBufC* cmName = cm->GetStringAttributeL(ECmName);
-    CleanupStack::PushL(cmName);
-    buf.Copy(*cmName);
-    
-    // Saves the recent naming method and set it to "Not accept"
-    TUint32 savedNM = cm->GetIntAttributeL( ECmNamingMethod );
-    cm->SetIntAttributeL( ECmNamingMethod, ENamingNotAccept );
-
-    // Asks the new name
-    TBool go = ETrue;
-    TInt ret = TCmCommonUi::ShowConfirmationQueryWithInputL(
-                                                R_CMMANAGERUI_PRMPT_CM_MAME,
-                                                buf );
-    
-    // While the name is not unique or cancel pressed
-    while( ret && go )
-        {
-        // Tries to save the nem name. If it is not unique
-        // then ret == KErrArgument
-        TRAPD( err, cm->SetStringAttributeL( ECmName, buf ) );
-
-        if( KErrArgument == err )
-            {
-            // Opens a info note
-            HBufC* noteLine = StringLoader::LoadLC(
-                    R_CMMANAGERUI_INFO_CM_ALREADY_IN_USE, buf );
-
-            TCmCommonUi::ShowNoteL( *noteLine, TCmCommonUi::ECmInfoNote );
-
-            CleanupStack::PopAndDestroy( noteLine );
-
-            // Asks the new name again
-            ret = TCmCommonUi::ShowConfirmationQueryWithInputL(
-                                                R_CMMANAGERUI_PRMPT_CM_MAME,
-                                                buf );
-            }
-        else
-            {
-            // New name is unique loop can stop
-            go = EFalse;
-            }    
-        }
-
-    // Sets back the original naming method
-    cm->SetIntAttributeL( ECmNamingMethod, savedNM );
-
-    // If not cancel pressed the new name is set
-    if( ret )
-        {
-        cm->UpdateL();
-        
-        HandleListboxDataChangeL();
-        }
-   
-    CleanupStack::PopAndDestroy( cmName );
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::PrioritiseConnectionMethodL    
-// --------------------------------------------------------------------------
-//
-void CCmDlg::PrioritiseConnectionMethodL()
-    {
-    LOGGER_ENTERFN( "CCmDlg::PrioritiseConnectionMethodL" );
-    
-    ButtonGroupContainer().SetCommandSetL( R_SOFTKEYS_PRIO_OK_CANCEL__OK );
-    iListbox->View()->SelectItemL( iListbox->CurrentItemIndex() );
-    iListbox->View()->DrawItem( iListbox->CurrentItemIndex() );
-    ButtonGroupContainer().DrawNow();
-    iPrioritising = ETrue;
-    iCmToPrioritise = iListbox->CurrentItemIndex();
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::AddConnectionMethodL    
-// --------------------------------------------------------------------------
-//
-void CCmDlg::AddConnectionMethodL()
-    {
-    LOGGER_ENTERFN( "CCmDlg::AddConnectionMethodL" );
-
-    // Check first if parent destination is protected
-    if ( iCmDestinationImpl && 
-         iCmDestinationImpl->ProtectionLevel() == CMManager::EProtLevel1 )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );
-        return;
-        }
-
-    // Opens a Connection method creation wizard
-    iCmWizard = new (ELeave) CCmWizard( *iCmManager );
-
-    TInt itemstemp = iListbox->Model()->NumberOfItems();
-
-    TInt ret( KErrNone );
-    TRAPD( err, ret = iCmWizard->CreateConnectionMethodL( iCmDestinationImpl ) );
-    if ( err )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                TCmCommonUi::ECmErrorNote );
-        ret = KErrCancel;
-        }
-    delete iCmWizard;
-    iCmWizard = NULL;
-
-
-    // If application wanted to be closed before then RunAppShutter()
-    // should be called here                
-    if( iEscapeArrived )
-        {
-        ( ( CAknAppUi* )iEikonEnv->EikAppUi() )->RunAppShutter();
-        }
-    
-    if( ret != KErrCancel )
-        {
-        iHighlight = ret;
-
-
-        // Update the middle soft key if this is the first cm added
-        if ( CMCount() == 1 )
-            {
-            HBufC* text = StringLoader::LoadLC( R_QTN_MSK_EDIT );
-            ButtonGroupContainer().SetCommandL( ECmManagerUiCmdCmEdit, 
-                                                    *text );
-            CleanupStack::PopAndDestroy( text );
-            }
-        
-        //HandleListboxDataChangeL();
-        TRAP( err, HandleListboxDataChangeL() );
-        if ( err )
-            {
-            TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                    TCmCommonUi::ECmErrorNote );
-            return;
-            }
-        iListbox->HandleItemAdditionL();
-    
-        if (itemstemp < iListbox->Model()->NumberOfItems())
-            {
-            //first item cannot be deleted
-            iListbox->ScrollToMakeItemVisible( 
-                                    iListbox->Model()->NumberOfItems() -1 );
-            iListbox->SetCurrentItemIndexAndDraw( iHighlight );
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::CopyConnectionMethodL    
-// --------------------------------------------------------------------------
-//
-void CCmDlg::CopyConnectionMethodL()
-    {
-    LOGGER_ENTERFN( "CCmDlg::CopyConnectionMethodL" );
-
-    CCmPluginBase* cm = CurrentCML();
-    if ( !cm )
-        {
-        return;
-        }
-
-    if ( cm->GetBoolAttributeL( ECmProtected ) ||
-        ( iCmDestinationImpl && 
-         iCmDestinationImpl->ProtectionLevel() == CMManager::EProtLevel1 ) )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );
-        return;
-        }
-
-    TUint32 destId( 0 );
-    
-    // build an array of possible parent destinations
-    TInt destCount=0;
-    TRAPD( retVal, destCount = iCmManager->DestinationCountL() );
-    if( retVal != KErrNone || destCount < 1 )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_NO_DESTINATION,
-                                TCmCommonUi::ECmErrorNote );
-        return;
-        }
-        
-    RArray<TUint32> destArray( iCmManager->DestinationCountL() );
-    CleanupClosePushL( destArray );
-    
-    iCmManager->AllDestinationsL( destArray );
-    
-    // drop current destination (don't ask why)
-    if ( iCmDestinationImpl ) 
-        {
-        destId = iCmDestinationImpl->Id();
-        
-        TInt index = destArray.Find( destId );
-        if ( index != KErrNotFound )
-            {
-            destArray.Remove( index );
-            }
-        }
-    
-    
-    // now filter the destinations
-    CurrentCML()->FilterPossibleParentsL( destArray );
-
-    // check if there are any remaining destinations
-    if ( !destArray.Count() )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_NO_VPN_STACKING,
-                                TCmCommonUi::ECmErrorNote );        
-        CleanupStack::PopAndDestroy( &destArray );
-        return;
-        }
-    
-    // ok, there is at least 1, pop up the dialog
-    CSelectDestinationDlg* dlg = CSelectDestinationDlg::NewL( destId, 
-                                                              *iCmManager, 
-                                                              &destArray );
-
-    if ( dlg->ExecuteLD( R_CMMANAGER_LIST_QUERY_WITH_MSGBOX ) )
-        {
-        CCmDestinationImpl* dest = iCmManager->DestinationL( destId );
-        CleanupStack::PushL( dest ); 
-        if ( iCmDestinationImpl )
-            {
-            // create a copy of the current connection method
-            CCmPluginBase* cmCopy = cm->CreateCopyL();
-            CleanupStack::PushL( cmCopy );
-            // store it in commsdat
-            cmCopy->UpdateL();
-            dest->AddConnectionMethodL( *cmCopy );
-            
-            CleanupStack::PopAndDestroy( cmCopy );
-            }
-        else
-            {
-            iCmManager->CopyConnectionMethodL( *dest, *( cm ) );
-            }
-
-        // Rare but UpdateL can leave that cause crash
-        TRAPD( err, dest->UpdateL() );
-        if( err < 0 )
-            {
-            CLOG_WRITE_1( "CCmDlg::CopyConnectionMethodL UpdateL: %d", err );
-            }
-    
-        CleanupStack::PopAndDestroy( dest );
-        HandleListboxDataChangeL();                             
-        }
-    else
-        {
-        CleanupStack::PopAndDestroy( &destArray );
-        User::Leave( KErrCancel );
-        }
-
-    CleanupStack::PopAndDestroy( &destArray );
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::MoveConnectionMethodL
-// --------------------------------------------------------------------------
-//
-void CCmDlg::MoveConnectionMethodL()
-    {
-    LOGGER_ENTERFN( "CCmDlg::MoveConnectionMethodL" );
-
-    CCmPluginBase* cm = CurrentCML();
-    if ( !cm )
-        {
-        return;
-        }
-
-    if ( cm->GetBoolAttributeL( ECmProtected ) ||
-         iCmDestinationImpl->ProtectionLevel() == CMManager::EProtLevel1 )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );
-        return;
-        }
-
-    if ( CurrentCmInUseL() )
-        {
-        return;
-        }
-
-    // build an array of possible parent destinations
-    RArray<TUint32> destArray( iCmManager->DestinationCountL() );
-    CleanupClosePushL( destArray );
-    
-    iCmManager->AllDestinationsL( destArray );
-    
-    TUint32 destId( 0 );
-
-    // first remove the current parent (makes no sense moving a CM to its
-    // original destination)
-    if ( iCmDestinationImpl ) 
-        {
-        destId = iCmDestinationImpl->Id();
-        
-        TInt index = destArray.Find( destId );
-        if ( index != KErrNotFound )
-            {
-            destArray.Remove( index );
-            }
-        }
-    
-    // now filter the destinations
-    CurrentCML()->FilterPossibleParentsL( destArray );
-
-    // check if there are any remaining destinations
-    if ( !destArray.Count() )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_NO_VPN_STACKING,
-                                TCmCommonUi::ECmErrorNote );        
-        CleanupStack::PopAndDestroy( &destArray );
-        return;
-        }
-
-        
-    CSelectDestinationDlg* dlg = CSelectDestinationDlg::NewL( destId, 
-                                                              *iCmManager, 
-                                                              &destArray );
-                    
-    if ( dlg->ExecuteLD( R_CMMANAGER_LIST_QUERY_WITH_MSGBOX ) )
-        {
-        CCmDestinationImpl* dest = iCmManager->DestinationL( destId );
-        CleanupStack::PushL( dest );
-        iCmManager->MoveConnectionMethodL( *iCmDestinationImpl,
-                                            *dest,
-                                            *( CurrentCML() ) );
-        CleanupStack::PopAndDestroy( dest );
-        iCmDestinationImpl->UpdateL();                            
-
-        HandleListboxDataChangeL();
-        }
-
-    CleanupStack::PopAndDestroy( &destArray );
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::EditConnectionMethodL
-// --------------------------------------------------------------------------
-//
-void CCmDlg::EditConnectionMethodL()
-    {
-    LOGGER_ENTERFN( "CCmDlg::EditConnectionMethodL" );
-
-    CCmPluginBase* cm = NULL;
-    
-    TRAPD( err, cm = CurrentCML() );
-    
-    if( err == KErrNotSupported )
-        {
-        return;
-        }
-    else
-        {
-        User::LeaveIfError( err );
-        }
-        
-    // Must reload here in case another app changed the data (CurrentCML loads
-    // only if not already loaded)   
-    cm->ReLoadL();
-    
-    if ( cm->GetBoolAttributeL( ECmProtected ) ||
-         cm->GetBoolAttributeL( ECmDestination ) )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );        
-        }
-    else if ( cm->GetBoolAttributeL( ECmBearerHasUi ) )
-        {
-        // check if the cm is in use
-        if ( !CurrentCmInUseL() )
-            {
-            TInt ret = cm->RunSettingsL();
-            if ( ret == KDialogUserExit )
-                {
-                TryExitL( KDialogUserExit );
-                }
-            else
-                {
-                if ( ret == KDialogUserDeleteConfirmed )
-                    {
-                    iAlreadyConfirmedDelete = ETrue;
-                    DeleteCurrentCmL();
-                    iAlreadyConfirmedDelete = EFalse;
-                    }
-                if ( ret == KDialogUserDelete )
-                    {
-                    DeleteCurrentCmL();
-                    }
-                
-                // Reorder according to priorities, if needed
-                ReOrderCMsL();
-                
-                HandleListboxDataChangeL();
-                }
-            }
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmDlg::OfferKeyEventL
-// ---------------------------------------------------------------------------
-//
-TKeyResponse CCmDlg::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                     TEventCode aType )    
-    {
-    LOGGER_ENTERFN( "CCmDlg::OfferKeyEventL" );
-    CLOG_WRITE_1("Key iCode: %d", aKeyEvent.iCode );
-
-    TKeyResponse retVal ( EKeyWasNotConsumed );
-
-    if ( aKeyEvent.iCode == EKeyBackspace )
-        {
-        // While priorising delete item is disabled
-        if( !iPrioritising )
-            {
-            ProcessCommandL( ECmManagerUiCmdCmDelete );
-            }
-        retVal = EKeyWasConsumed;
-        }
-    else if ( aKeyEvent.iCode == EKeyEscape )
-        {
-        // Handling application close needs special care 
-        // because of iCmWizard 
-        if ( iCmWizard )
-            {
-            // if wizard alives then escape should do after wizard has ended.
-            CLOG_WRITE( "CCmDlg::OfferKeyEventL: Wizard in long process" );
-            iEscapeArrived = ETrue;
-            retVal = EKeyWasConsumed;
-            }
-        else    
-            {
-            CLOG_WRITE( "CCmDlg::OfferKeyEventL:Escape" );
-            retVal = CAknDialog::OfferKeyEventL( aKeyEvent, aType );
-            }
-        }
-    else
-        {
-        retVal = iListbox->OfferKeyEventL(aKeyEvent, aType);       
-        }
-
-    return retVal;
-    }
-// ---------------------------------------------------------------------------
-// CCmDlg::HandleInfoPopupNoteEvent
-// called before the dialog is shown to initialize listbox data
-// ---------------------------------------------------------------------------
-//    
-void CCmDlg::HandleInfoPopupNoteEvent(
-                                CAknInfoPopupNoteController* /*aController*/,
-                                TAknInfoPopupNoteEvent /*aEvent*/ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDlg::CurrentCML
-// Currently selected connection method in the list
-// ---------------------------------------------------------------------------
-//
-CCmPluginBase* CCmDlg::CurrentCML()
-    {
-    if ( iItemIndex.Count() == 0 )
-    	{
-    	return NULL;
-    	}
-    return iCmDestinationImpl->GetConnectionMethodL( 
-        iItemIndex[iListbox->CurrentItemIndex()]);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDlg::CMByIndexL
-// a connection method in the list
-// ---------------------------------------------------------------------------
-//
-CCmPluginBase* CCmDlg::CMByIndexL( TInt aIndex )
-    {
-    return iCmDestinationImpl->GetConnectionMethodL( aIndex );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDlg::CMCount
-// number of cms in the list
-// ---------------------------------------------------------------------------
-//
-TInt CCmDlg::CMCount()
-    {
-    return iCmDestinationImpl->ConnectionMethodCount();
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmDlg::HandleListboxDataChangeL
-// called before the dialog is shown to initialize listbox data
-// ---------------------------------------------------------------------------
-//
-void CCmDlg::HandleListboxDataChangeL()
-    {
-    TInt selected = 0;
-    if ( iListbox->CurrentItemIndex() )
-        {
-        selected = iListbox->CurrentItemIndex();
-        }
-    
-    LOGGER_ENTERFN( "CCmDlg::HandleListboxDataChangeL" );
-    iCmManager->OpenTransactionLC();
-
-    RArray<TUint32> cmIds;
-    ConstructCMArrayL( cmIds );
-    CleanupClosePushL( cmIds );
-    
-    // Remove hidden Connection Methods from the array if uncat folder
-    if ( !iCmDestinationImpl )
-        {
-        ClearHiddenCMsFromArrayL( cmIds );
-        }
-    
-    /// Using test values for now.
-    CArrayPtr< CGulIcon >* icons = new( ELeave ) CAknIconArray( KCMGranularity );
-    CleanupStack::PushL( icons );
-    iModel->ResetAndDestroy();
-    
-    MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();        
-    TParse mbmFile;
-    User::LeaveIfError( mbmFile.Set( KManagerIconFilename, 
-                                     &KDC_APP_BITMAP_DIR, 
-                                     NULL ) );        
-
-    
-    icons->AppendL( AknsUtils::CreateGulIconL( 
-                              skinInstance, 
-                              KAknsIIDQgnIndiSettProtectedAdd,
-                              mbmFile.FullName(), 
-                              EMbmCmmanagerQgn_indi_sett_protected_add, 
-                              EMbmCmmanagerQgn_indi_sett_protected_add_mask ) );  
-
-    //0..1 are reserved indexes!
-    CFbsBitmap* bitmap = NULL;
-    CFbsBitmap* mask = NULL;
-
-    AknsUtils::CreateColorIconLC( skinInstance,
-                                  KAknsIIDQgnIndiDefaultConnAdd,
-                                  KAknsIIDQsnIconColors,
-                                  EAknsCIQsnIconColorsCG13,
-                                  bitmap,
-                                  mask,
-                                  mbmFile.FullName(),
-                                  EMbmCmmanagerQgn_indi_default_conn_add,
-                                  EMbmCmmanagerQgn_indi_default_conn_add_mask,
-                                  AKN_LAF_COLOR( 215 ) );
-
-    CGulIcon* icon = CGulIcon::NewL( bitmap, mask ); // Ownership transferred
-    CleanupStack::Pop( 2 ); // bitmap, mask
-
-    CleanupStack::PushL( icon );
-    icons->AppendL( icon );
-    CleanupStack::Pop( icon );
-
-    RArray<TUint> bearerIdArray = RArray<TUint>( KCmArrayBigGranularity );
-    CleanupClosePushL( bearerIdArray );    
-    
-    TCmDefConnValue sel;
-    TInt defUid = KErrNotFound;
-    if ( iCmManager->IsDefConnSupported() )
-        {
-        iCmManager->ReadDefConnL(sel);
-        if ( sel.iType == EDCConnectionMethod )
-            {
-            defUid = sel.iId;
-            }
-        }
-    iItemIndex.Reset();
-    for ( TInt i = 0; i < cmIds.Count(); i++ )
-        {
-        TInt iconId = KErrNotFound;
-        CCDAccessPointRecord* destAPRecord = NULL;
-        CCDIAPRecord* iapRecord = NULL;
-        HBufC* name = NULL;
-        TBool isDest( cmIds[i] > KCmDefaultDestinationAPTagId );
-        TUint recId( 0 );
-        TBool protect;
-        TUint32 bearerType( 0 );
-        
-        if( isDest )
-            {
-            destAPRecord = static_cast<CCDAccessPointRecord *>(
-                           CCDRecordBase::RecordFactoryL( KCDTIdAccessPointRecord ) );
-            CleanupStack::PushL( destAPRecord );
-            destAPRecord->iRecordTag = cmIds[i];
-            if ( !destAPRecord->FindL( iCmManager->Session() ) )
-                {
-                User::Leave( KErrNotFound );
-                }
-            
-            name = TPtrC( destAPRecord->iRecordName ).AllocLC();
-
-            TProtectionLevel protLev = CCmDestinationImpl::ProtectionLevelL( *iCmManager, cmIds[i] );
-            
-            protect = (protLev == EProtLevel1) || (protLev == EProtLevel2);
-
-            HBufC* destName = StringLoader::LoadL( R_QTN_NETW_CONSET_EMBEDDED_DEST,
-                                                   *name );
-                                                   
-            CleanupStack::PopAndDestroy( name );            
-            name = destName;            
-            CleanupStack::PushL( name );
-            
-            bearerType = KUidEmbeddedDestination;
-            }
-        else
-            {
-            recId = cmIds[i];
-            iapRecord = static_cast<CCDIAPRecord *>
-                          (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
-            CleanupStack::PushL( iapRecord );
-            
-            iapRecord->SetRecordId( recId );
-            iapRecord->LoadL( iCmManager->Session() );
-            
-            TRAPD( err, bearerType = iCmManager->BearerTypeFromIapRecordL( iapRecord ) );
-            
-            if( err == KErrNotSupported )
-                // This is unsupported connection method -> don't add it to the list
-                {
-                CleanupStack::PopAndDestroy( iapRecord );
-                continue;
-                }
-            else
-                {
-                User::LeaveIfError( err );
-                }
-            name = TPtrC( iapRecord->iRecordName ).AllocLC();
-            protect = iapRecord->Attributes() & ECDProtectedWrite;
-
-            if ( bearerIdArray.Count() )
-                {
-                for ( TInt j = 0; j<bearerIdArray.Count(); j++ )
-                    {
-                    if ( bearerType == bearerIdArray[j] )
-                        {
-                        iconId = j+KCmReservedIconIndexCount;
-                        }
-                    }
-                }
-            }
-
-        if ( iconId == KErrNotFound )
-            {
-            TInt iconInt( 0 );
-            if( isDest )
-                // Embedded destinations has not constant icon.
-                {
-                iconInt = (TInt)CCmDestinationImpl::IconIdL( *iCmManager,
-                                                             cmIds[i] );
-                }
-            else
-                {
-                iconInt = iCmManager->GetBearerInfoIntL( bearerType, 
-                                                         ECmBearerIcon );
-                }
-
-            if (iconInt) 
-                {
-                if ( isDest )
-                    {
-                    // append zero - assuming that bearer type values differ from zero
-                    bearerIdArray.Append( 0 ); 
-                    }
-                else
-                    {
-                    bearerIdArray.Append( bearerType );
-                    }
-
-                icons->AppendL( (CGulIcon*)iconInt );
-                iconId = bearerIdArray.Count()-1+KCmReservedIconIndexCount;
-                }
-            else 
-                {
-                iconId = KCmReservedIconIndexCount;
-                }
-            }
-        TBool def = EFalse;
-        if ( defUid == recId ) 
-            {
-            def = ETrue;
-            }
-        
-        TInt nextLayerSnapId = 0;
-        if( !isDest ) 
-            {
-            // Check if it is VPN over destination    
-            // If yes the list item should have single line 
-            CCmPluginBase* plugin = iCmManager->GetConnectionMethodL( cmIds[i] );
-            CleanupStack::PushL( plugin );
-                   
-            if( plugin->GetBoolAttributeL( ECmVirtual ) )
-                {
-                nextLayerSnapId = plugin->GetIntAttributeL( ECmNextLayerSNAPId );
-                }
-                
-            CleanupStack::PopAndDestroy( plugin );
-            }
-
-        CCmListItem* item = 
-                CCmListItem::NewLC( 
-                            recId, 
-                            name,
-                            i, 
-                            iconId,
-                            protect,
-                            (nextLayerSnapId ? ETrue : EFalse),
-                            // reasons for single line
-                            ( isDest || !iCmDestinationImpl), 
-                            def );
-        CleanupStack::Pop( item );
-        CleanupStack::Pop( name );
-        CleanupStack::PopAndDestroy(); // iapRecord or nwRecord
-        CleanupStack::PushL( item );
-        iModel->AppendL( item );
-        CleanupStack::Pop( item );
-        iItemIndex.Append(i);
-        }
-    
-    TInt cmCount = iItemIndex.Count();
-    SetNoOfCMsL( cmCount );
-    
-    if ( !cmCount && iCmDestinationImpl )
-        {
-        HBufC* buf = 0;
-        // rare case probably only caused by bad configuration
-        if ( iCmDestinationImpl->ProtectionLevel() == EProtLevel1 )
-            {
-            buf = StringLoader::LoadLC( R_TEXT_SOFTKEY_OPTION );
-            }
-        else
-            {    
-            buf = StringLoader::LoadLC( R_CMMANAGERUI_MSK_ADD_METHOD );
-            }
-        ButtonGroupContainer().SetCommandL( ECmManagerUiCmdCmEdit, *buf );
-        ButtonGroupContainer().DrawDeferred();                                                    
-        CleanupStack::PopAndDestroy( buf );
-        }
-
-    CleanupStack::PopAndDestroy( &bearerIdArray );
-    
-    CArrayPtr<CGulIcon>* oldIcons = 
-                            iListbox->ItemDrawer()->ColumnData()->IconArray();
-    if ( oldIcons )
-        {
-        oldIcons->ResetAndDestroy();
-        delete oldIcons;
-        }
-    
-    iListbox->ItemDrawer()->ColumnData()->SetIconArray( icons );
-
-    CleanupStack::Pop( icons );
-    CleanupStack::PopAndDestroy( &cmIds ); 
-    
-    iCmManager->CommitTransactionL( KErrNone );
-    
-    iListbox->DrawNow();
-    iListbox->UpdateScrollBarsL();
-    
-    TInt count = iListbox->Model()->NumberOfItems();
-    if ( count )
-        {
-        if ( count <= selected )
-            {
-            selected = count - 1; // index, so --
-            }
-        if ( selected >= 0 )
-            {
-            iListbox->ScrollToMakeItemVisible( selected);
-            iListbox->SetCurrentItemIndexAndDraw( selected );            
-            }
-        }
-    }
-    
-
-// --------------------------------------------------------------------------
-// CCmDlg::CurrentCmInUseL
-// --------------------------------------------------------------------------
-//
-TBool CCmDlg::CurrentCmInUseL()
-    {
-    TBool retVal = CurrentCML()->GetBoolAttributeL( ECmConnected );
-    if ( retVal )
-        {
-        TCmCommonUi::ShowNoteL( R_QTN_SET_NOTE_AP_IN_USE_EDIT,
-                                TCmCommonUi::ECmErrorNote );
-        retVal = ETrue;
-        }
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::ConstructCMArrayL
-// --------------------------------------------------------------------------
-//
-void CCmDlg::ConstructCMArrayL( RArray<TUint32>& aCmIds )
-    {
-    iCmDestinationImpl->ReLoadConnectionMethodsL();
-    iCmDestinationImpl->ConnectMethodIdArrayL( aCmIds );
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::ClearHiddenCMsFromArrayL
-// --------------------------------------------------------------------------
-//
-void CCmDlg::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--;
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::GetHelpContext
-// --------------------------------------------------------------------------
-//
-void CCmDlg::GetHelpContext( TCoeHelpContext& aContext ) const
-    {
-    aContext.iMajor = KHelpUidPlugin;
-    aContext.iContext = KSET_HLP_CONN_METHODS_VIEW;
-    }
-    
-// --------------------------------------------------------------------------
-// CCmDlg::FinishPriorizingL
-// --------------------------------------------------------------------------
-//
-void CCmDlg::FinishPriorizingL( TBool aOkPushed )
-    {
-    LOGGER_ENTERFN( "CCmDlg::FinishPriorizing" );
-
-    iListbox->ClearSelection();
-    iPrioritising = EFalse;
-    
-    if( aOkPushed )
-        {
-        if ( CurrentCML()->GetBoolAttributeL( ECmDestination ) ||
-             (CurrentCML()->GetBoolAttributeL( ECmVirtual ) &&
-              CurrentCML()->GetIntAttributeL( ECmNextLayerSNAPId )) )
-            {
-            // Priorising not possible
-            TCmCommonUi::ShowNoteL( R_CMMANAGERUI_INFO_PRIO_NOT_POSSIBLE,
-                                    TCmCommonUi::ECmInfoNote );
-            }
-        else
-            {
-            CCmPluginBase* cm = CMByIndexL(iCmToPrioritise);
-            iCmDestinationImpl->ModifyPriorityL( 
-                                *cm, 
-                                iListbox->CurrentItemIndex());
-            iCmDestinationImpl->UpdateL();
-            HandleListboxDataChangeL();
-            }
-        }
-     // Set the softkeys back    
-     ButtonGroupContainer().SetCommandSetL(
-                                    R_SOFTKEYS_OPTIONS_BACK__EDIT );
-     ButtonGroupContainer().DrawDeferred();
-     }
-
-
-// --------------------------------------------------------------------------
-// CCmDlg::Execute
-// --------------------------------------------------------------------------
-//
-void CCmDlg::Execute()
-    {
-    LOGGER_ENTERFN( "CCmDlg::Execute" );
-
-    iInfoPopupNoteController->HideInfoPopupNote();
-    
-    if(iPrioritising)
-    	{
-    	TRAPD( err, FinishPriorizingL( ETrue ) );
-    	if ( err )
-    	    {
-    	    HandleLeaveError( err );
-    	    }
-    	}
-    else
-    	{
-        iProcessing = ETrue;
-        
-        TRAPD( err, ProcessCommandL(ECmManagerUiCmdCmEdit) );
-    	if ( err )
-    	    {
-    	    HandleLeaveError( err );
-    	    }
-
-        iProcessing = EFalse;
-    	}
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::HandleLeaveError
-// --------------------------------------------------------------------------
-//
-void CCmDlg::HandleLeaveError( TInt /*aError*/ )
-    {
-    if(iProcessing)
-        {
-        iProcessing = EFalse;
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::HandleResourceChange
-// --------------------------------------------------------------------------
-//
-void CCmDlg::HandleResourceChange( TInt aType )
-    {
-    CCoeControl::HandleResourceChange( aType ); 
-
-    if( aType == KEikDynamicLayoutVariantSwitch )
-        {
-        DrawNow(); 
-        }
-        
-    CAknDialog::HandleResourceChange(aType);        
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::GetInsertIndexL
-// --------------------------------------------------------------------------
-//
-TInt CCmDlg::GetInsertIndexL( TInt aCount, TUint32 aPriority )
-    {
-    TInt ret = -1;
-    TUint32 priority;
-    
-    for ( TInt index = 0; index < aCount; index++ )
-        {
-        CCmPluginBase* cm = iCmDestinationImpl->GetConnectionMethodL( iItemIndex[index] );
-        
-        if ( cm->GetBoolAttributeL( ECmVirtual ) &&
-             !cm->GetIntAttributeL( ECmNextLayerSNAPId ) )
-             {
-             TUint32 underlying = cm->GetIntAttributeL( ECmNextLayerIapId );
-             if ( underlying != 0 )
-                {
-                // Find the index that this VPN Iap should be inserted
-                TUint32 underlyingBearer = iCmManager->BearerTypeFromCmIdL( underlying );
-                priority = iCmManager->GetBearerInfoIntL( underlyingBearer, ECmDefaultPriority );
-                }
-             else
-                {
-                priority = KDataMobilitySelectionPolicyPriorityWildCard;
-                }
-             }
-        else
-            {
-            priority = cm->Plugin()->GetIntAttributeL( ECmDefaultPriority );
-            }
-        
-        if (priority > aPriority)
-            {
-            ret = index;
-            break;
-            }
-        }
-    
-    return ret;
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::ReBuildItemIndexArrayL
-// --------------------------------------------------------------------------
-//
-void CCmDlg::ReBuildItemIndexArrayL()
-    {
-    iCmManager->OpenTransactionLC();
-
-    RArray<TUint32> cmIds;
-    ConstructCMArrayL( cmIds );
-    CleanupClosePushL( cmIds );
-    
-    // Remove hidden Connection Methods from the array if uncat folder
-    if ( !iCmDestinationImpl )
-        {
-        ClearHiddenCMsFromArrayL( cmIds );
-        }
-
-    iItemIndex.Reset();
-    for ( TInt i = 0; i < cmIds.Count(); i++ )
-        {
-        iItemIndex.Append(i);
-        }
-
-    CleanupStack::PopAndDestroy( &cmIds ); 
-    
-    iCmManager->CommitTransactionL( KErrNone );
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::ReOrderCMsL
-// --------------------------------------------------------------------------
-//
-void CCmDlg::ReOrderCMsL()
-    {
-    ReBuildItemIndexArrayL();
-    
-    TBool prioAllowed = ETrue;
-    TInt firstNotAllowedEntry = 0;
-    TInt index = 0;
-    TInt count = iItemIndex.Count();
-    
-    if (!iCmDestinationImpl)
-        {
-        return;
-        }
-   
-    // This part is to move a SANP-referred VPN Iap to the end of list if the VPN Iap is changed from
-    // IAP-referred to SNAP-referred. 
-    for ( index = 0; index < count; index++ )
-        {
-        CCmPluginBase* cm = iCmDestinationImpl->GetConnectionMethodL( iItemIndex[index] );
-        
-        if ( cm->GetBoolAttributeL( ECmDestination ) ||
-             (cm->GetBoolAttributeL( ECmVirtual ) &&
-              cm->GetIntAttributeL( ECmNextLayerSNAPId )) )
-            {
-            prioAllowed = EFalse;
-            firstNotAllowedEntry = index;
-            }
-        else
-            {
-            if ( !prioAllowed )
-                {
-                iCmDestinationImpl->ModifyPriorityL(*cm, firstNotAllowedEntry);
-                iCmDestinationImpl->UpdateL();
-                // start from the beginning
-                index = 0;
-                prioAllowed = ETrue;
-                continue;
-                }
-            }
-        }
-
-    // This part is to move a IAP-referred VPN Iap to a proper location of priority in list
-    // if the VAP Iap is changed from SNAP-referred to IAP-referred.
-    for ( index = 0; index < count; index++ )
-        {
-        CCmPluginBase* cm = iCmDestinationImpl->GetConnectionMethodL( iItemIndex[index] );
-
-        if ( cm->GetBoolAttributeL( ECmVirtual ) &&
-             !cm->GetIntAttributeL( ECmNextLayerSNAPId ) )
-            {
-            TUint32 underlying = cm->GetIntAttributeL( ECmNextLayerIapId );
-            if ( underlying != 0 )
-                {
-                // Find the index that this VPN Iap should be inserted
-                TUint32 underlyingBearer = iCmManager->BearerTypeFromCmIdL( underlying );
-                TUint32 underlyingPrio = iCmManager->GetBearerInfoIntL( underlyingBearer, ECmDefaultPriority );
-                TInt insertAt = GetInsertIndexL( index, underlyingPrio );
-                
-                // Modify the priority of this VPN Iap
-                if (insertAt != -1)
-                    {
-                    iCmDestinationImpl->ModifyPriorityL( *cm, insertAt );
-                    iCmDestinationImpl->UpdateL();
-                    break;
-                    }
-                }
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::CommsDatChanges
-// --------------------------------------------------------------------------
-//
-void CCmDlg::CommsDatChangesL()
-    {
-    if (iCmDestinationImpl)
-        {
-        // If the destination that is currently working on disappears
-        // with some reason then go back to parent view
-        if( !iCmManager->DestinationStillExistedL( iCmDestinationImpl ) )
-            {
-            iCmManager->WatcherUnRegister();
-            TryExitL( iExitReason );
-            return;
-            }
-        }
-    
-    // Update list box
-    HandleListboxDataChangeL();
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmlistbox.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CCmListbox
-*
-*/
-
-#include <eikclbd.h>
-#include <avkon.mbg>
-#include <aknkeys.h>
-#include <data_caging_path_literals.hrh>
-
-#include "cmlistbox.h"
-#include "cmlistboxmodel.h"
-#include "cmlistitem.h"
-
-
-// ---------------------------------------------------------------------------
-// CCmListbox::NewL
-// ---------------------------------------------------------------------------
-//
-CCmListbox* CCmListbox::NewL( const CCoeControl* aParent )
-    {
-    CCmListbox* listbox = new ( ELeave ) CCmListbox();
-    CleanupStack::PushL( listbox );
-    listbox->ConstructL( aParent, EAknListBoxSelectionList );
-    CleanupStack::Pop( listbox );    
-    return listbox;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmListbox::CCmListbox
-// ---------------------------------------------------------------------------
-//
-CCmListbox::CCmListbox()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CCmListbox::~CCmListbox
-// ---------------------------------------------------------------------------
-//
-CCmListbox::~CCmListbox()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CCmListbox::OfferKeyEventL
-// ---------------------------------------------------------------------------
-//
-TKeyResponse CCmListbox::OfferKeyEventL
-( const TKeyEvent& aKeyEvent, TEventCode aType )
-    {
-    if ( aKeyEvent.iCode == EKeyOK &&
-         !( aKeyEvent.iModifiers & EModifierShift ) )
-        {
-        // Enter pressed (not Shift-Enter). This will report an
-        // EEnterKeyPressed event sent to the observer (the view), which may
-        // delete this listbox. The code which processes keypresses by
-        // default, will continue (on the already deleted listbox), and
-        // will crash. So we grab this keypress here, and generate the
-        // same event, but after that, quit immediately!
-        ReportListBoxEventL( MEikListBoxObserver::EEventEnterKeyPressed );
-        // By now the listbox may have been deleted!
-        // Do not access it after this point!
-        return EKeyWasConsumed;
-        }
-    else
-        {
-        return CAknDoubleGraphicStyleListBox::OfferKeyEventL
-            ( aKeyEvent, aType );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmListbox::FocusChanged
-// ---------------------------------------------------------------------------
-//
-void CCmListbox::FocusChanged( TDrawNow aDrawNow )
-    {
-    // Do nothing until the listbox is fully constructed
-    // The dialogpage sets the focus before calling ConstructL
-    if ( iView )
-        {
-        CAknDoubleGraphicStyleListBox::FocusChanged( aDrawNow );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmListbox::Uid4Item
-// ---------------------------------------------------------------------------
-//
-TUint32 CCmListbox::Uid4Item( TInt aItem ) const
-    {
-    CCmListboxModel* lbmodel =
-        STATIC_CAST( CCmListboxModel*, Model()->ItemTextArray() );
-    return lbmodel->At( aItem )->Uid();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmListbox::CurrentItemUid
-// ---------------------------------------------------------------------------
-//
-TUint32 CCmListbox::CurrentItemUid() const
-    {
-    CCmListboxModel* lbmodel =
-        STATIC_CAST( CCmListboxModel*, Model()->ItemTextArray() );
-    TInt idx = CurrentItemIndex();
-    TUint32 retval( 0 );
-    if ( idx >= 0 )
-        {
-        retval = lbmodel->At( idx )->Uid();
-        }
-    return retval;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmListbox::CurrentItemNameL
-// ---------------------------------------------------------------------------
-//
-const TDesC& CCmListbox::CurrentItemNameL()
-    {
-    CCmListboxModel* lbmodel = new( ELeave )CCmListboxModel;
-    lbmodel = STATIC_CAST( CCmListboxModel*, Model()->ItemTextArray() );
-    return lbmodel->At( CurrentItemIndex() )->Name();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmListbox::HandleResourceChange
-// ---------------------------------------------------------------------------
-//
-void CCmListbox::HandleResourceChange(TInt aType)
-    {
-    if ( aType == KAknsMessageSkinChange )
-        {
-        SizeChanged();
-        }
-        
-    CAknDoubleGraphicStyleListBox::HandleResourceChange( aType );     
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmlistboxmodel.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CCmListboxModel
-*
-*/
-
-#include <AknIconArray.h>
-#include <aknlists.h>
-#include <StringLoader.h>
-#include <cmmanager.rsg>
-
-#include "cmlistboxmodel.h"
-#include "cmlistitem.h"
-#include <cmcommonconstants.h>
-#include "cmlistitemlist.h"
-
-// ---------------------------------------------------------------------------
-// CCmListboxModel::CCmListboxModel
-// ---------------------------------------------------------------------------
-//
-CCmListboxModel::CCmListboxModel()
-    : iOffset( 0 )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CCmListboxModel::~CCmListboxModel
-// ---------------------------------------------------------------------------
-//
-CCmListboxModel::~CCmListboxModel()
-    {
-    //ResetAndCmroy(); // deletes all elements...
-    }
-
-// ---------------------------------------------------------------------------
-// CCmListboxModel::MdcaCount
-// ---------------------------------------------------------------------------
-//
-TInt CCmListboxModel::MdcaCount() const
-    {
-    return Count();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmListboxModel::SetOwnIconOffset
-// ---------------------------------------------------------------------------
-//
-void CCmListboxModel::SetOwnIconOffset( TInt aOffset )
-    {
-    iOffset = aOffset;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmListboxModel::MdcaPoint
-// ---------------------------------------------------------------------------
-//
-TPtrC CCmListboxModel::MdcaPoint( TInt aIndex ) const
-    {
-    // We need to cast away the const-ness from the buffer.
-    // It was definitely made for formatting!
-    FormatListboxText( aIndex,
-                       MUTABLE_CAST( TBuf<KMaxCmListboxName>&, iBuf ) );
-
-    return iBuf;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmListboxModel::FormatListboxText
-// ---------------------------------------------------------------------------
-//
-void CCmListboxModel::FormatListboxText( TInt aIndex,
-                                         TDes& aBuf ) const
-    {
-    TRAP_IGNORE( FormatListboxTextL( aIndex, aBuf ) );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmListboxModel::FormatListboxTextL
-// ---------------------------------------------------------------------------
-//
-void CCmListboxModel::FormatListboxTextL( TInt aIndex,
-                                          TDes& aBuf ) const
-    {
-    aBuf.Zero();
-    TUint icon = At( aIndex )->IconIndex();
-    if ( At(aIndex)->IsSingleLine() )
-        {
-        if ( At(aIndex)->IsProtected() )
-            {
-            aBuf.Format( KListItemFormatEmbDestProt, 
-                         icon, 
-                         &At( aIndex )->Name(), 
-                         KCmReservedIconIndexProtected );
-            }
-        else            
-            {
-            aBuf.Format( KListItemFormatEmbDest, 
-                         icon,
-                         &At( aIndex )->Name() );            
-            }
-        }
-     else
-        {
-        HBufC* secondLine;
-        secondLine = StringLoader::LoadLC( R_CMMANAGERUI_METHOD_PRIORITY_OTHER,
-                                           At( aIndex )->Priority() + 1 );
-    if ( At( aIndex )->IsDefault() )
-        {
-            aBuf.Format( KListItemFormatCmProt,
-                         icon, 
-                         &At( aIndex )->Name(), 
-                         secondLine, 
-                         KCmReservedIconIndexDefaultConn );
-        }
-    else
-        {
-        if ( At(aIndex)->IsProtected() )
-            {
-            aBuf.Format( KListItemFormatCmProt, 
-                         icon, 
-                         &At( aIndex )->Name(), 
-                         secondLine, 
-                         KCmReservedIconIndexProtected );    
-            }
-        else if ( At(aIndex)->IsVpnOverDestination() )
-            {
-            CleanupStack::PopAndDestroy( secondLine );
-            
-            secondLine = StringLoader::LoadLC( R_QTN_NETW_CONSET_METHOD_PRIORITY_AUTO);
-
-            aBuf.Format( KListItemFormatCm, 
-                         icon,
-                         &At( aIndex )->Name(),
-                         secondLine );
-            }
-        else
-            {
-            aBuf.Format( KListItemFormatCm, 
-                         icon, 
-                         &At( aIndex )->Name(), 
-                         secondLine );
-            }
-         }
-            
-        CleanupStack::PopAndDestroy( secondLine );
-        }
-    }
-
--- a/cmmanager/cmmgr/Framework/Src/cmlistitem.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CCmListItem
-*
-*/
-
-#include <eikdef.h>
-#include "cmlistitem.h"
-
-// ---------------------------------------------------------
-// CCmListItem::NewLC
-// ---------------------------------------------------------
-//
-CCmListItem* CCmListItem::NewLC( TUint32 aUid,
-                                 HBufC* aName,
-                                 TInt aPriority, 
-                                 TUint aIconIndex, 
-                                 TBool aIsProtected, 
-                                 TBool aIsVpnOverDestination,
-                                 TBool aIsSingleLine,
-                                 TBool aIsDefault )
-    {
-
-    CCmListItem* db = new( ELeave ) CCmListItem( aName );
-    CleanupStack::PushL( db );
-    db->ConstructL( aUid, 
-                    aPriority, 
-                    aIconIndex, 
-                    aIsProtected,
-                    aIsVpnOverDestination, 
-                    aIsSingleLine,
-                    aIsDefault );
-    return db;
-    }
-// ---------------------------------------------------------
-// CCmListItem::~CCmListItem
-// ---------------------------------------------------------
-//
-CCmListItem::~CCmListItem()
-    {
-    delete iName;
-    }
-
-// ---------------------------------------------------------
-// CCmListItem::CCmListItem
-// ---------------------------------------------------------
-//
-CCmListItem::CCmListItem( HBufC* aName )
-    : iName( aName )
-    {
-    }
-
-// ---------------------------------------------------------
-// CCmListItem::ConstructL
-// ---------------------------------------------------------
-//
-void CCmListItem::ConstructL( TUint32 aUid,
-                              TInt aPriority, 
-                              TUint aIconIndex, 
-                              TBool aIsProtected, 
-                              TBool aIsVpnOverDestination,
-                              TBool aIsSingleLine,
-                              TBool aIsDefault )
-    {
-    iPriority = aPriority;
-    iIconIndex = aIconIndex;
-    iIsProtected =  aIsProtected;
-    iIsSingleLine =  aIsSingleLine;
-    iIsDefault =  aIsDefault;
-    iIsVpnOverDestination = aIsVpnOverDestination;
-        
-    iUid = aUid;
-    }
-// ---------------------------------------------------------
-// CCmListItem::Name
-// ---------------------------------------------------------
-//
-const TDesC& CCmListItem::Name()
-    {
-    return *iName;
-    }
-
-
-// ---------------------------------------------------------
-// CCmListItem::Uid
-// ---------------------------------------------------------
-//
-TUint32 CCmListItem::Uid()
-    {
-    return iUid;
-    }
-    
-// ---------------------------------------------------------
-// CCmListItem::IconIndex
-// ---------------------------------------------------------
-//
-TUint CCmListItem::IconIndex()
-    {
-    return iIconIndex;
-    }
-
-// ---------------------------------------------------------
-// CCmListItem::Priority
-// ---------------------------------------------------------
-//
-TInt CCmListItem::Priority()
-    {
-    return iPriority;
-    }
-
-// ---------------------------------------------------------
-// CCmListItem::IsProtected
-// ---------------------------------------------------------
-//
-TBool CCmListItem::IsProtected()
-    {
-    return iIsProtected;
-    }
-    
-// ---------------------------------------------------------
-// CCmListItem::IsSingleLine
-// ---------------------------------------------------------
-//
-TBool CCmListItem::IsSingleLine()
-    {
-    return iIsSingleLine;
-    }
-
-// ---------------------------------------------------------
-// CCmListItem::IsDefault
-// ---------------------------------------------------------
-//    
-TBool CCmListItem::IsDefault()
-    {
-    return iIsDefault;
-    }
-
-// ---------------------------------------------------------
-// CCmListItem::IsVpnOverDestination
-// ---------------------------------------------------------
-//    
-TBool CCmListItem::IsVpnOverDestination()
-    {
-    return iIsVpnOverDestination;
-    }
-
-    
--- a/cmmanager/cmmgr/Framework/Src/cmlistitemlist.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CCmListItemList
-*
-*/
-
-#include "cmlistitemlist.h"
-#include "cmlistitem.h"
-
-
-LOCAL_D const TInt KGranularity = 4;    ///< Granularity of the list.
-
-// ---------------------------------------------------------
-// CCmListItemList::CCmListItemList
-// ---------------------------------------------------------
-//
-CCmListItemList::CCmListItemList()
-    : CArrayPtrFlat<CCmListItem>( KGranularity )
-    {
-    }
-
-// ---------------------------------------------------------
-// CCmListItemList::~CCmListItemList
-// ---------------------------------------------------------
-//
-CCmListItemList::~CCmListItemList()
-    {
-    ResetAndDestroy();
-    }
-
-// ---------------------------------------------------------
-// CCmListItemList::ItemForUid
-// ---------------------------------------------------------
-//
-CCmListItem* CCmListItemList::ItemForUid( TUint32 aUid ) const
-    {
-    // This method cannot return "const CCmListItem*", because all methods
-    // of CCmListItem are non-const -> if the returned item was const, it
-    // would be unusable.
-    TInt i;
-    TInt count = Count();
-    for ( i = 0; i < count; i++ )
-        {
-        if ( At( i )->Uid() == aUid )
-            {
-            return At( i );
-            }
-        }
-
-    return NULL;
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmlogger.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,220 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of TLogger
-*
-*/
-
-#include    "cmlogger.h"
-
-#ifdef __CONNECTION_METHOD_LOG__
-
-_LIT( KDeclareLoggerName, "<DECLARE_LOGGER_NAME>< %S >" );
-_LIT( KAttachLogger, "<ATTACH_LOGGER><%x>to<%x>" );
-_LIT( KOwnerLog, "<%x> -\t" );
-_LIT8( KOwnerLog8, "<%x> -\t" );
-_LIT( KLoggerCreated, "<LOGGER_CREATED>" );
-_LIT( KLoggerClosed, "<LOGGER_CLOSED>" );
-_LIT( KLoggerName, "[CMManager]" );
-_LIT8( KLoggerName8, "[CMManager]" );
-
-// ---------------------------------------------------------
-// CFunctionEntryExit::CFunctionEntryExit()
-// ---------------------------------------------------------
-//
-CFunctionEntryExit::CFunctionEntryExit( const TAny* aOwner, 
-                                        TRefByValue<const TDesC> aFunc )
-    : iOwner( aOwner )
-    {
-    iEntryTime.UniversalTime();
-
-    iFunc.Set( aFunc );
-        
-    TLogger::LogIt( aOwner, _L("-> <%S>"), &iFunc );
-    }
-    
-// ---------------------------------------------------------
-// CFunctionEntryExit::~CFunctionEntryExit()
-// ---------------------------------------------------------
-//
-CFunctionEntryExit::~CFunctionEntryExit() 
-    {
-    TTime exitTime;
-    
-    exitTime.UniversalTime();
-    TLogger::LogIt( iOwner, _L("<- <%S><%d>"), 
-                      &iFunc, 
-                      I64LOW( exitTime.MicroSecondsFrom( iEntryTime ).Int64()));
-    }
-
-// ---------------------------------------------------------
-// TLogger::CreateFlogger()
-// ---------------------------------------------------------
-//
-void TLogger::CreateLogger( TAny* aOwner )
-    {
-    LogIt( aOwner, KLoggerCreated );
-    }
-    
-// ---------------------------------------------------------
-// TLogger::CloseLogger()
-// ---------------------------------------------------------
-//
-void TLogger::CloseLogger( TAny* aOwner )
-    {
-    LogIt( aOwner, KLoggerClosed );
-    }
-
-// ---------------------------------------------------------
-// TLogger::AttachFLogger()
-// ---------------------------------------------------------
-//
-void TLogger::AttachLogger( const TAny* aOwner,
-                               const TAny* aAttach1, 
-                               const TAny* aAttach2 )
-    {
-    LogIt( aOwner, KAttachLogger, aAttach1, aAttach2 );
-    }
-    
-// ---------------------------------------------------------
-// TLogger::NameIt()
-// ---------------------------------------------------------
-//
-void TLogger::NameIt( const TAny* aOwner, TRefByValue<const TDesC> aFmt, ...)
-    {
-    VA_LIST list;
-    VA_START(list,aFmt);
-    
-    TBuf<KLogBufferSize> nameBuf;
-    TBuf<KLogBufferSize> logBuf;
-    
-    nameBuf.FormatList( aFmt, list );
-    logBuf.Format( KDeclareLoggerName, &nameBuf );
-
-    VA_END(list);
-    
-    TBuf<32> tempBuf;
-    
-#ifdef _LOG_MICRO_TIME_
-    TTime timeNull( 0 );
-    TTime timeNow;
-    
-    timeNow.UniversalTime();
-    
-    tempBuf.Format( _L(" - %Li - "), timeNow.MicroSecondsFrom(timeNull));
-    
-    logBuf.Insert( 0, timeBuf );
-#endif    
-
-    tempBuf.Format( KOwnerLog, aOwner );
-    logBuf.Insert( 0, tempBuf );
-    logBuf.Insert( 0, KLoggerName );
-
-    RDebug::Print( logBuf );
-    }
-    
-// ---------------------------------------------------------
-// TLogger::LogIt()
-// ---------------------------------------------------------
-//
-void TLogger::LogIt( const TAny* aOwner, 
-                       TRefByValue<const TDesC> aFmt, 
-                       VA_LIST aList )
-    {
-    TBuf<KLogBufferSize> logBuf;
-
-    logBuf.FormatList( aFmt, aList );
-
-    TBuf<32> tempBuf;
-
-#ifdef _LOG_MICRO_TIME_
-    TTime timeNull( 0 );
-    TTime timeNow;
-    
-    timeNow.UniversalTime();
-    
-    tempBuf.Format( _L(" - %Li - "), timeNow.MicroSecondsFrom(timeNull));
-    
-    logBuf.Insert( 0, timeBuf );
-#endif    
-
-    tempBuf.Format( KOwnerLog, aOwner );
-    logBuf.Insert( 0, tempBuf );
-    logBuf.Insert( 0, KLoggerName );
-
-    RDebug::Print( logBuf );
-    }
-    
-// ---------------------------------------------------------
-// TLogger::LogIt()
-// ---------------------------------------------------------
-//
-void TLogger::LogIt( const TAny* aOwner, 
-                     TRefByValue<const TDesC8> aFmt, 
-                     VA_LIST aList )
-    {
-    TBuf8<KLogBufferSize> logBuf;
-    
-    logBuf.FormatList( aFmt, aList );
-
-    TBuf8<32> tempBuf8;
-
-#ifdef _LOG_MICRO_TIME_
-    TTime timeNull( 0 );
-    TTime timeNow;
-    
-    timeNow.UniversalTime();
-    
-    
-    tempBuf8.Format( _L8(" - %Li - "), timeNow.MicroSecondsFrom(timeNull));
-    
-    logBuf.Insert( 0, tempBuf );
-#endif    
-
-    tempBuf8.Format( KOwnerLog8, aOwner );
-    logBuf.Insert( 0, tempBuf8 );
-    logBuf.Insert( 0, KLoggerName8 );
-
-    RDebug::RawPrint( logBuf );
-    }
-
-// ---------------------------------------------------------
-// TLogger::LogIt()
-// ---------------------------------------------------------
-//
-void TLogger::LogIt( const TAny* aOwner, TRefByValue<const TDesC> aFmt, ...)
-
-    {
-    VA_LIST list;
-    VA_START(list,aFmt);
-    
-    TLogger::LogIt( aOwner, aFmt, list );
-
-    VA_END(list);
-    }
-
-// ---------------------------------------------------------
-// TLogger::LogIt()
-// ---------------------------------------------------------
-//
-void TLogger::LogIt( const TAny* aOwner, TRefByValue<const TDesC8> aFmt, ...)
-    {
-    VA_LIST list;
-    VA_START(list,aFmt);
-    
-    TLogger::LogIt( aOwner, aFmt, list );
-
-    VA_END(list);
-    }
-
-#endif  // __CONNECTION_METHOD_LOG__
--- a/cmmanager/cmmgr/Framework/Src/cmmanager.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,555 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of RCmManager.
-*
-*/
-
-#include <cmmanager.h>
-#include <cmconnectionmethod.h>
-#include <cmdestination.h>
-#include "cmlogger.h"
-#include "cmmanagerimpl.h"
-#include "cmdestinationimpl.h"
-#include "cmmanager.hrh"
-#include <cmcommonconstants.h>
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-
-//-----------------------------------------------------------------------------
-//  RCmManager::Close()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManager::Close()
-    {
-    CLOG_WRITE( "RCmManagerExt::Close()" );
-    delete iImplementation;
-    iImplementation = NULL;
-    
-    CLOG_CLOSE;
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManager::OpenL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManager::OpenL()
-    {
-    CLOG_CREATE;
-    CLOG_NAME_1( _L("Manager_0x%x"), this );
-    iImplementation = CCmManagerImpl::NewL(EFalse);
-    CLOG_ATTACH( iImplementation, this );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::CreateTablesAndOpenL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManager::CreateTablesAndOpenL()
-    {
-    CLOG_CREATE;
-    CLOG_NAME_1( _L("Manager_0x%x"), this );
-    iImplementation = CCmManagerImpl::NewL();
-    CLOG_ATTACH( iImplementation, this );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManager::OpenLC()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManager::OpenLC()
-    {
-    CLOG_CREATE;
-    CLOG_NAME_1( _L("Manager_0x%x"), this );
-    CleanupClosePushL(*this);
-    iImplementation = NULL;
-    iImplementation = CCmManagerImpl::NewL();
-    CLOG_ATTACH( iImplementation, this );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManager::ConnectionMethodL( TUint aId )
-//-----------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethod RCmManager::ConnectionMethodL( 
-                                                    TUint32 aIapId ) const
-    {
-    RCmConnectionMethod cm;
-    CCmPluginBase* cM =  iImplementation->GetConnectionMethodL( aIapId );
-    cm.iImplementation = cM->Plugin();
-    cm.iImplementation->IncrementRefCounter();
-    delete cM;
-    
-    return cm;
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManager::GetBearerInfoIntL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C TUint32 RCmManager::GetBearerInfoIntL( TUint32 aBearerType,
-                                                TUint32 aAttribute ) const
-    {
-    return iImplementation->GetBearerInfoIntL( aBearerType,
-                                                       aAttribute );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManager::GetBearerInfoBoolL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmManager::GetBearerInfoBoolL( TUint32 aBearerType,
-                                               TUint32 aAttribute ) const
-    {
-    return iImplementation->GetBearerInfoBoolL( aBearerType,
-                                                       aAttribute );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManager::GetBearerInfoStringL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C HBufC* RCmManager::GetBearerInfoStringL( TUint32 aBearerType,
-                                                  TUint32 aAttribute ) const
-    {
-    return iImplementation->GetBearerInfoStringL( aBearerType,
-                                                       aAttribute );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManager::GetBearerInfoStringL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C HBufC8* RCmManager::GetBearerInfoString8L( TUint32 aBearerType,
-                                                    TUint32 aAttribute ) const
-    {
-    return iImplementation->GetBearerInfoString8L( aBearerType,
-                                                       aAttribute );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmManager::GetConnectionMethodInfoIntL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TUint32 RCmManager::GetConnectionMethodInfoIntL( 
-                                                    TUint32 aIapId,
-                                                    TUint32 aAttribute ) const
-    {
-    return iImplementation->GetConnectionMethodInfoIntL( aIapId, aAttribute );
-    }
-    
-// -----------------------------------------------------------------------------
-// RCmManager::GetConnectionMethodInfoBoolL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmManager::GetConnectionMethodInfoBoolL( 
-                                                    TUint32 aIapId,
-                                                    TUint32 aAttribute ) const
-    {
-    return iImplementation->GetConnectionMethodInfoBoolL( aIapId, aAttribute );
-    }
-    
-// -----------------------------------------------------------------------------
-// RCmManager::GetConnectionMethodInfoStringL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC* RCmManager::GetConnectionMethodInfoStringL( 
-                                                    TUint32 aIapId,
-                                                    TUint32 aAttribute ) const
-    {
-    return iImplementation->GetConnectionMethodInfoStringL( aIapId, aAttribute );
-    }
-    
-// -----------------------------------------------------------------------------
-// RCmManager::GetConnectionMethodInfoString8L()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC8* RCmManager::GetConnectionMethodInfoString8L( 
-                                                    TUint32 aIapId,
-                                                    TUint32 aAttribute ) const
-    {
-    return iImplementation->GetConnectionMethodInfoString8L( aIapId, aAttribute );
-    }
-    
-//=============================================================================
-// CREATION / DELETION API
-//=============================================================================
-//
-
-//-----------------------------------------------------------------------------
-//  RCmManager::CreateDestinationL( const TDesC& aName )
-//-----------------------------------------------------------------------------
-//
-EXPORT_C RCmDestination RCmManager::CreateDestinationL( const TDesC& aName )
-    {
-    LOGGER_ENTERFN( "RCmManager::CreateDestinationL" );
-
-    RCmDestination dest;
-    
-    CCmDestinationImpl* destImp = iImplementation->CreateDestinationL( aName );
-    dest.iDestinatonData = destImp->GetData();
-    dest.iDestinatonData->IncrementRefCounter();
-    delete destImp;
-    
-    return dest;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmManager::CreateConnectionMethodL()
-// -----------------------------------------------------------------------------
-//  
-EXPORT_C RCmConnectionMethod RCmManager::CreateConnectionMethodL(
-    TUint32 aImplementationUid )
-    {
-    LOGGER_ENTERFN( "RCmManager::CreateConnectionMethodL" );
-
-    RCmConnectionMethod cm;
-        
-    CCmPluginBase* cM =  
-        iImplementation->CreateConnectionMethodL( aImplementationUid );
-    cm.iImplementation = cM->Plugin();
-    cm.iImplementation->IncrementRefCounter();
-    delete cM;
-
-    return cm;
-    }
-
-//-----------------------------------------------------------------------------
-// RCmManager::CopyL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C TInt RCmManager::CopyConnectionMethodL(
-    RCmDestination& aTargetDestination,
-    RCmConnectionMethod& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "RCmManager::CopyConnectionMethodL" );
-
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(aTargetDestination.iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    aImplementation->IncrementRefCounter();
-    CCmPluginBase* connMethod = new (ELeave) 
-                            CCmPluginBase(aConnectionMethod.iImplementation);
-    connMethod->IncrementRefCounter();    
-    CleanupStack::PushL( connMethod );        
-    TInt retVal = iImplementation->CopyConnectionMethodL( 
-                                           *aImplementation, 
-                                           *connMethod );
-    CleanupStack::PopAndDestroy(connMethod);
-    CleanupStack::PopAndDestroy(aImplementation);
-    return retVal;
-    }
-
-//-----------------------------------------------------------------------------
-// RCmManager::MoveConnMethodL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C TInt RCmManager::MoveConnectionMethodL( 
-    RCmDestination& aSourceDestination,
-    RCmDestination& aTargetDestination,
-    RCmConnectionMethod& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "RCmManager::MoveConnectionMethodL" );
-
-    CCmDestinationImpl* aSourceImpl = 
-            CCmDestinationImpl::NewLC(aSourceDestination.iDestinatonData);
-    aSourceImpl->IncrementRefCounter();
-    CCmDestinationImpl* aTargetImpl = 
-            CCmDestinationImpl::NewLC(aTargetDestination.iDestinatonData);
-    aTargetImpl->IncrementRefCounter();
-    CCmPluginBase* connMethod = new (ELeave) 
-                            CCmPluginBase(aConnectionMethod.iImplementation);
-    connMethod->IncrementRefCounter();    
-    CleanupStack::PushL( connMethod );        
-    TInt retVal = iImplementation->MoveConnectionMethodL( 
-                    *aSourceImpl, 
-                    *aTargetImpl, 
-                    *connMethod );
-    CleanupStack::PopAndDestroy(connMethod);
-    CleanupStack::PopAndDestroy(aTargetImpl);
-    CleanupStack::PopAndDestroy(aSourceImpl);
-    return retVal;
-    }
-
-//-----------------------------------------------------------------------------
-// RCmManager::RemoveConnectionMethodL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManager::RemoveConnectionMethodL( 
-    RCmDestination& aDestination,
-    RCmConnectionMethod& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "RCmManager::RemoveConnectionMethodL" );
-
-    CCmDestinationImpl* aDestImpl = 
-            CCmDestinationImpl::NewLC(aDestination.iDestinatonData);
-    aDestImpl->IncrementRefCounter();
-    CCmPluginBase* connMethod = new (ELeave) 
-                            CCmPluginBase(aConnectionMethod.iImplementation);
-    connMethod->IncrementRefCounter();    
-    CleanupStack::PushL( connMethod );        
-
-    iImplementation->RemoveConnectionMethodL( *aDestImpl, *connMethod );
-
-    CleanupStack::PopAndDestroy(connMethod);
-    CleanupStack::PopAndDestroy(aDestImpl);
-    }
-
-//-----------------------------------------------------------------------------
-// RCmManager::RemoveAllReferencesL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManager::RemoveAllReferencesL( 
-    RCmConnectionMethod& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "RCmManager::RemoveAllReferencesL" );
-
-    iImplementation->RemoveAllReferencesL( *aConnectionMethod.iImplementation );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManager::ConnectionMethodL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManager::ConnectionMethodL( RArray<TUint32>& aCMArray,
-                                             TBool aCheckBearerType,
-                                             TBool aLegacyOnly,
-                                             TBool aEasyWlan ) const
-    {
-    LOGGER_ENTERFN( "RCmManager::ConnectionMethodL" );
-
-    return iImplementation->ConnectionMethodL( aCMArray, 
-                                               aCheckBearerType, 
-                                               aLegacyOnly,
-                                               aEasyWlan );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManager::AllDestinationsL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManager::AllDestinationsL( RArray<TUint32>& aDestArray ) const
-    {
-    LOGGER_ENTERFN( "RCmManager::AllDestinationsL" );
-
-    return iImplementation->AllDestinationsL( aDestArray );
-    }
-
-
-//-----------------------------------------------------------------------------
-//  RCmManager::DestinationL()
-//-----------------------------------------------------------------------------
-//  
-EXPORT_C RCmDestination RCmManager::DestinationL( TUint32 aId ) const
-    {
-    LOGGER_ENTERFN( "RCmManager::DestinationL" );
-
-    RCmDestination dest;
-    
-    CCmDestinationImpl* aDestImpl = iImplementation->DestinationL( aId );
-    dest.iDestinatonData = aDestImpl->GetData( );
-    dest.iDestinatonData->IncrementRefCounter();
-    delete aDestImpl;
-    
-    return dest;
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManager::BearerPriorityArrayL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManager::BearerPriorityArrayL( 
-                                        RArray<TBearerPriority>& aArray ) const
-    {
-    LOGGER_ENTERFN( "RCmManager::BearerPriorityArray" );
-
-    iImplementation->BearerPriorityArrayL( aArray ); 
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManager::UpdateBearerPriorityArrayL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManager::UpdateBearerPriorityArrayL( 
-    const RArray<TBearerPriority>& aArray )
-    {
-    LOGGER_ENTERFN( "RCmManager::UpdateBearerPriorityArray" );    
-
-    iImplementation->UpdateBearerPriorityArrayL( aArray );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManager::CleanupGlobalPriorityArray()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManager::CleanupGlobalPriorityArray( 
-    RArray<TBearerPriority>& aArray ) const
-    {
-    LOGGER_ENTERFN( "RCmManager::CleanupGlobalPriorityArray" );
-
-    iImplementation->CleanupGlobalPriorityArray( aArray ); 
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManager::SupportedBearers()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManager::SupportedBearersL( RArray<TUint32>& aArray ) const
-    {
-    LOGGER_ENTERFN( "RCmManager::SupportedBearersL" );
-
-    return iImplementation->SupportedBearersL( aArray );        
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::UncategorizedIconL()
-//-----------------------------------------------------------------------------
-//    
-EXPORT_C CGulIcon* RCmManager::UncategorizedIconL() const
-    {
-    LOGGER_ENTERFN( "RCmManager::UncategorizedIconL" );
-
-    return iImplementation->UncategorizedIconL();        
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManager::EasyWlanIdL()
-//-----------------------------------------------------------------------------
-//    
-EXPORT_C TUint32 RCmManager::EasyWlanIdL() const
-    {
-    LOGGER_ENTERFN( "RCmManager::EasyWlanIdL" );
-
-    return iImplementation->EasyWlanIdL();        
-    }
-    
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::ReadDefConnL()
-//-----------------------------------------------------------------------------
-//    
-EXPORT_C void RCmManager::ReadDefConnL( TCmDefConnValue& aDCSetting )
-    {
-    LOGGER_ENTERFN( "RCmManager::ReadDefConnL" );
-
-    return iImplementation->ReadDefConnL( aDCSetting );        
-    }
-    
-//-----------------------------------------------------------------------------
-//  RCmManager::WriteDefConnL()
-//-----------------------------------------------------------------------------
-//    
-EXPORT_C void RCmManager::WriteDefConnL( const  TCmDefConnValue& aDCSetting )
-    {
-    LOGGER_ENTERFN( "RCmManager::WriteDefConnL" );
-
-    return iImplementation->WriteDefConnL( aDCSetting );        
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManager::ReadGenConnSettingsL()
-//-----------------------------------------------------------------------------
-//  
-EXPORT_C void RCmManager::ReadGenConnSettingsL( TCmGenConnSettings& aGenConnSettings )
-{
-    LOGGER_ENTERFN( "RCmManager::ReadGenConnSettingsL" );
-
-    return iImplementation->ReadGenConnSettingsL( aGenConnSettings ); 
-}
-
-//-----------------------------------------------------------------------------
-//  RCmManager::WriteGenConnSettingsL()
-//-----------------------------------------------------------------------------
-//  
-EXPORT_C void RCmManager::WriteGenConnSettingsL( const TCmGenConnSettings& aGenConnSettings )
-{
-    LOGGER_ENTERFN( "RCmManager::WriteGenConnSettingsL" );
-
-    return iImplementation->WriteGenConnSettingsL( aGenConnSettings ); 
-}
-
-//-----------------------------------------------------------------------------
-//  RCmManager::CreateDestinationL( const TDesC& aName,
-//                                     TUint32 aDestId )
-//-----------------------------------------------------------------------------
-//
-EXPORT_C RCmDestination RCmManager::CreateDestinationL(
-    const TDesC& aName,
-    TUint32 aDestId )
-    {
-    LOGGER_ENTERFN( "RCmManager::CreateDestinationL" );
-
-    if ( aDestId == 0 )
-        {
-        return CreateDestinationL( aName );
-        }
-
-    // Check if there already exists a destination with the same Id
-    RArray<TUint32> destIdArray = RArray<TUint32>( KCmArrayBigGranularity );
-    iImplementation->AllDestinationsL( destIdArray );
-    for ( TInt i = 0; i < destIdArray.Count(); i++ )
-        {
-        if ( aDestId > 0 && aDestId < 255 )
-            {
-            aDestId = aDestId + KCmDefaultDestinationAPTagId;
-            }
-        else if ( aDestId < KCmDefaultDestinationAPTagId+1 
-                  && ( aDestId > ( KCmDefaultDestinationAPTagId+255 ) ) )
-            {
-            User::Leave( KErrArgument );
-            }
-        if ( aDestId == destIdArray[i] )
-            {
-            destIdArray.Close();
-            User::Leave( KErrAlreadyExists );
-            }
-        }
-    destIdArray.Close();
-
-    RCmDestination dest;
-
-    CCmDestinationImpl* destImp =
-                        iImplementation->CreateDestinationL( aName,
-                                                             aDestId );
-    dest.iDestinatonData = destImp->GetData();
-    dest.iDestinatonData->IncrementRefCounter();
-    delete destImp;
-
-    return dest;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmManager::CreateConnectionMethodL()
-// -----------------------------------------------------------------------------
-//  
-EXPORT_C RCmConnectionMethod RCmManager::CreateConnectionMethodL(
-    TUint32 aImplementationUid,
-    TUint32 aConnMethodId )
-    {
-    LOGGER_ENTERFN( "RCmManager::CreateConnectionMethodL" );
-
-    if ( aConnMethodId == 0 )
-        {
-        return CreateConnectionMethodL( aImplementationUid );
-        }
-
-    RCmConnectionMethod cm;
-
-    CCmPluginBase* cM =
-                   iImplementation->CreateConnectionMethodL( aImplementationUid,
-                                                             aConnMethodId );
-    cm.iImplementation = cM->Plugin();
-    cm.iImplementation->IncrementRefCounter();
-    delete cM;
-
-    return cm;
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmmanagerext.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,503 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of RCmManagerExt
-*
-*/
-
-#include <cmmanagerext.h>
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-#include <cmdestinationext.h>
-#include "cmlogger.h"
-#include "cmmanager.hrh"
-#include <cmcommonconstants.h>
-#include "cmmanagerimpl.h"
-#include "cmdestinationimpl.h"
-#include "cmmanager.hrh"
-#include <data_caging_path_literals.hrh>
-
-#include <StringLoader.h>
-#include <e32cmn.h>
-#include <cmmanager.rsg>    // resource
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::~RCmManagerExt()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManagerExt::Close()
-    {
-    CLOG_WRITE( "RCmManagerExt::Close()" );
-    delete iImplementation;
-    iImplementation = NULL;
-    
-    CLOG_CLOSE;
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::ConstructL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManagerExt::OpenL()
-    {
-    CLOG_CREATE;
-    CLOG_NAME_1( _L("ManagerExt_0x%x"), this );
-    iImplementation = CCmManagerImpl::NewL(EFalse);
-    CLOG_ATTACH( iImplementation, this );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::ConstructL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManagerExt::CreateTablesAndOpenL()
-    {
-    CLOG_CREATE;
-    CLOG_NAME_1( _L("ManagerExt_0x%x"), this );
-    iImplementation = CCmManagerImpl::NewL();
-    CLOG_ATTACH( iImplementation, this );
-    }
-    
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::OpenLC()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManagerExt::OpenLC()
-    {
-    CLOG_CREATE;
-    CLOG_NAME_1( _L("Manager_0x%x"), this );
-    CleanupClosePushL(*this);
-    iImplementation = NULL;
-    iImplementation = CCmManagerImpl::NewL();
-    CLOG_ATTACH( iImplementation, this );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::GetBearerInfoIntL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C TUint32 RCmManagerExt::GetBearerInfoIntL( TUint32 aBearerType,
-                                                   TUint32 aAttribute ) const
-    {
-    return iImplementation->GetBearerInfoIntL( aBearerType,
-                                                       aAttribute );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::GetBearerInfoBoolL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmManagerExt::GetBearerInfoBoolL( TUint32 aBearerType,
-                                                  TUint32 aAttribute ) const
-    {
-    return iImplementation->GetBearerInfoBoolL( aBearerType,
-                                                       aAttribute );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::GetBearerInfoStringL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C HBufC* RCmManagerExt::GetBearerInfoStringL( TUint32 aBearerType,
-                                                     TUint32 aAttribute ) const
-    {
-    return iImplementation->GetBearerInfoStringL( aBearerType,
-                                                       aAttribute );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::GetBearerInfoString8L()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C HBufC8* 
-                RCmManagerExt::GetBearerInfoString8L( TUint32 aBearerType,
-                                                      TUint32 aAttribute ) const
-    {
-    return iImplementation->GetBearerInfoString8L( aBearerType,
-                                                   aAttribute );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmManagerExt::GetConnectionMethodInfoIntL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TUint32 RCmManagerExt::GetConnectionMethodInfoIntL( TUint32 aIapId,
-                                     TUint32 aAttribute ) const
-    {
-    return iImplementation->GetConnectionMethodInfoIntL( aIapId, aAttribute );
-    }
-    
-// -----------------------------------------------------------------------------
-// RCmManagerExt::GetConnectionMethodInfoBoolL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmManagerExt::GetConnectionMethodInfoBoolL( TUint32 aIapId,
-                                    TUint32 aAttribute ) const
-    {
-    return iImplementation->GetConnectionMethodInfoBoolL( aIapId, aAttribute );
-    }
-    
-// -----------------------------------------------------------------------------
-// RCmManagerExt::GetConnectionMethodInfoStringL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC* RCmManagerExt::GetConnectionMethodInfoStringL( TUint32 aIapId,
-                                       TUint32 aAttribute ) const
-    {
-    return iImplementation->GetConnectionMethodInfoStringL( aIapId, 
-                                                            aAttribute );
-    }
-    
-// -----------------------------------------------------------------------------
-// RCmManagerExt::GetConnectionMethodInfoStringL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC8* 
-    RCmManagerExt::GetConnectionMethodInfoString8L( TUint32 aIapId,
-                                                    TUint32 aAttribute ) const
-    {
-    return iImplementation->GetConnectionMethodInfoString8L( aIapId, aAttribute );
-    }
-    
-//=============================================================================
-// CREATION / DELETION API
-//=============================================================================
-//
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::CreateDestinationL( const TDesC& aName )
-//-----------------------------------------------------------------------------
-//
-EXPORT_C 
-    RCmDestinationExt RCmManagerExt::CreateDestinationL( const TDesC& aName )
-    {
-    RCmDestinationExt dest;
-    
-    CCmDestinationImpl* destImp = iImplementation->CreateDestinationL( aName );
-    dest.iDestinatonData = destImp->GetData();
-    dest.iDestinatonData->IncrementRefCounter();
-    delete destImp;
-    
-    return dest;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmManagerExt::CreateConnectionMethodL()
-// -----------------------------------------------------------------------------
-//  
-EXPORT_C RCmConnectionMethodExt 
-        RCmManagerExt::CreateConnectionMethodL( TUint32 aImplementationUid )
-    {
-    RCmConnectionMethodExt cm;
-        
-    CCmPluginBase* cM =  
-        iImplementation->CreateConnectionMethodL( aImplementationUid );
-    cm.iImplementation = cM->Plugin();
-    cm.iImplementation->IncrementRefCounter();
-    delete cM;
-
-    return cm;
-    }
-
-//-----------------------------------------------------------------------------
-// RCmManagerExt::CopyL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C TInt RCmManagerExt::CopyConnectionMethodL( 
-                                      RCmDestinationExt& aTargetDestination,
-                                      RCmConnectionMethodExt& aConnectionMethod )
-    {
-    CCmDestinationImpl* aImplementation = 
-            CCmDestinationImpl::NewLC(aTargetDestination.iDestinatonData);
-    // Deleting aImplementation will decrement the ref counter
-    aImplementation->IncrementRefCounter();
-    CCmPluginBase* connMethod = new (ELeave) 
-                            CCmPluginBase(aConnectionMethod.iImplementation);
-    connMethod->IncrementRefCounter();    
-    CleanupStack::PushL( connMethod );        
-    TInt retVal = iImplementation->CopyConnectionMethodL( 
-                                           *aImplementation, 
-                                           *connMethod );
-    CleanupStack::PopAndDestroy(connMethod);
-    CleanupStack::PopAndDestroy(aImplementation);
-    return retVal;
-    }
-
-//-----------------------------------------------------------------------------
-// RCmManagerExt::MoveConnMethodL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C TInt RCmManagerExt::MoveConnectionMethodL( 
-                                      RCmDestinationExt& aSourceDestination,
-                                      RCmDestinationExt& aTargetDestination,
-                                      RCmConnectionMethodExt& aConnectionMethod )
-    {
-    CCmDestinationImpl* aSourceImpl = 
-            CCmDestinationImpl::NewLC(aSourceDestination.iDestinatonData);
-    aSourceImpl->IncrementRefCounter();
-    CCmDestinationImpl* aTargetImpl = 
-            CCmDestinationImpl::NewLC(aTargetDestination.iDestinatonData);
-    aTargetImpl->IncrementRefCounter();
-    CCmPluginBase* connMethod = new (ELeave) 
-                            CCmPluginBase(aConnectionMethod.iImplementation);
-    connMethod->IncrementRefCounter();    
-    CleanupStack::PushL( connMethod );        
-    TInt retVal = iImplementation->MoveConnectionMethodL( 
-                    *aSourceImpl, 
-                    *aTargetImpl, 
-                    *connMethod );
-    CleanupStack::PopAndDestroy(connMethod);
-    CleanupStack::PopAndDestroy(aTargetImpl);
-    CleanupStack::PopAndDestroy(aSourceImpl);
-    return retVal;
-    }
-
-//-----------------------------------------------------------------------------
-// RCmManagerExt::RemoveConnectionMethodL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManagerExt::RemoveConnectionMethodL( 
-                                      RCmDestinationExt& aDestination,
-                                      RCmConnectionMethodExt& aConnectionMethod )
-    {
-    CCmDestinationImpl* aDestImpl = 
-            CCmDestinationImpl::NewLC(aDestination.iDestinatonData);
-    aDestImpl->IncrementRefCounter();
-    CCmPluginBase* connMethod = new (ELeave) 
-                            CCmPluginBase(aConnectionMethod.iImplementation);
-    connMethod->IncrementRefCounter();    
-    CleanupStack::PushL( connMethod );        
-    iImplementation->RemoveConnectionMethodL( 
-                    *aDestImpl, 
-                    *connMethod );
-    CleanupStack::PopAndDestroy(connMethod);
-    CleanupStack::PopAndDestroy(aDestImpl);
-    }
-
-//-----------------------------------------------------------------------------
-// RCmManagerExt::RemoveAllReferencesL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManagerExt::RemoveAllReferencesL( 
-                                    RCmConnectionMethodExt& aConnectionMethod )
-    {
-    iImplementation->RemoveAllReferencesL( *aConnectionMethod.iImplementation );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::ConnectionMethodExtL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethodExt 
-                              RCmManagerExt::ConnectionMethodL( TUint32 aIapId )
-    {
-    RCmConnectionMethodExt cm;
-    CCmPluginBase* cM =  iImplementation->GetConnectionMethodL( aIapId );
-    cm.iImplementation = cM->Plugin();
-    cm.iImplementation->IncrementRefCounter();
-    delete cM;
-        
-    return cm;
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::ConnectionMethodL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManagerExt::ConnectionMethodL( RArray<TUint32>& aCMArray,
-                                                TBool aCheckBearerType,
-                                                TBool aLegacyOnly,
-                                                TBool aEasyWlan )
-    {
-    iImplementation->ConnectionMethodL( aCMArray, 
-                                               aCheckBearerType,
-                                               aLegacyOnly,
-                                               aEasyWlan );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::DestinationL()
-//-----------------------------------------------------------------------------
-//  
-EXPORT_C RCmDestinationExt RCmManagerExt::DestinationL( TUint32 aId )
-    {
-    RCmDestinationExt dest;
-    
-    CCmDestinationImpl* aDestImpl = iImplementation->DestinationL( aId );
-    dest.iDestinatonData = aDestImpl->GetData( );
-    dest.iDestinatonData->IncrementRefCounter();
-    delete aDestImpl;
-    
-    return dest;
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::AllDestinationsL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManagerExt::AllDestinationsL( RArray<TUint32>& aDestArray )
-    {   
-    return iImplementation->AllDestinationsL( aDestArray );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::BearerPriorityArrayL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManagerExt::BearerPriorityArrayL( 
-                                        RArray<TBearerPriority>& aArray ) const
-    {
-    LOGGER_ENTERFN( "RCmManagerExt:BearerPriorityArray" );
-    iImplementation->BearerPriorityArrayL( aArray ); 
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::UpdateBearerPriorityArrayL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManagerExt::UpdateBearerPriorityArrayL( 
-                                        const RArray<TBearerPriority>& aArray )
-    {
-    LOGGER_ENTERFN( "RCmManagerExt::UpdateBearerPriorityArray" );    
-    iImplementation->UpdateBearerPriorityArrayL( aArray );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::CleanupGlobalPriorityArray()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManagerExt::CleanupGlobalPriorityArray( 
-                                        RArray<TBearerPriority>& aArray ) const
-    {
-    LOGGER_ENTERFN( "RCmManagerExt:CleanupGlobalPriorityArray" );
-    iImplementation->CleanupGlobalPriorityArray( aArray ); 
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::SupportedBearers()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void RCmManagerExt::SupportedBearersL( RArray<TUint32>& aArray ) const
-    {
-    return iImplementation->SupportedBearersL( aArray );        
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::UncategorizedIconL()
-//-----------------------------------------------------------------------------
-//    
-EXPORT_C CGulIcon* RCmManagerExt::UncategorizedIconL() const
-    {
-    return iImplementation->UncategorizedIconL();        
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::EasyWlanIdL()
-//-----------------------------------------------------------------------------
-//    
-EXPORT_C TUint32 RCmManagerExt::EasyWlanIdL()
-    {
-    return iImplementation->EasyWlanIdL();        
-    }
-    
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::ReadDefConnL()
-//-----------------------------------------------------------------------------
-//    
-EXPORT_C void RCmManagerExt::ReadDefConnL( TCmDefConnValue& aDCSetting )
-    {
-    return iImplementation->ReadDefConnL( aDCSetting );        
-    }
-    
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::WriteDefConnL()
-//-----------------------------------------------------------------------------
-//    
-EXPORT_C void RCmManagerExt::WriteDefConnL( const  TCmDefConnValue& aDCSetting )
-    {
-    return iImplementation->WriteDefConnL( aDCSetting );        
-    }
-
- 
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::CreateDestinationL( const TDesC& aName,
-//                                     TUint32 aDestId )
-//-----------------------------------------------------------------------------
-//
-EXPORT_C RCmDestinationExt RCmManagerExt::CreateDestinationL(
-    const TDesC& aName,
-    TUint32 aDestId )
-    {
-    if ( aDestId == 0 )
-        {
-        return CreateDestinationL( aName );
-        }
-
-    // Check if there already exists a destination with the same Id
-    RArray<TUint32> destIdArray = RArray<TUint32>( KCmArrayBigGranularity );
-    iImplementation->AllDestinationsL( destIdArray );
-    for ( TInt i = 0; i < destIdArray.Count(); i++ )
-        {
-        if ( aDestId > 0 && aDestId < 255 )
-            {
-            aDestId = aDestId + KCmDefaultDestinationAPTagId;
-            }
-        else if ( aDestId < KCmDefaultDestinationAPTagId+1 
-                  && ( aDestId > ( KCmDefaultDestinationAPTagId+255 ) ) )
-            {
-            User::Leave( KErrArgument );
-            }
-        if ( aDestId == destIdArray[i] )
-            {
-            destIdArray.Close();
-            User::Leave( KErrAlreadyExists );
-            }
-        }
-    destIdArray.Close();
-
-    RCmDestinationExt dest;
-
-    CCmDestinationImpl* destImp =
-                        iImplementation->CreateDestinationL( aName,
-                                                             aDestId );
-    dest.iDestinatonData = destImp->GetData();
-    dest.iDestinatonData->IncrementRefCounter();
-    delete destImp;
-
-    return dest;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmManagerExt::CreateConnectionMethodL()
-// -----------------------------------------------------------------------------
-//  
-EXPORT_C RCmConnectionMethodExt RCmManagerExt::CreateConnectionMethodL(
-    TUint32 aImplementationUid,
-    TUint32 aConnMethodId )
-    {
-    if ( aConnMethodId == 0 )
-        {
-        return CreateConnectionMethodL( aImplementationUid );
-        }
-
-    RCmConnectionMethodExt cm;
-
-    CCmPluginBase* cM =
-                   iImplementation->CreateConnectionMethodL( aImplementationUid,
-                                                             aConnMethodId );
-    cm.iImplementation = cM->Plugin();
-    cm.iImplementation->IncrementRefCounter();
-    delete cM;
-
-    return cm;
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmmanagerimpl.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3051 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CCmManagerImpl.
-*
-*/
-
-#include "cmmanagerimpl.h"
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-#include <cmdestination.h>
-#include <cmdestinationext.h>
-#include "cmdestinationimpl.h"
-#include "cmtransactionhandler.h"
-#include "cmlogger.h"
-#include "cmmanager.hrh"
-#include <cmcommonconstants.h>
-#include <cmmanagerext.h>
-#include <cmpluginembdestinationdef.h>
-#include "cmobjectpool.h"
-#include "cmcommsdatnotifier.h"
-
-#include <sysutil.h>
-#include <featmgr.h>
-#include <wlancontainer.h>  // CCDWlanServiceRecord
-#include <StringLoader.h>
-#include <commsdattypesv1_1.h>
-#include <e32cmn.h>
-#include <bautils.h>        // BaflUtils
-#include <cmmanager.rsg>    // resource
-#include <data_caging_path_literals.hrh>
-#include <ecom/ecom.h>        // For REComSession
-#include <cmmanagerext.h> 
-
-#include <cmmanager.mbg>   // icons
-#include <AknsUtils.h>
-
-#include <commsdattypesv1_1.h>
-#include <rconnmon.h>
-
-using namespace CMManager;
-using namespace CommsDat;
-
-// CONSTANTS
-
-const TInt KResFileGranularity = 5;
-const TInt KPluginGranularity = 3;
-// if a CmId is grater than KMaxIapId, than it has no iap record
-// Otherwise cmId is the same as the IapId
-const TUint32 KMaxIapID = 255;
-// Safety margin when checking disk space
-const TUint32 KBytesToWrite = 8000; 
-
-const TUint32 KEndOfArray = KMaxTUint;
-/**
-* This array lists all the bearerspecific attributes.
-* The bearerspecific attributes can be queried via both 
-* the manager interface's and connection method interface's ::Get functions.
-*/
-static const TUint32 KBearerSpecificAttributes[]=
-    {
-    /**
-    */
-    ECmCoverage,                        
-    ECmDefaultPriority,                        
-    ECmDestination,     
-    ECmBearerHasUi,   
-    ECmIPv6Supported,           
-    ECmDefaultUiPriority,
-    ECmBearerIcon,
-    ECmBearerAvailableIcon,
-    ECmBearerAvailableName,
-    ECmBearerSupportedName,
-    ECmBearerAvailableText,                        
-    ECmBearerNamePopupNote,
-    ECmCommsDBBearerType,   
-    ECmBearerSettingName,
-    ECmVirtual,
-    ECmExtensionLevel,
-    ECmAddToAvailableList,
-    KEndOfArray
-    };
-
-// -----------------------------------------------------------------------------
-// Test functions
-// -----------------------------------------------------------------------------
-//
-/*#ifdef _DEBUG
-void DumIapTableL( CMDBSession& aSession )
-    {
-    CMDBRecordSet<CCDIAPRecord>*  ptrRecordSet = 
-                    new (ELeave) CMDBRecordSet<CCDIAPRecord>( KCDTIdIAPRecord );
-    CleanupStack::PushL( ptrRecordSet );
-    
-    TRAP_IGNORE( ptrRecordSet->LoadL( aSession ) );
-    
-    TInt iapRecords = ptrRecordSet->iRecords.Count();
-    CLOG_WRITE_1_PTR( NULL, "Dumping IAP Table\nNo. of IAPs: [%d]", iapRecords );
-    for ( TInt i = 0; i < iapRecords; i++ )
-        {
-        CCDIAPRecord* iapRecord = (*ptrRecordSet)[i];
-
-        CLOG_WRITE_4_PTR( NULL, "Rec id:[%d] - Name: [%S] - Service Type: [%S] - Bearer Type: [%S]",
-                                iapRecord->RecordId(),
-                                &FIELD_TO_TDESC( iapRecord->iRecordName ),
-                                &FIELD_TO_TDESC( iapRecord->iServiceType ),
-                                &FIELD_TO_TDESC( iapRecord->iBearerType )
-                                );
-        }
-
-    CleanupStack::PopAndDestroy( ptrRecordSet );
-    }
-#endif */ // _DEBUG
-
-//=============================================================================
-// CONSTRUCTION / DESTRUCTION API
-//=============================================================================
-//
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::NewL()
-//-----------------------------------------------------------------------------
-//
-CCmManagerImpl* CCmManagerImpl::NewL( TBool aCreateTables )
-    {
-    CCmManagerImpl* self = new (ELeave) CCmManagerImpl();
-    CleanupStack::PushL( self );
-    self->iCreateTables = aCreateTables;
-    self->ConstructL();
-    CleanupStack::Pop( self );   // self
-    
-    return self;
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::CCmManagerImpl()
-//-----------------------------------------------------------------------------
-//
-CCmManagerImpl::CCmManagerImpl()
-:iDefConnSupported(EFalse),iCreateTables(ETrue)
-    {
-    CLOG_CREATE;
-
-    Dll::SetTls( this );
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::CCmManagerImpl()
-//-----------------------------------------------------------------------------
-//
-CCmManagerImpl::~CCmManagerImpl()
-    {
-    CLOG_WRITE( "CCmManagerImpl::~CCmManagerImpl" );
-    
-    if ( iBearerPriorityArray )
-        {
-        CleanupGlobalPriorityArray( *iBearerPriorityArray );
-        delete iBearerPriorityArray;
-        }
-
-    if ( iPlugins )
-        {
-        iPlugins->ResetAndDestroy();
-        delete iPlugins;
-        }
-    
-    
-    if ( iResourceFiles )
-        {
-        TInt resCount = iResourceFiles->Count();
-        for ( TInt i = 0; i < resCount; ++i )
-            {
-            // close the resource file
-            (*iResourceFiles)[0]->iFile.Close();
-            // delete the structure
-            delete (*iResourceFiles)[0];
-            // delete array item
-            iResourceFiles->Delete( 0 );
-            }
-            
-        iResourceFiles->Reset();        
-        delete iResourceFiles;
-        }
-    
-    iFs.Close();
-    
-    delete iPluginImpl;
-
-    delete &Session();
-    delete iTrans;
-
-    if( iIsFeatureManagerInitialised )
-        {
-        FeatureManager::UnInitializeLib();
-        }
-
-    REComSession::FinalClose();
-    
-    delete iObjectPool;
-    
-    delete iCommsDatIapNotifier;
-    delete iCommsDatSnapNotifier;
-
-    CLOG_CLOSE;
-    }
-
-      
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::CheckTablesL()
-// -----------------------------------------------------------------------------
-//     
-void CCmManagerImpl::CheckTablesL()
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::CheckDestinationNetworkTableL" );
-    
-    TInt err( 0 );
-
-    CLOG_WRITE( "Destination network" );
-    if (iCreateTables)
-        {
-        TRAP( err, iDestinationTableId = 
-                        CCDDataMobilitySelectionPolicyRecord::TableIdL( Session() ));
-        CLOG_WRITE_1( "err: [%d]", err );
-        if( err == KErrNotFound )
-            {
-            iDestinationTableId = 
-                       CCDDataMobilitySelectionPolicyRecord::CreateTableL( Session() );
-            }
-        else
-            {
-            User::LeaveIfError( err );
-            }        
-        }
-    else
-        {
-        iDestinationTableId = 
-                        CCDDataMobilitySelectionPolicyRecord::TableIdL( Session() );        
-        }
-        
-    CLOG_WRITE( "Global Bearer Type Priorization Table" );
-    TRAP( err, iBearerTypePriorizationTableId = 
-                CCDGlobalBearerTypePriorizationRecord::TableIdL( Session() ) );
-    CLOG_WRITE_1( "err: [%d]", err );
-    if( err == KErrNotFound )
-        {
-        iBearerTypePriorizationTableId = 
-               CCDGlobalBearerTypePriorizationRecord::CreateTableL( Session() );
-        }
-    else
-        {
-        User::LeaveIfError( err );
-        }
-    
-    CLOG_WRITE( "Destination network - Icon table" );        
-    TRAP( err, iIconTableId = CCDSNAPMetadataRecord::TableIdL( Session() ) );
-    if( err == KErrNotFound )
-        {
-        iIconTableId = CCDSNAPMetadataRecord::CreateTableL( Session() );
-        }
-    else
-        {
-        User::LeaveIfError( err );
-        }
-        
-    CLOG_WRITE( "Seamlessness table" );
-    TRAP( err, iSeamlessnessTableId = CCDIAPMetadataRecord::TableIdL( Session() ) );
-    CLOG_WRITE_1( "err: [%d]", err );
-    if( err == KErrNotFound )
-        {
-        iSeamlessnessTableId = CCDIAPMetadataRecord::CreateTableL( Session() );
-        }
-    else
-        {
-        User::LeaveIfError( err );
-        }
-    if ( IsDefConnSupported() )
-        {
-        CLOG_WRITE( "Default connection table" );
-        TRAP( err, iDefConnTableId = CCDDefConnRecord::TableIdL( Session() ) );
-        CLOG_WRITE_1( "err: [%d]", err );
-        if( err == KErrNotFound )
-            {
-            iDefConnTableId = CCDDefConnRecord::CreateTableL( Session() );
-            }
-        else
-            {
-            User::LeaveIfError( err );
-            }   
-        }
-    }
-     
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::CreateBearerPriorityArrayL()
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::CreateBearerPriorityArrayL()
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl:CreateBearerPriorityArray" );
-
-    iBearerPriorityArray = 
-                new ( ELeave ) RArray<TBearerPriority>( KCmArrayBigGranularity );
-
-    CMDBRecordSet<CCmBearerPriRec>* bpRS = 
-                new (ELeave) CMDBRecordSet<CCmBearerPriRec>( 
-                                               iBearerTypePriorizationTableId );
-    CleanupStack::PushL( bpRS );
-        
-    OpenTransactionLC();        
-    TRAP_IGNORE( bpRS->LoadL( Session() ) );
-    RollbackTransaction();
-    
-    TInt bpCount = bpRS->iRecords.Count();
-    TInt i( 0 );
-    
-    while ( i < bpCount ) // loop the Bearer Priority table
-        {
-        // Bearer Priority record ID
-        HBufC* bpServiceType = QUERY_HBUFC_FIELD( (*bpRS)[i], 
-                                                  KCDTIdGlobalServiceType );
-        
-        TInt bpPriority = ( QUERY_INT_FIELD( (*bpRS)[i], 
-                                             KCDTIdGlobalServicePriority ) );
-        TInt uiPriority = ( QUERY_INT_FIELD( (*bpRS)[i], 
-                                             KCDTIdGlobalServiceUIPriority ) );                                    
-        CLOG_WRITE( "Bearer Priority Table Values" );
-        CLOG_WRITE_1( "Service Type: [%S]", bpServiceType );
-        CLOG_WRITE_1( "Bearer Priority: [%d]", bpPriority );
-        CLOG_WRITE_1( "UI Priority: [%d]", uiPriority );                          
-        TBearerPriority bp;
-        bp.iServiceType = bpServiceType->AllocL();
-        bp.iPriority = bpPriority;
-        bp.iUIPriority = uiPriority;
-        iBearerPriorityArray->AppendL( bp );
-        i++;
-        }
-    
-    CleanupStack::PopAndDestroy( bpRS );
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::BearerPriorityArrayL()
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::BearerPriorityArrayL( RArray<TBearerPriority>& aArray ) const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl:BearerPriorityArray" );
-    TRAPD( err, CopyBearerPriorityArrayL( aArray ) );
-    if( err )
-        // in case of any problem we clean up this array
-        {
-        User::Leave( err );
-        }
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::CopyBearerPriorityArrayL()
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::CopyBearerPriorityArrayL( 
-                                        RArray<TBearerPriority>& aArray ) const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl:BearerPriorityArray" );
-    for ( TInt i = 0; i < iBearerPriorityArray->Count(); i++ )
-        {
-        TBearerPriority item;
-        
-        TBearerPriority* orgItem = &(*iBearerPriorityArray)[i];
-        
-        item.iServiceType = HBufC::NewLC( orgItem->iServiceType->Length() );
-        item.iServiceType->Des().Copy( *orgItem->iServiceType );
-        item.iPriority = orgItem->iPriority;
-        item.iUIPriority = orgItem->iUIPriority;
-                          
-        User::LeaveIfError( aArray.Append( item ) );
-        
-        CleanupStack::Pop(); // item->iServiceType
-        }
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::UpdateBearerPriorityArrayL()
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::UpdateBearerPriorityArrayL( 
-                                        const RArray<TBearerPriority>& aArray )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::UpdateBearerPriorityArray" );    
-    
-    OpenTransactionLC();
-
-    CMDBRecordSet<CCmBearerPriRec>* bpRS = new (ELeave) 
-            CMDBRecordSet<CCmBearerPriRec>( iBearerTypePriorizationTableId );
-    CleanupStack::PushL( bpRS ); // 1
-    TRAP_IGNORE( bpRS->LoadL( Session() ) );
-    
-    // Delete the old record
-    for ( TInt i = 0; i < bpRS->iRecords.Count(); ++i )
-        {
-        bpRS->iRecords[i]->DeleteL( Session() );
-        }
-    
-    CleanupGlobalPriorityArray( *iBearerPriorityArray );
-            
-    CleanupStack::PopAndDestroy( bpRS );
-    bpRS = NULL;
-    
-    // Add the new content
-    CCmBearerPriRec* bpRcd = 
-            new (ELeave) CCmBearerPriRec( iBearerTypePriorizationTableId );
-    CleanupStack::PushL( bpRcd ); // 2
-
-    CLOG_WRITE( "Store bearer info to table" );
-    for ( TInt i = 0; i < aArray.Count(); ++i )
-        {        
-        bpRcd->SetRecordId( KCDNewRecordRequest );
-        
-        HBufC* serviceTypeVal = aArray[i].iServiceType;
-        TInt priorityVal = aArray[i].iPriority;
-        TInt uiPriorityVal = aArray[i].iUIPriority;
-        
-        CLOG_WRITE_FORMAT( "Set service type: [%S   ]", serviceTypeVal );
-        SET_HBUFC_FIELD(    bpRcd, 
-                            KCDTIdGlobalServiceType, 
-                            serviceTypeVal );
-        CLOG_WRITE_1( "Set priority: [%d]", priorityVal );
-        SET_INT_FIELD(  bpRcd, 
-                        KCDTIdGlobalServicePriority, 
-                        priorityVal );
-        CLOG_WRITE_1( "Set uipriority: [%d]", uiPriorityVal );
-        SET_INT_FIELD(  bpRcd, 
-                        KCDTIdGlobalServiceUIPriority, 
-                        uiPriorityVal );                        
-        bpRcd->StoreL( Session() );
-        
-        TBearerPriority item;
-        
-        item.iServiceType = serviceTypeVal->AllocLC();
-        item.iPriority = priorityVal;
-        item.iUIPriority = uiPriorityVal;
-        iBearerPriorityArray->AppendL( item );
-        CleanupStack::Pop( item.iServiceType );
-        }
-
-    CleanupStack::PopAndDestroy( bpRcd );
-
-    CommitTransactionL( KErrNone );
-    }
-    
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::GlobalBearerPriority()
-//-----------------------------------------------------------------------------
-//
-TInt CCmManagerImpl::GlobalBearerPriority( TBool aUiPriority, 
-                                           const TDesC& aServiceType ) const
-    {
-    for ( TInt i = 0; i < iBearerPriorityArray->Count(); ++i )
-        {
-        if ( !aServiceType.CompareF( *(*iBearerPriorityArray)[i].iServiceType ) )
-            {
-            if( aUiPriority )
-                {
-                return (*iBearerPriorityArray)[i].iUIPriority;
-                }
-            else
-                {
-                return (*iBearerPriorityArray)[i].iPriority;
-                }
-            }
-        }
-        
-    return KDataMobilitySelectionPolicyPriorityWildCard;
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::CleanupGlobalPriorityArray()
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::CleanupGlobalPriorityArray(
-                                        RArray<TBearerPriority>& aArray ) const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::CleanupGlobalPriorityArray" );
-
-    for ( TInt i = 0; i < aArray.Count(); ++i )
-        {
-        delete aArray[i].iServiceType;
-        }
-        
-    aArray.Reset();
-    aArray.Close();
-    }
-    
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::AddResourceFileL()
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::AddResourceFileL( TFileName& aName )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::AddResourceFileL" );
-    
-    TInt index = FindResourceFile( aName );
-    
-    if ( index != KErrNotFound )
-        {
-        ++(*iResourceFiles)[index]->iRefs;
-        return;
-        }
-        
-    TResourceFiles* newRes = new (ELeave) TResourceFiles;
-    CleanupStack::PushL( newRes );
-
-    RResourceFile resFile;
-    resFile.OpenL( iFs, aName );
-    CleanupClosePushL( resFile );
-    
-    resFile.ConfirmSignatureL(0); 
-    
-    newRes->iFile = resFile;
-    newRes->iFName.Copy( aName );
-    newRes->iRefs = 1;  // 1 reference to this resource file
-    
-    iResourceFiles->AppendL( newRes );
-    
-    CleanupStack::Pop( 2 ); // resFile, newRes
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::RemoveResourceFile()
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::RemoveResourceFile( TFileName& aName )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::RemoveResourceFile" );
-
-    TInt index = FindResourceFile( aName );
-    
-    if ( index == KErrNotFound )
-        {
-        return;
-        }
-        
-    if ( !--(*iResourceFiles)[index]->iRefs )
-        // it was the last reference
-        {
-        (*iResourceFiles)[index]->iFile.Close();
-        delete (*iResourceFiles)[index];
-        
-        iResourceFiles->Delete( index );
-        }
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::FindResourceFile()
-//-----------------------------------------------------------------------------
-//
-TInt CCmManagerImpl::FindResourceFile( TFileName& aName ) const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::FindResourceFile" );
-
-    BaflUtils::NearestLanguageFile( iFs, aName );
-    
-    for ( TInt i = 0; i < iResourceFiles->Count(); ++i )
-        {
-        if ( !(*iResourceFiles)[i]->iFName.CompareF( aName ) )
-            {
-            return i;
-            }
-        }
-    
-    return KErrNotFound;
-    }
-    
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::AllocReadL()
-//-----------------------------------------------------------------------------
-//
-HBufC* CCmManagerImpl::AllocReadL( TInt aResourceId ) const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::AllocReadL" );
-
-    HBufC* retVal = NULL;
-    
-    // Scan all resource files to find owner
-    for (TInt i=0; i < iResourceFiles->Count(); i++)
-        { 
-        RResourceFile& file=(*iResourceFiles)[i]->iFile;
-        if ( file.OwnsResourceId(aResourceId) )
-            {
-            HBufC8* readBuffer = file.AllocReadLC( aResourceId );
-            // as we are expecting HBufC16...
-            const TPtrC16 ptrReadBuffer( (TText16*) readBuffer->Ptr(),
-                                         readBuffer->Length() >> 1 );
-            retVal=HBufC16::NewL( ptrReadBuffer.Length() );
-            retVal->Des().Copy( ptrReadBuffer );
-            CleanupStack::PopAndDestroy( readBuffer ); // readBuffer
-            
-            // exit from loop
-            break;
-            }
-        }
-
-    return retVal;
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::ConstructL()
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::ConstructL()
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::ConstructL" );
-    CLOG_NAME_1( _L("ManagerImpl_0x%x"), this );
-    
-    iObjectPool = new (ELeave) CCMObjectPool(*this);
-            
-    FeatureManager::InitializeLibL();
-    iIsFeatureManagerInitialised = ETrue;
-    iHelp = FeatureManager::FeatureSupported( KFeatureIdHelp ); 
-    iDefConnSupported = ETrue;
-    //iDefConnSupported = FeatureManager::FeatureSupported( KFeatureIdDefaultConnection );    
-    iWLan = FeatureManager::FeatureSupported( KFeatureIdProtocolWlan );
-
-    CMDBSession* db = CMDBSession::NewL( KCDVersion1_2 );
-    
-    iTrans = CCmTransactionHandler::NewL( *db );
-    CLOG_ATTACH( iTrans, this );
-    
-    User::LeaveIfError( iFs.Connect() );
-  
-    iResourceFiles = new (ELeave) CArrayPtrFlat<TResourceFiles>( 
-                                                          KResFileGranularity );
-    
-    TParse fp;
-    TInt err = fp.Set( KACMManagerResDirAndFileName, 
-                        &KDC_RESOURCE_FILES_DIR, 
-                        NULL ); 
-    CLOG_WRITE_1( "Set: [%d]", err );
-    if ( err != KErrNone)
-        {
-        User::Leave( err );
-        }
-        
-    TFileName fName;
-    
-    fName.Copy( fp.FullName() );
-    
-    AddResourceFileL( fName );
-        
-    CheckTablesL();
-    CreateBearerPriorityArrayL();
-        
-    BuildPluginArrayL();
-        
-    TCmPluginInitParam params( *this );
-    
-    params.iParentDest = NULL;
-    iPluginImpl = CCmConnectionMethodInfo::NewL( &params );
-    CLOG_ATTACH( iPluginImpl, this );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmManagerImpl::OpenTransactionLC
-// ---------------------------------------------------------------------------
-//
-void CCmManagerImpl::OpenTransactionLC( TBool aSetAttribs )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::OpenTransactionL" );
-
-    iTrans->OpenTransactionLC(  aSetAttribs );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDestinationImpl::CommitTransactionL
-// ---------------------------------------------------------------------------
-//
-void CCmManagerImpl::CommitTransactionL( TInt aError )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::CommitTransactionL" );
-
-    iTrans->CommitTransactionL( aError );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDestinationImpl::CommitTransactionL
-// ---------------------------------------------------------------------------
-//
-void CCmManagerImpl::RollbackTransaction()
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::RollbackTransaction" );
-    CleanupStack::Pop( iTrans );
-    iTrans->Close();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDestinationImpl::StartCommsDatNotifier
-// ---------------------------------------------------------------------------
-//
-void CCmManagerImpl::StartCommsDatNotifierL()
-    {
-    // Two instances of class CCmCommsDatNotifier are created here and
-    // referred by all watchers in CmManager. One is to watch change in Iap Table
-    // and the other is to watch change in Snap Table.
-    iCommsDatIapNotifier = CCmCommsDatNotifier::NewL( KCDTIdIAPRecord );
-    
-    TUint32 snapTableId = GetSnapTableIdL();
-    iCommsDatSnapNotifier = CCmCommsDatNotifier::NewL( snapTableId );
-    }
-
-//=============================================================================
-// CREATION / DELETION API
-//=============================================================================
-//
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::CreateDestinationL( const TDesC& aName )
-//-----------------------------------------------------------------------------
-//
-CCmDestinationImpl* CCmManagerImpl::CreateDestinationL( const TDesC& aName )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::CreateDestinationL" );
-    
-    CheckAvailableSpaceL();
-    
-    if ( aName.Length() == 0 )
-        {
-        User::Leave( KErrArgument );
-        }
-    
-    return iObjectPool->GetDestinationL( aName );
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::CreateDestinationL( const TDesC& aName, TUint32
-//  aDestId )
-//-----------------------------------------------------------------------------
-//
-CCmDestinationImpl* CCmManagerImpl::CreateDestinationL(
-    const TDesC& aName,
-    TUint32 aDestId )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::CreateDestinationL" );
-
-    CheckAvailableSpaceL();
-    
-    if ( aName.Length() == 0 )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    if ( aDestId == 0 )
-        {
-        return CreateDestinationL( aName );
-        }
-
-    return iObjectPool->CreateDestinationL( aName, aDestId );
-    }
-
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::DestinationUpdated( CCmDestinationImpl* aDestination )
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::DestinationUpdated( CCmDestinationImpl* aDestination )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::DestinationUpdatedL" );
-    iObjectPool->DestinationUpdated( aDestination );
-    }
-
-// --------------------------------------------------------------------------
-// CCmManagerImpl::CreateConnectionMethodL()
-// --------------------------------------------------------------------------
-//  
-CCmPluginBase* 
-        CCmManagerImpl::CreateConnectionMethodL( CCmPluginBaseEng* pluginBaseEng )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::CreateConnectionMethodL 2" );
-
-    CheckAvailableSpaceL();        
-
-    return iObjectPool->CreateConnectionMethodL( pluginBaseEng );
-    }
-
-// --------------------------------------------------------------------------
-// CCmManagerImpl::InsertConnectionMethodL()
-// --------------------------------------------------------------------------
-//
-void CCmManagerImpl::InsertConnectionMethodL( CCmPluginBaseEng* pluginBaseEng )
-    {
-    iObjectPool->InsertConnectionMethodL( pluginBaseEng );
-    }
-
-// --------------------------------------------------------------------------
-// CCmManagerImpl::CreateConnectionMethodL()
-// --------------------------------------------------------------------------
-//  
-CCmPluginBase* 
-        CCmManagerImpl::CreateConnectionMethodL( TUint32 aImplementationUid,
-                                    CCmDestinationImpl* aParentDestination )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::CreateConnectionMethodL" );
-    
-    CheckAvailableSpaceL();
-    
-    TCmPluginInitParam params( *this );
-    if (aParentDestination)
-        {
-        params.iParentDest = aParentDestination->Id();        
-        }
-
-    return iObjectPool->CreateConnectionMethodL( aImplementationUid, params );
-    }
-
-// --------------------------------------------------------------------------
-// CCmManagerImpl::CreateConnectionMethodL()
-// --------------------------------------------------------------------------
-//  
-CCmPluginBase* 
-        CCmManagerImpl::CreateConnectionMethodL( TUint32 aImplementationUid,
-                                    TUint32 aConnMethodId,
-                                    CCmDestinationImpl* aParentDestination )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::CreateConnectionMethodL" );
-    
-    CheckAvailableSpaceL();
-         
-    TCmPluginInitParam params( *this );
-    if ( aParentDestination )
-        {
-        params.iParentDest = aParentDestination->Id();        
-        }
-
-    return iObjectPool->CreateConnectionMethodL( aImplementationUid,
-    		                                     params,
-    		                                     aConnMethodId);
-    }
-
-// --------------------------------------------------------------------------
-// CCmManagerImpl::DoCreateConnectionMethodL()
-// --------------------------------------------------------------------------
-//  
-CCmPluginBaseEng* 
-        CCmManagerImpl::DoCreateConnectionMethodL( TUint32 aImplementationUid,
-                                     TCmPluginInitParam& aParams )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::DoCreateConnectionMethodL" );
-
-    const TUid KMCMmImplementationUid = { aImplementationUid };    
-    TAny* ptr = REComSession::CreateImplementationL( KMCMmImplementationUid, 
-                                                     _FOFF( CCmPluginBaseEng, 
-                                                            iDtor_ID_Key ), 
-                                                     (TAny*)&aParams );
-
-    CCmPluginBaseEng* plugin = STATIC_CAST( CCmPluginBaseEng*, ptr );
-    CleanupStack::PushL( plugin );
-
-    plugin->CreateNewL(); 
-    plugin->SetIdValidity(EFalse);   
-    CleanupStack::Pop( plugin );  // plugin
-        
-    return plugin;
-    }
-
-// --------------------------------------------------------------------------
-// CCmManagerImpl::DoCreateConnectionMethodL()
-// --------------------------------------------------------------------------
-//  
-CCmPluginBaseEng* 
-   CCmManagerImpl::DoCreateConnectionMethodL( TUint32 aImplementationUid,
-                                              TCmPluginInitParam& aParams,
-                                              TUint32 aConnMethodId )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::DoCreateConnectionMethodL" );
-
-    const TUid KMCMmImplementationUid = { aImplementationUid };    
-    TAny* ptr = REComSession::CreateImplementationL( KMCMmImplementationUid, 
-                                                    _FOFF( CCmPluginBaseEng, 
-                                                           iDtor_ID_Key ), 
-                                                    (TAny*)&aParams );
-
-    CCmPluginBaseEng* plugin = STATIC_CAST( CCmPluginBaseEng*, ptr );
-    CleanupStack::PushL( plugin );
-
-    plugin->CreateNewL(); 
-    plugin->SetIdValidity( EFalse );
-    plugin->SetPreDefinedId( aConnMethodId );
-    CleanupStack::Pop( plugin );  // plugin
-
-    return plugin;
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::ConnectionMethodL( TUint aId )
-//-----------------------------------------------------------------------------
-//
-EXPORT_C CCmPluginBaseEng* 
-                      CCmManagerImpl::ConnectionMethodL( TUint32 /*aCmId*/ )
-    {
-    LOGGER_ENTERFN( "Error: Obsolete function CCmManagerImpl::ConnectionMethodL used" );
-    User::Panic( _L("CMManager"), KErrNotSupported );
-    return NULL;    
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::GetConnectionMethodL( TUint aId )
-//-----------------------------------------------------------------------------
-//
-EXPORT_C CCmPluginBase* 
-                      CCmManagerImpl::GetConnectionMethodL( TUint32 aCmId )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::GetConnectionMethodL" );
-    
-    CCmPluginBase* plugin = DoFindConnMethodL( aCmId, NULL );
-                                      
-    return plugin;
-    }
-
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::AppendUncatCmListL
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::AppendUncatCmListL( RPointerArray<CCmPluginBase>& aCMArray,
-                                        TBool aCheckBearerType,
-                                        TBool aLegacyOnly,
-                                        TBool aEasyWlan,
-                                        TBool aSortByBearer )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::AppendUncatCmListL" );
-
-    RArray<TUint32> cmUidArray;
-    CleanupClosePushL(cmUidArray);
-    ConnectionMethodL(cmUidArray, aCheckBearerType, aLegacyOnly, aEasyWlan, aSortByBearer);
-    AppendCmListFromUidsL( cmUidArray, aCMArray );
-
-    CleanupStack::PopAndDestroy(&cmUidArray);
-    }
-    
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::AppendUncatCmListLC
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::AppendUncatCmListLC( RPointerArray<CCmPluginBase>& aCMArray,
-                                        TBool aCheckBearerType,
-                                        TBool aLegacyOnly,
-                                        TBool aEasyWlan,
-                                        TBool aSortByBearer )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::AppendUncatCmListLC" );
-
-    AppendUncatCmListL( aCMArray, aCheckBearerType, aLegacyOnly, aEasyWlan, aSortByBearer);
-    
-    CleanupResetAndDestroyPushL< RPointerArray<CCmPluginBase> >( aCMArray );
-    }
-        
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::AppendCmListLC
-// -----------------------------------------------------------------------------
-//     
-void CCmManagerImpl::AppendCmListLC( TUint32 aDestintaionId, RPointerArray<CCmPluginBase>& aCMArray )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::AppendCmListLC" );
-
-    AppendCmListL( aDestintaionId, aCMArray );
-    CCmManagerImpl::CleanupResetAndDestroyPushL< RPointerArray<CCmPluginBase> >( aCMArray );
-    }
-         
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::AppendCmListL
-// -----------------------------------------------------------------------------
-//     
-void CCmManagerImpl::AppendCmListL( TUint32 aDestintaionId, RPointerArray<CCmPluginBase>& aCMArray )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::AppendCmListL" );
-
-    CCmDestinationImpl* dest = DestinationL( aDestintaionId );
-    CleanupStack::PushL(dest); 
-    RArray<TUint32> cmIdList;
-    CleanupClosePushL(cmIdList);
-    dest->ConnectMethodIdArrayL( cmIdList );
-    AppendCmListFromUidsL( cmIdList, aCMArray );
-    CleanupStack::PopAndDestroy(&cmIdList);  
-    CleanupStack::PopAndDestroy(dest);  
-    }
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::AppendCmListFromUidsL
-// -----------------------------------------------------------------------------
-//     
-void CCmManagerImpl::AppendCmListFromUidsL( RArray<TUint32>& cmIdList, RPointerArray<CCmPluginBase>& aCMArray )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::AppendCmListFromUidsL" );
-
-    TInt count = cmIdList.Count();
-    for ( TInt i = 0; i< count; i++ )
-        {
-        CCmPluginBase* cm = NULL;
-        TRAPD( err,cm = GetConnectionMethodL( cmIdList[i] ));
-        if (err == KErrNone)
-            {
-            aCMArray.AppendL( cm );
-            }
-        }
-    }
-    
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::ConnectionMethodL
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void CCmManagerImpl::ConnectionMethodL( RArray<TUint32>& aCMArray,
-                                        TBool aCheckBearerType,
-                                        TBool aLegacyOnly,
-                                        TBool aEasyWlan,
-                                        TBool aSortByBearer )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::ConnectionMethodL" );
-
-    OpenTransactionLC();
-    
-    CMDBRecordSet<CCDIAPRecord>* ptrRecordSet = AllIapsL();
-    CleanupStack::PushL( ptrRecordSet );
-    
-    TInt iapRecords = ptrRecordSet->iRecords.Count();
-    CLOG_WRITE_1_PTR( NULL, "Record num [%d]", iapRecords );
-    
-    // Time optimization to load the entire destination table
-    TInt destTblId = DestinationTableId();
-    CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>*  ptrDestSet = 
-            new (ELeave) CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>( 
-                                                                    destTblId );
-    CleanupStack::PushL( ptrDestSet );
-    TRAP_IGNORE( ptrDestSet->LoadL( Session() ) );
-    
-    for ( TInt i = 0; i < iapRecords; i++ )
-        {
-        TUint32 iapId = (*ptrRecordSet)[i]->RecordId();
-        CLOG_WRITE_1_PTR( NULL, "IAP ID [%d]", iapId );
-        if ( aCheckBearerType )
-            {
-            TUint32 bearerType( 0 );
-            TRAPD( err, 
-                   bearerType = BearerTypeFromIapRecordL( (*ptrRecordSet)[i] ));
-            if ( !err && bearerType )
-                {
-                // append the IAP id - if aLegacyOnly is ETrue, only for legacy IAPs
-                if ( !aLegacyOnly || 
-                     !NumOfConnMethodReferencesL( iapId, ptrDestSet ) )
-                    {
-                    if( !aEasyWlan && IsEasyWLanL( (*ptrRecordSet)[i] ) )
-                        {
-                        continue;
-                        }
-                        
-                    aCMArray.Append( iapId );
-                    }
-                }
-            }
-        else
-            {
-            // append the IAP id - if aLegacyOnly is ETrue, only for legacy IAPs
-            if ( !aLegacyOnly ||
-                 !NumOfConnMethodReferencesL( iapId, ptrDestSet ) )
-                {
-                if( !aEasyWlan && IsEasyWLanL( (*ptrRecordSet)[i] ) )
-                    {
-                    continue;
-                    }
-                    
-                aCMArray.Append( iapId );
-                }
-            }
-        }
-    
-    // Re-order the array according to the global bearer ordering rules
-    if ( aSortByBearer )
-        {        
-        RArray<TUint32> bearers( KCmArrayMediumGranularity );
-        CleanupClosePushL( bearers );
-        SupportedBearersL( bearers );
-        
-        TInt prevInsertedPos = -1;
-        for ( TInt i = 0; i < bearers.Count(); i++ )
-            {
-            for ( TInt j = prevInsertedPos + 1; j < aCMArray.Count(); j++ )
-                {
-                // Check if CM belongs to this bearer
-                TUint cmBearerId = GetConnectionMethodInfoIntL( aCMArray[j],
-                                                             ECmBearerType );
-                if ( cmBearerId == bearers[i] )
-                    {
-                    // copy the cm id to the next 'sorted position' in the array
-                    // the item removed will always be after the insertion position
-                    TUint cmId = aCMArray[j];
-                    aCMArray.Remove(j);                    
-                    aCMArray.Insert( cmId, ++prevInsertedPos );
-                    }
-                }
-            }
-        
-        CleanupStack::PopAndDestroy( &bearers );
-        }
-    
-    CleanupStack::PopAndDestroy( 2, ptrRecordSet );
-    
-    RollbackTransaction();
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::DoFindConnMethodL
-//-----------------------------------------------------------------------------
-//
-CCmPluginBase* CCmManagerImpl::DoFindConnMethodL( TUint32 aCmId, 
-                                      CCmDestinationImpl* aParentDest )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::DoFindConnMethodL" );
-    return iObjectPool->GetConnectionMethodL(aCmId, aParentDest);        
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::FindConnMethodL
-//-----------------------------------------------------------------------------
-//
-CCmPluginBaseEng* CCmManagerImpl::DoFindConnMethL( TUint32 aCmId, 
-                                       CCmDestinationImpl* aParentDest )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::FindConnMethodL" );
-
-    // Step through each bearer to find which the CMId belongs to
-    CCmPluginBaseEng* plugin = NULL;
-    
-    TCmPluginInitParam params( *this );
-    if (aParentDest)
-        {
-        params.iParentDest = aParentDest->Id();        
-        }
-    else
-        {
-        params.iParentDest = ParentDestinationL( aCmId );        
-        }
-        
-    TUint32 bearerType = BearerTypeFromCmIdL( aCmId );
-
-    for ( TInt i=0; i<iPlugins->Count(); i++ )
-        {
-        if( (*iPlugins)[i]->GetIntAttributeL( ECmBearerType ) == bearerType )
-            {
-            plugin = (*iPlugins)[i]->CreateInstanceL( params );
-            break;
-            }
-        }    
-        
-    if ( !plugin )
-        {
-        return plugin;
-        }
-    
-    CleanupStack::PushL( plugin );
-    
-    plugin->LoadL( aCmId );
-                    
-    CleanupStack::Pop( plugin ); // 1
-    plugin->SetIdValidity(ETrue);
-        
-    return plugin;
-    }
- 
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::BearerTypeFromIapL( TUint aId )
-//-----------------------------------------------------------------------------
-//
-TUint32 CCmManagerImpl::BearerTypeFromCmIdL( TUint32 aCmId )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::BearerTypeFromIapL" );
-    TUint32 bearerType;
-    if ( aCmId > KMaxIapID )
-        {
-        bearerType = KUidEmbeddedDestination;  
-        }
-    else
-        {//aCmId is an IapId
-         // Load this IAP record from the IAP table
-        // This is an optimization that plugins doesn't have
-        // to do it every time the CanHandleIapIdL() is called.    
-        CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord *>
-                                   (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));     
-        CleanupStack::PushL( iapRecord ); // 1
-        iapRecord->SetRecordId( aCmId );
-
-        OpenTransactionLC();
-        iapRecord->LoadL( Session() );
-        RollbackTransaction();
-        
-        bearerType = BearerTypeFromIapRecordL( iapRecord );
-
-        CleanupStack::PopAndDestroy( iapRecord ); // 0        
-        }    
-    return bearerType;
-    }
-   
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::BearerTypeFromIapRecordL( CCDIAPRecord* aIapRecord )
-//-----------------------------------------------------------------------------
-//
-TUint32 CCmManagerImpl::BearerTypeFromIapRecordL( CCDIAPRecord* aIapRecord ) const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::BearerTypeFromIapRecordL" );
-
-    CLOG_WRITE_1( "Plugin count: [%d]", iPlugins->Count() );
-    
-    TInt err( KErrNone );
-    TUint32 extLevel( 0 );
-    TInt bearerType( 0 );
-    TBool canHandle( EFalse );
-    
-    // Check which bearer handles the given IAPid
-    for ( TInt i=0; i<iPlugins->Count(); i++ )
-        {
-        // a defective, or a wrong AP can't cause any trouble.
-        TRAP( err, canHandle = (*iPlugins)[i]->CanHandleIapIdL( aIapRecord ) );
-        CLOG_WRITE_3( "plugin [%d] returned with error %d, CanH: %d", 
-                       i, err, TUint32(canHandle) );
-        if ( !err && canHandle )
-            {
-            if ( extLevel < 
-                (*iPlugins)[i]->GetIntAttributeL( ECmExtensionLevel ) )
-                {
-                extLevel = (*iPlugins)[i]->GetIntAttributeL(ECmExtensionLevel);
-                bearerType = (*iPlugins)[i]->GetIntAttributeL( ECmBearerType );
-                }
-            }
-        else if ( err == KErrNoMemory )
-            {
-            User::Leave( err );
-            }
-        }
-        
-    if ( !bearerType )
-        // No supporting plugin found.
-        {
-        CLOG_WRITE( "Plugin not found, Leaving." );
-        User::Leave( KErrNotSupported );
-        }
-    CLOG_WRITE_1( "Returning bearertype: [%d]", bearerType );
-    return bearerType;
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::AllDestinationsL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void CCmManagerImpl::AllDestinationsL( RArray<TUint32>& aDestArray )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::AllDestinationsL" );
-
-    OpenTransactionLC();
-
-    CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>* destRecordSet = 
-           new ( ELeave ) CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>( 
-                                                             iDestinationTableId );
-    CleanupStack::PushL( destRecordSet );
-
-    TRAP_IGNORE( destRecordSet->LoadL( Session() ) );
-    
-    iDestinationCount = destRecordSet->iRecords.Count();
-
-    //=========================================================================
-    // Step through every item in the NW Table and check whether it is linked
-    // in the DN_IAP table
-    //
-    for ( TInt i = 0; i < iDestinationCount; ++i )
-        {
-        TInt nwId = QUERY_INT_FIELD( destRecordSet->iRecords[i], 
-                                     KCDTIdDataMobilitySelectionPolicyNetwork );
-        TBool found( EFalse );
-        
-        for ( TInt j = 0; j < aDestArray.Count(); ++j )
-            {
-            if ( aDestArray[j] == nwId )
-                {
-                found = ETrue;
-                break;
-                }
-            }
-            
-        if ( !found )
-            {
-            aDestArray.AppendL( nwId );
-            CLOG_WRITE_2( "Dest(%d): [%d]", aDestArray.Count(), nwId );
-            }
-        }
-    
-    CleanupStack::PopAndDestroy( destRecordSet );
-    
-    RollbackTransaction();
-   
-    CLOG_WRITE_1( "No. of dests found: [%d] ", aDestArray.Count() );
-    }
-        
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::DestinationL()
-//-----------------------------------------------------------------------------
-//  
-EXPORT_C CCmDestinationImpl* CCmManagerImpl::DestinationL( TUint32 aId )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::DestinationL" );
-        
-    // Create destination object
-    return iObjectPool->GetDestinationL( aId );
-    }
-    
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::RemoveDestFromPool
-//-----------------------------------------------------------------------------
-//  
-EXPORT_C void CCmManagerImpl::RemoveDestFromPool( CCmDestinationImpl* aDestination )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::RemoveDestFromPool" );
-    iObjectPool->RemoveDestination(aDestination);
-    }
-    
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::RemoveDestFromPool
-//-----------------------------------------------------------------------------
-//  
-void CCmManagerImpl::RemoveDestFromPool( CCmDestinationData* aDestination )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::RemoveDestFromPool" );
-    iObjectPool->RemoveDestination(aDestination);
-    }
-    
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::RemoveCMFromPool
-//-----------------------------------------------------------------------------
-//  
-void CCmManagerImpl::RemoveCMFromPoolL( CCmPluginBaseEng* aCM )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::RemoveCMFromPool" );
-    iObjectPool->RemoveConnectionMethodL( aCM );
-    }
-    
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::RemoveCMFromPool
-//-----------------------------------------------------------------------------
-//  
-void CCmManagerImpl::RemoveCMFromPoolL( CCmPluginBase* aCM )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::RemoveCMFromPool" );
-    iObjectPool->RemoveConnectionMethodL( aCM );
-    }
-
-//-----------------------------------------------------------------------------
-// CCmManagerImpl::CopyConnectionMethodL()
-//-----------------------------------------------------------------------------
-//
-TInt CCmManagerImpl::CopyConnectionMethodL( 
-                                    CCmDestinationImpl& aTargetDestination,
-                                    CCmPluginBase& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::CopyConnectionMethodL" );    
-    
-    OpenTransactionLC();
-    TInt index = aTargetDestination.AddConnectionMethodL( aConnectionMethod );
-    aTargetDestination.UpdateL();
-    CommitTransactionL( 0 );
-    
-    return index;
-    }    
-    
-//-----------------------------------------------------------------------------
-// CCmManagerImpl::MoveConnectionMethodL()
-//-----------------------------------------------------------------------------
-//
-TInt CCmManagerImpl::MoveConnectionMethodL( 
-                                    CCmDestinationImpl& aSourceDestination,
-                                    CCmDestinationImpl& aTargetDestination,
-                                    CCmPluginBase& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::MoveConnectionMethodL" );
-    
-    OpenTransactionLC();
-    
-    TInt index = CopyConnectionMethodL( aTargetDestination, aConnectionMethod );
-    aSourceDestination.RemoveConnectionMethodL( aConnectionMethod );
-    aSourceDestination.UpdateL();
-    
-    CommitTransactionL( KErrNone );
-    
-    return index;
-    }
-    
-//-----------------------------------------------------------------------------
-// CCmManagerImpl::RemoveConnectionMethodL()
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::RemoveConnectionMethodL( 
-                                         CCmDestinationImpl& aDestination,
-                                         CCmPluginBase& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::RemoveConnectionMethodL" );    
-    
-    OpenTransactionLC();
-    aDestination.RemoveConnectionMethodL( aConnectionMethod );
-    aDestination.UpdateL();
-    CommitTransactionL( 0 );
-    }
-
-//-----------------------------------------------------------------------------
-//  RCmManagerExt::SupportedBearers()
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::SupportedBearersL( RArray<TUint32>& aArray ) const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::SupportedBearersL" );
-
-    for ( TInt i = 0; i < iPlugins->Count(); i++ )
-        {
-        TUint32 bearerType( (*iPlugins)[i]->GetIntAttributeL(ECmBearerType) );
-        
-        if ( KUidEmbeddedDestination != bearerType )
-            {
-            aArray.AppendL( (*iPlugins)[i]->GetIntAttributeL(ECmBearerType) );
-            }
-        }       
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::NumOfConnMethodReferencesL()
-// -----------------------------------------------------------------------------
-//
-TUint32 CCmManagerImpl::NumOfConnMethodReferencesL( 
-        TUint32 aId,
-        CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>* aRecSet )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::NumOfConnMethodReferencesL" );
-
-    OpenTransactionLC();
-    
-    TUint32 retVal( 0 );
-   
-    if ( aRecSet )
-        {
-        TMDBElementId id( IAP_ELEMENT_ID(aId) );
-        
-        for ( TInt i = 0; i < aRecSet->iRecords.Count(); ++i )
-            {
-            if ( QUERY_UINT32_FIELD( (*aRecSet)[i], 
-                                    KCDTIdDataMobilitySelectionPolicyIAP ) == 
-                id )
-                {
-                ++retVal;
-                }
-            }
-        }
-    else
-        {
-        // Just to test how many record we have
-        TInt destTblId = DestinationTableId();
-        CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>*  ptrRecordSet =
-             new (ELeave) CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>( 
-                                                                    destTblId );
-        CleanupStack::PushL( ptrRecordSet );
-
-        // Prime record
-        CCDDataMobilitySelectionPolicyRecord* record = 
-                              new (ELeave) CCDDataMobilitySelectionPolicyRecord( 
-                                                            DestinationTableId() );
-        CleanupStack::PushL( record );
-
-        record->iIAP = IAP_ELEMENT_ID( aId );
-        ptrRecordSet->iRecords.AppendL( record );
-        
-        CleanupStack::Pop( record );
-        record = NULL;
-            
-        if ( ptrRecordSet->FindL(Session()) )
-            {
-            // we have a match
-            retVal = ptrRecordSet->iRecords.Count();
-            CLOG_WRITE_1( "Found: [%d]", retVal );
-            }
-        else
-            {
-            CLOG_WRITE( "Nothing" );
-            }
-            
-        CleanupStack::PopAndDestroy( ); //  ptrRecordSet
-        }
-            
-    RollbackTransaction();
-    
-    return retVal;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::HasUnprotectedDestinationsL
-// -----------------------------------------------------------------------------
-//
-TBool CCmManagerImpl::HasUnprotectedDestinationsL()
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::HasUnprotectedDestinationsL" );
-
-    TBool hasUnprotectedDests( EFalse );
-    
-    RArray<TUint32> destIdArray( KCmArrayBigGranularity );
-    AllDestinationsL( destIdArray );
-    CleanupClosePushL( destIdArray );
-    
-    CCmDestinationImpl* dest = NULL;
-    for ( TInt i = 0; i < destIdArray.Count(); i++ )
-        {
-        dest = DestinationL( destIdArray[i] );
-        CleanupStack::PushL( dest );
-        if ( dest->ProtectionLevel() != EProtLevel1 )
-            {
-            hasUnprotectedDests = ETrue;
-            CleanupStack::PopAndDestroy( dest );
-            break;
-            }            
-        CleanupStack::PopAndDestroy( dest );
-        }
-        
-    CleanupStack::PopAndDestroy( &destIdArray );
-    
-    return hasUnprotectedDests;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::BuildPluginArrayL()
-// -----------------------------------------------------------------------------
-//
-void CCmManagerImpl::BuildPluginArrayL()
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::BuildPluginArrayL" );
-    iPlugins = new (ELeave) CArrayPtrFlat<const CCmPluginBaseEng>( 
-                                                           KPluginGranularity );
-
-    // Get a list of all the bearer types
-    RImplInfoPtrArray implArray;
-    REComSession::ListImplementationsL( TUid::Uid( KCMPluginInterfaceUid ), 
-                                        implArray );
-
-    CleanupClosePushL( implArray ); // 1
-
-    CCmPluginBaseEng* plugin = NULL;
-    for ( TInt i=0; i<implArray.Count(); i++ )
-        {
-        TCmPluginInitParam params( *this );
-        params.iParentDest = NULL;
-
-        // This is the Util implementation        
-        // Trap it to be able to work even if there's a faulty plugin installed
-        // in the phone.
-        TRAPD( err, plugin = STATIC_CAST( CCmPluginBaseEng*, 
-                                        REComSession::CreateImplementationL( 
-                                        (implArray)[i]->ImplementationUid(),
-                                        _FOFF( CCmPluginBaseEng, 
-                                               iDtor_ID_Key ),
-                                        (TAny*)&params )) );
-
-        if ( !err )
-            {
-            CLOG_ATTACH( plugin, this );
-            
-            CleanupStack::PushL( plugin );
-            
-            TBool inserted( EFalse );
-            TInt defaultPriority( KDataMobilitySelectionPolicyPriorityWildCard );
-            
-            // No UI priority -> wildcard
-            TRAP_IGNORE( defaultPriority = plugin->GetIntAttributeL( ECmDefaultUiPriority ) );
-            
-            for( TInt j( 0 ); j < iPlugins->Count(); ++j )
-                {
-                if( defaultPriority > (*iPlugins)[j]->GetIntAttributeL( ECmDefaultUiPriority ) )
-                    {
-                    continue;
-                    }
-                else if( defaultPriority == (*iPlugins)[j]->GetIntAttributeL( ECmDefaultUiPriority ) )
-                    {
-                    if( plugin->GetIntAttributeL( ECmExtensionLevel ) > 
-                        (*iPlugins)[j]->GetIntAttributeL( ECmExtensionLevel ) )
-                        {
-                        iPlugins->InsertL( j, plugin );
-                        inserted = ETrue;
-                        break;
-                        }
-                    }
-                else
-                    {
-                    iPlugins->InsertL( j, plugin );
-                    inserted = ETrue;
-                    break;
-                    }
-                }
-            
-            if( !inserted )
-                {
-                iPlugins->AppendL( plugin );
-                }
-
-            CleanupStack::Pop( plugin );
-            }
-        }
-    
-    implArray.ResetAndDestroy();
-        
-    CleanupStack::PopAndDestroy();  // implArray;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::GetBearerInfoIntL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TUint32 CCmManagerImpl::GetBearerInfoIntL( TUint32 aBearerType,
-                                           TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::GetBearerInfoIntL" );
-    if( !IsBearerSpecific( aAttribute ) )
-        {
-        User::Leave( KErrNotSupported );
-        }
-    
-    for ( TInt i = 0; i < iPlugins->Count(); ++i )
-        {
-        if ( aBearerType == (*iPlugins)[i]->GetIntAttributeL( ECmBearerType ) )
-            {
-            return (*iPlugins)[i]->GetIntAttributeL( aAttribute );
-            }
-        }
-        
-    User::Leave( KErrNotSupported );
-    
-    return 0;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::GetBearerInfoBoolL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CCmManagerImpl::GetBearerInfoBoolL( TUint32 aBearerType,
-                                          TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::GetBearerInfoBoolL" );
-    if( !IsBearerSpecific( aAttribute ) )
-        {
-        User::Leave( KErrNotSupported );
-        }
-        
-    for ( TInt i = 0; i < iPlugins->Count(); ++i )
-        {
-        if ( aBearerType == (*iPlugins)[i]->GetIntAttributeL( ECmBearerType ) )
-            {
-            return (*iPlugins)[i]->GetBoolAttributeL( aAttribute );
-            }
-        }
-        
-    User::Leave( KErrNotSupported );
-    
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::GetBearerInfoStringL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC* CCmManagerImpl::GetBearerInfoStringL( TUint32 aBearerType,
-                                             TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::GetBearerInfoStringL" );
-    if( !IsBearerSpecific( aAttribute ) )
-        {
-        User::Leave( KErrNotSupported );
-        }
-    
-    for ( TInt i = 0; i < iPlugins->Count(); ++i )
-        {
-        if ( aBearerType == (*iPlugins)[i]->GetIntAttributeL( ECmBearerType ) )
-            {
-            return (*iPlugins)[i]->GetStringAttributeL( aAttribute );
-            }
-        }
-        
-    User::Leave( KErrNotSupported );
-    
-    return NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::GetBearerInfoString8L()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC8* CCmManagerImpl::GetBearerInfoString8L( TUint32 aBearerType,
-                                               TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::GetBearerInfoStringL" );
-    if( !IsBearerSpecific( aAttribute ) )
-        {
-        User::Leave( KErrNotSupported );
-        }
-    
-    for ( TInt i = 0; i < iPlugins->Count(); ++i )
-        {
-        if ( aBearerType == (*iPlugins)[i]->GetIntAttributeL( ECmBearerType ) )
-            {
-            return (*iPlugins)[i]->GetString8AttributeL( aAttribute );
-            }
-        }
-        
-    User::Leave( KErrNotSupported );
-    
-    return NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::GetConnectionMethodInfoIntL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TUint32 CCmManagerImpl::GetConnectionMethodInfoIntL( TUint32 aCmId,
-                                                     TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::GetConnectionMethodInfoIntL" );
-
-    if ( aAttribute == ECmBearerType )
-        {
-        return const_cast<CCmManagerImpl*>(this)->BearerTypeFromCmIdL( aCmId );
-        }
-    else
-        {
-        return iPluginImpl->GetConnectionInfoIntL( aCmId, aAttribute );
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::GetConnectionMethodInfoBoolL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CCmManagerImpl::GetConnectionMethodInfoBoolL( TUint32 aCmId,
-                                                    TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::GetConnectionMethodInfoBoolL" );
-
-    TBool retval = EFalse;
-    if ( aAttribute == ECmVirtual )
-        {
-        TUint32 b = GetConnectionMethodInfoIntL( aCmId, ECmBearerType );
-        retval = GetBearerInfoBoolL( b, ECmVirtual );
-        }
-    else
-        {
-        retval = iPluginImpl->GetConnectionInfoBoolL( aCmId, aAttribute );
-        }
-    return retval;
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::GetConnectionMethodInfoStringL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC* CCmManagerImpl::GetConnectionMethodInfoStringL( 
-                                                    TUint32 aCmId,
-                                                    TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::GetConnectionMethodInfoStringL" );
-
-    return iPluginImpl->GetConnectionInfoStringL( aCmId, aAttribute );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::GetConnectionMethodInfoStringL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC8* CCmManagerImpl::GetConnectionMethodInfoString8L( 
-                                                     TUint32 aCmId,
-                                                     TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::GetConnectionMethodInfoString8L" );
-
-    return iPluginImpl->GetConnectionInfoString8L( aCmId, aAttribute );
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::UncategorizedIconL()
-//-----------------------------------------------------------------------------
-//    
-CGulIcon* CCmManagerImpl::UncategorizedIconL() const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::UncategorizedIconL" );
-    
-    MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-           
-    TParse mbmFile;
-    User::LeaveIfError( mbmFile.Set( KManagerIconFilename, 
-                                     &KDC_BITMAP_DIR, 
-                                     NULL ) );
-           
-    CGulIcon* icon = AknsUtils::CreateGulIconL( 
-                            skinInstance, 
-                            KAknsIIDQgnPropSetConnDestUncategorized,
-                            mbmFile.FullName(), 
-                            EMbmCmmanagerQgn_prop_set_conn_dest_uncategorized, 
-                            EMbmCmmanagerQgn_prop_set_conn_dest_uncategorized_mask );
-                            
-    return icon;            
-    }    
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::UncategorizedIconL()
-//-----------------------------------------------------------------------------
-//    
-CMDBSession& CCmManagerImpl::Session() const
-    { 
-    return iTrans->Session(); 
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::HasCapabilityL()
-// -----------------------------------------------------------------------------
-//
-void CCmManagerImpl::HasCapabilityL( TCapability aCapability )
-    {
-    TSecurityInfo info;
-
-    info.SetToCurrentInfo();
-    
-    if( !info.iCaps.HasCapability( aCapability ) )
-        {
-        User::Leave( KErrPermissionDenied );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmManagerImpl::FeatureSupported
-// ---------------------------------------------------------------------------
-TBool CCmManagerImpl::FeatureSupported( TInt aFeature )
-    {
-    return FeatureManager::FeatureSupported( aFeature );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmManagerImpl::IsEasyWLan
-//
-// We can't have any dependecy to WLan plugin, but
-// in some cases we need to filter out EasyWLan access points.
-// ---------------------------------------------------------------------------
-TBool CCmManagerImpl::IsEasyWLanL( CCDIAPRecord* aIapRecord ) const
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::IsEasyWLanL" );
-    if (!iWLan)
-        {
-        return EFalse;    
-        }
-    if( (TPtrC(aIapRecord->iServiceType) != TPtrC(KCDTypeNameLANService) ) ||
-        TPtrC(aIapRecord->iBearerType) != TPtrC(KCDTypeNameLANBearer) )
-        {
-        return EFalse;
-        }
-        
-    TBool retVal( EFalse );
-    TUint32 serviceId = aIapRecord->iService;
-    
-    CCDWlanServiceRecord* wLanServ = 
-            new (ELeave) CCDWlanServiceRecord( CCDWlanServiceRecord::TableIdL( Session() ) );
-
-    CleanupStack::PushL( wLanServ );
-                
-    wLanServ->iWlanServiceId.SetL( serviceId );
-    
-    if( wLanServ->FindL( Session() ) )
-        {
-        wLanServ->LoadL( Session() );
-
-        if( wLanServ->iWLanSSID.IsNull() ||
-            !TPtrC(wLanServ->iWLanSSID).Compare( KNullDesC ) )
-            {
-            retVal = ETrue;
-            }
-        }
-        
-    CleanupStack::PopAndDestroy( wLanServ );
-    
-    return retVal;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::EasyWlanIdL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TUint32 CCmManagerImpl::EasyWlanIdL()
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::EasyWlanId" );
-
-    OpenTransactionLC();
-    
-    TUint32 easyId( 0 );
-
-    CMDBRecordSet<CCDIAPRecord>*  ptrRecordSet = AllIapsL();
-    CleanupStack::PushL( ptrRecordSet );
-    TInt iapRecords = ptrRecordSet->iRecords.Count();
-    CLOG_WRITE_1_PTR( NULL, "Record num [%d]", iapRecords );
-
-    for ( TInt i = 0; i < iapRecords; i++ )
-        {
-        CCDIAPRecord* iapRecord = (*ptrRecordSet)[i];
-        
-        if( (TPtrC(iapRecord->iServiceType) == TPtrC(KCDTypeNameLANService) ) &&
-            TPtrC(iapRecord->iBearerType) == TPtrC(KCDTypeNameLANBearer) )
-            {
-            if( IsEasyWLanL( iapRecord ) )
-                {
-                easyId = (*ptrRecordSet)[i]->RecordId();
-                break;
-                }
-            }
-        }
-
-    CleanupStack::PopAndDestroy( ptrRecordSet );
-
-    RollbackTransaction();
-            
-    return easyId;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::AllIapsL()
-// -----------------------------------------------------------------------------
-//
-CMDBRecordSet<CCDIAPRecord>* CCmManagerImpl::AllIapsL()
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::AllIapsL" );
-
-    OpenTransactionLC();
-
-    CMDBRecordSet<CCDIAPRecord>*  ptrRecordSet = 
-                    new (ELeave) CMDBRecordSet<CCDIAPRecord>( KCDTIdIAPRecord );
-    
-    TRAP_IGNORE( ptrRecordSet->LoadL( Session() ) );
-    
-    RollbackTransaction();
-    
-    return ptrRecordSet;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::AllSNAPRecordsL()
-// -----------------------------------------------------------------------------
-//
-CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>* 
-                    CCmManagerImpl::AllSNAPRecordsL( TUint32 aSnapElementId )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::AllSNAPRecordsL" );
-
-    CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>*  ptrRecordSet = 
-              new (ELeave) CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>(  
-                                                        DestinationTableId() );
-    CleanupStack::PushL( ptrRecordSet );
-
-    OpenTransactionLC();    
-    if( aSnapElementId )
-        {
-        // Prime record
-        CCDSnapRecord* record = SNAPRecordL( 0 );
-        CleanupStack::PushL( record );
-        record->iEmbeddedSNAP = aSnapElementId;
-        ptrRecordSet->iRecords.AppendL( record );
-
-        CleanupStack::Pop( record );
-        record = NULL;
-            
-        ptrRecordSet->FindL( Session() );
-        }
-    else
-        {
-        ptrRecordSet->LoadL( Session() );
-        }
-        
-    RollbackTransaction();
-    
-    return ptrRecordSet;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::IsIapLinkedL()
-// -----------------------------------------------------------------------------
-//
-TBool CCmManagerImpl::IsIapLinkedL( const CCmPluginBaseEng& aPlugin )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::IsIapLinkedL" );
-    
-    TUint32 iapId = aPlugin.GetIntAttributeL( ECmId );
-    CMDBRecordSet<CCDIAPRecord>*  ptrRecordSet = AllIapsL();
-    CleanupStack::PushL( ptrRecordSet );
-
-    TInt iapRecords = ptrRecordSet->iRecords.Count();
-    CLOG_WRITE_1_PTR( NULL, "Record num [%d]", iapRecords );
-
-    TBool linked( EFalse );
-    for ( TInt i = 0; !linked && i < iapRecords; i++ )
-        {
-        CCDIAPRecord* iapRecord = (*ptrRecordSet)[i];
-        
-        if( iapRecord->RecordId() == iapId )
-            {
-            continue;
-            }
-            
-        TUint32 bearerType( 0 );
-        
-        TRAP_IGNORE( bearerType = BearerTypeFromIapRecordL( iapRecord ) );
-        if( bearerType )
-            {
-            if( GetBearerInfoBoolL( bearerType, ECmVirtual ) )
-                {
-                CCmPluginBase* plugin = NULL;
-                
-                TRAP_IGNORE( plugin = GetConnectionMethodL( iapRecord->RecordId() ) );
-                if( plugin )
-                    {
-                    linked = plugin->IsLinkedToIap( iapId );
-                    }
-                    
-                delete plugin;
-                }
-            }
-        }
-    CleanupStack::PopAndDestroy( ptrRecordSet );
-    
-    return linked;
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::RemoveAllReferencesL()
-// -----------------------------------------------------------------------------
-//
-void CCmManagerImpl::RemoveAllReferencesL( const CCmPluginBaseEng& aPlugin )
-    {
-    RArray<TUint32> dests;
-    CleanupClosePushL( dests );    
-    OpenTransactionLC();
-
-    AllDestinationsL( dests );
-    
-    for( TInt i = 0; i < dests.Count(); ++i )
-        {
-        CCmDestinationImpl* dest = DestinationL( dests[i] );
-        CleanupStack::PushL( dest );
-        TRAPD( err, dest->RemoveConnectionMethodL( aPlugin ) );
-        
-        if( err != KErrNotFound )
-            {
-            User::LeaveIfError( err );
-
-            dest->UpdateL();
-            }
-        
-        CleanupStack::PopAndDestroy( dest );
-        }
-    
-    CommitTransactionL( 0 );
-    CleanupStack::PopAndDestroy( &dests );   
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::RemoveAllReferencesLWoTransL()
-// -----------------------------------------------------------------------------
-//
-void CCmManagerImpl::RemoveAllReferencesWoTransL( const CCmPluginBaseEng& aPlugin )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::RemoveAllReferencesWoTransL" );
-
-    RArray<TUint32> dests;
-    CleanupClosePushL( dests );    
-
-    AllDestinationsL( dests );
-
-    for( TInt i = 0; i < dests.Count(); ++i )
-        {
-        CCmDestinationImpl* dest = DestinationL( dests[i] );
-        CleanupStack::PushL( dest );
-        TRAPD( err, dest->RemoveConnectionMethodL( aPlugin ) );
-
-        if( err != KErrNotFound )
-            {
-            User::LeaveIfError( err );
-
-            dest->UpdateL();
-            }
-
-        CleanupStack::PopAndDestroy( dest );
-        }
-    CleanupStack::PopAndDestroy( &dests );   
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::HandleDefConnDeletedL()
-// -----------------------------------------------------------------------------
-//
-void CCmManagerImpl::HandleDefConnDeletedL( TCmDefConnValue& aDCSetting )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::HandleDefConnDeletedL" );
-
-    if ( IsDefConnSupported() )
-        {
-        TCmDefConnValue defConn;
-        ReadDefConnWoTransL(defConn);
-        if ( defConn == aDCSetting )
-            {
-            // Default connection deleted, setting it to default value.
-            TUint32 destId = GetInternetDestinationIdL();
-
-            if ( destId && ( destId != aDCSetting.iId ) )
-                {
-                defConn.iType = ECmDefConnDestination;
-                defConn.iId = destId;                
-                }
-            else
-                {
-                // Internet destination not found. Initialise to zero.
-                defConn.iType = TCmDefConnType ( 0 );
-                defConn.iId = 0;
-                }    
-
-            WriteDefConnWoTransL( defConn );
-            }
-        } // do nothing if default connection is not supported
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::ReadDefConnWoTransL()
-// -----------------------------------------------------------------------------
-//
-void CCmManagerImpl::ReadDefConnWoTransL( TCmDefConnValue& aDCSetting )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::ReadDefConnWoTransL" );
-    if ( IsDefConnSupported() )
-        {
-        CMDBRecordSet<CCDDefConnRecord>* defConnRecordSet = 
-            new ( ELeave ) CMDBRecordSet<CCDDefConnRecord>( iDefConnTableId );
-        CleanupStack::PushL( defConnRecordSet );
-
-        TRAPD( err,  defConnRecordSet->LoadL( Session() ) );
-        if (err == KErrNone)
-            {
-            TInt mode = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], 
-                                         KCDTIdDefConnType );
-            aDCSetting.iType= TCmDefConnType (mode);
-
-            aDCSetting.iId = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], 
-                                              KCDTIdDefConnUid );
-            CLOG_WRITE( "Default Connection read OK " );
-            }
-        else
-            {
-            //deleting old record, writing Always Ask (default value)
-            //aDCSetting.iType = ECmDefConnAlwaysAsk;
-            //aDCSetting.iId = 0;
-            TUint32 destId = GetInternetDestinationIdL();
-
-            if ( destId )
-                {
-                aDCSetting.iType = ECmDefConnDestination;
-                aDCSetting.iId = destId;                
-                }
-            else
-                {                
-                // Internet destination not found. Initialise to zero.
-                aDCSetting.iType = TCmDefConnType ( 0 );
-                aDCSetting.iId = 0;
-                }    
-
-            CLOG_WRITE( "Default Connection read FAILED, storing Always Ask! " );
-            ReplaceDefConnRecordL( aDCSetting );
-            }
-        CleanupStack::PopAndDestroy( defConnRecordSet );
-        }
-    else
-        {
-        CLOG_WRITE( "Default Connection NOT supported, leaving with KErrNotSupported" );
-        User::Leave(KErrNotSupported);
-        }
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::WriteDefConnWoTransL()
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::WriteDefConnWoTransL( const TCmDefConnValue& aDCSetting )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::WriteDefConnWoTransL" );
-
-    if ( IsDefConnSupported() )
-        {
-        ReplaceDefConnRecordL( aDCSetting );
-        }
-    else
-        {
-        CLOG_WRITE( "Default Connection NOT supported, leaving with KErrNotSupported" );
-        User::Leave(KErrNotSupported);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::ReadDefConnL()
-// -----------------------------------------------------------------------------
-//
-void CCmManagerImpl::ReadDefConnL( TCmDefConnValue& aDCSetting )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::ReadDefConn" );
-
-    if ( IsDefConnSupported() )
-        {
-        OpenTransactionLC();
-        CMDBRecordSet<CCDDefConnRecord>* defConnRecordSet = 
-               new ( ELeave ) CMDBRecordSet<CCDDefConnRecord>( iDefConnTableId );
-        CleanupStack::PushL( defConnRecordSet );
-     
-        TRAPD( err,  defConnRecordSet->LoadL( Session() ) );
-        if (err == KErrNone)
-            {
-             TInt mode = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], 
-                                             KCDTIdDefConnType );
-              aDCSetting.iType= TCmDefConnType ( mode );
-            
-            aDCSetting.iId = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], 
-                                             KCDTIdDefConnUid );
-            CleanupStack::PopAndDestroy( defConnRecordSet );
-            RollbackTransaction();                                 
-            }
-        else
-            {
-            //deleting old record, writing Always Ask (default value)
-            //aDCSetting.iType = ECmDefConnAlwaysAsk;
-            //aDCSetting.iId = 0;
-            
-            TUint32 destId = GetInternetDestinationIdL();
-
-            if ( destId )
-                {
-                aDCSetting.iType = ECmDefConnDestination;
-                aDCSetting.iId = destId;                
-                }
-            else
-                {                
-                // Internet destination not found. Initialise to zero.
-                aDCSetting.iType = TCmDefConnType ( 0 );
-                aDCSetting.iId = 0;
-                }    
-
-            CLOG_WRITE( "Default Connection read FAILED, storing Always Ask! " );
-            ReplaceDefConnRecordL( aDCSetting );
-            
-            CleanupStack::PopAndDestroy( defConnRecordSet );
-            CommitTransactionL( KErrNone );
-            }
-        }
-    else
-        {
-        CLOG_WRITE( "Default Connection NOT supported" );
-        User::Leave(KErrNotSupported);
-        }
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::ReplaceDefConnRecordL()
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::ReplaceDefConnRecordL( const TCmDefConnValue aDCSetting )
-    {
-    	
-    LOGGER_ENTERFN( "CCmManagerImpl::ReplaceDefConnRecordL" );	
-    // Check the Id first (that it exists)
-    if ( aDCSetting.iType == ECmDefConnConnectionMethod )
-        {
-        CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord *>
-                                  ( CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
-        CleanupStack::PushL( iapRecord );
-        iapRecord->SetRecordId( aDCSetting.iId );
-        TRAPD( err, iapRecord->LoadL( Session() ) );
-        if ( err == KErrNotFound )
-            {
-            User::Leave( KErrArgument );
-            }
-        CleanupStack::PopAndDestroy( iapRecord );
-        
-        // Check that Connection Method is not hidden
-        if ( GetConnectionMethodInfoBoolL( aDCSetting.iId, ECmHidden ) )
-            {
-            User::Leave( KErrArgument );
-            }
-        }
-    else if ( aDCSetting.iType == ECmDefConnDestination )
-        {
-        TUint32 destId = GetInternetDestinationIdL();
-        
-        // Allow empty Internet destination, others must have some content
-        if ( destId != aDCSetting.iId )
-            {
-            CCDAccessPointRecord* destAPRecord = static_cast<CCDAccessPointRecord *>(
-                           CCDRecordBase::RecordFactoryL( KCDTIdAccessPointRecord ) );
-            CleanupStack::PushL( destAPRecord );
-            
-            destAPRecord->iRecordTag = aDCSetting.iId;
-            if ( !destAPRecord->FindL( Session() ) )
-                {
-                User::Leave( KErrArgument );
-                }
-            CleanupStack::PopAndDestroy( destAPRecord );
-         		}
-        }
-
-    TInt ret = KErrNone;
-    TCmGenConnSettings genConnSettings;
-    
-    SetGenConnSettingsToDefault( genConnSettings );
-
-    CMDBRecordSet<CCDDefConnRecord>* defConnRecordSet = 
-           new ( ELeave ) CMDBRecordSet<CCDDefConnRecord>( iDefConnTableId );
-    CleanupStack::PushL( defConnRecordSet );
-    
-    TRAP( ret, defConnRecordSet->LoadL( Session() ) );
-    
-    if (ret == KErrNone)
-        {
-        TInt value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdUsageOfWlan );
-        genConnSettings.iUsageOfWlan = TCmUsageOfWlan( value );
-
-        value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdCellularDataUsageHome );
-        genConnSettings.iCellularDataUsageHome = TCmCellularDataUsage( value );
-
-        value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdCellularDataUsageVisitor );
-        genConnSettings.iCellularDataUsageVisitor = TCmCellularDataUsage( value );
-        }
-
-    TInt typeVal = aDCSetting.iType;
-    TInt uidVal = aDCSetting.iId;
-
-    // Delete the old record
-    for ( TInt i = 0; i < defConnRecordSet->iRecords.Count(); ++i )
-        {
-        defConnRecordSet->iRecords[i]->DeleteL( Session() );
-        }
-    CleanupStack::PopAndDestroy( defConnRecordSet );
-
-    CCDDefConnRecord* dcRcd = 
-        new (ELeave) CCDDefConnRecord( iDefConnTableId );
-    CleanupStack::PushL( dcRcd ); // 2
-            
-    dcRcd->SetRecordId( KCDNewRecordRequest );
-
-    SET_INT_FIELD(dcRcd, KCDTIdUsageOfWlan, genConnSettings.iUsageOfWlan );
-    SET_INT_FIELD(dcRcd, KCDTIdCellularDataUsageHome, genConnSettings.iCellularDataUsageHome );
-    SET_INT_FIELD(dcRcd, KCDTIdCellularDataUsageVisitor, genConnSettings.iCellularDataUsageVisitor );
-
-    CLOG_WRITE_FORMAT( "Set default connection type: [%d]", typeVal );
-    SET_INT_FIELD(    dcRcd, 
-                        KCDTIdDefConnType, 
-                        typeVal );
-    CLOG_WRITE_1( "Set uid: [%d]", uidVal );
-    SET_INT_FIELD(  dcRcd, 
-                    KCDTIdDefConnUid, 
-                    uidVal );
-    dcRcd->StoreL( Session() );    
-    CleanupStack::PopAndDestroy( dcRcd );
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::WriteDefConnL()
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::WriteDefConnL( const TCmDefConnValue& aDCSetting )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::WriteDefConnL" );
-    
-    if ( ( aDCSetting.iType == ECmDefConnAlwaysAsk ) ||
-         ( aDCSetting.iType == ECmDefConnAskOnce ) )
-        {
-        User::Leave( KErrNotSupported );
-        }
-    
-    if ( IsDefConnSupported() )
-        {
-        OpenTransactionLC();
-
-        ReplaceDefConnRecordL( aDCSetting );
-        CommitTransactionL( KErrNone );
-        }
-    else
-        {
-        CLOG_WRITE( "Default Connection NOT supported, leaving with KErrNotSupported" );
-        User::Leave(KErrNotSupported);
-        }
-    }
-    
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::IsDefConnSupported()
-//-----------------------------------------------------------------------------
-//
-TBool CCmManagerImpl::IsDefConnSupported(  )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::IsDefConnSupported" );
-
-    return iDefConnSupported;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::ReadGenConneSettingsL()
-// -----------------------------------------------------------------------------
-//
-void CCmManagerImpl::ReadGenConnSettingsL( TCmGenConnSettings& aGenConnSettings )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::ReadGenConnSettingsL" );
-
-    OpenTransactionLC();
-    CMDBRecordSet<CCDDefConnRecord>* defConnRecordSet = 
-        new ( ELeave ) CMDBRecordSet<CCDDefConnRecord>( iDefConnTableId );
-    CleanupStack::PushL( defConnRecordSet );
-     
-    defConnRecordSet->LoadL( Session() );
-
-    TInt value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdUsageOfWlan );
-    aGenConnSettings.iUsageOfWlan = TCmUsageOfWlan( value );
-
-    value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdCellularDataUsageHome );
-    aGenConnSettings.iCellularDataUsageHome = TCmCellularDataUsage( value );
-
-    value = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdCellularDataUsageVisitor );
-    aGenConnSettings.iCellularDataUsageVisitor = TCmCellularDataUsage( value );
-            
-    CleanupStack::PopAndDestroy( defConnRecordSet );
-    RollbackTransaction();
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::ReplaceGenConnSettingsL()
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::ReplaceGenConnSettingsL( const TCmGenConnSettings& aGenConnSettings )
-    {
-    
-    LOGGER_ENTERFN( "CCmManagerImpl::ReplaceGenConnSettingsL" );	
-    	
-    TInt ret = KErrNone;
-    TCmDefConnValue defConn;
-
-    defConn.iType = TCmDefConnType ( 0 );
-    defConn.iId = 0;
-    
-    CMDBRecordSet<CCDDefConnRecord>* defConnRecordSet = 
-           new ( ELeave ) CMDBRecordSet<CCDDefConnRecord>( iDefConnTableId );
-    CleanupStack::PushL( defConnRecordSet );
-    
-    TRAP(ret, defConnRecordSet->LoadL(Session()));
-    
-    if (ret == KErrNone)
-        {
-        TInt type = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdDefConnType);
-        defConn.iType = TCmDefConnType( type );
-        TInt id = QUERY_INT_FIELD( defConnRecordSet->iRecords[0], KCDTIdDefConnUid);
-        defConn.iId = id;
-        }
-    
-    TInt usageOfNewWlan = aGenConnSettings.iUsageOfWlan;
-    TInt cellularDataUsageHome    = aGenConnSettings.iCellularDataUsageHome;
-    TInt cellularDataUsageVisitor = aGenConnSettings.iCellularDataUsageVisitor;
-    
-    // Delete the old record
-    for ( TInt i = 0; i < defConnRecordSet->iRecords.Count(); ++i )
-        {
-        defConnRecordSet->iRecords[i]->DeleteL( Session() );
-        }
-    CleanupStack::PopAndDestroy( defConnRecordSet );
-
-    CCDDefConnRecord* dcRcd = 
-        new (ELeave) CCDDefConnRecord( iDefConnTableId );
-    CleanupStack::PushL( dcRcd ); // 2
-            
-    dcRcd->SetRecordId( KCDNewRecordRequest );
-
-    SET_INT_FIELD(dcRcd, KCDTIdDefConnType, defConn.iType);
-    SET_INT_FIELD(dcRcd, KCDTIdDefConnUid, defConn.iId);
-
-    CLOG_WRITE_1( "Set wlan usage: [%d]", usageOfNewWlan );
-    SET_INT_FIELD(dcRcd, KCDTIdUsageOfWlan, usageOfNewWlan );
-
-    CLOG_WRITE_1( "Set cellularDataUsageHome: [%d]", cellularDataUsageHome );
-    SET_INT_FIELD(dcRcd, KCDTIdCellularDataUsageHome, cellularDataUsageHome );
-
-    CLOG_WRITE_1( "Set cellularDataUsageVisitor: [%d]", cellularDataUsageVisitor );
-    SET_INT_FIELD(dcRcd, KCDTIdCellularDataUsageVisitor, cellularDataUsageVisitor );
-
-    dcRcd->StoreL( Session() );    
-    CleanupStack::PopAndDestroy( dcRcd );
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::WriteGenConnSettingsL()
-//-----------------------------------------------------------------------------
-//
-void CCmManagerImpl::WriteGenConnSettingsL( const TCmGenConnSettings& aGenConnSettings )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::WriteGenConnSettingsL" );    
-
-    OpenTransactionLC();
-
-    ReplaceGenConnSettingsL( aGenConnSettings );
-    CommitTransactionL( KErrNone );
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::IsMemoryLow()
-//-----------------------------------------------------------------------------
-//
-TBool CCmManagerImpl::IsMemoryLow()
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::IsMemoryLow" );
-
-    TBool ret( EFalse );
-    // Any plugin can be used here, because CheckSpaceBelowCriticalLevelL
-    // is defined in their father class CCmPluginBaseEng
-    TRAPD( err, ret = (*iPlugins)[0]->CheckSpaceBelowCriticalLevelL() );
-    if( err != KErrNone )
-        {
-        ret = ETrue;
-        return ret;
-        }
-    return ret;
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::SNAPRecordL
-// -----------------------------------------------------------------------------
-CCDSnapRecord* CCmManagerImpl::SNAPRecordL( TUint32 aRecordId ) const
-    {
-    CCDSnapRecord* record = new (ELeave) CCDSnapRecord( 
-                                 DestinationTableId() );
-
-    if( aRecordId )
-        {
-        record->SetRecordId( aRecordId );
-        
-        CleanupStack::PushL( record );
-        record->LoadL( Session() );
-        CleanupStack::Pop( record );
-        }
-    
-    return record;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::SNAPRecordL
-// -----------------------------------------------------------------------------
-CCDSnapRecord* CCmManagerImpl::CreateSNAPRecordL( TUint32 aRecordId ) const
-    {
-    CCDSnapRecord* record = new (ELeave) CCDSnapRecord( 
-        DestinationTableId() );
-
-    if( aRecordId )
-        {
-        record->SetRecordId( aRecordId );
-        }
-
-    return record;
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmManagerImpl::WrapCmManager()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C void CCmManagerImpl::WrapCmManager( RCmManagerExt& aCmManagerExt )
-    {
-    aCmManagerExt.iImplementation = this;
-    }
-
-// --------------------------------------------------------------------------
-// CCmManagerImpl::FilterOutVirtualsL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CCmManagerImpl::FilterOutVirtualsL( RPointerArray<CCmPluginBase>& aCmDataArray )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::FilterOutVirtualsL" );
-
-    TInt count = aCmDataArray.Count();
-    
-    for ( TInt i = 0; i < aCmDataArray.Count(); i++ )
-        {
-        if ( aCmDataArray[i]->GetBoolAttributeL( ECmVirtual ) )
-            {
-            delete aCmDataArray[i];
-            aCmDataArray.Remove(i);
-            i--;
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCmManagerImpl::CreateFlatCMListLC
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CCmManagerImpl::CreateFlatCMListLC( TUint32 aDestinationId , 
-                                                RPointerArray<CCmPluginBase>& aCmArray )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::CreateFlatCMListLC" );
-
-    CreateFlatCMListL(aDestinationId, aCmArray);
-    CleanupResetAndDestroyPushL< RPointerArray<CCmPluginBase> >(aCmArray);
-    }
-    
-// --------------------------------------------------------------------------
-// CCmManagerImpl::CreateFlatCMListL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CCmManagerImpl::CreateFlatCMListL( TUint32 aDestinationId , 
-                                                RPointerArray<CCmPluginBase>& aCmArray )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::CreateFlatCMListL" );
-    // get the uncategorised connection methods
-    if ( aDestinationId == KDestItemUncategorized ) 
-        {
-        AppendUncatCmListLC( aCmArray);
-        }
-    else
-        {
-        // Get the CM ids from the destination
-        AppendCmListLC( aDestinationId, aCmArray );
-        }
-    
-    // get the possible embedded destinations to be able to list their content, too
-    // we only have to check in cmArray
-    // put them in a sep. array and get their data into another.    
-    TInt cmCount = aCmArray.Count();
-    RArray<TUint32> cmEmbDestArray ( KCmArrayMediumGranularity );
-    CleanupClosePushL( cmEmbDestArray );
-    for ( TInt i = 0; i < cmCount; i++ )
-        {
-        if ( aCmArray[i]->GetBoolAttributeL( ECmDestination ) )
-            {
-            cmEmbDestArray.AppendL( aCmArray[i]->GetIntAttributeL( ECmId ) );
-            //remove embedded destination right now
-            delete aCmArray[i];
-            aCmArray.Remove(i);
-           // i--;
-            }
-        }
-    // now we stored the needed emb.dest, 
-    // we can filter out all virtual ones
-    //iCmManager.FilterOutVirtualsL( cmArray ); //no filtering here, we can do it later
-    
-    // now we have the list of emb.dest. inside current destination, 
-    // now get their CM's data appended to one flat list
-    RPointerArray<CCmPluginBase> cmLinkedDataArray ( KCmArrayMediumGranularity );
-    CleanupResetAndDestroyPushL< RPointerArray<CCmPluginBase> >( cmLinkedDataArray );
-    TInt embdestcount = cmEmbDestArray.Count();
-    for ( TInt i = 0; i < embdestcount; i++ )
-        {
-        // get the list of CM's
-        CCmPluginBase* emdestcm = 
-                    GetConnectionMethodL( cmEmbDestArray[i] );
-        CleanupStack::PushL( emdestcm );
-        TUint destUid = emdestcm->Destination()->Id();
-        AppendCmListL( destUid, cmLinkedDataArray );
-        CleanupStack::PopAndDestroy( emdestcm );    
-        }
-    // filter out virtuals
-    //iCmManager.FilterOutVirtualsL( cmLinkedDataArray ); //still no filtering here
-
-    // now we have the original, sorted list and an unsorted cmLinkedDataArray,
-    // add each element to original array with sorting
-
-    CombineArraysForPriorityOrderL( aCmArray, cmLinkedDataArray );
-
-    // now we do no longer need the linked array
-    CleanupStack::Pop( &cmLinkedDataArray );   // don't destroy the cm objects!
-    
-    cmLinkedDataArray.Close();                 // they are appended to aCmArray!!!
-    CleanupStack::PopAndDestroy( &cmEmbDestArray ); 
-    
-    CleanupStack::Pop(&aCmArray);     
-    }
-    
-// --------------------------------------------------------------------------
-// CCmManagerImpl::CombineCmListsL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CCmManagerImpl::CombineArraysForPriorityOrderL( 
-                                        RPointerArray<CCmPluginBase>& aCmArray , 
-                                        RPointerArray<CCmPluginBase>& aCmLinkedArray )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::CombineArraysForPriorityOrderL" );
-
-    // now we have two arrays, the first is sorted as needed,
-    // the second is not.
-    // we have to insert the items from the second to the first into their 
-    // correct position based on the bearer type priorities
-    
-    // so loop on the second array, and for ech element, find it's place
-    TInt count = aCmLinkedArray.Count();
-    for ( TInt i = 0; i < count; i++ )
-        {
-        TUint32 linkedpriority( aCmLinkedArray[i]->GetIntAttributeL( ECmDefaultPriority ) );
-        // InsertItemL( aCmArray, aCmLinkedArray[i]);
-        // higher priority means smaller number
-        // if same priority elements exist, then 
-        // - we need to insert our element inside the elements 
-        //   of the same priority according to 
-        //   bearetypes and extension levels
-        // or before the first element having higher priority numbers.
-        TInt cc = aCmArray.Count();
-        if ( cc )
-            {
-            TInt ii = 0;
-            for ( ; ii < cc; ii++ )
-                {
-                if ( linkedpriority < aCmArray[ii]->GetIntAttributeL( ECmDefaultPriority ) )
-                    {
-                    // the next element already has larger number, 
-                    // we must insert it HERE
-                    break;
-                    }
-                else
-                    {
-                    // priorities either same, then we need to check bearer, 
-                    // ext.level, etc
-                    // or we simply still need to go to next element
-                    if ( linkedpriority == aCmArray[ii]->GetIntAttributeL( ECmDefaultPriority ))
-                        {
-                        // check if the same bearer
-                        if ( aCmArray[ii]->GetIntAttributeL( ECmBearerType ) == 
-                                    aCmLinkedArray[i]->GetIntAttributeL( ECmBearerType ) )
-                            {
-                            // we need to find the last one of these bearers, 
-                            // and insert after the last one
-                            do
-                                {
-                                ii++;
-                                }while ( ( ii < cc )
-                                        &&  (aCmArray[ii]->GetIntAttributeL( ECmBearerType ) == 
-                                            aCmLinkedArray[i]->GetIntAttributeL( ECmBearerType )) );
-                            // now we either found a correct place or 
-                            // we are at the end of the list
-                            break;
-                            }
-                        else
-                            {
-                            // diff. bearers, check Ext.level
-                            if ( aCmArray[ii]->GetIntAttributeL( ECmExtensionLevel ) < aCmLinkedArray[i]->GetIntAttributeL( ECmExtensionLevel ) )
-                                {
-                                break;
-                                }
-                            // if not, then go for the next one...
-                            }
-                        }
-                    }
-                }
-                // now we either found a correct place or 
-                // we are at the end of the list
-                // ( we break-ed for cycle when found the correct place )
-                if ( ii == cc )
-                    {
-                    // end of the list, append
-                    aCmArray.AppendL( aCmLinkedArray[i]);
-                    }
-                else
-                    {
-                    // we found the place to be inserted
-                    aCmArray.InsertL( aCmLinkedArray[i], ii );
-                    }   
-            }
-        else
-            {
-            // no elements in original array yet, 
-            // so simply append
-            aCmArray.AppendL( aCmLinkedArray[i]);
-            }
-        }
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmManagerImpl::ParentDestinationL
-// --------------------------------------------------------------------------
-//
-TUint32 CCmManagerImpl::ParentDestinationL( TUint32 aCmId )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::ParentDestinationL" );
-
-    TUint32 retval(0);
-    
-    TUint32 destTblId = DestinationTableId();
-    CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>*  ptrRecordSet =
-         new (ELeave) CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>( 
-                                                                destTblId );
-    CleanupStack::PushL( ptrRecordSet );
-
-    // Prime record
-    CCDDataMobilitySelectionPolicyRecord* record = 
-                          new (ELeave) CCDDataMobilitySelectionPolicyRecord( 
-                                                        DestinationTableId() );
-    CleanupStack::PushL( record );
-    
-    record->iIAP = IAP_ELEMENT_ID( aCmId );
-    ptrRecordSet->iRecords.AppendL( record );
-    
-    CleanupStack::Pop( record );
-    record = NULL;
-            
-    if ( ptrRecordSet->FindL(Session()) )
-        {
-        // we have a match
-        retval = QUERY_INT_FIELD( (*ptrRecordSet)[0],
-                             KCDTIdDataMobilitySelectionPolicyNetwork );
-        
-        }
-    CleanupStack::PopAndDestroy( ptrRecordSet );        
-
-    return retval;
-    }
-
-// --------------------------------------------------------------------------
-// CCmManagerImpl::GetInternetDestinationIdL
-// --------------------------------------------------------------------------
-//
-TUint32 CCmManagerImpl::GetInternetDestinationIdL()
-    {
-    
-    LOGGER_ENTERFN( "CCmManagerImpl::GetInternetDestinationIdL" );
-   
-    TUint32 destId = 0;
-    
-    // Get all destinations
-    RArray<TUint32> destIdArray( KCmArrayBigGranularity );
-    AllDestinationsL( destIdArray );
-    CleanupClosePushL( destIdArray );
-    
-    CCmDestinationImpl* dest = NULL;
-    
-    for ( TInt i = 0; i < destIdArray.Count(); i++ )
-        {
-        dest = DestinationL( destIdArray[i] );
-        CleanupStack::PushL( dest );
-        
-        // Check if destination is internet
-        if ( dest->MetadataL(ESnapMetadataInternet) )
-            {
-            destId = destIdArray[i];
-            }
-
-        CleanupStack::PopAndDestroy( dest );
-
-        if ( destId )
-            {
-            break;
-            }
-        }
-        
-    CleanupStack::PopAndDestroy( &destIdArray );    
-    
-    return destId;    
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::SetGenConnSettingsToDefault()
-// -----------------------------------------------------------------------------
-//
-void CCmManagerImpl::SetGenConnSettingsToDefault( TCmGenConnSettings& aGenConnSettings )
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::SetGenConnSettingsToDefault" );	
-    	
-    aGenConnSettings.iUsageOfWlan = ECmUsageOfWlanKnown;
-    aGenConnSettings.iCellularDataUsageHome    = ECmCellularDataUsageAutomatic;
-    aGenConnSettings.iCellularDataUsageVisitor = ECmCellularDataUsageConfirm;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::CheckAvailableSpaceL()
-// -----------------------------------------------------------------------------
-//
-void CCmManagerImpl::CheckAvailableSpaceL()
-    {
-    LOGGER_ENTERFN( "CCmManagerImpl::CheckAvailableSpaceL" );
-    TBool belowCritical = SysUtil::FFSSpaceBelowCriticalLevelL( &(this->iFs), KBytesToWrite );
-    CLOG_WRITE_1( "belowCritical: [%d]", belowCritical );
-    if ( belowCritical )
-        {
-        User::Leave( KErrDiskFull );
-        }
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmManagerImpl::WatcherRegisterL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CCmManagerImpl::WatcherRegisterL( MCmCommsDatWatcher* aWatcher )
-    {
-    iCommsDatIapNotifier->WatcherRegisterL( aWatcher );
-    iCommsDatSnapNotifier->WatcherRegisterL( aWatcher );
-    }
-
-// --------------------------------------------------------------------------
-// CCmManagerImpl::WatcherUnRegister
-// --------------------------------------------------------------------------
-//    
-EXPORT_C void CCmManagerImpl::WatcherUnRegister()
-    {
-    iCommsDatIapNotifier->WatcherUnRegister();
-    iCommsDatSnapNotifier->WatcherUnRegister();
-    }
-
-// --------------------------------------------------------------------------
-// CCmManagerImpl::DestinationStillExistedL
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool CCmManagerImpl::DestinationStillExistedL( CCmDestinationImpl* aDest )
-    {
-    TUint32 destId = aDest->Id();
-    TBool found( EFalse );
-    TInt count;
-    
-    OpenTransactionLC();
-
-    CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>* destRecordSet = 
-           new ( ELeave ) CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>( 
-                                                             iDestinationTableId );
-    CleanupStack::PushL( destRecordSet );
-
-    TRAP_IGNORE( destRecordSet->LoadL( Session() ) );
-    
-    count = destRecordSet->iRecords.Count();
-    
-    for ( TInt i = 0; i < count; ++i )
-        {
-        TInt nwId = QUERY_INT_FIELD( destRecordSet->iRecords[i], 
-                                     KCDTIdDataMobilitySelectionPolicyNetwork );
-        //nwId = RECORD_FROM_ELEMENT_ID( nwId );
-        
-        if(  nwId == destId )
-            {
-            found = ETrue;
-            break;
-            }
-        }
-    
-    CleanupStack::PopAndDestroy( destRecordSet );
-    
-    RollbackTransaction();
-    
-    return found;
-    }
-
-// --------------------------------------------------------------------------
-// CCmManagerImpl::IapStillExistedL
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool CCmManagerImpl::IapStillExistedL( const CCmPluginBaseEng& aPlugin )
-    {
-    TUint32 iapId = aPlugin.GetIntAttributeL( ECmId );
-    CMDBRecordSet<CCDIAPRecord>*  ptrRecordSet = AllIapsL();
-    CleanupStack::PushL( ptrRecordSet );
-
-    TInt iapRecords = ptrRecordSet->iRecords.Count();
-
-    TBool found( EFalse );
-    for ( TInt i = 0; !found && i < iapRecords; i++ )
-        {
-        CCDIAPRecord* iapRecord = (*ptrRecordSet)[i];
-        
-        if( iapRecord->RecordId() == iapId )
-            {
-            found = ETrue;
-            break;
-            }
-        }
-    
-    CleanupStack::PopAndDestroy( ptrRecordSet );
-    
-    return found;
-    }
-
-// --------------------------------------------------------------------------
-// CCmManagerImpl::IsIapStillInDestL
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool CCmManagerImpl::IsIapStillInDestL( 
-        CCmDestinationImpl* aDest, 
-        const CCmPluginBaseEng& aPlugin )
-    {
-    TUint32 iapId = aPlugin.GetIntAttributeL( ECmId );
-    
-    aDest->ReLoadConnectionMethodsL();
-    RArray<TUint32> cmIds;
-    aDest->ConnectMethodIdArrayL( cmIds );
-    CleanupClosePushL( cmIds );
-
-    TBool found( EFalse );
-    for ( TInt i = 0; i < cmIds.Count(); i++ )
-        {
-        if( cmIds[i] == iapId )
-            {
-            found = ETrue;
-            break;
-            }
-        }
-    
-    CleanupStack::PopAndDestroy( &cmIds );
-    
-    return found;
-    }
-
-// --------------------------------------------------------------------------
-// CCmManagerImpl::GetSnapTableIdL
-// --------------------------------------------------------------------------
-//
-TUint32 CCmManagerImpl::GetSnapTableIdL()
-    {
-    TUint32 snapTableId;
-    
-    CMDBSession* db = CMDBSession::NewLC( CMDBSession::LatestVersion() );
-    db->SetAttributeMask( ECDHidden | ECDProtectedWrite );
-
-    snapTableId = CCDDataMobilitySelectionPolicyRecord::TableIdL( *db );
-
-    CleanupStack::PopAndDestroy( db );
-    
-    return snapTableId;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmManagerImpl::IsBearerSpecific()
-// -----------------------------------------------------------------------------
-//
-TBool CCmManagerImpl::IsBearerSpecific( TUint32 aAttribute ) const
-    {
-    TUint32 i = 0;
-    while( KBearerSpecificAttributes[i] != KEndOfArray )
-        {
-        if( KBearerSpecificAttributes[i] == aAttribute )
-            {
-            return ETrue;
-            }
-        i++;
-        }        
-    return EFalse;
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmobjectpool.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,343 +0,0 @@
-/*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CCMObjectPool.
-*
-*/
-
-
-#include "cmobjectpool.h"
-#include "cmmanagerimpl.h"
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-#include <cmconnectionmethoddef.h>
-
-#include <e32def.h>
-#include <e32std.h>
-
-
-//////////////////////////////////////////////////////////////////////
-// Construction/Destruction
-//////////////////////////////////////////////////////////////////////
-const TInt KDestGranularity     = 20;
-const TInt KCMethodGranularity  = 20;
-CCMObjectPool::CCMObjectPool(CCmManagerImpl& aCmManagerImpl) :
-        iCmManagerImpl(aCmManagerImpl),    
-        iDestinationArray(KDestGranularity, 
-            _FOFF(TObjectPoolDestinationItem,iDestinationId)),
-        iConnectionMethodArray(KCMethodGranularity, 
-            _FOFF(TObjectPoolCMItem,iConnectionMethodId))
-    {
-    }
-
-CCMObjectPool::~CCMObjectPool()
-    {
-    // The get and remove functions must be used in pairs
-    // If the arrays have any element here than the client 
-    // of this class made a programming error
-    for (TInt index = 0; index < iDestinationArray.Count(); index++)
-        {
-        delete iDestinationArray[index].iDestinationItem;
-        }    
-    for (TInt index = 0; index < iConnectionMethodArray.Count(); index++)
-        {
-        delete iConnectionMethodArray[index].iConnectionMethodItem;
-        }
-    iDestinationArray.Close();
-    iConnectionMethodArray.Close();
-    }
-
-CCMObjectPool::TObjectPoolDestinationItem::TObjectPoolDestinationItem(
-                        CCmDestinationData*   aDestinationItem, 
-                        TUint32               aDestinationId) : 
-                            iDestinationId(aDestinationId),
-                            iDestinationItem(aDestinationItem)
-    {
-    }
-    
-CCMObjectPool::TObjectPoolCMItem::TObjectPoolCMItem(
-                        CCmPluginBaseEng* aConnectionMethodItem, 
-                        TUint32           aConnectionMethodId) : 
-                            iConnectionMethodId(aConnectionMethodId),
-                            iConnectionMethodItem(aConnectionMethodItem)
-    {
-    }
-
-CCmDestinationImpl* CCMObjectPool::GetDestinationL( TUint32 aDestinationId )
-    {
-    TUint32 destinationId( aDestinationId );
-    if ( destinationId > 0 && destinationId < 255 )
-        {
-        destinationId += KCmDefaultDestinationAPTagId;
-        }
-    TObjectPoolDestinationItem findD( NULL, destinationId );
-    TInt index = iDestinationArray.FindInUnsignedKeyOrder(findD);
-    if (index == KErrNotFound)
-        {
-        // If the destinaton is not in the pool create it than return it.
-        CCmDestinationImpl* dest = CCmDestinationImpl::NewL( iCmManagerImpl, 
-                                                             destinationId );
-        TObjectPoolDestinationItem aDest( 
-            dest->GetData(),
-            destinationId );
-        User::LeaveIfError(
-            iDestinationArray.InsertInUnsignedKeyOrder(aDest));
-        dest->IncrementRefCounter();
-        return dest;
-        }
-    else
-        {
-        // If the destination is allready in the pool than return it.
-        CCmDestinationImpl* dest = CCmDestinationImpl::NewL( iCmManagerImpl, 
-                                iDestinationArray[index].iDestinationItem );
-        iDestinationArray[index].iDestinationItem->IncrementRefCounter();
-        return dest;    
-        }
-    }
-
-CCmPluginBase* CCMObjectPool::GetConnectionMethodL( TUint32 aCmId, 
-                                        CCmDestinationImpl* aParentDest )
-    {
-    CCmPluginBase* connMethod = NULL;
-    TObjectPoolCMItem findCM( NULL, aCmId );
-    TInt index = iConnectionMethodArray.FindInUnsignedKeyOrder(findCM);
-    if (index == KErrNotFound)
-        {
-        CCmPluginBaseEng* pluginBaseEng = iCmManagerImpl.DoFindConnMethL(
-                                                        aCmId, aParentDest);        
-        if (!pluginBaseEng) User::Leave(KErrNotFound); //There is no such plugin
-        CleanupStack::PushL( pluginBaseEng );        
-        connMethod = new (ELeave) CCmPluginBase(pluginBaseEng); 
-        CleanupStack::PushL( connMethod );        
-        TObjectPoolCMItem aCM( pluginBaseEng, aCmId );
-        User::LeaveIfError(
-            iConnectionMethodArray.InsertInUnsignedKeyOrder(aCM));
-        pluginBaseEng->IncrementRefCounter();
-        CleanupStack::Pop( connMethod );
-        CleanupStack::Pop( pluginBaseEng );
-        }
-    else
-        {
-        // If the cm is allready in the pool than return it.
-        iConnectionMethodArray[index].iConnectionMethodItem->IncrementRefCounter();
-        connMethod = new (ELeave) CCmPluginBase(
-                iConnectionMethodArray[index].iConnectionMethodItem); 
-        }
-    return connMethod;            
-    }
-
-CCmPluginBase* CCMObjectPool::CreateConnectionMethodL( CCmPluginBaseEng* pluginBaseEng )
-    {
-    CCmPluginBase* connMethod = new (ELeave) CCmPluginBase(pluginBaseEng); 
-    CleanupStack::PushL( connMethod );        
-    TObjectPoolCMItem aCM( pluginBaseEng, 0 );//The new id is zero till update
-    User::LeaveIfError(
-        iConnectionMethodArray.InsertInUnsignedKeyOrderAllowRepeats(aCM));
-    pluginBaseEng->IncrementRefCounter();
-    CleanupStack::Pop( connMethod );
-    return connMethod;            
-    }
-
-void CCMObjectPool::InsertConnectionMethodL( CCmPluginBaseEng* pluginBaseEng )
-    {       
-    TObjectPoolCMItem aCM( pluginBaseEng, 0 );//The new id is zero till update
-    User::LeaveIfError(
-        iConnectionMethodArray.InsertInUnsignedKeyOrderAllowRepeats(aCM));
-    pluginBaseEng->IncrementRefCounter();
-    }
-
-CCmPluginBase* CCMObjectPool::CreateConnectionMethodL( TUint32 aImplementationUid, 
-                                        TCmPluginInitParam& aParams )
-    {
-    CCmPluginBaseEng* pluginBaseEng = iCmManagerImpl.DoCreateConnectionMethodL(
-                                            aImplementationUid, aParams);
-    CleanupStack::PushL( pluginBaseEng );        
-    CCmPluginBase* connMethod = new (ELeave) CCmPluginBase(pluginBaseEng); 
-    CleanupStack::PushL( connMethod );        
-    TObjectPoolCMItem aCM( pluginBaseEng, 0 );//The new id is zero till update
-    User::LeaveIfError(
-        iConnectionMethodArray.InsertInUnsignedKeyOrderAllowRepeats(aCM));
-    pluginBaseEng->IncrementRefCounter();
-    CleanupStack::Pop( connMethod );
-    CleanupStack::Pop( pluginBaseEng );
-    return connMethod;            
-    }
-
-CCmPluginBase* CCMObjectPool::CreateConnectionMethodL( TUint32 aImplementationUid, 
-                                                       TCmPluginInitParam& aParams,
-                                                       TUint32 aConnMethodId )
-	{
-    CCmPluginBaseEng* pluginBaseEng = iCmManagerImpl.DoCreateConnectionMethodL(
-                                            aImplementationUid, 
-                                            aParams,
-                                            aConnMethodId);
-    CleanupStack::PushL( pluginBaseEng );
-    CCmPluginBase* connMethod = new (ELeave) CCmPluginBase(pluginBaseEng); 
-    CleanupStack::PushL( connMethod );        
-    TObjectPoolCMItem aCM( pluginBaseEng, 0 );//The new id is zero till update
-    User::LeaveIfError(
-        iConnectionMethodArray.InsertInUnsignedKeyOrderAllowRepeats(aCM));
-    pluginBaseEng->IncrementRefCounter();
-    CleanupStack::Pop( connMethod );
-    CleanupStack::Pop( pluginBaseEng );
-    return connMethod;            
-	}
-
-CCmDestinationImpl* CCMObjectPool::GetDestinationL( const TDesC& aName )
-    {
-    // CmManagerImpl.GetDestinationL will leave with KErrAlreadyExists 
-    // if the destination already exists
-    CCmDestinationImpl* destImpl = CCmDestinationImpl::NewL( iCmManagerImpl,
-         aName );
-    // Yet destImpl->Id() == 0
-    TObjectPoolDestinationItem aDest( destImpl->GetData(), destImpl->Id() );
-    // InsertInUnsignedKeyOrderAllowRepeats is used because all
-    // new destinations' Id is zero   
-    User::LeaveIfError(
-        iDestinationArray.InsertInUnsignedKeyOrderAllowRepeats(aDest) );
-    destImpl->IncrementRefCounter();
-    return destImpl;            
-    }
-
-CCmDestinationImpl* CCMObjectPool::CreateDestinationL( const TDesC& aName,
-                                                       TUint32 aDestId )
-    {
-    // CmManagerImpl.GetDestinationL will leave with KErrAlreadyExists 
-    // if the destination already exists
-    CCmDestinationImpl* destImpl = CCmDestinationImpl::NewL( iCmManagerImpl,
-                                                             aName,
-                                                             aDestId);
-    // Yet destImpl->Id() == 0
-    TObjectPoolDestinationItem aDest( destImpl->GetData(), destImpl->Id() );
-    // InsertInUnsignedKeyOrderAllowRepeats is used because all
-    // new destinations' Id is zero   
-    User::LeaveIfError(
-                   iDestinationArray.InsertInUnsignedKeyOrderAllowRepeats(aDest) );
-    destImpl->IncrementRefCounter();
-    return destImpl;            
-    }
-
-
-void CCMObjectPool::RemoveDestination( CCmDestinationData* aDestination )
-    {
-    if (aDestination->IdIsValid())
-        {
-        aDestination->DecrementRefCounter();
-        if (!aDestination->GetRefCounter())
-            {// this was the last reference -> must delete        
-            TObjectPoolDestinationItem findD( NULL, aDestination->Id() );
-            TInt index = iDestinationArray.FindInUnsignedKeyOrder(findD);
-            iDestinationArray.Remove(index);
-            delete aDestination;
-            }        
-        }
-    else
-        { // this is a new destination which hasn't been updated yet
-        // there may be more than one dest with id 0 -> must search by 
-        // iDestinationItem        
-        for (TInt index = 0; index < iDestinationArray.Count(); index++)
-            {
-            if ( iDestinationArray[index].iDestinationItem == 
-                 aDestination )
-                {
-                aDestination->DecrementRefCounter();
-                if (!aDestination->GetRefCounter())
-                    {// this was the last reference -> must delete        
-                    iDestinationArray.Remove(index);
-                    delete aDestination;
-                    }
-                break;    
-                }
-            }                
-        }
-    }
-
-void CCMObjectPool::RemoveDestination( CCmDestinationImpl* aDestination )
-    {
-    RemoveDestination(aDestination->GetData());
-    aDestination->SetData(NULL);
-    }
-
-void CCMObjectPool::DestinationUpdated( CCmDestinationImpl* aDestination )
-    {
-    // there may be more than one dest with id 0 -> must search by 
-    // iDestinationItem        
-    for (TInt index = 0; index < iDestinationArray.Count(); index++)
-        {
-        if ( iDestinationArray[index].iDestinationItem == 
-                aDestination->GetData() )
-            {
-            if (aDestination->IdIsValid()) break; //allready updated
-            iDestinationArray[index].iDestinationId = aDestination->Id();
-            iDestinationArray.SortUnsigned();
-            break;    
-            }
-        }        
-    }
-
-void CCMObjectPool::ConnMethodUpdatedL( CCmPluginBaseEng* aCM )
-    {
-    // there may be more than one dest with id 0 -> must search by 
-    // iDestinationItem        
-    for (TInt index = 0; index < iConnectionMethodArray.Count(); index++)
-        {
-        if ( iConnectionMethodArray[index].iConnectionMethodItem == 
-                aCM )
-            {
-            TInt cmId = aCM->GetIntAttributeL(CMManager::ECmId);
-            iConnectionMethodArray[index].iConnectionMethodId = cmId;
-            iConnectionMethodArray.SortUnsigned();
-            break;    
-            }
-        }        
-    }
-
-void CCMObjectPool::RemoveConnectionMethodL( CCmPluginBase* aCM)
-    {
-    RemoveConnectionMethodL(aCM->Plugin());
-    aCM->SetPlugin(NULL);
-    }
-
-void CCMObjectPool::RemoveConnectionMethodL( CCmPluginBaseEng* aCM)
-    {
-    if (aCM->IdIsValid())
-        {
-        aCM->DecrementRefCounter();
-        if (!aCM->GetRefCounter())
-            {// this was the last reference -> must delete        
-            TUint32 cmId = aCM->GetIntAttributeL(CMManager::ECmId);
-            TObjectPoolCMItem findD( NULL, cmId );
-            TInt index = iConnectionMethodArray.FindInUnsignedKeyOrder(findD);
-            iConnectionMethodArray.Remove(index);
-            delete aCM;
-            }        
-        }
-    else
-        { // this is a new cm which hasn't been updated yet
-        // there may be more than one cm with id 0 -> must search by pointer
-        for (TInt index = 0; index < iConnectionMethodArray.Count(); index++)
-            {
-            if ( iConnectionMethodArray[index].iConnectionMethodItem == aCM )
-                {
-                aCM->DecrementRefCounter();
-                if (!aCM->GetRefCounter())
-                    {// this was the last reference -> must delete        
-                    iConnectionMethodArray.Remove(index);
-                    delete aCM;
-                    }
-                break;    
-                }
-            }
-        }
-    }
-
--- a/cmmanager/cmmgr/Framework/Src/cmpbasesettingsdlg.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1503 +0,0 @@
-/*
-* Copyright (c) 2006 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:  base class for connection method plugin dialogs
-*
-*/
-
-
-// INCLUDE FILES
-
-// System
-#include <cmmanager.rsg>
-#include <aknnavide.h>
-#include <StringLoader.h>
-#include <akntitle.h>
-#include <aknradiobuttonsettingpage.h>
-#include <data_caging_path_literals.hrh>
-#include <akntextsettingpage.h>
-#include <aknpasswordsettingpage.h>
-#include <in_sock.h>
-#include <aknmfnesettingpage.h>
-#include <AknQueryDialog.h>
-#include <featmgr.h>
-
-#include <hlplch.h>
-
-// User
-#include <mcmdexec.h>
-#include <cmpbasesettingsdlg.h>
-#include <cmmanager.h>
-#include <cmpluginbaseeng.h>
-#include "cmmanagerimpl.h"
-#include "cmmanager.hrh"
-#include <cmcommonui.h>
-#include <cmcommonconstants.h>
-#include <cmpsettingsconsts.h>
-#include "cmpluginmultilinedialog.h"
-#include "cmlogger.h"
-#include "ccmdexec.h"
-
-using namespace CMManager;
-
-// Maximum speed mapping
-struct TIPv6DNSMapping
-    {
-    TInt iResId;
-    TInt iSettingValue;
-    };
-
-// Mapping for IPv6 DNS types
-const TIPv6DNSMapping KTIPv6DNSItems[] =
-    {
-    { R_QTN_SET_DNS_SERVERS_AUTOMATIC, EIPv6Unspecified },
-    { R_QTN_SET_IP_WELL_KNOWN,         EIPv6WellKnown },
-    { R_QTN_SET_IP_USER_DEFINED,       EIPv6UserDefined },
-    { 0, 0 }
-    };
-    
-const TUint32 KMaxInt32Length = 10;
-
-// ================= MEMBER FUNCTIONS =======================================
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ConstructAndRunLD
-// Constructs the dialog and runs it.
-// --------------------------------------------------------------------------
-//
-EXPORT_C TInt CmPluginBaseSettingsDlg::ConstructAndRunLD( )
-    {
-    CleanupStack::PushL( this );
-    FeatureManager::InitializeLibL();
-    iHelp = FeatureManager::FeatureSupported( KFeatureIdHelp ); 
-    FeatureManager::UnInitializeLib();
-    ConstructL( R_PLUGIN_BASE_MENUBAR );
-    PrepareLC( R_PLUGIN_BASE_DIALOG );
-    CleanupStack::Pop( this );
-    iSettingIndex = new ( ELeave ) CArrayFixFlat<TUint>( 4 );
-
-    if (!iHasSettingChanged)
-	    {
-        iHasSettingChanged = ETrue;
-        }
-
-    return RunLD();
-    }
-    
-    
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::CmPluginBaseSettingsDlg()
-// --------------------------------------------------------------------------
-//
-EXPORT_C  CmPluginBaseSettingsDlg::CmPluginBaseSettingsDlg( 
-                                          CCmPluginBaseEng& aCmPluginBase ) :
-        iCmPluginBaseEng( aCmPluginBase ),
-        iExitReason( KDialogUserBack ),
-        iResourceReader( *CCoeEnv::Static() ),
-        iIsPossibleToSaveSetting( ETrue ),
-        iHasSettingChanged( EFalse )
-    {
-    }
-   
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::~CApSelectorDialog
-// --------------------------------------------------------------------------
-//
-EXPORT_C CmPluginBaseSettingsDlg::~CmPluginBaseSettingsDlg()
-    {
-    // iModel is deleted by the ListBox because LB owns the model...
-    // of course only after we passed ownership...
-    if ( iNaviDecorator )
-        {
-        delete iNaviDecorator;
-        }
-    if ( iTitlePane )
-        {
-        // set old text back, if we have it...
-        if ( iOldTitleText )
-            {
-            TRAP_IGNORE( iTitlePane->SetTextL( *iOldTitleText ) );
-            delete iOldTitleText;
-            }
-        }       
-    if ( iSettingIndex )
-        {
-        delete iSettingIndex;
-        }
-    iResourceReader.Close();        
-
-    delete iCmdExec;
-    iCmdExec = NULL;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::PreLayoutDynInitL();
-// called by framework before dialog is shown
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::PreLayoutDynInitL()
-    {
-    iListbox = STATIC_CAST( CAknSettingStyleListBox*, 
-                                           Control( KPluginBaseListboxId ) );
-    iListbox->CreateScrollBarFrameL( ETrue );
-    iListbox->ScrollBarFrame()->SetScrollBarVisibilityL
-                    ( CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
-    iListbox->SetListBoxObserver( this );
-
-    HandleListboxDataChangeL();
-    iListbox->HandleItemAdditionL();
-    InitTextsL();
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::UpdateListBoxContentL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::UpdateListBoxContentL()
-    {        
-    // Must save listbox indexes because content will be deleted
-    TInt lastListBoxPos = iListbox->CurrentItemIndex();
-    TInt lastListBoxTopPos = iListbox->TopItemIndex();
-
-    // deleting listbox content
-    MDesCArray* itemList = iListbox->Model()->ItemTextArray();
-    CDesCArray* itemArray = (CDesCArray*)itemList;
-    
-    while ( itemArray->Count() )
-        {
-        itemArray->Delete( 0 );
-        }
-    while ( iSettingIndex->Count() )
-        {
-        iSettingIndex->Delete( 0 );
-        }
-
-    // CONNECTION NAME
-    AppendSettingTextsL( *itemArray, ECmName );
-
-    // BEARER SPECIFIC SETTINGS
-    UpdateListBoxContentBearerSpecificL( *itemArray );
-
-    //-----------------------------------------------------------------------
-    // Handle content changes
-    iListbox->Reset();
-    iListbox->HandleItemAdditionL();
-    
-    // Listbox might not have index
-    if ( lastListBoxPos != -1 )
-        {
-        iListbox->SetCurrentItemIndex( lastListBoxPos );
-        iListbox->SetTopItemIndex( lastListBoxTopPos );
-        }
-    iListbox->DrawNow();
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::AppendSettingTextsL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::AppendSettingTextsL( 
-                                                    CDesCArray& aItemArray,
-                                                    const TInt aSettingItemId,
-                                                    const TInt aValueResId )
-    {
-    HBufC* value = StringLoader::LoadLC( aValueResId );
-
-    AppendSettingTextsL( aItemArray, aSettingItemId, value );
-    
-    CleanupStack::PopAndDestroy( value );
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::AppendSettingTextsL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::AppendSettingTextsL( 
-                                            CDesCArray& aItemArray,
-                                            const TInt aSettingItemId,
-                                            const HBufC* aValueString )
-    {
-    const TCmAttribConvTable* convItem = 
-                        iCmPluginBaseEng.ConvTableItem( aSettingItemId );
-    HBufC* value = NULL;
-    
-    if ( aValueString )
-        {
-        value = (HBufC*)aValueString;
-        }
-    else
-        {
-        if ( convItem->iAttribFlags & EConvNumber )
-            {
-            TUint32 num = iCmPluginBaseEng.GetIntAttributeL( aSettingItemId );
-            
-            if( !num && convItem->iDefSettingResId )
-                {
-                value = StringLoader::LoadL( convItem->iDefSettingResId );
-                }
-            else
-                {
-                value = HBufC::NewL( KMaxInt32Length );
-                value->Des().AppendNum( num );
-
-                TPtr number( value->Des() );
-                AknTextUtils::LanguageSpecificNumberConversion( number );
-                }
-            }
-        else
-            {
-            if( convItem->iAttribFlags & EConv8Bits )
-                // make 16bits copy of this 8bits buffer
-                {
-                HBufC8* value8 = iCmPluginBaseEng.GetString8AttributeL( aSettingItemId );
-                CleanupStack::PushL( value8 );
-                value = HBufC::NewL( value8->Length() );
-                value->Des().Copy( *value8 );
-                CleanupStack::PopAndDestroy( value8 );
-                }
-            else
-                {   
-                value = iCmPluginBaseEng.GetStringAttributeL( aSettingItemId );
-                }
-                
-            if ( convItem->iDefSettingResId )
-                // We have default value in resource.
-                // Check if we have use it, instead of current value.
-                {
-                if ( convItem->iAttribFlags & EConvIPv4 )
-                    // This is an IPv4 text attribute
-                    {
-                    if ( IsUnspecifiedIPv4Address( *value ) )
-                        // Use default value from resource instead of
-                        // displaying unspecified IP address
-                        {
-                        delete value; value = NULL;
-                        }
-                    }
-                else if ( convItem->iAttribFlags & EConvIPv6 )
-                    // This is an IPv4 text attribute
-                    {
-                    }
-                else if( convItem->iAttribFlags & EConvPassword )
-                    // In case of password, we can show only the resource 
-                    // string.
-                    {
-                    delete value; value = NULL;
-                    }
-                else if ( *value == KNullDesC && convItem->iDefSettingResId )
-                    // empty string, but it has a default value in resource
-                    // Use the resource value.
-                    {
-                    delete value; value = NULL;
-                    }
-                    
-                if ( !value )
-                    // use default value from resource.
-                    {
-                    value = StringLoader::LoadL( convItem->iDefSettingResId );
-                    }
-                }
-            }
-
-        CleanupStack::PushL( value );
-        }
-
-    HBufC* title = StringLoader::LoadLC( convItem->iTitleId );
-
-    _LIT( KSettingListFormat, "\t%S\t\t%S" );
-    HBufC* itemTextBuf = HBufC::NewLC( KSettingListFormat().Length() + 
-                                       title->Length() +
-                                       value->Length() + 
-                                       KTxtCompulsory().Length() );
-                                       
-    TPtr itemText = itemTextBuf->Des();
-
-    itemText.Format( KSettingListFormat, title, value ); 
-    
-    // indicator for compulsory settings
-    if ( convItem->iAttribFlags & EConvCompulsory )
-        {
-        itemText.Append( KTxtCompulsory );        
-        }
-        
-    aItemArray.AppendL( itemText );
-    CleanupStack::PopAndDestroy( 2, title ); // itemTextBuf, title
-
-    if ( !aValueString )
-        {
-        CleanupStack::PopAndDestroy( (HBufC*)value );
-        }
-        
-    iSettingIndex->AppendL( aSettingItemId );
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::AppendSettingTextsL
-// --------------------------------------------------------------------------
-//
-
-EXPORT_C void CmPluginBaseSettingsDlg::AppendSettingTextsL(   
-                                              CDesCArray& aItemArray,
-                                              const TInt aSettingItemId,
-                                              const TInt aTitleResId,
-                                              const TInt aValueResId,
-                                              const TBool aCompulsory ) const
-    {
-    HBufC* value = NULL;
-    if ( aValueResId )
-        {
-        value = StringLoader::LoadLC( aValueResId );
-        }
-    else
-        {   
-        value = KNullDesC().AllocL();
-        CleanupStack::PushL( value );
-        }        
-    TPtr ptrValue = value->Des();
-    
-    AppendSettingTextsL( aItemArray, aSettingItemId, 
-                                        aTitleResId, ptrValue, aCompulsory );
-    
-    CleanupStack::PopAndDestroy( value );
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::AppendSettingTextsL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::AppendSettingTextsL(   
-                                              CDesCArray& aItemArray,
-                                              const TInt aSettingItemId,
-                                              const TInt aTitleResId,
-                                              const TDesC& aValueString,
-                                              const TBool aCompulsory ) const
-    {
-    // Title
-    HBufC* title = StringLoader::LoadLC( aTitleResId );
-
-    _LIT( KSettingListFormat, "\t%S\t\t%S" );
-    HBufC* itemTextBuf = HBufC::NewLC( KSettingListFormat().Length() + 
-                                       title->Length() +
-                                       aValueString.Length() + 
-                                       KTxtCompulsory().Length() );
-                                       
-    TPtr itemText = itemTextBuf->Des();
-
-    itemText.Format( KSettingListFormat, title, &aValueString ); 
-    
-    // indicator for compulsory settings
-    if ( aCompulsory )
-        {
-        itemText.Append( KTxtCompulsory );        
-        }
-        
-    aItemArray.AppendL( itemText );
-    CleanupStack::PopAndDestroy( 2, title ); // itemTextBuf, title
-    iSettingIndex->AppendL( aSettingItemId );
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::DynInitMenuPaneL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::DynInitMenuPaneL( 
-                                               TInt aResourceId,
-                                               CEikMenuPane* aMenuPane  )
-    {
-    CAknDialog::DynInitMenuPaneL( aResourceId, aMenuPane );
-        
-    if ( aResourceId == R_PLUGIN_BASE_MENU )
-        {
-    	if (!iHelp)
-            {
-            aMenuPane->DeleteMenuItem( EAknCmdHelp );		    
-            }
-        TInt currentItem = iSettingIndex->At( iListbox->CurrentItemIndex() );
-        if ( currentItem == ECmBearerSettingName )
-            {
-            
-            aMenuPane->SetItemDimmed( EPluginBaseCmdChange, ETrue );
-            }
-        }
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ProcessCommandL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::ProcessCommandL( TInt aCommandId )
-    {
-    if ( MenuShowing() )
-        {
-        HideMenu();
-        }
-
-    switch ( aCommandId )
-        {
-        case EAknSoftkeyOptions:
-            {
-            DisplayMenuL();
-            break;
-            }
-        case EPluginBaseCmdExit:
-            {
-            iExitReason = KDialogUserExit;
-            if( iIsPossibleToSaveSetting && iHasSettingChanged )
-            {
-                iCmPluginBaseEng.UpdateL();
-                iHasSettingChanged = EFalse;
-            }
-
-            TryExitL( iExitReason );
-            break;
-            }
-        case EAknSoftkeyOk:
-        case EAknSoftkeyChange:
-            {
-            // Function CheckSpaceBelowCriticalLevelL may User::Leave with KLeaveWithoutAlert
-            // if no space available to save changes. The User::Leave message will be caught
-            // by iCmdExec. So,it is not caught here.
-            iCmPluginBaseEng.CheckSpaceBelowCriticalLevelL();
-
-            ShowPopupSettingPageL( 
-                    iSettingIndex->At( iListbox->CurrentItemIndex() ), 
-                                        aCommandId );
-
-            break;            
-            }
-        case EAknCmdHelp:
-            {
-            // Help context (the default value) has been set so this value is used.
-            HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
-                                iEikonEnv->EikAppUi()->AppHelpContextL() );
-            }
-            break;
-        default:
-            {
-            break;
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::InitTextsL
-// called before the dialog is shown
-// to initialize localized textual data
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::InitTextsL()
-    {
-    // set pane text if neccessary...
-    // pane text needed if not pop-up...
-    if ( iEikonEnv )
-        {
-        iStatusPane = iEikonEnv->AppUiFactory()->StatusPane();
-        iTitlePane = ( CAknTitlePane* )iStatusPane->ControlL(
-                                TUid::Uid( EEikStatusPaneUidTitle ) );
-
-        iOldTitleText = iTitlePane->Text()->AllocL();
-        HBufC* pdConnName = iCmPluginBaseEng.GetStringAttributeL( ECmName );
-        CleanupStack::PushL( pdConnName ); // 1
-                
-        if ( pdConnName )
-            {
-            iTitlePane->SetTextL( *pdConnName );
-            }
-        else
-            {
-            iTitlePane->SetTextL( KNullDesC );
-            }        
-        CleanupStack::PopAndDestroy( pdConnName ); // 0
-
-
-        iNaviPane = ( CAknNavigationControlContainer* )iStatusPane->ControlL(
-                                        TUid::Uid( EEikStatusPaneUidNavi ) );
-        iNaviDecorator = iNaviPane->CreateNavigationLabelL( KNullDesC );
-        iNaviPane->PushL( *iNaviDecorator );
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::OkToExitL
-// Good to know : EAknSoftkeyCancel is never called, because
-// EEikDialogFlagNotifyEsc flag is not set in the resource.
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool CmPluginBaseSettingsDlg::OkToExitL( TInt aButtonId )
-    {
-    // Translate the button presses into commands for the appui & current
-    // view to handle
-    TBool retval( EFalse );
-    
-    switch ( aButtonId )
-        {
-        case EAknSoftkeyOk:
-        case EAknSoftkeyChange:
-            {
-            ProcessCommandL( aButtonId );
-            break;
-            }        
-        case EAknSoftkeyBack:
-        case EAknSoftkeyExit:
-        case KDialogUserExit:
-            {
-            
-            if ( iIsPossibleToSaveSetting && iHasSettingChanged )
-            {
-                iCmPluginBaseEng.UpdateL();
-                iHasSettingChanged = EFalse;
-            }
-            retval = ETrue;
-            break;
-            }
-        case EAknSoftkeyOptions:
-            {
-            DisplayMenuL();
-            break;
-            }
-        default:
-            {
-            retval = ETrue;
-            break;
-            }
-        }
-
-    return retval;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::HandleListBoxEventL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::HandleListBoxEventL( 
-                        CEikListBox* /*aListBox*/, TListBoxEvent aEventType )
-    {
-    switch ( aEventType )
-        {
-        case EEventEnterKeyPressed:
-        case EEventItemSingleClicked:
-            {
-            if ( !iProcessing )
-                {
-                delete iCmdExec;
-                iCmdExec = NULL;
-                iCmdExec = new (ELeave) CCmdExec(*this);
-                iCmdExec->Execute();
-                }
-            break;
-            }
-        case EEventEditingStarted:
-            {
-            break;
-            }
-        case EEventEditingStopped:
-            {
-            break;
-            }
-        default:
-            {
-            break;
-//            User::Leave( KErrNotSupported );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::OfferKeyEventL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TKeyResponse CmPluginBaseSettingsDlg::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                       TEventCode aType )    
-    {
-    return iListbox->OfferKeyEventL( aKeyEvent, aType );       
-    }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::LoadResourceL
-//---------------------------------------------------------------------------
-//
-EXPORT_C TInt CmPluginBaseSettingsDlg::LoadResourceL ( 
-                                                const TDesC& aResFileName )
-    {
-    TInt err( KErrNone );
-    // Add resource file.
-    TParse* fp = new ( ELeave ) TParse();
-    err = fp->Set( aResFileName, 
-                        &KDC_RESOURCE_FILES_DIR, 
-                        NULL ); 
-    if ( err )
-        {
-        User::Leave( err );
-        }   
-
-    TFileName resourceFileNameBuf = fp->FullName();
-    delete fp;
-
-    iResourceReader.OpenL( resourceFileNameBuf );
-    return err;
-    }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::HandleListboxDataChangeL
-// called before the dialog is shown to initialize listbox data
-//---------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::HandleListboxDataChangeL()
-    {
-    UpdateListBoxContentL();
-    iListbox->HandleItemAdditionL();
-    }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowPopupSettingPageL
-//---------------------------------------------------------------------------
-//
-EXPORT_C TBool CmPluginBaseSettingsDlg::ShowPopupSettingPageL( 
-                                           TUint32 aAttribute, TInt /*aCommandId*/ )
-    {
-    TBool retval( EFalse );
-    
-    switch ( aAttribute )
-        {
-        case ECmBearerSettingName:
-            {
-            TCmCommonUi::ShowNoteL ( R_PLUGIN_BASE_INFO_BEARER_NOT_EDITABLE,
-                                                  TCmCommonUi::ECmInfoNote );
-            break;
-            }
-        case ECmName:
-        default:
-            {
-            retval = ShowPopupTextSettingPageL( aAttribute );
-            break;
-            }
-        }
-    return retval;
-    }
-    
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::SelectItem
-//---------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::SelectItem( TInt aItemIndex )
-    {
-    iListbox->ScrollToMakeItemVisible( aItemIndex );
-    iListbox->SetCurrentItemIndexAndDraw( aItemIndex );
-    }
-    
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::StringAttributeWithDefaultL
-//---------------------------------------------------------------------------
-//
-EXPORT_C HBufC* CmPluginBaseSettingsDlg::StringAttributeWithDefaultL( 
-                                        TUint32 aAttribute, TUint32 aDefRes )
-    {
-    HBufC* value = iCmPluginBaseEng.GetStringAttributeL( aAttribute );
-    if ( *value == KNullDesC )
-        {
-        delete value;
-        value = NULL;
-        value = StringLoader::LoadL( aDefRes );
-        }
-
-    return value;
-    }
-   
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::GetHelpContext
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::GetHelpContext( TCoeHelpContext& aContext ) const
-    {
-    aContext.iMajor = KHelpUidPlugin;
-    aContext.iContext = iHelpContext;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowPopupIpSettingPageL
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool CmPluginBaseSettingsDlg::ShowPopupIpSettingPageL( 
-                                                            TUint32 aAttribute,
-                                                            TUint32 aTitleId )
-    
-    {
-    TBool retval = EFalse;
-    const TCmAttribConvTable* convItem = 
-                        iCmPluginBaseEng.ConvTableItem( aAttribute );
-    
-    HBufC* servName = HBufC::NewLC( convItem->iMaxLength );
-    TPtr ptrServName ( servName->Des() );
-     
-    HBufC* orig = iCmPluginBaseEng.GetStringAttributeL( aAttribute );    
-    CleanupStack::PushL( orig );
-    ptrServName.Copy( *orig );
-    
-    TInetAddr addr;
-    addr.Input( ptrServName );
-    
-    TInt resId = EditorId( convItem->iEditorResId, R_TEXT_SETTING_PAGE_IP );
-    
-    CAknIpFieldSettingPage* dlg = 
-                    new ( ELeave ) CAknIpFieldSettingPage( 
-                                       resId, 
-                                       addr );
-
-    CleanupStack::PushL( dlg );
-    SetTitleL( dlg, convItem->iTitleId, aTitleId );
-    CleanupStack::Pop( dlg );
-
-    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ) )
-        {
-        addr.Output( ptrServName );
-        
-        if ( orig->Des().CompareF( ptrServName ) )
-            // User modified IP address
-            {
-            iCmPluginBaseEng.SetStringAttributeL( aAttribute, ptrServName );
-            retval = ETrue;  
-            UpdateListBoxContentL();                                                                                     
-            }
-        }
-
-    CleanupStack::PopAndDestroy( 2, servName ); // orig, servName
-    return retval;
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowRadioButtonSettingPageL
-// --------------------------------------------------------------------------
-//
-EXPORT_C TInt CmPluginBaseSettingsDlg::ShowRadioButtonSettingPageL( 
-                                                const TUint32* aResIds, 
-                                                TInt& aCurrentItem,
-                                                TUint32 aTitleId )
-    {
-    CDesCArrayFlat* items = 
-                   new ( ELeave ) CDesCArrayFlat( KCmArraySmallGranularity );
-            
-    CleanupStack::PushL( items );
-    TInt count( 0 );       
-    for( ; aResIds[count]; ++count )
-        {
-        HBufC* item = StringLoader::LoadLC( aResIds[count] );
-        items->AppendL( *item );
-        }
-        
-    TUint32 resId = EditorId( 0, R_RADIO_BUTTON_SETTING_PAGE_OK_CANCEL );
-    CAknRadioButtonSettingPage* dlg = 
-                            new ( ELeave ) CAknRadioButtonSettingPage(
-                                    resId,
-                                    aCurrentItem, 
-                                    items );
-    CleanupStack::PushL( dlg );
-    SetTitleL( dlg, 0, aTitleId );
-    CleanupStack::Pop( dlg );
-
-    TBool retVal = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );    
-    
-    CleanupStack::PopAndDestroy( count );   // selection items
-    CleanupStack::PopAndDestroy( items );
-    
-    return retVal;
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowRadioButtonSettingPageL
-// --------------------------------------------------------------------------
-//
-EXPORT_C TInt CmPluginBaseSettingsDlg::ShowRadioButtonSettingPageL( 
-                                                CDesCArrayFlat& aItems, 
-                                                TInt& aCurrentItem,
-                                                TUint32 aTitleId )
-    {
-    TUint32 resId = EditorId( 0, R_RADIO_BUTTON_SETTING_PAGE_OK_CANCEL );
-    CAknRadioButtonSettingPage* dlg = 
-                            new ( ELeave ) CAknRadioButtonSettingPage(
-                                    resId,
-                                    aCurrentItem, 
-                                    &aItems );
-    CleanupStack::PushL( dlg );
-    SetTitleL( dlg, 0, aTitleId );
-    CleanupStack::Pop( dlg );
-
-    TBool retVal = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );    
-
-    return retVal;
-    }
-    
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowPopupTextSettingPageL
-//---------------------------------------------------------------------------
-//
-EXPORT_C TBool CmPluginBaseSettingsDlg::ShowPopupTextSettingPageL( 
-                                                            TUint32 aAttribute,
-                                                            TUint32 aTitleId )
-    {    
-    TBool retval( EFalse );
-    const TCmAttribConvTable* convItem = 
-                        iCmPluginBaseEng.ConvTableItem( aAttribute );
-    
-    HBufC* textToChange = HBufC::NewLC( convItem->iMaxLength );
-    TPtr ptrTextToChange( textToChange->Des() );
-
-    HBufC* value = HBufC::NewLC( convItem->iMaxLength );
-    if ( convItem->iAttribFlags & EConv8Bits )
-        // convert 8bits attribute to 16bits
-        {
-        HBufC8* stringFromCm = 
-                iCmPluginBaseEng.GetString8AttributeL( aAttribute );
-        value->Des().Copy( *stringFromCm );
-
-        delete stringFromCm; stringFromCm = NULL;
-        }
-    else
-        {
-        HBufC* stringFromCm = 
-                iCmPluginBaseEng.GetStringAttributeL( aAttribute );
-        value->Des().Copy( *stringFromCm );
-
-        delete stringFromCm; stringFromCm = NULL;
-        }
-        
-    if( *value == KNullDesC && convItem->iDefValueResId )
-        // empty string is replaced with the default value from resource
-        {
-        HBufC* stringFromCm = StringLoader::LoadL( convItem->iDefValueResId );
-                
-        value->Des().Copy( *stringFromCm );
-
-        delete stringFromCm; stringFromCm = NULL;
-        }
-   
-    TPtr ptrValue( value->Des() );
-    ptrTextToChange.Copy( ptrValue );
-    
-    TInt textSettingPageFlags( EAknSettingPageNoOrdinalDisplayed );
-    
-    if ( !(convItem->iAttribFlags & EConvNoZeroLength) )
-        {
-        textSettingPageFlags = CAknTextSettingPage::EZeroLengthAllowed;
-        }
-
-    TUint32 resId = EditorId( convItem->iEditorResId, 0 );
-
-    CAknTextSettingPage* dlg = new ( ELeave ) CAknTextSettingPage( 
-                                    resId, 
-                                    ptrTextToChange, 
-                                    textSettingPageFlags );
-
-    CleanupStack::PushL( dlg );
-    SetTitleL( dlg, convItem->iTitleId, aTitleId );
-    CleanupStack::Pop( dlg );
-
-    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ) )
-        {
-        if ( aAttribute == ECmName )
-            {
-            iTitlePane->SetTextL( ptrTextToChange );                                                                          
-            }
-        if ( ptrTextToChange.Compare( ptrValue ) )
-            // user modified the value
-            {
-            if ( convItem->iAttribFlags & EConv8Bits )
-                // convert back from 16bits to 8bits
-                {
-                HBufC8* stringTo = HBufC8::NewLC( ptrTextToChange.Length() );
-                
-                stringTo->Des().Copy( ptrTextToChange );
-                iCmPluginBaseEng.SetString8AttributeL( aAttribute, *stringTo );
-                                                                   
-                CleanupStack::PopAndDestroy( stringTo );
-                }
-            else
-                {
-                if( aAttribute == ECmName )
-                    {
-                    SetUniqueNameL( ptrTextToChange );
-                    }
-                else
-                    {
-                    iCmPluginBaseEng.SetStringAttributeL( aAttribute, 
-                                                      ptrTextToChange );
-                    }    
-                }
-                
-            retval = ETrue;
-            UpdateListBoxContentL();
-            }
-        }
-
-    CleanupStack::PopAndDestroy( 2, textToChange );
-    return retval;
-    }
-
-
-void CmPluginBaseSettingsDlg::SetUniqueNameL( TPtr aPtrTextToChange )
-    {
-     // Saves the recent naming method and set it to "Not accept"
-    TUint32 savedNM = iCmPluginBaseEng.GetIntAttributeL( ECmNamingMethod );
-    iCmPluginBaseEng.SetIntAttributeL( ECmNamingMethod, ENamingNotAccept );
-
-    // Tries to save the nem name. If it is not unique
-    // then ret == KErrArgument
-    TRAPD( err, iCmPluginBaseEng.SetStringAttributeL( ECmName, aPtrTextToChange ) );
-
-    if( KErrArgument == err )
-        {
-        // Opens a info note
-        HBufC* noteLine = StringLoader::LoadLC(
-                    R_CMMANAGERUI_INFO_DEST_ALREADY_IN_USE, aPtrTextToChange );
-
-        TCmCommonUi::ShowNoteL( *noteLine, TCmCommonUi::ECmInfoNote );
-
-        CleanupStack::PopAndDestroy( noteLine );
-        }
-
-    // Sets back the original naming method
-    iCmPluginBaseEng.SetIntAttributeL( ECmNamingMethod, savedNM );
-    }
-
-
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowPopupPasswordSettingPageL
-//---------------------------------------------------------------------------
-//
-EXPORT_C TBool CmPluginBaseSettingsDlg::ShowPopupPasswordSettingPageL( 
-                                                        TUint32 aAttribute,
-                                                        TUint32 aTitleId )
-    {
-    TBool retVal( EFalse );
-
-    const TCmAttribConvTable* convItem = 
-                        iCmPluginBaseEng.ConvTableItem( aAttribute );
-    HBufC* newPassword = HBufC::NewLC( KCmMaxPasswordLength );
-    TPtr16 ptrNewPassword = newPassword->Des();
-    
-    HBufC* oldPassword = NULL;
-    oldPassword = iCmPluginBaseEng.GetStringAttributeL( aAttribute );
-    CleanupStack::PushL( oldPassword );   
-    
-    TUint32 resId = EditorId( convItem->iEditorResId, 
-                              R_TEXT_SETTING_PAGE_PASSWD );
-    CAknAlphaPasswordSettingPage* dlg = 
-                    new ( ELeave ) CAknAlphaPasswordSettingPage(
-                                            resId,
-                                            ptrNewPassword,
-                                            *oldPassword );
-    CleanupStack::PushL( dlg );
-    SetTitleL( dlg, convItem->iTitleId, aTitleId );
-    CleanupStack::Pop( dlg );
-
-    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
-        {
-        iCmPluginBaseEng.SetStringAttributeL( aAttribute, newPassword->Des() );
-        UpdateListBoxContentL();
-
-        retVal = ETrue;
-        }
-    CleanupStack::PopAndDestroy( 2, newPassword );
-    
-    return retVal;
-    }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowNumSettingPageL
-//---------------------------------------------------------------------------
-//
-EXPORT_C TBool CmPluginBaseSettingsDlg::ShowPopupPortNumSettingPageL( 
-                                    TUint32 aAttribute, TUint32 aTitleId )
-    {
-    TBool retVal( EFalse );
-    const TCmAttribConvTable* convItem = 
-                        iCmPluginBaseEng.ConvTableItem( aAttribute );
-
-    TInt value( 0 );
-    value = iCmPluginBaseEng.GetIntAttributeL( aAttribute );
-
-    TInt origVal = value;
-    
-    HBufC* buf = HBufC::NewLC( convItem->iMaxLength );
-    TPtr ptr( buf->Des() );
-    
-    ptr.Num( value );
-    
-    TInt flags = EAknSettingPageNoOrdinalDisplayed;
-    
-    if ( !(convItem->iAttribFlags & EConvNoZeroLength) )
-        {
-        flags |= CAknTextSettingPage::EZeroLengthAllowed;
-        }
-    
-    TUint32 resId = EditorId( convItem->iEditorResId, 
-                              R_PORT_NUMBER_SETTING_PAGE );
-    CAknTextSettingPage* dlg = new ( ELeave ) CAknTextSettingPage( 
-                                    resId,
-                                    ptr, 
-                                    flags );
-
-    CleanupStack::PushL( dlg );
-    SetTitleL( dlg, convItem->iTitleId, aTitleId );
-    CleanupStack::Pop( dlg );
-
-    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ) )
-        {
-        TLex lex ( buf->Des() );
-
-        // An empty string should be treated as default        
-        if ( buf->Des() == KNullDesC )
-            {
-            value = 0;
-            }
-        else
-            {
-            lex.Val( value );
-            }
-        if ( value != origVal )
-            {
-            iCmPluginBaseEng.SetIntAttributeL( aAttribute, value );
-            retVal = ETrue;
-            UpdateListBoxContentL();
-            }
-        }
-        
-    CleanupStack::PopAndDestroy( buf );
-    return retVal;
-    }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowPopupIPv4DNSEditorL
-//---------------------------------------------------------------------------
-//
-EXPORT_C TBool CmPluginBaseSettingsDlg::ShowPopupIPv4DNSEditorL(
-                                            TUint32 aDNSUsageAttribute,
-                                            TUint32 aDNS1ServAttribute,
-                                            TUint32 aDNS2ServAttribute,
-                                            TUint32 aTitleId )
-    {
-    // In default the return value is 'Automatic'
-    TBool retVal( EFalse );
-    // In default DNS setting is automatic.
-    const TCmAttribConvTable* convItem = 
-                        iCmPluginBaseEng.ConvTableItem( aDNSUsageAttribute );
-
-    HBufC* primServ = iCmPluginBaseEng.GetStringAttributeL( aDNS1ServAttribute );
-    CleanupStack::PushL( primServ );
-    HBufC* secServ = iCmPluginBaseEng.GetStringAttributeL( aDNS2ServAttribute );
-    CleanupStack::PushL( secServ );
-    
-    TBuf<KIpAddressWidth> newPrim;
-    TBuf<KIpAddressWidth> newSec;
-    
-    newPrim.Copy( *primServ );
-    newSec.Copy( *secServ );
-    
-    TInetAddr dns1Addr;
-    TInetAddr dns2Addr;
-    
-    dns1Addr.Input( newPrim );
-    dns2Addr.Input( newSec );
-    
-    CAknMultiLineIpQueryDialog* dlg = 
-            CAknMultiLineIpQueryDialog::NewL( dns1Addr, 
-                                              dns2Addr );
-    
-    CleanupStack::PushL( dlg );
-
-    TUint32 editorId = EditorId( convItem->iEditorResId, R_DNSIP4_QUERY );
-    dlg->PrepareLC( editorId );
-
-    TUint32 titleId = TitleId( convItem->iTitleId, aTitleId );
-    if ( titleId )
-        {
-        dlg->SetTitleL( titleId );
-        }
-        
-    CleanupStack::Pop( dlg );
-    
-    if ( dlg->RunLD() )
-        {
-        dns1Addr.Output( newPrim );
-        dns2Addr.Output( newSec );
-        
-        if ( newPrim.CompareF( *primServ ) ||
-             newSec.CompareF( *secServ ) )
-            // User modified the DNS setting
-            {
-            iCmPluginBaseEng.SetDNSServerAddressL( 
-                                aDNS1ServAttribute,
-                                newPrim,
-                                aDNS2ServAttribute, 
-                                newSec,
-                                aDNSUsageAttribute,
-                                EFalse );
-                
-            UpdateListBoxContentL();
-            
-            retVal = ETrue;
-            }
-        }
-    
-    CleanupStack::PopAndDestroy( 2, primServ );
-    
-    return retVal;
-    }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::ShowPopupIPv6DNSEditorL
-//---------------------------------------------------------------------------
-//
-EXPORT_C TInt CmPluginBaseSettingsDlg::ShowPopupIPv6DNSEditorL(
-                                            const TUint32* aSelectionItems,
-                                            TUint32 aDNSUsageAttribute,
-                                            TUint32 aDNS1ServAttribute,
-                                            TUint32 aDNS2ServAttribute )
-    {
-    TBool update( EFalse );
-    TInt selected = GetIPv6DNSTypeL( aDNS1ServAttribute, aDNS2ServAttribute );
-    
-    // convert the current setting value to the selection index
-    TInt resId = KTIPv6DNSItems[selected].iResId;    
-    TInt i = 0;
-    while ( aSelectionItems[i] )
-        {
-        if ( resId == aSelectionItems[i] )
-            {
-            selected = i;
-            break;
-            }
-        i++;
-        }
-    
-    if ( ShowRadioButtonSettingPageL( aSelectionItems, 
-                                      selected, 
-                                      R_QTN_SET_DNS_SERVERS_IP ) )
-        {
-        // convert the selection to the setting value
-        resId = aSelectionItems[selected];
-        TInt j = 0;
-        
-        while ( KTIPv6DNSItems[j].iResId )
-            {
-            if ( resId == KTIPv6DNSItems[j].iResId )
-                {
-                selected = KTIPv6DNSItems[j].iSettingValue;
-                break;
-                }
-            j++;
-            }
-        
-        switch ( selected )
-            {
-            case EIPv6WellKnown: 
-                {
-                iCmPluginBaseEng.SetStringAttributeL( 
-                        aDNS1ServAttribute, KKnownIp6NameServer1 );
-                iCmPluginBaseEng.SetStringAttributeL( 
-                        aDNS2ServAttribute, KKnownIp6NameServer2 );
-                        
-                iCmPluginBaseEng.SetBoolAttributeL( 
-                        aDNSUsageAttribute, EFalse );
-                        
-                update = ETrue;
-                }
-                break;
-
-            case EIPv6Unspecified: 
-                {
-                iCmPluginBaseEng.SetStringAttributeL( 
-                        aDNS1ServAttribute, KDynamicIpv6Address );
-                iCmPluginBaseEng.SetStringAttributeL( 
-                        aDNS2ServAttribute, KDynamicIpv6Address );               
-                iCmPluginBaseEng.SetBoolAttributeL( 
-                        aDNSUsageAttribute, ETrue );
-                        
-                update = ETrue;
-                }
-                break;
-
-            case EIPv6UserDefined:                 
-                {
-                TInt err1;
-                TInt err2;
-                TBool cancelled(EFalse);
-                do
-                    {
-                    // These has to be reset to KErrNone in case of
-                    // inputting an invalid address (DLAN-7FJD68). 
-                    err1 = KErrNone;
-                    err2 = KErrNone;
-             
-                    HBufC* dns1 = HBufC::NewLC( KMaxIPv6NameServerLength );
-                    HBufC* dns2 = HBufC::NewLC( KMaxIPv6NameServerLength );
-                    
-                    TPtr dns1ptr( dns1->Des() );
-                    TPtr dns2ptr( dns2->Des() );
-                    
-                    HBufC* temp = iCmPluginBaseEng.GetStringAttributeL(
-                                                aDNS1ServAttribute );
-                    dns1ptr.Copy( *temp );
-                    delete temp; temp = NULL;
-                    
-                    temp = iCmPluginBaseEng.GetStringAttributeL( 
-                                                aDNS2ServAttribute );
-                    dns2ptr.Copy( *temp );
-                    delete temp; temp = NULL;
-
-                    // KDynamicIpv6Address is offered instead of empty string 
-                    if ( dns1ptr.Length() == 0 )
-                        { 
-                        dns1ptr = KDynamicIpv6Address;
-                        }
-                    if ( dns2ptr.Length() == 0 )
-                        { 
-                        dns2ptr = KDynamicIpv6Address;
-                        }
-
-                        
-                    if ( ( dns1ptr.Compare( KKnownIp6NameServer1 ) == 0 ) && 
-                         ( dns2ptr.Compare( KKnownIp6NameServer2 ) == 0 ) )
-                        { // special value, well-known
-                        // in this case 'dynamic' string must be offered so 
-                        // temp data must be changed to 'dynamic'
-                        dns1ptr = KDynamicIpv6Address;
-                        dns2ptr = KDynamicIpv6Address;
-                        }
-
-                    CCmPluginMultiLineDialog* ipquery = 
-                        CCmPluginMultiLineDialog::NewL( dns1ptr, 
-                                                        dns2ptr );
-
-                    if ( ipquery->ExecuteLD( R_DNSIP6_QUERY ) )
-                        {
-                        TInetAddr dns1Addr;
-                        TInetAddr dns2Addr;
-
-                        if ( dns1ptr.Compare( KNullDesC ) )
-                            {
-                            err1 = dns1Addr.Input( dns1ptr );
-                            }
-                        if ( dns2ptr.Compare( KNullDesC ) )
-                            {
-                            err2 = dns2Addr.Input( dns2ptr );
-                            }
-                        if ( err1 || err2 )
-                            {
-                            TCmCommonUi::ShowNoteL
-                                ( R_QTN_SET_INFO_INVALID_IP,
-                                TCmCommonUi::ECmErrorNote );
-                            }
-                        else
-                            {
-                            iCmPluginBaseEng.SetDNSServerAddressL( 
-                                                aDNS1ServAttribute,
-                                                dns1ptr,
-                                                aDNS2ServAttribute, 
-                                                dns2ptr,
-                                                aDNSUsageAttribute,
-                                                ETrue );
-
-                            update = ETrue;
-                            }
-                        }
-                    else
-                        {
-                        cancelled = ETrue;
-                        }
-                    CleanupStack::PopAndDestroy( dns2 );
-                    CleanupStack::PopAndDestroy( dns1 );                            
-                    } while ( (err1 || err2) && (!cancelled) );
-                break;
-                }
-            default:
-                {
-                User::Leave( KErrNotSupported );
-                }
-            }
-        }
-
-    if( update )
-        {
-        UpdateListBoxContentL();
-        }
-                
-    return selected;
-    }
-
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::TitleId
-//---------------------------------------------------------------------------
-//
-TUint32 CmPluginBaseSettingsDlg::TitleId( TUint32 aConvTitleId,
-                                          TUint32 aTitleId ) const
-    {
-    TUint32 titleId( 0 );
-    if ( aTitleId )
-        {
-        titleId = aTitleId;
-        }
-    else if ( !titleId )
-        {
-        titleId = aConvTitleId;
-        }
-        
-    return titleId;
-    }
-    
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::SetTitleL
-//---------------------------------------------------------------------------
-//
-void CmPluginBaseSettingsDlg::SetTitleL( CAknSettingPage* aDlg,
-                                         TUint32 aConvTitleId,
-                                         TUint32 aTitleId ) const
-    {
-    TUint32 titleId( TitleId( aConvTitleId, aTitleId ) );
-        
-    if ( titleId )
-        {
-        HBufC* title = StringLoader::LoadLC( titleId );
-        aDlg->SetSettingTextL( *title );
-        CleanupStack::PopAndDestroy( title );
-        }
-    }
-    
-//---------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::EditorId
-//---------------------------------------------------------------------------
-//
-TUint32 CmPluginBaseSettingsDlg::EditorId( TUint32 aConvEditorId,
-                                           TUint32 aEditorId ) const
-    {
-    TUint32 resId( 0 );
-    if ( aConvEditorId )
-        {
-        resId = aConvEditorId;
-        }
-    if ( !resId )
-        {
-        resId = aEditorId;
-        }
-
-    return resId;
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::GetIPv6DNSTypeL
-// --------------------------------------------------------------------------
-//
-EXPORT_C TInt CmPluginBaseSettingsDlg::GetIPv6DNSTypeL( 
-                                                TUint32 aDNS1ServAttribute,
-                                                TUint32 aDNS2ServAttribute )
-    {
-    TIPv6Types retval( EIPv6UserDefined );
-
-    HBufC* priServ = NULL;
-    priServ = iCmPluginBaseEng.GetStringAttributeL( aDNS1ServAttribute );
-    CleanupStack::PushL( priServ );
-    TPtr16 ptr1( priServ->Des() );
-       
-    HBufC* secServ = NULL;
-    secServ = iCmPluginBaseEng.GetStringAttributeL( aDNS2ServAttribute );
-    CleanupStack::PushL( secServ );
-    TPtr16 ptr2( secServ->Des() );
-    
-    // net type 6: if IspIPv6NameServ <> 0.0.0.0 
-    // => User defined OR well-known
-    
-    if ( ( !ptr1.Compare( KKnownIp6NameServer1 ) )
-        && ( !ptr2.Compare( KKnownIp6NameServer2 ) ) )
-        { // special value, well-known
-        retval = EIPv6WellKnown;
-        }
-    else
-        { 
-        // dynamic, if 0:0:...
-        // OR EMPTY text...
-        if ( ( ( !ptr1.Compare( KDynamicIpv6Address ) )
-               || ( !ptr1.Compare( KNullDesC ) ) )
-           &&( ( !ptr2.Compare( KDynamicIpv6Address ) ) 
-               ||( !ptr2.Compare( KDynamicIpv6Address ) ) ) )
-            { // dynamic, 0:0:...
-            retval = EIPv6Unspecified;
-            }
-        else
-            { // other value, user defined
-            retval = EIPv6UserDefined;
-            }
-        }
-
-    CleanupStack::PopAndDestroy( 2, priServ );
-
-    return retval;
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::HandleResourceChange
-// --------------------------------------------------------------------------
-//
-
-EXPORT_C void CmPluginBaseSettingsDlg::HandleResourceChange( TInt aType )
-    {
-    CCoeControl::HandleResourceChange( aType ); 
-
-    CAknDialog::HandleResourceChange(aType);
-
-    if( aType == KEikDynamicLayoutVariantSwitch )
-        {
-        DrawNow(); 
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::Execute
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::Execute()
-    {
-    iProcessing = ETrue;
-    
-    TRAPD( err, ProcessCommandL( EAknSoftkeyChange ) );
-    if ( err )
-        {
-        HandleLeaveError( err );
-        }
-    iProcessing = EFalse;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::HandleLeaveError
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlg::HandleLeaveError( TInt aError )
-{
-    switch( aError )
-    {
-        case KLeaveWithoutAlert:
-        case KErrNoMemory:
-            // Indicate no memory to save setting changes
-            iIsPossibleToSaveSetting = EFalse;
-
-            if (iProcessing)
-            {
-                // Release processing protection so that the next processing can be done
-                iProcessing = EFalse;
-            }
-            break;
-        default:
-            // More leave errors may be handled if necessary
-            // Now other leave errors are ignored here
-            break;
-    }
-}
--- a/cmmanager/cmmgr/Framework/Src/cmpbasesettingsdlgadv.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Dialog for advanced settings for plugin base.
-*
-*/
-
-#include <avkon.hrh>
-#include <eikdef.h>
-#include <eikenv.h>
-#include <eikedwin.h>
-#include <cmmanager.rsg>
-#include <data_caging_path_literals.hrh>
-#include <aknnavide.h>
-#include <akntitle.h>
-#include <eikmenup.h>
-#include <StringLoader.h>
-#include <akntextsettingpage.h>
-#include <cmconnectionmethoddef.h>
-
-#include <mcmdexec.h>
-#include <cmpbasesettingsdlgadv.h>
-#include "cmpluginmenucommands.hrh"
-#include "cmmanager.hrh"
-
-using namespace CMManager;
-
-enum TSMTPSettingIds
-    {
-    EPluginBaseCmCmdSmtp
-    };
-    
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlgAdv::CmPluginBaseSettingsDlgAdv()
-// --------------------------------------------------------------------------
-//
-EXPORT_C CmPluginBaseSettingsDlgAdv::CmPluginBaseSettingsDlgAdv( 
-                                           CCmPluginBaseEng& aCmPluginBase )
-    : CmPluginBaseSettingsDlg( aCmPluginBase )
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlgAdv::~CmPluginBaseSettingsDlgAdv
-// Destructor
-// --------------------------------------------------------------------------
-//
-EXPORT_C  CmPluginBaseSettingsDlgAdv::~CmPluginBaseSettingsDlgAdv()
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlgAdv::DynInitMenuPaneL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlgAdv::DynInitMenuPaneL( 
-                                                    TInt aResourceId,
-                                                    CEikMenuPane* aMenuPane )
-    {
-    CmPluginBaseSettingsDlg::DynInitMenuPaneL( aResourceId, aMenuPane );
-    if ( aResourceId == R_PLUGIN_BASE_MENU )
-        {
-        aMenuPane->SetItemDimmed( EPluginBaseCmdAdvanced, ETrue  );           
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlgAdv::UpdateListBoxContentBearerSpecificL
-// --------------------------------------------------------------------------
-//
-void CmPluginBaseSettingsDlgAdv::UpdateListBoxContentBearerSpecificL( 
-                                                 CDesCArray& /*aItemArray*/ )
-    {
-    // Empty implementation - forced by inheritance
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlgAdv::RunAdvancedSettingsL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlgAdv::RunAdvancedSettingsL()
-    {
-    // Empty implementation. This function has no meaning here
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlgAdv::UpdateListBoxContentL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlgAdv::UpdateListBoxContentL()
-    {
-    // Must save listbox indexes because content will be deleted
-    TInt lastListBoxPos = iListbox->CurrentItemIndex();
-    TInt lastListBoxTopPos = iListbox->TopItemIndex();
-
-    // deleting listbox content
-    MDesCArray* itemList = iListbox->Model()->ItemTextArray();
-    CDesCArray* itemArray = (CDesCArray*)itemList;
-    while ( itemArray->Count() )
-        {
-        itemArray->Delete( 0 );
-        }
-    while ( iSettingIndex->Count() )
-        {
-        iSettingIndex->Delete( 0 );
-        }
-
-    UpdateListBoxContentBearerSpecificL( *itemArray );
-                     
-    // Handle content changes
-    iListbox->Reset();
-    
-    iListbox->HandleItemAdditionL();
-    
-    // Listbox might not have index
-    if ( lastListBoxPos != -1 )
-        {
-        iListbox->SetCurrentItemIndex( lastListBoxPos );
-        iListbox->SetTopItemIndex( lastListBoxTopPos );
-        }
-    // Draw it
-    iListbox->DrawNow();
-    }
-
-//---------------------------------------------------------------------------         
-// CmPluginBaseSettingsDlgAdv::ShowPopupSettingPageL
-//---------------------------------------------------------------------------
-//
-EXPORT_C TBool CmPluginBaseSettingsDlgAdv::ShowPopupSettingPageL( 
-                                           TInt aAttribute, TInt aCommandId )
-    {
-    TBool retval( EFalse );
-    
-    switch ( aAttribute )
-        {
-        case EPluginBaseCmCmdSmtp:
-            {
-            // Show the SMTP settings page
-            User::Leave( KErrNotSupported );
-            break;
-            }      
-        default:
-            {
-            CmPluginBaseSettingsDlg::ProcessCommandL( aCommandId );
-            break;
-            }
-        }
-    return retval;
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmpbasesettingsdlgip.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Dialog for IPv4 settings for plugin base.
-*
-*/
-
-#include <cmmanager.rsg>
-
-#include <mcmdexec.h>
-#include <cmpbasesettingsdlgip.h>
-#include <cmmanagerdef.h>
-#include "cmmanager.hrh"
-
-using namespace CMManager;
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlgIp::CmPluginBaseSettingsDlgIp()
-// --------------------------------------------------------------------------
-//
-EXPORT_C CmPluginBaseSettingsDlgIp::CmPluginBaseSettingsDlgIp( 
-                                           CCmPluginBaseEng& aCmPluginBase )
-    : CmPluginBaseSettingsDlg( aCmPluginBase )
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlgIp::~CmPluginBaseSettingsDlgIp
-// Destructor
-// --------------------------------------------------------------------------
-//
-EXPORT_C CmPluginBaseSettingsDlgIp::~CmPluginBaseSettingsDlgIp()
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlgIp::DynInitMenuPaneL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlgIp::DynInitMenuPaneL( 
-                                                    TInt aResourceId,
-                                                    CEikMenuPane* aMenuPane )
-    {
-    CmPluginBaseSettingsDlg::DynInitMenuPaneL( aResourceId, aMenuPane );
-    if ( aResourceId == R_PLUGIN_BASE_MENU )
-        {
-        aMenuPane->SetItemDimmed( EPluginBaseCmdAdvanced, ETrue  );           
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlgIp::UpdateListBoxContentBearerSpecificL
-// --------------------------------------------------------------------------
-//
-void CmPluginBaseSettingsDlgIp::UpdateListBoxContentBearerSpecificL( 
-                                                 CDesCArray& /*aItemArray*/ )
-    {
-    // Empty implementation - forced by inheritance
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlgIp::RunAdvancedSettingsL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlgIp::RunAdvancedSettingsL()
-    {
-    // Empty implementation. This function has no meaning here
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlgIp::UpdateListBoxContentL
-// --------------------------------------------------------------------------
-//
-EXPORT_C void CmPluginBaseSettingsDlgIp::UpdateListBoxContentL()
-    {
-    // Must save listbox indexes because content will be deleted
-    TInt lastListBoxPos = iListbox->CurrentItemIndex();
-    TInt lastListBoxTopPos = iListbox->TopItemIndex();
-
-    // deleting listbox content
-    MDesCArray* itemList = iListbox->Model()->ItemTextArray();
-    CDesCArray* itemArray = (CDesCArray*)itemList;
-    while ( itemArray->Count() )
-        {
-        itemArray->Delete( 0 );
-        }
-    while ( iSettingIndex->Count() )
-        {
-        iSettingIndex->Delete( 0 );
-        }
-
-    UpdateListBoxContentBearerSpecificL( *itemArray );
-                        
-    // Handle content changes
-    iListbox->Reset();
-    // Listbox might not have index
-    if ( lastListBoxPos != -1 )
-        {
-        iListbox->SetCurrentItemIndex( lastListBoxPos );
-        iListbox->SetTopItemIndex( lastListBoxTopPos );
-        }
-    // Draw it
-    iListbox->DrawNow();
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmpluginbase.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,823 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of plugin base class
-*
-*/
-
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <commsdat_partner.h>
-#endif
-#include <cmmanager.rsg>
-#include <es_sock.h>    // RSocketServ, RConnection
-#include <in_sock.h>    // KAfInet
-#include <es_enum.h>    // TConnectionInfo
-#include <StringLoader.h>
-#include <AknUtils.h>
-#include <data_caging_path_literals.hrh>
-#include <sysutil.h> 
-#include <cmpluginbase.h>
-
-#include <cmmanager.h>
-#include "cmmanagerimpl.h"
-#include "cmdestinationimpl.h"
-#include <cmpluginbase.h>
-#include <cmpsettingsconsts.h>
-#include "cmlogger.h"
-#include <cmcommonui.h>
-
-using namespace CMManager;
-using namespace CommsDat;
-
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::CCmPluginBase
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CCmPluginBase::CCmPluginBase( CCmPluginBaseEng* plugin )
-    : iPlugin( plugin )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::~CCmPluginBase
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CCmPluginBase::~CCmPluginBase()
-    {
-    if (iPlugin)
-        {
-        TRAP_IGNORE( CmMgr().RemoveCMFromPoolL(this) );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::ConstructL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::ConstructL()
-    {
-    iPlugin->ConstructL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::ConstructL
-// ---------------------------------------------------------------------------
-//
- CCmPluginBase* CCmPluginBase::CreateInstanceL( TCmPluginInitParam& aInitParam )
-    {
-    CCmPluginBaseEng* plugin = iPlugin->CreateInstanceL(aInitParam);
-	CleanupStack::PushL( plugin );
-    CCmPluginBase* connMethod = new (ELeave) CCmPluginBase(plugin);     
-    CleanupStack::Pop( plugin );  // plugin        
-    return connMethod;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::RunSettingsL
-// ---------------------------------------------------------------------------
-//
-TInt CCmPluginBase::RunSettingsL()
-    {
-    return iPlugin->RunSettingsL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::InitializeWithUiL
-// ---------------------------------------------------------------------------
-//
-TInt CCmPluginBase::InitializeWithUiL(TBool aManuallyConfigure)
-    {
-    return iPlugin->InitializeWithUiL(aManuallyConfigure);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::CanHandleIapIdL
-// ---------------------------------------------------------------------------
-//
-TBool CCmPluginBase::CanHandleIapIdL(TUint32 aIapId) const
-    {
-    return iPlugin->CanHandleIapIdL(aIapId);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::CanHandleIapIdL
-// ---------------------------------------------------------------------------
-//
-TBool CCmPluginBase::CanHandleIapIdL(CommsDat::CCDIAPRecord* aIapRecord) const
-    {
-    return iPlugin->CanHandleIapIdL(aIapRecord);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::AdditionalReset
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::AdditionalReset()
-    {
-    iPlugin->AdditionalReset();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::ServiceRecordIdLC
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::ServiceRecordIdLC(HBufC* &aServiceName, 
-                                       TUint32& aRecordId)
-    {
-    iPlugin->ServiceRecordIdLC(aServiceName, aRecordId);
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::BearerRecordIdLC
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::BearerRecordIdLC(HBufC* &aBearerName, 
-                                       TUint32& aRecordId)
-    {
-    iPlugin->BearerRecordIdLC(aBearerName, aRecordId);
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::PrepareToDeleteRecordsL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::PrepareToDeleteRecordsL()
-    {
-    iPlugin->PrepareToDeleteRecordsL();
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::DeleteAdditionalRecordsL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::DeleteAdditionalRecordsL()
-    {
-    iPlugin->DeleteAdditionalRecordsL();
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::CreateNewServiceRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::CreateNewServiceRecordL()
-    {
-    iPlugin->CreateNewServiceRecordL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::CreateAdditionalRecordsL()
-    {
-    iPlugin->CreateAdditionalRecordsL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::PrepareToCopyDataL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::PrepareToCopyDataL(CCmPluginBaseEng& aDestInst) const
-    {
-    iPlugin->PrepareToCopyDataL(aDestInst);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::CopyAdditionalDataL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::CopyAdditionalDataL(CCmPluginBaseEng& aDestInst) const
-    {
-    iPlugin->CopyAdditionalDataL(aDestInst);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::LoadAdditionalRecordsL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::LoadAdditionalRecordsL()
-    {
-    iPlugin->LoadAdditionalRecordsL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::UpdateAdditionalRecordsL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::UpdateAdditionalRecordsL()
-    {
-    iPlugin->UpdateAdditionalRecordsL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::IsLinkedToIap
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CCmPluginBase::IsLinkedToIap( TUint32 aIapId )
-    {
-    return iPlugin->IsLinkedToIap( aIapId );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::IsLinkedToIap
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CCmPluginBase::IsLinkedToSnap( TUint32 aSnapId )
-    {
-    return iPlugin->IsLinkedToSnap( aSnapId );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::GetIntAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TUint32 
-            CCmPluginBase::GetIntAttributeL( const TUint32 aAttribute ) const
-    {
-    return iPlugin->GetIntAttributeL(aAttribute);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::GetBoolAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool 
-        CCmPluginBase::GetBoolAttributeL( const TUint32 aAttribute ) const
-    {
-    return iPlugin->GetBoolAttributeL(aAttribute);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::GetStringAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C HBufC* 
-    CCmPluginBase::GetStringAttributeL( const TUint32 aAttribute ) const
-    {
-    return iPlugin->GetStringAttributeL(aAttribute);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::GetString8AttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C HBufC8* 
-    CCmPluginBase::GetString8AttributeL( const TUint32 aAttribute ) const
-    {
-    return iPlugin->GetString8AttributeL(aAttribute);
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBase::SetIntAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::SetIntAttributeL( const TUint32 aAttribute, 
-                                                  TUint32 aValue )
-    {
-    iPlugin->SetIntAttributeL(aAttribute, aValue);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::SetBoolAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::SetBoolAttributeL( const TUint32 aAttribute, 
-                                                   TBool aValue )
-    {
-    iPlugin->SetBoolAttributeL(aAttribute, aValue);
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBase::SetStringAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::SetStringAttributeL( const TUint32 aAttribute, 
-                                                     const TDesC16& aValue )
-    {
-    iPlugin->SetStringAttributeL(aAttribute, aValue);
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBase::SetString8AttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::SetString8AttributeL( const TUint32 aAttribute, 
-                                                      const TDesC8& aValue )
-    {
-    iPlugin->SetString8AttributeL(aAttribute, aValue);
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBase::RestoreAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::RestoreAttributeL( const TUint32 aAttribute )
-    {
-    iPlugin->RestoreAttributeL(aAttribute);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::Destination
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CCmDestinationImpl* CCmPluginBase::Destination() const
-    {
-    return iPlugin->Destination();
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBase::UpdateL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::UpdateL()
-    {
-    iPlugin->UpdateL();
-    iPlugin->SetIdValidity(ETrue);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::NumOfConnMethodReferencesL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CCmPluginBase::NumOfConnMethodReferencesL()
-    {
-    return iPlugin->NumOfConnMethodReferencesL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::Session
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CMDBSession& CCmPluginBase::Session()const
-    {
-    return iPlugin->Session();
-    }
-
-// ---------------------------------------------------------------------------
-// Delete this connection methond.
-// Record ids are checked to be sure that we delete only records
-// that were loaded before.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CCmPluginBase::DeleteL( TBool aForced,
-                                          TBool aOneRefAllowed )
-    {
-    return iPlugin->DeleteL(aForced, aOneRefAllowed);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::LoadL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::LoadL( TUint32 aIapId )
-    {
-    iPlugin->LoadL(aIapId);
-    CmMgr().ConnMethodUpdatedL( this->Plugin() );
-    iPlugin->SetIdValidity(ETrue);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::ReLoadL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::ReLoadL()
-    {
-    TUint32 cmID = iPlugin->GetIntAttributeL( ECmId );    
-    TUint32 refCounter = iPlugin->iRefCounter;
-    
-    iPlugin->iRefCounter = 1;
-    CCmManagerImpl* mgr = &CmMgr();
-    mgr->RemoveCMFromPoolL(iPlugin);
-    iPlugin = NULL;
-    CCmPluginBase* cm = mgr->GetConnectionMethodL( cmID );
-    iPlugin = cm->iPlugin;
-    cm->iPlugin = NULL;
-    delete cm;
-    iPlugin->SetIdValidity(ETrue);
-    iPlugin->iRefCounter = refCounter;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBase::CreateNewL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::CreateNewL()
-    {
-    iPlugin->CreateNewL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::CreateCopyL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CCmPluginBase* CCmPluginBase::CreateCopyL() const
-    {
-    CCmPluginBaseEng* plugin = iPlugin->CreateCopyL();
-	CleanupStack::PushL( plugin );    
-    CCmPluginBase* connMethod = CmMgr().CreateConnectionMethodL(plugin);
-    CleanupStack::Pop( plugin );      
-    return connMethod;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBase::AddResourceFileL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::AddResourceFileL( const TDesC& aName )
-    {
-    iPlugin->AddResourceFileL(aName);
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBase::RemoveResourceFile
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::RemoveResourceFile( const TDesC& aName )
-    {
-    iPlugin->RemoveResourceFile(aName);
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBase::AllocReadL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C HBufC* CCmPluginBase::AllocReadL( TInt aResourceId ) const
-    {
-    return iPlugin->AllocReadL( aResourceId );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBase::OpenTransactionLC
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::OpenTransactionLC()
-    {
-    iPlugin->OpenTransactionLC();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::CommitTransactionL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::CommitTransactionL( TInt aError )
-    {
-    iPlugin->CommitTransactionL(aError);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::PrepareToLoadRecordsL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::DoLoadL( TUint32 aIapId )
-    {
-    iPlugin->CommitTransactionL(aIapId);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::PrepareToLoadRecordsL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::PrepareToLoadRecordsL()
-    {
-    iPlugin->PrepareToLoadRecordsL();
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBase::LoadIAPRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::LoadIAPRecordL( TUint32 aIapId )
-    {
-    iPlugin->LoadIAPRecordL(aIapId);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::LoadProxySettingL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::LoadProxySettingL()
-    {
-    iPlugin->LoadProxySettingL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::LoadServiceSettingL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::LoadServiceSettingL()
-    {
-    iPlugin->LoadServiceSettingL();
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBase::LoadChargeCardSettingL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::LoadChargeCardSettingL( TUint32 aRecordId )
-    {
-    iPlugin->LoadChargeCardSettingL(aRecordId);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::LoadNetworkSettingL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::LoadNetworkSettingL()
-    {
-    iPlugin->LoadNetworkSettingL();
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBase::LoadLocationSettingL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::LoadLocationSettingL()
-    {
-    iPlugin->LoadLocationSettingL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::PrepareToUpdateRecordsL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::PrepareToUpdateRecordsL()
-    {
-    iPlugin->PrepareToUpdateRecordsL();
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBase::UpdateIAPRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::UpdateIAPRecordL()
-    {
-    iPlugin->UpdateIAPRecordL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::UpdateProxyRecordL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::UpdateProxyRecordL()
-    {
-    iPlugin->UpdateProxyRecordL();
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::UpdateSeamlessnessRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::UpdateSeamlessnessRecordL()
-    {
-    iPlugin->UpdateSeamlessnessRecordL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::UpdateChargeCardRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::UpdateChargeCardRecordL()
-    {
-    iPlugin->UpdateChargeCardRecordL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::UpdateServiceRecordL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::UpdateServiceRecordL()
-    {
-    iPlugin->UpdateServiceRecordL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::UpdateNetworkRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::UpdateNetworkRecordL()
-    {
-    iPlugin->UpdateNetworkRecordL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::UpdateLocationRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::UpdateLocationRecordL()
-    {
-    iPlugin->UpdateLocationRecordL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::UpdateConnPrefSettingL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::UpdateConnPrefSettingL()
-    {
-    iPlugin->UpdateConnPrefSettingL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::EnableProxyL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::EnableProxyL( TBool aEnable )
-    {
-    iPlugin->EnableProxyL(aEnable);
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBase::EnableChargeCardL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::EnableChargeCardL( TBool aEnable )
-    {
-    iPlugin->EnableChargeCardL(aEnable);
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBase::EnableLocationL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBase::EnableLocationL( TBool aEnable )
-    {
-    iPlugin->EnableLocationL(aEnable);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::LoadWapRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::LoadWapRecordL()
-    {
-    iPlugin->LoadWapRecordL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::LoadSeamlessnessRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::LoadSeamlessnessRecordL()
-    {
-    iPlugin->LoadSeamlessnessRecordL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::UpdateWapRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::UpdateWapRecordL()
-    {
-    iPlugin->UpdateWapRecordL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::NewWapRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::NewWapRecordL()
-    {
-    iPlugin->NewWapRecordL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::NewSeamlessnessRecordL
-// ---------------------------------------------------------------------------
-//
-CCDIAPMetadataRecord* CCmPluginBase::NewSeamlessnessRecordL( TBool aSetDef )
-    {
-    return iPlugin->NewSeamlessnessRecordL(aSetDef);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::SetAttribute
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::SetAttribute( CCDRecordBase* aRecord, 
-                                     TUint32 aAttribute, 
-                                     TBool aSet )
-    {
-    iPlugin->SetAttribute(aRecord, aAttribute, aSet);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::CopyAttributes
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBase::CopyAttributes( CCDRecordBase* aSrcRecord, 
-                                       CCDRecordBase* aDstRecord )
-    {
-    iPlugin->CopyAttributes(aSrcRecord, aDstRecord);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::FindWAPRecordL
-// ---------------------------------------------------------------------------
-//
-CCDWAPIPBearerRecord* CCmPluginBase::FindWAPRecordL()
-    {
-    return iPlugin->FindWAPRecordL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::FindSeamlessnessRecordL
-// ---------------------------------------------------------------------------
-//
-CCDIAPMetadataRecord* CCmPluginBase::FindSeamlessnessRecordL()
-    {
-    return iPlugin->FindSeamlessnessRecordL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::IAPRecordElementId
-// ---------------------------------------------------------------------------
-TMDBElementId CCmPluginBase::IAPRecordElementId() const
-    {
-    return iPlugin->IAPRecordElementId();
-    }
-// ---------------------------------------------------------------------------
-// CCmPluginBase::ParentDestination
-// ---------------------------------------------------------------------------
-EXPORT_C CCmDestinationImpl* CCmPluginBase::ParentDestination() const 
-    { 
-    return iPlugin->ParentDestination();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::CmMgr
-// ---------------------------------------------------------------------------
-EXPORT_C CCmManagerImpl& CCmPluginBase::CmMgr() const 
-    { 
-    return iPlugin->CmMgr();
-    };
-
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::Plugin
-// ---------------------------------------------------------------------------
-void CCmPluginBase::SetPlugin(CCmPluginBaseEng* aPlugin) 
-    { 
-    iPlugin = aPlugin;
-    };
-
-// ---------------------------------------------------------------------------
-// CCmPluginBase::Plugin
-// ---------------------------------------------------------------------------
-EXPORT_C CCmPluginBaseEng* CCmPluginBase::Plugin() const 
-    { 
-    return iPlugin;
-    };
-    
-// -----------------------------------------------------------------------------
-// CCmPluginBase::IncrementRefCounter
-// -----------------------------------------------------------------------------
-void CCmPluginBase::IncrementRefCounter()
-    {
-    iPlugin->IncrementRefCounter();
-    }
-// -----------------------------------------------------------------------------
-// CCmPluginBase::DecrementRefCounter
-// -----------------------------------------------------------------------------
-void CCmPluginBase::DecrementRefCounter()
-    {
-    iPlugin->DecrementRefCounter();
-    }
-// -----------------------------------------------------------------------------
-// CCmPluginBase::GetRefCounter
-// -----------------------------------------------------------------------------
-TInt CCmPluginBase::GetRefCounter()
-    {
-    return iPlugin->GetRefCounter();
-    }
-                                                                    
-// -----------------------------------------------------------------------------
-// CCmPluginBase::GetAdditionalUids
-// -----------------------------------------------------------------------------
-EXPORT_C void CCmPluginBase::GetAdditionalUids( RArray<TUint32>& aIapIds )
-    {
-    iPlugin->GetAdditionalUids( aIapIds );
-    }
-
-//-----------------------------------------------------------------------------
-// CCmPluginBase::FilterPossibleParentsL
-// -----------------------------------------------------------------------------
-void CCmPluginBase::FilterPossibleParentsL( RArray<TUint32>& aDests )
-    {
-    iPlugin->FilterPossibleParentsL( aDests );
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmpluginlanbase.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,328 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of base for Lan Plugin interface 
-*                for Lan Bearer.
-*
-*/
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <commsdat_partner.h>
-#endif
-#include <cmpluginlanbase.h>
-#include "cmlogger.h"
-#include <ecom/ecom.h>        // For REComSession
-#include <mcmdexec.h>
-#include <cmpbasesettingsdlg.h>
-#include "cmmanagerimpl.h"
-#include <cmmanager.rsg>
-#include <cmpsettingsconsts.h>
-
-using namespace CMManager;
-using namespace CommsDat;
-
-// default values for fields...
-// CONSTANTS
-_LIT( KEmpty, "");
-
-_LIT( KLanBearerName, "LANBearer" );
-_LIT( KLanBearerAgent, "lanagt.agt" );
-_LIT( KLanBearerNif, "lannif" );
-
-_LIT( KLanLDDName, "not used" );
-_LIT( KLanPDDName, "not used" );
-
-const TInt KLanLastSocketActivityTimeout = -1;
-const TInt KLanLastSocketClosedTimeout = -1;
-
-const TBool KDefIpAddrFromServer = ETrue;
-const TBool KDefIpDnsAddrFromServer = ETrue;
-const TBool KDefIp6DnsAddrFromServer = ETrue;
-
-static const TCmAttribConvTable SLanConvTbl[] = 
-    {
-    { ELanBaseIfNetworks, ELanBaseRangeMax, NULL },
-    { ELanBaseIfNetworks, KCDTIdLANIfNetworks, NULL },        
-    { ELanBaseIpNetMask, KCDTIdLANIpNetMask, &CheckIPv4ValidityL,
-      R_QTN_NETW_SETT_SUBNET_MASK,
-      KIpAddressWidth, EConvCompulsory | EConvIPv4, R_QTN_SELEC_SETTING_COMPULSORY, 0, NULL, NULL },
-    { ELanBaseIpGateway, KCDTIdLANIpGateway, &CheckIPv4ValidityL,
-      R_QTN_NETW_SETT_DEFAULT_GATEWAY,
-      KIpAddressWidth, EConvCompulsory | EConvIPv4, R_QTN_SELEC_SETTING_COMPULSORY, 0, NULL, NULL },
-    { ELanBaseIpAddrFromServer, KCDTIdLANIpAddrFromServer, NULL },
-    { ELanBaseIpAddr, KCDTIdLANIpAddr, &CheckIPv4ValidityL,
-      R_QTN_SET_IP_ADDRESS,
-      KIpAddressWidth, EConvIPv4, R_QTN_SET_IP_ADDRESS_DYNAMIC, 0, NULL, NULL },
-    { ELanBaseIpDNSAddrFromServer, KCDTIdLANIpDNSAddrFromServer, NULL,
-      R_QTN_SET_DNS_SERVERS_IP,
-      0, 0, 0, 0, NULL, NULL },
-    { ELanBaseIpNameServer1, KCDTIdLANIpNameServer1, &CheckIPv4ValidityL,
-      R_QTN_SET_PRIMARY_DNS,
-      KMaxIPv4NameServerLength, EConvIPv4, R_QTN_SET_DNS_SERVERS_AUTOMATIC, 0, NULL, NULL },
-    { ELanBaseIpNameServer2, KCDTIdLANIpNameServer2, &CheckIPv4ValidityL,
-      R_QTN_SET_SECONDARY_DNS,
-      KMaxIPv4NameServerLength, EConvIPv4, R_QTN_SET_DNS_SERVERS_AUTOMATIC, 0, NULL, NULL },    
-    { ELanBaseIp6DNSAddrFromServer, KCDTIdLANIp6DNSAddrFromServer, NULL,
-      R_QTN_SET_DNS_SERVERS_IP,
-      0, 0, 0, 0, NULL, NULL },
-    { ELanBaseIp6NameServer1, KCDTIdLANIp6NameServer1, &CheckIPv6ValidityL },
-    { ELanBaseIp6NameServer2, KCDTIdLANIp6NameServer2, &CheckIPv6ValidityL },
-    { ELanBaseIpAddrLeaseValidFrom, KCDTIdLANIpAddrLeaseValidFrom, NULL },
-    { ELanBaseIpAddrLeaseValidTo, KCDTIdLANIpAddrLeaseValidTo, NULL },
-    { ELanBaseConfigDaemonManagerName, KCDTIdLANConfigDaemonManagerName, NULL },
-    { ELanBaseConfigDaemonName, KCDTIdLANConfigDaemonName, NULL },
-    { ELanBaseServiceExtensionTableName, KCDTIdLANServiceExtensionTableName, NULL },
-    { ELanBaseServiceExtensionTableRecordId, KCDTIdLANServiceExtensionTableRecordId, &CheckRecordIdValidityL },
-    { 0,0, NULL }
-    };
-
-static const TCmCommonAttrConvArrayItem SCommonConvTbl[] =
-{
-    { ELanBaseIfNetworks, ECmIFNetworks },
-    { ELanBaseIpNetMask, ECmIPNetmask },
-    { ELanBaseIpGateway, ECmIPGateway },
-    { ELanBaseIpAddrFromServer, ECmIPAddFromServer },
-    { ELanBaseIpAddr, ECmIPAddress },
-    { ELanBaseIpDNSAddrFromServer, ECmIPDNSAddrFromServer },
-    { ELanBaseIpNameServer1, ECmIPNameServer1 },
-    { ELanBaseIpNameServer2, ECmIPNameServer2 },
-    { ELanBaseIp6DNSAddrFromServer, ECmIP6DNSAddrFromServer },
-    { ELanBaseIp6NameServer1, ECmIP6NameServer1 },
-    { ELanBaseIp6NameServer2, ECmIP6NameServer2 },
-    { ELanBaseIpAddrLeaseValidFrom, ECmIPAddrLeaseValidFrom },
-    { ELanBaseIpAddrLeaseValidTo, ECmIPAddrLeaseValidTo },
-    { ELanBaseConfigDaemonManagerName, ECmConfigDaemonManagerName },
-    { ELanBaseConfigDaemonName, ECmConfigDaemonName },
-    { 0, 0 }
-    };
-
-// ---------------------------------------------------------------------------
-// CCmPluginLanBase::CCmPluginLanBase()
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CCmPluginLanBase::CCmPluginLanBase( TCmPluginInitParam* aInitParam )
-    : CCmPluginBaseEng( aInitParam )
-    {
-    CLOG_CREATE;
-
-
-    }
-
-EXPORT_C CCmPluginLanBase::~CCmPluginLanBase()
-    {
-    CLOG_CLOSE;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginLanBase::ConstructL()
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginLanBase::ConstructL()
-    {
-    LOGGER_ENTERFN( "CCmPluginLanBase::ConstructL" );
-    
-    CCmPluginBaseEng::ConstructL();
-    
-    AddConverstionTableL( (CCDRecordBase**)&iServiceRecord, NULL, SLanConvTbl );
-	AddCommonConversionTableL( SCommonConvTbl );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginLanBase::RunSettingsL()
-// ---------------------------------------------------------------------------
-//        
-EXPORT_C TInt CCmPluginLanBase::RunSettingsL()
-    {
-    User::Leave( KErrNotSupported );
-    return 0;
-    }
-        
-// ---------------------------------------------------------------------------
-// CCmPluginLanBase::InitializeWithUiL()
-// ---------------------------------------------------------------------------
-//        
-EXPORT_C TBool CCmPluginLanBase::InitializeWithUiL( 
-                                            TBool /*aManuallyConfigure*/ )
-    {
-    User::Leave(KErrNotSupported);
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginLanBase::LoadServiceSettingL()
-// ---------------------------------------------------------------------------
-//        
-EXPORT_C void CCmPluginLanBase::LoadServiceSettingL()
-    {
-    LOGGER_ENTERFN( "CCmPluginLanBase::LoadServiceSettingL" );
-    
-    if( TPtrC(KCDTypeNameLANService) == iIapRecord->iServiceType  )
-        {
-        iServiceRecord = static_cast<CCDLANServiceRecord *>
-                    (CCDRecordBase::RecordFactoryL(KCDTIdLANServiceRecord));
-        }
-    else
-        // this IAP service is not supported by this plugin.
-        {
-        User::Leave( KErrNotSupported );
-        }
-
-    CCmPluginBaseEng::LoadServiceSettingL();
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginLanBase::ServiceRecord()
-// ---------------------------------------------------------------------------
-//        
-EXPORT_C CCDLANServiceRecord& CCmPluginLanBase::ServiceRecord()const
-    {
-    LOGGER_ENTERFN( "CCmPluginLanBase::ServiceRecord" );
-    return *static_cast<CCDLANServiceRecord*>(iServiceRecord);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginLanBase::ServiceRecordIdLC
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginLanBase::ServiceRecordIdLC( HBufC* &aName, 
-                                                   TUint32& aRecordId )
-    {
-    LOGGER_ENTERFN( "CCmPluginLanBase::ServiceRecordIdLC" );
-
-    aName = TPtrC( KCDTypeNameLANService ).AllocLC();    
-    aRecordId = iServiceRecord->RecordId();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginLanBase::BearerRecordIdLC()
-// ---------------------------------------------------------------------------
-//        
-EXPORT_C void CCmPluginLanBase::BearerRecordIdLC( HBufC* &aBearerName, 
-                                                  TUint32& aRecordId )
-    {
-    LOGGER_ENTERFN( "CCmPluginLanBase::BearerRecordIdLC" );
-                
-    CCDLANBearerRecord* tmprec = static_cast<CCDLANBearerRecord*>
-                        (CCDRecordBase::RecordFactoryL( KCDTIdLANBearerRecord ));
-    CleanupStack::PushL( tmprec );
-
-    tmprec->iRecordName.SetL( TPtrC(iBearerRecName) );
-    if ( !tmprec->FindL( Session() ) )
-        { // bearer not found -> create dummy values
-        CLOG_WRITE( "No bearer found" );
-
-        tmprec->SetRecordId( KCDNewRecordRequest );
-        tmprec->iBearerAgent = KLanBearerAgent;
-        tmprec->iRecordName = KLanBearerName;
-        tmprec->iLanBearerNifName = KLanBearerNif;
-        tmprec->iLanBearerLddName = KLanLDDName;
-        tmprec->iLanBearerPddName = KLanPDDName;
-        tmprec->iLastSocketActivityTimeout = 
-                                        (TUint32)KLanLastSocketActivityTimeout;
-        tmprec->iLastSocketClosedTimeout = 
-                                        (TUint32)KLanLastSocketClosedTimeout;
-
-        tmprec->StoreL( Session() );
-        }
-
-    aRecordId = tmprec->RecordId();
-    
-    CLOG_WRITE_2( "Name: [%S], id: [%d]", 
-                  &tmprec->iRecordName.GetL(), 
-                  aRecordId );
-
-    CleanupStack::PopAndDestroy( tmprec );
-
-    aBearerName = TPtrC(KCDTypeNameLANBearer).AllocLC();    
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginLanBase::CreateNewServiceRecordL()
-// ---------------------------------------------------------------------------
-//        
-EXPORT_C void CCmPluginLanBase::CreateNewServiceRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginLanBase::CreateNewServiceRecordL" );
-
-    delete iServiceRecord; 
-    iServiceRecord = NULL;
-    
-    iServiceRecord = static_cast<CCDServiceRecordBase *>
-                (CCDRecordBase::RecordFactoryL(KCDTIdLANServiceRecord));
-
-    // I do not think that we have to use the default record,
-    // but for compatibility with ApEngine, we write all fields 
-
-    CCDLANServiceRecord* record = 
-                            static_cast<CCDLANServiceRecord *>(iServiceRecord);
-
-
-    if( FeatureSupported( KFeatureIdIPv6 ) )
-        {
-        record->iIfNetworks.SetL( KDefIspIfNetworksIPv4IPv6LAN );
-        }
-    else
-        {
-        record->iIfNetworks.SetL( KDefIspIfNetworksIPv4 );
-        }
-
-//    record->iIpNetmask.SetL();
-    
-    record->iIpGateway.SetL( KUnspecifiedIPv4 );        
-    record->iIpAddrFromServer.SetL( KDefIpAddrFromServer );
-    
-    record->iIpAddr.SetL( KUnspecifiedIPv4 );
-    
-    record->iIpDnsAddrFromServer.SetL( KDefIpDnsAddrFromServer );
-    
-    record->iIpNameServer1.SetL( KUnspecifiedIPv4 );
-    record->iIpNameServer2.SetL( KUnspecifiedIPv4 );
-    record->iIp6DnsAddrFromServer.SetL( KDefIp6DnsAddrFromServer );
-    record->iIp6NameServer1.SetL( KDynamicIpv6Address );
-    record->iIp6NameServer2.SetL( KDynamicIpv6Address );
-        
-//        record->iIpAddrLeaseValidFrom.SetL();
-//        record->iIpAddrLeaseValidTo.SetL();
-        
-    if ( KDefIpAddrFromServer )
-        {
-        record->iConfigDaemonManagerName.SetL( KDaemonManagerName );
-        record->iConfigDaemonName.SetL( KConfigDaemonName );
-        }
-    else
-        {
-        record->iConfigDaemonManagerName.SetL( KEmpty );
-        record->iConfigDaemonName.SetL( KEmpty );
-        }
-
-//        record->iServiceExtensionTableName.SetL();
-//        record->iServiceExtensionTableRecordId.SetL();
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginLanBase::PrepareToUpdateRecordsL()
-// --------------------------------------------------------------------------
-//        
-EXPORT_C void CCmPluginLanBase::PrepareToUpdateRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginLanBase::PrepareToUpdateRecordsL" );
-    
-    CheckDNSServerAddressL( ETrue, 
-                            ServiceRecord().iIp6NameServer1,
-                            ServiceRecord().iIp6NameServer2,
-                            ServiceRecord().iIp6DnsAddrFromServer );
-                            
-    CheckDNSServerAddressL( EFalse,
-                            ServiceRecord().iIpNameServer1,
-                            ServiceRecord().iIpNameServer2,
-                            ServiceRecord().iIpDnsAddrFromServer );
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmpluginmultilinedialog.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CCmPluginMultiLineDialog.
-*
-*/
-
-#include "cmpluginmultilinedialog.h"
-
-// ---------------------------------------------------------------------------
-// CCmPluginMultiLineDialog::NewL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CCmPluginMultiLineDialog* CCmPluginMultiLineDialog::NewL(
-                           TDes&  aText1, TDes&  aText2,
-                           TTone aTone )
-    {
-    CCmPluginMultiLineDialog* self = 
-        new (ELeave) CCmPluginMultiLineDialog(aTone);
-    CleanupStack::PushL(self);
-
-    self->SetDataL( aText1, aText2 );
-
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginMultiLineDialog::CCmPluginMultiLineDialog
-// ---------------------------------------------------------------------------
-//
-CCmPluginMultiLineDialog::CCmPluginMultiLineDialog( const TTone& aTone )
-: CAknMultiLineDataQueryDialog( aTone )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginMultiLineDialog::UpdateLeftSoftKeyL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginMultiLineDialog::UpdateLeftSoftKeyL()
-    {
-    CAknMultiLineDataQueryDialog::UpdateLeftSoftKeyL();
-    MakeLeftSoftkeyVisible( ETrue );
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmsettingsui.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CCmSettingsUi.
-*
-*/
-
-#include <cmsettingsui.h>
-#include "cmsettingsuiimpl.h"
-#include <cmcommonconstants.h>
-
-//-----------------------------------------------------------------------------
-//  CCmSettingsUi::NewL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C CCmSettingsUi* CCmSettingsUi::NewL()
-    {
-    CCmSettingsUi* self = new (ELeave) CCmSettingsUi();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );   // self
-    return self;
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmSettingsUi::CCmSettingsUi()
-//-----------------------------------------------------------------------------
-//
-CCmSettingsUi::CCmSettingsUi()
-    {
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmSettingsUi::~CCmSettingsUi()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C CCmSettingsUi::~CCmSettingsUi()
-    {
-    delete iImpl;
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmSettingsUi::ConstructL()
-//-----------------------------------------------------------------------------
-//
-void CCmSettingsUi::ConstructL()
-    {
-    iImpl = CCmSettingsUiImpl::NewL();
-    }
-    
-//-----------------------------------------------------------------------------
-//  CCmSettingsUi::RunSettingsL()
-//-----------------------------------------------------------------------------
-//
-EXPORT_C CCmSettingsUi::TResult CCmSettingsUi::RunSettingsL()
-    {
-    if ( iImpl->RunSettingsL() == KDialogUserExit )
-        {
-        return EExit;
-        }
-     else
-        {
-        return EBack;
-        }
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmSettingsUi::SelectDestinationDlgL()
-//-----------------------------------------------------------------------------
-//    
-EXPORT_C TBool CCmSettingsUi::SelectDestinationDlgL( TUint32& aDestinationId )
-    {
-    return iImpl->SelectDestinationDlgL( aDestinationId );
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmsettingsuiimpl.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CCmSettingsUiImpl.
-*
-*/
-
-#include <cmmanager.rsg>
-
-#include "cmsettingsuiimpl.h"
-#include "cmmanagerimpl.h"
-#include "destdlg.h"
-#include <cmcommonconstants.h>
-#include "selectdestinationdlg.h"
-#include <data_caging_path_literals.hrh>
-
-//-----------------------------------------------------------------------------
-//  CCmSettingsUiImpl::NewL()
-//-----------------------------------------------------------------------------
-//
-CCmSettingsUiImpl* CCmSettingsUiImpl::NewL()
-    {
-    CCmSettingsUiImpl* self = new (ELeave) CCmSettingsUiImpl();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmSettingsUiImpl::CCmSettingsUiImpl
-//-----------------------------------------------------------------------------
-//
-CCmSettingsUiImpl::CCmSettingsUiImpl():
-    iResourceReader( *CCoeEnv::Static() )
-    {
-    }
-
-//-----------------------------------------------------------------------------
-// CCmSettingsUiImpl::LoadResourceL
-// Load the resource for the dll module
-// ----------------------------------------------------------------------------
-//
-TInt CCmSettingsUiImpl::LoadResourceL ()
-    {    
-    // Add resource file.
-    TParse* fp = new(ELeave) TParse(); 
-    TInt err = fp->Set( KACMManagerResDirAndFileName, 
-                        &KDC_RESOURCE_FILES_DIR, 
-                        NULL ); 
-    if ( err != KErrNone)
-        {
-        User::Leave( err );
-        }   
-
-    TFileName resourceFileNameBuf = fp->FullName();
-    delete fp;
-
-    iResourceReader.OpenL (resourceFileNameBuf);
-    return err;
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmSettingsUiImpl::~CCmSettingsUiImpl
-//-----------------------------------------------------------------------------
-//
-CCmSettingsUiImpl::~CCmSettingsUiImpl()
-    {
-    delete iCmManagerImpl;
-    iResourceReader.Close();    
-    }
-
-//-----------------------------------------------------------------------------
-//  CCmSettingsUiImpl::ConstructL
-//-----------------------------------------------------------------------------
-//
-void CCmSettingsUiImpl::ConstructL()
-    {
-    iCmManagerImpl = CCmManagerImpl::NewL();
-    LoadResourceL();
-    AknsUtils::SetAvkonSkinEnabledL( ETrue );
-    }
-    
-//-----------------------------------------------------------------------------
-//  CCmSettingsUiImpl::RunSettingsL
-//-----------------------------------------------------------------------------
-//
-TInt CCmSettingsUiImpl::RunSettingsL()
-    {
-    CDestDlg* destDlg = new (ELeave) CDestDlg;
-
-    TUint32 selected = 0;
-    // No need to push it on to the cleanup stack as CEikDialog::PrepareLC
-    // does this favour for us.
-    
-    TBool exiting = EFalse;
-    
-    TInt result = destDlg->ConstructAndRunLD( 
-                                        iCmManagerImpl, 0, selected, exiting );
-        
-    return ( exiting ) ? KDialogUserExit: KDialogUserBack;
-    }    
-
-//-----------------------------------------------------------------------------
-//  CCmSettingsUiImpl::SelectDestinationDlgL
-//-----------------------------------------------------------------------------
-//
-TBool CCmSettingsUiImpl::SelectDestinationDlgL( TUint32& aDestinationId )
-    {
-    CSelectDestinationDlg* dlg = CSelectDestinationDlg::NewL( aDestinationId,
-                                                              *iCmManagerImpl );
-                                                              
-    return dlg->ExecuteLD( R_CMMANAGER_LIST_QUERY_WITH_MSGBOX );    
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmtransactionhandler.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,188 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Common transaction handler of framework and plugins.
-*
-*/
-
-#include <e32std.h>
-#include <e32base.h>
-
-#include "cmlogger.h"
-#include "cmmanagerimpl.h"
-#include "cmtransactionhandler.h"
-
-using namespace CommsDat;
-
-const TUint32 KMaxOpenTransAttempts = 10;
-const TUint32 KRetryAfter = 100000;
-
-// ---------------------------------------------------------------------------
-// CCmTransactionHandler::NewL
-// ---------------------------------------------------------------------------
-//
-CCmTransactionHandler* CCmTransactionHandler::NewL( CMDBSession& aDb )
-    {
-    CCmTransactionHandler* self = new (ELeave) CCmTransactionHandler( aDb );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );   // self
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmTransactionHandler::CCmTransactionHandler
-// ---------------------------------------------------------------------------
-//
-CCmTransactionHandler::CCmTransactionHandler( CMDBSession& aDb )
-    : iDb( aDb )
-    {
-    CLOG_CREATE;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmTransactionHandler::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CCmTransactionHandler::ConstructL()
-    {
-    TRAPD( err, CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl ) );
-    
-    if( !err )
-        {
-        iProtectionFlag = ECDProtectedWrite;
-        }
-    else
-        {
-        iProtectionFlag = 0;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmTransactionHandler::~CCmTransactionHandler
-// ---------------------------------------------------------------------------
-//
-CCmTransactionHandler::~CCmTransactionHandler()
-    {
-    CLOG_CLOSE;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmTransactionHandler::OpenTransactionLC
-// ---------------------------------------------------------------------------
-//
-void CCmTransactionHandler::OpenTransactionLC( TBool aSetAttribs )
-    {
-    LOGGER_ENTERFN( "CCmTransactionHandler::OpenTransactionL" );
-
-    ++iRefCount;
-    CLOG_WRITE_1( "Refs: [%d]", iRefCount );
-
-    // To call ::Close() on leave
-    CleanupClosePushL( *this );
-
-    // We don't have parent destination -> Session is opened only once        
-    if( !iDb.IsInTransaction() )
-        {
-        TInt err( KErrNone );
-        TUint32 attempts( KMaxOpenTransAttempts );
-        
-        do
-            {
-            CLOG_WRITE( "Opening" );
-            TRAP( err, iDb.OpenTransactionL() );
-            CLOG_WRITE_1( "Error: [%d]", err );
-            
-            if( err )
-                {
-                User::After( KRetryAfter );
-                }
-            }while( err && attempts-- );
-
-        User::LeaveIfError( err );
-        
-        if( aSetAttribs )
-            {
-            iDb.SetAttributeMask( ECDHidden | iProtectionFlag );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmTransactionHandler::CommitTransactionL
-// ---------------------------------------------------------------------------
-//
-void CCmTransactionHandler::CommitTransactionL( TInt aError )
-    {
-    LOGGER_ENTERFN( "CCmTransactionHandler::CommitTransactionL" );
-    
-    --iRefCount;
-    CLOG_WRITE_1( "ref: [%d]", iRefCount );
-    CLOG_WRITE_1( "Error: [%d]", aError );
-
-    CleanupStack::Pop( this );
-
-    if( !iRefCount )
-        {
-        if( aError )
-            {
-            iDb.RollbackTransactionL();
-            }
-        else
-            {
-            iDb.CommitTransactionL();
-            }
-
-        iDb.ClearAttributeMask( ECDHidden | ECDProtectedWrite );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmTransactionHandler::Close
-// ---------------------------------------------------------------------------
-//
-void CCmTransactionHandler::Close()
-    {
-    LOGGER_ENTERFN( "CCmTransactionHandler::Close" );
-    
-    if( 0 == iRefCount )
-        {
-        CLOG_WRITE( "No active transaction. Do nothing" );
-        return;
-        }
-
-    if( !iDb.IsInTransaction() )
-        // Sometimes CommsDat closes the transaction 
-        // on its own decision w/o any notification or reaseon.
-        // e.g. when you try to delete a non-existing record.
-        // It leaves with KErrNotFound, but rolls back the transaction.
-        {
-        CLOG_WRITE( "CommsDat already rolled back transaction. :(((" );
-        iRefCount = 0;
-        }
-    else
-        {
-        --iRefCount;
-        CLOG_WRITE_1( "ref: [%d]", iRefCount );
-
-        if( !iRefCount )
-            {
-            iDb.ClearAttributeMask( ECDHidden | ECDProtectedWrite );
-            
-            if( iDb.IsInTransaction() )
-                {
-                TRAP_IGNORE( iDb.RollbackTransactionL() );
-                }
-            }
-        }
-    }
--- a/cmmanager/cmmgr/Framework/Src/cmwizard.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,487 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Wizard used for adding connection methods
-*
-*/
-
-#include <AknWaitDialog.h>
-#include <cmmanager.rsg>
-#include <StringLoader.h>
-#include <avkon.hrh>
-#include "cmwizard.h"
-#include <cmcommonconstants.h>
-#include <cmcommonui.h>
-#include "cmdestinationimpl.h"
-#include "cmlogger.h"
-#include "cmmanagerimpl.h"
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-#include "selectdestinationdlg.h"
-
-using namespace CMManager;
-
-// ---------------------------------------------------------------------------
-// CCmWizard::CCmWizard
-// ---------------------------------------------------------------------------
-//
-CCmWizard::CCmWizard( CCmManagerImpl& aCmManager ) 
-    : iCmManager( aCmManager )
-    {
-    CLOG_CREATE;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmWizard::~CCmWizard
-// ---------------------------------------------------------------------------
-//
-CCmWizard::~CCmWizard()
-    {
-    if( iCheckConnDlg )
-        {
-        delete iCheckConnDlg;
-        }
-    CLOG_CLOSE;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmWizard::CreateConnectionMethodL
-// ---------------------------------------------------------------------------
-//
-TInt CCmWizard::CreateConnectionMethodL
-                                    ( CCmDestinationImpl* aTargetDestination )
-    {
-    TInt index( KErrCancel );
-    
-    LOGGER_ENTERFN( "CCmWizard::CreateConnectionMethodL" );
-    TBool wizardCancelled = EFalse; // indicates if the wizard has got cancelled
-    TUint32 bearerType = 0;
-    TBool manuallyConfigure ( EFalse );
-    
-    if ( AutoCheckForCmsL() )
-        {
-        RArray<TUint32> availableBearers( KCmArrayMediumGranularity );
-        CleanupClosePushL( availableBearers );
-
-        CLOG_WRITE( "CCmWizard::Starting CheckForCms" );
-        CheckForCmsL( availableBearers );
-
-        // If user has cancelled the dialog, then (s)he wanted to terminate
-        // the whole procedure.
-        if ( iCheckConnDlgCancelled )
-            {
-            CLOG_WRITE( "CCmWizard::wizardCancelled" );
-            wizardCancelled = ETrue;
-            }
-        else
-            {
-            // If there's coverage for at least one of the bearer types
-            if ( availableBearers.Count() )
-                {
-                CLOG_WRITE_1( "CCmWizard::CreateConnectionMethodL av. bearers: [%d]",
-                               availableBearers.Count() );
-                // Show available conn methods in a list from which user has to
-                // select.
-                bearerType = TCmCommonUi::ShowAvailableMethodsL
-                                                ( availableBearers,
-                                                  iCmManager );
-                if ( !bearerType )
-                    {
-                    wizardCancelled = ETrue;
-                    CLOG_WRITE( "CCmWizard::wizardCancelled" );
-                    }
-                }
-            else    // no coverage at all
-                {
-                CLOG_WRITE( "CCmWizard::CreateConnectionMethodL no available bearers, manual selection." );
-                // "Do you want to configure conn methods manually?"
-                if ( ManualCheckForCmsL() )
-                    {
-                    // Yes, select a bearer manually
-                    bearerType = TCmCommonUi::SelectBearerL( iCmManager );
-                    if ( !bearerType )
-                        {
-                        // Cancelled dialog
-                        wizardCancelled = ETrue;
-                        }
-                    else
-                        {
-                        manuallyConfigure = ETrue;
-                        }
-                    }
-                else
-                    {
-                    // No, user has cancelled the dialog
-                    wizardCancelled = ETrue;
-                    }
-                }
-            }
-
-        CleanupStack::PopAndDestroy( &availableBearers );
-        }
-    else    // "No" for checking conn methods automatically
-        {
-        CLOG_WRITE( "CCmWizard::AutoCheckForCmsL returned FALSE" );
-        // Manual bearer selection
-        bearerType = TCmCommonUi::SelectBearerL( iCmManager );
-        if ( !bearerType )
-            {
-            // Cancelled dialog
-            wizardCancelled = ETrue;
-            }
-        else
-            {
-            manuallyConfigure = ETrue;
-            }
-        }
-
-    if ( !wizardCancelled )
-        {
-        CCmPluginBase* plugin = iCmManager.CreateConnectionMethodL(
-                                            bearerType, aTargetDestination );
-        CleanupStack::PushL( plugin );
-
-        CLOG_WRITE( "CCmWizard::CreateConnectionMethodL plugin created, starting initialization" );
-
-        // Bearer-specific UI-supported initialization is done by plug-ins
-	    TBool ret = EFalse;
-	    TRAPD(err, ret = plugin->InitializeWithUiL( manuallyConfigure ) );
-        if ( err == KErrNone && ret )
-            {
-            CCmDestinationImpl* targetDest = aTargetDestination;
-            // If target destination is not yet specified...
-            if ( !aTargetDestination )
-                {
-                // For virtual bearers: eliminated the underlying destination 
-                // from the destination selection dialog
-                TUint32 targetDestId( 0 );
-                
-                RArray<TUint32> destArray( iCmManager.DestinationCountL() );
-                CleanupClosePushL( destArray );
-                iCmManager.AllDestinationsL( destArray );
-                // now do the filtering
-                plugin->FilterPossibleParentsL( destArray );
-                
-                if ( !destArray.Count() )
-                    {
-                    // there are no destinations to put the CM into
-                    TCmCommonUi::ShowNoteL( R_CMWIZARD_NO_VPN_STACKING,
-                                            TCmCommonUi::ECmErrorNote );
-        
-                    CleanupStack::PopAndDestroy( &destArray );
-                    CleanupStack::PopAndDestroy( plugin );
-        
-                    CLOG_WRITE_1( "CCmWizard::CreateConnectionMethodL no valid parents after filtering, index: [%d]", index );
-                    return index;
-                    }
-                    
-                // ... then let the user select a destination.
-                CSelectDestinationDlg* dlg = CSelectDestinationDlg::NewL( targetDestId,
-                                                                          iCmManager,
-                                                                          &destArray );
-                dlg->ExecuteLD( R_CMMANAGER_LIST_QUERY_WITH_MSGBOX );
-        
-                CleanupStack::PopAndDestroy( &destArray );
-        
-                if ( targetDestId )
-                    {
-                    // CREATE an object based on an ID.
-                    targetDest = iCmManager.DestinationL( targetDestId );
-                    CleanupStack::PushL( targetDest );
-                    }
-                }
-
-            CLOG_WRITE_1( "CCmWizard::CreateConnectionMethodL target dest: [0x%x]",
-                           targetDest );
-    
-            // If the target destination is still unspecified at this point,
-            // then the only reason could be that the previous dialog was
-            // cancelled ==> do something only if we have the target 
-            // destination
-            if ( targetDest )
-                {
-                plugin->UpdateL();  // commit changes
-    
-                index = iCmManager.CopyConnectionMethodL( *targetDest,
-                                                                    *plugin );
-
-                RArray<TUint32> additionalCms;
-                CleanupClosePushL (additionalCms);
-                plugin->GetAdditionalUids( additionalCms );
-                if ( additionalCms.Count() )
-                    {//if there are additional cms created, move them to the target destination as well
-                    for ( TInt i = 0; i<additionalCms.Count(); i++)
-                        {
-                        CCmPluginBase* cm = iCmManager.GetConnectionMethodL( additionalCms[i] );
-                        CleanupStack::PushL(cm);
-                        iCmManager.CopyConnectionMethodL( *targetDest,
-                                                                    *cm );
-                        CleanupStack::PopAndDestroy( cm );
-                        }
-                    }
-                CleanupStack::PopAndDestroy( &additionalCms );
-
-                HBufC* destName = targetDest->NameLC();
-    
-                TCmCommonUi::ShowNoteL( R_CMWIZARD_NEW_METHOD_ADDED,
-                                        *destName,
-                                        TCmCommonUi::ECmOkNote );
-    
-                CleanupStack::PopAndDestroy( destName );
-    
-                // Here's a tricky one: if 'aTargetDestination' was NULL, then
-                // I had to create 'targetDest' myself (with
-                // iCmManager.DestinationL), consequently I have to
-                // free it up, too.
-                if ( !aTargetDestination )
-                    {
-                    CleanupStack::PopAndDestroy( targetDest );
-                    }
-                }
-            else // Wi-Fi may have set IAP in database. So, delete it.
-                {
-                CLOG_WRITE( "CCmWizard::CreateConnectionMethodL, handling cancel add destination -- start" );                                   
-                RArray<TUint32> additionalCms;
-                CleanupClosePushL (additionalCms);
-    
-                plugin->GetAdditionalUids( additionalCms );
-                CLOG_WRITE_1( "CCmWizard::CreateConnectionMethodL, addtionalCms count [%d]", additionalCms.Count() );
-                for ( TInt i = 0; i<additionalCms.Count(); i++)
-                    {
-                    CCmPluginBase* cm = iCmManager.GetConnectionMethodL( additionalCms[i] );
-                    CleanupStack::PushL(cm);
-                    cm->DeleteL( ETrue );
-                    CleanupStack::PopAndDestroy( cm );
-                    }
-                // If plugin hasn't got Iap Id, it's "normal" CM which has not been saved
-                // into CommsDat yet. Otherwise it's Wifi CM and has to be deleted by using
-                // DeleteL() method. 
-                if( plugin->GetIntAttributeL( ECmIapId ) )
-                    {
-                    plugin->DeleteL( ETrue );
-                    }
-    
-                CleanupStack::PopAndDestroy( &additionalCms );
-                CLOG_WRITE( "CCmWizard::CreateConnectionMethodL, handling cancel add destination -- end" );
-                }
-    		    }
-        CleanupStack::PopAndDestroy( plugin );
-        }
-       
-    return index;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmWizard::DialogDismissedL
-// ---------------------------------------------------------------------------
-//
-void CCmWizard::DialogDismissedL( TInt aButtonId )
-    {
-    LOGGER_ENTERFN( "CCmWizard::DialogDismissedL" );
-
-    CLOG_WRITE_1( "CCmWizard::DialogDismissedL, aButtonId: [%d]", aButtonId );
-    if ( aButtonId == EAknSoftkeyCancel )
-        {
-        if ( iCheckConnDlg != NULL )
-            {
-            CLOG_WRITE( "CCmWizard::CheckConnDlg is not NULL" );
-            iCheckConnDlgCancelled = ETrue;
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmWizard::AutoCheckForCmsL
-// ---------------------------------------------------------------------------
-//
-TBool CCmWizard::AutoCheckForCmsL() const
-    {
-    LOGGER_ENTERFN( "CCmWizard::AutoCheckForCmsL" );
-    // Automatically check for available conn methods?
-    TInt retval =
-            TCmCommonUi::ShowConfirmationQueryL( R_CMWIZARD_AUTOMATIC_CHECK );
-
-    return ( retval == EAknSoftkeyYes || retval == EAknSoftkeyOk )
-            ? ETrue : EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmWizard::ManualCheckForCmsL
-// ---------------------------------------------------------------------------
-//
-TBool CCmWizard::ManualCheckForCmsL() const
-    {
-    LOGGER_ENTERFN( "CCmWizard::ManualCheckForCmsL" );
-    // Manually configure CMs?
-    TInt retval =
-            TCmCommonUi::ShowConfirmationQueryL(    
-                                             R_CMWIZARD_MANUAL_CONFIGURATION );
-
-    return ( retval == EAknSoftkeyYes || retval == EAknSoftkeyOk )
-            ? ETrue : EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmWizard::CheckForCmsL
-// ---------------------------------------------------------------------------
-//
-void CCmWizard::CheckForCmsL( RArray<TUint32>& aCoverageArray )
-    {
-    LOGGER_ENTERFN( "CCmWizard::CheckForCmsL" );
-    // Show a wait dialog
-    iCheckConnDlgCancelled = FALSE;
-    iCheckConnDlg = new (ELeave) CAknWaitDialog(
-                          ( REINTERPRET_CAST( CEikDialog**, &iCheckConnDlg )) );
-    
-    iCheckConnDlg->SetCallback( this );
-    
-    iCheckConnDlg->SetTone( CAknNoteDialog::EConfirmationTone );
-
-    HBufC* text = StringLoader::LoadLC( R_CMWIZARD_CHECKING_METHODS );
-    iCheckConnDlg->SetTextL( *text );
-    CleanupStack::PopAndDestroy( text );
-
-    iCheckConnDlg->ExecuteLD( R_CMMANAGER_WAIT_NOTE );
-
-    RArray<TUint32> bearers( KCmArrayMediumGranularity );
-    CleanupClosePushL( bearers );
-
-    iCmManager.SupportedBearersL( bearers );
-
-    for ( TInt i = 0; i < bearers.Count() && !iCheckConnDlgCancelled; i++ )
-        {
-        TBool avail( EFalse );
-        
-        TRAPD( err, avail = iCmManager.GetBearerInfoBoolL( bearers[i], ECmCoverage ) );
-
-        CLOG_WRITE_2( "CCmWizard::CheckForCms, bearer [%d] coverage error [%d]", i, err );
-        
-        if( err )
-            {
-            continue;
-            }
-            
-
-        if ( avail &&
-             iCmManager.GetBearerInfoBoolL( bearers[i], ECmAddToAvailableList ) )
-            {
-            aCoverageArray.AppendL( bearers[i] );
-            CLOG_WRITE_1( "CCmWizard::CheckForCms, bearer [%d] appended", i );
-            }
-        }
-
-    CleanupStack::PopAndDestroy( &bearers );
-
-    // Dismiss wait dialog
-    if( !iCheckConnDlgCancelled )
-        {
-        CLOG_WRITE( "CCmWizard::CheckForCms, cancelling wait dlg" );
-        iCheckConnDlg->SetCallback( NULL );
-        iCheckConnDlg->ProcessFinishedL();
-        CLOG_WRITE( "CCmWizard::CheckForCms, wait dialog deleted" );
-        }
-    else
-        {
-        CLOG_WRITE( "CCmWizard::CheckForCms, wait dlg was already cancelled" );
-        }
-    
-    
-    // Set the member to NULL every case
-    iCheckConnDlg = NULL;
-    }
-
-
-
-// ---------------------------------------------------------------------------
-// CCmWizard::FindTargetDestinationL
-// ---------------------------------------------------------------------------
-//
-TUint32 CCmWizard::FindTargetDestinationL( CCmPluginBase* aPlugin )
-    {
-    LOGGER_ENTERFN( "CCmWizard::FindTargetDestinationL" );
-
-    // Tries to read the destination id
-    TUint32 targetDestId (0); 
-    TRAPD( err, targetDestId = 
-                aPlugin->GetIntAttributeL( ECmNextLayerSNAPId ) );
-                
-    // only supported by virtual bearers, don't leave        
-    if ( err && err != KErrNotSupported )
-       {
-       User::Leave( err );
-       }
-                
-    // targetDestId == 0 means that not destination but a connection 
-    // method have been selected
-    if ( targetDestId == 0 )
-        {
-        // Now the destination containing the connection method 
-        // should be obtained
-        TUint32 targetCmId (0); 
-        TRAPD( err, targetCmId = 
-                    aPlugin->GetIntAttributeL( ECmNextLayerIapId ) );
-        
-        // only supported by virtual bearers, don't leave        
-        if ( err && err != KErrNotSupported )
-            {
-            User::Leave( err );
-            }
-            
-        targetDestId = FindParentDestinationL( targetCmId );   
-        }
-        
-    return targetDestId;    
-    }
- 
-// ---------------------------------------------------------------------------
-// CCmWizard::FindParentDestinationL
-// ---------------------------------------------------------------------------
-//
-TUint32 CCmWizard::FindParentDestinationL( TUint32 aCmId )
-    {
-    LOGGER_ENTERFN( "CCmWizard::FindParentDestinationL" );
-
-    TBool found = EFalse;
-    TUint32 targetDestId (0); 
-    
-    RArray<TUint32> destinations;
-   
-    iCmManager.AllDestinationsL( destinations );
-    CleanupClosePushL( destinations );
-    
-    RArray<TUint32> cms;
-    
-    for ( TInt i = 0; i < destinations.Count() && !found; i++ )
-        {            
-        CCmDestinationImpl* dest = 
-                          iCmManager.DestinationL( destinations[i] );
-        CleanupStack::PushL( dest );
-        dest->ConnectMethodIdArrayL( cms );
-        CleanupClosePushL( cms );
-
-        for ( TInt j = 0; j < cms.Count() && !found; j++ )
-            {
-            if( cms[j] == aCmId)
-                {
-                targetDestId = destinations[i];
-                found = ETrue;
-                }
-            }
-        CleanupStack::PopAndDestroy( &cms );
-        CleanupStack::PopAndDestroy( dest );
-        }
-
-    CleanupStack::PopAndDestroy( &destinations );
-
-    return targetDestId;    
-    }
--- a/cmmanager/cmmgr/Framework/Src/destdlg.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1696 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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:  Dialog for setting the gateway. It's used temporarily.
-*
-*/
-
-#include <avkon.hrh>
-#include <eikdef.h>
-#include <eikenv.h>
-#include <eikedwin.h>
-#include <gulicon.h>
-#include <cmmanager.rsg>
-#include <data_caging_path_literals.hrh>
-#include <cmmanager.mbg> 
-#include <badesca.h>        // CDesCArray
-#include <aknnavide.h>
-#include <akntitle.h>
-#include <eikmenup.h>
-#include <StringLoader.h>
-#include <AknIconArray.h>
-#include <aknnavilabel.h>
-#include <textresolver.h>
-
-#include <hlplch.h>
-#include <csxhelp/cp.hlp.hrh>
-
-#include <cmcommonconstants.h>
-#include <cmdestination.h>
-#include <cmcommonui.h>
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-
-#include "cmmanager.hrh"
-#include "destlistitem.h"
-#include "destlistitemlist.h"
-#include "destdlg.h"
-#include "cmwizard.h"
-#include "uncatdlg.h"
-#include "cmdlg.h"    
-#include "cmdesticondialog.h"
-#include "cmlistboxmodel.h"
-#include "cmlistitem.h"
-#include <mcmdexec.h>
-#include "ccmdexec.h"
-#include "cmlogger.h"
-
-using namespace CMManager;
-using namespace CommsDat;
-
-// ---------------------------------------------------------------------------
-// CDestDlg::ConstructAndRunLD
-// Constructs the dialog and runs it.
-// ---------------------------------------------------------------------------
-//
-TInt CDestDlg::ConstructAndRunLD( CCmManagerImpl* aCmManagerImpl,  
-                                  TUint32 aHighlight,
-                                  TUint32& aSelected,
-                                  TBool& aExiting )
-    {
-    iHighlight = aHighlight;
-    iSelected = &aSelected;
-    iCmManagerImpl = aCmManagerImpl;
-    iExiting = &aExiting;
-    *iExiting = EFalse;
-    
-    iCmdExec = new (ELeave) CCmdExec(*this);
-
-    ConstructL( R_DEST_MENUBAR );
-    PrepareLC( R_DEST_DIALOG );    
-    iModel = new( ELeave )CDestListboxModel();
-    iConnSettingsImpl = CCmConnSettingsUiImpl::NewL( iCmManagerImpl );
-
-    // CommsDat notifier should be started with this first UI view for
-    // it will create active object
-    iCmManagerImpl->StartCommsDatNotifierL();
-    iCmManagerImpl->WatcherRegisterL( this );
-    
-    return RunLD();
-    }
-    
-// ---------------------------------------------------------------------------
-// CDestDlg::CDestDlg()
-// ---------------------------------------------------------------------------
-//
-CDestDlg::CDestDlg() 
-    : iModelPassed( EFalse )
-    , iExitReason( KDialogUserExit )
-    , iEscapeArrived( EFalse )
-    {
-    CLOG_CREATE;
-    }
-    
-// ---------------------------------------------------------------------------
-// CDestDlg::~CApSelectorDialog
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CDestDlg::~CDestDlg()
-    {
-    // iModel is deleted by the ListBox because LB owns the model...
-    // of course only after we passed ownership...
-    if ( !iModelPassed )
-        {
-        delete iModel;
-        }
-    if ( iNaviDecorator )
-        {
-        delete iNaviDecorator;
-        }
-    if ( iTitlePane )
-        {
-        // set old text back, if we have it...
-        if ( iOldTitleText )
-            {
-            TRAP_IGNORE( iTitlePane->SetTextL( *iOldTitleText ) );
-            delete iOldTitleText;
-            }
-        }
-    if ( iConnSettingsImpl )
-        {
-        delete iConnSettingsImpl;            
-        }
-
-    if( iCmWizard )
-        {
-        delete iCmWizard;
-        }
-    
-    delete iCmdExec;
-    
-    CLOG_CLOSE;
-    }
-
-// ---------------------------------------------------------------------------
-// CDestDlg::PreLayoutDynInitL();
-// called by framework before dialog is shown
-// ---------------------------------------------------------------------------
-//
-void CDestDlg::PreLayoutDynInitL()
-    {
-    iListbox =
-        STATIC_CAST( CDestListbox*, Control( KDestListboxId ) );
-    iListbox->CreateScrollBarFrameL( ETrue );
-    iListbox->ScrollBarFrame()->SetScrollBarVisibilityL
-        ( CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
-    iListbox->SetListBoxObserver( this );
-
-    iListbox->Model()->SetItemTextArray( iModel );
-    iModelPassed = ETrue;
-    InitTextsL();    
-    HandleListboxDataChangeL();
-    iListbox->HandleItemAdditionL();
-    }
-
-// ----------------------------------------------------------------------------
-// CDestDlg::DynInitMenuPaneL
-// ----------------------------------------------------------------------------
-//
-void CDestDlg::DynInitMenuPaneL( TInt aResourceId,
-                                        CEikMenuPane* aMenuPane )
-    {
-    switch ( aResourceId )
-        {
-        case R_DEST_MENU:
-            {            
-            // Check if it is the 'New connection' list item 
-            // rather than a real destination
-            TUint32 listItemUid = iListbox->CurrentItemUid();
-           if ( listItemUid == KDestItemNewConnection ) 
-                {
-                aMenuPane->SetItemDimmed( ECmManagerUiCmdDestEdit, ETrue );
-                aMenuPane->SetItemDimmed( ECmManagerUiCmdDestRename, ETrue );                
-                aMenuPane->SetItemDimmed( ECmManagerUiCmdDestDelete, ETrue );                
-                aMenuPane->SetItemDimmed( ECmManagerUiCmdDestChangeIcon, ETrue );   
-                } 
-            if ( !iCmManagerImpl->IsDefConnSupported() )
-                {
-                aMenuPane->SetItemDimmed( ECmManagerUiCmdDestDefaultConnection, ETrue );
-                }
-        	if (!iCmManagerImpl->IsHelpOn())
-                {
-                aMenuPane->DeleteMenuItem( EAknCmdHelp );		    
-                }
-            break;
-            }
-        default:
-            break;
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CDestDlg::OfferKeyEventL
-// ---------------------------------------------------------------------------
-//
-TKeyResponse CDestDlg::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                       TEventCode aType )    
-    {
-    LOGGER_ENTERFN( "CDestDlg::OfferKeyEventL" );
-    CLOG_WRITE_1("Key iCode: %d", aKeyEvent.iCode );
-    
-    TKeyResponse retVal ( EKeyWasNotConsumed );
-    
-    TBool down( EFalse );
-    
-    switch ( aKeyEvent.iCode )
-        {
-        case EKeyEscape:
-            {
-            // Handling application close needs special care 
-            // because of iCmWizard 
-            if ( iCmWizard )
-                {
-                // if wizard alives then escape should do after wizard has ended.
-                CLOG_WRITE( "CDestDlg::OfferKeyEventL: Wizard in long process" );
-                iEscapeArrived = ETrue;
-                retVal = EKeyWasConsumed;
-                }
-            else    
-               {
-                CLOG_WRITE( "CDestDlg::OfferKeyEventL:Escape" );
-                retVal = CAknDialog::OfferKeyEventL( aKeyEvent, aType );
-               }
-            break;
-            }
-        case EKeyBackspace:
-            {
-            ProcessCommandL( ECmManagerUiCmdDestDelete );
-            retVal = EKeyWasConsumed;
-            break;
-            }
-        case EKeyDownArrow:
-            {
-            down = ETrue;
-            // intended flow-through
-            }
-        case EKeyUpArrow:
-            {
-            // When moving from the 'New connection' (first) item, MSK should be 'Open'
-            if ( iListbox->CurrentItemUid() == KDestItemNewConnection )
-                {
-                SetMskL( R_QTN_MSK_OPEN );
-                }                    
-            
-            // When moving to the 'New connection' (first item)
-            else if ( ( iListbox->CurrentItemIndex() == 1 && !down ) || 
-                      ( iListbox->CurrentItemIndex() + 1 == 
-                        iModel->MdcaCount() && down ) )
-                {
-                SetMskL( R_QTN_MSK_SELECT );
-                }    
-            // flow through to 'default' intended
-            }
-        default:
-            {
-            retVal = iListbox->OfferKeyEventL(aKeyEvent, aType);
-            break;
-            }
-        }
-    return retVal;
-    }
-
-// ----------------------------------------------------------------------------
-// CDestDlg::ShowDefaultSetNoteL
-// ----------------------------------------------------------------------------
-//
-void CDestDlg::ShowDefaultSetNoteL( TCmDefConnValue aSelection )
-    {
-    switch ( aSelection.iType )
-        {
-        case ECmDefConnDestination:
-        case ECmDefConnConnectionMethod:
-            {
-            HBufC* connName =  iConnSettingsImpl->CreateDefaultConnectionNameL( aSelection );
-            CleanupStack::PushL(connName);
-            TCmCommonUi::ShowNoteL( R_CMMANAGERUI_DEFAULT_CONNECTION_SET_TO,
-                                                *connName,
-                                                TCmCommonUi::ECmOkNote );
-            CleanupStack::PopAndDestroy( connName );
-            }
-        }
-    }
-
-
-// ----------------------------------------------------------------------------
-// CDestDlg::SetDefaultNaviL
-// ----------------------------------------------------------------------------
-//
-void CDestDlg::SetDefaultNaviL( TCmDefConnValue aSelection )    
-    {
-    HBufC* title = NULL;
-    
-    switch ( aSelection.iType )
-        {
-        case ECmDefConnDestination:
-        case ECmDefConnConnectionMethod:
-            {
-            HBufC* connName =  iConnSettingsImpl->CreateDefaultConnectionNameL( aSelection );
-            CleanupStack::PushL(connName);
-            title = StringLoader::LoadL( R_CMMANAGERUI_NAVI_DEFAULT, *connName );
-            CleanupStack::PopAndDestroy( connName );
-            CleanupStack::PushL( title );
-            break;
-            }
-        }    
-    
-    if ( iNaviDecorator )
-        {
-        if ( iNaviDecorator->ControlType() == 
-             CAknNavigationDecorator::ENaviLabel )
-            {
-            CAknNaviLabel* naviLabel = 
-                (CAknNaviLabel*)iNaviDecorator->DecoratedControl();
-            if ( title )
-                {
-                naviLabel->SetTextL(*title);
-                }
-            else
-                {
-                naviLabel->SetTextL( KNullDesC );
-                }
-            
-            iNaviPane->PushL( *iNaviDecorator );
-            }
-        }
-        
-    if ( title )
-        {
-        CleanupStack::PopAndDestroy( title );
-        }
-    }
-    
-// ----------------------------------------------------------------------------
-// CDestDlg::ProcessCommandL
-// ----------------------------------------------------------------------------
-//
-void CDestDlg::ProcessCommandL( TInt aCommandId )
-    {
-    LOGGER_ENTERFN( "CDestDlg::ProcessCommandL" );
-    CLOG_WRITE_1("Command: %d", aCommandId );
-
-    if ( MenuShowing() )
-        {
-        HideMenu();
-        }
-
-    switch ( aCommandId )
-        {
-        case EAknSoftkeyOptions:
-            {
-            DisplayMenuL();
-            break;
-            }
-        case ECmManagerUiCmdDestUserExit:
-            {
-            CLOG_WRITE( "CDestDlg::ProcessCommandL command: exit");
-            iExitReason = KDialogUserExit;
-            }
-        case EAknSoftkeyBack:
-            {
-            iCmManagerImpl->WatcherUnRegister();
-            TryExitL( iExitReason );
-            break;
-            }
-        case ECmManagerUiCmdDestEdit:
-            {
-            OnCommandDestinationEditL();
-            break;
-            }            
-        case ECmManagerUiCmdDestDefaultConnection:
-            {
-            TCmDCSettingSelection selection;
-            TCmDefConnValue defConnValue;
-            iCmManagerImpl->ReadDefConnL( defConnValue );
-            switch (defConnValue.iType)
-                {
-                case ECmDefConnConnectionMethod:
-                    {
-                    selection.iResult = EDCConnectionMethod;
-                    selection.iId = defConnValue.iId;
-                    break;
-                    }
-                case ECmDefConnDestination:
-                    {
-                    selection.iResult = EDCDestination;
-                    selection.iId = defConnValue.iId;
-                    break;
-                    }
-                default:
-                    {
-                    break;
-                    }
-                }
-            if ( iConnSettingsImpl->RunDefaultConnecitonRBPageL( selection ) )
-                {
-                defConnValue = selection.ConvertToDefConn();
-                ShowDefaultSetNoteL( defConnValue );
-                
-                iCmManagerImpl->WriteDefConnL( defConnValue );
-                HandleListboxDataChangeL();
-                }
-            break;
-            }
-            
-        case ECmManagerUiCmdDestChangeIcon:
-            {
-            // Check if this is UnCat
-            if ( iListbox->CurrentItemUid() == KDestItemUncategorized )
-                {
-                TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                        TCmCommonUi::ECmErrorNote );
-                break;
-                }
-
-            // Check that destination is not protected
-            CCmDestinationImpl* dest =
-                       iCmManagerImpl->DestinationL( iListbox->CurrentItemUid() );
-            CleanupStack::PushL( dest );
-            if ( dest->ProtectionLevel() )
-                {
-                TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                        TCmCommonUi::ECmErrorNote );
-
-                CleanupStack::PopAndDestroy( dest );
-                break;
-                }
-
-            TInt iconSelected = 0;
-            CCmDestinationIconDialog* popup = 
-                          new (ELeave) CCmDestinationIconDialog( iconSelected );  
-            if ( popup->ExecuteLD() )
-                {
-                dest->SetIconL( iconSelected ); // subclass implements
-                dest->UpdateL();
-                CleanupStack::PopAndDestroy( dest ); 
-                
-                HandleListboxDataChangeL();
-                break;
-                }
-
-            CleanupStack::PopAndDestroy( dest );
-
-            break;
-            
-            }
-
-            
-       case ECmManagerUiCmdDestAdd:
-            {
-            AddDestinationL();
-            break;           
-            }
-            
-        case EAknSoftkeyClear:
-        case ECmManagerUiCmdDestDelete:            
-            {
-            OnCommandDestinationDeleteL();
-            break;
-            
-            }            
-            
-        case ECmManagerUiCmdDestRename:
-            {
-            OnCommandDestinationRenameL();
-            break;
-            }
-
-        case EAknCmdHelp:
-            {
-            HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
-                                    iEikonEnv->EikAppUi()->AppHelpContextL() );
-            }
-            break;
-        
-        default:
-            {
-            break;
-            }
-        }
-    } 
-    
-// ---------------------------------------------------------------------------
-// CDestDlg::InitTextsL
-// called before the dialog is shown
-// to initialize localized textual data
-// ---------------------------------------------------------------------------
-//
-void CDestDlg::InitTextsL()
-    {
-    // set pane text if neccessary...
-    // pane text needed if not pop-up...
-    if ( iEikonEnv )
-        {
-        iStatusPane = iEikonEnv->AppUiFactory()->StatusPane();
-        iTitlePane =
-            ( CAknTitlePane* )iStatusPane->ControlL(
-                                TUid::Uid( EEikStatusPaneUidTitle ) );
-
-        iOldTitleText = iTitlePane->Text()->AllocL();
-        iTitlePane->SetTextL( 
-                        *(StringLoader::LoadLC( R_CMMANAGERUI_NAVI )) );
-
-        CleanupStack::PopAndDestroy(); // resource R_CMMANAGERUI_NAVI
-        iNaviPane = ( CAknNavigationControlContainer* ) 
-                        iStatusPane->ControlL( 
-                                TUid::Uid( EEikStatusPaneUidNavi ) );
-        iNaviDecorator = iNaviPane->CreateNavigationLabelL( KNullDesC );
-        iNaviPane->PushL( *iNaviDecorator );
-        if ( iCmManagerImpl->IsDefConnSupported() )
-            {
-            TCmDefConnValue selection;
-            selection.iType = ECmDefConnAlwaysAsk;
-            iCmManagerImpl->ReadDefConnL( selection );
-            SetDefaultNaviL( selection );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CDestDlg::SetNoOfDestsL
-// ---------------------------------------------------------------------------
-//
-void CDestDlg::SetNoOfDestsL( TInt aCount )
-    {
-    HBufC* title = NULL;
-    
-    if ( aCount == 1 )
-        {
-        title = StringLoader::LoadLC( R_QTN_NETW_CONSET_NAVI_ONE_DESTINATION );
-        }
-    else
-        {
-        title = StringLoader::LoadLC( R_QTN_NETW_CONSET_NAVI_NOF_DESTINATIONS,
-                                         aCount );
-        }
-    if (iNaviDecorator)
-        {
-        if ( iNaviDecorator->ControlType() == 
-             CAknNavigationDecorator::ENaviLabel )
-            {
-            CAknNaviLabel* naviLabel = 
-                            (CAknNaviLabel*)iNaviDecorator->DecoratedControl();
-            naviLabel->SetTextL(*title);
-            iNaviPane->PushL( *iNaviDecorator );
-            }
-        }
-        
-      CleanupStack::PopAndDestroy( title );
-    }
-
-// ---------------------------------------------------------------------------
-// CDestDlg::CreateCustomControlL
-// ---------------------------------------------------------------------------
-//
-SEikControlInfo CDestDlg::CreateCustomControlL
-( TInt aControlType )
-    {
-    SEikControlInfo controlInfo;
-    controlInfo.iTrailerTextId = 0;
-    controlInfo.iFlags = 0;
-    if ( aControlType == KDestListboxType )
-        {
-        controlInfo.iControl = new ( ELeave ) CDestListbox;
-        }
-    else
-        {
-        controlInfo.iControl = NULL;
-        }
-    return controlInfo;
-    }
-
-// ---------------------------------------------------------------------------
-// CDestDlg::OkToExitL
-// Good to know : EAknSoftkeyCancel is never called, because
-// EEikDialogFlagNotifyEsc flag is not set in the resource.
-// ---------------------------------------------------------------------------
-//
-TBool CDestDlg::OkToExitL( TInt aButtonId )
-    {
-    CLOG_WRITE_1( "CDestDlg::OkToExitL buttonId: %d", aButtonId );
-    
-    // Translate the button presses into commands for the appui & current
-    // view to handle
-    TBool retval( EFalse );
-    switch ( aButtonId )
-        {
-        case EAknSoftkeyOk:
-        case EAknSoftkeySelect:
-        case ECmManagerUiCmdCmAdd:
-            {
-            if ( !iProcessing )
-                {
-                iProcessing = ETrue;
-                ProcessCommandL( ECmManagerUiCmdDestEdit );
-                iProcessing = EFalse;
-                }
-            break;
-            }
-        case EAknSoftkeyBack:
-            {
-            if (!iProcessing)
-                {
-                *iExiting = EFalse;
-                retval = ETrue;                
-                }
-            break;
-            }
-        case EAknSoftkeyOptions:
-            {
-            if ( !iProcessing )
-                {
-                DisplayMenuL();
-                }
-            break;
-            }
-        default:
-            {
-
-            CLOG_WRITE_1( "CDestDlg::OkToExitL: High level stop %d", aButtonId );
-
-            *iExiting = ETrue;
-            retval = ETrue;
-            break;
-            }
-        }
-    return retval;
-    }
-
-// ---------------------------------------------------------------------------
-// CDestDlg::HandleListBoxEventL
-// ---------------------------------------------------------------------------
-void CDestDlg::HandleListBoxEventL( CEikListBox* /*aListBox*/,
-                                    TListBoxEvent aEventType )
-    {
-    LOGGER_ENTERFN( "CDestDlg::HandleListBoxEventL" );
-
-    switch ( aEventType )
-        {
-        case EEventEnterKeyPressed:
-        case EEventItemSingleClicked:
-            {
-            if ( !iProcessing )
-                {
-                iCmdExec->Execute();
-                }
-            break;
-            }
-        case EEventEditingStarted:
-            {
-            break;
-            }
-        case EEventEditingStopped:
-            {
-            break;
-            }
-        default:
-            {
-            break;
-            };
-        };
-    }
-
-// ----------------------------------------------------------------------------
-// CDestDlg::HandleListboxDataChangeL
-// called before the dialog is shown to initialize listbox data
-// ----------------------------------------------------------------------------
-//
-void CDestDlg::HandleListboxDataChangeL()
-    {
-    LOGGER_ENTERFN( "CDestDlg::HandleListboxDataChangeL" );
-
-    iCmManagerImpl->OpenTransactionLC();
-    
-    iModel->ResetAndDestroy();
-    RArray<TUint32> destIdArray = RArray<TUint32>( KCmArrayBigGranularity );
-
-    CArrayPtr< CGulIcon >* icons = new( ELeave ) CAknIconArray( KGranularity );
-    CleanupStack::PushL( icons );
-
-    MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-    
-    iCmManagerImpl->AllDestinationsL(destIdArray);
-    
-    // Append the destinations to the list
-    CleanupClosePushL( destIdArray ); // 1
-    
-   TCmDefConnValue defConnSel;
-   defConnSel.iType = ECmDefConnAlwaysAsk;//default value
-   if ( iCmManagerImpl->IsDefConnSupported() )
-       {
-        //refresh default connection in navi pane
-        iCmManagerImpl->ReadDefConnL(defConnSel);
-        SetDefaultNaviL( defConnSel );                                        
-       }
-   else        
-        {
-        SetNoOfDestsL( destIdArray.Count() );
-        }
-    ///!!!TEMP, no icon for add connection yet
-    TParse mbmFile;
-    User::LeaveIfError( mbmFile.Set( KManagerIconFilename, 
-                                     &KDC_APP_BITMAP_DIR, 
-                                     NULL ) );
-
-    CGulIcon* icon = AknsUtils::CreateGulIconL( //second, KDestReservedIconIndexProtected 
-                        skinInstance, 
-                        KAknsIIDQgnPropSetConnDestAdd,
-                        mbmFile.FullName(), 
-                        EMbmCmmanagerQgn_prop_set_conn_dest_add, 
-                        EMbmCmmanagerQgn_prop_set_conn_dest_add_mask ); 
-    CleanupStack::PushL( icon );
-    icons->AppendL( icon );
-    CleanupStack::Pop( icon );
-    
-   icon = AknsUtils::CreateGulIconL( //second, KDestReservedIconIndexProtected 
-                        skinInstance, 
-                        KAknsIIDQgnIndiSettProtectedAdd,
-                        mbmFile.FullName(), 
-                        EMbmCmmanagerQgn_indi_sett_protected_add, 
-                        EMbmCmmanagerQgn_indi_sett_protected_add_mask );
-   
-
-// Previous must me changed to following if any problems with theme colours
-/*    AknsUtils::CreateColorIconLC( skinInstance,
-                                  KAknsIIDQgnIndiSettProtectedAdd,
-                                  KAknsIIDQsnIconColors,
-                                  EAknsCIQsnIconColorsCG13,
-                                  bitmap,
-                                  mask,
-                                  mbmFile.FullName(),
-                                  EMbmCmmanagerQgn_indi_sett_protected_add,
-                                  EMbmCmmanagerQgn_indi_sett_protected_add_mask,
-                                  AKN_LAF_COLOR( 215 ) );
-
-    icon = CGulIcon::NewL( bitmap, mask ); // Ownership transferred
-    CleanupStack::Pop( 2 ); // bitmap, mask*/
-                        
-    CleanupStack::PushL( icon );
-    icons->AppendL( icon );
-    CleanupStack::Pop( icon );
-    
-    //third, uncategorized KDestReservedIconIndexUncategorized
-    icons->AppendL( iCmManagerImpl->UncategorizedIconL() );
-    
-    //0..3 are reserved indexes!
-    CFbsBitmap* bitmap = NULL;
-    CFbsBitmap* mask = NULL;
-    
-    AknsUtils::CreateColorIconLC( skinInstance,
-                                  KAknsIIDQgnIndiDefaultConnAdd,
-                                  KAknsIIDQsnIconColors,
-                                  EAknsCIQsnIconColorsCG13,
-                                  bitmap,
-                                  mask,
-                                  mbmFile.FullName(),
-                                  EMbmCmmanagerQgn_indi_default_conn_add,
-                                  EMbmCmmanagerQgn_indi_default_conn_add_mask,
-                                  AKN_LAF_COLOR( 215 ) );
-
-    icon = CGulIcon::NewL( bitmap, mask ); // Ownership transferred
-    CleanupStack::Pop( 2 ); // bitmap, mask
-
-    CleanupStack::PushL( icon );
-    icons->AppendL( icon );
-    CleanupStack::Pop( icon );
-       
-    // Add the New Connection Item
-    HBufC* newConnection = StringLoader::LoadLC( 
-                                    R_CMMANAGERUI_NEW_CONNECTION ); // 2
-        
-    CDestListItem* newConnItem = 
-                    CDestListItem::NewLC( 
-                            KDestItemNewConnection,
-                            newConnection,
-                            0,
-                            KDestReservedIconIndexNewConn, EProtLevel0, EFalse  ); // 3
-    iModel->AppendL( newConnItem ); // ownership relinquished
-    CleanupStack::Pop( newConnItem );
-    CleanupStack::Pop( newConnection );
-    
-    TTime destTime;
-
-//refresh default connection icon in list - no effect if feature flag is off (defConnSel
-// is ECmDefConnAlwaysAsk)
-    TInt defUid = KErrNotFound;
-    if ( defConnSel.iType == ECmDefConnDestination )
-        {
-        defUid = defConnSel.iId;
-        }
-
-    
-    for (TInt i = 0; i < destIdArray.Count(); i++)
-        {
-        // Get the destinations from their IDs
-        CCmDestinationImpl* dest = NULL;
-        
-        
-        TRAPD( err, dest = iCmManagerImpl->DestinationL( destIdArray[i] ) );
-        if( err )
-            {
-            continue;
-            }
-        CleanupStack::PushL( dest ); 
-
-        // Check whether the MMS SNAP is in question. 
-        // It should not be shown on the UI in the destinations list
-        TInt snapMetadata = 0;
-        TRAPD(metaErr, snapMetadata = dest->MetadataL( CMManager::ESnapMetadataPurpose ));
-        if ( metaErr == KErrNone && snapMetadata == CMManager::ESnapPurposeMMS )
-            {
-            // This is the MMS SNAP, skip this item
-            if( dest )
-                {
-                CleanupStack::PopAndDestroy( dest );
-                dest = NULL;
-                }  
-            continue;
-            }
-
-        // Also hidden destinations are shown (TSW id ERUN-79KFAK)
-        icons->AppendL( dest->IconL() );            
-        HBufC* name =  dest->NameLC(); // 3
-        TBool def = EFalse;
-        if ( defUid == dest->Id() ) //this is the default destination, indicate it!
-            {
-            def = ETrue;
-            }
-        
-        // The connection methods bound to this destination may have to be checked with
-        // validity. Some connection methods might be invalid.
-        TInt numOfCms = dest->ConnectionMethodCount();
-        if (numOfCms > 0)
-            {
-            RArray<TUint32> cmIds;
-            dest->ConnectMethodIdArrayL( cmIds );
-            CleanupClosePushL( cmIds );
-
-            for ( TInt j = 0; j < cmIds.Count(); j++ )
-                {
-                TUint recId = cmIds[j];
-
-                TRAP( err, TUint32 bearerType = iCmManagerImpl->BearerTypeFromCmIdL( recId ) );
-                if( err == KErrNotSupported )
-                    {
-                    CLOG_WRITE_1( "CDestDlg::HandleListboxDataChangeL, IAP(%d) unsupported", recId );
-                    numOfCms = numOfCms -1;
-                    }
-                }
-
-            CleanupStack::PopAndDestroy( &cmIds );
-            }
-        
-        CDestListItem* item = CDestListItem::NewLC( 
-                                    dest->Id(),
-                                    name,
-                                    numOfCms,
-                                    icons->Count()-1, dest->ProtectionLevel(), def ); // 4
-        iModel->AppendL( item );        // ownership passed
-        CleanupStack::Pop( item );
-        CleanupStack::Pop( name );
-        if( dest )
-            {
-            CleanupStack::PopAndDestroy( dest );
-            dest = NULL;
-            }    
-        }
-        
-    // Add the Uncategorised Item
-    RArray<TUint32> uncatArray(KCmArraySmallGranularity);
-    CleanupClosePushL(uncatArray);
-    
-    iCmManagerImpl->ConnectionMethodL( uncatArray, ETrue );
-    TUint32 numberOfCMs = NumberOfCMsL( uncatArray );
-    if ( numberOfCMs )
-        {
-        icon = AknsUtils::CreateGulIconL(
-                        skinInstance, 
-                        KAknsIIDQgnPropSetConnDestUncategorized,
-                        mbmFile.FullName(), 
-                        EMbmCmmanagerQgn_prop_set_conn_dest_uncategorized, 
-                        EMbmCmmanagerQgn_prop_set_conn_dest_uncategorized_mask ); 
-        CleanupStack::PushL( icon );
-        icons->AppendL( icon );
-        CleanupStack::Pop( icon );
-
-        HBufC* uncat = StringLoader::LoadLC( 
-                                    R_CMMANAGERUI_DEST_UNCATEGORIZED ); // 2
-        
-        // Check the hidden connection methods
-        for ( TInt k = 0; k < uncatArray.Count(); k++ )
-            {
-            TUint recId = uncatArray[k];
-            if ( iCmManagerImpl->GetConnectionMethodInfoBoolL( recId, ECmHidden ) )
-                {
-                numberOfCMs = numberOfCMs -1;
-                }
-            }
-        
-        CDestListItem* uncatItem = 
-                        CDestListItem::NewLC( 
-                                KDestItemUncategorized,
-                                uncat,
-                                numberOfCMs,
-                                icons->Count()-1, EProtLevel0, EFalse ); // 3
-        iModel->AppendL( uncatItem ); // ownership relinquished
-        CleanupStack::Pop( uncatItem );
-        CleanupStack::Pop( uncat );
-        }
-
-    CleanupStack::PopAndDestroy( 2, &destIdArray ); // destIdArray
-        
-    CArrayPtr<CGulIcon>* oldIcons = 
-                            iListbox->ItemDrawer()->ColumnData()->IconArray();
-    if( oldIcons )
-        {
-        oldIcons->ResetAndDestroy();
-        delete oldIcons;
-        }
-    
-    iListbox->ItemDrawer()->ColumnData()->SetIconArray( icons );
-    iListbox->HandleItemAdditionL();
-    iListbox->UpdateScrollBarsL();
-
-    if ( !iListbox->CurrentItemUid() && !numberOfCMs )
-        {
-        // selection is out of range (e.g. Uncategorized deleted)
-        iListbox->SetCurrentItemIndexAndDraw( 0 );
-        }
-
-    CleanupStack::Pop( icons );
-    
-    iCmManagerImpl->RollbackTransaction();   
-    }
-    
-// ----------------------------------------------------------------------------
-// CDestDlg::NumberOfCMsL
-// ----------------------------------------------------------------------------
-//
-TUint32 CDestDlg::NumberOfCMsL(RArray<TUint32> cmArray)
-    {
-    LOGGER_ENTERFN( "CDestDlg::NumberOfCMsL" );
-
-    TUint32 cmCount = cmArray.Count();
-    TUint32 retValue = cmArray.Count();
-    CCDIAPRecord* iapRecord = NULL;
-    for ( TInt i = 0; i < cmCount; i++ )
-        {
-        if ( cmArray[i] <= 255 )// not embedded destination 
-            {
-            iapRecord = static_cast<CCDIAPRecord *>
-                          (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
-            CleanupStack::PushL( iapRecord );
-            
-            iapRecord->SetRecordId( cmArray[i] );
-            iapRecord->LoadL( iCmManagerImpl->Session() );
-            
-            TRAPD( err, iCmManagerImpl->BearerTypeFromIapRecordL( iapRecord ) );
-            
-            if( err == KErrNotSupported )
-                // This is unsupported connection method -> don't display
-                {
-                retValue--;
-                }
-            else
-                {
-                User::LeaveIfError( err );
-                }
-            CleanupStack::PopAndDestroy( iapRecord );
-            }
-        }
-    return retValue;
-    }
-
-// ----------------------------------------------------------------------------
-// CDestDlg::AddDestinationL
-// ----------------------------------------------------------------------------
-//
-void CDestDlg::AddDestinationL()
-    {
-    LOGGER_ENTERFN( "CDestDlg::AddDestinationL" );
-
-    TBuf<KDestinationNameMaxLength> destName;    
-    
-    TBool okToAdd = EFalse;
-    TBool nameAccepted = ETrue;
-    do 
-        {
-        okToAdd = TCmCommonUi::ShowConfirmationQueryWithInputL(
-                                           R_CMMANAGERUI_PRMPT_DESTINATION_NAME,
-                                           destName );
-        if ( okToAdd )
-            {
-            CCmDestinationImpl* dest = NULL;
-            
-            TRAPD(err, dest = iCmManagerImpl->CreateDestinationL( destName ) );
-            if ( err == KErrAlreadyExists )
-                {
-                nameAccepted = EFalse;
-                TCmCommonUi::ShowNoteL
-                    ( R_CMMANAGERUI_INFO_DEST_ALREADY_IN_USE,
-                    destName,
-                    TCmCommonUi::ECmErrorNote );                        
-                }
-            else if ( err == KErrDiskFull )
-                {
-                CTextResolver* iTextResolver = CTextResolver::NewLC(*iCoeEnv); 
-                okToAdd = EFalse;
-                TPtrC buf;
-                buf.Set(iTextResolver->ResolveErrorString(err)); 
-                TCmCommonUi::ShowNoteL( buf, TCmCommonUi::ECmErrorNote );
-                CleanupStack::PopAndDestroy( iTextResolver );
-                }
-            else if ( err == KErrNone )
-                {
-                CleanupStack::PushL( dest );
-                nameAccepted = ETrue;
-                TInt index = 0;
-                TInt iconSelected = 0;
-                CCmDestinationIconDialog* popup = 
-                      new (ELeave) CCmDestinationIconDialog( iconSelected );  
-                
-                // Show the icon dialogs
-                if ( popup->ExecuteLD() )
-                    {
-                    index = iconSelected;
-                    
-                    dest->SetIconL( index ); // subclass implements
-                    //dest->UpdateL();
-                    TRAPD( err, dest->UpdateL() );
-                    if( err )
-                        {
-                        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );
-                        }
-                    else
-                        {
-                        TRAP( err, HandleListboxDataChangeL() );
-                        if ( err )
-                            {
-                            TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                    TCmCommonUi::ECmErrorNote );
-                            }
-                        }
-                    
-                    CDestListboxModel* lbmodel = 
-                              STATIC_CAST( CDestListboxModel*,
-                                           iListbox->Model()->ItemTextArray() );
-                    CDestListItem* lbitem = 
-                                        lbmodel->At( lbmodel->MdcaCount() - 1 );
-
-                    //returns null if item is not present                                        
-                    if ( lbitem->Uid() == KDestItemUncategorized  )
-                        {
-                        //last item is uncategorized
-                        iListbox->ScrollToMakeItemVisible( 
-                                                    lbmodel->MdcaCount() - 2 );
-                        //last item is uncategorized
-                        iListbox->SetCurrentItemIndexAndDraw( 
-                                                    lbmodel->MdcaCount() - 2 );
-                        }
-                     else
-                        {
-                        iListbox->ScrollToMakeItemVisible( 
-                                                    lbmodel->MdcaCount() - 1 );
-                        iListbox->SetCurrentItemIndexAndDraw( 
-                                                    lbmodel->MdcaCount() - 1 );
-                        }                    
-
-                    iListbox->HandleItemAdditionL();
-
-                    TCmCommonUi::ShowNoteL( R_CMWIZARD_NEW_DEST_ADDED,
-                                            destName,
-                                            TCmCommonUi::ECmOkNote );
-                    
-                    // Sets the mittle soft key text to "Open"                        
-                    SetMskL( R_QTN_MSK_OPEN );
-                                            
-                    }
-                if(dest)
-                    {
-                    CleanupStack::PopAndDestroy( dest );
-                    dest = NULL;
-                    }    
-                }
-            }
-        } while ( !nameAccepted && okToAdd );
-    }
-
-// ----------------------------------------------------------------------------
-// CDestDlg::OnCommandDestinationEdit
-// ----------------------------------------------------------------------------
-//
-void CDestDlg::OnCommandDestinationEditL()
-    {
-    LOGGER_ENTERFN( "CDestDlg::OnCommandDestinationEditL" );
-
-    // Check if memory full
-    TBool ret ( EFalse );
-    ret = iCmManagerImpl->IsMemoryLow();
-    if( ret )
-        {
-        CLOG_WRITE( "CDestDlg::OnCommandDestinationEditL: Memory Full, return!" );
-        return;
-        }
-
-    if ( iListbox->CurrentItemUid() == KDestItemNewConnection )
-        {
-        // If there's at least one uprotected destination available
-        if ( iCmManagerImpl->DestinationCountL() )
-            {
-            if ( iCmManagerImpl->HasUnprotectedDestinationsL() )
-                {
-                // Opens a Connection method creation wizard
-                CLOG_WRITE( "CDestDlg::OnCommandDestinationEditL iCmWizard constructing" );
-                iCmWizard = new (ELeave) CCmWizard( *iCmManagerImpl );
-                TInt ret( KErrNone );
-                TRAPD( err, ret = iCmWizard->CreateConnectionMethodL() );
-                if ( err == KErrDiskFull )
-                    {
-                    CTextResolver* iTextResolver = CTextResolver::NewLC(*iCoeEnv); 
-                    ret = KErrCancel;
-                    TPtrC buf;
-                    buf.Set(iTextResolver->ResolveErrorString(err)); 
-                    TCmCommonUi::ShowNoteL( buf, TCmCommonUi::ECmErrorNote );
-                    CleanupStack::PopAndDestroy( iTextResolver );
-                    }
-                else if ( err )
-                    {
-                    TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                            TCmCommonUi::ECmErrorNote );
-                    ret = KErrCancel;
-                    }
-                delete iCmWizard;
-                iCmWizard = NULL;
-                CLOG_WRITE_1( "CDestDlg::iCmWizard ret %d", ret );
-
-                // If application wanted to be closed before then RunAppShutter()
-                // should be called here                
-                if( iEscapeArrived )
-                    {
-                    CLOG_WRITE_1( "CDestDlg::iEscapeArrived %d", iEscapeArrived );
-                    ( ( CAknAppUi* )iEikonEnv->EikAppUi() )->RunAppShutter();
-                    }
-                else
-                    {
-                    if( ret != KErrCancel )
-                        {
-                        TRAP( err, HandleListboxDataChangeL() );
-                        if ( err )
-                            {
-                            TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                    TCmCommonUi::ECmErrorNote );
-                            return;
-                            }
-                        }
-                    }
-
-                }
-            else
-                {
-                // Show a warning here
-                TCmCommonUi::ShowNoteL( R_CMWIZARD_NO_UNPROTECTED_DESTINATION,
-                                        TCmCommonUi::ECmWarningNote );
-                }
-            }
-        else
-            {
-            // ... otherwise show a warning.
-            TCmCommonUi::ShowNoteL( R_CMWIZARD_NO_DESTINATION,
-                                    TCmCommonUi::ECmWarningNote );
-            }
-        }
-    else
-        {
-        if ( iListbox->CurrentItemUid() == KDestItemUncategorized )                
-            {
-            CUncatDlg* uncatDlg = CUncatDlg::NewL( iCmManagerImpl );
-
-            TUint32 selected = 0;
-            if ( uncatDlg->ConstructAndRunLD( 0, selected ) == 
-                 KDialogUserExit)
-                {
-                TryExitL(ETrue);
-                }
-            else
-                {
-                HandleListboxDataChangeL();                
-                }
-            }
-        else
-            {
-            CCmDlg* cmDlg = CCmDlg::NewL( iCmManagerImpl , 
-                iListbox->CurrentItemUid(), this );
-
-            TUint32 selected = 0;
-            if ( cmDlg->ConstructAndRunLD( 0, selected ) == 
-                 KDialogUserExit )
-                {
-                TryExitL(ETrue);
-                }
-            else
-                {
-                HandleListboxDataChangeL();                
-                }
-            }
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CDestDlg::OnCommandDestinationDelete
-// ----------------------------------------------------------------------------
-//
-void CDestDlg::OnCommandDestinationDeleteL()
-    {
-    LOGGER_ENTERFN( "CDestDlg::OnCommandDestinationDeleteL" );
-
-    TCmDefConnValue oldConn;
-    if (iCmManagerImpl->IsDefConnSupported())
-        {    
-        iCmManagerImpl->ReadDefConnL( oldConn );
-        }
-    TUint32 listItemUid = iListbox->CurrentItemUid();
-    
-    if ( listItemUid == KDestItemNewConnection )
-        {
-        // ignore this command - it's not a destination
-        return;
-        }            
-    
-    if ( listItemUid == KDestItemUncategorized )
-        {
-        // Cannot delete Uncategoried Destination
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );
-                                
-        return;
-        }
-
-    TBool carryOn( ETrue );
-    // Cannot delete if the destination is embedded somewhere                                
-    CCmDestinationImpl* dest = 
-         iCmManagerImpl->DestinationL( iListbox->CurrentItemUid() );
-    CleanupStack::PushL( dest );
-    // We need this trap only because this function is called from a trap
-    TRAPD( err, dest->CheckIfEmbeddedL( dest->Id() ) );
-    if ( err == KErrNotSupported )
-        {
-        CleanupStack::PopAndDestroy( dest );
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );
-        return;
-        }
-    else if ( err )
-        {
-        CleanupStack::PopAndDestroy( dest );
-        User::Leave(err);
-        }
-    
-    // Show an error message to the user
-    if ( dest->ProtectionLevel() )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );
-        carryOn = EFalse;
-        }
-        
-    if( carryOn )
-        {
-        if( dest->IsConnectedL() )
-            {
-            TCmCommonUi::ShowNoteL( 
-                       R_CMMANAGERUI_INFO_DEST_IN_USE_CANNOT_DELETE,
-                       TCmCommonUi::ECmErrorNote );
-            carryOn = EFalse;
-            }
-        }
-    
-    // check if it is linked by anybody
-    
-    if ( carryOn )
-        {
-        // for each IAP in CM manager
-        //   1. check if it is virtual
-        //      if not => goto 1.
-        //      if yes:
-        //      2. check if it links to the destination to be deleted
-        //         if yes => carryOn = EFalse, ERROR
-        //         if not:
-        //         3. check if it links to any of the CMs in this destination
-        //            if not => goto 1.
-        //            if yes:
-        //            4. check if it is also in this destination
-        //               if not => carryOn = EFalse, ERROR
-        //               if yes => goto 1.
-        // As we need different notes in different cases:
-        TUint32 noteresId = R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED;
-        CommsDat::CMDBRecordSet<CommsDat::CCDIAPRecord>* iaps = 
-                                                    iCmManagerImpl->AllIapsL();
-        
-        CleanupStack::PushL( iaps );
-        
-        // for each IAP in CM manager
-        for ( TInt i = 0; carryOn && i < iaps->iRecords.Count(); ++i )
-            {
-            CommsDat::CCDIAPRecord* rec = (*iaps)[i];
-            TUint32 bearerType = 0;
-            
-            TRAP_IGNORE( bearerType = 
-                             iCmManagerImpl->BearerTypeFromIapRecordL( rec ) );
-            if ( !bearerType )
-                {
-                continue;
-                }
-                
-            // check if it is virtual
-            if ( iCmManagerImpl->GetBearerInfoBoolL( bearerType, ECmVirtual ) )
-                {
-                // check if it links to the destination to be deleted
-                CCmPluginBase* plugin = NULL;            
-                TRAP_IGNORE( plugin = iCmManagerImpl->GetConnectionMethodL( 
-                                                           rec->RecordId() ) );
-
-                if ( !plugin )
-                    {
-                    continue;
-                    }
-                
-                CleanupStack::PushL( plugin );
-
-                if ( plugin->IsLinkedToSnap( dest->Id() ) )
-                    {
-                    // the CM links to this destination, deletion not allowed
-                    carryOn = EFalse;
-                    noteresId = R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED;
-                    }
-                else
-                    {
-                    
-                    // check if the CM links to any of the CMs in this destination
-                    for ( TInt j = 0; j < dest->ConnectionMethodCount(); ++j )
-                        {
-                        CCmPluginBase* destPlugin = NULL;
-                        
-                        TRAP_IGNORE( destPlugin = dest->GetConnectionMethodL( j ) );
-                        if ( !destPlugin )
-                            {
-                            continue;
-                            }
-                        
-                        if ( destPlugin->GetIntAttributeL( ECmId ) == 
-                                                               rec->RecordId() )
-                            {
-                            // the CM shouldn't be compared to itself
-                            continue;
-                            }
-                            
-                        if ( plugin->IsLinkedToIap( 
-                                    destPlugin->GetIntAttributeL( ECmId ) ) )
-                            {
-                            // the CM links to at least one CM in this destination
-                            carryOn = EFalse; 
-                            noteresId = R_QTN_NETW_CONSET_INFO_CANNOT_DELETE_VIRTUAL_REF;
-                            break;
-                            }
-                        }
-
-                    }
-
-                CleanupStack::PopAndDestroy( plugin );                    
-                }
-                
-                    
-            }
-            
-        CleanupStack::PopAndDestroy( iaps );
-
-        if ( !carryOn )
-            {
-            TCmCommonUi::ShowNoteL(
-                       noteresId,
-                       TCmCommonUi::ECmErrorNote );
-            }
-        }
-    
-        
-    // check if it has protected method
-    if( carryOn )
-        {
-        if( IsThereProtectedMethodL( dest ) )
-            {
-            TCmCommonUi::ShowNoteL( 
-                       R_QTN_NETW_CONSET_INFO_CANNOT_DELETE_DEST_PROT_CM,
-                       TCmCommonUi::ECmErrorNote );
-            carryOn = EFalse;
-            }
-        }
-        
-    if( carryOn )
-        {
-        HBufC* destName = dest->NameLC(); // 2
-        if ( TCmCommonUi::ShowConfirmationQueryL(
-                              R_CMMANAGERUI_QUEST_DEST_DELETE, *destName ) )
-            {
-            CleanupStack::PopAndDestroy( destName );   
-            TRAPD( err, dest->DeleteLD() );
-            switch ( err )
-                {
-                case KErrInUse:
-                    {
-                    TCmCommonUi::ShowNoteL( 
-                               R_CMMANAGERUI_INFO_DEST_IN_USE_CANNOT_DELETE,
-                               TCmCommonUi::ECmErrorNote );
-                    }
-                    break;
-
-                case KErrLocked:
-                    {
-                    TCmCommonUi::ShowNoteL
-                        ( R_QTN_NETW_CONSET_INFO_CANNOT_DELETE_VIRTUAL_REF,
-                          TCmCommonUi::ECmErrorNote );
-                    }
-                    break;
-                    
-                case KErrNone:
-                    {
-                    if (iCmManagerImpl->IsDefConnSupported())
-                        {         
-                        ShowDefaultConnectionNoteL(oldConn);
-                        } 
-                    CleanupStack::Pop( dest ); 
-                    dest = NULL;  
-                    
-                    TInt selected = iListbox->CurrentItemIndex();
-
-                    HandleListboxDataChangeL();
-
-                    if ( iListbox->Model()->NumberOfItems() )
-                        {
-                        if( selected == iListbox->Model()->NumberOfItems() )
-                            {
-                            --selected;
-                            }
-
-                        //first item cannot be deleted
-                        iListbox->ScrollToMakeItemVisible( selected);
-                        iListbox->SetCurrentItemIndexAndDraw( selected );                            
-                        }
-                    }
-                    break;
-                    
-                default:
-                    {
-                    }
-                }                          
-            }
-        else
-            {
-            CleanupStack::PopAndDestroy( destName );   
-            }                          
-        }
-
-    if( dest )
-        {
-        CleanupStack::PopAndDestroy( dest );
-        }
-
-    }
-
-   
-// ----------------------------------------------------------------------------
-// CDestDlg::OnCommandDestinationRenameL
-// ----------------------------------------------------------------------------
-//
-void CDestDlg::OnCommandDestinationRenameL()
-    {
-    LOGGER_ENTERFN( "CDestDlg::OnCommandDestinationRenameL" );
-
-    // Check if this is UnCat
-    if ( iListbox->CurrentItemUid() == KDestItemUncategorized )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );
-        return;
-        }
-    
-    // Get currently selected destination.
-    CCmDestinationImpl* dest =
-          iCmManagerImpl->DestinationL( iListbox->CurrentItemUid() );
-    CleanupStack::PushL( dest );
-
-    // Show an error message to the user
-    if ( dest->ProtectionLevel() )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );
-
-        CleanupStack::PopAndDestroy( dest );
-        return;
-        }
-
-    // Allocate max length for the buffer, since we don't know how long
-    // the new name will be. Copy the actual name of the destination
-    // into the buffer.
-    TBuf< KDestinationNameMaxLength > destName;
-    destName.Copy( *( dest->NameLC() ) );
-    
-    TBool okToRename = EFalse;
-    TBool nameAccepted = ETrue;
-    do 
-        {
-        okToRename = TCmCommonUi::ShowConfirmationQueryWithInputL(
-                                           R_CMMANAGERUI_PRMPT_DESTINATION_NAME,
-                                           destName );
-        if ( okToRename )
-            {
-            TRAPD(err, dest->SetNameL( destName ));
-            if ( err == KErrAlreadyExists )
-                {
-                nameAccepted = EFalse;
-                TCmCommonUi::ShowNoteL( R_CMMANAGERUI_INFO_DEST_ALREADY_IN_USE,
-                                        destName,
-                                        TCmCommonUi::ECmErrorNote );                        
-                }
-             else if ( err == KErrNone )
-                {
-                nameAccepted = ETrue;
-                dest->UpdateL();
-                HandleListboxDataChangeL();
-                }
-            }
-        } while ( !nameAccepted && okToRename );
-
-    // dest->NameLC()
-    CleanupStack::PopAndDestroy( );
-    CleanupStack::PopAndDestroy( dest );
-    }
-
-// ----------------------------------------------------------------------------
-// CDestDlg::IsThereProtectedMethodL
-// ----------------------------------------------------------------------------
-//
-TBool CDestDlg::IsThereProtectedMethodL( CCmDestinationImpl* aDest )
-    {
-    LOGGER_ENTERFN( "CDestDlg::IsThereProtectedMethodL" );
-
-    TInt count( aDest->ConnectionMethodCount() );
-
-    for( TInt i = 0; i < count; ++i )
-        {
-        CCmPluginBase* cm = aDest->GetConnectionMethodL( i );
-        
-        if( cm->GetBoolAttributeL( ECmProtected ) )
-            {
-            return ETrue;
-            }
-        }
-        
-    return EFalse;
-    }
-
-
-// ----------------------------------------------------------------------------
-// CDestDlg::SetMskL
-// ----------------------------------------------------------------------------
-//
-void CDestDlg::SetMskL( TInt aResourceId )
-    {
-    HBufC* text = StringLoader::LoadLC( aResourceId );
-    ButtonGroupContainer().SetCommandL( EAknSoftkeySelect, *text );
-    ButtonGroupContainer().DrawDeferred();
-    CleanupStack::PopAndDestroy( text );
-                
-    }
-
-// --------------------------------------------------------------------------
-// CDestDlg::GetHelpContext
-// --------------------------------------------------------------------------
-//
-void CDestDlg::GetHelpContext( TCoeHelpContext& aContext ) const
-    {
-    aContext.iMajor = KHelpUidPlugin;
-    aContext.iContext = KSET_HLP_CONN_DEST_VIEW;
-    }
-
-// --------------------------------------------------------------------------
-// CDestDlg::Execute
-// --------------------------------------------------------------------------
-//
-void CDestDlg::Execute()
-    {
-    LOGGER_ENTERFN( "CDestDlg::Execute" );
-    iProcessing = ETrue;
-    
-    TRAPD( err, ProcessCommandL(ECmManagerUiCmdDestEdit) );
-    if ( err )
-        {
-        HandleLeaveError( err );
-        }
-
-    iProcessing = EFalse;
-    }
-
-// --------------------------------------------------------------------------
-// CDestDlg::HandleResourceChange
-// --------------------------------------------------------------------------
-//
-
-void CDestDlg::HandleResourceChange( TInt aType )
-    {
-    CCoeControl::HandleResourceChange( aType ); 
-
-    if( aType == KEikDynamicLayoutVariantSwitch )
-        {
-        DrawNow(); 
-        }
-        
-    CAknDialog::HandleResourceChange(aType);        
-    }
-
-// --------------------------------------------------------------------------
-// CDestDlg::HandleLeaveError
-// --------------------------------------------------------------------------
-//
-void CDestDlg::HandleLeaveError( TInt aError )
-    {
-    LOGGER_ENTERFN( "CDestDlg::HandleLeaveError" );
-
-    switch( aError )
-        {
-            case KLeaveWithoutAlert:
-            case KErrNoMemory:
-                EnforcedResetCDestDlg();
-                break;
-            default:
-                // More leave errors may be handled if necessary
-                // Now other leave errors are ignored here
-                break;
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CDestDlg::EnforcedResetCDestDlg
-// --------------------------------------------------------------------------
-//
-void CDestDlg::EnforcedResetCDestDlg()
-    {
-    LOGGER_ENTERFN( "CDestDlg::EnforcedResetCDestDlg" );
-
-    if( iCmWizard != NULL )
-        {
-        delete iCmWizard;
-        iCmWizard = NULL;
-        }
-
-    if( iProcessing )
-        {
-        iProcessing = EFalse;
-        }
-}
-
-// --------------------------------------------------------------------------
-// CDestDlg::ShowDefaultConnectionNoteL
-// --------------------------------------------------------------------------
-//
-void CDestDlg::ShowDefaultConnectionNoteL(TCmDefConnValue aOldDefConn)
-    {
-    LOGGER_ENTERFN( "CDestDlg::ShowDefaultConnectionNoteL" );
-    TCmDefConnValue newConn;
-        
-    iCmManagerImpl->ReadDefConnL( newConn );
-
-    if ( newConn != aOldDefConn )
-        {
-        ShowDefaultSetNoteL( newConn );
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CDestDlg::CommsDatChanges
-// --------------------------------------------------------------------------
-//
-void CDestDlg::CommsDatChangesL()
-    {
-    // Update list box
-    HandleListboxDataChangeL();
-    }
--- a/cmmanager/cmmgr/Framework/Src/destlistbox.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CDestListbox
-*
-*/
-
-#include <eikclbd.h>
-#include <avkon.mbg>
-#include <aknkeys.h>
-#include <data_caging_path_literals.hrh>
-#include <cmmanager.mbg> 
-
-#include "destlistbox.h"
-#include "destlistboxmodel.h"
-#include "destlistitem.h"
-
-// ---------------------------------------------------------------------------
-// CDestListbox::NewL
-// ---------------------------------------------------------------------------
-//
-CDestListbox* CDestListbox::NewL( const CCoeControl* aParent )
-    {
-    CDestListbox* listbox = new ( ELeave ) CDestListbox();
-    CleanupStack::PushL( listbox );
-    listbox->ConstructL( aParent, EAknListBoxSelectionList );
-    CleanupStack::Pop( listbox );
-    return listbox;
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListbox::CDestListbox
-// ---------------------------------------------------------------------------
-//
-CDestListbox::CDestListbox()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListbox::~CDestListbox
-// ---------------------------------------------------------------------------
-//
-CDestListbox::~CDestListbox()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListbox::OfferKeyEventL
-// ---------------------------------------------------------------------------
-//
-TKeyResponse CDestListbox::OfferKeyEventL
-( const TKeyEvent& aKeyEvent, TEventCode aType )
-    {
-    if ( aKeyEvent.iCode == EKeyOK &&
-         !( aKeyEvent.iModifiers & EModifierShift ) )
-        {
-        // Enter pressed (not Shift-Enter). This will report an
-        // EEnterKeyPressed event sent to the observer (the view), which may
-        // delete this listbox. The code which processes keypresses by
-        // default, will continue (on the already deleted listbox), and
-        // will crash. So we grab this keypress here, and generate the
-        // same event, but after that, quit immediately!
-        ReportListBoxEventL( MEikListBoxObserver::EEventEnterKeyPressed );
-        // By now the listbox may have been deleted!
-        // Do not access it after this point!
-        return EKeyWasConsumed;
-        }
-    else
-        {
-        return CAknDoubleLargeStyleListBox::OfferKeyEventL( aKeyEvent, aType );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListbox::FocusChanged
-// ---------------------------------------------------------------------------
-//
-void CDestListbox::FocusChanged( TDrawNow aDrawNow )
-    {
-    // Do nothing until the listbox is fully constructed
-    // The dialogpage sets the focus before calling ConstructL
-    if ( iView )
-        {
-        CAknDoubleLargeStyleListBox::FocusChanged( aDrawNow );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListbox::Uid4Item
-// ---------------------------------------------------------------------------
-//
-TUint32 CDestListbox::Uid4Item( TInt aItem ) const
-    {
-    CDestListboxModel* lbmodel =
-        STATIC_CAST( CDestListboxModel*, Model()->ItemTextArray() );
-    return lbmodel->At( aItem )->Uid();
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListbox::CurrentItemUid
-// ---------------------------------------------------------------------------
-//
-TUint32 CDestListbox::CurrentItemUid() const
-    {
-    CDestListboxModel* lbmodel =
-        STATIC_CAST( CDestListboxModel*, Model()->ItemTextArray() );
-    TInt idx = CurrentItemIndex();
-    TUint32 retval( 0 );
-    if ( idx >= 0 )
-        {
-        retval = lbmodel->At( idx )->Uid();
-        }
-    return retval;
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListbox::CurrentItemNameL
-// ---------------------------------------------------------------------------
-//
-const TDesC& CDestListbox::CurrentItemNameL()
-    {
-    CDestListboxModel* lbmodel = new( ELeave )CDestListboxModel;
-    lbmodel = STATIC_CAST( CDestListboxModel*, Model()->ItemTextArray() );
-    return lbmodel->At( CurrentItemIndex() )->Name();
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListbox::HandleResourceChange
-// ---------------------------------------------------------------------------
-//
-void CDestListbox::HandleResourceChange(TInt aType)
-    {
-    if ( aType == KAknsMessageSkinChange )
-        {
-        SizeChanged();
-        }
-        
-    CAknDoubleLargeStyleListBox::HandleResourceChange( aType );     
-    }
-
--- a/cmmanager/cmmgr/Framework/Src/destlistboxmodel.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CDestListboxModel
-*
-*/
-
-#include <AknIconArray.h>
-#include <aknlists.h>
-#include <StringLoader.h>
-#include <cmmanager.rsg>
-
-#include "destlistboxmodel.h"
-#include "destlistitem.h"
-#include "destlistitemlist.h"
-#include <cmcommonconstants.h>
-
-using namespace CMManager;
-
-// ---------------------------------------------------------------------------
-// CDestListboxModel::CDestListboxModel
-// ---------------------------------------------------------------------------
-//
-CDestListboxModel::CDestListboxModel()
-    : iOffset( 0 )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListboxModel::~CDestListboxModel
-// ---------------------------------------------------------------------------
-//
-CDestListboxModel::~CDestListboxModel()
-    {
-    ResetAndDestroy(); // deletes all elements...
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListboxModel::MdcaCount
-// ---------------------------------------------------------------------------
-//
-TInt CDestListboxModel::MdcaCount() const
-    {
-    return Count();
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListboxModel::SetOwnIconOffset
-// ---------------------------------------------------------------------------
-//
-void CDestListboxModel::SetOwnIconOffset( TInt aOffset )
-    {
-    iOffset = aOffset;
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListboxModel::MdcaPoint
-// ---------------------------------------------------------------------------
-//
-TPtrC CDestListboxModel::MdcaPoint( TInt aIndex ) const
-    {
-    // We need to cast away the const-ness from the buffer.
-    // It was definitely made for formatting!
-    FormatListboxText( aIndex,
-        ( MUTABLE_CAST(  TBuf<KMaxDestListboxName>&, iBuf ) ) );
-
-    return iBuf;
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListboxModel::FormatListboxTextL
-// ---------------------------------------------------------------------------
-//
-void CDestListboxModel::FormatListboxTextL( TInt aIndex,
-                                                TDes& aBuf ) const
-    {
-    aBuf.Zero();
-    HBufC* secondLine;
-    if ( At(aIndex)->NumOfCMs()  )
-        {
-        if ( At(aIndex)->NumOfCMs()  == 1 )
-            {
-            secondLine = 
-                  StringLoader::LoadLC( R_CMMANAGERUI_CONN_METHODS_AMOUNT_ONE );
-            }
-         else
-            {
-            secondLine = 
-                   StringLoader::LoadLC( R_CMMANAGERUI_CONN_METHODS_AMOUNT_MANY, 
-                                         At( aIndex )->NumOfCMs() );
-            }
-        }
-     else
-        {
-        if ( At( aIndex )->Uid() == KDestItemNewConnection )
-            {
-            //add cm if list is empty
-            secondLine = 
-                    StringLoader::LoadLC( R_CMMANAGERUI_ADD_CONNECTION_METHOD );
-            }
-         else
-            {
-            secondLine = 
-                 StringLoader::LoadLC( R_CMMANAGERUI_CONN_METHODS_AMOUNT_NONE );
-            }
-        }
-        
-    if ( At( aIndex )->IsDefault() )
-        {
-            aBuf.Format( KListItemFormatDestProt,
-                         At(aIndex)->IconIndex(), 
-                         &At(aIndex)->Name(), 
-                         secondLine, 
-                         KDestReservedIconIndexDefaultConn );
-        }
-    else
-        {
-        // Protected icon must be put only if the protection level is 1
-        if ( At( aIndex )->GetProtectionLevel() == EProtLevel1 )
-            {
-            aBuf.Format( KListItemFormatDestProt,
-                         At(aIndex)->IconIndex(), 
-                         &At(aIndex)->Name(), 
-                         secondLine, 
-                         KDestReservedIconIndexProtected );
-            }
-         else
-            {
-            aBuf.Format( KListItemFormatDest,
-                         At(aIndex)->IconIndex(), 
-                         &At(aIndex)->Name(), 
-                         secondLine );
-            }
-        }
-    CleanupStack::PopAndDestroy( secondLine );
-    }
-    
-// ---------------------------------------------------------------------------
-// CDestListboxModel::FormatListboxText
-// ---------------------------------------------------------------------------
-//
-
-void CDestListboxModel::FormatListboxText( TInt aIndex,
-                                           TDes& aBuf ) const
-    {
-    TRAP_IGNORE( FormatListboxTextL( aIndex, aBuf ) );
-    }
--- a/cmmanager/cmmgr/Framework/Src/destlistitem.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CDestListItem.
-*
-*/
-
-#include <eikdef.h>
-#include "destlistitem.h"
-#include <cmmanagerdef.h>
-
-using namespace CMManager;
-
-// ---------------------------------------------------------------------------
-// CDestListItem::NewLC
-// ---------------------------------------------------------------------------
-//
-CDestListItem* CDestListItem::NewLC( TUint32 aUid,
-                                     HBufC* aName,
-                                     TInt aNumOfCMs, 
-                                     TUint aIconIndex, 
-                                     TProtectionLevel aProtectionLevel,
-                                     TBool aIsDefault )
-    {
-    CDestListItem* db = new( ELeave ) CDestListItem( aName );
-    CleanupStack::PushL( db );
-    db->ConstructL( aUid, aNumOfCMs, aIconIndex , 
-                    aProtectionLevel, aIsDefault );
-    return db;
-    }
-    
-// ---------------------------------------------------------------------------
-// CDestListItem::~CDestListItem
-// ---------------------------------------------------------------------------
-//
-CDestListItem::~CDestListItem()
-    {
-    delete iName;
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListItem::CDestListItem
-// ---------------------------------------------------------------------------
-//
-CDestListItem::CDestListItem( HBufC* aName )
-    : iName( aName )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListItem::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CDestListItem::ConstructL( TUint32 aUid,
-                                TInt aNumOfCMs, 
-                                TUint aIconIndex, 
-                                TProtectionLevel aProtectionLevel,
-                                TBool aIsDefault )
-    {
-    iProtectionLevel = aProtectionLevel;
-    if (aProtectionLevel == EProtLevel0)
-        {
-        iIsProtected = EFalse;        
-        }
-    else
-        {
-        iIsProtected = ETrue;        
-        }
-    iIconIndex = aIconIndex;
-    iNumOfCMs = aNumOfCMs;
-    iIsDefault = aIsDefault;
-    iUid = aUid;
-    }
-// ---------------------------------------------------------------------------
-// CDestListItem::Name
-// ---------------------------------------------------------------------------
-//
-const TDesC& CDestListItem::Name()
-    {
-    return *iName;
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListItem::Uid
-// ---------------------------------------------------------------------------
-//
-TUint32 CDestListItem::Uid()
-    {
-    return iUid;
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListItem::NumOfCMs
-// ---------------------------------------------------------------------------
-//
-TInt CDestListItem::NumOfCMs()
-    {
-    return iNumOfCMs;
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListItem::IconIndex
-// ---------------------------------------------------------------------------
-//
-TUint CDestListItem::IconIndex()
-    {
-    return iIconIndex;
-    }
-
-// ---------------------------------------------------------------------------
-// CDestListItem::IsProtected
-// ---------------------------------------------------------------------------
-//
-TUint CDestListItem::IsProtected()
-    {
-    return iIsProtected;
-    }
-    
-// ---------------------------------------------------------------------------
-// CDestListItem::IsProtected
-// ---------------------------------------------------------------------------
-//
-TProtectionLevel CDestListItem::GetProtectionLevel()
-    {
-    return iProtectionLevel;
-    }
-    
-// ---------------------------------------------------------------------------
-// CDestListItem::IsDefault
-// ---------------------------------------------------------------------------
-//
-TUint CDestListItem::IsDefault()
-    {
-    return iIsDefault;
-    }
-
--- a/cmmanager/cmmgr/Framework/Src/destlistitemlist.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CDestListItemList
-*
-*/
-
-#include "destlistitemlist.h"
-#include "destlistitem.h"
-
-LOCAL_D const TInt KGranularity = 4;    ///< Granularity of the list.
-
-// ---------------------------------------------------------
-// CDestListItemList::CDestListItemList
-// ---------------------------------------------------------
-//
-CDestListItemList::CDestListItemList()
-    : CArrayPtrFlat<CDestListItem>( KGranularity )
-    {
-    }
-
-// ---------------------------------------------------------
-// CDestListItemList::~CDestListItemList
-// ---------------------------------------------------------
-//
-CDestListItemList::~CDestListItemList()
-    {
-    ResetAndDestroy();
-    }
-
-// ---------------------------------------------------------
-// CDestListItemList::ItemByUid
-// ---------------------------------------------------------
-//
-CDestListItem* CDestListItemList::ItemForUid( TUint32 aUid ) const
-    {
-    // This method cannot return "const CDestListItem*", because all methods
-    // of CDestListItem are non-const -> if the returned item was const, it
-    // would be unusable.
-    TInt i;
-    TInt count = Count();
-    for ( i = 0; i < count; i++ )
-        {
-        if ( At( i )->Uid() == aUid )
-            {
-            return At( i );
-            }
-        }
-
-    return NULL;
-    }
--- a/cmmanager/cmmgr/Framework/Src/selectdestination.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,285 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Shows the "Select destination:" dialog, where the user can 
-*                select one of the available destinations.
-*
-*/
-
-#include <AknUtils.h>
-#include <badesca.h>
-#include <StringLoader.h>
-#include <cmmanager.rsg>
-#include "selectdestinationdlg.h"
-#include <cmcommonconstants.h>
-#include <cmcommonui.h>
-#include "cmdestinationimpl.h"
-#include "cmlogger.h"
-#include "cmmanagerimpl.h"
-
-#include <cmmanagerdef.h>
-
-// ----------------------------------------------------------------------------
-// CSelectDestinationDlg::CSelectDestinationDlg
-// ----------------------------------------------------------------------------
-//
-CSelectDestinationDlg::CSelectDestinationDlg( TInt aDummyIndex,
-                                              TUint32& aDestinationId )
-    : CAknListQueryDialog( &aDummyIndex )
-    , iDestinationId( aDestinationId )
-    , iDestinations( KCmArrayMediumGranularity )
-    {
-    CLOG_CREATE;
-    }
-
-// ----------------------------------------------------------------------------
-// CSelectDestinationDlg::ConstructL
-// ----------------------------------------------------------------------------
-//
-void CSelectDestinationDlg::ConstructL( CCmManagerImpl& aCmManager,
-                                        RArray<TUint32>* aDestArray )
-    {
-    LOGGER_ENTERFN( "CSelectDestinationDlg::ConstructL" );
-    RArray<TUint32> destinations( KCmArrayMediumGranularity );
-    CleanupClosePushL( destinations );
-
-    aCmManager.AllDestinationsL( destinations );
-
-    TBool mmsFound = EFalse;
-    for ( TInt i = 0; i < destinations.Count(); i++ )
-        {
-        CCmDestinationImpl* dest = aCmManager.DestinationL( destinations[i] );
-        CleanupStack::PushL( dest );   
-             
-        // Don't count the current destination
-        if ( dest->Id() == iDestinationId )
-            {
-            CleanupStack::PopAndDestroy( dest );
-            continue;
-            }
-               
-        // Do not give the option to copy into a Level 1 Protected Destination
-        if ( dest->ProtectionLevel() == CMManager::EProtLevel1 )
-            {
-            CleanupStack::PopAndDestroy( dest );
-            continue;
-            }
-
-        // check if the destination is valid as parent (e.g. for VPN)
-        if ( aDestArray && aDestArray->Find( dest->Id() ) == KErrNotFound )
-            {
-            CleanupStack::PopAndDestroy( dest );
-            continue;
-            }
-        
-        // Skip the MMS Snap, it it not shown in the list
-        if ( !mmsFound )
-            {
-            TInt snapMetadata = 0;
-            TRAPD(metaErr, snapMetadata = dest->MetadataL( CMManager::ESnapMetadataPurpose ));
-            if ( metaErr == KErrNone && snapMetadata == CMManager::ESnapPurposeMMS )
-                {
-                CleanupStack::PopAndDestroy( dest );
-                mmsFound = ETrue;
-                continue;
-                }
-            }
-        
-        iDestinations.AppendL( dest );
-        CleanupStack::Pop( dest );
-        }
-    CleanupStack::PopAndDestroy( &destinations );
-    }
-    
-// ----------------------------------------------------------------------------
-// CSelectDestinationDlg::~CSelectDestinationDlg
-// ----------------------------------------------------------------------------
-//
-CSelectDestinationDlg::~CSelectDestinationDlg()
-    {
-    for ( TInt i = 0; i < iDestinations.Count(); i++ )
-        {
-        delete iDestinations[i];
-        }
-    iDestinations.Close();
-    CLOG_CLOSE;
-    }
-
-// ----------------------------------------------------------------------------
-// CSelectDestinationDlg::NewL
-// ----------------------------------------------------------------------------
-//
-CSelectDestinationDlg* CSelectDestinationDlg::NewL( TUint32& aDestinationId,
-                                                    CCmManagerImpl& aCmManager,
-                                                    RArray<TUint32>* aDestArray )
-    {
-    CSelectDestinationDlg* self = NewLC( aDestinationId, aCmManager, aDestArray );
-
-    CleanupStack::Pop( self );
-
-    return self;
-    }
-
-
-// ----------------------------------------------------------------------------
-// CSelectDestinationDlg::NewLC
-// ----------------------------------------------------------------------------
-//
-CSelectDestinationDlg* CSelectDestinationDlg::NewLC( TUint32& aDestinationId,
-                                                     CCmManagerImpl& aCmManager,
-                                                     RArray<TUint32>* aDestArray )
-    {
-    CSelectDestinationDlg* self =
-                    new (ELeave) CSelectDestinationDlg( 0, aDestinationId );
-
-    CleanupStack::PushL( self );
-
-    self->ConstructL( aCmManager, aDestArray );
-
-    return self;
-    }
-
-
-// ----------------------------------------------------------------------------
-// CSelectDestinationDlg::OkToExitL
-// ----------------------------------------------------------------------------
-//
-TBool CSelectDestinationDlg::OkToExitL( TInt aButtonId )
-    {
-    TBool result = EFalse;
-    
-    if ( aButtonId == EAknSoftkeySelect || aButtonId == EAknSoftkeyOk )
-        {
-        iDestinationId = iDestinations[ ListBox()->CurrentItemIndex() ]->Id();
-
-        result = ETrue;
-        }
-    else if ( aButtonId == EAknSoftkeyCancel )
-        {
-        iDestinationId = 0;
-
-        result = ETrue;
-        }
-
-    CLOG_WRITE_2( "CSelectDestinationDlg::OkToExitL dest ID: [%d], result: [%d]",
-                   iDestinationId, result );
-
-    return result;
-    }
-
-
-// ----------------------------------------------------------------------------
-// CSelectDestinationDlg::PreLayoutDynInitL
-// ----------------------------------------------------------------------------
-//
-void CSelectDestinationDlg::PreLayoutDynInitL()
-    {
-    LOGGER_ENTERFN( "CSelectDestinationDlg::PreLayoutDynInitL" );
-    // Let the base class do its job first
-    CAknListQueryDialog::PreLayoutDynInitL();
-
-    // Set the description field on the query
-    HBufC* desc =
-              StringLoader::LoadLC( R_CMWIZARD_SELECT_DESTINATION_DESCRIPTION );
-
-    MessageBox()->SetMessageTextL( desc );
-    CleanupStack::PopAndDestroy( desc );
-
-    // Specify the item text array
-    CDesCArrayFlat* itemArray =
-                      new (ELeave) CDesCArrayFlat( KCmArrayMediumGranularity );
-    SetItemTextArray( itemArray );
-    SetOwnershipType( ELbmOwnsItemArray );
-
-    // Note: we don't have to put 'itemArray' on to the cleanup stack, as the
-    // model has already taken this object over.
-    
-    for ( TInt i = 0; i < iDestinations.Count(); i++ )
-        {       
-        // Here we take advantage of the fact that our icon array is ordered.
-        // That is, the indices of the icons in the array will always be
-        // in sync with those in the item text array (i.e. each bearer will
-        // have the right icon associated with it).
-        HBufC* destName = iDestinations[i]->NameLC();
-        HBufC* lineText =
-            TCmCommonUi::FormattedTextForListBoxLC( i, *destName );
-
-        itemArray->AppendL( *lineText );
-        CleanupStack::PopAndDestroy( 2, destName ); // destName, lineText
-        }
-
-    // Icons ...
-    SetIconsL();
-    }
-
-
-// ----------------------------------------------------------------------------
-// CSelectDestinationDlg::SetIconsL()
-// ----------------------------------------------------------------------------
-//
-void CSelectDestinationDlg::SetIconsL()
-    {
-    CArrayPtr<CGulIcon>* icons =
-             new (ELeave) CArrayPtrFlat<CGulIcon>( KCmArrayMediumGranularity );
-    CleanupStack::PushL( icons );
-
-    for ( TInt i = 0; i < iDestinations.Count(); i++ )
-        {
-        CGulIcon* icon = iDestinations[i]->IconL();
-        CleanupStack::PushL( icon );
-
-        icons->AppendL( icon );
-
-        CleanupStack::Pop( icon );  // icon array took over ownership
-        }
-
-    SetIconArrayL( icons ); // ownership passed, too
-
-    CleanupStack::Pop( icons );
-    }
-
-
-// ----------------------------------------------------------------------------
-// void CSelectDestinationDlg::HandleResourceChange
-// ----------------------------------------------------------------------------
-//
-void CSelectDestinationDlg::HandleResourceChange( TInt aType )
-    {
-    if ( aType == KAknsMessageSkinChange )
-        {
-        CAknListQueryDialog::HandleResourceChange( aType );
-
-        TRAP_IGNORE( SetIconsL() );
-
-        SizeChanged();
-        }
-    else
-        {
-        if ( aType == KEikDynamicLayoutVariantSwitch )
-            {
-            TRect mainPaneRect;
-            AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
-                                               mainPaneRect );
-
-            TAknLayoutRect layoutRect;
-            layoutRect.LayoutRect( TRect( TPoint( 0, 0 ), 
-                                   mainPaneRect.Size() ),
-                                   AKN_LAYOUT_WINDOW_list_gen_pane( 0 ) );
-
-            ListBox()->SetRect( layoutRect.Rect() );
-            }
-
-        // Base call
-        CAknListQueryDialog::HandleResourceChange( aType );
-        }
-    }
--- a/cmmanager/cmmgr/Framework/Src/uncatdlg.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,454 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CUncatDlg.
-*
-*/
-
-#include <avkon.hrh>
-#include <eikdef.h>
-#include <eikenv.h>
-#include <eikedwin.h>
-#include <cmmanager.rsg>
-#include <aknnavide.h>
-#include <akntitle.h>
-#include <eikmenup.h>
-#include <data_caging_path_literals.hrh>
-#include <StringLoader.h>
-#include <AknIconArray.h>
-
-#include "cmmanager.hrh"
-#include "uncatdlg.h"
-#include "cmlistitem.h"
-#include "cmlistitemlist.h"
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-#include "cmdestinationimpl.h"
-#include <cmcommonui.h>
-#include <cmcommonconstants.h>    
-#include <cmpbasesettingsdlg.h>
-#include "cmlistboxmodel.h"
-#include "selectdestinationdlg.h"
-#include "cmlogger.h"
-
-using namespace CMManager;
-
-// ---------------------------------------------------------------------------
-// CUncatDlg::ConstructAndRunLD
-// Constructs the dialog and runs it.
-// ---------------------------------------------------------------------------
-//
-TInt CUncatDlg::ConstructAndRunLD( TUint32 aHighlight,
-                                   TUint32& aSelected )
-    {
-    CleanupStack::PushL( this );
-    iHighlight = aHighlight;
-    iSelected = &aSelected;
-    ConstructL( R_CM_MENUBAR );
-    PrepareLC(R_CM_DIALOG);
-    CleanupStack::Pop( this );  // it will be PushL-d by ExecuteLD...
-    iModel = new( ELeave ) CCmListboxModel();
-    //destructed in base class destructor
-    iInfoPopupNoteController = CAknInfoPopupNoteController::NewL();
-
-    // Trace changes in CommsDat
-    iCmManager->WatcherRegisterL( this );
-    
-    return RunLD();
-    }
-    
-// ---------------------------------------------------------------------------
-// CUncatDlg::NewL()
-// Two-phase dconstructor, second phase is ConstructAndRunLD
-// ---------------------------------------------------------------------------
-//
-CUncatDlg* CUncatDlg::NewL(CCmManagerImpl* aCmManager )
-    {
-    CUncatDlg* self = new (ELeave) CUncatDlg( aCmManager );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CUncatDlg::CUncatDlg()
-// ---------------------------------------------------------------------------
-//
-CUncatDlg::CUncatDlg( CCmManagerImpl* aCmManager )
-    : CCmDlg( aCmManager, NULL, NULL )
-    , iCmUncatItems(KCmArraySmallGranularity)
-    {
-    CLOG_CREATE;
-    CLOG_ATTACH( this, iCmManager );
-    }
-    
-// ---------------------------------------------------------------------------
-// CUncatDlg::~CUncatDlg
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CUncatDlg::~CUncatDlg()
-    {
-    CLOG_WRITE( "CUncatDlg::~CUncatDlg" );
-    CleanupUncatArray();   
-    CLOG_CLOSE;
-    }
-
-// ---------------------------------------------------------------------------
-// CUncatDlg::DynInitMenuPaneL
-// ---------------------------------------------------------------------------
-//
-void CUncatDlg::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
-    {
-    TBool hideAdd ( EFalse );
-    TBool hideMove ( EFalse );
-    TBool hideCopy( EFalse );
-    TBool hidePrioritise( EFalse );
-    
-    CCmDlg::DynInitMenuPaneL( aResourceId, aMenuPane );
-    if ( aResourceId == R_CM_MENU )
-        {
-        // There are no destinatons to move to OR
-        // the highlighted connection method is in use
-        if ( !iCmManager->DestinationCountL() )
-            {
-            hideMove = ETrue;
-            }
-
-        // No priorities in Uncategorized -> always disabled
-        hidePrioritise = ETrue;
-
-        aMenuPane->SetItemDimmed( ECmManagerUiCmdCmAdd, hideAdd );
-        aMenuPane->SetItemDimmed( ECmManagerUiCmdCmPrioritise, hidePrioritise  );
-        aMenuPane->SetItemDimmed( ECmManagerUiCmdCmCopyToOtherDestination, hideCopy );
-        aMenuPane->SetItemDimmed( ECmManagerUiCmdCmCopyToOtherDestination, hideMove );
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CUncatDlg::InitTextsL
-// called before the dialog is shown
-// to initialize localized textual data
-// ---------------------------------------------------------------------------
-//
-void CUncatDlg::InitTextsL()
-    {
-    // set pane text if neccessary...
-    // pane text needed if not pop-up...
-    HBufC* primary = 
-              iEikonEnv->AllocReadResourceLC( R_CMMANAGERUI_EMPTY_METHOD_VIEW_PRIMARY );
-    HBufC* secondary = 
-              iEikonEnv->AllocReadResourceLC( R_CMMANAGERUI_EMPTY_METHOD_VIEW_SECONDARY );
-    CDesCArrayFlat* items = new (ELeave) CDesCArrayFlat(2);
-    CleanupStack::PushL(items);
-    items->AppendL(primary->Des()); 
-    items->AppendL(secondary->Des());      
-    HBufC* emptyText = 
-          StringLoader::LoadLC( R_TWO_STRING_FOR_EMPTY_VIEW , *items);              
-    iListbox->View()->SetListEmptyTextL( *emptyText );    
-    CleanupStack::PopAndDestroy( emptyText );
-    CleanupStack::PopAndDestroy( items );
-    CleanupStack::PopAndDestroy( secondary );
-    CleanupStack::PopAndDestroy( primary );
-
-    iStatusPane = iEikonEnv->AppUiFactory()->StatusPane();
-    iTitlePane =
-        ( CAknTitlePane* )iStatusPane->ControlL(
-                            TUid::Uid( EEikStatusPaneUidTitle ) );
-
-    iOldTitleText = iTitlePane->Text()->AllocL();
-    HBufC* name = StringLoader::LoadLC( R_CMMANAGERUI_DEST_UNCATEGORIZED );
-    iTitlePane->SetTextL( *name );
-    CleanupStack::PopAndDestroy( name );
-    iNaviPane = ( CAknNavigationControlContainer* ) 
-                    iStatusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) );
-    iNaviDecorator = iNaviPane->CreateNavigationLabelL( KNullDesC );
-    iNaviPane->PushL( *iNaviDecorator );
-    }
-
-// ---------------------------------------------------------------------------
-// CUncatDlg::ProcessCommandL
-// ---------------------------------------------------------------------------
-//
-void CUncatDlg::ProcessCommandL( TInt aCommandId )
-    {
-    if ( MenuShowing() )
-        {
-        HideMenu();
-        }
-
-    switch ( aCommandId )
-        {
-        case ECmManagerUiCmdCmMoveToOtherDestination:
-            {
-            if ( CurrentCML()->GetBoolAttributeL( ECmConnected ) )
-                    {
-                TCmCommonUi::ShowNoteL( R_QTN_SET_NOTE_AP_IN_USE_EDIT,
-                                    TCmCommonUi::ECmErrorNote );
-                }
-            else
-                {
-                // The selected item will be at the same position
-                TInt selected = iListbox->CurrentItemIndex();
-                TInt noi = iListbox->Model()->NumberOfItems();
-                // If it is the last then the previous will be selected.
-                if( selected == noi-1 )
-                    {
-                    selected--;
-                    }
-                
-                TRAPD( err, CCmDlg::ProcessCommandL(
-                                ECmManagerUiCmdCmCopyToOtherDestination ) );
-                if ( err == KErrCancel )
-                    {
-                    break;
-                    }
-                else
-                    {
-                    User::LeaveIfError( err );
-                    }
-                    
-                if ( iListbox->Model()->NumberOfItems() )
-                    {
-                    //first item cannot be deleted
-                    iListbox->ScrollToMakeItemVisible( selected);
-                    iListbox->SetCurrentItemIndexAndDraw( selected );                            
-                    }
-                else
-                    {
-                    TCmCommonUi::ShowNoteL( R_QTN_NETW_CONSET_INFO_UNCAT_EMPTY,
-                                            TCmCommonUi::ECmInfoNote );
-                    iCmManager->WatcherUnRegister();       
-                    TryExitL( KDialogUserBack );                                
-                    }
-                }
-            }
-            break;
-            
-        case EAknSoftkeyClear:
-        case ECmManagerUiCmdCmDelete:            
-            {
-            CCmPluginBase* cm = CurrentCML();
-            
-            if ( cm->GetBoolAttributeL( ECmProtected ) )
-                {
-                TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                        TCmCommonUi::ECmErrorNote );
-                                        
-                break;
-                }
-           
-            if ( cm->GetBoolAttributeL( ECmIsLinked ) )//same check as KErrLocked below
-                {
-                TCmCommonUi::ShowNoteL( R_QTN_NETW_CONSET_INFO_CANNOT_DELETE_VIRTUAL_REF,
-                                        TCmCommonUi::ECmErrorNote );
-                
-                break;
-                }
-           
-            if ( cm->GetBoolAttributeL( ECmConnected ) )//same check as KErrInUse below
-                {
-                TCmCommonUi::ShowNoteL( R_CMMANAGERUI_INFO_CM_IN_USE_CANNOT_DELETE,
-                                        TCmCommonUi::ECmErrorNote );
-                
-                break;
-                }
-
-            HBufC* cmName = cm->GetStringAttributeL(ECmName);
-            CleanupStack::PushL(cmName);
-            
-            if ( TCmCommonUi::ShowConfirmationQueryL( 
-                                    R_CMMANAGERUI_QUEST_CM_DELETE, *cmName ) )
-                {
-                TRAPD( err, CurrentCML()->DeleteL( ETrue ) );
-
-                switch ( err )
-                    {
-                    case KErrInUse:
-                        {
-                        TCmCommonUi::ShowNoteL
-                            ( R_CMMANAGERUI_INFO_CM_IN_USE_CANNOT_DELETE,
-                              TCmCommonUi::ECmErrorNote );
-                        }
-                        break;
-                        
-                    case KErrLocked:
-                        {
-                        TCmCommonUi::ShowNoteL
-                            ( R_QTN_NETW_CONSET_INFO_CANNOT_DELETE_VIRTUAL_REF,
-                              TCmCommonUi::ECmErrorNote );
-                        }
-                        break;
-                        
-                    case KErrNone:
-                        {
-                        HandleListboxDataChangeL();
-
-                        if ( !iListbox->Model()->NumberOfItems() )
-                            {
-                            TCmCommonUi::ShowNoteL( R_QTN_NETW_CONSET_INFO_UNCAT_EMPTY,
-                                                    TCmCommonUi::ECmInfoNote );
-                            iCmManager->WatcherUnRegister();       
-                            TryExitL( KDialogUserBack );                                
-                            }
-                        }
-                        break;
-
-                    default:
-                        {
-                        }
-                    }
-
-                }
-            CleanupStack::PopAndDestroy( cmName );         
-         
-            }
-            break;
-            
-        case ECmManagerUiCmdCmAdd:
-        case ECmManagerUiCmdCmCopyToOtherDestination:
-        case ECmManagerUiCmdCmPrioritise:
-            {
-            TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                    TCmCommonUi::ECmErrorNote );
-            }
-            break;
-            
-        default:
-            {
-            CCmDlg::ProcessCommandL(aCommandId);
-            }        
-        }        
-    }
-    
-// ---------------------------------------------------------------------------
-// CUncatDlg::CurrentCML
-// called before the dialog is shown to initialize listbox data
-// ---------------------------------------------------------------------------
-//
-CCmPluginBase* CUncatDlg::CurrentCML()
-    {
-    return CMByIndexL( iListbox->CurrentItemIndex() );
-    }    
-    
-// ---------------------------------------------------------------------------
-// CUncatDlg::CMByIndexL
-// a connection method in the list
-// ---------------------------------------------------------------------------
-//
-CCmPluginBase* CUncatDlg::CMByIndexL( TInt aIndex )
-    {
-    TInt anIndex = iItemIndex[aIndex];    
-    if( !iCmUncatItems[anIndex].iPlugin )
-        {
-        iCmUncatItems[anIndex].iPlugin = 
-                                iCmManager->GetConnectionMethodL( 
-                                                iCmUncatItems[anIndex].iCmId );
-        }
-    return iCmUncatItems[anIndex].iPlugin;
-    }
-
-// ---------------------------------------------------------------------------
-// CUncatDlg::CMCount
-// number of cms in the list
-// ---------------------------------------------------------------------------
-//
-TInt CUncatDlg::CMCount()
-    {
-    return iCmUncatItems.Count();
-    }
-
-// --------------------------------------------------------------------------
-// CUncatDlg::ConstructCMArrayL
-// --------------------------------------------------------------------------
-//
-void CUncatDlg::ConstructCMArrayL( RArray<TUint32>& aCmIds )
-    {
-    // empty the array - reuse
-    CleanupUncatArray( ETrue );
-    iCmManager->ConnectionMethodL( aCmIds, EFalse );
-    CleanupClosePushL( aCmIds );
-    
-    for( TInt i = 0; i < aCmIds.Count(); ++i )
-        {
-        TUncatItem item;
-        
-        item.iPlugin = NULL;
-        item.iCmId = aCmIds[i];
-        
-        User::LeaveIfError( iCmUncatItems.Append( item ) );
-        }
-    
-    CleanupStack::Pop( &aCmIds );
-    }
-
-// --------------------------------------------------------------------------
-// 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
-// --------------------------------------------------------------------------
-//
-void CUncatDlg::CleanupUncatArray( TBool aReuseArray )
-    {
-    CLOG_WRITE( "CUncatDlg::CleanupUncatArray" );
-    for ( TInt i = 0; i < iCmUncatItems.Count(); ++i )
-        {
-        CCmPluginBase* cm = iCmUncatItems[i].iPlugin;
-        delete cm;
-        }
-    
-    if ( aReuseArray )
-        {
-        iCmUncatItems.Reset();
-        }
-    else
-        {
-        iCmUncatItems.Close();
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CUncatDlg::CommsDatChangesL
-// --------------------------------------------------------------------------
-//
-void CUncatDlg::CommsDatChangesL()
-    {
-    // Update list box
-    HandleListboxDataChangeL();
-    }
--- a/cmmanager/cmmgr/Framework/SrcData/cmmanager.rss	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1412 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Resource file.
-*
-*/
-
-//  RESOURCE IDENTIFIER
-NAME    CMMG // 4 letter ID
-
-// INCLUDES
-
-// System
-#include <eikon.rh>
-#include <avkon.rsg>
-#include <avkon.rh>	
-#include <avkon.loc>
-#include <uikon.rh>
-#include <CommonDialogs.rh>
-#include <pathconfiguration.hrh>
-#include <data_caging_paths_strings.hrh>
-#include <cmmanager.mbg>
-
-// User
-#include <cmmanager.loc>
-#include <cmpsettingsconsts.h>
-#include "cmmanager.hrh"
-
-//For Ip address editor
-#define IPADDRESS_MIN_FIRST_FIELD_VALUE     0
-#define IPADDRESS_MIN_SECOND_FIELD_VALUE    0
-#define IPADDRESS_MIN_THIRD_FIELD_VALUE     0
-#define IPADDRESS_MIN_FOURTH_FIELD_VALUE    0
-#define IPADDRESS_MAX_FIRST_FIELD_VALUE     255
-#define IPADDRESS_MAX_SECOND_FIELD_VALUE    255
-#define IPADDRESS_MAX_THIRD_FIELD_VALUE     255
-#define IPADDRESS_MAX_FOURTH_FIELD_VALUE    255
-
-//  RESOURCE DEFINITIONS
-RESOURCE RSS_SIGNATURE {}
-
-RESOURCE TBUF R_CMMANAGER_CM_NAME_DEFAULT   
-        { buf = "Default Connection Method"; }
-
-// NON-LOCALIZED STRINGS
-RESOURCE TBUF r_start_page_def_value
-    { buf = "http://"; }
-
-// LOCALISED STRINGS
-RESOURCE TBUF r_qtn_netw_conset_info_cannot_delete_dest_prot_cm
-    { buf = qtn_netw_conset_info_cannot_delete_dest_prot_cm; }
-
-RESOURCE TBUF r_qtn_netw_sett_subnet_mask
-    { buf = qtn_netw_sett_subnet_mask; }
-
-RESOURCE TBUF r_qtn_netw_sett_default_gateway
-    { buf = qtn_netw_sett_default_gateway; }
-
-RESOURCE TBUF r_qtn_selec_setting_compulsory
-    { buf = qtn_selec_setting_compulsory; }
-
-RESOURCE TBUF r_qtn_set_dns_servers_automatic
-    { buf = qtn_set_dns_servers_automatic; }
-
-RESOURCE TBUF r_qtn_set_passwd_aut
-    { buf = qtn_set_passwd_aut; }
-
-RESOURCE TBUF r_qtn_set_ap_passwd
-    { buf = qtn_set_ap_passwd; }
-
-RESOURCE TBUF r_qtn_set_prompt_passwd_yes
-    { buf = qtn_set_prompt_passwd_yes; }
-
-RESOURCE TBUF r_qtn_set_prompt_passwd_no
-    { buf = qtn_set_prompt_passwd_no; }
-
-RESOURCE TBUF r_qtn_set_prompt_passwd
-    { buf = qtn_set_prompt_passwd; }
-
-RESOURCE TBUF r_qtn_set_ap_username_none
-    { buf = qtn_set_ap_username_none; }
-
-RESOURCE TBUF r_qtn_set_passwd_aut_normal
-    { buf = qtn_set_passwd_aut_normal; }
-
-RESOURCE TBUF r_qtn_set_passwd_aut_secure
-    { buf = qtn_set_passwd_aut_secure; }
-
-RESOURCE TBUF r_qtn_set_ap_username
-    { buf = qtn_set_ap_username; }
-
-RESOURCE TBUF r_qtn_set_ip_well_known
-    { buf = qtn_set_ip_well_known; }
-
-RESOURCE TBUF r_qtn_set_dns_servers_ip
-    { buf = qtn_set_dns_servers_ip; }
-
-RESOURCE TBUF r_qtn_set_secondary_dns
-    { buf = qtn_set_secondary_dns; }
-
-RESOURCE TBUF r_qtn_set_primary_dns
-    { buf = qtn_set_primary_dns; }
-
-RESOURCE TBUF r_qtn_set_ip_address_dynamic
-    { buf = qtn_set_ip_address_dynamic; }
-
-RESOURCE TBUF r_qtn_set_ip_address
-    { buf = qtn_set_ip_address; }
-
-RESOURCE TBUF r_qtn_set_ipv6_settings
-    { buf = qtn_set_ipv6_settings; }
-
-RESOURCE TBUF r_qtn_set_ipv4_settings
-    { buf = qtn_set_ipv4_settings; }
-
-RESOURCE TBUF r_qtn_set_ip_user_defined
-    { buf = qtn_set_ip_user_defined; }
-
-RESOURCE TBUF r_qtn_netw_quest_iap_incomplete_delete
-    { buf = qtn_netw_quest_iap_incomplete_delete; }
-
-RESOURCE TBUF r_qtn_set_info_invalid_ip
-    { buf = qtn_set_info_invalid_ip; }
-
-RESOURCE TBUF r_qtn_set_proxy_server_address
-    { buf = qtn_set_proxy_server_address; }
-    
-RESOURCE TBUF r_qtn_set_proxy_server_address_none
-    { buf = qtn_set_proxy_server_address_none; }
-    
-RESOURCE TBUF r_qtn_set_proxy_port_number
-    { buf = qtn_set_proxy_port_number; }
-    
-RESOURCE TBUF r_qtn_set_home_page_none
-    { buf = qtn_set_home_page_none; }
-    
-RESOURCE TBUF r_qtn_set_starting_page
-    { buf = qtn_set_starting_page; }
-    
-RESOURCE TBUF r_qtn_netw_conset_info_cannot_delete_virtual_ref
-    { buf = qtn_netw_conset_info_cannot_delete_virtual_ref; }
-    
-RESOURCE TBUF64 r_cmmanagereng_default_ap_name        
-    { buf =  qtn_set_ap_default_name; }
-
-RESOURCE TBUF r_qtn_netw_conset_info_uncat_empty 
-    { buf = qtn_netw_conset_info_uncat_empty ; }
-    
-RESOURCE TBUF r_qtn_netw_conset_embedded_dest 
-    { buf = qtn_netw_conset_embedded_dest ; }
-
-RESOURCE TBUF r_cmmanagerui_add_connection_method       
-    { buf = qtn_netw_conset_add_connection_method; }
-RESOURCE TBUF r_cmmanagerui_new_connection              
-    { buf = qtn_netw_conset_add_connection; }
-
-RESOURCE TBUF r_cmmanagerui_conn_methods_amount_many 
-    { buf = qtn_netw_conset_conn_methods_amount_many; }
-
-RESOURCE TBUF r_cmmanagerui_conn_methods_amount_one 
-    { buf = qtn_netw_conset_conn_methods_amount_one; }
-
-RESOURCE TBUF r_cmmanagerui_conn_methods_amount_none 
-    { buf = qtn_netw_conset_conn_methods_amount_none; }
-
-RESOURCE TBUF r_cmmanagerui_method_priority_other 
-    { buf = qtn_netw_conset_method_priority_other; }
-
-RESOURCE TBUF r_qtn_netw_conset_method_priority_auto
-    { buf = qtn_netw_conset_method_priority_auto; }
-
-RESOURCE TBUF r_cmmanagerui_navi 
-    { buf = qtn_netw_conset_network_connections_title; }
-
-RESOURCE TBUF r_cmmanagerui_empty_method_view_primary 
-    { buf = qtn_netw_conset_empty_method_view_primary; }
-
-RESOURCE TBUF r_cmmanagerui_empty_method_view_secondary 
-    { buf = qtn_netw_conset_empty_method_view_secondary; }
-
-RESOURCE TBUF r_cmmanagerui_connection_name           	
-    { buf = qtn_set_ap_conn_name; }
-
-RESOURCE TBUF r_cmmanagerui_prmpt_cm_mame
-    { buf = qtn_netw_conset_prmpt_method_name; }
-
-RESOURCE TBUF r_cmmanagerui_prmpt_destination_name           	
-    { buf =qtn_netw_conset_prmpt_destination_name;}
-
-RESOURCE TBUF r_cmmanagerui_quest_cm_delete           	
-    { buf = qtn_netw_conset_quest_delete_method;}
-
-RESOURCE TBUF r_cmmanagerui_info_cm_protected_cannot_delete           	
-    { buf = qtn_netw_conset_info_cannot_delete_protected_method;}
-
-RESOURCE TBUF r_cmmanagerui_info_cm_in_use_cannot_delete           	
-    { buf = qtn_netw_conset_info_cannot_delete_method_in_use;}
-
-RESOURCE TBUF r_cmmanagerui_quest_dest_delete           	
-    {  buf = qtn_netw_conset_quest_delete_destination; }
-
-RESOURCE TBUF r_cmmanagerui_info_dest_in_use_cannot_delete             	
-    {  buf = qtn_netw_conset_info_cannot_delete_dest_in_use; }
-
-RESOURCE TBUF r_qtn_set_note_ap_in_use_edit
-    { buf = qtn_set_note_ap_in_use_edit; }
-
-RESOURCE TBUF r_cmmanagerui_info_dest_protected_cannot_delete           	
-    { buf = qtn_netw_conset_info_cannot_delete_dest_protected;}
-
-RESOURCE TBUF r_cmmanagerui_dest_uncategorized           	
-    { buf = qtn_netw_conset_dest_uncategorized; }
-
-RESOURCE TBUF r_cmmanagerui_dest_internet           	
-    { buf = qtn_netw_conset_dest_internet; }
-
-RESOURCE TBUF r_cmmanagerui_dest_wap           	
-    { buf = qtn_netw_conset_dest_wap; }
-
-RESOURCE TBUF r_cmmanagerui_dest_mms           	
-    { buf = qtn_netw_conset_dest_mms; }
-
-RESOURCE TBUF r_cmmanagerui_dest_intranet           	
-   { buf = qtn_netw_conset_dest_intranet; }
-
-RESOURCE TBUF r_cmmanagerui_msk_add_method
-    { buf = qtn_msk_add_method; }
-
-RESOURCE TBUF r_plugin_base_options_change    
-	{ buf = qtn_set_options_change; }
-	
-RESOURCE TBUF r_plugin_base_options_ap_advanced                       
-	{ buf = qtn_set_options_ap_advanced; }
-
-RESOURCE TBUF r_plugin_base_cmd_exit                                  
-    { buf = qtn_set_options_exit; }
-			
-RESOURCE TBUF r_cmwizard_automatic_check
-    { buf = qtn_netw_conset_quest_check_conn_methods; }
-
-RESOURCE TBUF r_cmwizard_checking_methods
-    { buf = qtn_netw_conset_wait_checking_methods; }
-
-RESOURCE TBUF r_cmwizard_manual_configuration
-    { buf = qtn_netw_conset_quest_conf_method_manually; }
-
-RESOURCE TBUF r_cmwizard_available_methods
-    { buf = qtn_netw_conset_prmpt_available_methods; }
-
-RESOURCE TBUF r_cmwizard_bearer_available_wlan
-    { buf = qtn_netw_conset_bearer_available_wlan; }
-
-RESOURCE TBUF r_cmwizard_one_wlan_nw_available
-    { buf = qtn_netw_conset_one_wlan_nw_available; }
-
-RESOURCE TBUF r_cmwizard_many_wlan_nw_available
-    { buf = qtn_netw_conset_many_wlan_nw_available; }
-
-RESOURCE TBUF r_cmwizard_select_conn_method
-    { buf = qtn_netw_conset_prmpt_select_conn_method; }
-
-RESOURCE TBUF r_cmwizard_select_destination_description
-    { buf = qtn_netw_conset_detail_add_to_destination; }
-
-RESOURCE TBUF r_cmwizard_new_method_added
-    { buf = qtn_netw_conset_conf_new_method_added; }
-
-RESOURCE TBUF r_cmwizard_new_dest_added
-    { buf = qtn_netw_conset_conf_new_dest_added; }
-
-RESOURCE TBUF r_cmwizard_no_destination
-    { buf = qtn_netw_conset_info_no_destinations; }
-    
-RESOURCE TBUF r_cmwizard_no_unprotected_destination
-    { buf = qtn_new_conset_info_cannot_add_all_dest_protected; }
-
-RESOURCE TBUF r_cmwizard_no_unprotected_destination_dup
-    { buf = qtn_netw_conset_info_cannot_add_all_dest_protected; }
-
-RESOURCE TBUF r_cmwizard_cannot_perform_for_protected
-    { buf = qtn_netw_conset_info_cannot_perform_for_protected; }
-
-RESOURCE TBUF r_cmwizard_no_vpn_stacking
-    { buf = qtn_netw_conset_info_no_vpn_stacking; }
-
-RESOURCE TBUF r_cmmanagerui_sett_destination     
-    { buf = qtn_netw_conset_sett_destination; }
-
-RESOURCE TBUF r_cmmanagerui_sett_always_ask     
-    { buf = qtn_netw_conset_sett_always_ask; }
-
-RESOURCE TBUF r_cmmanagerui_sett_ask_once      	
-    { buf = qtn_netw_conset_sett_ask_once;  }
-
-RESOURCE TBUF r_cmmanagerui_sett_default_connection      	
-    { buf = qtn_netw_conset_sett_default_connection;  }
-
-RESOURCE TBUF r_cmmanagerui_sett_user_defined      	
-    { buf = qtn_netw_conset_sett_user_defined;  }
-
-RESOURCE TBUF r_cmmanagerui_navi_default 
-    { buf = qtn_netw_conset_navi_default; }
-
-RESOURCE TBUF r_cmmanagerui_navi_default_always_ask 
-    { buf = qtn_netw_conset_navi_default_always_ask; }
-
-RESOURCE TBUF r_cmmanagerui_navi_default_ask_once
-    { buf = qtn_netw_conset_navi_default_ask_once; }
-
-RESOURCE TBUF r_cmmanagerui_default_connection_set_to 
-    { buf = qtn_netw_conset_default_connection_set_to; }
-
-RESOURCE TBUF r_cmmanagerui_conf_default_always_ask 
-    { buf = qtn_netw_conset_conf_default_always_ask; }
-
-RESOURCE TBUF r_cmmanagerui_conf_default_ask_once 
-    { buf = qtn_netw_conset_conf_default_ask_once; }
-
-RESOURCE TBUF r_cmmanagerui_default_connection_title 
-    { buf = qtn_netw_conset_default_connection_title; }
-
-RESOURCE TBUF r_qtn_netw_conset_navi_nof_destinations 
-    { buf = qtn_netw_conset_navi_nof_destinations; }
-
-RESOURCE TBUF r_qtn_netw_conset_navi_one_destination 
-    { buf = qtn_netw_conset_navi_one_destination; }
-
-RESOURCE TBUF r_cmmanagerui_navi_one_conn_method 
-    { buf = qtn_netw_conset_navi_one_conn_method; }
-
-RESOURCE TBUF r_cmmanagerui_navi_many_conn_methods 
-    { buf = qtn_netw_conset_navi_many_conn_methods; }
-
-RESOURCE TBUF r_cmmanagerui_popup_title_data_bearer 
-    { buf = qtn_netw_conset_popup_title_data_bearer; }
-
-RESOURCE TBUF r_cmmanagerui_prmpt_select_icon 
-    { buf = qtn_netw_conset_prmpt_select_icon; }
-
-RESOURCE TBUF r_cmmanagerui_info_dest_already_in_use 
-    { buf = qtn_netw_conset_info_name_already_in_use; }
-
-RESOURCE TBUF r_plugin_base_set_ap_bearer
-    { buf = qtn_set_ap_bearer; }
-
-RESOURCE TBUF r_plugin_base_info_bearer_not_editable 
-    { buf = qtn_netw_conset_info_bearer_not_editable; }
-
-RESOURCE TBUF r_plugin_base_sett_smtp_override 
-    { buf = qtn_netw_conset_sett_smtp_override; }
-
-RESOURCE TBUF r_cmmanagerui_info_prio_not_possible 
-    { buf = qtn_netw_conset_info_prio_not_possible; }
-
-RESOURCE TBUF r_cmmanagerui_info_protected_cannot_edit      
-    { buf = qtn_netw_conset_info_cannot_edit_protected; }
-
-RESOURCE TBUF r_cmmanagerui_quest_embedded_dest_delete      
-    { buf = qtn_netw_conset_quest_delete_embedded_dest; }    
-
-// SMTP settings
-RESOURCE TBUF r_plugin_base_sett_smtp_outgoing_mail_server
-    { buf = qtn_mce_settings_mail_sending_h; }
-
-RESOURCE TBUF r_plugin_base_sett_smtp_user_name
-    { buf = qtn_mce_settings_mail_user_name; }
-
-RESOURCE TBUF r_plugin_base_sett_smtp_password
-    { buf = qtn_mce_settings_mail_password; }
-    
-RESOURCE TBUF r_plugin_base_prompt_server_addr
-    { buf = qtn_mbxs_settings_mail_srvr_prompt; }
-
-RESOURCE TBUF r_plugin_base_sett_smtp_security
-    { buf = qtn_mce_settings_mail_security; }
-    
-RESOURCE TBUF r_plugin_base_sett_security_on_starttls
-    { buf = qtn_mbxs_settings_mail_sec_starttls; }
-    
-RESOURCE TBUF r_plugin_base_sett_security_on_ssltls
-    { buf = qtn_mbxs_settings_mail_sec_ssltls; }
-
-RESOURCE TBUF r_plugin_base_sett_security_off
-    { buf = qtn_mbxs_settings_mail_sec_off; }
-
-RESOURCE TBUF r_plugin_base_sett_port_default
-    { buf = qtn_mbxs_settings_mail_port_def; }
-    
-RESOURCE TBUF r_plugin_base_sett_smtp_port 
-    { buf = qtn_mce_settings_mail_port; }
-
-RESOURCE TBUF r_plugin_base_sett_port_userdef
-    { buf = qtn_mbxs_settings_mail_port_userdef; }
-    
-RESOURCE TBUF r_text_softkey_option
-    {
-    buf = text_softkey_option;
-    }
-
-RESOURCE TBUF r_qtn_memlo_memory_full
-    {
-    buf = qtn_memlo_memory_full;
-    }
-
-RESOURCE TBUF r_qtn_fldr_name_already_used
-    {
-    buf = qtn_fldr_name_already_used;
-    }
-
-RESOURCE TBUF r_cmmanagerui_info_cm_already_in_use 
-    { buf = qtn_netw_conset_info_name_already_in_use; }
-
-
-    
-RESOURCE TBUF r_two_string_for_empty_view { buf = "%0U\n%1U"; }
-
-// --------------------------------------------------------------------------
-// Menu bars
-// --------------------------------------------------------------------------
-//   
-//    r_dest_menubar
-//    menubar for the settings view 
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_BAR r_dest_menubar
-	{
-    titles=
-		{
-        MENU_TITLE { menu_pane=r_dest_menu; 
-                     txt="App"; }
-	    };
-	}
-// -----------------------------------------------------------------------------
-//   
-//    r_dest_menu
-//    menu pane for destination list 
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_PANE r_dest_menu
-	{
-    items=
-        {
-        MENU_ITEM 
-            { 
-             command = ECmManagerUiCmdDestEdit; 
-             txt = qtn_options_open; 
-             flags = EEikMenuItemAction;
-             },
-        MENU_ITEM 
-            { 
-             command = ECmManagerUiCmdDestDefaultConnection; 
-             txt = qtn_netw_conset_options_default_connection; 
-             },
-        MENU_ITEM 
-            {
-            command = ECmManagerUiCmdDestAdd; 
-            txt = qtn_netw_conset_options_add_destination;
-            },
-        MENU_ITEM 
-            { 
-            command = ECmManagerUiCmdDestRename; 
-            txt = qtn_netw_conset_options_rename_destination;
-            flags = EEikMenuItemSpecific;
-            },
-        MENU_ITEM 
-            { 
-            command = ECmManagerUiCmdDestChangeIcon; 
-            txt = qtn_netw_conset_options_change_dest_icon; 
-            flags = EEikMenuItemSpecific;
-            },
-        MENU_ITEM 
-            { 
-            command = ECmManagerUiCmdDestDelete; 
-            txt = qtn_netw_conset_options_delete_destination;
-            flags = EEikMenuItemSpecific;
-            },
-        MENU_ITEM 
-            { 
-            command = EAknCmdHelp; 
-            txt = qtn_options_help;
-            },
-        MENU_ITEM 
-            { 
-            command = ECmManagerUiCmdDestUserExit; 
-            txt=qtn_options_exit; 
-            }
-         };
-  }
-  
-// -----------------------------------------------------------------------------
-//   
-//    r_select_netw_conn_menubar
-//    menubar for the settings view 
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_BAR r_select_netw_conn_menubar
-	{
-    titles=
-		{
-        MENU_TITLE { menu_pane=r_select_netw_conn_menu; 
-                     txt="App"; }
-	    };
-	}		
-	
-// -----------------------------------------------------------------------------
-//   
-//    r_select_netw_conn_menu
-//    menu pane for destination list 
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_PANE r_select_netw_conn_menu
-	{
-    items=
-		    {
-		     MENU_ITEM 
-		         { 
-		          command = ECmManagerUiCmdDestSelect; 
-              txt = qtn_set_cmd_select;
-              }
-         ,MENU_ITEM 
-              {
-            	command = ECmManagerUiCmdCMSelect;
-            	txt = qtn_netw_conset_options_select_method;
-            	}            
-          ,MENU_ITEM 
-            	{
-            	command = EAknCmdHelp; 
-            	txt = qtn_options_help;
-            	}
-				};
-	}
-
-// -----------------------------------------------------------------------------
-//
-//    r_dest_dialog
-//
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE DIALOG r_dest_dialog
-    {
-    flags = EEikDialogFlagWait | 
-            EEikDialogFlagNoDrag |
-            EEikDialogFlagNoTitleBar | 
-            EEikDialogFlagFillAppClientRect |
-            EEikDialogFlagCbaButtons;
-    buttons = R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT;
-    items =
-        {
-        DLG_LINE
-            {
-            type = KDestListboxType;
-            id = KDestListboxId;
-            itemflags = EEikDlgItemTakesEnterKey;
-            control= LISTBOX { flags = EAknListBoxSelectionList;};
-            }
-        };
-    }
-
-// -----------------------------------------------------------------------------
-//   
-//   r_dest_listbox 
-//   List of individual settings
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE LISTBOX r_dest_listbox
-	{
-	flags = EAknListBoxSelectionList;
-	}
-
-
-//-----------------------------------------------------------------------------
-// Menu bars
-// -----------------------------------------------------------------------------
-//   
-//    r_cm_menubar
-//    menubar for the settings view 
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_BAR r_cm_menubar
-	{
-    titles=
-		{
-        MENU_TITLE { menu_pane=r_cm_menu; txt="App"; }
-	    };
-	}
-// -----------------------------------------------------------------------------
-//   
-//    r_cm_menu
-//    menu pane for cmination list 
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_PANE r_cm_menu
-  {
-    items=
-        {
-         MENU_ITEM 
-             { 
-              command = ECmManagerUiCmdCmEdit; 
-              txt = qtn_netw_conset_options_edit; 
-              flags = EEikMenuItemAction;
-              },
-         MENU_ITEM 
-             { 
-        			command = ECmManagerUiCmdCmAdd; 
-        			txt = qtn_netw_conset_options_add_method;
-            	},
-     		 MENU_ITEM 
-        		 { 
-        			command = ECmManagerUiCmdCmRename; 
-        			txt = qtn_netw_conset_options_rename_method;
-            	flags = EEikMenuItemSpecific;
-        			},
-         MENU_ITEM 
-          		{ 
-        			command = ECmManagerUiCmdCmDelete; 
-            	txt = qtn_netw_conset_options_delete_method;
-            	flags = EEikMenuItemSpecific;
-            	},
-        	MENU_ITEM 
-          	  {
-            	command = ECmManagerUiCmdCmPrioritise; 
-            	txt = qtn_netw_conset_options_prioritise; 
-            	flags = EEikMenuItemSpecific;
-            	},
-        	MENU_ITEM 
-           	 { 
-            	command = ECmManagerUiCmdCmMoveToOtherDestination; 
-            	txt = qtn_netw_conset_options_move_to_dest;
-            	flags = EEikMenuItemSpecific;
-            	},
-        	MENU_ITEM 
-            	{ 
-            	command = ECmManagerUiCmdCmCopyToOtherDestination; 
-            	txt = qtn_netw_conset_options_copy_to_dest;
-            	flags = EEikMenuItemSpecific;
-            	},
-        	MENU_ITEM 
-            	{ 
-            	command = EAknCmdHelp; 
-            	txt = qtn_options_help;
-            	},
-        	MENU_ITEM 
-          	  { 
-            	command = ECmManagerUiCmdCmUserExit; 
-            	txt = qtn_options_exit; 
-            	}
-    		};
-  }
-
-// -----------------------------------------------------------------------------
-// r_softkeys_options_cancel__connect
-// option/add method/cancel button set
-// -----------------------------------------------------------------------------
-RESOURCE CBA r_softkeys_options_back__edit
-    {
-    buttons =
-        {
-        CBA_BUTTON { id = EAknSoftkeyOptions;       txt = text_softkey_option; },
-        CBA_BUTTON { id = EAknSoftkeyBack;          txt = text_softkey_back; },
-        CBA_BUTTON { id = ECmManagerUiCmdCmEdit;    txt = qtn_msk_edit; }
-        };
-    }
-
-// -----------------------------------------------------------------------------
-// r_softkeys_prio_ok_cancel__ok
-// ok/ok/cancel button set for prioritise
-// -----------------------------------------------------------------------------
-RESOURCE CBA r_softkeys_prio_ok_cancel__ok
-    {
-    buttons =
-        {
-        CBA_BUTTON { id = ECmManagerUiCmdCmPrioOk;       txt = text_softkey_ok; },
-        CBA_BUTTON { id = ECmManagerUiCmdCmPrioCancel;   txt = text_softkey_cancel; },
-        CBA_BUTTON { id = ECmManagerUiCmdCmPrioOk;       txt = text_softkey_ok; }
-        };
-    }
-
-    
-// -----------------------------------------------------------------------------
-//
-//    r_cm_dialog
-//
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE DIALOG r_cm_dialog
-    {
-    flags = EEikDialogFlagWait | 
-            EEikDialogFlagNoDrag |
-            EEikDialogFlagNoTitleBar | 
-            EEikDialogFlagFillAppClientRect |
-            EEikDialogFlagCbaButtons | 
-            EEikDialogFlagNotifyEsc;
-    buttons = r_softkeys_options_back__edit;
-    items =
-        {
-        DLG_LINE
-            {
-            type = KCmListboxType;
-            id = KCmListboxId;
-            itemflags = EEikDlgItemTakesEnterKey;
-            control= LISTBOX { flags = EAknListBoxSelectionList;};
-            }
-        };
-    }
-
-// -----------------------------------------------------------------------------
-//   r_cm_listbox 
-//   List of individual settings
-// -----------------------------------------------------------------------------
-//
-RESOURCE LISTBOX r_cm_listbox
-	{
-	flags = EAknListBoxSelectionList;
-	}
-	
-// -----------------------------------------------------------------------------
-//    r_plugin_base_menubar
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_BAR r_plugin_base_menubar
-    {
-    titles=
-        {
-        MENU_TITLE { menu_pane=r_plugin_base_menu; txt="A"; }
-        };
-    }
-
-// -----------------------------------------------------------------------------
-//    r_plugin_base_menu
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_PANE r_plugin_base_menu
-    {
-    items=
-        {
-        MENU_ITEM 
-            { 
-            command = EPluginBaseCmdChange; 
-            txt = qtn_set_options_change; 
-            flags = EEikMenuItemAction;
-            },
-        MENU_ITEM 
-            { 
-            command = EPluginBaseCmdAdvanced;
-            txt = qtn_set_options_ap_advanced; 
-            },
-        MENU_ITEM 
-            { 
-            command = EAknCmdHelp; 
-            txt=qtn_options_help;
-            },
-        MENU_ITEM 
-            { 
-            command = EPluginBaseCmdExit; 
-            txt = qtn_options_exit; 
-            }
-        };
-    }
-
-// -----------------------------------------------------------------------------
-// r_softkeys_options_back__change
-// option/add connection/cancel button set
-// -----------------------------------------------------------------------------
-RESOURCE CBA r_softkeys_options_back__change
-    {
-    buttons =
-        {
-        CBA_BUTTON { id = EAknSoftkeyOptions;   txt = text_softkey_option; },
-        CBA_BUTTON { id = EAknSoftkeyBack;      txt = text_softkey_back; },
-        CBA_BUTTON { id = EAknSoftkeyChange;    txt = qtn_msk_change; }
-        };
-    }
-
-// -----------------------------------------------------------------------------
-//    r_plugin_base_dialog
-// -----------------------------------------------------------------------------
-//
-RESOURCE DIALOG r_plugin_base_dialog
-    {
-    flags= EEikDialogFlagWait | 
-           EEikDialogFlagNoDrag | 
-           EEikDialogFlagNoTitleBar |
-           EEikDialogFlagFillAppClientRect |
-           EEikDialogFlagCbaButtons;
-
-    buttons = r_softkeys_options_back__change;
-    items=
-        {
-        DLG_LINE
-            {
-            type = EAknCtSettingListBox;
-            id = KPluginBaseListboxId;
-            control= LISTBOX { flags = EEikListBoxMultipleSelection;};
-            }
-        };
-    }
-
-RESOURCE LISTBOX r_listbox_ap_settings
-    {
-    flags = EEikListBoxMultipleSelection;
-    }
-    
-// Ap data editor resources
-// Connection name
-
-RESOURCE EDWIN r_setting_app_edwin_conn_name
-    {
-    width=KConnNameWidth;
-    lines=KConnNameLines;
-    maxlength=KMaxConnNameLength;
-    allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode;
-    default_input_mode = EAknEditorTextInputMode;
-    flags= EEikEdwinAutoSelection | EEikEdwinNoLineOrParaBreaks;
-    }
-RESOURCE AVKON_SETTING_PAGE r_text_setting_page_conn_name
-    {
-    number= EAknSettingPageNoOrdinalDisplayed;
-    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-    label= qtn_set_ap_conn_name;
-    type = EEikCtEdwin;
-    editor_resource_id = r_setting_app_edwin_conn_name;
-    }
-    
-RESOURCE DIALOG r_ok_note
-    {
-    flags = EEikDialogFlagNoDrag | EEikDialogFlagNoTitleBar |
-            EEikDialogFlagCbaButtons | EEikDialogFlagWait;
-    buttons = R_AVKON_SOFTKEYS_EMPTY;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtNote;
-            id = EGeneralNote;
-            control = AVKON_NOTE
-                {
-                layout = EGeneralLayout;
-                animation = R_QGN_NOTE_OK_ANIM;
-                };
-            }
-        };
-    }    
-
-RESOURCE DIALOG r_info_note
-    {
-    flags = EEikDialogFlagNoDrag | EEikDialogFlagNoTitleBar |
-            EEikDialogFlagCbaButtons | EEikDialogFlagWait;
-    buttons = R_AVKON_SOFTKEYS_EMPTY;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtNote;
-            id = EGeneralNote;
-            control = AVKON_NOTE
-                {
-                layout = EGeneralLayout;
-                animation = R_QGN_NOTE_INFO_ANIM;
-                };
-            }
-        };
-    }    
-
-
-RESOURCE DIALOG r_warning_note
-    {
-    flags = EEikDialogFlagNoDrag | EEikDialogFlagNoTitleBar |
-            EEikDialogFlagCbaButtons | EEikDialogFlagWait;
-    buttons = R_AVKON_SOFTKEYS_EMPTY;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtNote;
-            id = EGeneralNote;
-            control = AVKON_NOTE
-                {
-                layout = EGeneralLayout;
-                animation = R_QGN_NOTE_WARNING_ANIM;
-                };
-            }
-        };
-    }    
-
-
-RESOURCE DIALOG r_error_note
-    {
-    flags = EEikDialogFlagNoDrag | EEikDialogFlagNoTitleBar |
-            EEikDialogFlagCbaButtons | EEikDialogFlagWait;
-    buttons = R_AVKON_SOFTKEYS_EMPTY;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtNote;
-            id = EGeneralNote;
-            control = AVKON_NOTE
-                {
-                layout = EGeneralLayout;
-                animation = R_QGN_NOTE_ERROR_ANIM;
-                };
-            }
-        };
-    }    
-
-
-RESOURCE DIALOG r_confirmation_query
-    {
-    flags = EGeneralQueryFlags;
-    buttons = R_AVKON_SOFTKEYS_YES_NO__YES;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtQuery;
-            id = EGeneralQuery;
-            control = AVKON_CONFIRMATION_QUERY
-                {
-                layout = EConfirmationLayout;
-                };  // AVKON_CONFIRMATION_QUERY
-            }   // DLG_LINE
-        };  // items
-    }   // DIALOG
-
-RESOURCE DIALOG r_memory_full_confirmation_query
-    {
-    flags = EGeneralQueryFlags;
-    buttons = R_AVKON_SOFTKEYS_OK_EMPTY__OK;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtQuery;
-            id = EGeneralQuery;
-            control = AVKON_CONFIRMATION_QUERY
-                {
-                layout = EConfirmationLayout;
-                animation = R_QGN_NOTE_WARNING_ANIM;
-                };  // AVKON_CONFIRMATION_QUERY
-            }   // DLG_LINE
-        };  // items
-    }   // DIALOG    
-
-RESOURCE DIALOG r_text_query
-    {
-    flags = EEikDialogFlagWait | EEikDialogFlagNoDrag |
-            EEikDialogFlagNoTitleBar | EEikDialogFlagCbaButtons |
-            EEikDialogFlagNoShadow;
-    buttons = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtQuery;
-            id = EGeneralQuery;
-            control = AVKON_DATA_QUERY
-                {
-                layout = EDataLayout;
-                control = EDWIN
-                    {
-                    flags = EEikEdwinNoHorizScrolling | EEikEdwinResizable;
-                    };  // EDWIN
-                };  // AVKON_DATA_QUERY
-            }   // DLG_LINE
-        };  // items
-    }   // DIALOG
-
-RESOURCE LISTBOX r_setting_app_listbox
-    {
-    flags = EEikListBoxMultipleSelection;
-    }
-
-RESOURCE AVKON_SETTING_PAGE r_radio_button_setting_page
-    {
-    number = EAknSettingPageNoOrdinalDisplayed;
-    softkey_resource = R_AVKON_SOFTKEYS_OPTIONS_CANCEL__SELECT;
-    menubar = r_select_netw_conn_menubar;
-    type =  EAknSetListBox;
-    editor_resource_id= r_setting_app_listbox;
-    }
-
-RESOURCE AVKON_SETTING_PAGE r_radio_button_setting_page_ok_cancel
-    {
-    number = EAknSettingPageNoOrdinalDisplayed;
-    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-    type =  EAknSetListBox;
-    editor_resource_id= r_setting_app_listbox;
-    }
-
-// --------------------------------------------------------------------------
-// 
-// Generic numeric setting edwin
-// --------------------------------------------------------------------------
-//
-RESOURCE EDWIN r_edwin_port_number_setting_page
-    {
-    width=KNumericPageWidth;
-    lines=KNumericPageLines;
-    maxlength=KMaxProxyPortNumberLength;
-    allowed_input_modes = EAknEditorNumericInputMode;
-    default_input_mode = EAknEditorNumericInputMode;
-    default_case = EAknEditorLowerCase;
-    flags = EEikEdwinAutoSelection | EEikEdwinNoLineOrParaBreaks;
-    avkon_flags = EAknEditorFlagLatinInputModesOnly;
-    numeric_keymap = EAknEditorPlainNumberModeKeymap;
-    }
-
-// --------------------------------------------------------------------------
-// r_port_number_setting_page
-// Port number setting page
-// --------------------------------------------------------------------------
-//
-RESOURCE AVKON_SETTING_PAGE r_port_number_setting_page
-    {
-    number= EAknSettingPageNoOrdinalDisplayed;
-    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-    type = EEikCtEdwin;
-    editor_resource_id = r_edwin_port_number_setting_page;
-    }
-    
-
-RESOURCE DIALOG r_cmmanager_wait_note
-    {
-    flags = EAknWaitNoteFlags;
-    buttons = R_AVKON_SOFTKEYS_CANCEL;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtNote;
-            id = ECmWaitDialog;
-            control= AVKON_NOTE
-                {
-                layout = EWaitLayout;
-                animation = R_QGN_GRAF_WAIT_BAR_ANIM;
-                };
-            }
-        };
-    }
-
-
-RESOURCE AVKON_LIST_QUERY r_cmmanager_list_query_with_msgbox
-    {
-    softkeys = R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT;
-    flags = EEikDialogFlagNotifyEsc | EEikDialogFlagWait;
-    items =
-        {
-        AVKON_LIST_QUERY_DLG_LINE
-            {
-            id = EListQueryControl;
-            control = AVKON_LIST_QUERY_CONTROL_WITH_MSGBOX
-                {
-                actuallisttype = EAknCtSingleGraphicPopupMenuListBox;
-                listbox = AVKON_LIST_QUERY_LIST
-                    {
-                    flags = EAknListBoxSelectionList;
-                    };
-
-                heading = qtn_netw_conset_prmpt_add_to_destination;
-                };
-            }
-        };
-    }
-    
-// -----------------------------------------------------------------------------
-//
-//    r_iconsel_dialog
-//
-//
-// -----------------------------------------------------------------------------
-//
-
-RESOURCE DIALOG r_iconsel_dialog
-    {
-    flags = EGeneralQueryFlags | 
-            EEikDialogFlagNoBorder |
-            EEikDialogFlagNoShadow;
-    buttons =
-            R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT;
-    items=
-        {
-        DLG_LINE
-            {
-            type = EAknCtPopupHeadingPane;
-            id = EAknSCTQueryHeadingId;
-            control = AVKON_HEADING
-                {
-                headinglayout = R_AVKON_SCT_LIST_HEADING_PANE;
-                };
-            },
-        DLG_LINE
-            {
-            type = KCmDestIconMapType;//0x2001
-            id = ECmDestIconMapContentId;
-            }
-        };
-    }    
-
-// ---------------------------------------------------------------------------
-// r_setting_app_edwin_proxy_server_addr
-// edwin for proxy server address setting page
-// ---------------------------------------------------------------------------
-//
-RESOURCE EDWIN r_setting_app_edwin_proxy_server_addr
-    {
-    width = KProxyServerWidth;
-    lines = KProxyServerLines;
-    maxlength = KMaxProxyServerLength;
-    numeric_keymap = EAknEditorCalculatorNumberModeKeymap;
-    allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode;
-    default_input_mode = EAknEditorTextInputMode;
-    special_character_table = R_AVKON_URL_SPECIAL_CHARACTER_TABLE_DIALOG;
-    default_case = EAknEditorLowerCase;
-    allowed_case_modes = EAknEditorLowerCase | EAknEditorUpperCase;
-    avkon_flags = EAknEditorFlagLatinInputModesOnly | EAknEditorFlagUseSCTNumericCharmap;
-    flags = EEikEdwinAutoSelection | EAknEditorLowerCase | EEikEdwinNoLineOrParaBreaks;
-    }
-
-// --------------------------------------------------------------------------
-// r_text_setting_page_proxy_server_addr
-// Proxy server address page
-// --------------------------------------------------------------------------
-//
-RESOURCE AVKON_SETTING_PAGE r_text_setting_page_proxy_server_addr
-    {
-    number= EAknSettingPageNoOrdinalDisplayed;
-    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-    label= qtn_set_proxy_server_address;
-    type = EEikCtEdwin;
-    editor_resource_id = r_setting_app_edwin_proxy_server_addr;
-    }
-
-// --------------------------------------------------------------------------
-// r_setting_app_edwin_starting_page
-// Starting Page edwin
-// --------------------------------------------------------------------------
-//
-RESOURCE EDWIN r_setting_app_edwin_starting_page
-    {
-    width=KStartPageWidth;
-    lines=KStartPageLines;
-    maxlength=KMaxStartPageLength;
-    numeric_keymap=EAknEditorAlphanumericNumberModeKeymap;
-    allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode;
-    default_input_mode = EAknEditorTextInputMode;
-    special_character_table = R_AVKON_URL_SPECIAL_CHARACTER_TABLE_DIALOG;
-    default_case = EAknEditorLowerCase;
-    flags= EEikEdwinAutoSelection | EAknEditorLowerCase | EEikEdwinNoLineOrParaBreaks;
-    avkon_flags=EAknEditorFlagNoT9 | EAknEditorFlagLatinInputModesOnly;
-    }
-
-// --------------------------------------------------------------------------
-// r_text_setting_page_starting_page
-// starting page
-// --------------------------------------------------------------------------
-//
-RESOURCE AVKON_SETTING_PAGE r_text_setting_page_starting_page
-    {
-    number= EAknSettingPageNoOrdinalDisplayed;
-    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-    label= qtn_set_starting_page;
-    type = EEikCtEdwin;
-    editor_resource_id = r_setting_app_edwin_starting_page;
-    }
-
-// ---------------------------------------------------------------------------
-// r_setting_app_edwin_login_name
-// edwin for login name page
-// ---------------------------------------------------------------------------   
-RESOURCE EDWIN r_setting_app_edwin_login_name
-    {
-    width = KLoginNameWidth;
-    lines = KLoginNameLines;
-    maxlength = KMaxLoginNameLength;
-    allowed_input_modes = EAknEditorTextInputMode | 
-                          EAknEditorNumericInputMode;
-    default_input_mode = EAknEditorTextInputMode;
-    default_case = EAknEditorLowerCase;
-    flags = EEikEdwinAutoSelection | EEikEdwinNoLineOrParaBreaks;
-    avkon_flags = EAknEditorFlagNoT9 | EAknEditorFlagLatinInputModesOnly;    
-    }
-
-// ---------------------------------------------------------------------------
-// r_text_setting_page_login_name
-// setting page for login name
-// ---------------------------------------------------------------------------   
-RESOURCE AVKON_SETTING_PAGE r_text_setting_page_login_name
-    {
-    number = EAknSettingPageNoOrdinalDisplayed;
-    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-    label = qtn_set_ap_username;
-    type = EEikCtEdwin;
-    editor_resource_id = r_setting_app_edwin_login_name;
-    }
-
-// --------------------------------------------------------------------------
-// r_setting_app_ip_editor
-// IP Editor
-// --------------------------------------------------------------------------
-//
-RESOURCE IP_FIELD_EDITOR r_setting_app_ip_editor
-    {
-    min_field_values = IP_FIELD
-        {
-        first_field = 0;
-        second_field = 0;
-        third_field = 0;
-        fourth_field = 0;
-        };
-    max_field_values = IP_FIELD
-        {
-        first_field = 255;
-        second_field = 255;
-        third_field = 255;
-        fourth_field = 255;
-        };
-    flags = 0;
-    }
-
-// --------------------------------------------------------------------------
-// r_text_setting_page_ip_addr
-// IspIPAddr page
-// --------------------------------------------------------------------------
-//
-RESOURCE AVKON_SETTING_PAGE r_text_setting_page_ip_addr
-    {
-    number= EAknSettingPageNoOrdinalDisplayed;
-    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-    label= qtn_set_ip_address;
-    type = EAknCtIpFieldEditor;
-    editor_resource_id = r_setting_app_ip_editor;
-    }
-    
-// --------------------------------------------------------------------------
-// r_dnsip4_query
-// IP4 dialog
-// --------------------------------------------------------------------------
-//    
-RESOURCE DIALOG r_dnsip4_query
-	{
-	flags=EGeneralQueryFlags;
-	buttons=R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-	items=
-		{
-		DLG_LINE
-			{
-			type=EAknExtCtMultilineQuery;
-			id=EMultilineFirstLine;
-			control = AVKON_DATA_QUERY
-				{ 
-				layout = EMultiDataFirstIpEd;
-                label = qtn_set_primary_dns;
-                control = IP_FIELD_EDITOR
-                    {
- 					min_field_values = IP_FIELD
- 						{ 
- 						first_field = IPADDRESS_MIN_FIRST_FIELD_VALUE;
- 						second_field = IPADDRESS_MIN_SECOND_FIELD_VALUE;
- 						third_field = IPADDRESS_MIN_THIRD_FIELD_VALUE;
- 						fourth_field = IPADDRESS_MIN_FOURTH_FIELD_VALUE;
- 						};
- 					max_field_values = IP_FIELD
- 						{
-						first_field = IPADDRESS_MAX_FIRST_FIELD_VALUE;
-						second_field = IPADDRESS_MAX_SECOND_FIELD_VALUE;
-						third_field = IPADDRESS_MAX_THIRD_FIELD_VALUE;
-						fourth_field = IPADDRESS_MAX_FOURTH_FIELD_VALUE;
- 						};
- 					flags = 0;
-					};
- 				};
-			},
-		DLG_LINE
-			{
-             type = EAknExtCtMultilineQuery;
-             id = EMultilineSecondLine;
-             control = AVKON_DATA_QUERY
-                 {
-                 layout = EMultiDataSecondIpEd;
-                 label = qtn_set_secondary_dns;
-                 control = IP_FIELD_EDITOR
-                     {
-                     min_field_values = IP_FIELD
- 						{ 
-						first_field = IPADDRESS_MIN_FIRST_FIELD_VALUE;
-						second_field = IPADDRESS_MIN_SECOND_FIELD_VALUE;
-						third_field = IPADDRESS_MIN_THIRD_FIELD_VALUE;
-						fourth_field = IPADDRESS_MIN_FOURTH_FIELD_VALUE;
- 						};
- 					max_field_values = IP_FIELD
- 						{
-						first_field = IPADDRESS_MAX_FIRST_FIELD_VALUE;
-						second_field = IPADDRESS_MAX_SECOND_FIELD_VALUE;
-						third_field = IPADDRESS_MAX_THIRD_FIELD_VALUE;
-						fourth_field = IPADDRESS_MAX_FOURTH_FIELD_VALUE;
- 						};
- 					flags = 0;
-					};
- 				};
-			}
-		};
-	}
-
-// --------------------------------------------------------------------------
-// r_dnsip6_query
-// IP6 dialog
-// --------------------------------------------------------------------------
-//
-RESOURCE DIALOG r_dnsip6_query
-	{
-	flags=EGeneralQueryFlags;
-	buttons=R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-	items=
-		{
-		DLG_LINE
-			{
-			type=EAknCtMultilineQuery;
-			id=EMultilineFirstLine;
-			control = AVKON_DATA_QUERY
-				{ 
-				layout = EMultiDataFirstEdwin;
-				label = qtn_set_primary_dns;
-				control = EDWIN
-				    {
-			    	avkon_flags = EAknEditorFlagLatinInputModesOnly;
-					flags=0;
-					width=16;
-					lines=1;
-					maxlength=KMaxIPv6NameServerLength;
-					default_input_mode = EAknEditorNumericInputMode;
-					};
-				};
-			},
-		DLG_LINE
-			{
-			type=EAknCtMultilineQuery;
-			id=EMultilineSecondLine;
-			control= AVKON_DATA_QUERY 
-				{ 
-				layout = EMultiDataSecondEdwin;
-				label = qtn_set_secondary_dns;
-				control=EDWIN 
-				    {
-                	avkon_flags = EAknEditorFlagLatinInputModesOnly;
-					flags= 0;
-					width=16;
-					lines=1;
-					maxlength=KMaxIPv6NameServerLength;
-					default_input_mode = EAknEditorNumericInputMode;
-					};
-				};
-			}
-		};
-	}
-
-// --------------------------------------------------------------------------
-// r_text_setting_page_ip
-// IPNameServer1 page
-// --------------------------------------------------------------------------
-//
-RESOURCE AVKON_SETTING_PAGE r_text_setting_page_ip
-    {
-    number= EAknSettingPageNoOrdinalDisplayed;
-    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-    label= qtn_set_primary_dns;
-    type = EAknCtIpFieldEditor;
-    editor_resource_id = r_setting_app_ip_editor;
-    }
-
-// --------------------------------------------------------------------------
-// r_setting_app_edwin_passwd
-// login password secret input box
-// --------------------------------------------------------------------------
-//
-RESOURCE SECRETED r_setting_app_edwin_passwd
-    {
-    num_letters=KMaxLoginPasswordLength;
-    }
-    
-// --------------------------------------------------------------------------
-// r_text_setting_page_login_passwd
-// login password page
-// --------------------------------------------------------------------------
-//
-RESOURCE AVKON_SETTING_PAGE r_text_setting_page_passwd
-    {
-    number= EAknSettingPageNoOrdinalDisplayed;
-    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-    label= qtn_set_ap_passwd;
-    type = EEikCtSecretEd;
-    editor_resource_id = r_setting_app_edwin_passwd;
-    }
-
Binary file cmmanager/cmmgr/Framework/conf/cmmanager.confml has changed
Binary file cmmanager/cmmgr/Framework/conf/cmmanager_10207376.crml has changed
--- a/cmmanager/cmmgr/Framework/loc/cmmanager.loc	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1070 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Localization file.
-*
-*/
-
-//  LOCALISATION STRINGS
-
-//============================================================================
-// GENERAL SETTINGS VIEW
-//============================================================================
-//d: Network destinations setting item under General Settings/Connection Settings
-//l: list_single_large_graphic_pane_t1_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_network_connections "Network destinations"
-
-//=============================================================================
-//  DESTINATION VIEW
-//=============================================================================
-
-//-----------------------------------------------------------------------------
-// Options Menu Items
-//-----------------------------------------------------------------------------
-
-//d: Options menu text. Edit the highlighted item, used for destination and 
-//d: connection methods views
-//l: list_single_pane_t1_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_options_edit    "Edit"
-
-
-//d: Options menu text. Opens a radio button page to select default conneciton
-//l: list_single_pane_t1_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_options_default_connection "Default Connection"
-
-//d: Options menu text, subitem of Manage. Adds a new destination
-//l: list_single_popup_submenu_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_options_add_destination    "Add destination"
-
-//d:Options menu text, subitem of Manage
-//l: list_single_popup_submenu_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_options_rename_destination    "Rename destination"
-
-//d:Options menu text, subitem of Manage
-//l: list_single_popup_submenu_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_options_change_dest_icon    "Change icon"
-
-//d:Options menu text, subitem of Manage
-//l: list_single_popup_submenu_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_options_delete_destination    "Delete destination"
-
-
-//d: Destination name query prompt text 
-//l: popup_query_data_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_prmpt_destination_name "Destination name: "
-
-//d: Title text for destination icon selection dialog.
-//l: heading_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_prmpt_select_icon "Select an icon:"
-
-
-//d: Connection method name query prompt text 
-//l: popup_query_data_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_prmpt_method_name "Connection method name:"
-
-//d: Connection method delete query text 
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_quest_delete_method "Delete connection method ’%U’?"
-
-//d: Connection method delete info text 
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_info_cannot_delete_protected_method "Unable to delete protected connection method"
-
-//d: Connection method delete info text 
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_info_cannot_delete_method_in_use "Connection method currently in use. Unable to delete."
-
-//d: Destination delete query text 
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_quest_delete_destination "Delete destination ’%U’ and associated connection methods?"
-
-//d: Destination delete info text
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_info_cannot_delete_dest_in_use "Destination currently in use. Unable to delete."
-
-//d: Note to indicate the the selected connection method cannot be currently edited as it is being used
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_set_note_ap_in_use_edit "Connection method is currently in use. Unable to edit."
-
-//d: Destination delete info text
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_info_cannot_delete_dest_protected  "Unable to delete protected destination"
-
-//d: Destination name info text, shown when destination name already exists
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_info_name_already_in_use  "Name ’%U’ already in use"
-
-//d: Embedded Destination delete query text
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_quest_delete_embedded_dest  "Link cannot be restored by user. Delete anyway?"
-
-//d: Common text used to indicate that a destination or connection method
-//d: cannot be edited if it is protected
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_info_cannot_edit_protected  "Unable to edit protected settings"
-
-//-----------------------------------------------------------------------------
-// List Items
-//-----------------------------------------------------------------------------
-
-//d: The name of a new, default connection. Max.30 chars, 
-//d: longer ones will be truncated.
-//l: list_double_large_graphic_pane_t1_cp2
-//w:
-//r: 3.2
-//
-#define qtn_netw_conset_add_connection "Add connection"
-
-//d: The group of legacy access points
-//l: list_double_large_graphic_pane_t1_cp2
-//w:
-//r: 3.2
-//
-#define qtn_netw_conset_dest_uncategorized "Uncategorized"
-
-//d: Destination list text. The second line for qtn_netw_conset_add_connection 
-//d: Indicates that selecting the item will start the UI for adding a
-//d: a connection method
-//l: list_double_large_graphic_pane_t2_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_add_connection_method "New connection method"
-
-//d: Destination list text, notes the number of connections methods
-//d: belonging to the destination
-//l: list_double_large_graphic_pane_t2_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_conn_methods_amount_many    "%N connection methods"
-
-//d: Destination list text. Notes that the destination has one 
-//d: connection method
-//l: list_double_large_graphic_pane_t2_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_conn_methods_amount_one      "1 connection method"
-
-//d: Destination list text. Notes that the destination is empty
-//l: list_double_large_graphic_pane_t2_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_conn_methods_amount_none      "No connection methods"
-
-//-----------------------------------------------------------------------------
-// Status Pane
-//-----------------------------------------------------------------------------
-
-//d: Destination list title text
-//l: title_pane_t2/opt9
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_network_connections_title "Network destinations"
-
-//d: Destination list text. Shows the number of configured destinations in the 
-//d: navi pane
-//l: navi_text_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_navi_nof_destinations "%N destinations defined"
-
-//d: Destination list text. Shows the number of configured destinations in the 
-//d: navi pane
-//l: navi_text_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_navi_one_destination "1 destination defined"
-
-//d: Destination list text. Shows the default connection in the 
-//d: navi pane
-//l: navi_text_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_navi_default "Default: %U"
-
-//d: Destination list text. Shows that the default connection
-//d: is Always ask
-//l: navi_text_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_navi_default_always_ask "Default: Always ask"
-
-//d: Destination list text. Shows that the default connection
-//d: is Ask once
-//l: navi_text_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_navi_default_ask_once "Default: Ask once"
-
-//=============================================================================
-//  CONNECTION METHOD VIEW
-//=============================================================================
-
-//-----------------------------------------------------------------------------
-// Options Menu Items
-//-----------------------------------------------------------------------------
-
-//d: Connection method list text. Starts a wizard for adding a 
-//d: new connection method
-//l: list_single_pane_t1_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_options_add_method "Add connection method"
-
-//d: Connection method list text. Renames the highlighted connection methof
-//l: list_single_pane_t1_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_options_rename_method "Rename"
-
-//d: Connection method list text. Deletes the highlighted connection method
-//l: list_single_pane_t1_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_options_delete_method "Delete"
-
-
-//d:Connection method list text. Prioritise the highlighted connecton method
-//l: list_single_popup_submenu_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_options_prioritise "Prioritise"
-
-//d: Connection method list text. Moves the highlighted connection method
-//d: to a selected target destination
-//l: list_single_popup_submenu_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_options_move_to_dest "Move to other destination"
-
-//d: Connection method list text. Copies the highlighted connection method
-//d: to a selected target destination
-//l: list_single_popup_submenu_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_options_copy_to_dest "Copy to other destination"
-
-//-----------------------------------------------------------------------------
-// List Items
-//-----------------------------------------------------------------------------
-
-//d: Connection method list text. Indicates the priority of the 
-//d: connection method
-//l: list_double_graphic_pane_t2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_method_priority_other "Priority %N connection method "
-
-//d: Shown if the method is bound to a destination.
-//l: list_double_graphic_pane_t2
-//w:
-//r: 5.1
-//
-#define qtn_netw_conset_method_priority_auto "Priority: Automatic"
-
-//d: Connection method list text. The name of an embedded destination
-//l: list_double_graphic_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_embedded_dest "Link to '%U'"
-
-//d: Connection method list popup note. Text shown in a toolip (info popup)
-//d: which is prefixed to the Bearer type of the highlighted connection method
-//l: popup_preview_text_window_t1
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_popup_title_data_bearer "Data Bearer: "
-
-//d: Connection method list popup note. WLAN Bearer type shown in info popup
-//l: popup_preview_text_window_t1
-//w:
-//r: 3.2
-//
-#define qtn_netw_conset_popup_bearer_wlan "Wireless LAN"
-
-//d: Connection method list popup note. 
-//d: Packet Data Bearer type shown in info popup
-//l: popup_preview_text_window_t1
-//w:
-//r: 3.2
-//
-#define qtn_netw_conset_popup_bearer_packet_data "Packet data"
-
-//d: Connection method list empty text. 
-//d: Shown if there are no connection methods
-//l: main_pane_empty_t1/opt2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_empty_method_view_primary "No connection methods"
-
-//d: Connection method list empty text. Second line in the list item if
-//d: no connection methods exist. Indicates how to create one.
-//l: main_list_empty_pane/opt2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_empty_method_view_secondary "Select Add connection method from Options menu to define a method "
-
-//d: radio button popup menu title text
-//l: list_setting_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_sett_destination "Network connection"
-
-//d: radio button popup menu title text
-//l: list_set_graphic_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_sett_always_ask "Always ask"
-
-
-//d: radio button popup menu title text
-//l: list_setting_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_default_connection_title "Default connection"
-
-//d: radio button popup menu text
-//l: list_set_graphic_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_sett_ask_once "Ask Once"
-
-//d: radio button popup menu text
-//l: list_set_graphic_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_sett_default_connection "Default Connection"
-
-//d: radio button popup menu text
-//l: list_set_graphic_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_sett_user_defined "User Defined"
-
-//d: radio button popup options menu text
-//l: list_single_pane_t1_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_set_cmd_select "Select"
-
-//d: popup options menu text
-//l: list_single_pane_t1_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_options_select_method "Choose connection method"
-
-//d: First line of a double large graphic style listbox - WLAN specific
-//l: list_double_large_graphic_pane_t1_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_bearer_available_wlan "Wireless LAN"
-
-//d: Second line of a double large graphic style listbox - WLAN specific
-//l: list_double_large_graphic_pane_t2_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_one_wlan_nw_available "1 network available"
-
-//d: Second line of a double large graphic style listbox - WLAN specific
-//l: list_double_large_graphic_pane_t2_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_many_wlan_nw_available "%N networks available"
-
-//-----------------------------------------------------------------------------
-// Status Pane
-//-----------------------------------------------------------------------------
-
-//d: Connection method view. Indicates that there is one connection method 
-//d: in the current destination
-//l: navi_text_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_navi_one_conn_method "1 conn. method"
-
-//d: Connection method view. Indicates the number of connection methods 
-//d: in the current destination
-//l: navi_text_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_navi_many_conn_methods "%N conn. methods"
-
-//-----------------------------------------------------------------------------
-// Soft Keys
-//-----------------------------------------------------------------------------
-
-//d: Middle soft key whose action is to start the wizard for adding 
-//d: a connection method from the connection method view
-//d: 
-//l: control_pane_t3/opt7
-//w: 
-//r: 3.2
-//
-#define qtn_msk_add_method "Add method"
-
-//-----------------------------------------------------------------------------
-// Strings used in dialogs
-//-----------------------------------------------------------------------------
-
-//d: Confirmation query used to ask the user if he/she wants to check for
-//d: available connection methods automatically.
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_quest_check_conn_methods "Automatically check for available connection methods?"
-
-//d: String used to inform user what is going on while the dialog is displayed.
-//l: popup_note_wait_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_wait_checking_methods "Checking connection methods..."
-
-//d: Question asked from the user when automatic configuration has failed. User
-//d: must answer if he/she wants to proceed with manual configuration.
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_quest_conf_method_manually "Could not automatically detect availability. Do you want to configure manually?"
-
-//d: Title of "Available methods:" list query.
-//l: heading_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_prmpt_available_methods "Available methods:"
-
-//d: Title of "Select connection method:" list query.
-//l: heading_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_prmpt_select_conn_method "Select connection method:"
-
-//d: Title of "Select destination:" list query.
-//l: heading_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_prmpt_add_to_destination "Select destination:"
-
-//d: Heading text used in "Select destination:" list query.
-//l: loc_type_pane
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_detail_add_to_destination "What destination or service you want to access via this method?"
-
-//d: Text of an information note used to ensure the user the a new connection
-//d: method has been added successfully.
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_conf_new_method_added "New connection method for '%U' added"
-
-//d: Text of an information note used to ensure the user the a new destination
-//d: has been created successfully.
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_conf_new_dest_added "New destination '%U' created"
-
-//d: Confirmation query text shown when user enters empty Conn methods view.
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_quest_add_method "No connection methods for '%U' defined. Define one now?"
-
-//d: Warning about having no destinations in Destinations view when trying to
-//d: create a new connection method.
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_info_no_destinations "No destinations defined. Create one first."
-
-//d: Warning about having no unprotected destinations in Destinations view when trying to
-//d: create a new connection method.
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_new_conset_info_cannot_add_all_dest_protected "Unable to add to any existing destination. All destinations are protected. Create a new one."
-
-//d: Warning shown when user tries to prioritise a conn. method 'over' an embedded destination
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_info_prio_not_possible "Priority not possible"
-
-
-//d: Text of an information note used to ensure the user the a new default destination
-//d: has been set successfully.
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-
-#define qtn_netw_conset_default_connection_set_to "Default connection set to '%U'"
-
-//d: Text of an information note used to ensure the user the new default destination
-//d: has been set successfully when it is set to always ask
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_conf_default_always_ask "Default connection set to 'Always Ask'"
-
-//d: Text of an information note used to ensure the user the new default destination
-//d: has been set successfully when it is set to ask once
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_conf_default_ask_once "Default connection set to 'Ask Once'"
-
-//=============================================================================
-// FRAMEWORK BASE STRINGS
-//=============================================================================
-
-//d: The name of a Internet destination. Max.30 chars, 
-//d: longer ones will be truncated.
-//l: list_double_large_graphic_pane_t1_cp2
-//w:
-//r: 3.2
-//
-#define qtn_netw_conset_dest_internet "Internet"
-
-//d: The name of a "WAP services" destination. Max.30 chars, 
-//d: longer ones will be truncated.
-//l: list_double_large_graphic_pane_t1_cp2
-//w:
-//r: 3.2
-//
-#define qtn_netw_conset_dest_wap "WAP services"
-
-//d: The name of a "Multimedia message" destination. Max.30 chars, 
-//d: longer ones will be truncated.
-//l: list_double_large_graphic_pane_t1_cp2
-//w:
-//r: 3.2
-//
-#define qtn_netw_conset_dest_mms "Multimedia message"
-
-//d: The name of a "Intranet" destination. Max.30 chars, 
-//d: longer ones will be truncated.
-//l: list_double_large_graphic_pane_t1_cp2
-//w:
-//r: 3.2
-//
-#define qtn_netw_conset_dest_intranet "Intranet"
-
-//=============================================================================
-// PLUGIN BASE STRINGS
-//=============================================================================
-
-//d: Item text in setting list.
-//d: The name of the connection
-//l: list_setting_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_set_ap_conn_name "Connection name"
-
-//d: Name of the data bearer.
-//d: Used in Connection method view.
-//l: list_setting_pane_t1
-//w:
-//r: 3.2
-//
-#define qtn_set_ap_bearer "Data bearer"
-
-//d: Command in options menu in access points view.
-//d: Modifies the currently selected access point.
-//l: list_single_pane_t1_cp2
-//w:
-//r: 3.2
-//
-#define qtn_set_options_change "Change"
-
-
-//d: Command in options menu in access points view.
-//d: Opens advanced settings for the access point.
-//l: list_single_pane_t1_cp2
-//w:
-//r: 3.2
-//
-#define qtn_set_options_ap_advanced "Advanced settings"
-
-//d: Command in options menu.
-//d: Opens help application with context sensitive help.
-//l: list_single_pane_t1_cp2
-//w:
-//r: 3.2
-//
-#define qtn_set_options_help "Help"
-
-
-//d: Command in options menu.
-//d: Exits access point settings.
-//l: list_single_pane_t1_cp2
-//w:
-//r: 3.2
-//
-#define qtn_set_options_exit "Exit"
-
-//d: Bearer type cannot be modified info text 
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_info_bearer_not_editable "Unable to edit data bearer type once selected. Define a new connection method."
-
-//d:Item text in setting list for password.
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_set_ap_passwd "Password"
-
-//
-//SMTP Settings
- 
-//d: Setting list item text to access smtp settings.
-//l: list_double2_pane
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_sett_smtp_override "Outgoing mail server settings"
-
-//d: SMTP outgoing mail server setting text
-//l: list_setting_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_mce_settings_mail_sending_h "Outgoing mail server"
-
-//d: Error note for when invalid server/IP data is input
-//d: in relation to the Outgoing mail server setting
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_mbxs_settings_mail_srvr_prompt "Please, insert proper server name."
-
-//d: SMTP User name setting text
-//l: list_setting_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_mce_settings_mail_user_name "User name"
-
-//d: SMTP Password setting text
-//l: list_setting_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_mce_settings_mail_password "Password"
-
-//d: SMTP Security setting text
-//l: list_setting_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_mce_settings_mail_security "Security"
-
-//d: Security setting is set to 'on' with Start TLS
-//l: list_set_graphic_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_mbxs_settings_mail_sec_starttls "STARTTLS"
-
-//d: Security setting is set to 'on' with SSL TLS
-//l: list_set_graphic_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_mbxs_settings_mail_sec_ssltls "SSL/TLS"
-
-//d: Security setting set to 'off'
-//l: list_set_graphic_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_mbxs_settings_mail_sec_off "Off"
-
-//d: SMTP Port number setting text
-//l: list_setting_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_mce_settings_mail_port "Port"
-
-//d: SMTP Port number setting to 'default'
-//l: list_set_graphic_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_mbxs_settings_mail_port_def "Default"
-
-//d: SMTP Port number setting to 'User defined'
-//l: list_set_graphic_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_mbxs_settings_mail_port_userdef "User defined"
-
-//d: Note after the last legacy IAP from "Uncategorized" group
-//d: is deleted
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_info_uncat_empty "Uncategorized folder is empty and will be removed"
-
-//d: The name of a new, default connection. Max.30 chars, 
-//d: longer ones will be truncated.
-//l: list_set_graphic_pane_t1
-//w:
-//r: 3.2
-//
-#define qtn_set_ap_default_name "Connection"
-
-//d: Error message when user wants to delete a connection method that is 
-//d: linked to a virtual connection method.
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_info_cannot_delete_virtual_ref "Unable to delete referenced method"
-
-//d: Item text in setting list.
-//l: list_setting_pane_t1
-//w:
-//r: 3.2
-//
-#define qtn_set_starting_page "Homepage"
-
-//d: Connection method list text
-//l: list_set_graphic_pane_t1
-//w:
-//r: 3.2
-//
-#define qtn_set_home_page_none "None"
-
-//d: Invalid ip address note text
-//l: popup_note_window
-//w:
-//r: 3.2
-//
-#define qtn_set_info_invalid_ip "Invalid IP address"
-
-//d: Connection method settings query text 
-//d: displayed when there are empty compulsory settings 
-//d: and user presses 'back' from settings view 
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_quest_iap_incomplete_delete "Incomplete access point details. Exit without saving?"
-
-//d:Domain name servers 'User defined'
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-#define qtn_set_ip_user_defined "User defined"
-
-//d:Item text in setting list. Offers IPv4 settings to be changed
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define  qtn_set_ipv4_settings "IPv4 settings"
-
-//d:Item text in setting list. Offers IPv6 settings to be changed
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define  qtn_set_ipv6_settings "IPv6 settings"
-
-//d:Item text in setting list. "Phone IP address"
-//l:list_setting_pane_t1 
-//w:
-//r:3.2
-//
-#define qtn_set_ip_address "Phone IP address"
-
-//d:Default value for "Phone ip address" item. 'Automatic'
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-#define qtn_set_ip_address_dynamic "Automatic"
-
-//d:Item text in setting list.
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_set_primary_dns "Primary Name Server"
-
-//d:Item text in setting list.
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_set_secondary_dns "Secondary Name Server"
-
-//d:Item text in setting list. "Proxy server address"
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_set_proxy_server_address "Proxy server address"
-
-//d: Proxy server address 'None'
-//l: list_set_graphic_pane_t1
-//w:
-//r: 3.2
-//
-#define qtn_set_proxy_server_address_none "None"
-
-//d: Item text in setting list  for Proxy port number
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_set_proxy_port_number "Proxy port number"
-
-//d:Item text in setting list. Entrance for the Domain name servers settings
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define  qtn_set_dns_servers_ip "Domain name servers"
-
-//d:Domain name servers 'Automatic'
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-#define qtn_set_dns_servers_automatic "Automatic"
-
-//d:Domain name servers 'Well-known'
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-#define qtn_set_ip_well_known "Well-known"
-
-//d: Item text in setting list. "User name"
-//l: list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_set_ap_username "User name"
-
-//d: Answer to: qtn_set_passwd_aut,
-//d: whether password authentication is secure or normal
-//l: list_set_graphic_pane_t1
-//w:
-//r: 3.2
-//
-#define qtn_set_passwd_aut_secure "Secure"
-
-//d: Answer to: qtn_set_passwd_aut,
-//d: whether password authentication is secure or normal
-//l: list_set_graphic_pane_t1
-//w:
-//r: 3.2
-//
-#define qtn_set_passwd_aut_normal "Normal"
-
-//d: Item text for empty user name in setting list
-//l: list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_set_ap_username_none "None"
-
-//d: Item text in setting list. "Prompt password"
-//l: list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_set_prompt_passwd "Prompt password"
-
-//d: Item text in setting list for not prompting for password.
-//l: list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_set_prompt_passwd_no "No"
-
-//d: Item text in setting list for prompting for password.
-//l: list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_set_prompt_passwd_yes "Yes"
-
-//d: Item text in setting list.
-//d: Indicates whther password authentication is secure or normal
-//l: list_setting_pane_t1
-//w:
-//r: 3.2
-//
-#define qtn_set_passwd_aut "Authentication"
-
-//d:Defines the WLAN subnet mask to be used
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_netw_sett_subnet_mask "Subnet mask"
-
-//d:Defines the WLAN default gateway to be used
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_netw_sett_default_gateway "Default gateway"
-
-//d: Error note when user tries to delete a destination 
-//d: which contains one or more protected connection methods
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_info_cannot_delete_dest_prot_cm "Unable to delete destination; contains protected connection methods."
-
-//d: Denied execution of management-like functions on protected destinations info text
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_info_cannot_perform_for_protected "Unable to perform due to protection"
-
-//d: No existing unprotected destinations to add to info text
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_info_cannot_add_all_dest_protected "Unable to add to any existing destination. Destinations are protected. Create a new one."
-
-//d: VPN CM (re)placement failure (due to circular referencing) info text
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_info_no_vpn_stacking "Unable to proceed. VPN connections cannot be stacked."
-
-// End of file
--- a/cmmanager/cmmgr/Plugins/Group/bld.inf	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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:  Build information for the Plugins \ Connection Method manager
-*
-*
-*/
-
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-// None
-
-PRJ_MMPFILES
-// None
-
-
-#include "../cmpluginpacketdata/group/bld.inf"
-#include "../cmpluginlan/group/bld.inf"
-#include "../cmpluginwlan/group/bld.inf"
-#include "../cmpluginembdestination/group/bld.inf"
-#include "../cmpluginvpn/group/bld.inf"
-
-// End of File
--- a/cmmanager/cmmgr/Plugins/cmpluginembdestination/data/1020737D.rss	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Embedded Destination Plug-in resource file
-*
-*/
-
-#include "ecom/registryinfo.rh"
-
-// Because attribute enums had to be added to namespace CMManager
-// it's not possible to included cmpluginpacketdata.hrh.
-// Thus bearer type id had to be redefine here.
-#define KEmbeddedDestination  0x10207379
-
-RESOURCE REGISTRY_INFO theInfo
-	{
-	dll_uid = 0x1020737D;
-	interfaces = 
-		{
-		INTERFACE_INFO
-			{
-			interface_uid = 0x10207377; // = KCMPluginInterfaceUid
-			implementations = 
-				{
-				IMPLEMENTATION_INFO
-					{
-					implementation_uid = KEmbeddedDestination;
-					version_no = 1;
-					display_name = "Embedded Destination";
-					default_data = "EmbeddedDestination";
-					opaque_data = "";
-					}
-				};
-			}
-		};
-	}
--- a/cmmanager/cmmgr/Plugins/cmpluginembdestination/data/cmpluginembdestinationui.rss	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Embedded Destination plug-in's UI resources
-*
-*/
-
-#include <avkon.rsg>
-#include <avkon.rh>	
-#include <avkon.loc>
-#include <uikon.rh>
-#include <eikon.rh>
-#include "eikon.rsg"
-#include <AvkonIcons.hrh>
-
-NAME    EDES
-
-RESOURCE RSS_SIGNATURE { }
-
-RESOURCE TBUF { buf = "cmpluginembdestination"; }
-
-
-// LOCALISED STRINGS
--- a/cmmanager/cmmgr/Plugins/cmpluginembdestination/group/bld.inf	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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:  Build information for the Embedded Destination plug-in.
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-
-PRJ_MMPFILES
-./cmpluginembdestination.mmp
-
--- a/cmmanager/cmmgr/Plugins/cmpluginembdestination/group/cmpluginembdestination.mmp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Project specification for Embedded Destination plug-in
-*
-*/
-
-#include <data_caging_paths.hrh>
-#include <platform_paths.hrh>
-
-TARGET      cmpluginembdestination.dll
-UID         0x10009D8D 0x1020737D
-
-TARGETTYPE		PLUGIN
-
-CAPABILITY      CAP_ECOM_PLUGIN
-VENDORID        VID_DEFAULT
-
-SOURCEPATH  ../src
-
-SOURCE      cmpluginembdestinationproxy.cpp
-SOURCE      cmpluginembdestination.cpp
-SOURCE      ../../../Framework/Src/cmlogger.cpp
-
-SOURCEPATH  ../data
-
-START RESOURCE 1020737D.rss
-TARGET cmpluginembdestination.rsc
-END
-
-START RESOURCE cmpluginembdestinationui.rss
-HEADER
-TARGETPATH   RESOURCE_FILES_DIR
-LANGUAGE_IDS
-END
-
-USERINCLUDE     ../../../Framework/Inc
-
-// Component specific internal headers 
-USERINCLUDE			../inc
-
-// ADO specific internal headers 
-SYSTEMINCLUDE		../../../../../inc
-
-//Macro to /epoc32 headers
-MW_LAYER_SYSTEMINCLUDE
-
-LIBRARY euser.lib
-LIBRARY	ECOM.LIB
-LIBRARY cmmanager.lib
-LIBRARY COMMSDAT.lib
-LIBRARY	CommonEngine.lib
-LIBRARY cone.lib
-LIBRARY efsrv.lib
-LIBRARY bafl.lib
-DEBUGLIBRARY flogger.lib
--- a/cmmanager/cmmgr/Plugins/cmpluginembdestination/inc/cmpluginembdestination.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of CCmPluginEmbDestination
-*
-*/
-
-#ifndef EMBEDDEDDESTINATION_PLUGIN_H
-#define EMBEDDEDDESTINATION_PLUGIN_H
-
-#include <cmpluginbaseeng.h>
-#include <cmpluginembdestinationdef.h>
-
-/**
- *  Embedded Destination Plugin IF implementation class
- *
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS(CCmPluginEmbDestination) : public CCmPluginBaseEng
-    {
-    public:     // Constructors and destructor
-
-        /**
-        * Two phased constructor. Leaves on failure.
-        * @param - aInitParam initialization parameters for plug-ins.
-        * @return The created object.
-        */      
-        static CCmPluginEmbDestination* NewL( TCmPluginInitParam* aInitParam );
-
-        /**
-        * Destructor.
-        */      
-        virtual ~CCmPluginEmbDestination();
-
-        virtual CCmPluginBaseEng* CreateInstanceL( 
-                                        TCmPluginInitParam& aInitParam ) const;
-
-    public: // From CCmPluginBaseEng
-
-        virtual TUint32 GetIntAttributeL( const TUint32 aAttribute ) const;
-        virtual TBool GetBoolAttributeL( const TUint32 aAttribute ) const;
-        virtual HBufC* GetStringAttributeL( const TUint32 aAttribute ) const;
-        virtual HBufC8* GetString8AttributeL( const TUint32 aAttribute ) const;
-        virtual void SetBoolAttributeL( const TUint32 aAttribute, 
-                                        TBool aValue );
-        virtual void SetStringAttributeL( const TUint32 aAttribute, 
-                                          const TDesC16& aValue );
-        virtual void UpdateL();
-        virtual CCmDestinationImpl* Destination() const;
-
-        virtual TBool CanHandleIapIdL( TUint32 aIapId ) const;
-        virtual TBool CanHandleIapIdL( CommsDat::CCDIAPRecord *aIapRecord ) const;
-
-        virtual TBool DeleteL( TBool aForced,
-                               TBool aOneRefAllowed = ETrue );
-        virtual void LoadL( TUint32 aIapId );
-        virtual void CreateNewL();
-
-        virtual TInt RunSettingsL();
-
-        /**
-        * From CCmPluginBaseEng
-        * see base class definition
-        *
-        * @since S60 3.2
-        */
-        virtual TBool InitializeWithUiL( TBool aManuallyConfigure );
-
-        virtual TBool IsMultipleReferencedL();
-
-        virtual void LoadServiceSettingL();
-        virtual void LoadBearerSettingL();
-
-        virtual void ServiceRecordIdLC( HBufC* &aServiceName, 
-                                        TUint32& aRecordId );
-
-        virtual void BearerRecordIdLC( HBufC* &aBearerName, 
-                                       TUint32& aRecordId);
-
-        virtual void AdditionalReset(){};
-
-        virtual CCmPluginBaseEng* CreateCopyL() const;
-        
-        virtual TBool IsLinkedToSnap( TUint32 aSnapId );
-
-    private: // Constructors
-
-        /**
-        * Constructor.
-        */      
-        CCmPluginEmbDestination( TCmPluginInitParam* aInitParam );
-
-        /**
-        * Second phase constructor. Leaves on failure.
-        * @param
-        */      
-        void ConstructL();
-
-    private: // From CCmPluginBaseEng
-
-        virtual void CreateNewServiceRecordL();
-        virtual void CreateNewBearerRecordL();
-        virtual void CopyAdditionalDataL( CCmPluginBaseEng* aDestInst ) const;
-
-    private: // Data
-
-        CCmDestinationImpl* iDestination;
-        TInt                iLoadResult;
-        TUint32             iCmId;
-	};
-
-#endif // EMBEDDEDDESTINATION_PLUGIN_H
--- a/cmmanager/cmmgr/Plugins/cmpluginembdestination/src/cmpluginembdestination.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,624 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CCmPluginEmbDestination
-*
-*/
-
-#include "cmdestinationimpl.h"
-#include "cmpluginembdestination.h"
-#include "datamobilitycommsdattypes.h"
-#include "cmmanagerimpl.h"
-#include "cmlogger.h"
-#include <ecom/ecom.h>		// For REComSession
-#include <StringLoader.h>
-#include <cmpluginembdestinationui.rsg>
-#include <data_caging_path_literals.hrh>
-#include <cmmanager.rsg>
-#include <bautils.h>
-
-using namespace CMManager;
-using namespace CommsDat;
-
-_LIT( KPluginEmbDestinationDataResDirAndFileName, 
-      "z:cmpluginembdestinationui.rsc" );
-
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::NewL()
-// ---------------------------------------------------------------------------
-//
-CCmPluginEmbDestination* CCmPluginEmbDestination::NewL( 
-                                                TCmPluginInitParam* aInitParam )
-	{
-	CCmPluginEmbDestination* self = 
-	                        new( ELeave ) CCmPluginEmbDestination( aInitParam );
-	CleanupStack::PushL( self );
-	self->ConstructL();
-	CleanupStack::Pop( self );
-
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::~CCmPluginEmbDestination()
-// ---------------------------------------------------------------------------
-//
-CCmPluginEmbDestination::~CCmPluginEmbDestination()
-	{
-	RemoveResourceFile( KPluginEmbDestinationDataResDirAndFileName );
-	
-    if(iDestination)
-        {
-        delete iDestination;
-        iDestination = NULL;
-        }	
-	
-	CLOG_CLOSE;
-	}
-
-// ----------------------------------------------------------------------------
-// CCmPluginEmbDestination::CreateInstanceL
-// ----------------------------------------------------------------------------
-//
-CCmPluginBaseEng* 
-    CCmPluginEmbDestination::CreateInstanceL( TCmPluginInitParam& aInitParam ) const
-    {
-    CCmPluginEmbDestination* self = new( ELeave ) CCmPluginEmbDestination( &aInitParam );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    return self;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::CCmPluginEmbDestination()
-// ---------------------------------------------------------------------------
-//
-CCmPluginEmbDestination::CCmPluginEmbDestination( 
-                                                TCmPluginInitParam* aInitParam )
-    : CCmPluginBaseEng( aInitParam )
-	{
-	CLOG_CREATE;
-	
-	iBearerType = KUidEmbeddedDestination;
-	}
-
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::ConstructL()
-// ---------------------------------------------------------------------------
-//
-void CCmPluginEmbDestination::ConstructL()
-	{
-	// Nothing is needed from CCmPluginBaseEng.
-	AddResourceFileL( KPluginEmbDestinationDataResDirAndFileName );
-	}
-	
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::GetIntAttributeL()
-// ---------------------------------------------------------------------------
-//
-TUint32 
-    CCmPluginEmbDestination::GetIntAttributeL( const TUint32 aAttribute ) const
-	{
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::GetIntAttributeL" );
-
-	TUint32 retVal( 0 );
-	
-    switch( aAttribute )
-        {
-        case ECmBearerType:
-            {
-            retVal = iBearerType;
-            }
-            break;
-            
-        case ECmId: 
-            {
-            retVal = iCmId;
-            }
-            break;
-        
-        case ECmIapId:
-            {
-            User::Leave(KErrNotSupported);
-            }
-            break;
-        
-        case ECmBearerIcon:
-            {
-            retVal = (TUint32)iDestination->IconL();    
-            }
-            break;
-            
-        case ECmDefaultPriority:
-        case ECmDefaultUiPriority:
-            {
-            retVal = KDataMobilitySelectionPolicyPriorityWildCard;
-            }
-            break;
-            
-        case ECmExtensionLevel:
-            {
-            retVal = KExtensionBaseLevel;
-            }
-            break;
-            
-        case ECmInvalidAttribute:
-            {
-            retVal = 0;
-            }
-            break;
-
-        case ECmLoadResult:
-            {
-            retVal = iLoadResult;
-            }
-            break;
-            
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-            break;
-        }
-    
-    return retVal;
-	}
-
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::GetBoolAttributeL()
-// ---------------------------------------------------------------------------
-//
-TBool CCmPluginEmbDestination::GetBoolAttributeL( const TUint32 aAttribute ) const
-	{
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::GetBoolAttributeL" );
-
-	TBool retVal( EFalse );
-
-    switch( aAttribute )
-        {
-        case ECmDestination:
-            {
-            retVal = ETrue;
-            }
-            break;
-            
-        case ECmCoverage:
-            {
-            retVal = EFalse;
-            }
-            break;
-            
-        case ECmProtected:
-            {
-            if( iDestination->ProtectionLevel() == EProtLevel1 ||
-                iDestination->ProtectionLevel() == EProtLevel2 )
-                {
-                retVal = ETrue;
-                }
-            else
-                {
-                retVal = EFalse;
-                }
-            }
-            break;
-            
-        case ECmHidden:
-            {
-            retVal = iDestination->IsHidden();
-            }
-            break;
-            
-        case ECmBearerHasUi:
-        case ECmAddToAvailableList:
-            {
-            retVal = EFalse;
-            }
-            break;
-
-        case ECmVirtual:
-            {
-            retVal = ETrue;
-            }
-            break;
-
-        case ECmIPv6Supported:
-            {
-            retVal = CCmPluginBaseEng::GetBoolAttributeL( aAttribute );
-            }
-            break;
-
-        case ECmIsLinked:
-            {
-            retVal = EFalse;
-            }
-            break;
-                        
-        case ECmConnected:
-            {
-            retVal = iDestination->IsConnectedL();
-            }
-            break;
-            
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-            break;
-        }
-        
-    return retVal;
-	}
-
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::GetStringAttributeL()
-// ---------------------------------------------------------------------------
-//
-HBufC* 
-  CCmPluginEmbDestination::GetStringAttributeL( const TUint32 aAttribute ) const
-	{
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::GetStringAttributeL" );
-
-    HBufC* retVal = NULL;
-
-    switch( aAttribute )
-        {
-        case ECmName:
-    	    {
-            RFs fs;
-            CleanupClosePushL<RFs>( fs );
-            User::LeaveIfError( fs.Connect() );
-
-            // There may not be a UI context yet....
-            TFileName resourceFile;
-            _LIT( KDriveZ, "z:" );
-            resourceFile.Append( KDriveZ );
-            resourceFile.Append( KDC_RESOURCE_FILES_DIR );
-            _LIT( KCmmResFileName, "cmmanager.rsc" );
-            resourceFile.Append( KCmmResFileName );
-            BaflUtils::NearestLanguageFile( fs, resourceFile );
-
-            RResourceFile rf;
-            CleanupClosePushL<RResourceFile>( rf );
-            rf.OpenL( fs, resourceFile );
-            rf.ConfirmSignatureL( 0 );
-            HBufC8* readBuffer = rf.AllocReadLC( R_QTN_NETW_CONSET_EMBEDDED_DEST );
-            const TPtrC16 ptrReadBuffer( (TText16*) readBuffer->Ptr(),
-                                         ( readBuffer->Length() + 1 ) >> 1 );
-            HBufC16* textBuffer=HBufC16::NewL( ptrReadBuffer.Length() );
-            CleanupStack::PushL( textBuffer );
-            *textBuffer=ptrReadBuffer;
-    
-            TPtr format = textBuffer->Des();
-            _LIT(KPercentS,"%S");
-            _LIT(KPercentU,"%U");
-            TInt puPos = format.Find(KPercentU);
-            if ( puPos >= 0 )
-                {
-                format.Replace( puPos, 
-                    static_cast<TDesC>(KPercentS).Length(), KPercentS );                
-                }
-            HBufC* desName = iDestination->NameLC();
-            TPtr16 destName = desName->Des();
-            retVal = HBufC::NewL( format.Length() + destName.Length() );
-            retVal->Des().Format(format,  &destName);
-
-            CleanupStack::PopAndDestroy( desName ); 
-            CleanupStack::PopAndDestroy( textBuffer ); 
-            CleanupStack::PopAndDestroy( readBuffer ); 
-            CleanupStack::PopAndDestroy(); //rf
-            CleanupStack::PopAndDestroy(); //fs
-            }
-    	    break;
-    	    
-    	default:
-    	    {
-    	    User::Leave( KErrNotSupported );
-    	    }
-        }
-    
-    return retVal;
-	}
-
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::GetString8AttributeL
-// ---------------------------------------------------------------------------
-//
-HBufC8* 
-    CCmPluginEmbDestination::GetString8AttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::GetString8AttributeL" );
-
-    switch( aAttribute )
-        {
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-            break;
-        }
-        
-    // dead code
-    return NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::SetBoolAttributeL()
-// ---------------------------------------------------------------------------
-//
-void CCmPluginEmbDestination::SetBoolAttributeL( const TUint32 aAttribute, 
-                                                 TBool /*aValue*/ )
-	{
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::SetBoolAttributeL" );
-
-    switch( aAttribute )
-        {
-        case ECmProtected:
-        case ECmHidden:
-            break;
-                    
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-        }
-	}
-
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::SetStringAttributeL()
-// ---------------------------------------------------------------------------
-//
-void CCmPluginEmbDestination::SetStringAttributeL( const TUint32 aAttribute, 
-                                                   const TDesC16&  )
-	{
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::SetStringAttributeL" );
-
-    switch( aAttribute )
-        {
-        case ECmName:
-            {
-            User::Leave( KErrNotSupported );
-            }
-            break;
-            
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-        }
-	}
-
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::CanHandleIapIdL()
-// ---------------------------------------------------------------------------
-//
-TBool CCmPluginEmbDestination::CanHandleIapIdL( TUint32 /*aIapId*/ ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::CanHandleIapIdL" );
-
-    // Embedded Destination cannot handle any IAP id.
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::CanHandleIapIdL()
-// ---------------------------------------------------------------------------
-//
-TBool 
-  CCmPluginEmbDestination::CanHandleIapIdL( CCDIAPRecord* /*aIapRecord*/ ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::CanHandleIapIdL" );
-
-    // Embedded Destination cannot handle any IAP id.
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// ?description_if_needed
-// ---------------------------------------------------------------------------
-//
-CCmDestinationImpl* CCmPluginEmbDestination::Destination() const
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::Destination" );
-
-    return iDestination;
-    }
-    
-// ---------------------------------------------------------------------------
-// ?description_if_needed
-// ---------------------------------------------------------------------------
-//
-void CCmPluginEmbDestination::UpdateL()
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::UpdateL" );
-
-    iDestination->UpdateL();
-    }
-
-// ---------------------------------------------------------------------------
-// Delete embedded destination.
-// ---------------------------------------------------------------------------
-//
-TBool CCmPluginEmbDestination::DeleteL( TBool aForced, 
-                                        TBool aOneRefAllowed )
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::DeleteL" );
-    
-    (void)aForced;
-    (void)aOneRefAllowed;
-    
-    // Embedded destination cannot be deleted.
-    return EFalse;
-    }
-    
-// ---------------------------------------------------------------------------
-// ?description_if_needed
-// ---------------------------------------------------------------------------
-//
-void CCmPluginEmbDestination::LoadL( TUint32 aCmId)
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::LoadL" );
-
-    if (!iDestination)
-        {
-        iCmId = aCmId;
-        iDestination = iCmMgr.DestinationL( aCmId );        
-        }
-   }
-
-// ---------------------------------------------------------------------------
-// ?description_if_needed
-// ---------------------------------------------------------------------------
-//
-void CCmPluginEmbDestination::CreateNewL()
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::CreateNewL" );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::RunSettingsL()
-// ---------------------------------------------------------------------------
-//        
-TInt CCmPluginEmbDestination::RunSettingsL()
-	{
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::RunSettingsL" );
-
-    return 0;
-	}
-        
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::InitializeWithUiL()
-// ---------------------------------------------------------------------------
-//        
-TBool CCmPluginEmbDestination::InitializeWithUiL( 
-                                            TBool /*aManuallyConfigure*/ )
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::InitializeWithUiL" );
-
-    // Has no UI
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::IsMultipleReferencedL()
-// ---------------------------------------------------------------------------
-//        
-TBool CCmPluginEmbDestination::IsMultipleReferencedL()
-	{
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::IsMultipleReferencedL" );
-
-	return EFalse;
-	}
-	
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::LoadServiceSettingL()
-// ---------------------------------------------------------------------------
-//        
-void CCmPluginEmbDestination::LoadServiceSettingL()
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::LoadServiceSettingL" );
-    
-    User::Leave( KErrNotSupported );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::LoadBearerRecordL()
-// ---------------------------------------------------------------------------
-//        
-void CCmPluginEmbDestination::LoadBearerSettingL()
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::LoadBearerSettingL" );
-    
-    User::Leave( KErrNotSupported );
-    }
-	
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::CreateNewServiceRecordL()
-// ---------------------------------------------------------------------------
-//        
-void CCmPluginEmbDestination::CreateNewServiceRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::CreateNewServiceRecordL" );
-    
-    User::Leave( KErrNotSupported );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::CreateNewBearerRecordL()
-// ---------------------------------------------------------------------------
-//        
-void CCmPluginEmbDestination::CreateNewBearerRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::CreateNewBearerRecordL" );
-
-    User::Leave( KErrNotSupported );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::ServiceRecordIdLC()
-// ---------------------------------------------------------------------------
-//        
-void CCmPluginEmbDestination::ServiceRecordIdLC( HBufC* &/*aBearerName*/, 
-                                                TUint32& /*aRecordId*/)
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::ServiceRecordIdLC" );
-
-    User::Leave( KErrNotSupported );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::BearerRecordIdLC()
-// ---------------------------------------------------------------------------
-//        
-void CCmPluginEmbDestination::BearerRecordIdLC( HBufC* &/*aBearerName*/, 
-                                                TUint32& /*aRecordId*/)
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::BearerRecordIdLC" );
-
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::CopyAdditionalDataL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginEmbDestination::CopyAdditionalDataL( CCmPluginBaseEng* /*aDestInst*/ ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::CopyAdditionalDataL" );
-
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::CreateCopyL
-// ---------------------------------------------------------------------------
-//
-CCmPluginBaseEng* CCmPluginEmbDestination::CreateCopyL() const
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::CreateCopyL" );
-
-    User::Leave(KErrNotSupported);
-    return NULL;    
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginEmbDestination::IsLinkedToSnap
-// ---------------------------------------------------------------------------
-//
-TBool CCmPluginEmbDestination::IsLinkedToSnap( TUint32 aSnapId )
-    {
-    LOGGER_ENTERFN( "CCmPluginEmbDestination::IsLinkedToSnap" );
-
-    return ( aSnapId == iDestination->Id() );
-    }
--- a/cmmanager/cmmgr/Plugins/cmpluginembdestination/src/cmpluginembdestinationproxy.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of Embedded Destination plug-in proxy table
-*
-*/
-
-#include <e32std.h>
-#include <ecom/implementationproxy.h>
-
-#include "cmpluginembdestination.h"
-
-// Exported proxy for instantiation method resolution
-// Define the interface UIDs
-const TImplementationProxy ImplementationTable[] = 
-	{
-	IMPLEMENTATION_PROXY_ENTRY( KUidEmbeddedDestination, 
-	                            CCmPluginEmbDestination::NewL)
-	};
-
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
-	{
-	aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
-
-	return ImplementationTable;
-	}
--- a/cmmanager/cmmgr/Plugins/cmpluginlan/data/1020737B.rss	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
-* Copyright (c) 2006 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: 
-*     PacketData PlugIn's resource file
-*     
-*
-*/
-
-
-#include "ecom/registryinfo.rh"
-
-// Because attribute enums had to be added to namespace CMManager
-// it's not possible to included cmpluginlanbasedef.h
-// Thus bearer type id had to be redefine here.
-#define KUidLanBearerType  0x1020737A
-
-RESOURCE REGISTRY_INFO theInfo
-	{
-	dll_uid = 0x1020737B;
-	interfaces = 
-		{
-		INTERFACE_INFO
-			{
-			interface_uid = 0x10207377; // = KCMPluginInterfaceUid
-			implementations = 
-				{
-				IMPLEMENTATION_INFO
-					{
-					implementation_uid = KUidLanBearerType;
-					version_no = 1;
-					display_name = "Lan";
-					default_data = "Lan";
-					opaque_data = "";
-					}
-				};
-			}
-		};
-	}
--- a/cmmanager/cmmgr/Plugins/cmpluginlan/group/bld.inf	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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: 
-*      Build information for the LAN plugin.   
-*      
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-
-PRJ_MMPFILES
-./cmpluginlan.mmp
-
--- a/cmmanager/cmmgr/Plugins/cmpluginlan/group/cmpluginlan.mmp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
-* Copyright (c) 2006 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: 
-*      Project specification for LAN Plugin.   
-*      
-*
-*/
-
-#include <platform_paths.hrh>
-
-TARGET      cmpluginlan.dll
-UID         0x10009D8D 0x1020737B
-
-TARGETTYPE		PLUGIN
-
-CAPABILITY      CAP_ECOM_PLUGIN
-VENDORID        VID_DEFAULT
-
-SOURCEPATH  ../src
-
-SOURCE      cmpluginlanproxy.cpp
-SOURCE      cmpluginlan.cpp
-SOURCE      ../../../Framework/Src/cmlogger.cpp
-
-SOURCEPATH  ../data
-
-START RESOURCE 1020737B.rss
-TARGET cmpluginlan.rsc
-END
-
-USERINCLUDE     ../../../Framework/Inc
-
-// Component specific internal headers 
-USERINCLUDE			../inc
-
-// ADO specific internal headers 
-SYSTEMINCLUDE		../../../../../inc
-
-//Macro to /epoc32 headers
-MW_LAYER_SYSTEMINCLUDE
-
-LIBRARY euser.lib
-LIBRARY	ECOM.LIB
-LIBRARY cmmanager.lib
-LIBRARY COMMSDAT.lib
-DEBUGLIBRARY flogger.lib
-
-// Temporary usega for icons
-LIBRARY AknSkins.lib
-LIBRARY efsrv.lib
\ No newline at end of file
--- a/cmmanager/cmmgr/Plugins/cmpluginlan/inc/cmpluginlan.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*      Declaration of Lan interface implementation 
-*      for "LAN" plugin
-*      
-*
-*/
-
-
-#ifndef LAN_PLUGIN_H
-#define LAN_PLUGIN_H
-
-// INCLUDES
-
-#include <cmpluginlandef.h>
-#include <cmpluginlanbase.h>
-
-#include <e32base.h>
-#include <eikdoc.h>
-#include <apparc.h>
-
-
-// FORWARD DECLARATION
-class CommsDat::CCDLANServiceRecord;
-
-// CLASS DECLARATION
-
-/**
-*  LAN Plugin IF implementation class
-*  @since Series60_3.2
-*/
-NONSHARABLE_CLASS(CCmPluginLan) : public CCmPluginLanBase
-    {
-
-    public:     // Constructors and destructor
-
-        /**
-        * Two phased constructor. Leaves on failure.
-        * @param - aUrl
-        * @return The created object.
-        */      
-		static CCmPluginLan* NewL( TCmPluginInitParam* aInitParam );
-
-        /**
-        * Destructor.
-        */      
-        virtual ~CCmPluginLan();
-
-        virtual CCmPluginBaseEng* CreateInstanceL( TCmPluginInitParam& aInitParam ) const;
-        
-    public: // From CCmPluginBaseEng
-
-		/**
-		* Gets the value for a TInt attribute.
-		* @param aAttribute Identifies the attribute to be retrived.
-        * @return contains the requested TInt attribute.
-		*/
-        virtual TUint32 GetIntAttributeL( const TUint32 aAttribute ) const;
-        
-        /**
-        * Checks if the plug-in can handle the given AP.
-        * @param aIapId IAPId of the AP to be checked
-        * @return ETrue if plug-in can handle the IAP
-        */
-        virtual TBool CanHandleIapIdL( TUint32 aIapId ) const;
-        
-        /**
-        * Checks if the plug-in can handle the given AP.
-        * @param aIapRecord IAP record to be checked
-        * @return ETrue if plug-in can handle the IAP
-        */
-        virtual TBool CanHandleIapIdL( CommsDat::CCDIAPRecord* aIapRecord ) const;
-
-        virtual void AdditionalReset();
-        
-    private: // Constructors
-
-        /**
-        * Constructor.
-        */      
-		CCmPluginLan( TCmPluginInitParam* aInitParam );
-
-        /**
-        * Second phase constructor. Leaves on failure.
-		* @param
-        */      
-		void ConstructL();
-
-    private: // Data
-
-	};
-
-#endif // LAN_PLUGIN_H
--- a/cmmanager/cmmgr/Plugins/cmpluginlan/src/cmpluginlan.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,305 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*      Implementation of Lan Plugin interface implementation 
-*      for Lan Bearer
-*      
-*
-*/
-
- 
-// INCLUDE FILES
-
-#include "cmpluginlan.h"
-#include "cmlogger.h"
-#include "datamobilitycommsdattypes.h"
-#include <cmmanagerdef.h>
-#include <ecom/ecom.h>		// For REComSession
-#include <mcmdexec.h>
-#include <cmpbasesettingsdlg.h>
-
-#include <cmpluginpacketdata.mbg>           // icons
-#include <data_caging_path_literals.hrh>
-
-using namespace CMManager;
-using namespace CommsDat;
-
-// ================= CONSTANTS =======================
-const TUint32 KDefaultPriorityLAN = 0;
-
-static const TCmAttribConvTable SLanConvTbl[] = 
-    {
-        { ELanIfNetworks, ELanRangeMax, NULL },
-        { ELanIfNetworks, KCDTIdLANIfNetworks, NULL },        
-        { ELanIpNetMask, KCDTIdLANIpNetMask, &CheckIPv4ValidityL },
-        { ELanIpGateway, KCDTIdLANIpGateway, &CheckIPv4ValidityL },
-        { ELanIpAddrFromServer, KCDTIdLANIpAddrFromServer, NULL },
-        { ELanIpAddr, KCDTIdLANIpAddr, &CheckIPv4ValidityL },
-        { ELanIpDNSAddrFromServer, KCDTIdLANIpDNSAddrFromServer, NULL },
-        { ELanIpNameServer1, KCDTIdLANIpNameServer1, &CheckIPv4ValidityL },
-        { ELanIpNameServer2, KCDTIdLANIpNameServer2, &CheckIPv4ValidityL },
-        { ELanIp6DNSAddrFromServer, KCDTIdLANIp6DNSAddrFromServer, NULL },
-        { ELanIp6NameServer1, KCDTIdLANIp6NameServer1, &CheckIPv4ValidityL },
-        { ELanIp6NameServer2, KCDTIdLANIp6NameServer2, &CheckIPv4ValidityL },
-        { ELanIpAddrLeaseValidFrom, KCDTIdLANIpAddrLeaseValidFrom, NULL },
-        { ELanIpAddrLeaseValidTo, KCDTIdLANIpAddrLeaseValidTo, NULL },
-        { ELanConfigDaemonManagerName, KCDTIdLANConfigDaemonManagerName, NULL },
-        { ELanConfigDaemonName, KCDTIdLANConfigDaemonName, NULL },
-        { ELanServiceExtensionTableName, KCDTIdLANServiceExtensionTableName, NULL },
-        { ELanServiceExtensionTableRecordId, KCDTIdLANServiceExtensionTableRecordId, NULL },
-        { 0, 0, NULL }
-    };
-
-
-static const TCmCommonAttrConvArrayItem SCommonConvTbl[] =
-{
-    { ELanIfNetworks, ECmIFNetworks },
-    { ELanIpNetMask, ECmIPNetmask },
-    { ELanIpGateway, ECmIPGateway },
-    { ELanIpAddrFromServer, ECmIPAddFromServer },
-    { ELanIpAddr, ECmIPAddress },
-    { ELanIpDNSAddrFromServer, ECmIPDNSAddrFromServer },
-    { ELanIpNameServer1, ECmIPNameServer1 },
-    { ELanIpNameServer2, ECmIPNameServer2 },
-    { ELanIp6DNSAddrFromServer, ECmIP6DNSAddrFromServer },
-    { ELanIp6NameServer1, ECmIP6NameServer1 },
-    { ELanIp6NameServer2, ECmIP6NameServer2 },
-    { ELanIpAddrLeaseValidFrom, ECmIPAddrLeaseValidFrom },
-    { ELanIpAddrLeaseValidTo, ECmIPAddrLeaseValidTo },
-    { ELanConfigDaemonManagerName, ECmConfigDaemonManagerName },
-    { ELanConfigDaemonName, ECmConfigDaemonName },
-    { 0, 0 }
-    };
-
-
-_LIT( KPacketDataFileIcons, "z:cmpluginpacketdata.mbm" );
-    
-
-// ======== LOCAL FUNCTIONS ========
-    
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------
-// CCmPluginLan::NewOutgoingL()
-// ---------------------------------------------------------
-//
-CCmPluginLan* CCmPluginLan::NewL( TCmPluginInitParam* aInitParam )
-	{
-	CCmPluginLan* self = new( ELeave ) CCmPluginLan( aInitParam );
-	CleanupStack::PushL( self );
-	self->ConstructL();
-	CleanupStack::Pop( /*self*/ );
-
-	return self;
-	}
-
-// ----------------------------------------------------------------------------
-// CCmPluginLan::CreateInstanceL
-// ----------------------------------------------------------------------------
-//
-CCmPluginBaseEng* CCmPluginLan::CreateInstanceL( TCmPluginInitParam& aInitParam ) const
-    {
-    CCmPluginLan* self = new( ELeave ) CCmPluginLan( &aInitParam );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    return self;
-    }
-    
-// ---------------------------------------------------------
-// CCmPluginLan::~CCmPluginLan()
-// ---------------------------------------------------------
-//
-CCmPluginLan::~CCmPluginLan()
-	{
-	AdditionalReset();
-	
-	CLOG_CLOSE;
-	}
-
-
-// ---------------------------------------------------------
-// CCmPluginLan::CCmPluginLan()
-// ---------------------------------------------------------
-//
-CCmPluginLan::CCmPluginLan( TCmPluginInitParam* aInitParam )
-    : CCmPluginLanBase( aInitParam )
-	{
-	CLOG_CREATE;
-	
-	iBearerType = KUidLanBearerType;
-	}
-
-
-// ---------------------------------------------------------
-// CCmPluginLan::ConstructL()
-// ---------------------------------------------------------
-//
-void CCmPluginLan::ConstructL()
-	{
-	CCmPluginLanBase::ConstructL();
-	
-    iBearerRecName = KCDTypeNameLANBearer;
-	
-	AddConverstionTableL( (CCDRecordBase**)&iServiceRecord, NULL, SLanConvTbl );
-	
-	AddCommonConversionTableL( SCommonConvTbl );
-	}
-	
-
-// ---------------------------------------------------------
-// CCmPluginLan::GetIntAttributeL()
-// ---------------------------------------------------------
-//
-TUint32 CCmPluginLan::GetIntAttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginLanBase::GetIntAttributeL" );
-
-    TUint32 retVal;
-    
-    switch( aAttribute )
-        {
-        // LAN bearer has no icon, but added temporary 
-        // to help work on emulator.
-        case ECmBearerIcon:
-            {
-            MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-                   
-            TParse mbmFile;
-            User::LeaveIfError( mbmFile.Set( KPacketDataFileIcons, 
-                                                    &KDC_BITMAP_DIR, NULL ) );
-
-                   
-            retVal = (TUint32)AknsUtils::CreateGulIconL( 
-                                    skinInstance, 
-                                    KAknsIIDQgnPropWmlGprs,
-                                    mbmFile.FullName(), 
-                                    EMbmCmpluginpacketdataQgn_prop_wml_gprs, 
-                                    EMbmCmpluginpacketdataQgn_prop_wml_gprs_mask );
-            }
-            break;
-               
-        // LAN bearer has no icon, but added temporary 
-        // to help work on emulator.
-        case ECmBearerAvailableIcon:
-            {
-            MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-                   
-            TParse mbmFile;
-            User::LeaveIfError( mbmFile.Set( KPacketDataFileIcons, &KDC_BITMAP_DIR, NULL ) );
-
-                   
-            retVal = (TUint32)AknsUtils::CreateGulIconL( 
-                                    skinInstance, 
-                                    KAknsIIDQgnPropWmlGprs,
-                                    mbmFile.FullName(), 
-                                    EMbmCmpluginpacketdataQgn_prop_wml_gprs, 
-                                    EMbmCmpluginpacketdataQgn_prop_wml_gprs_mask );
-            }
-            break;
-            
-        case ECmCommsDBBearerType:
-            {
-            retVal = KCommDbBearerLAN;
-            }
-            break;
-            
-        case ECmDefaultUiPriority:
-        case ECmDefaultPriority:
-            {
-            retVal = aAttribute == ECmDefaultPriority ?
-                        GlobalBearerPriority( TPtrC(KCDTypeNameLANService) ) :
-                        GlobalUiBearerPriority( TPtrC(KCDTypeNameLANService) );
-            
-            if( retVal == KDataMobilitySelectionPolicyPriorityWildCard )
-                {
-                retVal = KDefaultPriorityLAN;
-                }
-            }
-            break;
-            
-        default:
-            {
-            retVal = CCmPluginBaseEng::GetIntAttributeL( aAttribute );
-            }
-        }
-        
-    return retVal;
-    }
-    
-// ---------------------------------------------------------
-// CCmPluginLan::CanHandleIapIdL()
-// ---------------------------------------------------------
-//
-TBool CCmPluginLan::CanHandleIapIdL( TUint32 aIapId ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginLanBase::CanHandleIapIdL1" );
-    CLOG_WRITE_1( "IapId: [%d]", aIapId );
-    
-    TBool retVal( EFalse );
-    
-    CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord *>
-                            (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
-        
-    CleanupStack::PushL( iapRecord );
-    iapRecord->SetRecordId( aIapId );
-    
-    TRAPD( err, iapRecord->LoadL( Session() ));
-
-    if( !err )
-        {
-        CanHandleIapIdL( iapRecord );
-        }
-    
-    CleanupStack::PopAndDestroy( iapRecord );
-    return retVal;
-    }
-
-// ---------------------------------------------------------
-// CCmPluginLan::CanHandleIapIdL()
-// ---------------------------------------------------------
-//
-TBool CCmPluginLan::CanHandleIapIdL( CCDIAPRecord *aIapRecord ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginLanBase::CanHandleIapIdL2" );
-
-    CLOG_WRITE_1( "IapId: [%d]", aIapRecord->RecordId() );
-    
-    TBool retVal( EFalse );
-    
-    CLOG_WRITE_2( "IAP record: [%S][%S]",
-                    &FIELD_TO_TDESC(aIapRecord->iServiceType), 
-                    &FIELD_TO_TDESC(aIapRecord->iBearerType)
-                );
-    
-    if( (TPtrC(aIapRecord->iServiceType) == TPtrC(KCDTypeNameLANService) ) &&
-        TPtrC(aIapRecord->iBearerType) == TPtrC(KCDTypeNameLANBearer) )
-        {
-        CLOG_WRITE( "I can." );
-        retVal = ETrue;
-        }
-
-    return retVal;
-    }
-
-// ---------------------------------------------------------
-// CCmPluginLan::AdditionalReset()
-// ---------------------------------------------------------
-//        
-void CCmPluginLan::AdditionalReset()
-    {
-    }
-
-//  End of File
--- a/cmmanager/cmmgr/Plugins/cmpluginlan/src/cmpluginlanproxy.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*      Implementation of Lan Plugin proxy table
-*      
-*
-*/
-
-
-#include "cmpluginlan.h"
-#include <e32std.h>
-#include <ecom/implementationproxy.h>
-
-// Exported proxy for instantiation method resolution
-// Define the interface UIDs
-const TImplementationProxy ImplementationTable[] = 
-	{
-	IMPLEMENTATION_PROXY_ENTRY( KUidLanBearerType, CCmPluginLan::NewL)
-	};
-
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
-	{
-	aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
-
-	return ImplementationTable;
-	}
--- a/cmmanager/cmmgr/Plugins/cmpluginpacketdata/data/1020737C.rss	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Resource definitions for project cmpluginpacketdata
-*
-*/
-
-#include "ecom/registryinfo.rh"
-
-// Because attribute enums had to be added to namespace CMManager
-// it's not possible to included cmpluginpacketdatadef.h.
-// Thus bearer type id had to be redefine here.
-#define KPacketDataBearerType   0x10207378
-
-RESOURCE REGISTRY_INFO theInfo
-	{
-	dll_uid = 0x1020737C;
-	interfaces = 
-		{
-		INTERFACE_INFO
-			{
-			interface_uid = 0x10207377; // = KCMPluginInterfaceUid
-			implementations = 
-				{
-				IMPLEMENTATION_INFO
-					{
-					implementation_uid = KPacketDataBearerType;
-					version_no = 1;
-					display_name = "Packet Data";
-					default_data = "PacketData";
-					opaque_data = "";
-					}
-				};
-			}
-		};
-	}
--- a/cmmanager/cmmgr/Plugins/cmpluginpacketdata/data/cmpacketdataui.rss	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,222 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Resource definitions for project cmpluginpacketdata
-*
-*/
-
-
-NAME    PDPL
-
-// INCLUDES
-#include <avkon.rsg>
-#include <avkon.rh>    
-#include <avkon.loc>
-#include <uikon.rh>
-#include <eikon.rh>
-#include <cmpsettingsconsts.h>
-#include <eikon.rsg>
-#include <AvkonIcons.hrh>
-#include <cmmanager.loc>
-#include <cmmanager.rsg>
-
-#include <cmpluginpacketdata.loc>
-
-// RESOURCE IDENTIFIERS
-
-RESOURCE RSS_SIGNATURE { }
-
-RESOURCE TBUF { buf = "cmpacketdataplugin"; }
-
-// CONSTANTS
-
-//For Ip address editor
-#define IPADDRESS_MIN_FIRST_FIELD_VALUE     0
-#define IPADDRESS_MIN_SECOND_FIELD_VALUE    0
-#define IPADDRESS_MIN_THIRD_FIELD_VALUE     0
-#define IPADDRESS_MIN_FOURTH_FIELD_VALUE    0
-#define IPADDRESS_MAX_FIRST_FIELD_VALUE     255
-#define IPADDRESS_MAX_SECOND_FIELD_VALUE    255
-#define IPADDRESS_MAX_THIRD_FIELD_VALUE     255
-#define IPADDRESS_MAX_FOURTH_FIELD_VALUE    255
-
-
-// RESOURCE DEFINITIONS
-
-// ---------------------------------------------------------------------------
-// r_gprs_plugin_view_ap_name
-// localised string
-// ---------------------------------------------------------------------------
-RESOURCE TBUF r_gprs_plugin_view_ap_name                              
-    {
-    buf = qtn_set_access_point_name;
-    }
-                
-// ---------------------------------------------------------------------------
-// r_gprs_plugin_sett_val_field_none
-// localised string
-// ---------------------------------------------------------------------------
-RESOURCE TBUF r_gprs_plugin_sett_val_field_none
-    {
-    buf = qtn_selec_sett_val_field_none;
-    }
-                
-// ---------------------------------------------------------------------------
-// r_gprs_plugin_view_pdp_type
-// localised string
-// ---------------------------------------------------------------------------
-RESOURCE TBUF r_gprs_plugin_view_pdp_type
-    {
-    buf = qtn_set_network_type;
-    }
-
-// ---------------------------------------------------------------------------
-// r_gprs_plugin_view_pdp_type_ipv4
-// localised string
-// ---------------------------------------------------------------------------
-RESOURCE TBUF r_gprs_plugin_view_pdp_type_ipv4
-    {
-    buf = qtn_set_nw_type_ipv4;
-    }
-
-// ---------------------------------------------------------------------------
-// r_gprs_plugin_view_pdp_type_ipv6
-// localised string
-// ---------------------------------------------------------------------------
-RESOURCE TBUF r_gprs_plugin_view_pdp_type_ipv6
-    {
-    buf = qtn_set_nw_type_ipv6;
-    }
-
-// ---------------------------------------------------------------------------
-// r_gprs_plugin_apn_prompt
-// localised string
-// ---------------------------------------------------------------------------
-RESOURCE TBUF r_gprs_plugin_apn_prompt             
-    {
-    buf = qtn_netw_conset_prmpt_packet_data_apn;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_bearer_supported_packet_data
-// localised string
-// ---------------------------------------------------------------------------
-RESOURCE TBUF r_qtn_netw_conset_bearer_supported_packet_data
-    {
-    buf = qtn_netw_conset_bearer_supported_packet_data;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_bearer_available_packet_data
-// localised string
-// ---------------------------------------------------------------------------
-RESOURCE TBUF r_qtn_netw_conset_bearer_available_packet_data
-    {
-    buf = qtn_netw_conset_bearer_available_packet_data;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_packet_data_available
-// localised string
-// ---------------------------------------------------------------------------
-RESOURCE TBUF r_qtn_netw_conset_packet_data_available
-    {
-    buf = qtn_netw_conset_packet_data_available;
-    }
-
-// ---------------------------------------------------------------------------
-// r_gprs_plugin_view_set_bearer_packet_data
-// localised string
-// ---------------------------------------------------------------------------
-RESOURCE TBUF r_gprs_plugin_view_set_bearer_packet_data
-    {
-    buf = qtn_set_bearer_packet_data;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_popup_bearer_packet_data
-// localised string
-// ---------------------------------------------------------------------------
-RESOURCE TBUF r_qtn_netw_conset_popup_bearer_packet_data
-    {
-    buf = qtn_netw_conset_popup_bearer_packet_data;
-    }
-                
-// ---------------------------------------------------------------------------
-// r_qtn_set_bearer_packet_data
-// localised string
-// ---------------------------------------------------------------------------
-RESOURCE TBUF r_qtn_set_bearer_packet_data
-    {
-    buf = qtn_set_bearer_packet_data;
-    }
-
-// ---------------------------------------------------------------------------
-// r_setting_app_edwin_gprsap_name
-// edwin for packet data access point name setting page
-// ---------------------------------------------------------------------------
-RESOURCE EDWIN r_setting_app_edwin_gprsap_name
-    {
-    width=KGprsApNameWidth;
-    lines=KGprsApNameLines;
-    maxlength=KMaxGprsApNameLength;
-    allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode;
-    default_input_mode = EAknEditorTextInputMode;
-    default_case = EAknEditorLowerCase;
-    avkon_flags = EAknEditorFlagLatinInputModesOnly;
-    flags = EEikEdwinAutoSelection | EEikEdwinNoLineOrParaBreaks;
-    }
-
-// ---------------------------------------------------------------------------
-// r_text_setting_page_gprsap_name
-// setting page for packet data access point name
-// ---------------------------------------------------------------------------
-RESOURCE AVKON_SETTING_PAGE r_text_setting_page_gprsap_name
-    {
-    number= EAknSettingPageNoOrdinalDisplayed;
-    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-    label= qtn_set_access_point_name;
-    type = EEikCtEdwin;
-    editor_resource_id = r_setting_app_edwin_gprsap_name;
-    }
-
-// ---------------------------------------------------------------------------
-// r_apn_name_query
-// 
-// ---------------------------------------------------------------------------
-RESOURCE DIALOG r_apn_name_query
-    {
-    flags = EGeneralQueryFlags | EEikDialogFlagNoShadow;
-    buttons = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtQuery;
-            id = EGeneralQuery;
-            control = AVKON_DATA_QUERY 
-                { 
-                layout = EDataLayoutAllowEmptyInput;
-                control = EDWIN
-                    {
-                    maxlength=KMaxGprsApNameLength;
-                    allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode;
-                    default_input_mode = EAknEditorTextInputMode;
-                    avkon_flags = EAknEditorFlagLatinInputModesOnly;
-                    flags = EEikEdwinNoHorizScrolling;
-                    default_case = EAknEditorLowerCase;
-                    };
-                };
-            }
-        };
-    }
--- a/cmmanager/cmmgr/Plugins/cmpluginpacketdata/group/bld.inf	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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:  Build information file for project cmpluginpacketdata
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-// export localised loc file
-../loc/cmpluginpacketdata.loc	MW_LAYER_LOC_EXPORT_PATH(cmpluginpacketdata.loc)
-
-PRJ_MMPFILES
-cmpluginpacketdata.mmp
-
-PRJ_EXTENSIONS
-START EXTENSION s60/mifconv
-OPTION TARGETFILE cmpluginpacketdata.mif
-OPTION HEADERFILE cmpluginpacketdata.mbg
-OPTION SOURCES -c8,1 qgn_prop_wml_gprs\
-               -c8,8 qgn_prop_set_conn_bearer_avail_packetdata
-END
--- a/cmmanager/cmmgr/Plugins/cmpluginpacketdata/group/cmpluginpacketdata.mmp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Project definition file for project cmpluginpacketdata
-*
-*/
-
-#include <data_caging_paths.hrh>
-#include <platform_paths.hrh>
-
-TARGET      cmpluginpacketdata.dll
-UID         0x10009D8D 0x1020737C
-
-TARGETTYPE		PLUGIN
-
-CAPABILITY      CAP_ECOM_PLUGIN
-VENDORID        VID_DEFAULT
-
-SOURCEPATH  ../src
-
-SOURCE      cmpluginpacketdataproxy.cpp
-SOURCE      cmpluginpacketdata.cpp
-SOURCE      ../../../Framework/Src/cmlogger.cpp
-SOURCE      cmppacketdatasettingsdlg.cpp
-SOURCE      cmppacketdatasettingsdlgadv.cpp
-
-SOURCEPATH  ../data
-
-START RESOURCE 1020737C.rss
-TARGET cmpluginpacketdata.rsc
-END
-
-START RESOURCE cmpacketdataui.rss
-DEPENDS cmmanager.rsg
-HEADER
-TARGETPATH   RESOURCE_FILES_DIR
-LANGUAGE_IDS
-END
-
-USERINCLUDE     ../../../Framework/Inc
-USERINCLUDE     ../../../Framework/SrcData
-USERINCLUDE     ../data
-
-// Component specific internal headers 
-USERINCLUDE			../inc
-
-// ADO specific internal headers 
-SYSTEMINCLUDE		../../../../../inc
-
-//Macro to /epoc32 headers
-MW_LAYER_SYSTEMINCLUDE
-
-LIBRARY euser.lib
-LIBRARY	ECOM.LIB
-LIBRARY cmmanager.lib
-LIBRARY COMMSDAT.lib
-DEBUGLIBRARY flogger.lib
-LIBRARY		CommonUI.LIB
-LIBRARY	CommonEngine.lib
-LIBRARY	bafl.lib
-LIBRARY eikcoctl.lib avkon.lib eikdlg.lib
-LIBRARY insock.lib
-LIBRARY etel.lib        // coverage check
-LIBRARY ETELPCKT.lib    // coverage check
-
-LIBRARY eikcore.lib egul.lib
-LIBRARY eikctl.lib  cone.lib 
-LIBRARY fbscli.lib efsrv.lib
-LIBRARY featmgr.lib
-LIBRARY centralrepository.lib 
-
-LIBRARY AknSkins.lib
\ No newline at end of file
--- a/cmmanager/cmmgr/Plugins/cmpluginpacketdata/group/pluginpacketdata_icons.mk	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-#
-# Copyright (c) 2006 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:  icons makefile for project cmpluginpacketdata
-#
-ifeq (WINS,$(findstring WINS, $(PLATFORM)))
-ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\Z
-else
-ZDIR=\epoc32\data\z
-endif
-
-
-TARGETDIR=$(ZDIR)\resource\apps
-ICONTARGETFILENAME=$(TARGETDIR)\cmpluginpacketdata.mif
-
-HEADERDIR=\epoc32\include
-HEADERFILENAME=$(HEADERDIR)\cmpluginpacketdata.mbg
-
-do_nothing :
-	@rem do_nothing
-
-MAKMAKE : do_nothing
-
-BLD : do_nothing
-
-CLEAN : do_nothing
-
-LIB : do_nothing
-
-CLEANLIB : do_nothing
-
-# ----------------------------------------------------------------------------
-# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by
-# MifConv if the mask detph is defined.
-#
-# NOTE 2: Usually, source paths should not be included in the bitmap
-# definitions. MifConv searches for the icons in all icon directories in a
-# predefined order, which is currently \s60\icons, \s60\bitmaps2, \s60\bitmaps.
-# The directory \s60\icons is included in the search only if the feature flag
-# __SCALABLE_ICONS is defined.
-# ----------------------------------------------------------------------------
-
-RESOURCE :
-	mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) \
-                /c8,1 qgn_prop_wml_gprs.bmp \
-                /c8,8 qgn_prop_set_conn_bearer_avail_packetdata.bmp
-
-FREEZE : do_nothing
-
-SAVESPACE : do_nothing
-
-RELEASABLES :
-	@echo $(HEADERFILENAME)&& \
-	@echo $(ICONTARGETFILENAME)
-
-FINAL : do_nothing
--- a/cmmanager/cmmgr/Plugins/cmpluginpacketdata/inc/cmpacketdatacommonconstants.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
-* Copyright (c) 2006 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:  constants for the packet data plugin
-*
-*/
-
-#ifndef CMPACKETDATACOMMONCONSTANTS_H
-#define CMPACKETDATACOMMONCONSTANTS_H
-
-// CONSTANTS
-_LIT( KPluginPacketDataResDirAndFileName, "z:cmpacketdataui.rsc" );
-_LIT( KEmptyAddress, "http://" );
-
-#endif  // CMPACKETDATACOMMONCONSTANTS_H
--- a/cmmanager/cmmgr/Plugins/cmpluginpacketdata/inc/cmpluginpacketdata.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,277 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of CCmPluginPacketData.
-*
-*/
-
-#ifndef PACKETDATA_PLUGIN_H
-#define PACKETDATA_PLUGIN_H
-
-#include <cmpluginbaseeng.h>
-#include <cmpluginpacketdatadef.h>
-
-/**
-*  CCmPluginPacketData dialog class
-*  @since S60 v3.2
-*/
-NONSHARABLE_CLASS( CCmPluginPacketData ) : public CCmPluginBaseEng
-    {
-
-    public: // Constructors and destructor
-
-        static CCmPluginPacketData* NewL( TCmPluginInitParam* aInitParam );
-
-        virtual ~CCmPluginPacketData();
-
-        virtual CCmPluginBaseEng* CreateInstanceL( TCmPluginInitParam& aInitParam ) const;
-        
-    public: // From CCmPluginBaseEng
-        
-        /**
-        * From CCmPluginBaseEng
-        * see base class
-        *
-        * @since S60 3.2
-        * @param aAttribute
-        */
-        virtual TUint32 GetIntAttributeL( const TUint32 aAttribute ) const;
-
-        /**
-        * From CCmPluginBaseEng
-        * see base class
-        *
-        * @since S60 3.2
-        * @param aAttribute
-        */
-		virtual TBool GetBoolAttributeL( const TUint32 aAttribute ) const;
-
-		/**
-        * From CCmPluginBaseEng
-        * see base class
-        *
-        * @since S60 3.2
-        * @param aAttribute
-        */
-		virtual HBufC* GetStringAttributeL( const TUint32 aAttribute ) const;
-
-		/**
-        * From CCmPluginBaseEng
-        * see base class
-        *
-        * @since S60 3.2
-        * @param aAttribute
-        * @param aValue
-        */
-		virtual void SetIntAttributeL( const TUint32 aAttribute, 
-		                                                    TUint32 aValue );
-
-		
-		/**
-        * From CCmPluginBaseEng
-        * see base class
-        *
-        * @since S60 3.2
-        * @param aAttribute
-        * @param aValue
-        */
-		virtual void SetBoolAttributeL( const TUint32 aAttribute, 
-		                                                    TBool aValue );
-
-		/**
-        * From CCmPluginBaseEng
-        * see base class
-        *
-        * @since S60 3.2
-        * @param aAttribute
-        * @param aValue
-        */
-		virtual void SetStringAttributeL( const TUint32 aAttribute, 
-		                                            const TDesC16& aValue );
-        
-        /**
-        * From CCmPluginBaseEng
-        * see base class
-        *
-        * @since S60 3.2
-        * @param aIapId
-        */
-        virtual void PrepareToUpdateRecordsL();
-        
-        /**
-        * From CCmPluginBaseEng
-        * see base class
-        *
-        * @since S60 3.2
-        * @param aIapId
-        */
-		virtual TBool CanHandleIapIdL( TUint32 aIapId ) const;
-        
-        /**
-        * From CCmPluginBaseEng
-        * see base class
-        *
-        * @since S60 3.2
-        * @param aIapRecord
-        */
-		virtual TBool CanHandleIapIdL( CommsDat::CCDIAPRecord *aIapRecord ) const;
-        
-        /**
-        * From CCmPluginBaseEng
-        * see base class
-        *
-        * @since S60 3.2
-        */
-		virtual TInt RunSettingsL();
-        
-	    /**
-        * From CCmPluginBaseEng
-        * see base class
-        *
-        * @since S60 3.2
-        */
-		virtual void LoadServiceSettingL();
-
-	    /**
-        * From CCmPluginBaseEng
-        * see base class
-        *
-        * @since S60 3.2
-        */
-		virtual TBool InitializeWithUiL( TBool aManuallyConfigure );
-	    
-        /**
-        * From CCmPluginBaseEng
-        * see base class
-        *
-        * @since S60 3.2
-        * @param aServiceName
-        * @param aRecordId
-        */
-		virtual void ServiceRecordIdLC( HBufC* &aServiceName, 
-                                                        TUint32& aRecordId );
-
-	    /**
-        * From CCmPluginBaseEng
-        * see base class
-        *
-        * @since S60 3.2
-        * @param aBearerName
-        * @param aRecordId
-        */
-		virtual void BearerRecordIdLC( HBufC* &aBearerName, 
-                                                        TUint32& aRecordId );
-                                       
-    public: // New functions
-    
-        /**
-        * @param aPdpType PDP type to be set
-        */     
-        void SetPDPTypeL( RPacketContext::TProtocolType aPdpType );
-
-        /**
-        * @since S60 3.2
-        * @return the service record
-        */
-		CommsDat::CCDWCDMAPacketServiceRecord& ServiceRecord() const;
-        
-    protected: // From CCmPluginBaseEng
-    
-        /**
-        * From CCmPluginBaseEng
-        *
-        * @since S60 3.2
-		*/      
-		virtual void AdditionalReset();
-
-        /**
-        * From CCmPluginBaseEng
-        *
-        * @since S60 5.2
-		*/      
-        virtual void CreateAdditionalRecordsL();
-
-        /**
-        * From CCmPluginBaseEng
-        *
-        * @since S60 5.2
-		*/      
-        virtual void DeleteAdditionalRecordsL();
-
-        /**
-        * From CCmPluginBaseEng
-        *
-        * @since S60 5.2
-		*/      
-        virtual void LoadAdditionalRecordsL();
-
-        /**
-        * From CCmPluginBaseEng
-        *
-        * @since S60 5.2
-		*/      
-        virtual void UpdateAdditionalRecordsL();
-
-	private: // Constructors
-
-        /**
-        * Constructor
-        *
-        * @since S60 3.2
-        * @param aInitParam
-        * @param aOutgoing
-        */      
-		CCmPluginPacketData( TCmPluginInitParam* aInitParam, 
-		                     TBool aOutgoing );
-
-        /**
-        * Second phase constructor    
-        *
-        * @since S60 3.2
-		*/      
-		void ConstructL();
-
-    private: // from CCmPluginBaseEng
-    
-        /**
-        * Second phase constructor    
-        *
-        * @since S60 3.2
-		*/      
-		virtual void CreateNewServiceRecordL();
-		
-		virtual void PrepareToCopyDataL( CCmPluginBaseEng* aDestInst ) const;
-        
-        /**
-        * Sets the daemon name. Starts DHCP if set.
-        *
-        * @since S60 3.2
-        */
-        void SetDaemonNameL();
-
-    private:
-    
-	    /**
-        * @since S60 3.2
-        * @return if there is network coverage
-        */
-		TBool CheckNetworkCoverageL() const;
-        
-	private: // Data
-	    
-        TBool   iOutgoing;  ///< EPacketDataOutGoing
-
-        CommsDat::CCDUmtsR99QoSAndOnTableRecord* iPacketDataQoSRecord; // Owned
-	};
-
-#endif // PACKETDATA_PLUGIN_H
--- a/cmmanager/cmmgr/Plugins/cmpluginpacketdata/inc/cmppacketdatasettingsdlg.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Declares a settings dialog for a packet data connection 
-*                method plugin
-*
-*/
-
-#ifndef CMPLUGINPACKETDATA_SETTINGS_DLG_H
-#define CMPLUGINPACKETDATA_SETTINGS_DLG_H
-
-// INCLUDES
-#include <cmpluginbaseeng.h>
-#include <mcmdexec.h>
-#include <cmpbasesettingsdlg.h>
-#include "cmcommsdatnotifier.h"
-
-// CLASS DECLARATION
-
-/**
- *  CmPluginPacketDataSettingsDlg dialog class
- *
- *  Displays the Packet data settings
- *
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CmPluginPacketDataSettingsDlg ) : 
-                                               public CmPluginBaseSettingsDlg
-                                               , public MCmCommsDatWatcher
-                                               , public CCmParentViewNotifier
-    {
-    public: // Constructors and destructor
-    
-        /**
-        * Two-phase constructor
-        *
-        * @since S60 3.2
-        * @param aCmPluginBaseEng  The connection method to use
-        * @return instance of the class
-        */
-        static CmPluginPacketDataSettingsDlg* NewL( CCmPluginBaseEng& 
-                                                        aCmPluginBaseEng );
-
-        /**
-        * Destructor.
-        */
-        virtual ~CmPluginPacketDataSettingsDlg();
-    
-    public: // From CmPluginBaseSettingsDlg
-    
-        /**
-        * From CmPluginBaseSettingsDlg
-        * constructor for the dialog
-        *
-        * @since S60 3.2
-        */
-        virtual TInt ConstructAndRunLD( );
-        
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Collects the packet data specific setting information for 
-        * displaying
-        *
-        * @since S60 3.2
-        * @param aItemArray an array of setting information
-        */
-        virtual void UpdateListBoxContentBearerSpecificL( 
-                                                    CDesCArray& aItemArray );
-        
-        /**
-        * From CmPluginBaseSettingsDlg
-        * displays the advanced settings dialog
-        *
-        * @since S60 3.2
-        */
-        virtual void RunAdvancedSettingsL();        
-        
-    public: // from class MCmCommsDatWatcher
-        
-        /**
-         * Watch changes in CommsDat
-         */
-        void CommsDatChangesL();
-        
-    public: // from class CCmParentViewNotifier
-        
-        void NotifyParentView( TInt aValue );
-        
-    protected:
-        /** From CAknDialog */
-        TBool OkToExitL( TInt aButtonId );
-        
-    private: // Constructors
-    
-        CmPluginPacketDataSettingsDlg( CCmPluginBaseEng& aCmPluginBaseEng );    
-        
-    private: // From CmPluginBaseSettingsDlg
-        
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Redraws the list box
-        *
-        * @since S60 3.2
-        */
-        virtual void UpdateListBoxContentL();
-        
-        /**
-        * From CmPluginBaseSettingsDlg
-        * according to the setting type the correct edit dialog is displayed
-        *
-        * @since S60 3.2
-        * @param aAttribute
-        * @param aCommandId
-        */
-        virtual TBool ShowPopupSettingPageL( TUint32 aAttribute, 
-                                             TInt aCommandId  );
-                                             
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Get help contest of the plugin
-        *
-        * @since S60 5.0
-        */
-				virtual void GetHelpContext( TCoeHelpContext& aContext ) const;
-        
-    private: // From MEikCommandObserver
-                
-        /**
-        * From MEikCommandObserver
-        * see base class for description
-        *
-        * @since S60 3.2
-        * @param aCommandId
-        */
-        virtual void ProcessCommandL( TInt aCommandId );
-        
-    private: // New functions
-            
-        /**
-        * Shows the bool setting page for a certain setting or
-        * simply changes the setting if ok key was pressed
-        * @since S60 3.2
-        * @param aAttribute The setting to be changed by the setting page
-        * @param aCommandId Command id, to make difference between ok and change commands
-        * @return the new setting value
-        */  
-        TBool ChangeBoolSettingL( TUint32 aAttribute, TInt aCommandId );
-        
-        void HandleCommsDatChangeL();
-        
-    private:
-        
-        TInt iNotifyFromSon;
-    };
-
-#endif // CMPLUGINPACKETDATA_SETTINGS_DLG_H
--- a/cmmanager/cmmgr/Plugins/cmpluginpacketdata/inc/cmppacketdatasettingsdlgadv.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Declares an advanved settings dialog for a packet data 
-*                connection method plugin
-*
-*/
-
-#ifndef CMPLUGINPACKETDATA_SETTINGS_DLG_ADV_H
-#define CMPLUGINPACKETDATA_SETTINGS_DLG_ADV_H
-
-// INCLUDES
-#include <mcmdexec.h>
-#include <cmpbasesettingsdlgadv.h>
-#include <cmpluginbaseeng.h>
-#include <in_sock.h>
-#include "cmcommsdatnotifier.h"
-
-// FORWARD DECLARATIONS
-class CCmPluginBaseEng;
-
-// CLASS DECLARATION
-
-/**
- *  CmPluginPacketDataSettingsDlgAdv dialog class
- *
- *  displays the packet data advanced settings dialog
- *
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CmPluginPacketDataSettingsDlgAdv ) : 
-                                            public CmPluginBaseSettingsDlgAdv ,
-                                            public MCmCommsDatWatcher
-    {
-    public: // Constructors and destructor
-
-        /**
-        * Two-phase construction
-        *
-        * @since S60 3.2
-        * @param aCmPluginBaseEng  The connection method to use
-        * @return instance of the class
-        */
-        static CmPluginPacketDataSettingsDlgAdv* NewL( 
-                                        CCmPluginBaseEng& aCmPluginBaseEng );
-
-        /**
-        * Destructor
-        */
-        virtual ~CmPluginPacketDataSettingsDlgAdv();
-
-    public: // From CmPluginBaseSettingsDlg
-    
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Collects the packet data specific setting information for 
-        * displaying
-        *
-        * @since S60 3.2
-        * @param aItemArray an array of setting information
-        */
-        void UpdateListBoxContentBearerSpecificL( CDesCArray& itemArray );
-        
-        /**
-        * From CmPluginBaseSettingsDlg
-        * displays the advanced settings dialog
-        *
-        * @since S60 3.2
-        */
-        void RunAdvancedSettingsL() {;}
-        
-    public: // from base class
-
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Create and launch dialog
-        *
-        * @since S60 v3.2
-        * @return The code returned by the dialog's ExecuteLD
-        */
-        TInt ConstructAndRunLD();
-        
-    public:
-        
-        /**
-         * Record the object of parent view
-         */
-        void RegisterParentView( CCmParentViewNotifier* aParent );
-        
-    public: // from class MCmCommsDatWatcher
-        
-        /**
-         * Watch changes in CommsDat
-         */
-        void CommsDatChangesL();
-        
-    protected:
-        /** From CAknDialog */
-        TBool OkToExitL( TInt aButtonId );
-
-    private:
-    
-        /** 
-        * C++ constructor
-        */
-        CmPluginPacketDataSettingsDlgAdv( 
-                                        CCmPluginBaseEng& aCmPluginBaseEng );
-        
-    private: // From CmPluginBaseSettingsDlg
-    
-        /**
-        * From CmPluginBaseSettingsDlg
-        * according to the setting type the correct edit dialog is displayed
-        *
-        * @since S60 3.2
-        * @param aAttribute
-        * @param aCommandId
-        */
-        TBool ShowPopupSettingPageL( TUint32 aAttribute, TInt aCommandId  );
-        
-    private: // From MEikCommandObserver
-        
-        /**
-        * From MEikCommandObserver
-        * see base class for description
-        *
-        * @since S60 3.2
-        * @param aCommandId
-        */        
-        virtual void ProcessCommandL( TInt aCommandId );
-        
-    private: // New functions
-
-        /**
-        * Shows the setting page for IP DNS address
-        * 
-        * @since S60 3.2
-        */
-        void ShowPopupPacketDataIPDNSAddrFromServerL( );
-        
-        /**
-        * Show the setting page for PDP type
-        *
-        * @since S60 3.2
-        * @param aAttribute the setting to be changed
-        */
-        void ShowPDPTypeRBPageL( TUint32 aAttribute );
-        
-    private:  // Data Members
-
-        /**
-        * indicates if IPv6 is supported
-        */
-        TBool iIpv6Supported;
-                
-        CCmParentViewNotifier* iParent;
-    };
-
-#endif // CMPLUGINPACKETDATA_SETTINGS_DLG_ADV_H
--- a/cmmanager/cmmgr/Plugins/cmpluginpacketdata/loc/cmpluginpacketdata.loc	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Localization strings for project cmpluginpacketdata
-*
-*/
-
-
-//  LOCALISATION STRINGS
-
-//d: The name of a new, default connection. Max.30 chars, longer ones will be truncated.
-//d: Used in Connection method view.
-//l: list_setting_pane_t1
-//w:
-//r: 3.2
-//
-#define qtn_set_access_point_name "Access point name"
-
-//d: Item text in setting list. Gives the network type 
-//d: (whether it is IP4 or IP6)
-//l: list_setting_pane_t1
-//w:
-//r: 3.2
-//
-#define qtn_set_network_type "Network type"
-
-//d: States that the network type is IPv4
-//l: list_set_graphic_pane_t1
-//w:
-//r: 3.2
-//
-#define qtn_set_nw_type_ipv4 "IPv4"
-
-//d: States that the network type is IPv6
-//l: list_set_graphic_pane_t1
-//w:
-//r: 3.2
-//
-#define qtn_set_nw_type_ipv6 "IPv6"
-
-//d: Connection method list text
-//l: list_set_graphic_pane_t1
-//w:
-//r: 3.2
-//
-#define qtn_selec_sett_val_field_none "None"
-
-//d: Prompt for Access Point Name query window.
-//l: popup_query_data_window
-//w:
-//r: 3.2
-//
-#define qtn_netw_conset_prmpt_packet_data_apn "Packet data access point name (APN):"
-
-//d: Name of packet data bearer type shown in a list of supported bearers.
-//l: list_single_graphic_pane_t1_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_bearer_supported_packet_data "Packet data"
-
-//d: First line of a double large graphic style listbox - packet data specific
-//l: list_double_large_graphic_pane_t1_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_bearer_available_packet_data "Packet data"
-
-//d: Second line of a double large graphic style listbox - packet data specific
-//l: list_double_large_graphic_pane_t2_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_packet_data_available "Available"
-
-//d: Name of the data bearer displayed in 'data bearer' setting
-//l: list_set_graphic_pane_t1
-//w:
-//r: 3.2
-//
-#define qtn_set_bearer_packet_data "Packet data"
-
-//d: Data bearer of the highlighted connection method.
-//l: popup_preview_text_window_t1
-//r: 3.2
-#define qtn_netw_conset_popup_bearer_packet_data "Packet data"
--- a/cmmanager/cmmgr/Plugins/cmpluginpacketdata/src/cmpluginpacketdata.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1212 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Dialog for editing settings for a packet data connection 
-*
-*/
-
-
-// INCLUDE FILES
-
-// System
-#include <AknsUtils.h>
-#include <data_caging_path_literals.hrh>
-#include <cmpluginpacketdata.mbg>           // icons
-#include <cmpacketdataui.rsg>
-#include <AknQueryDialog.h>
-#include <StringLoader.h>
-#include <cmmanager.rsg>
-#include <featmgr.h>                     // FeatureManager
-#include <centralrepository.h>           // CRepository 
-#include <CoreApplicationUIsSDKCRKeys.h> // KCRUidCoreApplicationUIs, 
-
-// User
-#include "cmpluginpacketdata.h"
-#include <cmpluginpacketdatadef.h>
-#include "cmpacketdatacommonconstants.h"
-#include "cmlogger.h"
-#include "cmppacketdatasettingsdlg.h"
-#include <cmpsettingsconsts.h>
-#include "datamobilitycommsdattypes.h"
-#include <cmcommonconstants.h>
-#include <cmmanagerdef.h>
-
-using namespace CMManager;
-using namespace CommsDat;
-
-// ================= CONSTANTS =======================
-
-const TUint32 KDefaultPriorityPacketData = 1;
-
-/// Modem bearer names for GPRS/WCDMA Access Points
-_LIT( KModemBearerPacketData, "GPRS Modem" );
-_LIT( KPacketDataFileIcons, "z:cmpluginpacketdata.mbm" );
-_LIT( KDefaultQosDataRecordName, "PRIMARY1" );
-_LIT( KDefaultQosDataRecordNamewithSpace, "PRIMARY1 " );
-
-// ================= LOCAL PROTOTYPES =======================
-
-/**
-* Function to check and set PDP type and IfNetwork.
-* @param aThis 'this' pointer of the plugin instance
-* @param aAttribute attribute client wants to set
-* @param aValue TInt* IPv4 address buffer to be checked
-*/
-static TBool SetPDPTypeL( CCmPluginBaseEng* aThis, 
-                   TUint32 aAttribute, 
-                   const TAny* aValue );
-
-static const TCmAttribConvTable SPacketDataConvTbl[] = 
-    {
-    // iAttribId, iCommsDatId, iValidFuncL, 
-    // iTitleId, 
-    // iMaxLength, iAttribFlags, iDefValueResId, iEditorResId, iNotUsed1, iNotUsed2
-    { EPacketDataAPName, EGPRSReqTrafficClass-1, NULL,
-      0,
-      0, 0, 0, NULL, NULL },
-    { EPacketDataAPName, KCDTIdAPN, NULL,
-      R_GPRS_PLUGIN_VIEW_AP_NAME,
-      KMaxGprsApNameLength, 0, R_GPRS_PLUGIN_SETT_VAL_FIELD_NONE, R_TEXT_SETTING_PAGE_GPRSAP_NAME, NULL, NULL },
-    { EPacketDataPDPType, KCDTIdWCDMPDPType, &SetPDPTypeL,
-      R_GPRS_PLUGIN_VIEW_PDP_TYPE,
-      0, 0, 0, NULL, NULL },
-    { EPacketDataPDPAddress, KCDTIdWCDMAPDPAddress, NULL },
-    { EPacketDataReqPrecedence, KCDTIdReqPrecedence, NULL },
-    { EPacketDataReqDelay, KCDTIdReqDelay, NULL },
-    { EPacketDataReliability, KCDTIdReqReliability, NULL },
-    { EPacketDataPeakThroughput, KCDTIdReqPeakThroughput, NULL },
-    { EPacketDataMeanThroughput, KCDTIdReqMeanThroughput, NULL },
-    { EPacketDataMinPrecedence, KCDTIdMinPrecedence, NULL },
-    { EPacketDataMinDelay, KCDTIdMinDelay, NULL },
-    { EPacketDataMinReliability, KCDTIdMinReliability, NULL },
-    { EPacketDataMinPeakThroughput, KCDTIdMinPeakThroughput, NULL },
-    { EPacketDataMinMeanThroughput, KCDTIdMinMeanThroughput, NULL },
-    { EPacketDataDataCompression, KCDTIdWCDMADataCompression, NULL },
-    { EPacketDataHeaderCompression, KCDTIdWCDMAHeaderCompression, NULL },
-    { EPacketDataUseEdge, KCDTIdWCDMAUseEdge, NULL },
-    { EPacketDataAnonymousAccess, KCDTIdWCDMAAnonymousAccess, NULL },
-    { EPacketDataIFParams, KCDTIdWCDMAIfParams, NULL },
-    { EPacketDataIFNetworks, KCDTIdWCDMAIfNetworks, NULL },
-    { EPacketDataIFPromptForAuth, KCDTIdWCDMAIfPromptForAuth, NULL,
-      R_QTN_SET_PROMPT_PASSWD,
-      0, 0, 0, NULL, NULL },
-    { EPacketDataIFAuthName, KCDTIdWCDMAIfAuthName, NULL,
-      R_QTN_SET_AP_USERNAME,
-      KMaxLoginNameLength, 0, R_QTN_SET_AP_USERNAME_NONE, R_TEXT_SETTING_PAGE_LOGIN_NAME, NULL, NULL },
-    { EPacketDataIFAuthPass, KCDTIdWCDMAIfAuthPass, NULL,
-      R_QTN_SET_AP_PASSWD,
-      KCmMaxPasswordLength, EConvPassword, R_AVKON_NUMERIC_PASSWORD_BLANKING_TEXT, NULL, NULL },
-    { EPacketDataIFAuthRetries, KCDTIdWCDMAIfAuthRetries, NULL },
-    { EPacketDataIPNetmask, KCDTIdWCDMAIPNetMask, &CheckIPv4ValidityL },
-    { EPacketDataIPGateway, KCDTIdWCDMAIPGateway, &CheckIPv4ValidityL },
-    { EPacketDataIPAddrFromServer, KCDTIdWCDMAIPAddrFromServer, NULL },
-    { EPacketDataIPAddr, KCDTIdWCDMAIPAddr, &CheckIPv4ValidityL,
-      R_QTN_SET_IP_ADDRESS,
-      KIpAddressWidth, EConvIPv4, R_QTN_SET_IP_ADDRESS_DYNAMIC, 0, NULL, NULL },
-    { EPacketDataIPDNSAddrFromServer, KCDTIdWCDMAIPDNSAddrFromServer, NULL,
-      R_QTN_SET_DNS_SERVERS_IP,
-      0, 0, 0, 0, NULL, NULL },
-    { EPacketDataIPNameServer1, KCDTIdWCDMAIPNameServer1, &CheckIPv4ValidityL,
-      R_QTN_SET_PRIMARY_DNS,
-      KMaxIPv4NameServerLength, EConvIPv4, R_QTN_SET_DNS_SERVERS_AUTOMATIC, 0, NULL, NULL },
-    { EPacketDataIPNameServer2, KCDTIdWCDMAIPNameServer2, &CheckIPv4ValidityL,
-      R_QTN_SET_SECONDARY_DNS,
-      KMaxIPv4NameServerLength, EConvIPv4, R_QTN_SET_DNS_SERVERS_AUTOMATIC, 0, NULL, NULL },
-    { EPacketDataIPIP6DNSAddrFromServer, KCDTIdWCDMAIP6DNSAddrFromServer, NULL,
-      R_QTN_SET_DNS_SERVERS_IP,
-      0, 0, 0, NULL, NULL },
-    { EPacketDataIPIP6NameServer1, KCDTIdWCDMAIP6NameServer1, &CheckIPv6ValidityL },
-    { EPacketDataIPIP6NameServer2, KCDTIdWCDMAIP6NameServer2, &CheckIPv6ValidityL },
-    { EPacketDataIPAddrLeaseValidFrom, KCDTIdWCDMAIPAddrLeaseValidFrom, NULL },
-    { EPacketDataIPAddrLeaseValidTo, KCDTIdWCDMAIPAddrLeaseValidTo, NULL },
-    { EPacketDataConfigDaemonManagerName, KCDTIdWCDMAConfigDaemonManagerName, NULL },
-    { EPacketDataConfigDaemonName, KCDTIdWCDMAConfigDaemonName, NULL },
-    { EPacketDataEnableLcpExtension, KCDTIdWCDMAEnableLCPExtensions, NULL },
-    { EPacketDataDisablePlainTextAuth, KCDTIdWCDMADisablePlainTextAuth, NULL,
-      R_QTN_SET_PASSWD_AUT,
-      0, 0, 0, NULL, NULL },
-    { EPacketDataApType, KCDTIdAPType, NULL },
-    { EPacketDataQoSWarningTimeOut, KCDTIdQOSWarningTimeOut, NULL },
-    { EPacketDataServiceEnableLLMNR, KCDTIdServiceEnableLlmnr, NULL },
-    { 0, 0, NULL }
-};
-
-static const TCmAttribConvTable SQoSDataConvTbl[] =
-    {
-    // iAttribId, iCommsDatId, iValidFuncL, 
-    // iTitleId, 
-    // iMaxLength, iAttribFlags, iDefValueResId, iEditorResId, iNotUsed1, iNotUsed2
-    { EGPRSReqTrafficClass, EPacketDataRangeMax, NULL },
-    { EGPRSReqTrafficClass, KCDTIdWCDMAReqTrafficClass, NULL },
-    { EGPRSMinTrafficClass, KCDTIdWCDMAMinTrafficClass, NULL },
-    { EGPRSReqDeliveryOrder, KCDTIdWCDMAReqDeliveryOrder, NULL },
-    { GPRSMinDeliveryOrder, KCDTIdWCDMAMinDeliveryOrder, NULL },
-    { EGPRSReqDeliverErroneousSDU, KCDTIdWCDMAReqDeliverErroneousSDU, NULL },
-    { EGPRSMinDeliverErroneousSDU, KCDTIdWCDMAMinDeliverErroneousSDU, NULL },
-    { EGPRSReqMaxSDUSize, KCDTIdWCDMAReqMaxSDUSize, NULL },
-    { EGPRSMinAcceptableMaxSDUSize, KCDTIdWCDMAMinAcceptableMaxSDUSize, NULL },
-    { EGPRSReqMaxUplinkRate, KCDTIdWCDMAReqMaxUplinkRate, NULL },
-    { EGPRSReqMinUplinkRate, KCDTIdWCDMAReqMinUplinkRate, NULL },
-    { EGPRSReqMaxDownlinkRate, KCDTIdWCDMAReqMaxDownlinkRate, NULL },
-    { EGPRSReqMinDownlinkRate, KCDTIdWCDMAReqMinDownlinkRate, NULL },
-    { EGPRSReqBER, KCDTIdWCDMAReqBER, NULL },
-    { EGPRSMaxBER, KCDTIdWCDMAMaxBER, NULL },
-    { EGPRSReqSDUErrorRatio, KCDTIdWCDMAReqSDUErrorRatio, NULL },
-    { EGPRSMaxSDUErrorRatio, KCDTIdWCDMAMaxSDUErrorRatio, NULL },
-    { EGPRSReqTrafficHandlingPriority, KCDTIdWCDMAReqTrafficHandlingPriority, NULL },
-    { EGPRSMinTrafficHandlingPriority, KCDTIdWCDMAMinTrafficHandlingPriority, NULL },
-    { EGPRSReqTransferDelay, KCDTIdWCDMAReqTransferDelay, NULL },
-    { EGPRSMaxTransferDelay, KCDTIdWCDMAMaxTransferDelay, NULL },
-    { EGPRSReqGuaranteedUplinkRate, KCDTIdWCDMAReqGuaranteedUplinkRate, NULL },
-    { EGPRSMinGuaranteedUplinkRate, KCDTIdWCDMAMinGuaranteedUplinkRate, NULL },
-    { EGPRSReqGuaranteedDownlinkRate, KCDTIdWCDMAReqGuaranteedDownlinkRate, NULL },
-    { EGPRSMinGuaranteedDownlinkRate, KCDTIdWCDMAMinGuaranteedDownlinkRate, NULL },
-    { EGPRSSignallingIndication, KCDTIdWCDMASignallingIndication, NULL },
-    { EGPRS_ImCnSignallingIndication, KCDTIdWCDMAImCmSignallingIndication, NULL },
-    { EGPRSSourceStatisticsDescriptor, KCDTIdWCDMASourceStatisticsDescriptor, NULL },
-    { 0, 0, NULL }
-    };
-
-static const TCmCommonAttrConvArrayItem SCommonConvTbl[] =
-{
-    { EPacketDataIFParams, ECmIFParams },
-    { EPacketDataIFNetworks, ECmIFNetworks },
-    { EPacketDataIFPromptForAuth, ECmIFPromptForAuth },
-    { EPacketDataIFAuthName, ECmIFAuthName },
-    { EPacketDataIFAuthPass, ECmIFAuthPass },
-    { EPacketDataIFAuthRetries, ECmIFAuthRetries },
-    { EPacketDataIPNetmask, ECmIPNetmask },
-    { EPacketDataIPGateway, ECmIPGateway },
-    { EPacketDataIPAddrFromServer, ECmIPAddFromServer },
-    { EPacketDataIPAddr, ECmIPAddress },
-    { EPacketDataIPDNSAddrFromServer, ECmIPDNSAddrFromServer },
-    { EPacketDataIPNameServer1, ECmIPNameServer1 },
-    { EPacketDataIPNameServer2, ECmIPNameServer2 },
-    { EPacketDataIPIP6DNSAddrFromServer, ECmIP6DNSAddrFromServer },
-    { EPacketDataIPIP6NameServer1, ECmIP6NameServer1 },
-    { EPacketDataIPIP6NameServer2, ECmIP6NameServer2 },
-    { EPacketDataIPAddrLeaseValidFrom, ECmIPAddrLeaseValidFrom },
-    { EPacketDataIPAddrLeaseValidTo, ECmIPAddrLeaseValidTo },
-    { EPacketDataConfigDaemonManagerName, ECmConfigDaemonManagerName },
-    { EPacketDataConfigDaemonName, ECmConfigDaemonName },
-    { EPacketDataEnableLcpExtension, ECmEnableLPCExtension },
-    { EPacketDataDisablePlainTextAuth, ECmDisablePlainTextAuth },
-    { 0, 0 }
-    };
-    
-// ======== LOCAL FUNCTIONS ========
-    
-static TBool SetPDPTypeL( CCmPluginBaseEng* aThis, 
-                          TUint32 aAttribute, 
-                          const TAny* aValue )
-    {
-    (void)aAttribute;
-    CCmPluginPacketData* myThis = static_cast<CCmPluginPacketData*>( aThis );
-    
-    myThis->SetPDPTypeL( (RPacketContext::TProtocolType)(TInt)aValue );
-    
-    return ETrue;
-    }
-
-// ======== MEMBER FUNCTIONS ========
-
-class CCmPDCoverageCheck : public CActive
-    {        
-    public:
-    
-        CCmPDCoverageCheck();
-        ~CCmPDCoverageCheck();
-        
-        TBool IsThereCoverageL();
-        
-    protected:  // from CActive
-    
-        virtual void DoCancel();
-        virtual void RunL();
-        
-    private:
-
-        TBool IsPhoneOfflineL() const;     	        
-
-    private:
-
-        TBool                   iCoverage;
-        CActiveSchedulerWait    iWait;    
-        RTelServer              iServer;
-        RPhone                  iPhone;
-        RPacketService          iService;
-        RPacketService::TRegistrationStatus iNwRegStatus;        
-    };
-
-// ----------------------------------------------------------------------------
-// CCmPDCoverageCheck::CCmPDCoverageCheck()
-// ----------------------------------------------------------------------------
-//
-CCmPDCoverageCheck::CCmPDCoverageCheck() : CActive( EPriorityStandard )
-    {
-    CActiveScheduler::Add( this );
-    }
-    
-// ----------------------------------------------------------------------------
-// CCmPDCoverageCheck::~CCmPDCoverageCheck()
-// ----------------------------------------------------------------------------
-//
-CCmPDCoverageCheck::~CCmPDCoverageCheck()
-    {
-    Cancel();
-
-    iService.Close();
-    iPhone.Close();
-    iServer.Close();
-    }
-    
-// ----------------------------------------------------------------------------
-// CCmPDCoverageCheck::DoCancel
-// ----------------------------------------------------------------------------
-//
-void CCmPDCoverageCheck::DoCancel()
-    {
-    iWait.AsyncStop();
-    }
-    
-// ----------------------------------------------------------------------------
-// CCmPDCoverageCheck::RunL
-// ----------------------------------------------------------------------------
-//
-void CCmPDCoverageCheck::RunL()
-    {
-    if( !iStatus.Int() )
-        {
-        CLOG_WRITE_1( "CCmPDCoverageCheck::RunL: iNwRegStatus: [%d]", iNwRegStatus );
-        	
-        if ( iNwRegStatus == RPacketService::ERegisteredOnHomeNetwork ||
-             iNwRegStatus == RPacketService::ERegisteredRoaming ||
-             iNwRegStatus == RPacketService::ENotRegisteredButAvailable )
-            {
-            iCoverage = ETrue;	
-            }	
-        iWait.AsyncStop();
-        }
-    else
-        // something went wrong -> no coverage.
-        {
-        CLOG_WRITE_1( "CCmPDCoverageCheck::RunL: FAILED: [%d]", iStatus.Int() );        	
-        iWait.AsyncStop();
-        }
-    }
-    
-// ----------------------------------------------------------------------------
-// CCmPDCoverageCheck::IsThereCoverageL
-// ----------------------------------------------------------------------------
-//
-TBool CCmPDCoverageCheck::IsThereCoverageL()
-    {
-    iCoverage = EFalse;
-    
-    if ( !IsPhoneOfflineL() )
-        {
-        User::LeaveIfError( iServer.Connect() );
-        CLOG_WRITE( "Server open" );
-    
-        RTelServer::TPhoneInfo info;
-        User::LeaveIfError( iServer.GetPhoneInfo( 0, info ) );
-        CLOG_WRITE( "Phone info ok" );
-    
-        User::LeaveIfError( iPhone.Open(iServer, info.iName ) );
-        CLOG_WRITE( "Phone open" );
-
-        User::LeaveIfError( iService.Open( iPhone ) );
-        CLOG_WRITE( "service ok" );
-
-        iService.GetNtwkRegStatus( iStatus, iNwRegStatus );
-        SetActive();
-        iWait.Start();
-    
-        User::LeaveIfError( iStatus.Int() );  	
-        }
-    
-    return iCoverage;
-    }
-
-// ----------------------------------------------------------------------------
-// CCmPDCoverageCheck::IsPhoneOfflineL
-// ----------------------------------------------------------------------------
-//
-TBool CCmPDCoverageCheck::IsPhoneOfflineL() const
-    {
-    if ( FeatureManager::FeatureSupported( KFeatureIdOfflineMode ) )
-        {
-        CRepository* repository = CRepository::NewLC( KCRUidCoreApplicationUIs );
-        TInt connAllowed( ECoreAppUIsNetworkConnectionAllowed );
-        
-        repository->Get( KCoreAppUIsNetworkConnectionAllowed, connAllowed );
-        CleanupStack::PopAndDestroy( repository );
-        	 
-        if ( !connAllowed )
-            {
-            CLOG_WRITE( "Phone is in offline mode." );
-            return ETrue;
-            }
-        }
-        
-    CLOG_WRITE( "Phone is NOT in offline mode." );
-    return EFalse;
-    }
-    
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::NewOutgoingL
-// ----------------------------------------------------------------------------
-//
-CCmPluginPacketData* CCmPluginPacketData::NewL(
-                                            TCmPluginInitParam* aInitParam )
-	{
-	CCmPluginPacketData* self = new ( ELeave ) CCmPluginPacketData( 
-	                                                    aInitParam, ETrue );
-	CleanupStack::PushL( self );
-	self->ConstructL();
-	CleanupStack::Pop( self );
-	return self;
-	}
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::~CCmPluginPacketData
-// ----------------------------------------------------------------------------
-//
-CCmPluginPacketData::~CCmPluginPacketData()
-	{
-	CCmPluginPacketData::AdditionalReset();	
-	RemoveResourceFile( KPluginPacketDataResDirAndFileName );	
-	CLOG_CLOSE;
-	}
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::CreateInstanceL
-// ----------------------------------------------------------------------------
-//
-CCmPluginBaseEng* CCmPluginPacketData::CreateInstanceL( TCmPluginInitParam& aInitParam ) const
-    {
-    CCmPluginPacketData* self = new( ELeave ) CCmPluginPacketData( &aInitParam, ETrue );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    return self;
-    }
-    
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::CCmPluginPacketData
-// ----------------------------------------------------------------------------
-//
-CCmPluginPacketData::CCmPluginPacketData( TCmPluginInitParam* aInitParam,
-                                          TBool aOutgoing )
-    : CCmPluginBaseEng( aInitParam )
-    , iOutgoing( aOutgoing )
-	{
-	CLOG_CREATE;
-	
-	iBearerType = KUidPacketDataBearerType;
-	}
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::ConstructL
-// ----------------------------------------------------------------------------
-//
-void CCmPluginPacketData::ConstructL()
-	{
-	CCmPluginBaseEng::ConstructL();
-
-    AddResourceFileL( KPluginPacketDataResDirAndFileName );
-	AddConverstionTableL( (CCDRecordBase**)&iServiceRecord, NULL, SPacketDataConvTbl );
-    AddConverstionTableL( (CCDRecordBase**)&iPacketDataQoSRecord, NULL, SQoSDataConvTbl );
-	AddCommonConversionTableL( SCommonConvTbl );
-	}
-	
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::GetIntAttributeL()
-// ----------------------------------------------------------------------------
-//
-TUint32 CCmPluginPacketData::GetIntAttributeL( const TUint32 aAttribute ) const
-	{
-    LOGGER_ENTERFN( "CCmPluginPacketData::GetIntAttributeL" );
-
-    TUint32 retVal( 0 );
-    
-    switch( aAttribute )
-        {
-        case ECmBearerIcon:
-            {
-            TAknsItemID id;
-            MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-                   
-            TParse mbmFile;
-            User::LeaveIfError( mbmFile.Set( KPacketDataFileIcons, 
-                                                    &KDC_BITMAP_DIR, NULL ) );
-
-                   
-            retVal = (TUint32)AknsUtils::CreateGulIconL( 
-                                    skinInstance, 
-                                    id,
-                                    mbmFile.FullName(), 
-                                    EMbmCmpluginpacketdataQgn_prop_wml_gprs, 
-                                    EMbmCmpluginpacketdataQgn_prop_wml_gprs_mask );
-            }
-            break;
-               
-        case ECmBearerAvailableIcon:
-            {
-            TAknsItemID id;
-            MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-                   
-            TParse mbmFile;
-            User::LeaveIfError( mbmFile.Set( KPacketDataFileIcons, &KDC_BITMAP_DIR, NULL ) );
-                   
-            retVal = (TUint32)AknsUtils::CreateGulIconL( 
-                    skinInstance, 
-                    id,
-                    mbmFile.FullName(), 
-                    EMbmCmpluginpacketdataQgn_prop_set_conn_bearer_avail_packetdata, 
-                    EMbmCmpluginpacketdataQgn_prop_set_conn_bearer_avail_packetdata_mask );
-            }
-            break;
-            
-        case ECmCommsDBBearerType:
-            {
-            retVal = KCommDbBearerWcdma;
-            }
-            break;
-            
-        case ECmDefaultUiPriority:
-        case ECmDefaultPriority:
-            {
-            TPtrC buf;
-            
-            if( iOutgoing )
-                {
-                buf.Set( KCDTypeNameOutgoingWCDMA );
-                }
-            else
-                {
-                buf.Set( KCDTypeNameIncomingWCDMA );
-                }
-
-            retVal = aAttribute == ECmDefaultPriority ?
-                     GlobalBearerPriority( buf ) :
-                     GlobalUiBearerPriority( buf );
-            
-            if( retVal == KDataMobilitySelectionPolicyPriorityWildCard )
-                {
-                retVal = KDefaultPriorityPacketData;
-                }
-            }
-            break;
-            
-        default:
-            {
-            retVal = CCmPluginBaseEng::GetIntAttributeL( aAttribute );
-            }
-            break;
-        }
-        
-    return retVal;
-	}
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::GetBoolAttributeL()
-// ----------------------------------------------------------------------------
-//
-TBool CCmPluginPacketData::GetBoolAttributeL( const TUint32 aAttribute ) const
-	{
-    LOGGER_ENTERFN( "CCmPluginPacketData::GetBoolAttributeL" );
-
-    TBool retVal( EFalse );
-
-    switch( aAttribute )
-        {
-        case EPacketDataOutGoing:
-            {
-            retVal = iOutgoing;
-            }
-            break;
-            
-        case ECmCoverage:
-            // In default the plugin has no network coverage
-            {
-            retVal = CheckNetworkCoverageL();
-            }
-            break;
-            
-        case ECmAddToAvailableList:
-            {
-            retVal = ETrue;
-            }
-            break;
-            
-        case ECmBearerHasUi:
-            {
-            retVal = ETrue;
-            }
-            break;
-            
-        default:
-            {
-            retVal = CCmPluginBaseEng::GetBoolAttributeL( aAttribute );
-            }
-        }
-        
-    return retVal;
-	}
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::GetStringAttributeL()
-// ----------------------------------------------------------------------------
-//
-HBufC* CCmPluginPacketData::GetStringAttributeL( const TUint32 aAttribute ) const
-	{
-    LOGGER_ENTERFN( "CCmPluginPacketData::GetStringAttributeL" );
-
-	HBufC* retVal = NULL;
-	
-	switch( aAttribute )
-	    {
-	    case ECmBearerAvailableName:
-	        {
-	        retVal = AllocReadL( R_QTN_NETW_CONSET_BEARER_AVAILABLE_PACKET_DATA );
-	        }
-	        break;
-	        
-	    case ECmBearerSupportedName:
-	        {
-	        retVal = AllocReadL( R_QTN_NETW_CONSET_BEARER_SUPPORTED_PACKET_DATA );
-	        }
-	        break;
-	        
-        case ECmBearerAvailableText:
-            {
-            retVal = AllocReadL( R_QTN_NETW_CONSET_PACKET_DATA_AVAILABLE );
-            }
-            break;
-            
-	    case ECmBearerNamePopupNote:
-	        {
-	        retVal = AllocReadL( R_QTN_NETW_CONSET_POPUP_BEARER_PACKET_DATA );
-	        }
-	        break;
-
-	    case ECmBearerSettingName:
-	        {
-	        retVal = AllocReadL( R_QTN_SET_BEARER_PACKET_DATA );
-	        }
-	        break;
-	        
-	    default:
-	        {
-	        retVal = CCmPluginBaseEng::GetStringAttributeL( aAttribute );
-	        }
-	        break;
-	    }
-	    
-    return retVal;
-	}
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::SetIntAttributeL()
-// ----------------------------------------------------------------------------
-//
-void CCmPluginPacketData::SetIntAttributeL( const TUint32 aAttribute, 
-                                            TUint32 aValue )
-	{
-    LOGGER_ENTERFN( "CCmPluginPacketData::SetIntAttributeL" );
-
-    switch( aAttribute )
-        {
-        default:
-            {
-            CCmPluginBaseEng::SetIntAttributeL( aAttribute, aValue );
-            }
-        }
-	}
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::SetBoolAttributeL()
-// ----------------------------------------------------------------------------
-//
-void CCmPluginPacketData::SetBoolAttributeL( const TUint32 aAttribute, 
-                                             TBool aValue )
-	{
-    LOGGER_ENTERFN( "CCmPluginPacketData::SetBoolAttributeL" );
-
-    switch( aAttribute )
-        {
-        case EPacketDataOutGoing:
-            {
-            iOutgoing = aValue;
-            CreateNewServiceRecordL();
-            }
-            break;
-        
-        default:
-            {
-            CCmPluginBaseEng::SetBoolAttributeL( aAttribute, aValue );
-            }
-        }
-	}
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::SetStringAttributeL()
-// ----------------------------------------------------------------------------
-//
-void CCmPluginPacketData::SetStringAttributeL( const TUint32 aAttribute, 
-                                               const TDesC16& aValue )
-	{
-    LOGGER_ENTERFN( "CCmPluginPacketData::SetStringAttributeL" );
-
-    switch( aAttribute )
-        {
-        default:
-            {
-            CCmPluginBaseEng::SetStringAttributeL( aAttribute, aValue );
-            }
-        }
-	}
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::PrepareToUpdateRecordsL()
-// ----------------------------------------------------------------------------
-//
-void CCmPluginPacketData::PrepareToUpdateRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::PrepareToUpdateRecordsL" );
-
-    CheckDNSServerAddressL( ETrue, 
-                            ServiceRecord().iGPRSIP6NameServer1,
-                            ServiceRecord().iGPRSIP6NameServer2,
-                            ServiceRecord().iGPRSIP6DNSAddrFromServer );
-                            
-    CheckDNSServerAddressL( EFalse,
-                            ServiceRecord().iGPRSIPNameServer1,
-                            ServiceRecord().iGPRSIPNameServer2,
-                            ServiceRecord().iGPRSIPDNSAddrFromServer );
-    SetDaemonNameL();
-    }
-    
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::CanHandleIapIdL()
-// ----------------------------------------------------------------------------
-//
-TBool CCmPluginPacketData::CanHandleIapIdL( TUint32 aIapId ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::CanHandleIapIdL1" );
-    CLOG_WRITE_1( "IapId: [%d]", aIapId );
-    
-    TBool retVal( EFalse );
-    
-    CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord *>
-                            (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
-        
-    CleanupStack::PushL( iapRecord );
-    iapRecord->SetRecordId( aIapId );
-    
-    TRAPD( err, iapRecord->LoadL( Session() ));
-
-    if( !err )
-        {
-        CanHandleIapIdL( iapRecord );
-        }
-    
-    CleanupStack::PopAndDestroy( iapRecord );
-    return retVal;
-    }
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::CanHandleIapIdL()
-// ----------------------------------------------------------------------------
-//
-TBool CCmPluginPacketData::CanHandleIapIdL( CCDIAPRecord *aIapRecord ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::CanHandleIapIdL2" );
-    CLOG_WRITE_1( "IapId: [%d]", aIapRecord->RecordId() );
-    
-    TBool retVal( EFalse );
-    
-    CLOG_WRITE_2( "IAP record: [%S][%S]",
-                    &FIELD_TO_TDESC(aIapRecord->iServiceType), 
-                    &FIELD_TO_TDESC(aIapRecord->iBearerType)
-                );
-    
-    if( (TPtrC(aIapRecord->iServiceType) == TPtrC(KCDTypeNameOutgoingWCDMA) ||
-        TPtrC(aIapRecord->iServiceType) == TPtrC(KCDTypeNameIncomingWCDMA)) &&
-        TPtrC(aIapRecord->iBearerType) == TPtrC(KCDTypeNameModemBearer) )
-        {
-        CLOG_WRITE( "I can." );
-        retVal = ETrue;
-        }
-
-    return retVal;
-    }
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::RunSettingsL()
-// ----------------------------------------------------------------------------
-//        
-TInt CCmPluginPacketData::RunSettingsL()
-	{
-    CmPluginPacketDataSettingsDlg* settingsDlg = 
-                                CmPluginPacketDataSettingsDlg::NewL( *this );
-    return settingsDlg->ConstructAndRunLD( );       
-    }        
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::LoadServiceSettingL()
-// ----------------------------------------------------------------------------
-//        
-void CCmPluginPacketData::LoadServiceSettingL()
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::LoadServiceSettingL" );
-    
-    if( TPtrC(KCDTypeNameOutgoingWCDMA) == iIapRecord->iServiceType  )
-        {
-        iServiceRecord = static_cast<CCDServiceRecordBase *>
-                    (CCDRecordBase::RecordFactoryL(KCDTIdOutgoingGprsRecord));
-        iOutgoing = ETrue;
-        }
-    else if( TPtrC(KCDTypeNameIncomingWCDMA) == iIapRecord->iServiceType )
-        {
-        iServiceRecord = static_cast<CCDServiceRecordBase *>
-                    (CCDRecordBase::RecordFactoryL(KCDTIdIncomingGprsRecord));
-        iOutgoing = EFalse;
-        }
-    else
-        // this IAP service is not supported by this plugin.
-        {
-        User::Leave( KErrNotSupported );
-        }
-
-    CCmPluginBaseEng::LoadServiceSettingL();
-
-    CLOG_WRITE_1( "APName: [%S]", &FIELD_TO_TDESC( ServiceRecord().iGPRSAPN ) );
-    }
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::InitializeWithUiL()
-// ----------------------------------------------------------------------------
-//        
-TBool CCmPluginPacketData::InitializeWithUiL( TBool /*aManuallyConfigure*/ )
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::InitializeWithUiL" );    
-    TBool retval = ETrue;   // meaning that everything was fine.
-
-    // Add resource file for the duration of this method only.
-    TParse parser;
-    User::LeaveIfError( parser.Set( KPluginPacketDataResDirAndFileName, 
-                                    &KDC_RESOURCE_FILES_DIR, 
-                                    NULL ) );
-
-    TFileName resourceFileNameBuf = parser.FullName();
-
-    RConeResourceLoader resLoader( *CEikonEnv::Static() ) ;
-    resLoader.OpenL( resourceFileNameBuf );
-    CleanupClosePushL( resLoader );
-
-    // Show dialog
-    TBuf<KMaxGprsApNameLength> buf;
-    CAknTextQueryDialog* dlg = new (ELeave) CAknTextQueryDialog( buf );
-
-    // Must use PrepareLC instead of ExecuteLD in order for
-    // MakeLeftSoftkeyVisible() call to work.
-    dlg->PrepareLC( R_APN_NAME_QUERY );
-
-    dlg->SetMaxLength( KMaxGprsApNameLength );
-    dlg->MakeLeftSoftkeyVisible( ETrue );   // Empty input accepted.
-
-    HBufC* prompt = StringLoader::LoadLC( R_GPRS_PLUGIN_APN_PROMPT );
-    dlg->SetPromptL( *prompt );
-    CleanupStack::PopAndDestroy( prompt );
-
-    // Strange, but true: RunLD returns 0 (instead of the actual command id)
-    // if Cancel button was pressed, thus we have to check against zero here.
-    if ( dlg->RunLD() )
-        {
-        // Change APN attribute in connection method
-        SetStringAttributeL( EPacketDataAPName, buf );
-        
-        if( buf.Length() )
-            {
-            SetStringAttributeL( ECmName, buf );
-            }
-        }
-    else
-        {
-        retval = EFalse;    // indicating cancellation.
-        }
-
-    // Clean-up
-    CleanupStack::PopAndDestroy( &resLoader );
-
-    return retval;
-    }
-
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::ServiceRecord()
-// ----------------------------------------------------------------------------
-//        
-CCDWCDMAPacketServiceRecord& CCmPluginPacketData::ServiceRecord() const
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::ServiceRecord" );
-
-    return *static_cast<CCDWCDMAPacketServiceRecord*>(iServiceRecord);
-    }
-    
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::CreateNewServiceRecordL()
-// ----------------------------------------------------------------------------
-//        
-void CCmPluginPacketData::CreateNewServiceRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::CreateNewServiceRecordL" );
-
-    delete iServiceRecord; iServiceRecord = NULL;
-    
-    if( iOutgoing )
-        {
-        iServiceRecord = static_cast<CCDServiceRecordBase *>
-                    (CCDRecordBase::RecordFactoryL(KCDTIdOutgoingGprsRecord));
-        }
-    else
-        {
-        iServiceRecord = static_cast<CCDServiceRecordBase *>
-                    (CCDRecordBase::RecordFactoryL(KCDTIdIncomingGprsRecord));
-        }
-
-    ServiceRecord().iGPRSAPN.SetL( KNullDesC );
-    ServiceRecord().iGPRSPDPType.SetL( RPacketContext::EPdpTypeIPv4 );
-    ServiceRecord().iGPRSReqPrecedence = 0;
-	ServiceRecord().iGPRSReqDelay = 0;
-	ServiceRecord().iGPRSReqReliability = 0;
-	ServiceRecord().iGPRSReqPeakThroughput = 0;
-	ServiceRecord().iGPRSReqMeanThroughput = 0;
-	ServiceRecord().iGPRSMinPrecedence = 0;
-	ServiceRecord().iGPRSMinDelay = 0;
-	ServiceRecord().iGPRSMinReliability = 0;
-	ServiceRecord().iGPRSMinPeakThroughput = 0;
-	ServiceRecord().iGPRSMinMeanThroughput = 0;
-	ServiceRecord().iGPRSDataCompression = 0;
-	ServiceRecord().iGPRSHeaderCompression = 0;
-	ServiceRecord().iGPRSAnonymousAccess = 0;
-    ServiceRecord().iGPRSIfNetworks.SetL( KDefIspIfNetworksIPv4 );
-    ServiceRecord().iGPRSIfPromptForAuth = EFalse;
-    ServiceRecord().iGPRSIfAuthRetries = 0;
-    ServiceRecord().iGPRSIPGateway.SetL( KUnspecifiedIPv4 );
-    ServiceRecord().iGPRSIPAddrFromServer = ETrue;
-    ServiceRecord().iGPRSIPAddr.SetL( KUnspecifiedIPv4 );
-    ServiceRecord().iGPRSIPDNSAddrFromServer = ETrue;
-    ServiceRecord().iGPRSIPNameServer1.SetL( KUnspecifiedIPv4 );
-    ServiceRecord().iGPRSIPNameServer2.SetL( KUnspecifiedIPv4 );
-    ServiceRecord().iGPRSIP6DNSAddrFromServer = ETrue;
-    ServiceRecord().iGPRSIP6NameServer1.SetL( KDynamicIpv6Address );
-    ServiceRecord().iGPRSIP6NameServer2.SetL( KDynamicIpv6Address );
-    ServiceRecord().iGPRSEnableLCPExtension = EFalse;
-    ServiceRecord().iGPRSDisablePlainTextAuth = ETrue;
-    ServiceRecord().iGPRSAPType = EPacketDataBoth;
-    ServiceRecord().iGPRSQOSWarningTimeOut = TUint32(-1);
-    }
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::ServiceRecordIdLC
-// ----------------------------------------------------------------------------
-//
-void CCmPluginPacketData::ServiceRecordIdLC( HBufC* &aName, 
-                                             TUint32& aRecordId )
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::ServiceRecordIdLC" );
-
-    if( iOutgoing )
-        {
-        aName = TPtrC( KCDTypeNameOutgoingWCDMA ).AllocLC();
-        }
-    else
-        {
-        aName = TPtrC( KCDTypeNameIncomingWCDMA ).AllocLC();
-        }
-        
-    aRecordId = iServiceRecord->RecordId();
-    }
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::BearerRecordIdLC()
-// ----------------------------------------------------------------------------
-//        
-void CCmPluginPacketData::BearerRecordIdLC( HBufC* &aBearerName, 
-                                            TUint32& aRecordId )
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::BearerRecordIdLC" );
-
-	CMDBRecordSet<CCDModemBearerRecord>* bearerRS = 
-	        new(ELeave) CMDBRecordSet<CCDModemBearerRecord>(KCDTIdModemBearerRecord);
-	CleanupStack::PushL( bearerRS );
-    
-    CCDModemBearerRecord* bearerRecord = static_cast<CCDModemBearerRecord *>
-                            (CCDRecordBase::RecordFactoryL(KCDTIdModemBearerRecord));
-                                    
-    CleanupStack::PushL( bearerRecord );
-    
-    bearerRecord->iRecordName.SetL( KModemBearerPacketData );
-    bearerRS->iRecords.AppendL( bearerRecord );
-    CleanupStack::Pop( bearerRecord );
-    
-    if( bearerRS->FindL( Session() ) )
-        {
-        CLOG_WRITE_1( "Bearers: [%d]", bearerRS->iRecords.Count() );
-
-        bearerRecord = static_cast<CCDModemBearerRecord*>(bearerRS->iRecords[0]);
-        aRecordId = bearerRecord->RecordId();
-        }
-    else
-        // bearer not found -> create dummy values
-        {
-        CLOG_WRITE( "No bearer record found" );
-
-        bearerRecord->SetRecordId( KCDNewRecordRequest );
-        bearerRecord->StoreL( Session() );
-        
-        aRecordId = bearerRecord->RecordId();
-        }
-
-    CleanupStack::PopAndDestroy( bearerRS );
-
-    aBearerName = TPtrC(KCDTypeNameModemBearer).AllocLC();
-    }
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::CheckNetworkCoverageL()
-// ----------------------------------------------------------------------------
-//        
-TBool CCmPluginPacketData::CheckNetworkCoverageL() const
-    {
-    LOGGER_ENTERFN("CCmPluginPacketData::CheckNetworkCoverageL");
-    
-    TBool retVal( EFalse );
-    
-#ifdef __WINS__
-    retVal = ETrue;
-#else
-    CCmPDCoverageCheck* coverage = new (ELeave) CCmPDCoverageCheck;
-    CleanupStack::PushL( coverage );
-    
-    retVal = coverage->IsThereCoverageL();
-    
-    CleanupStack::PopAndDestroy( coverage );
-    
-#endif  // __WINS
-    return retVal;
-    }
-
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::SetPDPTypeL()
-// ----------------------------------------------------------------------------
-//        
-void CCmPluginPacketData::SetPDPTypeL( RPacketContext::TProtocolType aPdpType )
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::SetPDPTypeL" );
-
-    if( aPdpType != RPacketContext::EPdpTypeIPv4 &&
-        aPdpType != RPacketContext::EPdpTypeIPv6 )
-        {
-        User::Leave( KErrArgument );
-        }
-        
-    if( FeatureSupported( KFeatureIdIPv6 ) && aPdpType == 
-        RPacketContext::EPdpTypeIPv6 )
-        {
-        ServiceRecord().iGPRSPDPType = RPacketContext::EPdpTypeIPv6;
-        ServiceRecord().iGPRSIfNetworks.SetL( KDefIspIfNetworksIPv6 );
-        }
-    else
-        {
-        if( aPdpType == RPacketContext::EPdpTypeIPv6 )
-            {
-            User::Leave( KErrNotSupported );
-            }
-            
-        ServiceRecord().iGPRSIfNetworks.SetL( KDefIspIfNetworksIPv4 );
-        ServiceRecord().iGPRSPDPType = RPacketContext::EPdpTypeIPv4;
-        }
-    }
-    
-// ----------------------------------------------------------------------------
-// CCmPluginPacketData::AdditionalReset()
-// ----------------------------------------------------------------------------
-//        
-void CCmPluginPacketData::AdditionalReset()
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::AdditionalReset" );
-
-    delete iPacketDataQoSRecord;
-    iPacketDataQoSRecord = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginPacketData::PrepareToCopyDataL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginPacketData::PrepareToCopyDataL( CCmPluginBaseEng* aDestInst ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::PrepareToCopyDataL" );
-
-    aDestInst->SetBoolAttributeL( EPacketDataOutGoing, iOutgoing );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCmPluginPacketData::SetDaemonNameL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginPacketData::SetDaemonNameL()
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::SetDaemonNameL" );
-
-    // use DHCP if we can
-    TBool ipfromSrv = GetBoolAttributeL( ECmIPAddFromServer );
-    if ( ipfromSrv )
-        {
-        SetStringAttributeL( ECmConfigDaemonManagerName, 
-                           KDaemonManagerName );
-        SetStringAttributeL( ECmConfigDaemonName, 
-                           KConfigDaemonName );
-        }
-    else
-        {
-        if ( FeatureSupported( KFeatureIdIPv6 ) )
-            {
-            SetStringAttributeL( ECmConfigDaemonManagerName, 
-                               KDaemonManagerName );
-            SetStringAttributeL( ECmConfigDaemonName, 
-                               KConfigDaemonName );
-            }
-        else
-            {
-            SetStringAttributeL( ECmConfigDaemonManagerName, 
-                               KNullDesC() );
-            SetStringAttributeL( ECmConfigDaemonName, 
-                               KNullDesC() );
-            }
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCmPluginPacketData::CreateAdditionalRecordsL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginPacketData::CreateAdditionalRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::CreateAdditionalRecordsL" );
-
-    delete iPacketDataQoSRecord;
-    iPacketDataQoSRecord = NULL;
-
-    iPacketDataQoSRecord = static_cast<CCDUmtsR99QoSAndOnTableRecord *>
-                           (CCDRecordBase::RecordFactoryL(KCDTIdUmtsR99QoSAndOnTableRecord));
-
-    iPacketDataQoSRecord->iGPRSReqTrafficClass = RPacketQoS::ETrafficClassUnspecified;
-    iPacketDataQoSRecord->iGPRSMinTrafficClass = RPacketQoS::ETrafficClassUnspecified;
-    iPacketDataQoSRecord->iGPRSReqDeliveryOrder = RPacketQoS::EDeliveryOrderUnspecified;
-    iPacketDataQoSRecord->iGPRSMinDeliveryOrder = RPacketQoS::EDeliveryOrderUnspecified;
-    iPacketDataQoSRecord->iGPRSReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified;
-    iPacketDataQoSRecord->iGPRSMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified;
-    iPacketDataQoSRecord->iGPRSReqMaxSDUSize = 0;
-    iPacketDataQoSRecord->iGPRSMinAcceptableMaxSDUSize = 0;
-    iPacketDataQoSRecord->iGPRSReqMaxUplinkRate = 0;
-    iPacketDataQoSRecord->iGPRSReqMinUplinkRate = 0;
-    iPacketDataQoSRecord->iGPRSReqMaxDownlinkRate = 0;
-    iPacketDataQoSRecord->iGPRSReqMinDownlinkRate = 0;
-    iPacketDataQoSRecord->iGPRSReqBER = RPacketQoS::EBERUnspecified;
-    iPacketDataQoSRecord->iGPRSMaxBER = RPacketQoS::EBERUnspecified;
-    iPacketDataQoSRecord->iGPRSReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified;
-    iPacketDataQoSRecord->iGPRSMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified;
-    iPacketDataQoSRecord->iGPRSReqTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified;
-    iPacketDataQoSRecord->iGPRSMinTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified;
-    iPacketDataQoSRecord->iGPRSReqTransferDelay = 0;
-    iPacketDataQoSRecord->iGPRSMaxTransferDelay = 0;
-    iPacketDataQoSRecord->iGPRSReqGuaranteedUplinkRate = 0;
-    iPacketDataQoSRecord->iGPRSMinGuaranteedUplinkRate = 0;
-    iPacketDataQoSRecord->iGPRSReqGuaranteedDownlinkRate = 0;
-    iPacketDataQoSRecord->iGPRSMinGuaranteedDownlinkRate = 0;
-    iPacketDataQoSRecord->iGPRSSignallingIndication = EFalse;
-    iPacketDataQoSRecord->iGPRS_ImCnSignallingIndication = EFalse;
-    iPacketDataQoSRecord->iGPRSSourceStatisticsDescriptor = RPacketQoS::ESourceStatisticsDescriptorUnknown;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginPacketData::DeleteAdditionalRecordsL
-// --------------------------------------------------------------------------
-//
-void CCmPluginPacketData::DeleteAdditionalRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::DeleteAdditionalRecordsL" );    
-
-    // If packet record is common with other packet iaps, do not delete it!
-    if ( !TPtrC(iPacketDataQoSRecord->iRecordName).CompareF( KDefaultQosDataRecordName ) 
-         || !TPtrC(iPacketDataQoSRecord->iRecordName).CompareF( KDefaultQosDataRecordNamewithSpace ) )
-        {
-        return;
-        }
-    
-    iPacketDataQoSRecord->DeleteL( Session() );
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginPacketData::LoadAdditionalRecordsL()
-// --------------------------------------------------------------------------
-//        
-void CCmPluginPacketData::LoadAdditionalRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::LoadAdditionalRecordsL" );
-
-    if ( ServiceRecord().iUmtsR99QoSAndOnTable )
-        {
-        iPacketDataQoSRecord = static_cast<CCDUmtsR99QoSAndOnTableRecord *>
-                           (CCDRecordBase::RecordFactoryL(KCDTIdUmtsR99QoSAndOnTableRecord));
-        
-        iPacketDataQoSRecord->SetRecordId( ServiceRecord().iUmtsR99QoSAndOnTable );
-
-        iPacketDataQoSRecord->LoadL( Session() );
-                
-//        AddConverstionTableL( (CCDRecordBase**)&iPacketDataQoSRecord, NULL, SQoSDataConvTbl );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginPacketData::UpdateAdditionalRecordsL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginPacketData::UpdateAdditionalRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginPacketData::UpdateAdditionalRecordsL" );
-
-    if( !iPacketDataQoSRecord->RecordId() )
-        {
-        iPacketDataQoSRecord->SetRecordId( KCDNewRecordRequest );
-        iPacketDataQoSRecord->StoreL( Session() );
-        }
-    else
-        {
-        iPacketDataQoSRecord->ModifyL( Session() );
-        }
-    // Set service record to point to QoS record if it does not yet
-    if ( !ServiceRecord().iUmtsR99QoSAndOnTable )
-        {
-        ServiceRecord().iUmtsR99QoSAndOnTable = iPacketDataQoSRecord->RecordId();
-        ServiceRecord().ModifyL( Session() );
-        }
-    }
--- a/cmmanager/cmmgr/Plugins/cmpluginpacketdata/src/cmpluginpacketdataproxy.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of packet data Plugin proxy table
-*
-*/
-
-
-#include <e32std.h>
-#include <ecom/implementationproxy.h>
-
-#include "cmpluginpacketdata.h"
-
-// Exported proxy for instantiation method resolution
-// Define the interface UIDs
-const TImplementationProxy ImplementationTable[] = 
-	{
-	IMPLEMENTATION_PROXY_ENTRY( KUidPacketDataBearerType, CCmPluginPacketData::NewL)
-	};
-
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
-	{
-	aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
-
-	return ImplementationTable;
-	}
--- a/cmmanager/cmmgr/Plugins/cmpluginpacketdata/src/cmppacketdatasettingsdlg.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,447 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Dialog for editing packet data settings for a packet data
-*                connection method
-*
-*/
-
-// INCLUDE FILES
-
-// System
-#include <StringLoader.h>
-#include <akntextsettingpage.h>
-#include <cmpacketdataui.rsg>
-#include <cmmanager.rsg>
-#include <csxhelp/cp.hlp.hrh>
-
-// User
-#include "cmlogger.h"
-#include "cmpacketdatacommonconstants.h"
-#include <cmpluginpacketdatadef.h>
-#include "cmppacketdatasettingsdlg.h"
-#include "cmppacketdatasettingsdlgadv.h"
-#include "cmpluginpacketdata.h"
-#include "cmpluginmenucommands.hrh"
-#include <cmcommonconstants.h>
-#include <cmpsettingsconsts.h>
-#include "cmmanagerimpl.h"
-
-using namespace CMManager;
-
-const TUint32 KPlainAuthSelectionItems[] =
-    {
-    R_QTN_SET_PASSWD_AUT_NORMAL,
-    R_QTN_SET_PASSWD_AUT_SECURE,
-    0
-    };
-
-const TUint32 KPromptForAuthSelectionItems[] = 
-    {
-    R_QTN_SET_PROMPT_PASSWD_NO,
-    R_QTN_SET_PROMPT_PASSWD_YES,
-    0
-    };
-
-// ================= MEMBER FUNCTIONS =======================================
-    
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlg::NewL()
-// Two-phase dconstructor, second phase is ConstructAndRunLD
-// --------------------------------------------------------------------------
-//
-CmPluginPacketDataSettingsDlg* CmPluginPacketDataSettingsDlg::NewL( 
-                                            CCmPluginBaseEng& aCmPluginBase )
-	{
-	CmPluginPacketDataSettingsDlg* self = 
-	           new ( ELeave ) CmPluginPacketDataSettingsDlg( aCmPluginBase );
-	return self;
-	}
-	
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlg::CmPluginPacketDataSettingsDlg()
-// --------------------------------------------------------------------------
-//
-CmPluginPacketDataSettingsDlg::CmPluginPacketDataSettingsDlg( 
-                                            CCmPluginBaseEng& aCmPluginBase )
-    : CmPluginBaseSettingsDlg( aCmPluginBase )
-    , iNotifyFromSon( KCmNotifiedNone )
-    {
-    
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlg::UpdateListBoxContentL
-// --------------------------------------------------------------------------
-//
-void CmPluginPacketDataSettingsDlg::UpdateListBoxContentL()
-    {
-    CmPluginBaseSettingsDlg::UpdateListBoxContentL();
-    }
-    
-//---------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlg::ConstructAndRunLD
-// --------------------------------------------------------------------------
-//
-
-TInt CmPluginPacketDataSettingsDlg::ConstructAndRunLD( )
-    {
-    CleanupStack::PushL( this );
-    LoadResourceL( KPluginPacketDataResDirAndFileName );
-    CleanupStack::Pop( this );
-   
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    cmMgr.WatcherRegisterL( this );
-
-    return CmPluginBaseSettingsDlg::ConstructAndRunLD( );
-    }
-
-    
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlg::~CmPluginPacketDataSettingsDlg
-// Destructor
-// --------------------------------------------------------------------------
-//
-CmPluginPacketDataSettingsDlg::~CmPluginPacketDataSettingsDlg()
-    {
-    iResourceReader.Close();
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::RunAdvancedSettingsL
-// --------------------------------------------------------------------------
-//
-void CmPluginPacketDataSettingsDlg::RunAdvancedSettingsL()
-    {
-    CmPluginPacketDataSettingsDlgAdv* advDlg = 
-            CmPluginPacketDataSettingsDlgAdv::NewL( iCmPluginBaseEng );
-    
-    // This view may have to un-register as watcher here
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    cmMgr.WatcherUnRegister();
-    
-    advDlg->RegisterParentView( this );
-    TInt ret = advDlg->ConstructAndRunLD();
-
-    if( iNotifyFromSon == KCmNotifiedNone )
-        {
-        if( ret == KDialogUserExit )
-            {
-            iExitReason = KDialogUserExit;
-            TryExitL( iExitReason );
-            }
-        else
-            {
-            // Re-register as watcher if advanced view comes back or exists normally
-            cmMgr.WatcherRegisterL( this );
-            }
-        }
-    else
-        {
-        HandleCommsDatChangeL();
-        }
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::UpdateListBoxContentBearerSpecificL
-// --------------------------------------------------------------------------
-//
-void CmPluginPacketDataSettingsDlg::UpdateListBoxContentBearerSpecificL( 
-                                                    CDesCArray& aItemArray )
-    {
-    LOGGER_ENTERFN( "CmPluginPacketDataSettingsDlg::UpdateListBoxContentBearerSpecificL" );
-
-    TBool boolSettingVal( EFalse ); // just for helping make code readable
-        
-    // DATA BEARER - only for real bearer types
-    AppendSettingTextsL( aItemArray, ECmBearerSettingName );
-    // AP NAME
-    AppendSettingTextsL( aItemArray, EPacketDataAPName );
-    // USER NAME
-    AppendSettingTextsL( aItemArray, EPacketDataIFAuthName );
-    // PROMPT PASSWORD
-    boolSettingVal = iCmPluginBaseEng.GetBoolAttributeL( 
-                                                EPacketDataIFPromptForAuth );
-    AppendSettingTextsL( aItemArray, EPacketDataIFPromptForAuth,
-                        boolSettingVal ? 
-                                      R_QTN_SET_PROMPT_PASSWD_YES :
-                                      R_QTN_SET_PROMPT_PASSWD_NO );
-    // PASSWORD
-    AppendSettingTextsL( aItemArray, EPacketDataIFAuthPass );
-    // PASSWORD AUTHENTICATION
-    boolSettingVal = iCmPluginBaseEng.GetBoolAttributeL( 
-                                           EPacketDataDisablePlainTextAuth );
-    AppendSettingTextsL( aItemArray,
-                                EPacketDataDisablePlainTextAuth,
-                                boolSettingVal ?
-                                   R_QTN_SET_PASSWD_AUT_SECURE :
-                                   R_QTN_SET_PASSWD_AUT_NORMAL );
-    // HOMEPAGE
-    AppendSettingTextsL( aItemArray, ECmStartPage );
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlg::ChangeBoolSettingL
-// --------------------------------------------------------------------------
-//
-TBool CmPluginPacketDataSettingsDlg::ChangeBoolSettingL( TUint32 aAttribute, 
-                                                         TInt aCommandId )
-    {
-    LOGGER_ENTERFN( "CmPluginPacketDataSettingsDlg::ChangeBoolSettingL" );
-
-    if ( aCommandId == EPluginBaseCmdChange )
-        {
-        const TUint32* items = NULL;
-        TInt titleResId(0);
-        
-        // Add the list items
-        switch ( aAttribute )
-            {
-            case EPacketDataDisablePlainTextAuth:
-                {
-                titleResId = R_QTN_SET_PASSWD_AUT;
-                items = KPlainAuthSelectionItems;
-                break;
-                }
-            case EPacketDataIFPromptForAuth:
-                {
-                titleResId = R_QTN_SET_PROMPT_PASSWD;
-                items = KPromptForAuthSelectionItems;
-                break;
-                }
-            default:
-                {
-                User::Leave( KErrNotSupported );
-                }
-            }
-        
-        TInt selected = iCmPluginBaseEng.GetBoolAttributeL( aAttribute );
-        TInt originalValue = selected;        
-        if ( ShowRadioButtonSettingPageL( items, 
-                                          selected,
-                                          titleResId ) && 
-                                          originalValue != selected )
-             {
-             iCmPluginBaseEng.SetBoolAttributeL( aAttribute, selected );
-             UpdateListBoxContentL();             
-             }
-
-        return selected;
-        }
-    else        
-        {
-        TBool boolFromCM = boolFromCM = 
-                            iCmPluginBaseEng.GetBoolAttributeL( aAttribute );
-        iCmPluginBaseEng.SetBoolAttributeL( aAttribute, !boolFromCM );
-        UpdateListBoxContentL();
-        return !boolFromCM;
-        }
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlg::ShowPopupSettingPageL
-// --------------------------------------------------------------------------
-//
-TBool CmPluginPacketDataSettingsDlg::ShowPopupSettingPageL( 
-                                           TUint32 aAttribute, TInt aCommandId )
-    {
-    LOGGER_ENTERFN( "CmPluginPacketDataSettingsDlg::ShowPopupSettingPageL" );
-
-    TBool retval = EFalse;
-    switch ( aAttribute )
-        {
-        case EPacketDataIFAuthPass:
-            {
-            retval = ShowPopupPasswordSettingPageL( aAttribute );
-            break;
-            }
-        case EPacketDataDisablePlainTextAuth:            
-        case EPacketDataIFPromptForAuth:
-            {
-            ChangeBoolSettingL( aAttribute, aCommandId );
-            break;
-            } 
-        default:
-            {
-            CmPluginBaseSettingsDlg::ShowPopupSettingPageL( aAttribute, 
-                                                            aCommandId );
-            break;            
-            }
-        }
-    return retval;
-    }
-    
-
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlg::ProcessCommandL
-// --------------------------------------------------------------------------
-//
-void CmPluginPacketDataSettingsDlg::ProcessCommandL( TInt aCommandId )
-    {
-    LOGGER_ENTERFN( "CmPluginPacketDataSettingsDlg::ProcessCommandL" );
-
-    if ( MenuShowing() )
-        {
-        HideMenu();
-        }
-
-    switch ( aCommandId )
-        {
-        case EPluginBaseCmdAdvanced:
-            {
-            RunAdvancedSettingsL();
-            break;
-            }
-        case EPluginBaseCmdChange: // flow to EAknSoftkeyOk
-        case EAknSoftkeyOk:
-            {
-            TInt attrib = iSettingIndex->At( iListbox->CurrentItemIndex() );
-            ShowPopupSettingPageL( attrib, aCommandId );            
-            break;
-            }         
-        default:
-            {
-            CmPluginBaseSettingsDlg::ProcessCommandL( aCommandId );
-            break;            
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlg::OkToExitL
-// --------------------------------------------------------------------------
-//
-TBool CmPluginPacketDataSettingsDlg::OkToExitL( TInt aButtonId )
-    {
-    TBool retval( EFalse );
-    
-    switch ( aButtonId )
-        {
-        case EPluginBaseCmdExit:
-        case EAknSoftkeyBack:
-            {
-            CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-            cmMgr.WatcherUnRegister();
-            }
-        default:
-            {
-            retval = CmPluginBaseSettingsDlg::OkToExitL( aButtonId );
-            break;
-            }
-        }
-    
-    return retval;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlg::GetHelpContext
-// --------------------------------------------------------------------------
-//
-    
-void CmPluginPacketDataSettingsDlg::GetHelpContext( TCoeHelpContext& aContext ) const
-    {
-    LOGGER_ENTERFN( "CmPluginPacketDataSettingsDlg::GetHelpContext" );
-
-    aContext.iMajor = KHelpUidPlugin;
-    aContext.iContext = KSET_HLP_AP_SETTING_GPRS;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlg::CommsDatChangesL
-// --------------------------------------------------------------------------
-//
-void CmPluginPacketDataSettingsDlg::CommsDatChangesL()
-    {
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    CCmDestinationImpl* parentDest = iCmPluginBaseEng.ParentDestination();
-
-    if ( parentDest )
-        {
-        if( !cmMgr.DestinationStillExistedL( parentDest ) )
-            {
-            cmMgr.WatcherUnRegister();
-            // If parent destination diappears with some reason 
-            // then the view must exit back to main view for it
-            // may be danger if going back to parent view
-            iExitReason = KDialogUserExit;
-            TryExitL( iExitReason );
-            
-            cmMgr.RemoveDestFromPool( parentDest );
-            delete parentDest;
-            return;
-            }
-        
-        if( !cmMgr.IsIapStillInDestL( parentDest, iCmPluginBaseEng ) )
-            {
-            cmMgr.WatcherUnRegister();
-            // In this case, the view can go back to the parent view
-            TryExitL( iExitReason );
-            
-            cmMgr.RemoveDestFromPool( parentDest );
-            delete parentDest;
-            return;            
-            }
-        
-        // We may have to go back to parent view even though this Iap is still in CommsDat
-        // for cmMgr ( = iCmPluginBaseEng.CmMgr() ) can not be accessed any more
-        // after this call when some Iap is deleted.
-        cmMgr.WatcherUnRegister();
-        TryExitL( iExitReason );
-        
-        cmMgr.RemoveDestFromPool( parentDest );
-        delete parentDest;
-        }
-    else
-        {
-        if( !cmMgr.IapStillExistedL( iCmPluginBaseEng ) )
-            {
-            cmMgr.WatcherUnRegister();
-            // In this case, the dialog can go back to the parent view
-            TryExitL( iExitReason );
-            return;
-            }
-        
-        // We may have to go back to parent view even though this Iap is still in CommsDat
-        // for cmMgr ( = iCmPluginBaseEng.CmMgr() ) can not be accessed any more
-        // after this call when some Iap is deleted.
-        cmMgr.WatcherUnRegister();
-        TryExitL( iExitReason );
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlg::NotifyParentView
-// --------------------------------------------------------------------------
-//
-void CmPluginPacketDataSettingsDlg::NotifyParentView( TInt aValue )
-    {
-    iNotifyFromSon = aValue;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlg::HandleCommsDatChangeL
-// --------------------------------------------------------------------------
-//
-void CmPluginPacketDataSettingsDlg::HandleCommsDatChangeL()
-    {    
-    if( iNotifyFromSon == KCmNotifiedIapIsNotInThisDestination || 
-            iNotifyFromSon == KCmNotifiedIapDisappear )
-        {
-        TryExitL( iExitReason );
-        }
-    else if( iNotifyFromSon == KCmNotifiedDestinationDisappear )
-        {
-        iExitReason = KDialogUserExit;
-        TryExitL( iExitReason );
-        }
-    }
--- a/cmmanager/cmmgr/Plugins/cmpluginpacketdata/src/cmppacketdatasettingsdlgadv.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,493 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Dialog for setting packet data plugin advanced settings
-*
-*/
-
-// INCLUDE FILES
-
-#include <cmpacketdataui.rsg>
-#include <cmmanager.rsg>
-#include <StringLoader.h>
-#include <akntextsettingpage.h>
-#include <aknradiobuttonsettingpage.h>
-#include <aknmfnesettingpage.h>
-#include <csxhelp/cp.hlp.hrh>
-
-#include <cmpluginpacketdatadef.h>
-#include "cmppacketdatasettingsdlgadv.h"
-#include "cmpacketdatacommonconstants.h"
-#include "cmpluginmultilinedialog.h"
-#include <cmcommonui.h>
-#include "cmpluginmenucommands.hrh"
-#include "cmpluginpacketdata.h"
-#include <cmcommonconstants.h>
-#include <cmpsettingsconsts.h>
-#include "cmmanagerimpl.h"
-
-using namespace CMManager;
-
-const TUint32 KDNSSelectionItems[] = 
-    { 
-    R_QTN_SET_IP_ADDRESS_DYNAMIC,
-    R_QTN_SET_IP_WELL_KNOWN,
-    R_QTN_SET_IP_USER_DEFINED,
-    0
-    };            
-
-const TUint32 KPDPSelectionItems[] =
-    {
-    R_GPRS_PLUGIN_VIEW_PDP_TYPE_IPV4,
-    R_GPRS_PLUGIN_VIEW_PDP_TYPE_IPV6,
-    0
-    };
-    
-// ================= MEMBER FUNCTIONS =======================================
-    
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlgAdv::NewL()
-// Two-phase dconstructor, second phase is ConstructAndRunLD
-// --------------------------------------------------------------------------
-//
-CmPluginPacketDataSettingsDlgAdv* CmPluginPacketDataSettingsDlgAdv::NewL( 
-                                            CCmPluginBaseEng& aCmPluginBase )
-	{
-	CmPluginPacketDataSettingsDlgAdv* self = 
-	        new ( ELeave ) CmPluginPacketDataSettingsDlgAdv( aCmPluginBase );
-	return self;
-	}
-	
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlgAdv::CmPluginPacketDataSettingsDlgAdv()
-// --------------------------------------------------------------------------
-//
-CmPluginPacketDataSettingsDlgAdv::CmPluginPacketDataSettingsDlgAdv( 
-                                            CCmPluginBaseEng& aCmPluginBase )
-    : CmPluginBaseSettingsDlgAdv( aCmPluginBase )
-    , iIpv6Supported( aCmPluginBase.FeatureSupported( KFeatureIdIPv6 ) )
-    , iParent( NULL )
-    {
-    iHelpContext = KSET_HLP_AP_SETTING_GPRS_AS;
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlgAdv::~CmPluginPacketDataSettingsDlgAdv
-// Destructor
-// --------------------------------------------------------------------------
-//
-CmPluginPacketDataSettingsDlgAdv::~CmPluginPacketDataSettingsDlgAdv()
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlgAdv::ConstructAndRunLD
-// --------------------------------------------------------------------------
-//
-TInt CmPluginPacketDataSettingsDlgAdv::ConstructAndRunLD()
-    {
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    cmMgr.WatcherRegisterL( this );
-    
-    return CmPluginBaseSettingsDlgAdv::ConstructAndRunLD();
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlgAdv::UpdateListBoxContentBearerSpecificL
-// --------------------------------------------------------------------------
-//
-void CmPluginPacketDataSettingsDlgAdv::UpdateListBoxContentBearerSpecificL( 
-                                                    CDesCArray& aItemArray )
-    {
-    TInt valueResId = 0;    
-    TInt pdpType = RPacketContext::EPdpTypeIPv4;
-    
-    // Get the PDP type - EPdpTypeIPv4 by default
-    if ( iIpv6Supported )
-        {
-        pdpType = iCmPluginBaseEng.GetIntAttributeL( EPacketDataPDPType );
-        
-        // NETWORK (PDP) TYPE
-        AppendSettingTextsL( aItemArray,
-                             EPacketDataPDPType,
-                             pdpType == RPacketContext::EPdpTypeIPv6 ? 
-                                R_GPRS_PLUGIN_VIEW_PDP_TYPE_IPV6 :
-                                R_GPRS_PLUGIN_VIEW_PDP_TYPE_IPV4 );
-        }    
-    
-    if ( pdpType != RPacketContext::EPdpTypeIPv6 )
-        {
-        // IP ADDRESS
-        AppendSettingTextsL( aItemArray, EPacketDataIPAddr );
-        }
-        
-    if ( iIpv6Supported )
-        {
-        // DNS SERVERS IP ADDRESS
-        if ( pdpType == RPacketContext::EPdpTypeIPv6 )
-            {
-            switch ( GetIPv6DNSTypeL( EPacketDataIPIP6NameServer1,
-                                      EPacketDataIPIP6NameServer2 ) )
-                {
-                case EIPv6Unspecified:
-                    {
-                    valueResId = R_QTN_SET_IP_ADDRESS_DYNAMIC;
-                    break;
-                    }
-                case EIPv6WellKnown:
-                    {
-                    valueResId = R_QTN_SET_IP_WELL_KNOWN;
-                    break;
-                    }
-                case EIPv6UserDefined:
-                    {
-                    valueResId = R_QTN_SET_IP_USER_DEFINED;
-                    break;
-                    }
-                default:
-                    {                    
-                    User::Leave( KErrNotSupported );
-                    break;
-                    }
-                }
-            }
-        else
-            {
-            if ( !iCmPluginBaseEng.GetBoolAttributeL( 
-                                           EPacketDataIPDNSAddrFromServer ) )
-                {
-                valueResId = R_QTN_SET_IP_USER_DEFINED;
-                }
-            else
-                {
-                valueResId = R_QTN_SET_DNS_SERVERS_AUTOMATIC;
-                }
-            }    
-        AppendSettingTextsL( aItemArray,
-                             EPacketDataIPIP6DNSAddrFromServer,
-                             valueResId );
-        }
-    else            
-        {
-        // PRIMARY NAME SERVER
-        AppendSettingTextsL( aItemArray, EPacketDataIPNameServer1 );
-        AppendSettingTextsL( aItemArray, EPacketDataIPNameServer2 );
-        }
-
-    // PROXY SETTINGS
-    // PROXY SERVER ADDRESS
-    AppendSettingTextsL( aItemArray, ECmProxyServerName );
-    // PROXY PORT NUMBER
-    AppendSettingTextsL( aItemArray, ECmProxyPortNumber );
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlgAdv::ShowPopupPacketDataIPDNSAddrFromServerL
-// --------------------------------------------------------------------------
-//
-void CmPluginPacketDataSettingsDlgAdv::
-                                    ShowPopupPacketDataIPDNSAddrFromServerL()
-    {
-    TInt PDPType = iCmPluginBaseEng.GetIntAttributeL( EPacketDataPDPType );
-
-    if ( PDPType == RPacketContext::EPdpTypeIPv6 )
-        {
-        ShowPopupIPv6DNSEditorL( KDNSSelectionItems,
-                                 EPacketDataIPIP6DNSAddrFromServer,
-                                 EPacketDataIPIP6NameServer1,
-                                 EPacketDataIPIP6NameServer2 );
-        }
-    else //ipv4
-        {
-        ShowPopupIPv4DNSEditorL( EPacketDataIPDNSAddrFromServer,
-                                 EPacketDataIPNameServer1,
-                                 EPacketDataIPNameServer2 );
-        }        
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlgAdv::ShowPopupSettingPageL
-// --------------------------------------------------------------------------
-//
-TBool CmPluginPacketDataSettingsDlgAdv::ShowPopupSettingPageL( 
-                                           TUint32 aAttribute, TInt aCommandId )
-    {    
-    TBool retval = EFalse;
-    
-    switch ( aAttribute )
-        {
-        // IPDNS Settings
-        case EPacketDataIPDNSAddrFromServer:
-        case EPacketDataIPIP6DNSAddrFromServer:        
-            {
-            ShowPopupPacketDataIPDNSAddrFromServerL();
-            break;
-            }
-        case EPacketDataPDPType:            
-            {
-            if ( aCommandId == EAknSoftkeyOk )
-                {
-                TInt intFromCM = 0;
-                TRAPD( err, intFromCM = iCmPluginBaseEng.GetIntAttributeL( 
-                                                              aAttribute ) );
-                
-                if ( !err )
-                    {
-                    intFromCM == RPacketContext::EPdpTypeIPv6 ? 
-                                intFromCM = RPacketContext::EPdpTypeIPv4 : 
-                                intFromCM = RPacketContext::EPdpTypeIPv6;
-                    }
-                else    
-                    {
-                    User::Leave( KErrNotSupported );
-                    }
-                              
-                iCmPluginBaseEng.SetIntAttributeL( aAttribute, intFromCM );
-                UpdateListBoxContentL();  
-                }
-            else
-                {
-                if ( aCommandId == EPluginBaseCmdChange )
-                
-                    {
-                    ShowPDPTypeRBPageL( aAttribute );
-                    }
-                else
-                    {
-                    TInt pdpType = iCmPluginBaseEng.GetIntAttributeL( EPacketDataPDPType );
-                    pdpType = pdpType == RPacketContext::EPdpTypeIPv4 ? 
-                                            RPacketContext::EPdpTypeIPv6 : 
-                                            RPacketContext::EPdpTypeIPv4;
-                    iCmPluginBaseEng.SetIntAttributeL( aAttribute, pdpType );
-                    UpdateListBoxContentL();
-                    }
-                }
-            break;
-            }
-        // IP Setting Page
-        case EPacketDataIPNameServer1:                
-        case EPacketDataIPNameServer2:
-        case EPacketDataIPAddr:
-            {
-            ShowPopupIpSettingPageL( aAttribute );
-            break;
-            }
-        // Text Settings        
-        case ECmProxyServerName:
-            {
-            retval = ShowPopupTextSettingPageL( aAttribute );
-            break;
-            }
-        // Numeric Settings
-        case ECmProxyPortNumber:
-            {
-            if ( ShowPopupPortNumSettingPageL( aAttribute ) )
-                {
-                retval = ETrue;
-                }
-            break;
-            }
-        default:
-            {
-            CmPluginBaseSettingsDlgAdv::ShowPopupSettingPageL( aAttribute, 
-                                                               aCommandId );
-            break;            
-            }
-        }
-    return retval;
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlgAdv::ProcessCommandL
-// --------------------------------------------------------------------------
-//
-void CmPluginPacketDataSettingsDlgAdv::ProcessCommandL( TInt aCommandId )
-    {
-    if ( MenuShowing() )
-        {
-        HideMenu();
-        }
-
-    switch ( aCommandId )
-        {
-        case EPluginBaseCmdExit:
-            {
-            iExitReason = KDialogUserExit; //  flow to EAknSoftkeyBack
-            }            
-        case EAknSoftkeyBack:
-            {
-            TryExitL( iExitReason );
-            break;
-            }  
-        case EAknSoftkeyOk:                     
-        case EPluginBaseCmdChange:
-            {
-            TInt attrib = iSettingIndex->At( iListbox->CurrentItemIndex() );
-            ShowPopupSettingPageL( attrib, aCommandId );
-
-            if ( iHasSettingChanged )
-                {
-                iHasSettingChanged = EFalse; // Don't call UpdateL at this stage
-                }
-            break;
-            }         
-        default:
-            {
-            CmPluginBaseSettingsDlgAdv::ProcessCommandL( aCommandId );
-
-            if ( iHasSettingChanged )
-                {
-                iHasSettingChanged = EFalse; // Don't call UpdateL at this stage
-                }
-            break;            
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlgAdv::OkToExitL
-// --------------------------------------------------------------------------
-//
-TBool CmPluginPacketDataSettingsDlgAdv::OkToExitL( TInt aButtonId )
-    {
-    TBool retval( EFalse );
-    switch ( aButtonId )
-        {
-        case EPluginBaseCmdExit:
-        case EAknSoftkeyBack:
-            {
-            CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-            cmMgr.WatcherUnRegister();
-            }
-        default:
-            {
-            retval = CmPluginBaseSettingsDlgAdv::OkToExitL( aButtonId );
-            break;
-            }
-        }
-    
-    return retval;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlgAdv::ShowPDPTypeRBPageL
-// --------------------------------------------------------------------------
-//
-void CmPluginPacketDataSettingsDlgAdv::ShowPDPTypeRBPageL( TUint32 aAttribute )
-    {
-    TInt selected = iCmPluginBaseEng.GetIntAttributeL( aAttribute );
-    
-    TInt originalValue = selected;
-    
-    if ( ShowRadioButtonSettingPageL( KPDPSelectionItems, 
-                                      selected, 
-                                      R_GPRS_PLUGIN_VIEW_PDP_TYPE ) && 
-         originalValue != selected )
-        {
-        iCmPluginBaseEng.SetIntAttributeL( aAttribute , selected );
-        UpdateListBoxContentL();             
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlgAdv::RegisterParentView
-// --------------------------------------------------------------------------
-//
-void CmPluginPacketDataSettingsDlgAdv::RegisterParentView( CCmParentViewNotifier* aParent )
-    {
-    iParent = aParent;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginPacketDataSettingsDlgAdv::CommsDatChangesL
-// --------------------------------------------------------------------------
-//
-void CmPluginPacketDataSettingsDlgAdv::CommsDatChangesL()
-    {
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    CCmDestinationImpl* parentDest = iCmPluginBaseEng.ParentDestination();
-
-    if ( parentDest )
-        {
-        if( !cmMgr.DestinationStillExistedL( parentDest ) )
-            {
-            if( iParent )
-                {
-                iParent->NotifyParentView( KCmNotifiedDestinationDisappear );
-                }
-            
-            cmMgr.WatcherUnRegister();
-            // If parent destination is deleted by somebody then the dialog must exit back to main view
-            iExitReason = KDialogUserExit;
-            TryExitL( iExitReason );
-            
-            cmMgr.RemoveDestFromPool( parentDest );
-            delete parentDest;
-            return;
-            }
-        
-        if( !cmMgr.IsIapStillInDestL( parentDest, iCmPluginBaseEng ) )
-            {
-            if( iParent )
-                {
-                iParent->NotifyParentView( KCmNotifiedIapIsNotInThisDestination );
-                }
-            
-            cmMgr.WatcherUnRegister();
-            // In this case, the dialog can go back to the parent view
-            TryExitL( iExitReason );
-            
-            cmMgr.RemoveDestFromPool( parentDest );
-            delete parentDest;
-            return;
-            }
-        
-        // We may have to notify parent view to go back to its parent view even though this Iap is still in CommsDat
-        // for cmMgr ( = iCmPluginBaseEng.CmMgr() ) can not be accessed any more
-        // after this call when some Iap is deleted.
-        if( iParent )
-            {
-            iParent->NotifyParentView( KCmNotifiedIapDisappear );
-            }
-        cmMgr.WatcherUnRegister();
-        TryExitL( iExitReason );
-        
-        cmMgr.RemoveDestFromPool( parentDest );
-        delete parentDest;
-        }
-    else
-        {
-        if( !cmMgr.IapStillExistedL(iCmPluginBaseEng) )
-            {
-            if( iParent )
-                {
-                iParent->NotifyParentView( KCmNotifiedIapDisappear );
-                }
-            
-            cmMgr.WatcherUnRegister();
-            // In this case, the dialog can go back to the parent view
-            TryExitL( iExitReason );
-            return;
-            }
-        
-        // We may have to notify parent view to go back to its parent view even though this Iap is still in CommsDat
-        // for cmMgr ( = iCmPluginBaseEng.CmMgr() ) can not be accessed any more
-        // after this call when some Iap is deleted.
-        if( iParent )
-            {
-            iParent->NotifyParentView( KCmNotifiedIapDisappear );
-            }
-        cmMgr.WatcherUnRegister();
-        TryExitL( iExitReason );
-        }
-    }
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/data/10281BBE.rss	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* Copyright (c) 2006 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:  ECom resource descriptor for VPN plug-in
-*
-*/
-
-#include "ecom/registryinfo.rh"
-
-// Because attribute enums had to be added to namespace CMManager
-// it's not possible to included cmpluginvpndef.h.
-// Thus bearer type id had to be redefined here.
-#define KPluginVPNBearerTypeUid   0x10281BBD
-
-RESOURCE REGISTRY_INFO theInfo
-    {
-    dll_uid = 0x10281BBE;
-    interfaces = 
-        {
-        INTERFACE_INFO
-            {
-            interface_uid = 0x10207377; // = KCMPluginInterfaceUid. Do NOT modify it!!!
-            implementations = 
-                {
-                IMPLEMENTATION_INFO
-                    {
-                    implementation_uid = KPluginVPNBearerTypeUid;
-                    version_no = 1;
-                    display_name = "VPN";
-                    default_data = "VPN";
-                    opaque_data = "";
-                    }
-                };
-            }
-        };
-    }
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/data/cmpluginvpnui.rss	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,317 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Localisation file for VPN plug-in
-*
-*/
-
-#include <avkon.rsg>
-#include <avkon.rh>	
-#include <avkon.loc>
-#include <uikon.rh>
-#include <eikon.rh>
-#include <cmpsettingsconsts.h>
-#include <eikon.rsg>
-#include <AvkonIcons.hrh>
-#include <cmmanager.loc>
-
-#include <cmpluginvpn.loc>
-#include "cmmanager.hrh"
-
-NAME    CMVP
-
-RESOURCE RSS_SIGNATURE { }
-
-RESOURCE TBUF { buf = "VPN"; }
-
-// --------------------------------------------------------------------------
-// r_qtn_netw_conset_bearer_supported_vpn 
-// localised string
-// returned string the attribute: ECmBearerSupportedName 
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_bearer_supported_vpn
-    {
-    buf = qtn_netw_conset_bearer_supported_vpn;
-    }
-
-// --------------------------------------------------------------------------
-// r_qtn_netw_conset_method_name_vpn 
-// localised string
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_method_name_vpn
-    {
-    buf = qtn_netw_conset_method_name_vpn;
-    }
-
-// --------------------------------------------------------------------------
-//  r_qtn_vpn_info_vpn_iap_incomplete
-//  localised string
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_vpn_info_vpn_iap_incomplete
-    {
-    buf = qtn_vpn_info_vpn_iap_incomplete;
-    }
-    
-// --------------------------------------------------------------------------
-//  r_qtn_vpn_sett_vpn_iap_policy_reference
-//  localised string
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_vpn_sett_vpn_iap_policy_reference
-    {
-    buf = qtn_vpn_sett_vpn_iap_policy_reference;
-    }
-
-// --------------------------------------------------------------------------
-//  r_qtn_vpn_info_no_policies_installed
-//  localised string
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_vpn_info_no_policies_installed
-    {
-    buf = qtn_vpn_info_no_policies_installed;
-    }
-
-// --------------------------------------------------------------------------
-//  r_qtn_vpn_sett_vpn_iap_real_netw_reference
-//  localised string
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_vpn_sett_vpn_iap_real_netw_reference
-    {
-    buf = qtn_vpn_sett_vpn_iap_real_netw_reference;
-    }
-
-// --------------------------------------------------------------------------
-//  r_qtn_vpn_sett_vpn_iap_policy_reference_compulsory
-//  localised string
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_vpn_sett_vpn_iap_policy_reference_compulsory
-    {
-    buf = qtn_vpn_sett_vpn_iap_policy_reference_compulsory;
-    }
-
-// --------------------------------------------------------------------------
-//  r_qtn_vpn_sett_vpn_iap_policy_reference_compulsory
-//  localised string
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_vpn_sett_vpn_iap_real_netw_ref_compulsory
-    {
-    buf = qtn_vpn_sett_vpn_iap_real_netw_ref_compulsory;
-    }
-
-// --------------------------------------------------------------------------
-//  r_qtn_vpn_info_mgmt_ui_not_accessible
-//  localised string
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_vpn_info_mgmt_ui_not_accessible
-    {
-    buf = qtn_vpn_info_mgmt_ui_not_accessible;
-    }
-
-
-// --------------------------------------------------------------------------
-//  r_qtn_netw_conset_prmpt_vpn_policy
-//  localised string
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_prmpt_vpn_policy
-    {
-    buf = qtn_netw_conset_prmpt_vpn_policy;
-    }
-    
-// --------------------------------------------------------------------------
-//  r_qtn_netw_conset_prmpt_vpn_real_connection
-//  localised string
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_prmpt_vpn_real_connection
-    {
-    buf = qtn_netw_conset_prmpt_vpn_real_connection;
-    }
-
-// --------------------------------------------------------------------------
-//  r_qtn_netw_conset_conn_methods_amount_many
-//  localised string
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_conn_methods_amount_many
-    {
-    buf = qtn_netw_conset_conn_methods_amount_many;
-    }
-    
-// --------------------------------------------------------------------------
-//  r_qtn_netw_conset_conn_methods_amount_many
-//  localised string
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_conn_methods_amount_one
-    {
-    buf = qtn_netw_conset_conn_methods_amount_one;
-    }
-
-// --------------------------------------------------------------------------
-//  r_qtn_netw_conset_vpn_easy_wlan
-//  localised string
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_vpn_easy_wlan
-    {
-    buf = qtn_netw_conset_vpn_easy_wlan;
-    }
-
-// --------------------------------------------------------------------------
-//  r_qtn_netw_conset_vpn_easy_wlan_prompt
-//  localised string
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_vpn_easy_wlan_prompt
-    {
-    buf = qtn_netw_conset_vpn_easy_wlan_prompt;
-    }
-
-// --------------------------------------------------------------------------
-//  r_qtn_netw_conset_info_no_cm_to_bind_to
-//  localised string
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_info_no_cm_to_bind_to
-    {
-    buf = qtn_netw_conset_info_no_cm_to_bind_to;
-    }
-
-// --------------------------------------------------------------------------
-//  r_qtn_vpn_quest_vpn_iap_incomplete_delete
-//  localised string
-// --------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_vpn_quest_vpn_iap_incomplete_delete
-    {
-    buf = qtn_vpn_quest_vpn_iap_incomplete_delete;
-    }
-
-// -----------------------------------------------------------------------------
-// r_softkeys_options_back__options
-// option/options/cancel button set
-// -----------------------------------------------------------------------------
-RESOURCE CBA r_softkeys_options_cancel__select
-    {
-    buttons =
-        {
-        CBA_BUTTON { id = EAknSoftkeyOptions;       txt = text_softkey_option; },
-        CBA_BUTTON { id = EAknSoftkeyBack;          txt = text_softkey_cancel; },
-        CBA_BUTTON { id = ECmManagerUiCmdDestSelect;txt = text_softkey_select; }
-        };
-    }
-
-// --------------------------------------------------------------------------
-// r_vpn_real_cm_selection_list
-// real connection selection dialog with destination support
-// --------------------------------------------------------------------------
-RESOURCE AVKON_LIST_QUERY r_vpn_real_cm_selection_list
-    {
-    flags = EGeneralQueryFlags;
-    softkeys = r_softkeys_options_cancel__select;
-    items =
-        {
-        AVKON_LIST_QUERY_DLG_LINE
-            {
-            control = AVKON_LIST_QUERY_CONTROL
-                {
-                listtype = EAknCtDoubleLargeGraphicPopupMenuListBox;
-                listbox = AVKON_LIST_QUERY_LIST
-                    {
-                    flags = EAknListBoxSelectionList;
-                    };
-                heading = qtn_netw_conset_prmpt_vpn_real_connection;
-                };
-            }
-        };    
-    }
-
-
-// --------------------------------------------------------------------------
-// r_vpn_real_cm_radio_button_setting_page
-// underlying connection _method_ setting page
-// --------------------------------------------------------------------------
-
-RESOURCE LISTBOX r_vpn_setting_app_listbox
-    {
-    flags = EEikListBoxMultipleSelection;
-    }
-    
-RESOURCE AVKON_SETTING_PAGE r_vpn_real_cm_radio_button_setting_page
-    {
-    number = EAknSettingPageNoOrdinalDisplayed;
-    softkey_resource = R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT;
-    type =  EAknSetListBox;
-    editor_resource_id= r_vpn_setting_app_listbox;
-    }
-    
-    
-// --------------------------------------------------------------------------
-// Menu bars
-// --------------------------------------------------------------------------
-//   
-//    r_vpn_real_cm_selection_menubar
-//    menubar for the VPN real connection selection dialog
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_BAR r_vpn_real_cm_selection_menubar
-	{
-    titles =
-		{
-        MENU_TITLE
-            {
-            menu_pane = r_vpn_real_cm_selection_menu; 
-            txt = "App";
-            }
-	    };
-	}
-// -----------------------------------------------------------------------------
-//   
-//    r_vpn_real_cm_selection_menu
-//    menu pane for destination list 
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_PANE r_vpn_real_cm_selection_menu
-	{
-    items =
-		{
-		MENU_ITEM
-		    {
-		    command = ECmManagerUiCmdDestSelect; 
-            txt = qtn_set_cmd_select;
-            flags = EEikMenuItemAction;
-            }
-        ,MENU_ITEM
-            {
-            command = ECmManagerUiCmdCMSelect;
-            txt = qtn_netw_conset_options_select_method;
-            flags = EEikMenuItemSpecific;
-            }
-        ,MENU_ITEM
-            {
-            command = EAknCmdHelp;
-            txt = qtn_options_help;
-            }
-		};
-	}
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/group/bld.inf	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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:  Build information file for VPN plug-in
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-// export localised loc file
-../loc/cmpluginvpn.loc	MW_LAYER_LOC_EXPORT_PATH(cmpluginvpn.loc)
-
-PRJ_MMPFILES
-cmpluginvpn.mmp
-
-PRJ_EXTENSIONS
-START EXTENSION s60/mifconv
-OPTION TARGETFILE cmpluginvpn.mif
-OPTION HEADERFILE cmpluginvpn.mbg
-OPTION SOURCES -c8,1 qgn_prop_vpn_access_point
-END
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/group/cmpluginvpn.mmp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Project specification for VPN plug-in
-*
-*/
-
-#include <data_caging_paths.hrh>
-#include <platform_paths.hrh>
-
-TARGET      cmpluginvpn.dll
-UID         0x10009D8D 0x10281BBE
-
-TARGETTYPE        PLUGIN
-
-CAPABILITY      CAP_ECOM_PLUGIN
-VENDORID        VID_DEFAULT
-
-SOURCEPATH  ../src
-
-SOURCE      cmpluginproxyvpn.cpp
-SOURCE      cmpluginvpn.cpp
-SOURCE      cmpvpnsettingsdlg.cpp
-SOURCE      cmpvpnpolicyselectiondlg.cpp
-SOURCE      cmpvpnnextlayerselectdlg.cpp
-SOURCE      ../../../Framework/Src/cmlogger.cpp
-
-SOURCEPATH  ../data
-
-START RESOURCE 10281BBE.rss
-TARGET cmpluginvpn.rsc
-END
-
-START RESOURCE cmpluginvpnui.rss
-HEADER
-TARGETPATH   RESOURCE_FILES_DIR
-LANGUAGE_IDS
-END
-
-USERINCLUDE     ../data
-USERINCLUDE     ../../../Framework/Inc
-USERINCLUDE     ../../../Framework/SrcData
-
-// Component specific internal headers 
-USERINCLUDE			../inc
-
-// ADO specific internal headers 
-SYSTEMINCLUDE		../../../../../inc
-
-//Macro to /epoc32 headers
-MW_LAYER_SYSTEMINCLUDE
-
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-APP_LAYER_SYSTEMINCLUDE
-#endif
-
-LIBRARY hlplch.lib
-LIBRARY euser.lib
-LIBRARY ecom.lib
-LIBRARY cmmanager.lib
-LIBRARY commsdat.lib
-LIBRARY aknskins.lib
-LIBRARY efsrv.lib 
-LIBRARY	CommonEngine.lib
-LIBRARY cone.lib eikcore.lib avkon.lib
-LIBRARY eikcoctl.lib eikdlg.lib
-LIBRARY bafl.lib
-LIBRARY vpnapi.lib
-LIBRARY centralrepository.lib
-LIBRARY featmgr.lib
-LIBRARY cmmanagerdatabase.lib
-DEBUGLIBRARY flogger.lib
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/group/cmpluginvpn_icons.mk	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-#
-# Copyright (c) 2006 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:  Makefile for icons of VPN plug-in
-#
-
-ifeq (WINS,$(findstring WINS, $(PLATFORM)))
-ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\Z
-else
-ZDIR=\epoc32\data\z
-endif
-
-
-TARGETDIR=$(ZDIR)\resource\apps
-ICONTARGETFILENAME=$(TARGETDIR)\cmpluginvpn.mif
-
-HEADERDIR=\epoc32\include
-HEADERFILENAME=$(HEADERDIR)\cmpluginvpn.mbg
-
-do_nothing :
-	@rem do_nothing
-
-MAKMAKE : do_nothing
-
-BLD : do_nothing
-
-CLEAN : do_nothing
-
-LIB : do_nothing
-
-CLEANLIB : do_nothing
-
-# ----------------------------------------------------------------------------
-# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by
-# MifConv if the mask detph is defined.
-#
-# NOTE 2: Usually, source paths should not be included in the bitmap
-# definitions. MifConv searches for the icons in all icon directories in a
-# predefined order, which is currently \s60\icons, \s60\bitmaps2, \s60\bitmaps.
-# The directory \s60\icons is included in the search only if the feature flag
-# __SCALABLE_ICONS is defined.
-# ----------------------------------------------------------------------------
-
-RESOURCE :
-	mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) \
-                /c8,1 qgn_prop_vpn_access_point.bmp
-
-FREEZE : do_nothing
-
-SAVESPACE : do_nothing
-
-RELEASABLES :
-	@echo $(HEADERFILENAME)&& \
-	@echo $(ICONTARGETFILENAME)
-
-FINAL : do_nothing
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/inc/cmpluginvpn.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,313 +0,0 @@
-/*
-* Copyright (c) 2006 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:  VPN plugin IF implementation class.
-*
-*/
-
-#ifndef VPN_PLUGIN_INCLUDED
-#define VPN_PLUGIN_INCLUDED
-
-#include <e32base.h>
-#include <StringLoader.h>
-#include <in_sock.h>
-
-#include <cmpluginbaseeng.h>
-
-#include <cmpluginvpndef.h>
-
-using namespace CommsDat;
-
-class CCDVirtualIAPNextLayerRecord;
-
-/**
- *  VPN Plugin IF implementation class
- *  @since S60 3.2
- */
-NONSHARABLE_CLASS(CCmPluginVpn) : public CCmPluginBaseEng
-    {
-
-    public:     // Constructors and destructor
-
-        /**
-        * Two phased constructor. Leaves on failure.
-        * @return The created object.
-        */      
-        static CCmPluginVpn* NewL( TCmPluginInitParam* aInitParam );
-
-        /**
-        * Destructor.
-        */      
-        virtual ~CCmPluginVpn();
-        
-        virtual CCmPluginBaseEng* CreateInstanceL( TCmPluginInitParam& aInitParam ) const;
-        
-    public: 
-        
-        /**
-        * Gets the value for a TInt attribute.
-        * @param aAttribute Identifies the attribute to be retrived.
-        * @param aValue On completion, contains the requested TInt attribute.
-        * @return None.
-        */
-        virtual TUint32 GetIntAttributeL( const TUint32 aAttribute ) const;
-
-        /**
-        * Gets the value for a TBool attribute.
-        * @param aAttribute Identifies the attribute to be retrived.
-        * @param aValue On completion, contains the requested TBool attribute.
-        * @return None.
-        */
-        virtual TBool GetBoolAttributeL( const TUint32 aAttribute ) const;
-
-        /**
-        * Gets the value for a String16 attribute.
-        * @param aAttribute Identifies the attribute to be retrived.
-        * @param aValue On completion, contains the requested TDes16 attribute.
-        * @return None.
-        */
-        virtual HBufC* GetStringAttributeL( const TUint32 aAttribute ) const;
-
-		/**
-		* Gets the value for a String8 attribute.
-		* @param aAttribute Identifies the attribute to be retrived.
-        * @return copy of the requested attribute. Ownership is passed.
-		*/
-		virtual HBufC8* GetString8AttributeL( const TUint32 aAttribute ) const;
-
-        /**
-        * Sets the value for a TInt attribute.
-        * @param aAttribute Identifies the attribute to be set.
-        * @param aValue The value to be set.
-        * @return None.
-        */
-        virtual void SetIntAttributeL( const TUint32 aAttribute, TUint32 aValue );
-
-        /**
-        * Sets the value for a TBool attribute.
-        * @param aAttribute Identifies the attribute to be set.
-        * @param aValue The value to be set.
-        * @return None.
-        */
-        virtual void SetBoolAttributeL( const TUint32 aAttribute, TBool aValue );
-
-        /**
-        * Sets the value for a String16 attribute.
-        * @param aAttribute Identifies the attribute to be set.
-        * @param aValue The value to be set.
-        * @return None.
-        */
-        virtual void SetStringAttributeL( const TUint32 aAttribute, 
-                                          const TDesC16& aValue );
-
-		/**
-		* Sets the value for a String8 attribute.
-		* @param aAttribute Identifies the attribute to be set.
-		* @param aValue The value to be set.
-        * @return None.
-		*/
-		virtual void SetString8AttributeL( const TUint32 aAttribute, 
-		                                   const TDesC8& aValue );
-
-
-		void UpdatePolicyNameL();
-		
-        /**
-        * Puts the currently available bindable destinations into the 
-        * passed array. The array is emptied before appending the values.
-        * It contains only real destinations, no uncategorised 
-        * or any other, created ones (Always ask, DefaultConnection, etc)
-        */
-        void BindableDestinationsL( RArray<TUint32>& aDestinationArray );
-        
-        /**
-        * Change the VPN connection method name when using 
-        * 'Search for WLAN' functionality
-        */
-        HBufC* GenerateVPNPointToWLANNetworkLC(RResourceFile& rf, HBufC*& aName);
-		
-    public: // From CCmPluginBaseEng        
-
-        /**
-        * Restore the original value of the attribute from commsdat field.
-        * Base implementation can be used only with attributes 
-        * stored directly in commsdat.
-        * @param aAttribute attribute to be restored
-        */
-        virtual void RestoreAttributeL( const TUint32 aAttribute );
-        
-        /**
-        * Override the load to be able to handle post-processing
-        *
-        */
-        virtual void LoadL( TUint32 aIapId );
-        
-        virtual TBool CanHandleIapIdL( TUint32 aIapId ) const;
-        virtual TBool CanHandleIapIdL( CCDIAPRecord *aIapRecord ) const;
-        
-        virtual TInt RunSettingsL();
-        virtual void LoadServiceSettingL();
-        virtual void LoadAdditionalRecordsL();
-        
-        virtual void UpdateAdditionalRecordsL();
-
-        virtual TBool InitializeWithUiL( TBool aManuallyConfigure  );
-        
-        virtual void ServiceRecordIdLC( HBufC* &aServiceName, 
-                                        TUint32& aRecordId );
-
-        virtual void BearerRecordIdLC( HBufC* &aBearerName, 
-                                       TUint32& aRecordId );
-                                       
-        virtual void PrepareToUpdateRecordsL();
-        
-        virtual TBool IsLinkedToIap( TUint32 aIapId );
-        virtual TBool IsLinkedToSnap( TUint32 aSnapId );
-        
-        virtual void CreateNewL();
-
-        /**
-        * From CCmPluginBaseEng
-        * Deletes additional records, in this case, the WLAN records
-        *
-        * @since S60 3.2
-        */
-        void DeleteAdditionalRecordsL();
-        
-    protected:
-    
-        virtual void AdditionalReset();
-    
-    private: // Constructors
-
-        /**
-        * Constructor.
-        */      
-        CCmPluginVpn( TCmPluginInitParam* aInitParam );
-
-        /**
-        * Second phase constructor. Leaves on failure.
-        * @param
-        */      
-        void ConstructL();
-
-    private:
-    
-        CCDVPNServiceRecord& ServiceRecord() const;
-
-        TBool ServiceRecordExists() const;
-        
-        virtual void CreateNewServiceRecordL();
-        virtual void CreateAdditionalRecordsL();
-        
-        virtual void UpdateServiceRecordL();
-        
-        /**
-        * Displays a list of installed VPN policies for user selection
-        * and updates the setting
-        *
-        * @since S60 3.2
-        * @return the soft key selection
-        */
-        TBool ShowPolicySelectionDlgL();
-        
-        /**
-        * Shows a dialog for selecting the underlying connection method
-        *
-        * @since S60 3.2
-        * @return ETrue if success
-        */
-        TBool ShowRealConnectionSelectionDlgL();
-        
-        /**
-        * Checks whether there are connection methods or destinations which
-        * the VPN connection method can bind to
-        * 
-        * @since S60 3.2
-        * @return ETrue found
-        */
-        TBool BindableRealConnectionsExistL();
-
-        void GenerateDefaultCmNameL();  
-        
-        /**
-        * Returns whether the passed destination can be used as an underlying
-        * connection method for this particular CM.
-        * It can be used if it does not points to VPN in any way, directly or
-        * indirectly, it has at least one, non-virtual CM and
-        * it does not links back to our parent destination.
-        * The returned value is a bit field defined in the src file and 
-        * it holds the following informations: 
-        * IsEmpty, ContainsVPN(in any link), LinksBackToPArentDest and
-        * HasNonVirtualCM to be able to decide if it is suitable.
-        * Used only internally.
-        */
-        TUint32 CanDestUsedAsUnderlyingConnectionL( TUint32 aDestinationId );
-
-
-        /**
-        * Checks whether the destination/CM passed to it has a VPN connection
-        * up-stream (there is a path from a VPN to this item through indirections).
-        * 
-        * @param aId The id of the destination/connmethod in question.
-        * @param aIsDestination ETrue if the passed id is to be considered 
-        *                       that of a destination, EFalse otherwise.
-        * @return ETrue if this entity is pointed to (in/directly) by a VPN.
-        */
-        TBool HasUpstreamVpnL( TUint32 aId, TBool aIsDestination );
-
-        /**
-        * Checks and converts the id of the destination if needed
-        * 
-        * @param aDestination the id of the destination
-        * @since S60 5.2
-        * @return the correct id of the destination 
-        *         or leaves with the error code KErrArgument 
-        */                    
-        TInt CheckValidityAndConvertDestinationIdL( TUint32 aDestinationId );
-        
-        /**
-        * Retrieves default APs from the Tier Record of given identifier.
-        * 
-        * @param aTierIdentifier identifier for tier record.
-        * @since S60 5.2
-        * @return an elementid id of the default AP record in tier record. 
-        */                    
-        const TMDBElementId DefaultAPRecordL( const TInt aTierIdentifier = KAfInet );
-
-    public:                
-        /**
-        * Scans aDests for destinations that may be valid parents 
-        * for this plugin and removes those that may not.
-        * @param aDests The array of destination IDs to be filtered.
-        */
-        virtual void FilterPossibleParentsL( RArray<TUint32>& aDests );
-
-        // finds the parent destination of the connmethod with the given ID
-        TUint32 FindParentDestinationL( TUint32 aCmId );
-        
-    private: // Data
-    
-        CCmPluginBaseEng*       iRealCM;
-        CCDVirtualIAPNextLayerRecord*   iVirtualRecord;
-        TMDBElementId           iVirtualTableId;
-        HBufC*                  iPolicyName;
-        
-        /**
-         * An array of the bindable destinations, 
-         * including (if supported) the uncategorised destation and easy wlan
-         */
-        RArray<TUint32> iBindableMethods;
-    };
-
-#endif // VPN_PLUGIN_INCLUDED
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/inc/cmpvpnnextlayerselectdlg.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,252 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Popup for selecting the underlying connection method or 
-*                destination for a VPN connection method
-*
-*/
-
-#ifndef CMPVPN_NEXT_LAYER_SELECT_DLG_H
-#define CMPVPN_NEXT_LAYER_SELECT_DLG_H
-
-#include <e32base.h>
-#include <aknlistquerydialog.h> // CAknListQueryDialog
-
-#include <ConeResLoader.h> // resource reader
-
-class CEikonEnv;
-class CCmPluginBaseEng;
-class CCmManagerImpl;
-class CGulIcon;
-
-
-    
-/**
- *  CmPluginVpnNextLayerSelectDlg dialog class
- *
- *  
- *
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CmPluginVpnNextLayerSelectDlg ) : public CAknListQueryDialog
-    {
-    public: // Constructors and destructor
-    
-        static CmPluginVpnNextLayerSelectDlg* NewL( 
-                                        CCmPluginBaseEng& aCmPluginBaseEng,
-                                        RArray<TUint32>& aBindableMethods,
-                                        TBool& aSnapSelected,
-                                        TUint32& aNextLayerId );
-        
-        /**
-        * Destructor.
-        */
-        virtual ~CmPluginVpnNextLayerSelectDlg();
-
-
-    private: // Constructor
-    
-        /**
-        * Constructor.
-        */      
-        CmPluginVpnNextLayerSelectDlg( CCmPluginBaseEng& aCmPluginBaseEng,
-                                       RArray<TUint32>& aBindableMethods,
-                                       TBool& aSnapSelected,
-                                       TUint32& aNextLayerId,
-                                       TInt aDummyIndex );
-        
-        /**
-        * Second phase constructor. Leaves on failure.
-        */      
-        void ConstructL();
-        
-    public: // new
-        
-        static TInt CancelAsynchronouslyL( TAny* aObject );
-                                             
-        
-    protected: // From CAknListQueryDialog
-    
-        /**
-        * @see CAknListQueryDialog
-        */
-        virtual void PreLayoutDynInitL();
-        
-        /**
-        * @see CAknListQueryDialog
-        */
-        TBool OkToExitL( TInt aButtonId );
-
-    public: // From CAknListQueryDialog
-        
-        /**
-         * @see CAknListQueryDialog
-         */
-        void ProcessCommandL( TInt aCommandId );
-              
-        /**
-         * @see CAknListQueryDialog
-         */
-        void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-
-        /**
-         * @see CAknListQueryDialog
-         */
-        void HandleListBoxEventL( CEikListBox* aListBox, 
-                                  TListBoxEvent aEventType );
-
-        
-    public: // From CCoeControl
-    
-        /**
-        * Returns the help context
-        * From CCoeControl
-        * 
-        * @since S60 3.2
-        * @param aContext the returned help context
-        */
-        void GetHelpContext( TCoeHelpContext& aContext ) const;
-                
-        /**
-        * From CCoeControl
-        *
-        * @since S60 3.2
-        * @param aKeyEvent The key event.
-        * @param aType Key event type.
-        * @return key response (was the key event consumed?).
-        */
-        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                     TEventCode aType );
- 
-                                        
-    private: // new functions
-    
-        /*
-        * Load the given resource file
-        *
-        * @since S60 3.2
-        * @param aResFileName
-        */
-        void LoadResourceL( const TDesC& aResFileName );
-        
-        /*
-        * Formats the texts for the list items using given resources
-        *
-        * @param aFirstLineResId the resource Id for the first line
-        * @param aSecondLineResId the resource Id for the second line
-        * @param aIconIndex the icon's index value
-        * @return the formatted text
-        */
-        HBufC* FormatListItemTextsLC( TInt aFirstLineResId,
-                                      TInt aSecondLineResId,
-                                      TInt aIconIndex );
-                        
-        /**
-        */
-        HBufC* FormatListItemTextsLC( TInt aFirstLineResId,
-                                      const TDesC& aSecondLineText,
-                                      TInt aIconIndex );
-                                      
-        /**
-        */
-        HBufC* FormatListItemTextsLC( const TDesC& aFirstLineResId,
-                                      const TDesC& aSecondLineText,
-                                      TInt aIconIndex );
-                                      
-        /**
-        */
-        HBufC* FormatListItemTextsL( const TDesC& aFirstLineText,
-                                     const TDesC& aSecondLineText,
-                                     TInt aIconIndex );
-                                     
-        /**
-        * Displays a radio button selection dialog to select the 
-        * underlying connection method
-        *
-        * @since S60 3.2
-        * @param aDestinationId the destination id to search
-        * @param aCmId the selection as a return value
-        * @return ETrue if selection made EFalse if cancelled
-        */
-        TBool ShowCMSelectionDlgL( TUint32 aDestinationId, 
-                                   TUint32& aCmId );
-
-        void SetTextsAndIconsL();
-        
-        void AppendDestinationTextsL( CCmDestinationImpl& aDestination,
-                                 TInt aNumCms,
-                                 CDesCArray& aItems,
-                                 CArrayPtr<CGulIcon>& aIcons );
-                                       
-        void AppendUncatDestinationL( CDesCArray& aItems,
-                                      CArrayPtr<CGulIcon>& aIcons );
-                                    
-        void AppendEasyWlanL( CDesCArray& aItems,
-                              CArrayPtr<CGulIcon>& aIcons );
-                                   
-
-    private: // data members
-  
-        /**
-         * Eikon environment
-         */
-        CEikonEnv& iMyEikonEnv;        
-       
-        /**
-         * base class not owned
-         */
-        CCmPluginBaseEng& iCmPluginBaseEng;
-        
-        /**
-         * Result of selection: ETrue if a SNAP was selected
-         */
-        TBool& iSnapSelected;
-        
-        /**
-         * Result of selection: The ID of the connection method or SNAP
-         */
-        TUint32& iNextLayerId;
-                 
-        /**
-         * Resource reader
-         */
-        RConeResourceLoader iResourceReader;
-                 
-        /**
-         * An array containing all of the destination's ids
-         */
-        RArray<TUint32>& iDestinations;
-        
-        /**
-         * The id of EasyWlan ( zero if none )
-         */
-        TUint32 iEasyWlanId;
-        
-        /**
-         * access to the cmmanager
-         */
-        CCmManagerImpl& iCmManager; // not owned
-        
-        /**
-         * Flag to determine if there are uncategorised connection methods
-         */
-        TBool iUncatItems;
-        
-        /**
-         * One shot active object for asynchronous exiting with Cancel
-         */
-        CAsyncCallBack* iAsyncCancel; 
-        
-        
-    };
-#endif // CMPVPN_NEXT_LAYER_SELECT_DLG_H
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/inc/cmpvpnpolicyselectiondlg.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Displays a selection list of VPN policies
-*
-*/
-
-#ifndef CMPLUGINVPN_POLICYSELECTION_DLG_H
-#define CMPLUGINVPN_POLICYSELECTION_DLG_H
-
-// includes
-#include <e32base.h>
-#include <ConeResLoader.h>
-#include <vpnapi.h>
-
-// forward declarations
-class CCmPluginBaseEng;
-
-/**
- *  CmPluginPacketDataSettingsDlg dialog class
- *
- *  
- *
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CmPluginVpnPolicySelectionDlg ) : public CBase
-    {
-    public: // Constructors and destructor
-    
-        static CmPluginVpnPolicySelectionDlg* NewL( 
-                                        CCmPluginBaseEng& aCmPluginBaseEng );
-        
-        /**
-        * Destructor.
-        */
-        virtual ~CmPluginVpnPolicySelectionDlg();
-        
-    public: // New functions
-    
-        /**
-        * Shows the VPN policies in and a popup list and if a selection is
-        * made, EVpnServicePolicyName is set
-        * 
-        * @since S60 3.2
-        * @return ETrue if a selection was made
-        */
-        TBool ShowPolicySelectionListL();
-        
-        /**
-        * Shows the VPN policies in and a radio button list and if a selection is
-        * made, EVpnServicePolicyName is set
-        * 
-        * @since S60 3.2
-        * @return ETrue if a selection was made
-        */
-        TBool ShowPolicySelectionDlgL();
-
-    private: // Constructor
-    
-        /**
-        * Constructor.
-        */      
-        CmPluginVpnPolicySelectionDlg( CCmPluginBaseEng& aCmPluginBaseEng );
-        
-        /**
-        * Second phase constructor. Leaves on failure.
-        */      
-        void ConstructL();
-    
-    private: // New functions
-            
-        /**
-        * Loads a resource file.
-        *
-        * @since S60 3.2
-        * @param aResFileName the resource file name.
-        */
-        void LoadResourceL( const TDesC& aResFileName );
-        
-        /**
-        * Pop-up note that VPN client is inaccessible
-        *
-        * @since S60 3.2
-        */
-        void VpnClientInaccessibleL();
-        
-    private: // data members
-        
-        /**
-         * base class reference, NOT OWNED
-         */
-        CCmPluginBaseEng&   iCmPluginBaseEng;
-        
-        /**
-         * resource reader
-         */
-        RConeResourceLoader iResourceReader;
-        
-        /**
-         * VPN server
-         */
-        RVpnServ iVpnServ;
-        
-        /**
-         * array of VPN policies - OWNED
-         */
-        CArrayFixFlat<TVpnPolicyInfo>* iPolicyInfoList;
-        
-        /**
-         * flag for when vpn is not accessible. used to make sure the 
-         * dialog indicating it is inaccessible is not displayed both 
-         * on connect and close
-         */
-        TBool iVpnClientUnaccessible;
-        
-        /**
-        * the number of VPN policies
-        */
-        TInt iNumPolicies;
-    };
-
-#endif // CMPLUGINVPN_POLICYSELECTION_DLG_H
\ No newline at end of file
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/inc/cmpvpnsettingsdlg.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Declares a settings dialog for a VPN connection 
-*                method plugin
-*
-*/
-
-#ifndef CMPLUGINVPN_SETTINGS_DLG_H
-#define CMPLUGINVPN_SETTINGS_DLG_H
-
-// INCLUDES
-#include <cmpluginbaseeng.h>
-#include <mcmdexec.h>
-#include <cmpbasesettingsdlg.h>
-#include "cmcommsdatnotifier.h"
-
-// CLASS DECLARATION
-
-/**
- *  CmPluginVpnSettingsDlg dialog class
- *
- *  Displays the VPN data settings
- *
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CmPluginVpnSettingsDlg ) : public CmPluginBaseSettingsDlg
-                                            , public MCmCommsDatWatcher
-    {
-    public: // Constructors and destructor
-    
-        /**
-        * Two-phase constructor
-        *
-        * @since S60 3.2
-        * @param aCmPluginBaseEng  The connection method to use
-        * @return instance of the class
-        */
-        static CmPluginVpnSettingsDlg* NewL( CCmPluginBaseEng& 
-                                                        aCmPluginBaseEng );
-                                                        
-        /**
-        * Destructor.
-        */
-        virtual ~CmPluginVpnSettingsDlg();
-    
-    public: // From CmPluginBaseSettingsDlg
-    
-        
-        /**
-        * From CmPluginBaseSettingsDlg
-        * constructor for the dialog
-        *
-        * @since S60 3.2
-        */
-        virtual TInt ConstructAndRunLD();
-        
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Collects the VPN specific setting information for 
-        * displaying
-        *
-        * @since S60 3.2
-        * @param aItemArray an array of setting information
-        */
-        virtual void UpdateListBoxContentBearerSpecificL( 
-                                                    CDesCArray& aItemArray );
-        
-        /**
-        * From CmPluginBaseSettingsDlg
-        * displays the advanced settings dialog
-        *
-        * @since S60 3.2
-        */
-        virtual void RunAdvancedSettingsL();
-        
-    public: // from class MCmCommsDatWatcher
-        
-        /**
-         * Watch changes in CommsDat
-         */
-        void CommsDatChangesL();
-   
-    protected:  // From MEikMenuObserver 
-    
-        /**
-        * From MEikMenuObserver
-        * displays the options menu
-        *
-        * @param aResourceId the options menu to use
-        * @param aMenuPane a pointer to the menu pane control
-        * @since S60 3.2
-        */
-        virtual void DynInitMenuPaneL( TInt aResourceId, 
-                                             CEikMenuPane* aMenuPane ) ;
-
-        /** From CAknDialog */
-        TBool OkToExitL( TInt aButtonId );
-    
-    private: // Constructors
-    
-        CmPluginVpnSettingsDlg( CCmPluginBaseEng& aCmPluginBaseEng );    
-    
-    private: // From CmPluginBaseSettingsDlg
-        
-        /**
-        * From CmPluginBaseSettingsDlg
-        * according to the setting type the correct edit dialog is displayed
-        *
-        * @since S60 3.2
-        * @param aAttribute
-        * @param aCommandId
-        */
-        virtual TBool ShowPopupSettingPageL( TUint32 aAttribute, 
-                                             TInt aCommandId  );
-
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Get help contest of the plugin
-        *
-        * @since S60 5.0
-        */
-				virtual void GetHelpContext( TCoeHelpContext& aContext ) const;
-                                             
-    private: // New functions
-    
-        /**
-        * Displays a radio button dialog for user selection of connection
-        * methods (filters out VPN connection method) takes responsibility
-        * for updating the setting value
-        *
-        * @since S60 3.2
-        * @returns ETrue if update was made
-        */
-        TBool ShowIapSelectionSettingPageL();
-        
-    private: // From MEikCommandObserver
-    
-        /**
-        * From MEikCommandObserver
-        * see base class for description
-        *
-        * @since S60 3.2
-        * @param aCommandId
-        */
-        virtual void ProcessCommandL( TInt aCommandId );
-
-
-        /**
-        * Checks whether the compulsory fields have been filled or not.
-        *
-        * @since S60 3.2
-        * @return Whether the compulsory fields have been filled or not.
-        */
-        TBool CompulsoryFilledL();
-        
-    };
-
-#endif // CMPLUGINVPN_SETTINGS_DLG_H
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/inc/cmvpncommonconstants.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
-* Copyright (c) 2006 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:  constants for the VPN plugin
-*
-*/
-
-#ifndef CMVPNCOMMONCONSTANTS_H
-#define CMVPNCOMMONCONSTANTS_H
-
-// CONSTANTS
-_LIT( KPluginVPNResDirAndFileName, "z:cmpluginvpnui.rsc" );
-
-// Do not change this default to other value because proxy number is using this value as default port number
-const TInt KVpnProxyPortNumberDefault = 0;
-
-#endif  // CMVPNCOMMONCONSTANTS_H
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/loc/cmpluginvpn.loc	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Resource definitions for project VPN Plugin
-*
-*/
-
-//  LOCALISATION STRINGS
-
-//d: First line of a double large graphic style listbox - VPN specific
-//l: list_single_graphic_pane_t1_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_bearer_supported_vpn "VPN"
-
-//d: The name for the newly created connection method
-//l: list_double_graphic_pane_t1
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_method_name_vpn "VPN over ’%U’"
-
-
-//d: Note displayed upon opening the VPN connection method settings
-//d: if the VPN connection method is invalid
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_vpn_info_vpn_iap_incomplete "VPN access point is incomplete. Try reconfiguring the access point."
-
-//d: VPN policy setting
-//l: list_setting_pane_t1
-//w:
-//r: 3.2
-//
-#define qtn_vpn_sett_vpn_iap_policy_reference "VPN policy"
-
-//d: Possible value for VPN policy setting
-//l: list_set_graphic_pane_t1
-//w:
-//r: 5.1
-//
-#define qtn_vpn_sett_vpn_iap_policy_reference_compulsory "Must be defined"
-
-//d: Information note indicatinf that no VPN policies are installed and that
-//d: one is needed if a VPN connection method is to be used
-//l: popup_note_window
-//w:
-//r: 3.2
-//
-#define qtn_vpn_info_no_policies_installed "No VPN policies installed. Please install a policy via VPN policies view."
-
-//d: Internet access point setting
-//l: list_setting_pane_t1
-//w:
-//r: 3.2
-//
-#define qtn_vpn_sett_vpn_iap_real_netw_reference "Network connection"
-
-//d: Setting value text in internet access point settings view
-//l: list_set_graphic_pane_t1
-//w:
-//r: 5.1
-//
-#define qtn_vpn_sett_vpn_iap_real_netw_ref_compulsory "Must be defined"
-
-//d: Note displayed to indicate that the VPN client is not available
-//d: and new VPN connection methods cannot be added. This may be 
-//d: due to the VPN client residing on a disconnected memory card
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_vpn_info_mgmt_ui_not_accessible "Unable to access VPN data. Memory card might not be accessible."
-
-//d: Title of Select VPN Policy list query.
-//l: heading_pane_t1 
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_prmpt_vpn_policy "Select VPN policy:"
-
-//d: Title of Select VPN real connection selection query list box
-//l: heading_pane_t1 
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_prmpt_vpn_real_connection "Select connection:"
-
-//d: Primary item in 'Select VPN real connection selection query'
-//d: for selecting a WLAN network as an underlying VPN connection method
-//l: list_double_large_graphic_pane_t1_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_vpn_easy_wlan "WLAN network"
-
-//d: Secondary item in the 'Select VPN real connection selection query'
-//d: paired with the WLAN network primary item
-//l: list_double_large_graphic_pane_t2_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_vpn_easy_wlan_prompt "Prompt for WLAN"
-
-//d: Destination list text, notes the number of connections methods
-//d: belonging to the destination
-//l: list_double_large_graphic_pane_t2_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_conn_methods_amount_many    "%N connection methods"
-
-//d: Destination list text. Notes that the destination has one 
-//d: connection method
-//l: list_double_large_graphic_pane_t2_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_conn_methods_amount_one      "1 connection method"
-
-//d: Note shown when attempting to create a VPN access point using the wizard.
-//d: Shown if there are no valid underlying connection methods to select.
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_info_no_cm_to_bind_to "Unable to add. No valid destinations or connection methods to be used exist."
-
-//d: Query displayed when an incomplete VPN connection method is tried to be saved
-//d: Operation is confirmed with this confirmation query.
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_vpn_quest_vpn_iap_incomplete_delete "Incomplete VPN access point details. Exit without saving?"
-
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/src/cmpluginproxyvpn.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
-* Copyright (c) 2006 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:  VPN plug-in's ECom proxy descriptor.
-*
-*/
-
-#include "cmpluginvpn.h"
-#include <e32std.h>
-#include <ecom/implementationproxy.h>
-
-// Exported proxy for instantiation method resolution
-// Define the interface UIDs
-const TImplementationProxy ImplementationTable[] = 
-    {
-    IMPLEMENTATION_PROXY_ENTRY( KPluginVPNBearerTypeUid, CCmPluginVpn::NewL)
-    };
-
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
-    {
-    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
-
-    return ImplementationTable;
-    }
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/src/cmpluginvpn.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2090 +0,0 @@
-/*
-* Copyright (c) 2006 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:  VPN plug-in IF implementation class.
-*
-*/
-
-#include <AknsUtils.h>
-#include <cmpluginvpn.mbg>
-#include <cmpluginvpnui.rsg>
-#include <cmmanager.rsg>
-#include <StringLoader.h>
-#include <data_caging_path_literals.hrh>
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-#include <cmcommonui.h>
-#include <aknPopup.h>
-#include <aknlistquerydialog.h>
-#include <AknIconArray.h>
-#include <vpnapidefs.h>
-#include <cmpluginwlandef.h>
-// #include <vpnapi.h>
-#include <centralrepository.h>
-#include <settingsinternalcrkeys.h>
-#include <featmgr.h>
-#include <ConeResLoader.h>
-#include <bautils.h>
-
-#include <commsdattypesv1_1_partner.h>
-#include <commsdattypeinfov1_1_internal.h>
-
-#include "cmlogger.h"
-#include "cmmanagerimpl.h"
-#include "cmdestinationimpl.h"
-#include "cmvpncommonconstants.h"
-#include <cmcommonconstants.h>
-#include "cmpluginvpn.h"
-#include "cmpvpnsettingsdlg.h"
-#include "cmpvpnpolicyselectiondlg.h"
-#include "cmpvpnnextlayerselectdlg.h"
-
-using namespace CMManager;
-
-_LIT( KPluginVpnFileIcons, "z:cmpluginvpn.mbm" );
-//_LIT(KListItemFormat, "%d\t%S\t%S");
-
-static const TCmAttribConvTable SVpnConvTbl[] = 
-    {
-        { EVpnServicePolicyName, EPluginVpnAttribRangeMax, NULL },
-        { EVpnServicePolicy, KCDTIdVPNPolicyName, NULL,
-          R_QTN_VPN_SETT_VPN_IAP_POLICY_REFERENCE,
-          0, EConvCompulsory, R_QTN_VPN_SETT_VPN_IAP_POLICY_REFERENCE_COMPULSORY, 0, NULL, NULL },
-        { EVpnServicePolicyName, 0, NULL,
-          R_QTN_VPN_SETT_VPN_IAP_POLICY_REFERENCE,
-          0, EConvCompulsory, R_QTN_VPN_SETT_VPN_IAP_POLICY_REFERENCE_COMPULSORY, 0, NULL, NULL },
-        { EVpnIapId, KCDTIdVPNIAPRecord, NULL },
-        { EVpnNetworkId, KCDTIdVPNNetwork, &ReadOnlyAttributeL },
-        { 0, 0, NULL }
-    };
-
-static const TCmAttribConvTable SVpnVirtualIAPNextLayerConvTbl[] = 
-    {
-        { ECmNextLayerIapId, ECmNextLayerSNAPId+1, NULL },
-        { ECmNextLayerIapId, KCDTIdVirtualNextLayerIAP, NULL },
-        { ECmNextLayerSNAPId, KCDTIdVirtualNextLayerSNAP, NULL },
-        { 0, 0, NULL }
-    };
-    
-_LIT( KVpnVirtualBearerName, "vpnbearer" );
-_LIT( KVpnVirtualBearerAgent, "vpnconnagt.agt" );
-_LIT( KVpnVirtualBearerNif, "tunnelnif" );
-
-// constants needed for the virtualbearer table
-const TInt KNoTimeout = -1;
-const TUint32 KLastSessionTimeout = 3;
-
-
-const TUint32 KContainsVpn =        0x01;
-const TUint32 KLinksBackToParent =  0x02;
-const TUint32 KEmptyDest =          0x04;
-const TUint32 KNoNonVirtuals =      0x08;
-
-const TUint32 KBindDenied = KLinksBackToParent | KContainsVpn;
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::NewL()
-// --------------------------------------------------------------------------
-//
-CCmPluginVpn* CCmPluginVpn::NewL( TCmPluginInitParam* aInitParam )
-    {
-
-    CRepository* repository = CRepository::NewLC(KCRUidCommunicationSettings);
-
-    TInt vpnSupported;
-    repository->Get(KSettingsVPNSupported, vpnSupported);
-
-    CleanupStack::PopAndDestroy(repository);
-
-    if( !vpnSupported )
-        {
-        User::Leave( KErrNotSupported );
-        }
-
-    CCmPluginVpn* self = new( ELeave ) CCmPluginVpn( aInitParam );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::~CCmPluginVpn()
-// --------------------------------------------------------------------------
-//
-CCmPluginVpn::~CCmPluginVpn()
-    {
-    CCmPluginVpn::AdditionalReset();
-    
-    RemoveResourceFile( KPluginVPNResDirAndFileName );
-    
-    iBindableMethods.Reset();
-    iBindableMethods.Close();
-    delete iPolicyName;
-    CLOG_CLOSE;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::CreateInstanceL
-// --------------------------------------------------------------------------
-//
-CCmPluginBaseEng* CCmPluginVpn::CreateInstanceL( TCmPluginInitParam& aInitParam ) const
-    {
-    CCmPluginVpn* self = new( ELeave ) CCmPluginVpn( &aInitParam );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    return self;
-    }
-    
-// --------------------------------------------------------------------------
-// CCmPluginVpn::CCmPluginVpn()
-// --------------------------------------------------------------------------
-//
-CCmPluginVpn::CCmPluginVpn( TCmPluginInitParam* aInitParam )
-    : CCmPluginBaseEng( aInitParam )
-    , iBindableMethods( KCmArraySmallGranularity )
-    {
-    CLOG_CREATE;
-    iBearerType = KPluginVPNBearerTypeUid;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::ConstructL()
-// --------------------------------------------------------------------------
-//
-void CCmPluginVpn::ConstructL()
-    {
-    CCmPluginBaseEng::ConstructL();
-
-    TRAP_IGNORE( iVirtualTableId = 
-                        CCDVirtualIAPNextLayerRecord::TableIdL( Session() ) );
-    if( !iVirtualTableId )
-        {
-        iVirtualTableId = CCDVirtualIAPNextLayerRecord::CreateTableL( Session() );
-        }
-
-    AddResourceFileL( KPluginVPNResDirAndFileName );
-    
-    AddConverstionTableL( (CCDRecordBase**)&iServiceRecord, NULL, SVpnConvTbl );
-    
-    iPolicyName = KNullDesC().AllocL();
-    }
-    
-// --------------------------------------------------------------------------
-// CCmPluginVpn::GetIntAttributeL()
-// --------------------------------------------------------------------------
-//
-TUint32 CCmPluginVpn::GetIntAttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::GetIntAttributeL" );
-
-    TUint32 retVal( 0 );
-    
-    switch( aAttribute )
-        {
-        case ECmBearerIcon:
-            {
-            TAknsItemID id;
-            
-            MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-                   
-            TParse mbmFile;
-            User::LeaveIfError( mbmFile.Set( KPluginVpnFileIcons, 
-                                             &KDC_BITMAP_DIR, 
-                                             NULL ) );
-                   
-            retVal = (TUint32)AknsUtils::CreateGulIconL( 
-                                    skinInstance, 
-                                    id,
-                                    mbmFile.FullName(), 
-                                    EMbmCmpluginvpnQgn_prop_vpn_access_point, 
-                                    EMbmCmpluginvpnQgn_prop_vpn_access_point_mask );
-            }
-            break;
-               
-        case ECmCommsDBBearerType:
-            {
-            retVal = KCommDbBearerVirtual;
-            }
-            break;
-        
-        case ECmDefaultUiPriority:
-        case ECmDefaultPriority:            
-            {
-            retVal = aAttribute == ECmDefaultPriority ?
-                        GlobalBearerPriority( TPtrC(KCDTypeNameVPNService) ) :
-                        GlobalUiBearerPriority( TPtrC(KCDTypeNameVPNService) );
-            }
-            break;  
-            
-        case EVpnIapId:
-            {
-            if( !ServiceRecordExists() )
-                {
-                User::Leave( KErrNotSupported );
-                }
-
-            retVal = ServiceRecord().iServiceIAP;
-            }
-            break;
-        case EVpnNetworkId:
-            {
-            if( !ServiceRecordExists() )
-                {
-                User::Leave( KErrNotSupported );
-                }
-
-            retVal = ServiceRecord().iServiceNetwork;
-            }
-            break;
-        case ECmNextLayerIapId:    
-            {
-            retVal = iVirtualRecord->iNextLayerIAP;
-            }  
-            break;
-        case ECmNextLayerSNAPId:           
-            {
-            retVal = iVirtualRecord->iNextLayerSNAP;
-            }  
-            break;
-        case ECmIapId:
-        case ECmId:
-        case ECmWapId:
-        case ECmIapServiceId:
-        case ECmInvalidAttribute:
-        case ECmLoadResult:
-        case ECmBearerType:
-        case ECmSeamlessnessLevel:
-        case ECmElementID:
-        case ECmNetworkId:
-        case ECmProxyPortNumber:
-        case ECmExtensionLevel:
-        case ECmWapIPWSPOption:
-        case ECmWapIPProxyPort:
-        case ECmNamingMethod:
-            {
-            retVal = CCmPluginBaseEng::GetIntAttributeL( aAttribute );
-            }
-            break;
-        
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-        }
-        
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::GetBoolAttributeL()
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginVpn::GetBoolAttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::GetBoolAttributeL" );
-
-    TBool retVal( EFalse );
-
-    switch( aAttribute )
-        {
-        case ECmAddToAvailableList:
-            {
-            retVal = EFalse;
-            }
-            break;
-            
-        case ECmChargeCardUsageEnabled:
-            {
-            retVal = EFalse;
-            }
-            break;
-        case ECmBearerHasUi:
-            {
-            retVal = ETrue;
-            break;
-            }
-        case ECmCoverage:
-        case ECmDestination:
-        case ECmIPv6Supported:
-        case ECmHidden:
-        case ECmProtected:
-        case ECmMetaHighlight:
-        case ECmMetaHiddenAgent:
-        case ECmProxyUsageEnabled:
-        case ECmConnected:
-        case ECmIsLinked:
-        case ECmWapIPSecurity:
-            {
-            retVal = CCmPluginBaseEng::GetBoolAttributeL( aAttribute );
-            }
-            break;
-        case ECmVirtual:
-            {
-            return ETrue;
-            }           
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            
-            }
-        }
-        
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::GetStringAttributeL()
-// --------------------------------------------------------------------------
-//
-HBufC* CCmPluginVpn::GetStringAttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::GetStringAttributeL" );
-
-    HBufC* retVal = NULL;
-    
-    switch( aAttribute )
-        {           
-        case ECmBearerSupportedName:
-            {
-            retVal = AllocReadL( R_QTN_NETW_CONSET_BEARER_SUPPORTED_VPN );
-            }
-            break;
-        
-        case EVpnServicePolicyName:
-            {
-            if( !ServiceRecordExists() )
-                {
-                User::Leave( KErrNotSupported );
-                }
-            else 
-                {
-                CCmPluginVpn* tmp = const_cast< CCmPluginVpn * >( this );
-                tmp->UpdatePolicyNameL();
-                }
-            retVal = iPolicyName->AllocL();
-            break;
-            }
-        case EVpnServicePolicy:
-            {
-            if( !ServiceRecordExists() )
-                {
-                User::Leave( KErrNotSupported );
-                }
-
-            if( !ServiceRecord().iServicePolicy.IsNull() )
-                {
-                retVal = ServiceRecord().iServicePolicy.GetL().AllocL();
-                } 
-            else
-                {
-                retVal = KNullDesC().AllocL();
-                }
-            }
-            break;
-            
-        case ECmName:   
-        case ECmProxyServerName:
-        case ECmProxyProtocolName:
-        case ECmProxyExceptions:
-        case ECmWapIPGatewayAddress:
-        case ECmWapIPProxyLoginName:
-        case ECmWapIPProxyLoginPass:
-        case ECmStartPage:
-            {
-            retVal = CCmPluginBaseEng::GetStringAttributeL( aAttribute );
-            }
-            break;
-            
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-            break;
-        }
-        
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::GetString8AttributeL()
-// --------------------------------------------------------------------------
-//
-HBufC8* CCmPluginVpn::GetString8AttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::GetString8AttributeL" );
-
-    HBufC8* retVal = NULL;
-    
-    switch( aAttribute )
-        {
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-            break;
-        }
-        
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::SetIntAttributeL()
-// --------------------------------------------------------------------------
-//
-void CCmPluginVpn::SetIntAttributeL( const TUint32 aAttribute, 
-                                            TUint32 aValue )
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::SetIntAttributeL" );
-
-    switch( aAttribute )
-        {
-        case ECmNextLayerIapId: 
-        case EVpnIapId:
-            {
-            CheckRecordIdValidityL( this, EVpnIapId, &aValue );
-            
-            // ServiceRecord.iServiceIAP should be 0 according to 
-            // DM CommsDat Contents v1.4, but for now it is made
-            // backward compatible
-            if( !ServiceRecordExists() )
-                {
-                User::Leave( KErrNotSupported );
-                }
-            
-            ServiceRecord().iServiceIAP = aValue;
-            ServiceRecord().iServiceNetwork = 0;
-            ServiceRecord().iServiceSNAP = 0;
-            iVirtualRecord->iNextLayerIAP = aValue;
-            iVirtualRecord->iNextLayerSNAP = 0;            
-            }
-            break;
-
-        case EVpnNetworkId:
-        case ECmNextLayerSNAPId:
-            {
-            // To keep backwards compability, keep these 2 attributes
-            // (EVpnNetworkId & ECmNextLayerSNAPId) together even though
-            // network id and destination id are no longer exactly the same.
-            if( !ServiceRecordExists() )
-                {
-                User::Leave( KErrNotSupported );
-                }
-
-            TInt destinationId( 0 );
-            destinationId = CheckValidityAndConvertDestinationIdL( aValue );
-            TMDBElementId defaultAP = DefaultAPRecordL();
-            
-            ServiceRecord().iServiceIAP = 0;
-            ServiceRecord().iServiceNetwork = 0;
-            ServiceRecord().iServiceSNAP = defaultAP;
-            iVirtualRecord->iNextLayerIAP = 0;
-            iVirtualRecord->iNextLayerSNAP = destinationId;
-            }
-            break;
-
-        case ECmSeamlessnessLevel:
-        case ECmProxyPortNumber:
-        case ECmNamingMethod:
-        case ECmWapIPWSPOption:
-        case ECmWapIPProxyPort:
-            {
-            CCmPluginBaseEng::SetIntAttributeL( aAttribute, aValue );
-            }
-            break;
-            
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-            break;
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::SetBoolAttributeL()
-// --------------------------------------------------------------------------
-//
-void CCmPluginVpn::SetBoolAttributeL( const TUint32 aAttribute, 
-                                      TBool aValue )
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::SetBoolAttributeL" );
-
-    switch( aAttribute )
-        {
-        case ECmChargeCardUsageEnabled:
-            {
-            User::Leave( KErrNotSupported );
-            }
-            break;
-
-        case ECmHidden:
-        case ECmProtected:
-        case ECmMetaHighlight:
-        case ECmMetaHiddenAgent:
-        case ECmProxyUsageEnabled:
-        case ECmWapIPSecurity:
-            {
-            CCmPluginBaseEng::SetBoolAttributeL( aAttribute, aValue );
-            }
-            break;
-            
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-            break;
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::SetStringAttributeL()
-// --------------------------------------------------------------------------
-//
-void CCmPluginVpn::SetStringAttributeL( const TUint32 aAttribute, 
-                                        const TDesC16& aValue )
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::SetStringAttributeL" );
-
-    switch( aAttribute )
-        {
-        case EVpnServicePolicyName:
-            {
-            HBufC* tmp = aValue.AllocLC();
-            delete iPolicyName;
-            iPolicyName = tmp;
-            CleanupStack::Pop( tmp );
-            break;
-            }        
-        case EVpnServicePolicy:
-            {
-            if( !ServiceRecordExists() )
-                {
-                User::Leave( KErrNotSupported );
-                }
-            
-            CLOG_WRITE_1( "New policy set:[%S]", &aValue );
-            ServiceRecord().iServicePolicy.SetL( aValue );
-            }
-            break;
-        case ECmProxyServerName:
-            {
-            CCmPluginBaseEng::SetStringAttributeL( aAttribute, aValue );
-            if( !aValue.Length() || !iProxyRecord->iPortNumber )
-                {
-                iProxyRecord->iPortNumber = KVpnProxyPortNumberDefault;
-                }
-            }
-            break;
-
-        case ECmName:
-        case ECmProxyProtocolName:
-        case ECmProxyExceptions:
-        case ECmWapIPGatewayAddress:
-        case ECmWapIPProxyLoginName:
-        case ECmWapIPProxyLoginPass:
-        case ECmStartPage:
-            {
-            CCmPluginBaseEng::SetStringAttributeL( aAttribute, aValue );
-            }
-            break;
-
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-            break;
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::SetString8AttributeL()
-// --------------------------------------------------------------------------
-//
-void CCmPluginVpn::SetString8AttributeL( const TUint32 aAttribute, 
-                                         const TDesC8& /*aValue*/ )
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::SetString8AttributeL" );
-
-    switch( aAttribute )
-        {
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-            break;
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::CanHandleIapIdL()
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginVpn::CanHandleIapIdL( TUint32 aIapId ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::CanHandleIapIdL1" );
-    TBool retVal( EFalse );
-    
-    CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord *>
-                            (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
-        
-    CleanupStack::PushL( iapRecord );
-    iapRecord->SetRecordId( aIapId );
-    
-    TRAPD( err, iapRecord->LoadL( Session() ));
-
-    if( !err )
-        {
-        CanHandleIapIdL( iapRecord );
-        }
-    
-    CleanupStack::PopAndDestroy( iapRecord );
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::CanHandleIapIdL()
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginVpn::CanHandleIapIdL( CCDIAPRecord *aIapRecord ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::CanHandleIapIdL" );
-    
-    TBool retVal( EFalse );
-    
-    if( TPtrC(aIapRecord->iServiceType) == TPtrC(KCDTypeNameVPNService) ||
-        TPtrC(aIapRecord->iBearerType) == TPtrC(KCDTypeNameVirtualBearer) )
-        {
-        retVal = ETrue;
-        }
-
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::RunSettingsL()
-// --------------------------------------------------------------------------
-//        
-TInt CCmPluginVpn::RunSettingsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::RunSettingsL" );
-    CmPluginVpnSettingsDlg* dlg = CmPluginVpnSettingsDlg::NewL( *this );
-    
-    return dlg->ConstructAndRunLD();
-    }        
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::LoadServiceSettingL()
-// --------------------------------------------------------------------------
-//        
-void CCmPluginVpn::LoadServiceSettingL()
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::LoadServiceSettingL" );
-    
-    if( TPtrC(KCDTypeNameVPNService) == iIapRecord->iServiceType  )
-        {
-        iServiceRecord = static_cast<CCDVPNServiceRecord *>
-                    (CCDRecordBase::RecordFactoryL(KCDTIdVPNServiceRecord));
-        }
-    else
-        // this IAP service is not supported by this plugin.
-        {
-        User::Leave( KErrNotSupported );
-        }
-
-        
-    CCmPluginBaseEng::LoadServiceSettingL();
-    }
-    
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::LoadAdditionalRecordsL()
-// --------------------------------------------------------------------------
-//        
-void CCmPluginVpn::LoadAdditionalRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::LoadAdditionalRecordsL" );
-
-    iVirtualRecord = new (ELeave) CCDVirtualIAPNextLayerRecord( iVirtualTableId );
-    
-    CMDBRecordSet<CCDVirtualIAPNextLayerRecord>* virtualRS = 
-              new(ELeave) CMDBRecordSet<CCDVirtualIAPNextLayerRecord>( iVirtualTableId );
-    CleanupStack::PushL( virtualRS );
-    
-    CCDVirtualIAPNextLayerRecord* record = 
-                            new (ELeave) CCDVirtualIAPNextLayerRecord( iVirtualTableId );
-    
-    record->iIAP = iIapId;
-    CleanupStack::PushL( record );
-    virtualRS->iRecords.AppendL( record );
-    CleanupStack::Pop( record );
-    record = NULL;
-    
-    if( virtualRS->FindL( Session() ) )
-        {
-        iVirtualRecord->SetRecordId( (*virtualRS)[0]->RecordId() );
-        
-        iVirtualRecord->LoadL( Session() );
-        
-        CLOG_WRITE_3( "Next layer: IAP[%d], NextSNAP[%d], NextIAP[%d]",
-                      TUint( iVirtualRecord->iIAP ),
-                      TUint( iVirtualRecord->iNextLayerSNAP ),
-                      TUint( iVirtualRecord->iNextLayerIAP ) );
-        }
-    else
-        {
-        CLOG_WRITE( "Virtual records not found" );
-        }
-    
-    CleanupStack::PopAndDestroy( virtualRS );
-    AddConverstionTableL( (CCDRecordBase**)&iVirtualRecord, NULL, SVpnVirtualIAPNextLayerConvTbl );
-    
-    if (iIapRecord->iRecordName.GetL() == KNullDesC) 
-        {
-        //now we have next layer info, so generate default cm name if name is empty (new cm)
-        GenerateDefaultCmNameL();
-        }
-        
-    if ( !iProxyRecord->iPortNumber )
-        {
-        iProxyRecord->iPortNumber = KVpnProxyPortNumberDefault;
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::InitializeWithUiL()
-// --------------------------------------------------------------------------
-//        
-TBool CCmPluginVpn::InitializeWithUiL( TBool /*aManuallyConfigure*/ )
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::InitializeWithUiL" );
-    TInt retVal( EFalse );
-    
-    // Compile a list of bindable methods, issue a warning if none found
-    if ( BindableRealConnectionsExistL() )
-        {
-        // check if the intended destination is not available for VPN,
-        // or, if the destination has not been set yet, whether there is 
-        // at least one suitable destination to place it in
-        TBool validParent = EFalse;
-        
-        if ( iParentDest )
-            {
-            // parent destination is known
-            // check if it is not linked by any other VPN
-            validParent = !HasUpstreamVpnL( iParentDest, ETrue );
-            }
-        else
-            {
-            // parent destination is not known yet
-            // check if there is any destination into which this VPN could be put
-
-            // trigger the recalculation
-            RArray<TUint32> parents ( CmMgr().DestinationCountL() );
-            CleanupClosePushL( parents );
-            
-            CmMgr().AllDestinationsL( parents );
-            
-            FilterPossibleParentsL( parents );
-
-            // if there is only one such destination, we should filter out 
-            // that one from the underlying candidates
-            if ( parents.Count() == 1 )
-                {
-                TInt destIndex = iBindableMethods.Find( parents[0] );
-                if ( destIndex != KErrNotFound )
-                    {
-                    // got it, now remove
-                    iBindableMethods.Remove( destIndex );
-                    }
-
-                if ( iBindableMethods.Count() )
-                    {
-                    // if there are still some methods to bind to,
-                    // mark the destination as valid
-                    validParent = ETrue;
-                    }
-                    
-                }
-            else 
-                {
-                validParent = ( parents.Count() > 0 );
-                }
-                
-            CleanupStack::PopAndDestroy( &parents );
-            }
-
-        if ( !validParent )
-            {
-            TCmCommonUi::ShowNoteL( R_CMWIZARD_NO_VPN_STACKING,
-                                    TCmCommonUi::ECmErrorNote );
-            
-            return retVal;
-            }
-              
-        
-        // Check VPN policies installed on the device
-        if ( ShowPolicySelectionDlgL() )
-            {
-            retVal = ShowRealConnectionSelectionDlgL();
-
-            if ( retVal )
-                {
-                if ( iIapRecord->iRecordName.GetL() == KNullDesC ) 
-                    {
-                    // now we have next layer info, so generate default cm name 
-                    GenerateDefaultCmNameL();
-                    }
-                
-                }
-            }
-        }
-    else
-        {
-        HBufC* buf = AllocReadL( R_QTN_NETW_CONSET_INFO_NO_CM_TO_BIND_TO );
-        TPtr ptr ( buf->Des() );
-        CleanupStack::PushL( buf );
-        TCmCommonUi::ShowNoteL( ptr, TCmCommonUi::ECmErrorNote );
-        CleanupStack::PopAndDestroy( buf );
-        }              
-    
-    return retVal;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::ServiceRecord()
-// --------------------------------------------------------------------------
-//        
-CCDVPNServiceRecord& CCmPluginVpn::ServiceRecord() const
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::ServiceRecord" );
-    return *static_cast<CCDVPNServiceRecord*>( iServiceRecord );
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::ServiceRecordExists()
-// --------------------------------------------------------------------------
-// 
-TBool CCmPluginVpn::ServiceRecordExists() const
-    {
-    if ( !iServiceRecord )
-        {
-        return EFalse;
-        }
-    return ETrue;
-    }
-    
-// --------------------------------------------------------------------------
-// CCmPluginVpn::CreateNewServiceRecordL()
-// --------------------------------------------------------------------------
-//        
-void CCmPluginVpn::CreateNewServiceRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::CreateNewServiceRecordL" );
-
-    delete iServiceRecord; iServiceRecord = NULL;
-    
-    iServiceRecord = static_cast<CCDVPNServiceRecord *>
-                    (CCDRecordBase::RecordFactoryL( KCDTIdVPNServiceRecord ));
-
-    CLOG_WRITE("New service record, policy emptied");
-    ServiceRecord().iServicePolicy.SetL( KNullDesC );
-    ServiceRecord().iServiceIAP = 0;
-    ServiceRecord().iServiceNetwork = 0;
-    ServiceRecord().iServiceSNAP = 0;
-
-    
-    iProxyRecord->iPortNumber = KVpnProxyPortNumberDefault;
-
-    SetIntAttributeL( ECmSeamlessnessLevel, ESeamlessnessShowprogress );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginVpn::CreateAdditionalRecordsL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginVpn::CreateAdditionalRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::CreateAdditionalRecordsL" );
-
-    delete iVirtualRecord;
-    iVirtualRecord = NULL;
-    
-    iVirtualRecord = new (ELeave) CCDVirtualIAPNextLayerRecord( iVirtualTableId );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginVpn::UpdateServiceRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginVpn::UpdateServiceRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::UpdateServiceRecordL" );
-
-    CCmPluginBaseEng::UpdateServiceRecordL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginVpn::UpdateAdditionalRecordsL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginVpn::UpdateAdditionalRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::UpdateAdditionalRecordsL" );
-
-    CheckIfNameModifiedL( iVirtualRecord );
-    
-    if( !iVirtualRecord->RecordId() )
-        {
-        iVirtualRecord->SetRecordId( KCDNewRecordRequest );
-        
-        iVirtualRecord->iIAP = iIapId;
-        iVirtualRecord->StoreL( Session() );
-        }
-    else
-        {
-        iVirtualRecord->ModifyL( Session() );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginVpn::ServiceRecordIdLC
-// ---------------------------------------------------------------------------
-//
-void CCmPluginVpn::ServiceRecordIdLC( HBufC* &aName, 
-                                      TUint32& aRecordId )
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::ServiceRecordIdLC" );
-
-    aName = TPtrC( KCDTypeNameVPNService ).AllocLC();
-    aRecordId = iServiceRecord->RecordId();
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::BearerRecordIdLC()
-// --------------------------------------------------------------------------
-//        
-void CCmPluginVpn::BearerRecordIdLC( HBufC* &aBearerName, 
-                                     TUint32& aRecordId )
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::BearerRecordIdLC" );
-
-    CMDBRecordSet<CCDVirtualBearerRecord>* bearersRS = 
-              new(ELeave) CMDBRecordSet<CCDVirtualBearerRecord>
-                                                   (KCDTIdVirtualBearerRecord);
-    CleanupStack::PushL( bearersRS );
-
-    // Now try to find the linked proxy record
-    // create new record
-    CCDVirtualBearerRecord* bearerRecord = 
-                static_cast<CCDVirtualBearerRecord *>
-                    (CCDRecordBase::RecordFactoryL(KCDTIdVirtualBearerRecord));
-
-    CleanupStack::PushL( bearerRecord );
-    
-    bearerRecord->iBearerAgent.SetL( KVpnVirtualBearerAgent );
-    
-    bearersRS->iRecords.AppendL( bearerRecord );
-
-    CleanupStack::Pop( bearerRecord );
-    bearerRecord = NULL;
-    
-    CLOG_WRITE_1( "Looking for bearer: [%d]", TUint32(iIapRecord->iService) );
-    
-    if ( !bearersRS->FindL( Session() ) )
-        // No bearer record found -> create a default one.
-        {
-        bearerRecord = static_cast<CCDVirtualBearerRecord *>
-                    (CCDRecordBase::RecordFactoryL(KCDTIdVirtualBearerRecord));
-        CleanupStack::PushL(bearerRecord);
-
-        bearerRecord->iRecordName.SetL( KVpnVirtualBearerName );
-        bearerRecord->iBearerAgent.SetL( KVpnVirtualBearerAgent );
-        bearerRecord->iVirtualBearerNifName.SetL(KVpnVirtualBearerNif);
-        bearerRecord->iLastSocketActivityTimeout = (TUint32)KNoTimeout;
-        bearerRecord->iLastSessionClosedTimeout = KLastSessionTimeout;
-        bearerRecord->iLastSocketClosedTimeout = (TUint32)KNoTimeout;
-        
-        bearerRecord->SetRecordId( KCDNewRecordRequest );
-        bearerRecord->StoreL( Session() );
-        
-        aRecordId = bearerRecord->RecordId();
-
-        CleanupStack::PopAndDestroy(bearerRecord);
-        }
-    else
-        {
-        aRecordId = (*bearersRS)[0]->RecordId();
-        }
-
-    CleanupStack::PopAndDestroy( bearersRS );
-
-    aBearerName = TPtrC( KCDTypeNameVirtualBearer ).AllocLC();
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::AdditionalReset()
-// --------------------------------------------------------------------------
-//        
-void CCmPluginVpn::AdditionalReset()
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::AdditionalReset" );
-
-    delete iNetworkRecord;
-    iNetworkRecord = NULL;
-
-    delete iVirtualRecord;
-    iVirtualRecord = NULL;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::PrepareToUpdateRecordsL()
-// --------------------------------------------------------------------------
-//        
-void CCmPluginVpn::PrepareToUpdateRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::PrepareToUpdateRecordsL" );
-    // Check here if every data of the connection method is valid
-    // before records were saved to CommsDat.
-    // Set incorrect attribute id in iInvalidAttribute and leave
-    // with KErrArgument.
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::ShowPolicySelectionDlgL
-// --------------------------------------------------------------------------
-//  
-TBool CCmPluginVpn::ShowPolicySelectionDlgL()
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::ShowPolicySelectionDlgL" );
-
-    TBool retVal ( EFalse );
-    
-    CmPluginVpnPolicySelectionDlg* dlg = 
-                                CmPluginVpnPolicySelectionDlg::NewL( *this );
-    CleanupStack::PushL( dlg );
-    retVal = dlg->ShowPolicySelectionListL();
-    CleanupStack::PopAndDestroy();
-    
-    return retVal;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::BindableRealConnectionsExistL
-// --------------------------------------------------------------------------
-//  
-TBool CCmPluginVpn::BindableRealConnectionsExistL()
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::BindableRealConnectionsExistL" );
-
-    TBool retVal ( EFalse );
-    
-    iBindableMethods.Close();
-    
-    // Compile and array of destination IDs which the VPN CM can be bound to
-    // includes Uncategorised destination and Easy WLAN if valid
-    CmMgr().AllDestinationsL( iBindableMethods );
-
-    // Filter out invalid methods
-    for ( TInt i = 0; i < iBindableMethods.Count(); i++ )
-        {
-        TUint32 bindresult = 
-                CanDestUsedAsUnderlyingConnectionL( iBindableMethods[i] );
-                
-        if ( bindresult & (KBindDenied | KNoNonVirtuals | KEmptyDest ) )
-            {
-            iBindableMethods.Remove( i );
-            i--;
-            }
-        }
-    
-    // If there are destination IDs which the VPN CM can be bound to.
-    if( iBindableMethods.Count() )
-        {
-        retVal = ETrue;
-        }
-
-    // 2. Are there uncategorised connection methods which aren't virtual?
-    RArray<TUint32> cmArray ( KCmArrayMediumGranularity );
-    CleanupClosePushL( cmArray );
-    CmMgr().ConnectionMethodL( cmArray, EFalse );
-    
-    for ( TInt k = 0; k < cmArray.Count(); k++ )
-        {
-        TInt bearerType (0);
-        TRAPD( err, bearerType = CmMgr().GetConnectionMethodInfoIntL( 
-            cmArray[k], ECmBearerType ););
-
-        //if no plugin is found to handle the bearertype, GetConnectionMethodInfoIntL leaves with KErrNotSupported
-        if ( err == KErrNotSupported )				
-            {
-            //continue with the next element in the array
-            continue;
-            }
-                                                
-        // uncategorised contains a non-virtual connection method
-        if ( !CmMgr().GetBearerInfoBoolL( bearerType, ECmVirtual ) )
-            {
-            retVal = ETrue;
-            iBindableMethods.Append( KDestItemUncategorized );
-            break;
-            }
-        }
-    CleanupStack::PopAndDestroy( &cmArray );
-    
-    // 3. Is Easy WLAN available?
-    if ( FeatureManager::FeatureSupported( KFeatureIdProtocolWlan ) )
-        {        
-        // easy wlan is available
-        if ( CmMgr().EasyWlanIdL() )
-            {
-            iBindableMethods.Append( KDestItemEasyWlan );
-            retVal = ETrue;
-            }
-        }
-    
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::ShowRealConnectionSelectionDlgL
-// --------------------------------------------------------------------------
-//  
-TBool CCmPluginVpn::ShowRealConnectionSelectionDlgL()
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::ShowRealConnectionSelectionDlgL" );
-    TBool retVal ( EFalse );
-
-    TBool snapSelected ( EFalse );
-    TUint32 nextLayerId ( 0 );
-    
-    CmPluginVpnNextLayerSelectDlg* dlg = 
-                    CmPluginVpnNextLayerSelectDlg::NewL( *this,
-                                                         iBindableMethods,
-                                                         snapSelected,
-                                                         nextLayerId );
-    if ( dlg->ExecuteLD( R_VPN_REAL_CM_SELECTION_LIST ) )
-        {
-        // Handle results
-        retVal = ETrue;
-        }
-
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::IsLinkedToIap
-// --------------------------------------------------------------------------
-//  
-TBool CCmPluginVpn::IsLinkedToIap( TUint32 aIapId )
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::IsLinkedToIap" );
-
-    return ( ServiceRecord().iServiceIAP == aIapId );
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::IsLinkedToSnap
-// --------------------------------------------------------------------------
-//  
-TBool CCmPluginVpn::IsLinkedToSnap( TUint32 aSnapId )
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::IsLinkedToSnap" );
-
-    return ( iVirtualRecord->iNextLayerSNAP == aSnapId );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCmPluginVpn::RestoreAttributeL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginVpn::RestoreAttributeL( const TUint32 aAttribute )
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::RestoreAttributeL" );
-        
-    if ( aAttribute == EVpnServicePolicyName )
-        {
-        // also restore policy name
-        RVpnServ ps;
-        CleanupClosePushL<RVpnServ>( ps );
-        
-        TInt err = ps.Connect();
-        
-        if ( !err )
-            {
-            if( !ServiceRecordExists() )
-                {
-                User::Leave( KErrNotSupported );
-                }
-
-            CCDVPNServiceRecord *r = &(ServiceRecord());
-            TVpnPolicyName pId( r->iServicePolicy );
-            
-            TInt policyCount(0);
-            err = ps.EnumeratePolicies(policyCount);
-            if ( !err && policyCount)
-                {                
-                CArrayFixFlat<TVpnPolicyInfo>* policyList;
-                policyList = new (ELeave) CArrayFixFlat<TVpnPolicyInfo>(policyCount);
-                CleanupStack::PushL(policyList);
-
-                err = ps.GetPolicyInfoList(policyList);
-                
-                TBool found(EFalse);
-                
-                if ( err == KErrNone )
-                    {
-                    for (TInt i(0); i<policyList->Count(); ++i)
-                        {
-                        if (pId.Compare((*policyList)[i].iId) == 0 )
-                            {
-                            SetStringAttributeL( EVpnServicePolicyName,
-                                (*policyList)[i].iName );
-                            found = ETrue;
-                            break;    
-                            }
-                        }                    
-                    }
-                    
-                if ( err || (!found) )
-                    {
-                    CLOG_WRITE_1("Error when restoring policy attribute, [%d]", err );
-                    // the set policies are not installed,
-                    // or we can not access vpn client:
-                    // Must be defined qtn_selec_setting_compulsory is displayed 
-                    // for the invalid settings.                           
-                    // reset policy to compulsory
-                    SetStringAttributeL( EVpnServicePolicyName,
-                                                          KNullDesC() );
-                    SetStringAttributeL( EVpnServicePolicy, 
-                                                          KNullDesC() );                        
-                    }
-                CleanupStack::PopAndDestroy(policyList);              
-                }
-            }
-        CleanupStack::PopAndDestroy(); // ps.Close
-        }
-    // Type of EVpnIapId is ELink. This is plugin specified type.
-    // So, it should be handled here.
-    else if( aAttribute == EVpnIapId )
-        {
-        if( !ServiceRecordExists() )
-            {
-            User::Leave( KErrNotSupported );
-            }
-
-        ServiceRecord().iServiceIAP = 0;
-        iVirtualRecord->iNextLayerIAP = 0;
-        iVirtualRecord->iNextLayerSNAP = 0;
-        }
-    else
-        {
-        CCmPluginBaseEng::RestoreAttributeL( aAttribute );
-        }
-    }
-
-
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::GenerateDefaultCmNameL
-// --------------------------------------------------------------------------
-//
-void CCmPluginVpn::GenerateDefaultCmNameL()
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::GenerateDefaultCmNameL" );
-
-    //create default string
-    RFs fs;
-    CleanupClosePushL<RFs>( fs );
-    User::LeaveIfError( fs.Connect() );
-
-    // There may not be a UI context yet....
-    TFileName resourceFile;
-    _LIT( KDriveZ, "z:" );
-    resourceFile.Append( KDriveZ );
-    resourceFile.Append( KDC_RESOURCE_FILES_DIR );
-    _LIT( KCmmResFileName, "cmpluginvpnui.rsc" );
-    resourceFile.Append( KCmmResFileName );
-    BaflUtils::NearestLanguageFile( fs, resourceFile );
-
-    RResourceFile rf;
-    CleanupClosePushL<RResourceFile>( rf );
-    rf.OpenL( fs, resourceFile );
-    rf.ConfirmSignatureL( 0 );
-    HBufC8* readBuffer = rf.AllocReadLC( R_QTN_NETW_CONSET_METHOD_NAME_VPN );
-    const TPtrC16 ptrReadBuffer( (TText16*) readBuffer->Ptr(),
-                                 ( readBuffer->Length() + 1 ) >> 1 );
-    HBufC16* textBuffer=HBufC16::NewL( ptrReadBuffer.Length() );
-    CleanupStack::PushL( textBuffer );
-    *textBuffer=ptrReadBuffer;
-
-    // Find %U and replace it with %S
-    TPtr sourceString = textBuffer->Des();
-    _LIT(KPercentS,"%S");
-    _LIT(KPercentU,"%U");
-    TInt puPos = sourceString.Find(KPercentU);
-    if ( puPos >= 0 )
-        {
-        sourceString.Replace( puPos, 
-            static_cast<TDesC>(KPercentS).Length(), KPercentS );                
-        }
-
-    // Check if there is a length defined in copy of the recourse string e.g. "VPN(%U[08])"
-    // If it's found convert it to integer and remove it from the string.
-    TInt maxDataLength( 0 );
-    TInt perceLength = static_cast<TDesC>(KPercentS).Length();
-    if ( sourceString[puPos+perceLength] == '[' )
-        {
-        // Key includes max datalength 
-        maxDataLength = 10*( sourceString[puPos+perceLength+1]-'0' ) 
-                           + ( sourceString[puPos+perceLength+2]-'0' );
-        sourceString.Delete(puPos+perceLength,4);
-        }
-
-    // Get the IAP name which the VPM Connection Method points to
-    HBufC* refName = NULL;
-
-    if( !ServiceRecordExists() )
-        {
-        User::Leave( KErrNotSupported );
-        }
-    
-    if ( ServiceRecord().iServiceIAP )
-        {
-        // ask for the bearer type
-        TUint32 bearerType = CmMgr().GetConnectionMethodInfoIntL( 
-                ServiceRecord().iServiceIAP, ECmBearerType );
-        
-        if ( iCmMgr.EasyWlanIdL() && bearerType == KUidWlanBearerType )
-            {           
-            refName = GenerateVPNPointToWLANNetworkLC(rf, refName);
-            }
-        else
-            {
-            refName = iCmMgr.GetConnectionMethodInfoStringL(
-                                                ServiceRecord().iServiceIAP,
-                                                ECmName );
-            CleanupStack::PushL( refName );
-            }
-        }
-    else
-        {
-        CCmDestinationImpl* dest = iCmMgr.DestinationL( 
-                                            iVirtualRecord->iNextLayerSNAP );
-        CleanupStack::PushL( dest );
-        refName = dest->NameLC();
-        CleanupStack::Pop( refName ); 
-        CleanupStack::PopAndDestroy( dest );
-        CleanupStack::PushL( refName );
-        }
-    
-    TPtr16 refNamePtr = refName->Des();
-    // If there was a length definition e.g. [08]--> length is 8 the CM or
-    // Destination name must be cut to length - 1 and copy the ellipsis(shown as
-    // "...") to the end.
-    if( maxDataLength > 0 && refName->Length() > maxDataLength )
-        {
-        refNamePtr.Delete( maxDataLength-1, refName->Length()-maxDataLength+1);
-        TText ellipsis(KEllipsis);
-        refNamePtr.Insert( maxDataLength-1, TPtrC(&ellipsis,1) );
-        }
-        
-    if ( maxDataLength == 0 )
-        {
-        // Length not defined in resource string so set it to refName length
-        maxDataLength = refNamePtr.Length();
-        }
-    
-    HBufC* cmName = HBufC::NewL( sourceString.Length() + maxDataLength );
-    CleanupStack::PushL( cmName );
-    cmName->Des().Format(sourceString,  &refNamePtr);
-    SetStringAttributeL( ECmName,  *cmName );
-    CleanupStack::PopAndDestroy( cmName );
-    CleanupStack::PopAndDestroy( refName ); 
-    CleanupStack::PopAndDestroy( textBuffer ); 
-    CleanupStack::PopAndDestroy( readBuffer ); 
-    CleanupStack::PopAndDestroy( &rf );
-    CleanupStack::PopAndDestroy( &fs );
-    }
-    
-// --------------------------------------------------------------------------
-// CCmPluginVpn::GenerateDefaultCmNameL
-// --------------------------------------------------------------------------
-//
-void CCmPluginVpn::CreateNewL()
-    {
-    CCmPluginBaseEng::CreateNewL();
-
-    iIapRecord->iRecordName.SetL( KNullDesC );
-    }
-
-
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::LoadL
-// --------------------------------------------------------------------------
-//
-void CCmPluginVpn::LoadL( TUint32 aIapId )
-    {
-    CCmPluginBaseEng::LoadL( aIapId );
-    if ( iServiceRecord )
-        {
-//      UpdatePolicyNameL();
-        }
-    }
-        
-    
-// --------------------------------------------------------------------------
-// CCmPluginVpn::UpdatePolicyNameL
-// --------------------------------------------------------------------------
-//
-void CCmPluginVpn::UpdatePolicyNameL()
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::UpdatePolicyNameL" );
-    // now get policy name from ID
-    
-    RVpnServ ps;
-    CleanupClosePushL<RVpnServ>( ps );
-    TInt err = ps.Connect();
-
-    CLOG_WRITE_1( "Connected to VPN server, err [%d]", err ); 
-    
-    if (! err )        
-        {
-        if( !ServiceRecordExists() )
-            {
-            User::Leave( KErrNotSupported );
-            }
-
-        CCDVPNServiceRecord *r = &(ServiceRecord());
-        TVpnPolicyName pId( r->iServicePolicy );
-        TInt policyCount(0);
-        err = ps.EnumeratePolicies(policyCount);
-        if ( !err && policyCount)
-            {                
-            CArrayFixFlat<TVpnPolicyInfo>* policyList;
-            policyList = new (ELeave) CArrayFixFlat<TVpnPolicyInfo>(policyCount);
-            CleanupStack::PushL(policyList);
-
-            err = ps.GetPolicyInfoList(policyList);
-            if ( err )
-                {
-                // the set policies are not installed, 
-                // Must be defined qtn_selec_setting_compulsory is displayed 
-                // for the invalid settings.                           
-                // reset policy to compulsory
-                SetStringAttributeL( EVpnServicePolicyName,
-                                                      KNullDesC() );
-                SetStringAttributeL( EVpnServicePolicy, 
-                                                      KNullDesC() );                        
-                }
-            else
-                {
-                for (TInt i(0); i<policyList->Count(); ++i)
-                    {
-                    if (pId.Compare((*policyList)[i].iId) == 0 )
-                        {
-                        SetStringAttributeL( EVpnServicePolicyName,
-                            (*policyList)[i].iName );
-                        break;    
-                        }
-                    }
-                }
-            CleanupStack::PopAndDestroy(policyList);              
-            }
-        }
-    CleanupStack::PopAndDestroy(); // ps.close 
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::CanDestUsedAsUnderlyingConnectionL
-// --------------------------------------------------------------------------
-//
-TUint32 CCmPluginVpn::CanDestUsedAsUnderlyingConnectionL( TUint32 aDestinationId )
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::CanDestUsedAsUnderlyingConnectionL" );
-
-    TUint32 retval(KEmptyDest);
-    
-    TBool hasNonVirtualCm(EFalse);
-    
-    CCmDestinationImpl* dest = CmMgr().DestinationL( aDestinationId );
-    CleanupStack::PushL( dest );
-    
-    // is this our parent destination (if there is one)
-    CCmDestinationImpl* parentDest = ParentDestination();
-    if ( parentDest )
-        {
-        if ( dest->Id() == parentDest->Id() )
-            {
-            retval |= KLinksBackToParent;
-            }
-        }
-    delete parentDest;    
-    if ( !( retval & KBindDenied ) )
-        {
-        // filter out:
-        //      empty destinations
-        //      destinations containing VPN in or linked in
-        //      destinations containing emb. dest. if the linked dest is empty
-        
-        // so if we found a VPN inside, or a VPN linked through an amb. dest, 
-        // than it should be filtered out. 
-        // it also should be filtered out if it links back 
-        // to our parent dest. in any way...
-        
-        TInt count = dest->ConnectionMethodCount();
-        
-        if ( count )
-            {
-            // has at least one CM
-            retval &= ~KEmptyDest;
-            for ( TInt j = 0; j < dest->ConnectionMethodCount(); j++ )
-                {
-                CCmPluginBase* cm = dest->GetConnectionMethodL( j );
-                CleanupStack::PushL( cm );
-                TUint32 cmId = cm->GetIntAttributeL( ECmId );
-                
-                TInt bearerType = CmMgr().GetConnectionMethodInfoIntL( 
-                                        cmId, ECmBearerType );
-                if ( !CmMgr().GetBearerInfoBoolL( bearerType, ECmVirtual ) )
-                    {
-                    // found a non-virtual connection method
-                    hasNonVirtualCm = ETrue;
-                    }
-                else
-                    {
-                    // now we have to check if it is an emb.dest., if it is, 
-                    // check if the referenced destination is not empty,
-                    // it has at least one, non-virtual CM, 
-                    // OR it has another emb.dest., then recurse it...
-                    if ( CmMgr().GetBearerInfoBoolL( bearerType, ECmDestination ) )
-                        { // it is an emb. destination
-                        // get the emb. destination
-                        CCmDestinationImpl* embdest = cm->Destination();
-                        TUint32 emdestId = embdest->Id();
-                        // check if the embeded destination can be used
-                        TUint32 res = CanDestUsedAsUnderlyingConnectionL( emdestId );
-                        if ( res & KBindDenied )
-                            {
-                            // emb. dest. can not be used
-                            retval |= (res & KBindDenied );
-                            }
-                        else
-                            {
-                            // if binding is not denied, still what to do with 
-                            // KEmptyDest & KNoNonVirtuals?
-                            // if it does not return KNoNonVirtuals, then it 
-                            // has at least one, non-virt. CM
-                            if ( res & KNoNonVirtuals )
-                                {
-                                // if we already have a non-virt, then it is no
-                                // problem, no need to change hasNonVirtualCm
-                                // as it starts from EFalse.
-                                }
-                            else
-                                {
-                                // if it is not empty, than 
-                                // it has at least one, non-virt. CM, so:
-                                if ( !( res & KEmptyDest ) )
-                                    {
-                                    hasNonVirtualCm = ETrue;
-                                    }
-                                }                                
-                            // if it is an empty dest., then:
-                            // if we still have the base as empty, then 
-                            // there is nothing to do.
-                            // if the base is non-empty, again, nothing to do 
-                            if ( !(res & KEmptyDest ) )
-                                { 
-                                // not empty dest, so set base 
-                                // value to reflect it
-                                hasNonVirtualCm = ETrue;
-                                }
-                            }
-                        }
-                    else
-                        {
-                        // virtual, but not emb. dest
-                        // check if it is VPN
-                        // if it is VPN, 
-                        if ( bearerType == KPluginVPNBearerTypeUid )
-                            {
-                            retval |= KContainsVpn;
-                            }
-                        }
-                    }
-                CleanupStack::Pop( cm );
-                cm = NULL; // not owned                    
-                if ( retval & KBindDenied )
-                    { // binding is already denied, we can break...
-                    break;
-                    }
-                }
-            if ( !hasNonVirtualCm )
-                {
-                retval |= KNoNonVirtuals;
-                }
-            }
-        else
-            {
-            retval |= KEmptyDest;
-            }
-        }
-    CleanupStack::PopAndDestroy( dest );
-    
-    return retval;
-    }
-
-
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::BindableDestinationsL
-// --------------------------------------------------------------------------
-//  
-void CCmPluginVpn::BindableDestinationsL( RArray<TUint32>& aDestinationArray )
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::BindableDestinationsL" );
-    TUint32 upLimit = KCmDefaultDestinationAPTagId + 0xff;
-    
-    aDestinationArray.Close();
-    if ( BindableRealConnectionsExistL() )
-        {
-        for (TInt i=0; i<iBindableMethods.Count(); i++)
-            {
-            if ( iBindableMethods[i] <= KDestMaxId ||
-                    (iBindableMethods[i] > KCmDefaultDestinationAPTagId && iBindableMethods[i] <= upLimit) )
-                {
-                aDestinationArray.AppendL( iBindableMethods[i] );
-                }
-            }
-        }
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::HasUpstreamVpnL
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginVpn::HasUpstreamVpnL( TUint32 aId, TBool aIsDestination )
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::HasUpstreamVpnL" );
-        
-    // the function returns true if:
-    //  - the destination given is referenced by a CM which is either VPN or 
-    //    has an upstream VPN
-    //  - the CM given is linked by a VPN or the CM or its destination have 
-    //    an upstream VPN
-    TBool hasUpstreamVpn( EFalse );
-
-    // array of destinations
-    RArray<TUint32> destArray( CmMgr().DestinationCountL() );
-    CleanupClosePushL( destArray );
-    
-    // get all destinations
-    CmMgr().AllDestinationsL( destArray );
-    
-    CLOG_WRITE( "CCmPluginVpn::HasUpstreamVpnL checking destinations..." );
-    
-    for ( TInt i = 0; !hasUpstreamVpn && i < destArray.Count(); ++i )
-        {
-        if ( aIsDestination && destArray[i] == aId )
-            {
-            // connection methods cannot link to their parent destination
-            // so we can skip this round
-            continue;
-            }
-
-        CCmDestinationImpl* dest = CmMgr().DestinationL( destArray[i] );
-        CleanupStack::PushL( dest );
-
-        // check out all CM's from destinations
-        TInt cmCount = dest->ConnectionMethodCount();
-        
-        for ( TInt j = 0; j < cmCount; ++j )
-            {
-            // instantiate a connmethod
-            CCmPluginBase* cm = dest->GetConnectionMethodL( j );
-            CleanupStack::PushL( cm );
-
-            TUint32 cmId = cm->GetIntAttributeL( ECmId );
-
-            // ask for the bearer type
-            TUint32 bearerType = CmMgr().GetConnectionMethodInfoIntL( 
-                                                        cmId, ECmBearerType );
-            
-            // is it virtual? if not, there's nothing to do
-            if ( CmMgr().GetBearerInfoBoolL( bearerType, ECmVirtual ) )
-                {
-                // it is virtual
-
-                if ( CmMgr().GetBearerInfoBoolL( bearerType, ECmDestination ) )
-                    {
-                    // what's more, it is an embedded destination
-                    if ( aIsDestination && cm->IsLinkedToSnap( aId ) )
-                        {
-                        hasUpstreamVpn = 
-                            HasUpstreamVpnL( cmId, EFalse ) ||
-                            HasUpstreamVpnL( dest->Id(), ETrue );
-                        }
-                    }
-                else
-                    {
-                    // it is not an emb.dest.
-                    if ( aIsDestination )
-                        {
-                        // does it link to this destination?
-                        if ( cm->IsLinkedToSnap( aId ) )
-                            {
-                            hasUpstreamVpn = 
-                                ( bearerType == KPluginVPNBearerTypeUid ) ||
-                                HasUpstreamVpnL( cmId, EFalse ) ||
-                                HasUpstreamVpnL( dest->Id(), ETrue );
-                            }
-                        }
-                    else
-                        {
-                        CCmPluginBase* targetCm = 
-                                            CmMgr().GetConnectionMethodL( aId );
-                        CleanupStack::PushL( targetCm );
-                        
-                        // does it link to this CM or to its destination?
-                        if ( cm->IsLinkedToIap( aId ) )
-                            {
-                            hasUpstreamVpn = 
-                                ( bearerType == KPluginVPNBearerTypeUid ) ||
-                                HasUpstreamVpnL( cmId, EFalse );
-                            }
-/************** after cmmanager fix **************
-    CCmDestinationImpl* parentDest = targetCm->ParentDestination();
-                        else if ( parentDest &&
-                                  cm->IsLinkedToSnap( 
-                                        parentDest->Id() ) )
-                            {
-                            hasUpstreamVpn = 
-                                ( bearerType == KPluginVPNBearerTypeUid ) ||
-                                HasUpstreamVpnL( cmId, EFalse ) ||
-                                HasUpstreamVpnL( dest->Id(), ETrue );
-                            }
-     delete parentDest;
-***************************************************/
-                        else
-                            {
-                            TUint32 parent( 0 );
-                            parent = FindParentDestinationL( aId );
-                            
-                            if ( parent && cm->IsLinkedToSnap( parent ) )
-                                {
-                                hasUpstreamVpn = 
-                                    ( bearerType == KPluginVPNBearerTypeUid ) ||
-                                    HasUpstreamVpnL( cmId, EFalse ) ||
-                                    HasUpstreamVpnL( dest->Id(), ETrue );
-                                }
-                            
-                            }
-
-                        CleanupStack::PopAndDestroy( targetCm );
-                        }
-                    
-                    } // if !emb.dest.
-
-                } // if virtual
-
-            CleanupStack::Pop( cm );
-            } // for j
-
-        CleanupStack::PopAndDestroy( dest );
-        } // for i
-    
-    CleanupStack::PopAndDestroy( &destArray );
-    
-    
-    // if we already know the answer, jump out here
-    if (hasUpstreamVpn) 
-        {
-        return hasUpstreamVpn;
-        } 
-        
-
-    CLOG_WRITE( "CCmPluginVpn::HasUpstreamVpnL checking uncategorized group..." );    
-    
-    // we have to check the uncategorized, too
-    
-    RArray<TUint32> cmArray ( KCmArrayMediumGranularity );
-    CleanupClosePushL( cmArray );
-    
-    CmMgr().ConnectionMethodL( cmArray );
-
-    // search for virtual CM's
-    for ( TInt k = 0; !hasUpstreamVpn && k < cmArray.Count(); ++k )
-        {
-        TInt bearerType = CmMgr().GetConnectionMethodInfoIntL( cmArray[k], 
-                                                               ECmBearerType );
-                                                
-        if ( CmMgr().GetBearerInfoBoolL( bearerType, ECmVirtual ) )
-            {
-            // if virtual, does it link to this destination?
-
-            CCmPluginBase* cm = CmMgr().GetConnectionMethodL( cmArray[k] );
-            CleanupStack::PushL( cm );
-            
-            TUint32 cmId = cm->GetIntAttributeL( ECmId );
-
-            if ( aIsDestination )
-                {
-                // does it link to this destination?
-                if ( cm->IsLinkedToSnap( aId ) )
-                    {
-                    hasUpstreamVpn = 
-                        ( bearerType == KPluginVPNBearerTypeUid ) ||
-                        HasUpstreamVpnL( cmId, EFalse );
-                    }
-                }
-            else
-                {
-                // does it link to this CM?           
-                if ( cm->IsLinkedToIap( aId ) )
-                    {
-                    hasUpstreamVpn = 
-                        ( bearerType == KPluginVPNBearerTypeUid ) ||
-                        HasUpstreamVpnL( cmId, EFalse );
-                    }
-                     
-                }
-
-            CleanupStack::PopAndDestroy( cm );
-            } // if virtual
-            
-        } // for k
-    
-
-    CleanupStack::PopAndDestroy( &cmArray );
-
-    return hasUpstreamVpn;
-    }
-    
-
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::FilterPossibleParentsL
-// --------------------------------------------------------------------------
-//
-void CCmPluginVpn::FilterPossibleParentsL( RArray<TUint32>& aDests )
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::FilterPossibleParentsL" );
-
-    // check if there is any destination into which this VPN could be put
-    
-    // Filter out invalid destinations
-    for ( TInt i = 0; i < aDests.Count(); ++i )
-        {
-        if ( HasUpstreamVpnL( aDests[i], ETrue ) )
-            {
-            aDests.Remove( i );
-            --i;
-            }
-        }
-
-    // also filter out the underlying connection's destination
-    if ( aDests.Count() )
-        {
-        // still have work to do
-        TUint32 destId = 0;
-        
-        if ( iVirtualRecord->iNextLayerSNAP )
-            {
-            // the VPN links to a destination
-            destId = iVirtualRecord->iNextLayerSNAP;
-            }
-        else if ( iVirtualRecord->iNextLayerIAP )
-            {
-            // the VPN links to a connmethod, find out parent destination id
-
-/********** after CmManager fix ***********************
-            CCmPluginBase* cm = CmMgr().GetConnectionMethodL( 
-                                               iVirtualRecord->iNextLayerIAP );
-            
-            CCmDestinationImpl* parentDest = cm->ParentDestination();
-            if ( parentDest )
-                {
-                // take the id only if cm has a parent
-                destId = parentDest->Id();
-                }
-            
-            delete cm;
-            delete parentDest;
-*******************************************************/
-            destId = FindParentDestinationL( iVirtualRecord->iNextLayerIAP );
-            }
-
-            
-        // now search for the id
-        if ( destId )
-            {
-            TInt index = aDests.Find( destId );
-            if ( index != KErrNotFound )
-                {
-                // got it, remove
-                aDests.Remove( index );
-                }
-            }
-        
-        } // if aDests.Count
-        
-        
-    }
-
-
-TUint32 CCmPluginVpn::FindParentDestinationL( TUint32 aCmId )
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::FindParentDestinationL" );
-
-    TBool found = EFalse;
-    TUint32 targetDestId( 0 ); 
-    
-    RArray<TUint32> destinations( CmMgr().DestinationCountL() );
-   
-    CmMgr().AllDestinationsL( destinations );
-    CleanupClosePushL( destinations );
-    
-    for ( TInt i = 0; i < destinations.Count() && !found; i++ )
-        {            
-        CCmDestinationImpl* dest = 
-                          CmMgr().DestinationL( destinations[i] );
-        CleanupStack::PushL( dest );
-
-        TInt cmCount = dest->ConnectionMethodCount();
-
-        for ( TInt j = 0; j < cmCount && !found; j++ )
-            {
-            // instantiate a connmethod
-            CCmPluginBase* cm = dest->GetConnectionMethodL( j );
-            CleanupStack::PushL( cm );
-            TUint32 cmId = cm->GetIntAttributeL( ECmId );
-
-            if ( cmId == aCmId)
-                {
-                targetDestId = destinations[i];
-                found = ETrue;
-                }
-                
-            CleanupStack::Pop( cm );
-            }
-
-        CleanupStack::PopAndDestroy( dest );
-        }
-
-    CleanupStack::PopAndDestroy( &destinations );
-    
-    return targetDestId;    
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::DeleteAdditionalRecordsL
-// --------------------------------------------------------------------------
-//
-void CCmPluginVpn::DeleteAdditionalRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::DeleteAdditionalRecordsL" );    
-
-    // Virtual record must be deleted
-    iVirtualRecord->DeleteL( Session() );
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::GenerateVPNPointToEasyWLANLC
-// --------------------------------------------------------------------------
-//
-HBufC* CCmPluginVpn::GenerateVPNPointToWLANNetworkLC(RResourceFile& rf, HBufC*& aName)
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::GenerateVPNPointToWLANNetworkLC" );
-    aName = NULL;
-
-    HBufC8* readBuffer2 = rf.AllocReadLC( R_QTN_NETW_CONSET_VPN_EASY_WLAN );
-    const TPtrC16 ptrReadBuffer2( (TText16*) readBuffer2->Ptr(),
-                                 ( readBuffer2->Length() + 1 ) >> 1 );
-    aName = HBufC16::NewL( ptrReadBuffer2.Length() );
-    *aName = ptrReadBuffer2;
-    
-    CleanupStack::PopAndDestroy( readBuffer2 );
-    CleanupStack::PushL( aName );
-    
-    return aName;
-    }
-    
-// --------------------------------------------------------------------------
-// CCmPluginVpn::CheckValidityAndConvertDestinationIdL
-// --------------------------------------------------------------------------
-//
-TInt CCmPluginVpn::CheckValidityAndConvertDestinationIdL( TUint32 aDestId )
-    {
-    TInt id( 0 );
-
-    if ( aDestId > 0 && aDestId < 255 )
-         {
-         id = aDestId + KCmDefaultDestinationAPTagId;
-         }
-     else if ( aDestId > KCmDefaultDestinationAPTagId 
-               && ( aDestId < ( KCmDefaultDestinationAPTagId+255 ) ) )
-         {
-         id = aDestId;
-         }
-     else
-         {
-         User::Leave( KErrArgument );
-         }
-    
-    return id;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginVpn::DefaultAPRecordL
-// --------------------------------------------------------------------------
-//
-const TMDBElementId CCmPluginVpn::DefaultAPRecordL( const TInt aTierIdentifier )
-    {
-    LOGGER_ENTERFN( "CCmPluginVpn::DefaultAPRecordL" );
-    // Resolve the Default SNAP AP elementid 
-    //
-    CCDTierRecord* tierRecord = static_cast<CCDTierRecord *>(
-            CCDRecordBase::RecordFactoryL( KCDTIdTierRecord ) );
-    
-    CleanupStack::PushL( tierRecord );
-
-    // Find the correct tier table based on given identifier.
-    //
-    tierRecord->iRecordTag = aTierIdentifier;
-    if ( !tierRecord->FindL( Session() ) )
-        {
-        User::Leave( KErrCorrupt );
-        }
-    
-    // Find out the default AP for IP connections.
-    //
-    TMDBElementId defaultAP = tierRecord->iDefaultAccessPoint;
-
-    // Cleanup tier record.
-    //
-    CleanupStack::PopAndDestroy( tierRecord );
-        
-    return defaultAP;
-    }
-
-// eof
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/src/cmpvpnnextlayerselectdlg.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,804 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Popup for selecting the underlying connection method or 
-*                destination for a VPN connection method
-*
-*/
-
-
-// includes
-#include <badesca.h> // arrays
-#include <gulicon.h> // icons
-#include <StringLoader.h>
-#include <data_caging_path_literals.hrh>
-#include <featmgr.h>
-#include <cmpluginvpn.mbg>
-#include <cmpluginvpnui.rsg>
-#include <cmmanager.rsg>
-#include <cmmanager.mbg> 
-#include <eikenv.h>
-#include <aknlists.h>
-#include <eikfrlb.h> // CEikFormattedCellListBox
-#include <aknradiobuttonsettingpage.h>
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-
-#include <hlplch.h>
-#include <csxhelp/cp.hlp.hrh>
-
-#include "cmlogger.h"
-#include "cmdestinationimpl.h"
-#include "cmmanagerimpl.h"
-#include "cmpvpnnextlayerselectdlg.h"
-#include "cmvpncommonconstants.h"
-#include <cmcommonconstants.h>
-#include <cmpluginvpndef.h>
-
-using namespace CMManager;
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::NewL
-// --------------------------------------------------------------------------
-//
-CmPluginVpnNextLayerSelectDlg* CmPluginVpnNextLayerSelectDlg::NewL( 
-                                        CCmPluginBaseEng& aCmPluginBaseEng,
-                                        RArray<TUint32>& aBindableMethods,
-                                        TBool& aSnapSelected,
-                                        TUint32& aNextLayerId )
-    {
-    CmPluginVpnNextLayerSelectDlg* self = 
-            new ( ELeave ) CmPluginVpnNextLayerSelectDlg( aCmPluginBaseEng,
-                                                          aBindableMethods,
-                                                          aSnapSelected,
-                                                          aNextLayerId,
-                                                          0 );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-      
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::CmPluginVpnNextLayerSelectDlg
-// --------------------------------------------------------------------------
-//
-CmPluginVpnNextLayerSelectDlg::CmPluginVpnNextLayerSelectDlg(
-                                        CCmPluginBaseEng& aCmPluginBaseEng,
-                                        RArray<TUint32>& aBindableMethods,
-                                        TBool& aSnapSelected,
-                                        TUint32& aNextLayerId,
-                                        TInt aDummyIndex )
-    : CAknListQueryDialog( &aDummyIndex )
-    , iMyEikonEnv( *CEikonEnv::Static() )
-    , iCmPluginBaseEng( aCmPluginBaseEng )
-    , iSnapSelected( aSnapSelected )
-    , iNextLayerId( aNextLayerId )
-    , iResourceReader( *CCoeEnv::Static() )
-    , iDestinations( aBindableMethods )
-    , iEasyWlanId(0)  
-    , iCmManager( iCmPluginBaseEng.CmMgr() ) 
-    , iUncatItems( EFalse )
-    {
-    ;
-    }
-    
-    
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::~CmPluginVpnPolicySelectionDlg
-// --------------------------------------------------------------------------
-//
-CmPluginVpnNextLayerSelectDlg::~CmPluginVpnNextLayerSelectDlg()
-    {
-    if (  iAsyncCancel )
-        {
-        delete  iAsyncCancel;
-        iAsyncCancel = NULL;
-        }
-    
-    iResourceReader.Close();
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::ConstructL
-// --------------------------------------------------------------------------
-//
-void CmPluginVpnNextLayerSelectDlg::ConstructL()
-    {    
-    LoadResourceL( KPluginVPNResDirAndFileName );
-    
-    // get the EasyWlan id if it's supported
-    if ( FeatureManager::FeatureSupported( KFeatureIdProtocolWlan ) )
-        {
-        iEasyWlanId = iCmManager.EasyWlanIdL();
-        }   
-    }
-
-// ---------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::CancelAsynchronouslyL
-// ---------------------------------------------------------------------------
-TInt CmPluginVpnNextLayerSelectDlg::CancelAsynchronouslyL( TAny* aObject )
-    {
-    CmPluginVpnNextLayerSelectDlg* myself =
-        static_cast< CmPluginVpnNextLayerSelectDlg* >( aObject );
-    
-    myself->TryExitL( EAknSoftkeyCancel );
-    return 0;
-    }
-    
-// ----------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::PreLayoutDynInitL
-// ----------------------------------------------------------------------------
-//
-void CmPluginVpnNextLayerSelectDlg::PreLayoutDynInitL()
-    {
-    CAknDialog::ConstructL( R_VPN_REAL_CM_SELECTION_MENUBAR );
-    
-    // Let the base class do its job first
-    CAknListQueryDialog::PreLayoutDynInitL();
-
-    SetTextsAndIconsL();
-    }
-
-// ----------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::OkToExitL
-// ----------------------------------------------------------------------------
-//
-TBool CmPluginVpnNextLayerSelectDlg::OkToExitL( TInt aButtonId )
-    {
-    TBool result = EFalse;
-    
-    if ( aButtonId == EAknSoftkeyDone  || aButtonId == EAknSoftkeyOk )
-        {
-        result = ETrue;
-        }
-    else if ( aButtonId == EAknSoftkeySelect )
-        {
-        ProcessCommandL( ECmManagerUiCmdDestSelect );
-        }    
-    else if ( aButtonId == EAknSoftkeyOptions )
-        {
-        ProcessCommandL( EAknSoftkeyOptions );
-        }
-    else if ( aButtonId == EAknSoftkeyBack || aButtonId == EAknSoftkeyCancel )
-        {
-        result = ETrue;
-        }
-    else
-        {
-    
-        }
-
-    return result;
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::SetTextsAndIconsL
-// --------------------------------------------------------------------------
-//
-void CmPluginVpnNextLayerSelectDlg::SetTextsAndIconsL()
-    {
-    LOGGER_ENTERFN( "CmPluginVpnNextLayerSelectDlg::SetTextsAndIconsL" );
-    
-    // Item text array
-    CDesCArray* itemArray =
-                new ( ELeave ) CDesCArrayFlat( KCmArrayMediumGranularity );
-    CleanupStack::PushL( itemArray );
-    SetItemTextArray( itemArray ); // ownership taken
-    SetOwnershipType( ELbmOwnsItemArray );
-    CleanupStack::Pop( itemArray ); // as ownership is taken
-                    
-    // Icon array
-    CArrayPtr<CGulIcon>* icons =
-         new ( ELeave ) CArrayPtrFlat<CGulIcon>( KCmArrayMediumGranularity );
-    CleanupStack::PushL( icons );
-    SetIconArrayL( icons );
-    // ownership taken by SetIconArrayL!
-    CleanupStack::Pop( icons ); // as ownership is taken
-    
-    // Step through the Destinations - do not show:
-    // Parent Destinations or Destinations with no non-virtual CMs
-    // Show Uncategorised if valid and EasyWlan if supported
-    TInt destCount = iDestinations.Count();
-    for ( TInt i = 0; i < destCount; i++ )
-        {        
-        switch ( iDestinations[i] )
-            {
-            case KDestItemUncategorized:
-                {
-                // Append 'Uncategorised' if necessary
-                AppendUncatDestinationL( *itemArray, *icons );
-                break;
-                }
-            case KDestItemEasyWlan:
-                {
-                // Append 'EasyWlan' if supported
-                TRAPD( err, AppendEasyWlanL( *itemArray, *icons ) );
-                if ( err != KErrNotSupported )
-                    {
-                    User::LeaveIfError( err );
-                    }
-                break;
-                }
-            // normal destination
-            default:
-                {
-                CCmDestinationImpl* dest = 
-                iCmManager.DestinationL( iDestinations[i] );
-                CleanupStack::PushL( dest );
-                TInt numCms = dest->ConnectionMethodCount();        
-                AppendDestinationTextsL( *dest,numCms, *itemArray, *icons );                
-                CleanupStack::PopAndDestroy( dest );
-                break;
-                }                    
-            }
-        }
-    }
-
-
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::AppendDestinationsTextsL
-// --------------------------------------------------------------------------
-//
-void CmPluginVpnNextLayerSelectDlg::AppendDestinationTextsL(
-                                            CCmDestinationImpl& aDestination,
-                                            TInt aNumCms,
-                                            CDesCArray& aItems,
-                                            CArrayPtr<CGulIcon>& aIcons )
-    {
-    LOGGER_ENTERFN( "CmPluginVpnNextLayerSelectDlg::AppendDestinationL" );
-    // icon
-    CGulIcon* icon = ( CGulIcon* ) aDestination.IconL();
-    CleanupStack::PushL( icon );
-    aIcons.AppendL( icon );
-    TInt iconIndex = aIcons.Count() - 1;
-    CleanupStack::Pop( icon ); // icon array took over ownership
-    
-    // compile the list item
-    HBufC* firstLine = aDestination.NameLC();
-    HBufC* secondLine;
-    
-    if ( aNumCms == 1 )
-        {
-        secondLine = StringLoader::LoadLC(
-                        R_CMMANAGERUI_CONN_METHODS_AMOUNT_ONE );
-        }
-    else
-        {
-        secondLine = StringLoader::LoadLC( 
-                        R_CMMANAGERUI_CONN_METHODS_AMOUNT_MANY,
-                        aNumCms );
-        }
-        
-    HBufC* item = FormatListItemTextsLC( *firstLine, 
-                                         *secondLine,
-                                         iconIndex );
-    aItems.AppendL( *item );
-
-    CleanupStack::PopAndDestroy( item );
-    CleanupStack::PopAndDestroy( secondLine );
-    CleanupStack::PopAndDestroy( firstLine );
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::AppendUncatDestinationL
-// --------------------------------------------------------------------------
-//
-void CmPluginVpnNextLayerSelectDlg::AppendUncatDestinationL( 
-                                                CDesCArray& aItems,
-                                                CArrayPtr<CGulIcon>& aIcons )
-    {
-    LOGGER_ENTERFN( "CmPluginVpnNextLayerSelectDlg::AppendUncatDestinationL" );
-
-    TParse mbmFile;
-    User::LeaveIfError( mbmFile.Set( KManagerIconFilename, 
-                        &KDC_APP_BITMAP_DIR, 
-                        NULL ) );
-    
-    // icon
-    CGulIcon* icon = AknsUtils::CreateGulIconL(
-                AknsUtils::SkinInstance(), 
-                KAknsIIDQgnPropSetConnDestUncategorized,
-                mbmFile.FullName(), 
-                EMbmCmmanagerQgn_prop_set_conn_dest_uncategorized, 
-                EMbmCmmanagerQgn_prop_set_conn_dest_uncategorized_mask );
-    CleanupStack::PushL( icon );
-    aIcons.AppendL( icon );
-    CleanupStack::Pop( icon );  // icon array took over ownership
-    TInt iconIndex = aIcons.Count() - 1;
-    
-    // remove virtual CMs
-    RArray<TUint32> uncatCms ( KCmArraySmallGranularity );    
-    iCmManager.ConnectionMethodL( uncatCms );
-    CleanupClosePushL( uncatCms );
-    
-    for ( TInt i = 0; i < uncatCms.Count(); i++ )
-        {
-        TInt bearerType = iCmManager.GetConnectionMethodInfoIntL( 
-                                        uncatCms[i], ECmBearerType );
-        
-        if ( iCmManager.GetBearerInfoBoolL( bearerType, ECmVirtual ) )
-            {
-            uncatCms.Remove(i);
-            i--;
-            }        
-        }
-    
-    // second line text
-    HBufC* secondLine;            
-    if ( uncatCms.Count() == 1 )
-        {
-        secondLine = StringLoader::LoadLC(
-                            R_CMMANAGERUI_CONN_METHODS_AMOUNT_ONE );
-        }
-    else
-        {
-        secondLine = StringLoader::LoadLC( 
-                            R_CMMANAGERUI_CONN_METHODS_AMOUNT_MANY,
-                            uncatCms.Count() );
-        }    
-
-    // compile the texts
-    HBufC* item = FormatListItemTextsLC( R_CMMANAGERUI_DEST_UNCATEGORIZED,
-                                         *secondLine,
-                                         iconIndex );            
-    aItems.AppendL( *item );
-
-    CleanupStack::PopAndDestroy( item );
-    CleanupStack::PopAndDestroy( secondLine );
-    CleanupStack::PopAndDestroy( &uncatCms );
-    }
-                                                 
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::AppendEasyWlanL
-// --------------------------------------------------------------------------
-//
-void CmPluginVpnNextLayerSelectDlg::AppendEasyWlanL( 
-                                                CDesCArray& aItems,
-                                                CArrayPtr<CGulIcon>& aIcons )
-    {
-    LOGGER_ENTERFN( "CmPluginVpnNextLayerSelectDlg::AppendEasyWlanL" );
-
-    // icon
-    CCmPluginBase* cm = iCmManager.GetConnectionMethodL( iEasyWlanId );
-    CleanupStack::PushL( cm );
-    CGulIcon* icon = ( CGulIcon* ) cm->GetIntAttributeL( ECmBearerIcon );
-    CleanupStack::PushL( icon );
-    aIcons.AppendL( icon );  // ownership passed to array
-    TInt iconIndex = aIcons.Count() - 1;
-    CleanupStack::Pop( icon );
-    CleanupStack::PopAndDestroy( cm );
-    
-    // compile the texts
-    HBufC* easyWlan = FormatListItemTextsLC( 
-                                R_QTN_NETW_CONSET_VPN_EASY_WLAN,
-                                R_QTN_NETW_CONSET_VPN_EASY_WLAN_PROMPT,
-                                iconIndex );
-    aItems.AppendL( *easyWlan );
-    
-    CleanupStack::PopAndDestroy( easyWlan );
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::DynInitMenuPaneL
-// --------------------------------------------------------------------------
-//
-void CmPluginVpnNextLayerSelectDlg::DynInitMenuPaneL( 
-                                TInt aResourceId, CEikMenuPane* aMenuPane )
-    {
-    if ( aResourceId == R_VPN_REAL_CM_SELECTION_MENU )
-        {
-    	if (!iCmManager.IsHelpOn())
-            {
-            aMenuPane->DeleteMenuItem( EAknCmdHelp );		    
-            }
-        TUint32 highlighted = iDestinations[ ListBox()->CurrentItemIndex() ];
-        
-        switch ( highlighted )
-            {
-            case KDestItemUncategorized:
-                {
-                aMenuPane->SetItemDimmed( ECmManagerUiCmdDestSelect, ETrue );
-                break;                
-                }
-            case KDestItemEasyWlan:
-                {
-                aMenuPane->SetItemDimmed( ECmManagerUiCmdCMSelect, ETrue );
-                break;
-                }
-            default:
-                {
-                break;
-                }
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::ProcessCommandL
-// --------------------------------------------------------------------------
-//
-void CmPluginVpnNextLayerSelectDlg::ProcessCommandL( TInt aCommandId )
-    {
-    if ( MenuShowing() )
-        {
-        HideMenu();
-        }
-    switch ( aCommandId )
-        {
-        case EAknSoftkeyOptions:
-            {
-            DisplayMenuL();
-            break;
-            }
-        case ECmManagerUiCmdDestSelect:
-            {            
-            TUint32 destId = iDestinations[ ListBox()->CurrentItemIndex() ];
-            
-            if ( destId != KDestItemUncategorized )
-                {
-                TUint32 attribute = ECmNextLayerSNAPId;
-                
-                // EasyWlan was selected
-                if ( destId == KDestItemEasyWlan )
-                    {
-                    attribute = ECmNextLayerIapId;
-                    destId = iEasyWlanId;
-                    }
-                iCmPluginBaseEng.SetIntAttributeL( attribute, destId );
-
-                // We cannot use TryExitL here, since if the pointer event
-                // handling is ongoing, i.e., we got here from this class's
-                // HandleListBoxEventL, there will be a KERN-EXEC 3 panic.
-                // Calling base class HandleListBoxEventL will exit the
-                // dialog asynchronously with return value ETrue.
-                CAknListQueryDialog::HandleListBoxEventL( ListBox(),
-                     EEventItemSingleClicked );
-                break;
-                }
-            
-            // For uncategorised destinations, flow through to ECmManagerUiCmdCMSelect
-            }
-        case ECmManagerUiCmdCMSelect:
-            {
-            // select a connection method from the highlighted destination
-            TUint32 destId = iDestinations[ ListBox()->CurrentItemIndex() ];
-            TUint32 cmId (0);
-            if ( ShowCMSelectionDlgL( destId, cmId ) )
-                {
-                iCmPluginBaseEng.SetIntAttributeL( ECmNextLayerIapId, cmId );
-                
-                // We cannot use TryExitL here, since if the pointer event
-                // handling is ongoing, i.e., we got here from this class's
-                // HandleListBoxEventL, there will be a KERN-EXEC 3 panic.
-                // Calling base class HandleListBoxEventL will exit the
-                // dialog asynchronously with return value ETrue.
-                CAknListQueryDialog::HandleListBoxEventL( ListBox(),
-                                     EEventItemSingleClicked );
-                }
-            else
-                {
-                // We need to exit asynchronously, in case we ended up here
-                // from HandleListBoxEventL. The callback function will exit
-                // the dialog with return value EFalse.
-                TCallBack cb( CancelAsynchronouslyL, this );
-                iAsyncCancel = new( ELeave ) CAsyncCallBack( cb, CActive::EPriorityHigh );
-                iAsyncCancel->CallBack();
-                }
-            break;
-            }
-        case EAknCmdHelp:
-            {
-            HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
-                                    iEikonEnv->EikAppUi()->AppHelpContextL() );
-            }
-            break;
-        case EAknSoftkeyBack:
-            {
-            TryExitL( EAknSoftkeyBack );
-            break;
-            } 
-        default:
-            {
-            CAknListQueryDialog::ProcessCommandL( aCommandId );
-            break;
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::OfferKeyEventL
-// ---------------------------------------------------------------------------
-//
-TKeyResponse CmPluginVpnNextLayerSelectDlg::OfferKeyEventL( 
-                                                const TKeyEvent& aKeyEvent, 
-                                                TEventCode aType )    
-    {
-    TKeyResponse retVal ( EKeyWasNotConsumed );
-    TUint highlighted = iDestinations[ ListBox()->CurrentItemIndex() ];
-    
-    switch ( aKeyEvent.iScanCode )
-        {
-        case EStdKeyDownArrow:
-        case EStdKeyUpArrow:
-            {
-            // If focus is on the 'uncategorised' destination, 
-            // change the soft key to 'Open'
-            if ( highlighted == KDestItemUncategorized )
-                {
-                ButtonGroupContainer().SetCommandL( 
-                                ECmManagerUiCmdDestSelect, 
-                                *( StringLoader::LoadLC( R_QTN_MSK_OPEN ) ) 
-                                                    );
-                ButtonGroupContainer().DrawDeferred();
-                CleanupStack::PopAndDestroy();
-                }
-            else
-                {
-                ButtonGroupContainer().SetCommandL( 
-                               ECmManagerUiCmdDestSelect, 
-                               *( StringLoader::LoadLC( R_QTN_MSK_SELECT ) ) 
-                                                    );
-                ButtonGroupContainer().DrawDeferred();
-                CleanupStack::PopAndDestroy();
-                }
-            break;
-            }
-        case EStdKeyNo:
-            {
-            TryExitL( EAknSoftkeyCancel );
-            return EKeyWasConsumed;
-            }
-        default:
-            {
-            // If focus is on the 'uncategorised' destination, 
-            // change the soft key to 'Open'
-            if ( highlighted == KDestItemUncategorized )
-                {
-                ButtonGroupContainer().SetCommandL( 
-                                ECmManagerUiCmdDestSelect, 
-                                *( StringLoader::LoadLC( R_QTN_MSK_OPEN ) ) 
-                                                    );
-                ButtonGroupContainer().DrawDeferred();
-                CleanupStack::PopAndDestroy();
-                }
-                
-            if ( aKeyEvent.iCode == EKeyEscape )
-                {
-                TryExitL( EAknSoftkeyCancel );
-                return EKeyWasConsumed;
-                }
-            }
-        }
-    retVal = ListBox()->OfferKeyEventL( aKeyEvent, aType );
-    
-    return retVal;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::HandleListBoxEventL
-// ---------------------------------------------------------------------------
-void CmPluginVpnNextLayerSelectDlg::HandleListBoxEventL( CEikListBox* /*aListBox*/,
-                                    TListBoxEvent aEventType )
-    {
-    switch ( aEventType )
-        {
-        case EEventEnterKeyPressed:
-        case EEventItemSingleClicked:
-            {
-            ProcessCommandL( ECmManagerUiCmdDestSelect );
-            
-            break;
-            }
-        default:
-            {
-            break;
-            };
-        };
-    }
-
-    
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::LoadResourceL
-// --------------------------------------------------------------------------
-//
-void CmPluginVpnNextLayerSelectDlg::LoadResourceL( 
-                                                const TDesC& aResFileName )
-    {
-    LOGGER_ENTERFN( "CmPluginVpnNextLayerSelectDlg::LoadResourceL" );
-    TInt err ( KErrNone );
-    
-    // Add resource file.
-    TParse* fp = new ( ELeave ) TParse();
-    err = fp->Set( aResFileName, 
-                        &KDC_RESOURCE_FILES_DIR, 
-                        NULL ); 
-    if ( err )
-        {
-        User::Leave( err );
-        }   
-
-    TFileName resourceFileNameBuf = fp->FullName();
-    delete fp;
-
-    iResourceReader.OpenL( resourceFileNameBuf );
-    }
-
-
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::FormatListItemTextsLC
-// --------------------------------------------------------------------------
-//
-HBufC* CmPluginVpnNextLayerSelectDlg::FormatListItemTextsLC( 
-                                                TInt aFirstLineResId,
-                                                TInt aSecondLineResId,
-                                                TInt aIconIndex )
-    {
-    HBufC* firstLine = StringLoader::LoadLC( aFirstLineResId );
-    HBufC* secondLine = StringLoader::LoadLC( aSecondLineResId );
-    
-    HBufC* retVal = FormatListItemTextsL( *firstLine,
-                                          *secondLine,
-                                          aIconIndex );
-    CleanupStack::PopAndDestroy( secondLine );
-    CleanupStack::PopAndDestroy( firstLine );
-    CleanupStack::PushL( retVal );
-    return retVal;
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::FormatListItemTextsLC
-// --------------------------------------------------------------------------
-//
-HBufC* CmPluginVpnNextLayerSelectDlg::FormatListItemTextsLC( 
-                                                const TDesC& aFirstLine,
-                                                const TDesC& aSecondLine,
-                                                TInt aIconIndex )
-    {
-    HBufC* retVal = FormatListItemTextsL( aFirstLine,
-                                          aSecondLine,
-                                          aIconIndex );
-    CleanupStack::PushL( retVal );
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::FormatListItemTextsLC
-// --------------------------------------------------------------------------
-//
-HBufC* CmPluginVpnNextLayerSelectDlg::FormatListItemTextsLC( 
-                                                TInt aFirstLineResId,
-                                                const TDesC& aSecondLine,
-                                                TInt aIconIndex )
-    {
-    // Load the first string
-    HBufC* firstLine = StringLoader::LoadLC( aFirstLineResId );
-    
-    HBufC* retVal = FormatListItemTextsL( *firstLine,
-                                          aSecondLine,
-                                          aIconIndex );
-    CleanupStack::PopAndDestroy( firstLine );
-    CleanupStack::PushL( retVal );
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::FormatListItemTextsL
-// --------------------------------------------------------------------------
-//
-HBufC* CmPluginVpnNextLayerSelectDlg::FormatListItemTextsL( 
-                                                const TDesC& aFirstLine,
-                                                const TDesC& aSecondLine,
-                                                TInt aIconIndex )
-    {
-    HBufC* retVal = HBufC::NewL( aFirstLine.Length() + 
-                           aSecondLine.Length() + 
-                           KNumberOfStaticCharsIn2LineFormattedString );
-    
-    TPtr ptr ( retVal->Des() );
-    ptr.AppendNum( aIconIndex );
-    ptr.Append( TChar( KSettingsListBoxItemPrefix ) );
-    ptr.Append( aFirstLine );
-    ptr.Append( TChar( KSettingsListBoxItemPrefix ) );
-    ptr.Append( aSecondLine );
-    
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::ShowCMSelectionDlgL
-// --------------------------------------------------------------------------
-//
-TBool CmPluginVpnNextLayerSelectDlg::ShowCMSelectionDlgL( 
-                                                    TUint32 aDestinationId,
-                                                    TUint32& aCmId )
-    {
-    LOGGER_ENTERFN( "CmPluginVpnNextLayerSelectDlg::ShowCMSelectionDlgL" );
-    TBool retVal ( EFalse );
-        
-    // Collect item texts
-    CDesCArrayFlat* items = 
-            new ( ELeave ) CDesCArrayFlat( KCmArraySmallGranularity );
-    CleanupStack::PushL( items );
-    
-    RPointerArray<CCmPluginBase> cmDataArray ( KCmArrayMediumGranularity );
-    iCmManager.CreateFlatCMListLC( aDestinationId , cmDataArray );
-    CleanupStack::Pop( &cmDataArray );
-    CCmManagerImpl::CleanupResetAndDestroyPushL(cmDataArray);
-    iCmManager.FilterOutVirtualsL( cmDataArray );
-
-
-    // after it, get the names for each element
-    // and finally make up the real items array.
-    
-    // Get the names of the connection methods
-    // virtuals are already filtered out, 
-    TInt count = cmDataArray.Count();
-    for ( TInt i = 0; i < count; i++ )
-        {
-        HBufC* cmName = 
-            iCmManager.GetConnectionMethodInfoStringL( cmDataArray[i]->GetIntAttributeL( ECmId ),
-                                                       ECmName );
-        CleanupStack::PushL( cmName );
-            
-        // append the name to the string
-        items->AppendL( *cmName );
-            
-        CleanupStack::PopAndDestroy( cmName );
-        }
-        
-    // Display the radio button page
-    TInt selected ( 0 );
-    TInt resId( R_VPN_REAL_CM_RADIO_BUTTON_SETTING_PAGE );
-        
-    CAknRadioButtonSettingPage* dlg = 
-                            new ( ELeave ) CAknRadioButtonSettingPage(
-                                    resId,
-                                    selected, 
-                                    items );
-    CleanupStack::PushL( dlg );
-    dlg->SetSettingTextL(
-                *StringLoader::LoadLC( R_CMWIZARD_SELECT_CONN_METHOD ) );
-    CleanupStack::PopAndDestroy();            
-    CleanupStack::Pop( dlg );
-
-    TInt result = 0;
-    TRAPD( err, result = dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) );
-
-    User::LeaveIfError( err );
-
-    if ( result )
-
-        {
-        // store result
-        aCmId = cmDataArray[ selected ]->GetIntAttributeL( ECmId );
-        retVal = ETrue;
-        }
-    
-    CleanupStack::PopAndDestroy( &cmDataArray );
-    CleanupStack::PopAndDestroy( items );
-    return retVal;
-    }
-    
-
-// --------------------------------------------------------------------------
-// CmPluginVpnNextLayerSelectDlg::GetHelpContext
-// --------------------------------------------------------------------------
-//
-void CmPluginVpnNextLayerSelectDlg::GetHelpContext( 
-                                            TCoeHelpContext& aContext ) const
-    {
-    aContext.iMajor = KHelpUidPlugin;
-    aContext.iContext = KSET_HLP_VPN_DEST_ASSOC_VIEW;
-    }
-
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/src/cmpvpnpolicyselectiondlg.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,339 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Displays a radio button selection list of VPN policies
-*
-*/
-
-
-// includes
-#include <aknPopup.h>
-// #include <vpnapidefs.h>
-#include <aknlists.h>
-#include <cmmanager.rsg>
-#include <cmpluginvpnui.rsg>
-#include <cmcommonui.h>
-#include <cmpluginbaseeng.h>
-#include <StringLoader.h>
-#include <data_caging_path_literals.hrh>
-#include <aknradiobuttonsettingpage.h>
-
-#include "cmlogger.h"
-#include "cmpvpnpolicyselectiondlg.h"
-#include "cmvpncommonconstants.h"
-#include <cmpluginvpndef.h>
-#include <cmcommonconstants.h>
-
-using namespace CMManager;
-
-// ----------------------------------------------------------------------------
-// CmPluginVpnPolicySelectionDlg::NewL
-// ----------------------------------------------------------------------------
-//
-CmPluginVpnPolicySelectionDlg* CmPluginVpnPolicySelectionDlg::NewL( 
-                                        CCmPluginBaseEng& aCmPluginBaseEng )
-    {
-    CmPluginVpnPolicySelectionDlg* self = 
-            new ( ELeave ) CmPluginVpnPolicySelectionDlg( aCmPluginBaseEng );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ----------------------------------------------------------------------------
-// CmPluginVpnPolicySelectionDlg::~CmPluginVpnPolicySelectionDlg
-// ----------------------------------------------------------------------------
-//
-CmPluginVpnPolicySelectionDlg::~CmPluginVpnPolicySelectionDlg()
-    {
-
-    iVpnServ.Close();
-
-    delete iPolicyInfoList;
-
-    iResourceReader.Close();
-    }
-    
-// ----------------------------------------------------------------------------
-// CmPluginVpnPolicySelectionDlg::CmPluginVpnPolicySelectionDlg
-// ----------------------------------------------------------------------------
-//
-CmPluginVpnPolicySelectionDlg::CmPluginVpnPolicySelectionDlg(
-                        CCmPluginBaseEng& aCmPluginBaseEng )
-    : iCmPluginBaseEng( aCmPluginBaseEng )
-    , iResourceReader( *CCoeEnv::Static() )
-    , iVpnClientUnaccessible ( EFalse )
-    {
-    }
-    
-// ----------------------------------------------------------------------------
-// CmPluginVpnPolicySelectionDlg::ConstructL
-// ----------------------------------------------------------------------------
-//
-void CmPluginVpnPolicySelectionDlg::ConstructL()
-    {
-    LoadResourceL( KPluginVPNResDirAndFileName );
-    
-    // Get the policies
-    iPolicyInfoList = 
-        new (ELeave) CArrayFixFlat<TVpnPolicyInfo>( KCmArrayMediumGranularity );
-    
-    TInt err( iVpnServ.Connect() );
-    
-    // Vpn client is inaccessible
-    if ( err )
-        {
-        VpnClientInaccessibleL();
-        }
-    else
-        {
-        iVpnServ.GetPolicyInfoList( iPolicyInfoList );        
-        iVpnServ.EnumeratePolicies( iNumPolicies );
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CmPluginVpnPolicySelectionDlg::LoadResourceL
-// ----------------------------------------------------------------------------
-//
-void CmPluginVpnPolicySelectionDlg::LoadResourceL( const TDesC& aResFileName )
-    {
-    TInt err( KErrNone );
-    
-    // Add resource file.
-    TParse* fp = new ( ELeave ) TParse();
-    err = fp->Set( aResFileName, 
-                        &KDC_RESOURCE_FILES_DIR, 
-                        NULL ); 
-    if ( err )
-        {
-        User::Leave( err );
-        }   
-
-    TFileName resourceFileNameBuf = fp->FullName();
-    delete fp;
-
-    iResourceReader.OpenL( resourceFileNameBuf );
-    }
-
-// ----------------------------------------------------------------------------
-// CmPluginVpnPolicySelectionDlg::ShowPolicySelectionListL
-// ----------------------------------------------------------------------------
-//
-TBool CmPluginVpnPolicySelectionDlg::ShowPolicySelectionListL()
-    {
-    LOGGER_ENTERFN( "CmPluginVpnPolicySelectionDlg::ShowPolicySelectionListL" );
-    TBool retVal ( EFalse );
-    
-    CEikTextListBox* list = new ( ELeave ) CAknSinglePopupMenuStyleListBox;
-    CleanupStack::PushL( list );
-             
-    // Create popup list
-    CAknPopupList* popupList = CAknPopupList::NewL(
-                                       list, 
-                                       R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT,
-                                       AknPopupLayouts::EMenuWindow);
-    CleanupStack::PushL( popupList );
-
-    // initialise listbox.
-    list->ConstructL(popupList, CEikListBox::ELeftDownInViewRect);
-    list->CreateScrollBarFrameL( ETrue );
-    list->ScrollBarFrame()->SetScrollBarVisibilityL(
-                               CEikScrollBarFrame::EOff,
-                               CEikScrollBarFrame::EAuto);
-
-
-    MDesCArray* itemList = list->Model()->ItemTextArray();
-	CDesCArray* items = ( CDesCArray* ) itemList;	
-	
-    // collect the item texts    
-    if ( iNumPolicies )
-        {
-        for ( TInt i = 0; i < iNumPolicies; i++ )
-            {
-            HBufC* polName = ( iPolicyInfoList->At(i) ).iName.AllocLC();
-            items->AppendL( *polName );
-            CleanupStack::PopAndDestroy( polName );
-            }
-        
-        // title
-        HBufC* title = StringLoader::LoadLC( R_QTN_NETW_CONSET_PRMPT_VPN_POLICY );
-        popupList->SetTitleL( *title );
-        CleanupStack::PopAndDestroy( title );
-        
-        // dislay dialog
-        CleanupStack::Pop( popupList );
-        if ( popupList->ExecuteLD() )
-            {
-            TInt ix = list->CurrentItemIndex();
-            
-            // Set VPN Policy to be used
-            HBufC* polName = ( iPolicyInfoList->At(ix) ).iName.AllocLC();
-            HBufC* polId = ( iPolicyInfoList->At(ix) ).iId.AllocLC();
-            
-            CLOG_WRITE_2( "New policy settings:[%S], [%S]", polName, polId );
-
-            iCmPluginBaseEng.SetStringAttributeL( EVpnServicePolicyName, *polName );
-            iCmPluginBaseEng.SetStringAttributeL( EVpnServicePolicy, *polId );
-            CleanupStack::PopAndDestroy( polId );
-            CleanupStack::PopAndDestroy( polName );
-            
-            retVal = ETrue;
-            }
-        }
-    else
-        {
-        if (!iVpnClientUnaccessible)
-        	{
-        	// display error note
-        	HBufC* text = StringLoader::LoadLC( R_QTN_VPN_INFO_NO_POLICIES_INSTALLED );
-        	TCmCommonUi::ShowNoteL( *text, TCmCommonUi::ECmInfoNote );
-        	CleanupStack::PopAndDestroy( text );
-        	}
-        CleanupStack::PopAndDestroy( popupList );
-        }
-
-
-	CleanupStack::PopAndDestroy( list );
-    return retVal;
-    }
-
-
-// ----------------------------------------------------------------------------
-// CmPluginVpnPolicySelectionDlg::ShowPolicySelectionDlgL
-// ----------------------------------------------------------------------------
-//
-TBool CmPluginVpnPolicySelectionDlg::ShowPolicySelectionDlgL()
-    {
-    LOGGER_ENTERFN( "CmPluginVpnPolicySelectionDlg::ShowPolicySelectionDlgL" );
-    TBool retVal ( EFalse );
-    
-    TInt selection(0);
-    
-    // Compile the list items
-    CDesCArrayFlat* items = 
-            new ( ELeave ) CDesCArrayFlat( KCmArraySmallGranularity );
-    CleanupStack::PushL( items );
-    
-    TInt vpnerr;
-    vpnerr = iVpnServ.EnumeratePolicies( iNumPolicies );
-    
-    if ( vpnerr )
-        {
-        VpnClientInaccessibleL();
-        }
-    else
-        {        
-        if ( iNumPolicies )
-            {
-            vpnerr = iVpnServ.GetPolicyInfoList( iPolicyInfoList );
-            if ( vpnerr == 0 )
-                {
-                for ( TInt i = 0; i < iNumPolicies; i++ )
-                    {
-                    HBufC* policyName = 
-                            ( iPolicyInfoList->At(i) ).iName.AllocLC();
-                    
-                            
-                    // indicate if this policy is the one in the settings
-                    HBufC* val = iCmPluginBaseEng.GetStringAttributeL( 
-                                                        EVpnServicePolicyName );
-                    
-                    if ( !( val->Compare( policyName->Des() ) ) )
-                        {
-                        selection = i;
-                        }
-                    delete val;
-                    
-                    items->AppendL( *policyName );
-                    CleanupStack::PopAndDestroy( policyName );
-                    }
-                // Create the dialog
-                CAknRadioButtonSettingPage* dlg = 
-                                    new ( ELeave ) CAknRadioButtonSettingPage(
-                                            R_RADIO_BUTTON_SETTING_PAGE_OK_CANCEL,
-                                            selection, 
-                                            items );
-                CleanupStack::PushL( dlg );
-                
-                // set title
-                HBufC* title = StringLoader::LoadLC( 
-                                        R_QTN_VPN_SETT_VPN_IAP_POLICY_REFERENCE );
-                dlg->SetSettingTextL( *title );
-                CleanupStack::PopAndDestroy( title );
-
-                // display dialog
-                CleanupStack::Pop();
-                if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
-                    {
-                    HBufC* polId = 
-                            ( iPolicyInfoList->At( selection ) ).iId.AllocLC();
-                    HBufC* polName = 
-                            ( iPolicyInfoList->At( selection ) ).iName.AllocLC();
-                    iCmPluginBaseEng.SetStringAttributeL( EVpnServicePolicyName,
-                                                          *polName );
-                    
-                    CLOG_WRITE_2( "New policy settings:[%S], [%S]", polName, polId );
-                    
-                    iCmPluginBaseEng.SetStringAttributeL( EVpnServicePolicy, 
-                                                          *polId );
-                    CleanupStack::PopAndDestroy( polName );
-                    CleanupStack::PopAndDestroy( polId );
-                    retVal = ETrue;
-                    }
-                }
-            }
-        else
-            {
-            // note: no VPN policies installed, reset policy to compulsory
-            CLOG_WRITE("No policy installed, reset policies");
-            
-            HBufC* text = StringLoader::LoadLC( 
-                                        R_QTN_VPN_INFO_NO_POLICIES_INSTALLED );
-            TCmCommonUi::ShowNoteL( *text, TCmCommonUi::ECmInfoNote );
-            CleanupStack::PopAndDestroy( text );
-            vpnerr = -1;
-            }
-        }
-
-    if ( vpnerr )
-        {
-        // note: no VPN policies installed or any other vpn error,
-        //  reset policy to compulsory
-        CLOG_WRITE("Reset policies");
-        
-        iCmPluginBaseEng.SetStringAttributeL( EVpnServicePolicyName,
-                                              KNullDesC() );
-        iCmPluginBaseEng.SetStringAttributeL( EVpnServicePolicy, 
-                                              KNullDesC() );
-        
-        }
-
-    CleanupStack::PopAndDestroy( items );
-    return retVal;
-    }
-    
-    
-// ----------------------------------------------------------------------------
-// CmPluginVpnPolicySelectionDlg::VpnClientInaccessibleL
-// ----------------------------------------------------------------------------
-//
-void CmPluginVpnPolicySelectionDlg::VpnClientInaccessibleL()
-    {
-    LOGGER_ENTERFN( "CmPluginVpnPolicySelectionDlg::VpnClientInaccessibleL" );
-    HBufC* text = StringLoader::LoadLC( R_QTN_VPN_INFO_MGMT_UI_NOT_ACCESSIBLE );
-    TCmCommonUi::ShowNoteL( *text, TCmCommonUi::ECmInfoNote );
-    CleanupStack::PopAndDestroy( text );
-    iVpnClientUnaccessible = ETrue;
-    }
--- a/cmmanager/cmmgr/Plugins/cmpluginvpn/src/cmpvpnsettingsdlg.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,614 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Dialog for editing VPN settings for a VPN
-*                connection method
-*
-*/
-
-// INCLUDE FILES
-#include <cmpluginbaseeng.h>
-#include <cmpluginvpn.mbg>
-#include <cmpluginvpnui.rsg>
-#include <AknDialog.h>
-#include <StringLoader.h>
-#include <cmmanager.rsg>
-#include <akntextsettingpage.h>
-#include <akntitle.h>
-#include <cmcommonui.h>
-#include <csxhelp/cp.hlp.hrh>
-
-#include "cmlogger.h"
-#include "cmmanagerimpl.h"
-#include "cmpluginvpn.h"
-#include "cmpvpnsettingsdlg.h"
-#include "cmvpncommonconstants.h"
-#include <cmpluginvpndef.h>
-#include "cmpvpnpolicyselectiondlg.h"
-#include <cmcommonconstants.h>
-#include <cmpsettingsconsts.h>
-#include "cmconnsettingsuiimpl.h"
-#include "cmdestinationimpl.h"
-#include "cmmanagerimpl.h"
-
-using namespace CMManager;
-
-
-// ================= MEMBER FUNCTIONS =======================================
-
-// --------------------------------------------------------------------------
-// CmPluginVpnSettingsDlg::NewL()
-// Two-phase dconstructor, second phase is ConstructAndRunLD
-// --------------------------------------------------------------------------
-//
-CmPluginVpnSettingsDlg* CmPluginVpnSettingsDlg::NewL( 
-                                            CCmPluginBaseEng& aCmPluginBase )
-	{
-	CmPluginVpnSettingsDlg* self = 
-	                new ( ELeave ) CmPluginVpnSettingsDlg( aCmPluginBase );
-	return self;
-	}
-	
-// --------------------------------------------------------------------------
-// CmPluginVpnSettingsDlg::CmPluginVpnSettingsDlg()
-// --------------------------------------------------------------------------
-//
-CmPluginVpnSettingsDlg::CmPluginVpnSettingsDlg( 
-                                            CCmPluginBaseEng& aCmPluginBase )
-    : CmPluginBaseSettingsDlg( aCmPluginBase )
-    {
-    
-    }
-    
-//---------------------------------------------------------------------------
-// CmPluginVpnSettingsDlg::ConstructAndRunLD
-// --------------------------------------------------------------------------
-//
-TInt CmPluginVpnSettingsDlg::ConstructAndRunLD( )
-    {
-    LOGGER_ENTERFN( "CmPluginVpnSettingsDlg::ConstructAndRunLD" );
-    CleanupStack::PushL( this );
-    LoadResourceL( KPluginVPNResDirAndFileName );
-    
-    // check if VPN is available, as if not, we can not show the details...
-    RVpnServ ps;
-    CleanupClosePushL<RVpnServ>( ps );
-    TInt err = ps.Connect();
-    if ( err )
-        {
-        // show note
-        HBufC* text = StringLoader::LoadLC( 
-                                    R_QTN_VPN_INFO_MGMT_UI_NOT_ACCESSIBLE );
-        TCmCommonUi::ShowNoteL( *text, TCmCommonUi::ECmInfoNote );
-        CleanupStack::PopAndDestroy( text );        
-        User::Leave( KLeaveWithoutAlert );
-        }
-    CleanupStack::PopAndDestroy(); // ps.close
-    
-    // check for compulsory fields missing & display note about it
-    // information note VPN access point is incomplete. Try reconfiguring 
-    // the access point. §qtn.vpn.info.vpn.iap.incomplete§ is displayed and 
-    // Must be defined qtn_selec_setting_compulsory is displayed 
-    // for the invalid settings.               
-    if ( !CompulsoryFilledL() )
-        {
-        // show note
-        HBufC* text = StringLoader::LoadLC( 
-                                    R_QTN_VPN_INFO_VPN_IAP_INCOMPLETE );
-        TCmCommonUi::ShowNoteL( *text, TCmCommonUi::ECmInfoNote );
-        CleanupStack::PopAndDestroy( text );
-        }
-    
-    CleanupStack::Pop( this );
-    
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    cmMgr.WatcherRegisterL( this );
-    
-    return CmPluginBaseSettingsDlg::ConstructAndRunLD( );
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginVpnSettingsDlg::~CmPluginVpnSettingsDlg
-// Destructor
-// --------------------------------------------------------------------------
-//
-CmPluginVpnSettingsDlg::~CmPluginVpnSettingsDlg()
-    {
-    iResourceReader.Close();
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginVpnSettingsDlg::UpdateListBoxContentBearerSpecificL
-// --------------------------------------------------------------------------
-//
-void CmPluginVpnSettingsDlg::UpdateListBoxContentBearerSpecificL( 
-                                                    CDesCArray& aItemArray )
-    {
-    LOGGER_ENTERFN( "CmPluginVpnSettingsDlg::UpdateListBoxContentBearerSpecificL" );
-    HBufC* value = NULL;
-        
-    // VPN policy - Compulsory field
-    AppendSettingTextsL( aItemArray, EVpnServicePolicyName );
-    
-    TUint32 iapId = iCmPluginBaseEng.GetIntAttributeL( EVpnIapId );
-    TUint32 destId = iCmPluginBaseEng.GetIntAttributeL( ECmNextLayerSNAPId );
-    
-    CCmDestinationImpl* dest = NULL;
-    
-    // The underlying CM is a Destination
-    if ( destId )
-        {
-        dest = iCmPluginBaseEng.CmMgr().DestinationL( destId );
-        CleanupStack::PushL( dest );
-//        CleanupReleasePushL( dest );
-        value = dest->NameLC();
-        }
-    // The underlying CM is a CM
-    else if ( iapId )
-        {
-        value = iCmPluginBaseEng.CmMgr().GetConnectionMethodInfoStringL( 
-                                                           iapId, ECmName );
-        CleanupStack::PushL( value );
-        }
-    else
-        {
-        // Must be defined
-        value = StringLoader::LoadLC( R_QTN_VPN_SETT_VPN_IAP_REAL_NETW_REF_COMPULSORY );
-        }
-    
-    AppendSettingTextsL( aItemArray,
-                         ECmNextLayerIapId,
-                         R_QTN_VPN_SETT_VPN_IAP_REAL_NETW_REFERENCE,
-                         *value,
-                         ETrue );
-    CleanupStack::PopAndDestroy( value );
-
-    if ( destId )
-        {
-        CleanupStack::PopAndDestroy( dest );
-        }
-                         
-    // Proxy server address
-    AppendSettingTextsL( aItemArray, ECmProxyServerName );
-    // Proxy port number
-    AppendSettingTextsL( aItemArray, ECmProxyPortNumber );
-    
-    }
-
-
-// --------------------------------------------------------------------------
-// CmPluginVpnSettingsDlg::RunAdvancedSettingsL
-// --------------------------------------------------------------------------
-//
-void CmPluginVpnSettingsDlg::RunAdvancedSettingsL()
-    {
-    /* empty functionality */
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginVpnSettingsDlg::DynInitMenuPaneL
-// --------------------------------------------------------------------------
-//
-void CmPluginVpnSettingsDlg::DynInitMenuPaneL( TInt aResourceId,
-                                               CEikMenuPane* aMenuPane )
-   {
-   if ( aResourceId == R_PLUGIN_BASE_MENU )
-        {
-        aMenuPane->SetItemDimmed( EPluginBaseCmdAdvanced, ETrue  );           
-        }
-    }
-        
-// --------------------------------------------------------------------------
-// CmPluginVpnSettingsDlg::ShowPopupSettingPageL
-// --------------------------------------------------------------------------
-//
-TBool CmPluginVpnSettingsDlg::ShowPopupSettingPageL( TUint32 aAttribute, 
-                                                     TInt aCommandId )
-    {
-    LOGGER_ENTERFN( "CmPluginVpnSettingsDlg::ShowPopupSettingPageL" );
-    TBool retVal = EFalse;
-    switch ( aAttribute )
-        {
-        case EVpnServicePolicyName:        
-            {
-            CmPluginVpnPolicySelectionDlg* dlg = 
-                    CmPluginVpnPolicySelectionDlg::NewL( iCmPluginBaseEng );
-            CleanupStack::PushL( dlg );
-            retVal = dlg->ShowPolicySelectionDlgL();
-            UpdateListBoxContentL();
-            CleanupStack::PopAndDestroy();
-            break;
-            }
-        case ECmProxyServerName:
-            {
-            retVal = ShowPopupTextSettingPageL( aAttribute );
-            break;
-            }
-        case EVpnIapId:
-        case ECmNextLayerIapId:
-            {
-            ShowIapSelectionSettingPageL();
-            break;
-            }
-        case ECmProxyPortNumber:
-            {
-            HBufC* proxyName = iCmPluginBaseEng.GetStringAttributeL( ECmProxyServerName );
-            if( !proxyName )
-                {
-                break;
-                }
-            CleanupStack::PushL( proxyName );
-            if( proxyName->Length() )
-                { // Port number is allowed to set after proxy address is set.
-                retVal = ShowPopupPortNumSettingPageL( aAttribute );
-                }
-            CleanupStack::PopAndDestroy(); // proxyName
-            break;
-            }
-        default:
-            {
-            CmPluginBaseSettingsDlg::ShowPopupSettingPageL( aAttribute, 
-                                                            aCommandId );
-            break;
-            }
-        }
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginVpnSettingsDlg::ShowIapSelectionSettingPageL
-// --------------------------------------------------------------------------
-//
-TBool CmPluginVpnSettingsDlg::ShowIapSelectionSettingPageL()
-    {  
-    LOGGER_ENTERFN( "CmPluginVpnSettingsDlg::ShowIapSelectionSettingPageL" ); 
-    TBool retVal( EFalse );
-    
-    CCmConnSettingsUiImpl* settings = 
-                                CCmConnSettingsUiImpl::NewL();
-    CleanupStack::PushL( settings );
-    settings->EnableEasyWlan( ETrue );
-    settings->EnableEmptyDestinations( EFalse );
-    settings->EnableVirtualCMs( EFalse );
-    
-    CCmDestinationImpl* d = iCmPluginBaseEng.ParentDestination();
-    if ( d )
-        {
-        settings->SetDestinationToOmit( d->Id() );
-//        settings->EnableUncat( ETrue );
-        }
-    else
-        {
-//        settings->EnableUncat( EFalse );
-        }
-    delete d;
-    settings->EnableUncat( ETrue );
-    
-    CCmPluginVpn* plugin = static_cast<CCmPluginVpn *>
-                    ( &iCmPluginBaseEng );
-    
-    RArray<TUint32> cmArray ( KCmArrayMediumGranularity );
-    CleanupClosePushL( cmArray );
-    
-    plugin->BindableDestinationsL( cmArray );
-    
-    settings->SetDestinationArrayToUseL( cmArray );
-    
-    TCmSettingSelection selection;
-    
-    // Get the underlying CM
-    selection.iId = iCmPluginBaseEng.GetIntAttributeL( ECmNextLayerIapId );
-    
-    if ( selection.iId )
-        {
-        selection.iResult = EConnectionMethod;
-        }
-    // The underlying CM is a destination
-    else
-        {        
-        selection.iResult = EDestination;
-        selection.iId = iCmPluginBaseEng.GetIntAttributeL( ECmNextLayerSNAPId );
-        }
-    
-    TBearerFilterArray aFilterArray;
-    if ( settings->RunApplicationSettingsL( selection,
-                                            EShowDestinations |
-                                            EShowConnectionMethods , 
-                                            aFilterArray ) )
-        {
-        switch ( selection.iResult )
-            {
-            case EDestination:
-                {
-                iCmPluginBaseEng.SetIntAttributeL( ECmNextLayerSNAPId, selection.iId );
-                break;
-                }
-            case EConnectionMethod:
-                {
-                
-                iCmPluginBaseEng.SetIntAttributeL( ECmNextLayerIapId, selection.iId );
-                break;
-                }
-            default:
-                {
-                User::Leave( KErrNotSupported );
-                }
-            }
-        UpdateListBoxContentL();
-        
-        // update the title pane with the new name
-        HBufC* newCmName = iCmPluginBaseEng.GetStringAttributeL( ECmName );
-        CleanupStack::PushL( newCmName );
-        iTitlePane->SetTextL( *newCmName );
-        CleanupStack::PopAndDestroy( newCmName );
-        
-        retVal = ETrue;
-        }
-    CleanupStack::PopAndDestroy( &cmArray );
-    CleanupStack::PopAndDestroy( settings );
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginVpnSettingsDlg::ProcessCommandL
-// --------------------------------------------------------------------------
-//
-void CmPluginVpnSettingsDlg::ProcessCommandL( TInt aCommandId )
-    {
-    if ( MenuShowing() )
-        {
-        HideMenu();
-        }
-
-    switch ( aCommandId )
-        {
-        case EAknSoftkeyOk:
-        case EPluginBaseCmdChange:
-            {
-            ShowPopupSettingPageL( 
-                    iSettingIndex->At( iListbox->CurrentItemIndex() ), 
-                                        aCommandId );
-            break;            
-            }
-        case EVpnIapId:
-        case ECmNextLayerIapId:
-        case ECmProxyServerName:
-        case ECmProxyPortNumber:
-            {
-            TInt attrib = iSettingIndex->At( iListbox->CurrentItemIndex() );
-            ShowPopupSettingPageL( attrib, aCommandId );  
-            break;
-            }
-        case EVpnServicePolicyName:
-            {
-            CmPluginVpnPolicySelectionDlg* dlg = 
-                    CmPluginVpnPolicySelectionDlg::NewL( iCmPluginBaseEng );
-            CleanupStack::PushL( dlg );
-            if ( dlg->ShowPolicySelectionDlgL() )
-                {
-                // update the setting
-                UpdateListBoxContentL();
-                }
-            // we might need to update even if not accepted
-            
-            CleanupStack::PopAndDestroy();
-            break;
-            }
-        default:
-            {
-            CmPluginBaseSettingsDlg::ProcessCommandL( aCommandId );
-            break;            
-            }
-        }
-    }
-
-
-// --------------------------------------------------------------------------
-// CmPluginVpnSettingsDlg::CompulsoryFilledL
-// --------------------------------------------------------------------------
-//
-TBool CmPluginVpnSettingsDlg::CompulsoryFilledL()
-    {
-    LOGGER_ENTERFN( "CmPluginVpnSettingsDlg::CompulsoryFilledL" );
-    
-    TBool retval = ETrue;
-    // compulsory settings are ECmName, EVpnIapId, EVpnServicePolicy
-    
-    // check name first
-    HBufC* name = iCmPluginBaseEng.GetStringAttributeL( ECmName );
-    if ( ( name->Compare( KNullDesC() ) ) == 0 )
-        {
-        retval = EFalse;
-        }        
-    delete name;
-    
-    // check VPN IAP ID
-    TUint32 iapid = iCmPluginBaseEng.GetIntAttributeL( EVpnIapId );
-    if ( !iapid )
-        {
-        TUint32 nextiapid = iCmPluginBaseEng.GetIntAttributeL( ECmNextLayerIapId  );
-        TUint32 snapid = iCmPluginBaseEng.GetIntAttributeL( ECmNextLayerSNAPId );
-        if ( !(nextiapid ^ snapid) )
-            {
-            retval = EFalse;
-            }
-        }
-        
-    // check policy
-    HBufC* polId = iCmPluginBaseEng.GetStringAttributeL( EVpnServicePolicy );
-    if ( ( polId->Compare( KNullDesC() ) ) == 0 )
-        {
-        retval = EFalse;
-        }
-    delete polId;
-
-    // check policy name
-    HBufC* polname = iCmPluginBaseEng.GetStringAttributeL( EVpnServicePolicyName );
-    if ( ( polname->Compare( KNullDesC() ) ) == 0 )
-        {
-        retval = EFalse;
-        }
-    delete polname;
-    
-    return retval;
-    }
-
-
-// --------------------------------------------------------------------------
-// CmPluginVpnSettingsDlg::OkToExitL
-// Good to know : EAknSoftkeyCancel is never called, because
-// EEikDialogFlagNotifyEsc flag is not set in the resource.
-// --------------------------------------------------------------------------
-//
-TBool CmPluginVpnSettingsDlg::OkToExitL( TInt aButtonId )
-    {
-    // Translate the button presses into commands for the appui & current
-    // view to handle
-    TBool retval( EFalse );
-    
-    switch ( aButtonId )
-        {
-        case EAknSoftkeyBack:
-            {
-            if ( CompulsoryFilledL() )
-                {
-                if( iIsPossibleToSaveSetting && iHasSettingChanged )
-                {
-                    iCmPluginBaseEng.UpdateL();
-                    iHasSettingChanged = EFalse;
-                }
-                retval = ETrue;
-
-                iCmPluginBaseEng.CmMgr().WatcherUnRegister();
-                }
-            else
-                {
-                // If there are compulsory fields empty, a confirmation query
-                // Incomplete VPN access point details. Exit without saving?
-                // §qtn.vpn.quest.vpn.iap.incomplete.delete§ is displayed.
-                // show note that compulsory settings are not filled
-                TInt res = TCmCommonUi::ShowConfirmationQueryL( 
-                                R_QTN_VPN_QUEST_VPN_IAP_INCOMPLETE_DELETE );
-                if ( res )
-                    { // quit without save
-                    retval = ETrue;
-                    TUint32 id = iCmPluginBaseEng.GetIntAttributeL( ECmId );
-                    iCmPluginBaseEng.RestoreAttributeL( ECmName );
-                    iCmPluginBaseEng.RestoreAttributeL( EVpnServicePolicyName );
-                    // EVpnServicePolicy has been restored when EVpnServicePolicyName
-                    // is restored.
-                    //iCmPluginBaseEng.RestoreAttributeL( EVpnServicePolicy );
-                    iCmPluginBaseEng.RestoreAttributeL( EVpnIapId );
-                    iCmPluginBaseEng.RestoreAttributeL( ECmNextLayerIapId );
-                    iCmPluginBaseEng.RestoreAttributeL( ECmNextLayerSNAPId );
-                    iCmPluginBaseEng.RestoreAttributeL( ECmProxyServerName );
-                    iCmPluginBaseEng.RestoreAttributeL( ECmProxyPortNumber );
-                    
-                    iCmPluginBaseEng.CmMgr().WatcherUnRegister();
-                    }
-                else
-                    { // do not save, reconfigure
-                    retval = EFalse;                    
-                    }
-                }
-            break;
-            }
-        default:
-            {
-            if( aButtonId == EPluginBaseCmdExit )
-                {
-                iCmPluginBaseEng.CmMgr().WatcherUnRegister();
-                }
-            
-            retval = CmPluginBaseSettingsDlg::OkToExitL( aButtonId );
-            break;
-            }
-        }
-
-    return retval;
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginVpnSettingsDlg::GetHelpContext
-// --------------------------------------------------------------------------
-//
-    
-void CmPluginVpnSettingsDlg::GetHelpContext( TCoeHelpContext& aContext ) const
-    {
-    LOGGER_ENTERFN( "CmPluginVpnSettingsDlg::GetHelpContext" );
-    aContext.iMajor = KHelpUidPlugin;
-    aContext.iContext = KSET_HLP_VPN_AP_SETTINGS_VIEW;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginVpnSettingsDlg::CommsDatChangesL
-// --------------------------------------------------------------------------
-//
-void CmPluginVpnSettingsDlg::CommsDatChangesL()
-    {
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    CCmDestinationImpl* parentDest = iCmPluginBaseEng.ParentDestination();
-
-    if ( parentDest )
-        {
-        if( !cmMgr.DestinationStillExistedL( parentDest ) )
-            {
-            cmMgr.WatcherUnRegister();
-            // If parent destination diappears with some reason 
-            // then the view must exit back to main view for it
-            // may be danger if going back to parent view
-            iExitReason = KDialogUserExit;
-            TryExitL( iExitReason );
-            
-            cmMgr.RemoveDestFromPool( parentDest );
-            delete parentDest;
-            return;
-            }
-        
-        if( !cmMgr.IsIapStillInDestL( parentDest, iCmPluginBaseEng ) )
-            {
-            cmMgr.WatcherUnRegister();
-            // In this case, the view can go back to the parent view
-            TryExitL( iExitReason );
-            
-            cmMgr.RemoveDestFromPool( parentDest );
-            delete parentDest;
-            return;            
-            }
-        
-        // We may have to go back to parent view even though this Iap is still in CommsDat
-        // for cmMgr ( = iCmPluginBaseEng.CmMgr() ) can not be accessed any more
-        // after this call when some Iap is deleted.
-        cmMgr.WatcherUnRegister();
-        TryExitL( iExitReason );
-        
-        cmMgr.RemoveDestFromPool( parentDest );
-        delete parentDest;
-        }
-    else
-        {
-        if( !cmMgr.IapStillExistedL( iCmPluginBaseEng ) )
-            {
-            cmMgr.WatcherUnRegister();
-            // In this case, the dialog can go back to the parent view
-            TryExitL( iExitReason );
-            return;
-            }
-        
-        // We may have to go back to parent view even though this Iap is still in CommsDat
-        // for cmMgr ( = iCmPluginBaseEng.CmMgr() ) can not be accessed any more
-        // after this call when some Iap is deleted.
-        cmMgr.WatcherUnRegister();
-        TryExitL( iExitReason );
-        }
-    }
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/data/10281BB2.rss	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Resource definitions for project cmpluginwlan
-*
-*/
-
-#include "ecom/registryinfo.rh"
-
-// Because attribute enums had to be added to namespace CMManager
-// it's not possible to included cmpluginwlandef.h
-// Thus bearer type id had to be redefine here.
-#define KUidWlanBearerType  0x10281BB1
-
-RESOURCE REGISTRY_INFO theInfo
-    {
-    dll_uid = 0x10281BB2;
-    interfaces = 
-        {
-        INTERFACE_INFO
-            {
-            interface_uid = 0x10207377; // = KCMPluginInterfaceUid
-            implementations = 
-                {
-                IMPLEMENTATION_INFO
-                    {
-                    implementation_uid = KUidWlanBearerType;
-                    version_no = 1;
-                    display_name = "Wlan";
-                    default_data = "Wlan";
-                    opaque_data = "";
-                    }
-                };
-            }
-        };
-    }
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/data/cmwlanui.rss	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,641 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Resource definitions for project cmpluginwlan
-*
-*/
-#include <avkon.rsg>
-#include <avkon.rh>    
-#include <avkon.loc>
-#include <avkon.mbg>
-#include <uikon.rh>
-#include <eikon.rsg>
-#include <eikon.rh>
-#include <AvkonIcons.hrh>
-#include <cmpsettingsconsts.h>
-#include <cmmanager.rsg>
-
-#include <cmpluginwlan.loc>
-
-NAME    WLPL
-
-RESOURCE RSS_SIGNATURE { }
-
-RESOURCE TBUF { buf = "cmwlanplugin"; }
-
-
-// LOCALISED STRINGS
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_bearer_supported_wlan
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_bearer_supported_wlan
-    {
-    buf = qtn_netw_conset_bearer_supported_wlan;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_bearer_available_wlan
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_bearer_available_wlan
-    {
-    buf = qtn_netw_conset_bearer_available_wlan;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_one_wlan_nw_available
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_one_wlan_nw_available
-    {
-    buf = qtn_netw_conset_one_wlan_nw_available;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_many_wlan_nw_available
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_many_wlan_nw_available
-    {
-    buf = qtn_netw_conset_many_wlan_nw_available;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_network_name
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_network_name
-    {
-    buf = qtn_wlan_sett_network_name;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_prmpt_network_name
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_prmpt_network_name
-    {
-    buf = qtn_wlan_prmpt_network_name;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_hidden_network
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_hidden_network
-    {
-    buf = qtn_wlan_sett_hidden_network;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_network_mode
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_network_mode
-    {
-    buf = qtn_wlan_sett_network_mode;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_security_mode
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_security_mode
-    {
-    buf = qtn_wlan_sett_security_mode;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_security_settings
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_security_settings
-    {
-    buf = qtn_wlan_sett_security_settings;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_hidden_network_no
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_hidden_network_no
-    {
-    buf = qtn_wlan_sett_hidden_network_no;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_hidden_network_yes
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_hidden_network_yes
-    {
-    buf = qtn_wlan_sett_hidden_network_yes;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_network_mode_infra
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_network_mode_infra
-    {
-    buf = qtn_wlan_sett_network_mode_infra;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_prmpt_wlan_nw_mode_and_status
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_prmpt_wlan_nw_mode_and_status
-    {
-    buf = qtn_netw_conset_prmpt_wlan_nw_mode_and_status;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_network_mode_infra_public
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_network_mode_infra_public
-    {
-    buf = qtn_wlan_network_mode_infra_public;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_network_mode_infra_hidden
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_network_mode_infra_hidden
-    {
-    buf = qtn_wlan_network_mode_infra_hidden;
-    }
-    
- // ---------------------------------------------------------------------------
-// r_qtn_wlan_network_mode_adhoc_public
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_network_mode_adhoc_public
-    {
-    buf = qtn_wlan_network_mode_adhoc_public;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_network_mode_adhoc_hidden
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_network_mode_adhoc_hidden
-    {
-    buf = qtn_wlan_network_mode_adhoc_hidden;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_prmpt_wlan_nw_security_mode
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_prmpt_wlan_nw_security_mode
-    {
-    buf = qtn_netw_conset_prmpt_wlan_nw_security_mode;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_wlan_security_mode_open
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_wlan_security_mode_open
-    {
-    buf = qtn_netw_conset_wlan_security_mode_open;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_wlan_security_mode_wep
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_wlan_security_mode_wep
-    {
-    buf = qtn_netw_conset_wlan_security_mode_wep;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_wlan_security_mode_802_1x
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_wlan_security_mode_802_1x
-    {
-    buf = qtn_netw_conset_wlan_security_mode_802_1x;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_wlan_security_mode_wpa
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_wlan_security_mode_wpa
-    {
-    buf = qtn_netw_conset_wlan_security_mode_wpa;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_security_mode_open
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_security_mode_open
-    {
-    buf = qtn_wlan_sett_security_mode_open;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_security_mode_wep
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_security_mode_wep
-    {
-    buf = qtn_wlan_sett_security_mode_wep;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_security_mode_802_1x
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_security_mode_802_1x
-    {
-    buf = qtn_wlan_sett_security_mode_802_1x;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_wlan_sett_security_mode_wpa
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_wlan_sett_security_mode_wpa
-    {
-    buf = qtn_netw_conset_wlan_sett_security_mode_wpa;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_security_mode_wapi
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_security_mode_wapi
-    {
-    buf = qtn_wlan_sett_security_mode_wapi;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_prmpt_wlan_wpa_mode
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_prmpt_wlan_wpa_mode
-    {
-    buf = qtn_netw_conset_prmpt_wlan_wpa_mode;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_prmpt_wpa_mode_eap
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_prmpt_wpa_mode_eap
-    {
-    buf = qtn_netw_conset_prmpt_wpa_mode_eap;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_prmpt_wpa_mode_psk
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_prmpt_wpa_mode_psk
-    {
-    buf = qtn_netw_conset_prmpt_wpa_mode_psk;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_info_eap_settings_default
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_info_eap_settings_default
-    {
-    buf = qtn_netw_conset_info_eap_settings_default;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_security_mode_wpa
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_security_mode_wpa
-    {
-    buf = qtn_wlan_sett_security_mode_wpa;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_network_name_user_defined
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_network_name_user_defined
-    {
-    buf = qtn_wlan_sett_network_name_user_defined;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_network_name_scan
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_network_name_scan
-    {
-    buf = qtn_wlan_sett_network_name_scan;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_network_mode_adhoc
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_network_mode_adhoc
-    {
-    buf = qtn_wlan_sett_network_mode_adhoc;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_adhoc_channel
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_adhoc_channel
-    {
-    buf = qtn_wlan_sett_adhoc_channel;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_prmpt_adhoc_channel
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_prmpt_adhoc_channel
-    {
-    buf = qtn_wlan_prmpt_adhoc_channel;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_adhoc_channel_automatic
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_adhoc_channel_automatic
-    {
-    buf = qtn_wlan_sett_adhoc_channel_automatic;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_adhoc_channel_user_defined
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_adhoc_channel_user_defined
-    {
-    buf = qtn_wlan_sett_adhoc_channel_user_defined; 
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_info_no_security_settings
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_info_no_security_settings
-    {
-    buf = qtn_wlan_info_no_security_settings;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_netw_conset_popup_bearer_wlan
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_netw_conset_popup_bearer_wlan
-    {
-    buf = qtn_netw_conset_popup_bearer_wlan;
-    }
-
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_quest_nw_name_not_defined
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_quest_nw_name_not_defined
-    {
-    buf = qtn_wlan_quest_nw_name_not_defined;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_quest_security_settings_empty
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_quest_security_settings_empty
-    {
-    buf = qtn_wlan_quest_security_settings_empty;
-    }
-  
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_bearer_wlan
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_bearer_wlan
-    {
-    buf = qtn_wlan_sett_bearer_wlan;
-    }
-
-
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_ssid_roaming
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_ssid_roaming
-    {
-    buf = qtn_wlan_sett_ssid_roaming;
-    }
-
-
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_ssid_roaming_enabled
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_ssid_roaming_enabled
-    {
-    buf = qtn_wlan_sett_ssid_roaming_enabled;
-    }
-
-
-// ---------------------------------------------------------------------------
-// r_qtn_wlan_sett_ssid_roaming_disabled
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_qtn_wlan_sett_ssid_roaming_disabled
-    {
-    buf = qtn_wlan_sett_ssid_roaming_disabled;
-    }
-
-// ---------------------------------------------------------------------------
-// qtn_wlan_info_no_networks_found;
-// localised string
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_info_no_networks_found
-    { 
-    buf = qtn_wlan_info_no_networks_found;
-    }
-
-// ---------------------------------------------------------------------------
-// r_setting_app_edwin_netw_name
-// edwin for network name setting page
-// ---------------------------------------------------------------------------
-//
-RESOURCE EDWIN r_setting_app_edwin_netw_name
-    {
-    width = KNetworkNameWidth;
-    lines = KNetworkNameLines;
-    maxlength = KMaxNetworkNameLength;
-    allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode;
-    default_input_mode = EAknEditorTextInputMode;
-    flags = EEikEdwinAutoSelection | EEikEdwinNoLineOrParaBreaks;
-    }
-
-    
-// ---------------------------------------------------------------------------
-// r_text_setting_page_netw_name
-// setting page for network name
-// ---------------------------------------------------------------------------
-//
-RESOURCE AVKON_SETTING_PAGE r_text_setting_page_netw_name
-    {
-    number = EAknSettingPageNoOrdinalDisplayed;
-    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-    label = qtn_wlan_sett_network_name;
-    type = EEikCtEdwin;
-    editor_resource_id = r_setting_app_edwin_netw_name;
-    }
-
-// ---------------------------------------------------------------------------
-// r_text_setting_page_gw_addr
-// setting page for WAP gateway address
-// ---------------------------------------------------------------------------
-//
-RESOURCE AVKON_SETTING_PAGE r_text_setting_page_gw_addr
-    {
-    number = EAknSettingPageNoOrdinalDisplayed;
-    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-    label= qtn_netw_sett_default_gateway;
-    type = EAknCtIpFieldEditor;
-    editor_resource_id = R_SETTING_APP_IP_EDITOR;
-    }
-    
-// ---------------------------------------------------------------------------
-// r_text_setting_page_subnet_addr
-// setting page for subnet mask setting
-// ---------------------------------------------------------------------------
-//
-RESOURCE AVKON_SETTING_PAGE r_text_setting_page_subnet_addr
-    {
-    number = EAknSettingPageNoOrdinalDisplayed;
-    softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-    label = qtn_netw_sett_subnet_mask;
-    type = EAknCtIpFieldEditor;
-    editor_resource_id = R_SETTING_APP_IP_EDITOR;
-    }
-
-// --------------------------------------------------------------------------
-// r_numeric_query
-// number query
-// --------------------------------------------------------------------------
-//
-RESOURCE DIALOG r_numeric_query
-	{
-	flags = EGeneralQueryFlags | EEikDialogFlagNoShadow;
-	buttons = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
-	items=
-		{
-		DLG_LINE
-			{
-			type = EAknCtQuery;
-			id = EGeneralQuery;
-			control = AVKON_DATA_QUERY 
-				{ 
-				layout = EStaticSizeDataLayout;
-				control = EDWIN
-					{
-					flags = EEikEdwinNoHorizScrolling;
-                    default_input_mode = EAknEditorNumericInputMode;
-					};
-				};
-			}
-		};
-	}
-
-
-RESOURCE DIALOG r_searching_wlan_wait_note
-	{
-	flags = EAknWaitNoteFlags;
-	buttons=R_AVKON_SOFTKEYS_EMPTY;
-    items=
-		{
-		DLG_LINE
-			{
-			type = EAknCtNote;
-			id = EGeneralNote; 
-			control= AVKON_NOTE 
-                { 
-				layout = EWaitLayout;
-				singular_label = qtn_wlan_wait_searching_networks;				
-                imagefile = AVKON_ICON_FILE;
-				imageid = EMbmAvkonQgn_note_progress;
-				imagemask = EMbmAvkonQgn_note_progress_mask;
-				animation = R_QGN_GRAF_WAIT_BAR_ANIM;				
-				};
-			}
-		};
-	}
-
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/group/bld.inf	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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: 
-*      Build information for the WLAN plugin.   
-*      
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-// export localised loc file
-../loc/cmpluginwlan.loc	MW_LAYER_LOC_EXPORT_PATH(cmpluginwlan.loc)
-
-PRJ_MMPFILES
-cmpluginwlan.mmp
-
-PRJ_EXTENSIONS
-START EXTENSION s60/mifconv
-OPTION TARGETFILE cmpluginwlan.mif
-OPTION HEADERFILE cmpluginwlan.mbg
-OPTION SOURCES -c8,1 qgn_prop_wlan_bearer\
-               -c8,8 qgn_prop_set_conn_bearer_avail_wlan\
-               -c8,1 qgn_prop_set_conn_wlan_easy
-END
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/group/cmpluginwlan.mmp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
-* Copyright (c) 2006 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: 
-*      Project specification for LAN Plugin.   
-*      
-*
-*/
-
-#include <data_caging_paths.hrh>
-#include <platform_paths.hrh>
-
-TARGET      cmpluginwlan.dll
-UID         0x10009D8D 0x10281BB2
-
-TARGETTYPE		PLUGIN
-
-CAPABILITY      CAP_ECOM_PLUGIN
-VENDORID        VID_DEFAULT
-
-SOURCEPATH  ../src
-
-SOURCE      cmpluginwlanproxy.cpp
-SOURCE      cmpluginwlan.cpp
-SOURCE      cmpluginwlandata.cpp
-SOURCE      cmpluginwlandataarray.cpp
-SOURCE      ../../../Framework/Src/cmlogger.cpp
-SOURCE      cmpwlansettingsdlg.cpp
-SOURCE      cmpwlansettingsdlgadv.cpp
-SOURCE      cmpwlansettingsdlgipv4.cpp
-SOURCE      cmpwlansettingsdlgipv6.cpp
-SOURCE      cmwlancoveragecheck.cpp
-SOURCE      cmpwlanactivewaiter.cpp
-
-SOURCEPATH  ../data
-
-START RESOURCE 10281BB2.rss
-TARGET cmpluginwlan.rsc
-END
-
-START RESOURCE cmwlanui.rss
-DEPENDS cmmanager.rsg
-HEADER
-TARGETPATH   RESOURCE_FILES_DIR
-LANGUAGE_IDS
-END
-
-USERINCLUDE     ../../../Framework/Inc
-
-// Component specific internal headers 
-USERINCLUDE			../inc
-
-// ADO specific internal headers 
-SYSTEMINCLUDE		../../../../../inc
-   
-//Macro to /epoc32 headers
-MW_LAYER_SYSTEMINCLUDE
-
-LIBRARY     euser.lib
-LIBRARY 	efsrv.lib
-LIBRARY	    ECOM.LIB
-LIBRARY     cmmanager.lib
-LIBRARY     COMMSDAT.lib
-LIBRARY     WEPSecuritySettingsUi.lib
-LIBRARY     WPASecuritySettingsUi.lib
-LIBRARY     wapisecuritysettingsui.lib
-LIBRARY     AknSkins.lib
-LIBRARY     ConnectionUiUtilities.lib
-LIBRARY     cmmanagerdatabase.lib
-
-DEBUGLIBRARY flogger.lib
-
-LIBRARY	CommonUI.LIB
-LIBRARY	CommonEngine.lib
-LIBRARY	bafl.lib
-LIBRARY eikcoctl.lib avkon.lib eikdlg.lib
-LIBRARY insock.lib
-LIBRARY FeatMgr.lib
-   
-LIBRARY eikcore.lib egul.lib
-LIBRARY eikctl.lib  cone.lib 
-LIBRARY fbscli.lib
-LIBRARY AknCapServerClient.lib
-LIBRARY aknnotify.lib
-
-LIBRARY	wifiprotplugin.lib
-
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/group/pluginwlan_icons.mk	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-#
-# Copyright (c) 2003 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:  Makefile for icons of ApSettingsHandlerUi
-#
-
-ifeq (WINS,$(findstring WINS, $(PLATFORM)))
-ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\Z
-else
-ZDIR=\epoc32\data\z
-endif
-
-
-TARGETDIR=$(ZDIR)\resource\apps
-ICONTARGETFILENAME=$(TARGETDIR)\cmpluginwlan.mif
-
-HEADERDIR=\epoc32\include
-HEADERFILENAME=$(HEADERDIR)\cmpluginwlan.mbg
-
-do_nothing :
-	@rem do_nothing
-
-MAKMAKE : do_nothing
-
-BLD : do_nothing
-
-CLEAN : do_nothing
-
-LIB : do_nothing
-
-CLEANLIB : do_nothing
-
-# ----------------------------------------------------------------------------
-# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by
-# MifConv if the mask detph is defined.
-#
-# NOTE 2: Usually, source paths should not be included in the bitmap
-# definitions. MifConv searches for the icons in all icon directories in a
-# predefined order, which is currently \s60\icons, \s60\bitmaps2, \s60\bitmaps.
-# The directory \s60\icons is included in the search only if the feature flag
-# __SCALABLE_ICONS is defined.
-# ----------------------------------------------------------------------------
-
-RESOURCE :
-	mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) \
-                /c8,1 qgn_prop_wlan_bearer.bmp \
-                /c8,8 qgn_prop_set_conn_bearer_avail_wlan.bmp \
-                /c8,1 qgn_prop_set_conn_wlan_easy.bmp
-
-FREEZE : do_nothing
-
-SAVESPACE : do_nothing
-
-RELEASABLES :
-	@echo $(HEADERFILENAME)&& \
-	@echo $(ICONTARGETFILENAME)
-
-FINAL : do_nothing
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmpluginwlan.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,617 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of WLAN interface implementation for WLAN plugin
-*
-*/
-
-#ifndef WLAN_PLUGIN_H
-#define WLAN_PLUGIN_H
-
-// INCLUDES
-#include <cmpluginlanbase.h>
-#include <cmpluginwlandef.h>
-#include <e32base.h>
-#include <eikdoc.h>
-#include <apparc.h>
-#include <eikenv.h>
-#include <wlanmgmtcommon.h>
-#include <wifiprotreturn.h>
-
-// FORWARD DECLARATION
-class CCDWlanServiceRecord;
-class CWEPSecuritySettings;
-class CWEPSecuritySettingsUi;
-class CWPASecuritySettings;
-class CWPASecuritySettingsUi;
-class RConeResourceLoader;
-class CConnectionUiUtilities;
-class CCmPluginWlanDataArray;
-class CAknWaitDialog;
- 
-class CWAPISecuritySettings;
-class CWAPISecuritySettingsUi;
-
-/** 
- * WPA Mode
- */
-enum TWpaMode
-    {
-    EWpaModeUndefined = -1,
-    EWpaModeEap,
-    EWpaModePreSharedKey
-    };
-
-/**
- *  WLAN Plugin IF implementation class
- *
- *  ?more_complete_description
- *
- *  @since S60 3.2
- */
-NONSHARABLE_CLASS( CCmPluginWlan ) : public CCmPluginLanBase
-    {
-
-    public: // Constructors and destructor
-
-        /**
-        * Two phased constructor
-        *
-        * @since S60 3.2
-        * @param aInitParam
-        * @return The created object.
-        */      
-		static CCmPluginWlan* NewL( TCmPluginInitParam* aInitParam );
-
-        /**
-        * Destructor.
-        */      
-        virtual ~CCmPluginWlan();
-        
-        virtual CCmPluginBaseEng* CreateInstanceL( TCmPluginInitParam& aInitParam ) const;
-        
-    public: // from base class
-        
-		/**
-		* From CCmPluginBaseEng
-		* Gets the value for a TUint32 attribute
-		*
-		* @since S60 3.2
-		* @param aAttribute Identifies the attribute to be retrived
-		* @return the requested TUint32 value
-		*/
-		TUint32 GetIntAttributeL( const TUint32 aAttribute ) const;
-
-		/**
-		* From CCmPluginBaseEng
-		* Gets the value for a TBool attribute
-		*
-		* @since S60 3.2
-		* @param aAttribute Identifies the attribute to be retrived
-        * @return the requested TBool value
-		*/
-		TBool GetBoolAttributeL( const TUint32 aAttribute ) const;
-
-		/**
-		* From CCmPluginBaseEng
-		* Gets the value for a TDes16 attribute
-		*
-		* @since S60 3.2
-		* @param aAttribute Identifies the attribute to be retrived
-        * @return the requested string value
-		*/
-		HBufC* GetStringAttributeL( const TUint32 aAttribute ) const;
-
-		/**
-		* From CCmPluginBaseEng
-		* Sets the value for a TInt attribute
-		*
-		* @since S60 3.2
-		* @param aAttribute Identifies the attribute to be set.
-		* @param aValue The value to be set
-        */
-		void SetIntAttributeL( const TUint32 aAttribute, TUint32 aValue );
-
-		/**
-		* * From CCmPluginBaseEng
-		* Sets the value for a TBool attribute
-		*
-		* @since S60 3.2
-		* @param aAttribute Identifies the attribute to be set.
-		* @param aValue The value to be set
-        */
-		void SetBoolAttributeL( const TUint32 aAttribute, TBool aValue );
-
-		/**
-		* From CCmPluginBaseEng
-		* Sets the value for a TDesC attribute
-		*
-		* @since S60 3.2
-		* @param aAttribute Identifies the attribute to be set.
-		* @param aValue The value to be set
-        */
-		void SetStringAttributeL( const TUint32 aAttribute, const TDesC16& aValue );
-      
-        /**
-		* From CCmPluginBaseEng
-		* Checks if the plug-in can handle the given AP.
-		*
-		* @since S60 3.2
-		* @param aIapId
-		* @return ETrue if plug-in can handle the IAP
-        */        
-        TBool CanHandleIapIdL( TUint32 aIapId ) const;
-        
-        /**
-		* From CCmPluginBaseEng
-        * Checks if the plug-in can handle the given AP
-        *
-        * @since S60 3.2
-        * @param aIapRecord IAP record to be checked
-        * @return ETrue if plug-in can handle the IAP
-        */
-        TBool CanHandleIapIdL( CommsDat::CCDIAPRecord *aIapRecord ) const;
-
-        /**
-        * From CCmPluginBaseEng
-        * Launches the WLAN settings dialog
-        *
-        * @since S60 3.2
-        * @return soft key selection
-        */
-        TInt RunSettingsL();
-        
-        /**
-        * From CCmPluginBaseEng
-        * see base class definition
-        *
-        * @since S60 3.2
-        */
-	    TBool InitializeWithUiL( TBool aManuallyConfigure );
-
-        /**
-        * From CCmPluginBaseEng
-        * see base class definition
-        *
-        * @since S60 3.2
-        */      
-	    void LoadServiceSettingL();
-	    
-	    /**
-        * From CCmPluginBaseEng
-        * see base class definition
-        *
-        * @since S60 3.2
-        */
-	    void AdditionalReset();
-	    
-    public: // New functions
-	    /**
-	    * Edits the security settings for the current connection method
-	    *
-        * @since S60 3.2
-        * @param aEikonEnv Eikon environment to use
-        * @return exit reason
-	    */	  
-	    TInt EditSecuritySettingsL( CEikonEnv& aEikonEnv );
-	    
-	    /**
-	    * Returns the security settings validity for the current connection method
-	    *
-	    * @since S60 3.2
-	    * @return Validity of the current security settings
-	    */	    
-        TBool AreSecuritySettingsValidL();
-
-	    /**
-	    * Loads the security settings for the current connection method
-	    *
-	    * @since S60 3.2
-	    */
-	    void LoadSecuritySettingsL();
-
-    protected:
-    
-        /**
-        * From CCmPluginBaseEng
-        * see base class definition
-        *
-        * @since S60 3.2
-        */
-	    virtual void BearerRecordIdLC( HBufC* &aBearerName, 
-                                   TUint32& aRecordId );
-
-
-        /**
-        * Copy data of the connection method that is not 
-        * added to the conversion table. (e.g. bearer specific
-        * flags)
-        *
-        * @param aDestInst copy attributes into this plugin instance
-        */    
-        void CopyAdditionalDataL( CCmPluginBaseEng& aDestInst ) const;
-        
-        
-	private: // construction
-
-        /**
-        * Constructor
-        *
-        * @since S60 3.2
-        */      
-		CCmPluginWlan( TCmPluginInitParam* aInitParam );
-
-        /**
-        * Second phase constructor
-        *
-        * @since S60 3.2
-        */      
-		void ConstructL();
-
-    private: // from base class
-    
-        /**
-        * From CCmPluginBaseEng
-        * Updates additional records, in this case, the WLAN records.
-        *
-        * @since S60 3.2
-        */
-        void UpdateAdditionalRecordsL();
-
-        /**
-        * From CCmPluginBaseEng
-        * Deletes additional records, in this case, the WLAN records
-        *
-        * @since S60 3.2
-        */
-        void DeleteAdditionalRecordsL();
-
-        /**
-        * From CCmPluginBaseEng
-        * Loads additional records, in this case, the WLAN records
-        *
-        * @since S60 3.2
-        */
-        void LoadAdditionalRecordsL();
-    
-	    /**
-        * From CCmPluginBaseEng
-        * Creates a new service record for this bearer
-        *
-        * @since S60 3.2
-        */
-	    void CreateNewServiceRecordL();
-	    
-	    /**
-        * From CCmPluginBaseEng
-        * Creates the WLAN service record used by this WLAN
-        *
-        * @since S60 3.2
-        */
-
-	    void CreateWlanServiceRecordL();
-	    
-        /**
-        * From CCmPluginBaseEng
-        */
-        virtual void PrepareToUpdateRecordsL();
-
-        /**
-        * Appends uids of connection methods - which were also created during connection method
-        * creation - to the array given as parameter 
-        * @param aIapIds the array the additonal cm uids are appended to
-        */        
-        virtual void GetAdditionalUids( RArray<TUint32>& aIapIds );
-	    
-    private: // new functions
-    	    
-        /**
-        * Updates the security settings for the current WLAN connection method
-        *
-        * @since S60 3.2
-        */
-        void UpdateSecuritySettingsL();
-
-        /**
-        * Allocates a string specified by aResId and replaces %N in the
-        * resource with aInt
-        *
-        * @since S60 3.2
-        * @param aResId Resource ID to be read from resource file.
-        * @param aInt Integer that will replace %N in the string.
-        * @return String read from resource file, specified by aResId,
-        * containing aInt.
-        */
-        HBufC* ReadResourceL( TInt aResId, TInt aInt ) const;
-
-        /**
-        * The UI for manually configuring a WLAN connection method
-        * 
-        * @since S60 3.2
-        * @return ETrue if the configuration was successful
-        */
-        TBool ManuallyConfigureL();
-        
-        /**
-        * Continuing with Manual configuration from step 4
-        * called from ManuallyConfigureL or AutomaticallyConfigureL in case the
-        * specicfied network was not found (reverting to fully manual setup)
-        * 
-        * @since S60 3.2
-        * @param TBool aAskNWModeAndSec if set to ETrue, NW mode and Security 
-        * mode dialogs are shown. If EFalse, these values are taken from
-        * the corresponding parameters of this function
-        * @param TWlanNetMode& aNwMode NW mode used if aAskNWModeAndSec is EFalse
-        * @param TWlanConnectionExtentedSecurityMode& aSecurityMode 
-        * Security mode used if aAskNWModeAndSec is EFalse
-        * @param TWpaMode& aWpaMode WPA mode
-        * @return ETrue if the configuration was successful
-        */
-        TBool ProceedWithManualL( TBool aAskNWModeAndSec,
-                                  CMManager::TWlanNetMode aNwMode = CMManager::EInfra, 
-                                  TWlanConnectionExtentedSecurityMode aSecurityMode = EWlanConnectionExtentedSecurityModeOpen,
-                                  TWpaMode aWpaMode = EWpaModeUndefined );
-        /**
-        * The UI for automatically configuring a WLAN connection method
-        * 
-        * @since S60 3.2
-        * @return ETrue if the configuration was successful
-        */
-        TBool AutomaticallyConfigureL();
-
-        /*
-        * Loads a specific resource, leaves the resource loader on the 
-        * cleanup stack
-        * 
-        * @since S60 3.2
-        * @param aResourceLoader
-        */
-        void LoadResourceLC( RConeResourceLoader& aResourceLoader ) const;
-        
-        /*
-        * Prompt for the Network Name of the new WLAN connection method
-        * sets the network name and SSID settings 
-        *
-        * @since S60 3.2
-        * @param 
-        * @return ETrue if a selection was made, EFalse if cancelled
-        */
-        TBool ShowNWNameQueryL( TDes& aName );
-        
-        /*
-        * Scans for a WLAN network by a given SSID
-        * initially makes a broadcast scan and if not found a direct scan.
-        * Sets the scan ssid setting
-        *
-        * @since S60 3.2
-        * @param aSsid the SSID to scan for
-        * @return ETrue if a network has been found with the SSID
-        */
-        TBool ScanForWlanNwL( TWlanSsid& aSsid, 
-                              CMManager::TWlanNetMode& aNetworkMode,
-                              TWlanConnectionExtentedSecurityMode& aSecurityMode,
-                              TBool& aProtectedSetupSupported  );
-
-        /*
-        * Selection list for Network Mode
-        *
-        * @since S60 3.2
-        * @param aNWMode (return value) network mode selected
-        * @return ETrue if a selection was made, EFalse if cancelled
-        */
-        TBool SelectNWModeL( CMManager::TWlanNetMode& aNWMode );
-        
-        /*
-        * Displays a user selection dialog of Security Modes
-        * 
-        * @since S60 3.2
-        * @param aNwMode which network mode was selected
-        * @param aSecurityMode returns the selection
-        * @return ETrue if a selection was made, EFalse if cancelled
-        */
-        TBool ShowNWSecurityDlgL( CMManager::TWlanNetMode aNwMode, 
-                                  TWlanConnectionExtentedSecurityMode& aSecurityMode );
-        
-        /*
-        * Triggers the WEP key input query  
-        *
-        * @since S60 3.2
-        * @return ETrue if a selection was made, EFalse if cancelled
-        */
-        TBool EnterWEPKeyL();
-        
-        /*
-        * Triggers the pre-shared key for WPA WLAN query
-        *
-        * @since S60 3.2
-        * @return ETrue if a selection was made, EFalse if cancelled
-        */
-        TBool EnterWpaPreSharedKeyL();
-        
-        /*
-        * Shows the WPA/WPA2 mode dialog
-        * 
-        * @since S60 3.2
-        * @param aWpaMode return value
-        * @return ETrue if selection made
-        */
-        TBool SelectWpaModeDialogL( TWpaMode& aWpaMode );
-        
-        /**
-        * Reloads internal security settings modules according to the changes
-        * @since S60 3.2
-        */
-        void UpdateSecurityModeL();
-        
-    
-        /**
-        * Called from another CM-s CopyAdditionalDataL, on the passed 
-        * copied CM, and marks this as a copy of the original CM which 
-        * has an IAP ID of aBaseIapID
-        *
-        * @since S60 3.2
-        */
-        void SetAsCopyOf( TUint32 aBaseIapID );
-
-        /**
-        * Deletes the security settings related to this connection method.
-        *
-        * @since S60 3.2
-        */
-        void DeleteSecuritySettingsL();
-
-        
-        /**
-        * Set the EWlanIpDNSAddrFromServer according to the 
-        * current name server values.
-        *
-        * @since S60 3.2
-        */
-        void SetDnsIpFromServerL();
-
-
-        /**
-        * Set the EWlanIp6DNSAddrFromServer according to the 
-        * current name server values.
-        *
-        * @since S60 3.2
-        */
-        void SetDns6IpFromServerL();
-
-
-	    /**
-	    * Checks for coveradge and number of WLAN connections available
-        * @since S60 3.2
-        * @return The number of available WLAN network connections
-        */
-        TInt CheckNetworkCoverageL() const;
-
-
-	    /**
-	    * Converts security mode from TWlanConnectionSecurityMode to 
-        * TWlanSecMode
-        * @since S60 3.2
-        * @return The security mode as TWlanSecMode
-        */
-        CMManager::TWlanSecMode ConvertConnectionSecurityModeToSecModeL(
-                                    TWlanConnectionExtentedSecurityMode aSecurityMode );
-
-
-	    /**
-	    * Converts security mode from TWlanSecMode to 
-        * TWlanConnectionSecurityMode
-        * @since S60 3.2
-        * @return The security mode as TWlanConnectionSecurityMode
-        */
-        TWlanConnectionExtentedSecurityMode ConvertSecModeToConnectionSecurityModeL(
-                                    CMManager::TWlanSecMode aSecMode );
-
-        /**
-        * Destroy wait dialog 
-        */
-        void DestroyWaitDialog();
-
-
-        /**
-        * Sets the daemon name. Starts DHCP if set.
-        *
-        * @since S60 3.2
-        */
-        void SetDaemonNameL();
-
-
-        /**
-        * Converts the possible WLAN connection states from TWlanConnectionMode
-        * to TWlanNetMode.
-        * @since S60 3.2
-        * @return The WLAN connection mode as TWlanNetMode
-        */
-        CMManager::TWlanNetMode ConvertWLANConnectionStatesL( 
-                                    TWlanConnectionMode aConnectionMode );
-
-        WiFiProt::TWiFiReturn ProtectedSetupL(TWlanSsid& aSsid );
-
-        /*
-        * Triggers the pre-shared key for WAPI WLAN query
-        *
-        * @since S60 5.1
-        * @return ETrue if a selection was made, EFalse if cancelled
-        */
-        TBool EnterWAPIPreSharedKeyL();
-        
-	private: // Data
-
-        /**
-         * WLan service record
-         * Own
-         */         
-        CCDWlanServiceRecord* iWlanServiceRecord; // owned
-        
-        /**
-         * WLAN table id
-         */
-        CommsDat::TMDBElementId iWlanTableId;
-
-        /**
-         * WEP settings data
-         * Own
-         */
-        CWEPSecuritySettings* iWepSecSettings;
-        
-        /**
-         * WPA settings data
-         * Own
-         */
-        CWPASecuritySettings* iWpaSecSettings;
-        
-        /**
-         * Number of networks
-         */
-        TInt iWlanNetworks;
-        
-        /**
-         * Connection UI utilities pointer
-         * Own
-         */
-        CConnectionUiUtilities* iConnUiUtils; // owned
-
-        /**
-        * Signals that this connection method is a copy of another WLAN CM.
-        */
-        TBool iIsCopy;
-        
-        /**
-        * The IAP ID of the CM from which this copy had been made. 
-        */
-        TUint32 iCopiedFromIapId;
-
-        /**
-        * "Searching WLAN networks" wait dialog.
-        */
-        CAknWaitDialog* iWaitDialog;
-        
-        RArray<TUint32> iAdditionalCmsCreated;
-
-        /**
-         * Asked from the Feature manager at the constructor phase
-         */
-        TBool iIsWAPISupported;
-        
-        /**
-        * WAPI settings data
-        * Own
-        */
-        CWAPISecuritySettings* iWAPISecSettings;
-	};
-
-#endif // WLAN_PLUGIN_H
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmpluginwlandata.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of WLAN data holder for WLAN plugin
-*
-*/
-
-#ifndef WLAN_DATA_H
-#define WLAN_DATA_H
-
-// INCLUDES
-#include    <e32base.h>
-
-
-/**
-* Possible values of SignalStrength of a network
-*/
-enum TSignalStrength
-    {
-    ESignalStrengthMax = 60,
-    ESignalStrengthGood = 74,
-    ESignalStrengthLow = 87,
-    ESignalStrengthMin = 100
-    };
-
-// FORWARD DECLARATION
-/*
-class CCDWlanServiceRecord;
-class CWEPSecuritySettings;
-class CWEPSecuritySettingsUi;
-class CWPASecuritySettings;
-class CWPASecuritySettingsUi;
-class RConeResourceLoader;
-class CConnectionUiUtilities;
-*/
-
-
-/**
- *  WLAN Plugin data holder class
- *
- *  ?more_complete_description
- *
- *  @since S60 3.2
- */
-NONSHARABLE_CLASS( CCmPluginWlanData ) : public CBase
-    {
-
-    public: // Constructors and destructor
-    
-        /**
-        * Two-phased constructor. Leaves on failure, places instance
-        * on cleanup stack.
-        *
-        * @since S60 3.2
-        * @return The constructed CCmPluginWlanData.
-        */
-        static CCmPluginWlanData* NewLC();
-    
-        /**
-        * Destructor
-        *
-        * @since S60 3.2
-        */
-        virtual ~CCmPluginWlanData();
-
-    protected:
-        /**
-        * Constructor
-        *
-        * @since S60 3.2
-        */
-        CCmPluginWlanData();
-
-
-        /**
-        * Second-phase constructor.
-        *
-        * @since S60 3.2
-        */
-        void ConstructL();
-        
-
-
-    public: // New functions
-    
-        /**
-        * Gives back the name of network (SSID)
-        *
-        * @since S60 3.2
-        * @return the name of network 
-        */
-//        HBufC* GetNameLC() const;
-
-        /**
-        * Gives back current SignalStrength
-        *
-        * @since S60 3.2
-        * @return iSignalStrength
-        */        
-//        TSignalStrength GetSignalStrength() const;
-        
-        
-	public: // Data
-
-        /**
-        * The name of network (from SSID)
-        */
-        HBufC*                              iNetworkName;
-        
-        /**
-        * Signale strength of network
-        */
-        TSignalStrength                     iSignalStrength;
-
-	};
-
-#endif // WLAN_DATA_H
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmpluginwlandataarray.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of WLAN data holder array for WLAN plugin
-*
-*/
-
-#ifndef WLAN_DATA_ARRAY_H
-#define WLAN_DATA_ARRAY_H
-
-// INCLUDES
-#include    <e32base.h>
-
-class CCmPluginWlanData;
-
-/**
- *  WLAN Plugin data holder class
- *  A list of CCmPluginWlanData-s pointers; items are owned.
- *
- *  ?more_complete_description
- *
- *  @since S60 3.2
- */
-NONSHARABLE_CLASS( CCmPluginWlanDataArray ) : public CArrayPtrFlat<CCmPluginWlanData>
-    {
-
-    public:  // Constructors and destructor
-
-        /**
-        * C++ default constructor.
-        */
-        CCmPluginWlanDataArray();
-
-        /**
-        * Destructor. Items in the list are destroyed.
-        */
-        virtual ~CCmPluginWlanDataArray();
-
-	};
-
-#endif // WLAN_DATA_ARRAY_H
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmpwlanactivewaiter.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of CCmPluginWlanActiveWaiter
-*
-*/
-
-
-
-#ifndef __WLAN_PLUGIN_ACTIVE_WAITER_H__
-#define __WLAN_PLUGIN_ACTIVE_WAITER_H__
-
-// INCLUDES
-#include <e32base.h>
-
-/**
- * CCmPluginWlanActiveWaiter class,
- * an active object to replace User::WaitForRequest
- * 
- * Usage:
- * CCmPluginWlanActiveWaiter* waiter = CCmPluginWlanActiveWaiter::NewL();
- * CleanupStack::PushL( waiter );
- * server.AsyncFunction( waiter->iStatus );
- * if ( waiter->WaitForRequest() == KErrNone )
- *      {
- *      // handle success
- *      }
- *      else 
- *      {
- *      // handle failure
- *      }
- * CleanupStack::PopAndDestroy( waiter );
- * 
- */     
-NONSHARABLE_CLASS( CCmPluginWlanActiveWaiter ) : public CActive
-    {
-    public:
-        /**
-        * NewL function
-        * @param  aPlugin a pointer to notifier plugin
-        */
-        static CCmPluginWlanActiveWaiter* NewL( );
-
-        /**
-        * Destructor
-        */    
-        virtual ~CCmPluginWlanActiveWaiter();          
-
-        /**
-        * Waits for it's TRequestStatus to be completed
-        * @return Error code returned from server after request is
-        * completed
-        */
-        TInt WaitForRequest( );
-        
-    protected:
-        /**
-        * ConstructL 
-        */
-        void ConstructL();
-    
-        /**
-        * Constructor
-        * @param  aPlugin a pointer to notifier plugin    
-        */    
-        CCmPluginWlanActiveWaiter();
-            
-        /**
-        * DoCancel from CActive
-        */    
-        virtual void DoCancel();
-      
-        /**
-        * RunL from CActive
-        */      
-        virtual void RunL();
-    
-    protected:
-        CActiveSchedulerWait iWait;
-    };     
-
-#endif // __WLAN_PLUGIN_ACTIVE_WAITER_H__
-
-// End of file
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmpwlansettingsdlg.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Declares dialog for a wlan cm plugin view/edit
-*
-*/
-
-#ifndef CMPLUGINWLAN_SETTINGS_DLG_H
-#define CMPLUGINWLAN_SETTINGS_DLG_H
-
-// INCLUDES
-#include <mcmdexec.h>
-#include <cmpbasesettingsdlg.h>
-#include "cmcommsdatnotifier.h"
-
-// FORWARD DECLARATIONS
-class CCmPluginBaseEng;
-
-// CLASS DECLARATION
-/**
-* CmPluginWlanSettingsDlg dialog class
-*
-*/
-NONSHARABLE_CLASS( CmPluginWlanSettingsDlg ) : public CmPluginBaseSettingsDlg
-                                             , public MCmCommsDatWatcher
-                                             , public CCmParentViewNotifier
-    {
-    public: // Constructors and destructor
-
-        /**
-        * Two-phase construction
-        *
-        * @since S60 3.2
-        * @param aCmPluginBaseEng  The connection method object to use
-        */
-        static CmPluginWlanSettingsDlg* NewL( 
-                                        CCmPluginBaseEng& aCmPluginBaseEng );
-
-        /**
-        * Destructor.
-        */
-        ~CmPluginWlanSettingsDlg();
-    
-    public: // from base class
-    
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Create and launch dialog
-        *
-        * @since S60 3.2
-        * @return The code returned by the dialog's ExecuteLD
-        */
-        TInt ConstructAndRunLD( );
-    
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Updates bearer specific listbox contents
-        *
-        * @since S60 3.2
-        * @param aItemArray item array containing the setting texts
-        */
-        void UpdateListBoxContentBearerSpecificL( CDesCArray& itemArray );
-                
-    public: // from class MCmCommsDatWatcher
-        
-        /**
-         * Watch changes in CommsDat
-         */
-        void CommsDatChangesL();
-        
-    public: // from class CCmParentViewNotifier
-        
-        void NotifyParentView( TInt aValue );
-        
-    private:
-    
-        /**
-        * C++ constructor
-        *
-        * @since S60 3.2
-        */        
-        CmPluginWlanSettingsDlg( CCmPluginBaseEng& aCmPluginBaseEng );
-
-
-    protected:
-        /** From CAknDialog */
-        TBool OkToExitL( TInt aButtonId );
-        
-    private: // from base class
-    
-        /**
-        * From MEikCommandObserver
-        * see base class for description
-        *
-        * @since S60 3.2
-        * @param aCommandId
-        */
-        void ProcessCommandL( TInt aCommandId ) ;    
-
-        // From CmPluginBaseSettingsDlg 
-        
-        /**
-        * From CmPluginBaseSettingsDlg 
-        * Determines which type of setting page should be shown
-        *
-        * @param aAttribute The setting to be changed by the setting page
-        * @param aCommandId The command the attribute is changed with (ok/change key pressed)
-        * @return the soft key selection
-        */  
-        TBool ShowPopupSettingPageL ( TUint32 aAttribute, TInt aCommandId  );
-
-        /**
-        * From CmPluginBaseSettingsDlg 
-        * launches the advances settings dialog
-        *
-        * @since S60 3.2
-        */
-        virtual void RunAdvancedSettingsL();
-
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Get help contest of the plugin
-        *
-        * @since S60 5.0
-        */
-				virtual void GetHelpContext( TCoeHelpContext& aContext ) const;
-        
-    private:  // New functions
-        
-        /**
-        * Shows the bool setting page for a certain setting or
-        * simply changes the setting if ok key was pressed
-        *
-        * @since S60 3.2
-        * @param aAttribute The setting to be changed by the setting page
-        * @param aCommandId Command id, to make difference between ok and change commands
-        */  
-        void ChangeBoolSettingL( TUint32 aAttribute, TInt aCommandId );
-                
-        /**
-        * displays security setting page
-        *
-        * @since S60 3.2        
-        */  
-        void ShowSecurityModeRBPageL();    
-        
-        /**
-        * Shows network mode setting page
-        *
-        * @since S60 3.2
-        */  
-        void ShowNetworkModeRBPageL();
-        
-        /**
-        * Show the setting page for the WLAN Network Name settings
-        *
-        * @since S60 3.2
-        */
-        void ShowWlanNWNamePageL();
-        
-        /**
-        * Exits plugin settings if compulsory values are filled
-        *
-        * @since S60 3.2
-        * @param aConfirm ask user confirmation or not
-        */  
-        void ExitSettingsL( TBool aConfirm );
-        
-        void HandleCommsDatChangeL();
-    private:
-        TBool iSecDialExit;
-        
-        TInt iNotifyFromAdv;
-        
-    };
-
-
-/** WLAN Network name setting items - zero indexed for the ui */    
-enum TWlanNwName
-    {
-    EWlanNwNameUserDefined = 0, // radio button page commands
-    EWlanNwNameScan
-    };
-
-#endif // CMPLUGINWLAN_SETTINGS_DLG_H
-
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmpwlansettingsdlgadv.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +0,0 @@
-/*
-* Copyright (c) 2006 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:  declares dialog for wlan cm plugin advanced view/edit.
-*
-*/
-
-#ifndef CMPLUGINWLANADV_SETTINGS_DLG_ADV_H
-#define CMPLUGINWLANADV_SETTINGS_DLG_ADV_H
-
-// INCLUDES
-#include <in_sock.h>
-#include <mcmdexec.h>
-#include <cmpbasesettingsdlgadv.h>
-#include "cmcommsdatnotifier.h"
-
-// FORWARD DECLARATIONS
-class CCmPluginBaseEng;
-
-/**
- *  CmPluginWlanSettingsDlgAdv dialog class
- *
- *  shows the advanced WLAN settings
- *
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CmPluginWlanSettingsDlgAdv ) : 
-                                            public CmPluginBaseSettingsDlgAdv ,
-                                            public MCmCommsDatWatcher ,
-                                            public CCmParentViewNotifier
-    {
-    public: // Constructors and destructor
-
-        /**
-        * Two-phase construction
-        *
-        * @since S60 v3.2
-        * @param aCmPluginBaseEng
-        */
-        static CmPluginWlanSettingsDlgAdv* NewL( 
-                                        CCmPluginBaseEng& aCmPluginBaseEng );
-        /**
-        * Destructor.
-        */
-        ~CmPluginWlanSettingsDlgAdv();
-
-    public: // from base class
-
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Create and launch dialog
-        *
-        * @since S60 v3.2
-        * @return The code returned by the dialog's ExecuteLD
-        */
-        TInt ConstructAndRunLD();
-        
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Updates bearer specific listbox contents
-        *
-        * @since S60 v3.2
-        * @param aItemArray item array containing the setting texts
-        */
-        void UpdateListBoxContentBearerSpecificL( CDesCArray& itemArray );
-        
-    public:
-        
-        /**
-         * Record the object of parent view
-         */
-        void RegisterParentView( CCmParentViewNotifier* aParent );
-        
-    public: // from class MCmCommsDatWatcher
-        
-        /**
-         * Watch changes in CommsDat
-         */
-        void CommsDatChangesL();
-        
-    public: // from class CCmParentViewNotifier
-        
-        void NotifyParentView( TInt aValue );
-
-    private: // construction
-    
-        /**
-        * C++ constructor
-        */
-        CmPluginWlanSettingsDlgAdv( CCmPluginBaseEng& aCmPluginBaseEng );
-        
-    protected:
-        /** From CAknDialog */
-        TBool OkToExitL( TInt aButtonId );
-
-    private: // From MEikCommandObserver
-
-        /**
-        * From MEikCommandObserver
-        * see base class for description
-        *
-        * @since S60 3.2
-        * @param aCommandId
-        */
-        void ProcessCommandL( TInt aCommandId );
-
-    private: // From CmPluginBaseSettingsDlg 
-    
-        /**
-        * From CmPluginBaseSettingsDlg 
-        * Determines which type of setting page should be shown
-        *
-        * @param aAttribute The setting to be changed by the setting page
-        * @param aCommandId The command the attribute is changed with (ok/change key pressed)
-        * @return the soft key selection
-        */   
-        TBool ShowPopupSettingPageL( TUint32 aAttribute, TInt aCommandId );
-
-        TBool ShowIpv4SettingPageL();
-        
-        TBool ShowIpv6SettingPageL();
-        
-        /**
-        * Shows a radio button page for selecting the ad-hoc channel setting value
-        * If 'User defined' is selected a numeric query dialog is displayed for entering the 
-        * channel number
-        * 
-        * @since S60 3.2
-        * @return ETrue if the setting value has been changed
-        */
-        TBool ShowAdhocChannelSettingPageL();
-        
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Collects the packet data specific setting information for 
-        * displaying
-        *
-        * @since S60 3.2
-        * @param aItemArray an array of setting information
-        */
-        TBool UpdateListBoxContentBearerSpecificL( TUint32 aAttribute );
-        
-        void HandleCommsDatChangeL();
-                
-    private:  // data
-
-        /**
-        * IPv6 supported indicator
-        */
-        TBool iIpv6Supported;
-        
-        CCmParentViewNotifier* iParent;
-        TInt iNotifyFromIp;
-    };
-
-/** menu commands for IPv setting pages */
-enum TWlanIpvMenuCommands
-    {
-    ESettingPageCmdIpv4,
-    ESettingPageCmdIpv6
-    };
-
-/** Adhoc channel setting values */
-enum TAdhocChannel
-    {
-    EAdhocAutomatic = 0, //radio button page commands
-    EAdhocUserDefined
-    };
-
-#endif // CMPLUGINWLANADV_SETTINGS_DLG_ADV_H
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmpwlansettingsdlgipv4.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Declares dialog for wlan cm plugin ipv4 settings view/edit
-*
-*/
-
-#ifndef CMPLUGINWLANIPV4_SETTINGS_DLG_H
-#define CMPLUGINWLANIPV4_SETTINGS_DLG_H
-
-// INCLUDES
-#include <mcmdexec.h>
-#include <cmpbasesettingsdlgip.h>
-#include "cmcommsdatnotifier.h"
-
-// FORWARD DECLARATIONS
-class CCmPluginBaseEng;
-
-/**
- *  CmPluginWlanSettingsDlgIpv4 dialog class
- *
- *  shows settings for WLAN IPv4
- *
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CmPluginWlanSettingsDlgIpv4 ) : 
-                                            public CmPluginBaseSettingsDlgIp ,
-                                            public MCmCommsDatWatcher
-    {
-    public: // Constructors and destructor
-    
-        /**
-        * Two-phase construction
-        * @since S60 v3.2
-        * @param aCmPluginBaseEng
-        */
-        static CmPluginWlanSettingsDlgIpv4* NewL(
-                                        CCmPluginBaseEng& aCmPluginBaseEng );
-
-        /**
-        * Destructor.
-        */
-        ~CmPluginWlanSettingsDlgIpv4();
-
-    public: // from base class
-
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Create and launch dialog
-        *
-        * @since S60 v3.2
-        * @return The code returned by the dialog's ExecuteLD
-        */
-        TInt ConstructAndRunLD();
-        
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Updates bearer specific listbox contents
-        *
-        * @since S60 v3.2
-        * @param aItemArray item array containing the setting texts
-        */
-        void UpdateListBoxContentBearerSpecificL( CDesCArray& itemArray );
-        
-    public:
-        
-        /**
-         * Record the object of parent view
-         */
-        void RegisterParentView( CCmParentViewNotifier* aParent );
-        
-    public: // from class MCmCommsDatWatcher
-        
-        /**
-         * Watch changes in CommsDat
-         */
-        void CommsDatChangesL();
-
-    protected:
-    
-        /** From CAknDialog */
-        TBool OkToExitL( TInt aButtonId );
-
-    private: // construction
-        
-        /**
-        * C++ constructor
-        */
-        CmPluginWlanSettingsDlgIpv4( CCmPluginBaseEng& aCmPluginBaseEng );
-        
-    private: // From MEikCommandObserver
-
-        /**
-        * From MEikCommandObserver
-        * see base class for description
-        *
-        * @since S60 3.2
-        * @param aCommandId
-        */
-        void ProcessCommandL( TInt aCommandId );
-        
-    private: // From CmPluginBaseSettingsDlg         
-
-        /**
-        * From CmPluginBaseSettingsDlg 
-        * Determines which type of setting page should be shown
-        *
-        * @param aAttribute The setting to be changed by the setting page
-        * @param aCommandId The command the attribute is changed with (ok/change key pressed)
-        * @return the soft key selection
-        */ 
-        TBool ShowPopupSettingPageL ( TUint32 aAttribute, TInt aCommandId  );
-
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Collects the packet data specific setting information for 
-        * displaying
-        *
-        * @since S60 3.2
-        * @param aItemArray an array of setting information
-        */
-        TBool UpdateListBoxContentBearerSpecificL( TUint32 aAttribute );
-        
-    private:  // New functions
-
-        /**
-        * Checks the temp attributes, saves them if necessary,
-        * prompts user if there are incomplete values 
-        *
-        * @since S60 v3.2
-        * @return ETrue if success
-        */
-        TBool ValidateAttribsL();
-        
-        /**
-        * Text intialisation
-        *
-        * @since S60 v3.2
-        */
-        void InitTextsL();
-        
-    private:
-        
-        CCmParentViewNotifier* iParent;
-    };
-
-#endif // CMPLUGINWLANIPV4_SETTINGS_DLG_ADV_H
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmpwlansettingsdlgipv6.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Declares dialog for wlan cm plugin ipv6 settings view/edit
-*
-*/
-
-#ifndef CMPLUGINWLANIPV6_SETTINGS_DLG_H
-#define CMPLUGINWLANIPV6_SETTINGS_DLG_H
-
-// INCLUDES
-#include <mcmdexec.h>
-#include <cmpbasesettingsdlgip.h>
-#include "cmcommsdatnotifier.h"
-
-// FORWARD DECLARATIONS
-class CCmPluginBaseEng;
-
-/**
- *  CmPluginWlanSettingsDlgIpv6 dialog class
- *
- *  shows settings for WLAN IPv6
- *
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( CmPluginWlanSettingsDlgIpv6 ) : 
-                                            public CmPluginBaseSettingsDlgIp ,
-                                            public MCmCommsDatWatcher
-    {
-    public: // Constructors and destructor
-        
-        /**
-        * Two-phase construction.
-        * @param aCmPluginBaseEng  wlan plugin to edit
-        */
-        static CmPluginWlanSettingsDlgIpv6* NewL( 
-                                        CCmPluginBaseEng& aCmPluginBaseEng );
-
-        /**
-        * Destructor.
-        */
-        ~CmPluginWlanSettingsDlgIpv6();
-        
-    public: // from base class
-
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Create and launch dialog
-        *
-        * @since S60 v3.2
-        * @return The code returned by the dialog's ExecuteLD
-        */
-        TInt ConstructAndRunLD();
-
-    public: // From CmPluginBaseSettingsDlg
-
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Updates bearer specific listbox contents
-        *
-        * @since S60 v3.2
-        * @param aItemArray item array containing the setting texts
-        */
-        void UpdateListBoxContentBearerSpecificL( CDesCArray& itemArray );
-        
-    public:
-        
-        /**
-         * Record the object of parent view
-         */
-        void RegisterParentView( CCmParentViewNotifier* aParent );
-        
-    public: // from class MCmCommsDatWatcher
-        
-        /**
-         * Watch changes in CommsDat
-         */
-        void CommsDatChangesL();
-
-    protected:
-    
-        /** From CAknDialog */
-        TBool OkToExitL( TInt aButtonId );
-                
-    private: // construction
-    
-        CmPluginWlanSettingsDlgIpv6( CCmPluginBaseEng& aCmPluginBaseEng );
-
-    private: // From MEikCommandObserver
-
-        /**
-        * From MEikCommandObserver
-        * see base class for description
-        *
-        * @since S60 3.2
-        * @param aCommandId
-        */
-        void ProcessCommandL( TInt aCommandId );
-
-    private: // From CmPluginBaseSettingsDlg
-
-        /**
-        * From CmPluginBaseSettingsDlg 
-        * Determines which type of setting page should be shown
-        *
-        * @param aAttribute The setting to be changed by the setting page
-        * @param aCommandId The command the attribute is changed with (ok/change key pressed)
-        * @return the soft key selection
-        */ 
-        TBool ShowPopupSettingPageL ( TUint32 aAttribute, TInt aCommandId );
-
-        /**
-        * From CmPluginBaseSettingsDlg
-        * Collects the packet data specific setting information for 
-        * displaying
-        *
-        * @since S60 3.2
-        * @param aItemArray an array of setting information
-        */
-        TBool UpdateListBoxContentBearerSpecificL( TUint32 aAttribute );
-        
-    private: // new functions
-    
-        /**
-        * Text intialisation
-        *
-        * @since S60 v3.2
-        */
-        void InitTextsL();
-        
-    private:
-        
-        CCmParentViewNotifier* iParent;
-        
-        TBool iIspossibleExit;
-        TBool iExitImediate;
-    };
-
-/** IPv6 types */
-enum TIpv6DNSTypes
-    {
-    EIpv6DNSDynamic = 0, //radio button page commands
-    EIpv6DNSWellKnown,
-    EIpv6DNSUserDefined
-    };
-
-
-#endif // CMPLUGINWLANIPV6_SETTINGS_DLG_H
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmwlancommonconstants.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 2006 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:  commonly used constants for the WLAN plugin
-*
-*/
-
-#ifndef CMWLANCOMMONCONSTANTS_H
-#define CMWLANCOMMONCONSTANTS_H
-
-// CONSTANTS
-_LIT( KPluginWlanResDirAndFileName, "z:cmwlanui.rsc" );
-_LIT( KEmptyAddress, "http://" );
-
-/// 'Dynamic' IP address to use in comparisons
-_LIT( KDynIpAddress, "0.0.0.0" );
-
-_LIT( KDynIpv6Address, "0:0:0:0:0:0:0:0" );
-
-const TInt KCmArrayGranularity = 10;
-const TInt KCmAdhocChannelMaxLength = 2;
-const TInt KCmAdhocChannelMinValue = 1;
-const TInt KCmAdhocChannelDefaultValue = 7;
-const TInt KCmAdhocChannelMaxValue = 11;
-const TInt KCmWlanNWNameMaxLength = 32;
-
-#endif  // CMWLANCOMMONCONSTANTS_H
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/inc/cmwlancoveragecheck.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of WLAN Coverage Check class
-*
-*/
-
-#ifndef CMWLANCOVERAGECHECK_H
-#define CMWLANCOVERAGECHECK_H
-
-// INCLUDES
-#include <e32base.h>
-#include <cmpluginwlandef.h>
-
-
-// FORWARD DECLARATION
-class CCmPluginWlanDataArray;
- 
-using namespace CMManager;
-
-/**
- *  WLAN Coverage Check
- *
- *  ?more_complete_description
- *
- *  @since S60 3.2
- */
-class CCmWlanCoverageCheck : public CActive
-    {
-    enum EWlanCoverageState
-        {
-        EServiceStatus,
-        EScanning,
-        EDone,                        
-        };
-        
-    public:
-    
-        CCmWlanCoverageCheck();
-        ~CCmWlanCoverageCheck();
-        
-        TInt GetCoverageL();
-
-        TBool ScanForPromptedSsidL( TWlanSsid aEnteredSsid, TBool aBroadcast,
-                                TWlanNetMode& aNetworkMode,
-                                TWlanConnectionExtentedSecurityMode& aSecurityMode,
-                                TBool& aProtectedSetupSupported );
-
-        /**
-        * Returns whether the passed ssid and length results in a hidden or 
-        * a non-hidden ssid.
-        *
-        * @since S60 3.2
-        * @param aSsidLength The length of the ssid
-        * @param aSsid The ssid
-        * @return ETrue if the ssid is hidden.
-        */
-        TBool IsHiddenSsid( TUint aSsidLength, const TUint8* aSsid ) const;
-        
-        /**
-        * Adds the passed WLAN network data to the container array
-        * if it is not already there, and sets the highest signal 
-        * strength if it is already in the array.
-        *
-        * @since S60 3.2
-        * @param aArray The array to be checked
-        * @param aRXLevel The signal level of this WLAN
-        * @param aNetworkName The network name (SSID) of this WLAN.
-        */
-        void AddToArrayIfNeededL( 
-                            CCmPluginWlanDataArray& aArray, 
-                            TInt aRXLevel, 
-                            TDesC& aNetworkName ) const;
-                
-                
-    protected:  // from CActive
-    
-        virtual void DoCancel();
-        virtual void RunL();
-
-    private:
-
-        TUint32                 iProgState;
-        TInt                    iCoverage;
-        CActiveSchedulerWait    iWait;    
-    };
-
-
-#endif // CMWLANCOVERAGECHECK_H
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/loc/cmpluginwlan.loc	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,389 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Localization strings for project cmpluginwlan
-*
-*/
-
-
-//  LOCALISATION STRINGS
-
-//d: Name of wlan bearer type shown in a list of supported bearers.
-//l: list_single_graphic_pane_t1_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_bearer_supported_wlan "Wireless LAN"
-
-//d: First line of a double large graphic style listbox - wlan specific
-//l: list_double_large_graphic_pane_t1_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_bearer_available_wlan "Wireless LAN"
-
-//d: Second line of a double large graphic style listbox - wlan specific
-//l: list_double_large_graphic_pane_t2_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_one_wlan_nw_available "1 network available"
-
-//d: Second line of a double large graphic style listbox - wlan specific
-//l: list_double_large_graphic_pane_t2_cp2
-//w: 
-//r: 3.2
-//
-#define qtn_netw_conset_many_wlan_nw_available "%N networks available"
-
-// Setting list items
-
-//d:Item text in setting list. "The WLAN network name"
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_network_name "WLAN network name"
-
-
-//d: Text shown in a text query dialog for the WLAN network name setting
-//d: user defined value
-//l: heading_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_prmpt_network_name "WLAN network name:"
-
-//d:Item text in setting list "Network status"
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_hidden_network "Network status"
-
-//d:Item text in setting list "WLAN network mode"
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_network_mode "WLAN network mode"
-
-//d:Item text in setting list "WLAN security mode"
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_security_mode "WLAN security mode"
-
-//d:Item text in setting list "WLAN security settings"
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_security_settings "WLAN security settings"
-
-// Setting list options and/or default values
-
-//d:Defines if the WLAN network name (SSID) is not hidden
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_hidden_network_no "Public"
-
-//d:Defines if the WLAN network name (SSID) is  hidden (Default)
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_hidden_network_yes "Hidden"
-
-//d:Default value for WLAN network mode
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_network_mode_infra "Infrastructure"
-
-//d: Title of the Network mode dialog
-//d: in the manual configuration of a new WLAN connection method
-//l: heading_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_prmpt_wlan_nw_mode_and_status "Network mode and status:"
-
-//d:Network mode selection list, sets the network mode setting 
-//d:to 'infrastructure' and network status to 'Public'
-//l:list_single_pane_t1_cp2
-//w:
-//r:3.2
-//
-#define qtn_wlan_network_mode_infra_public "Infrastructure (public)"
-
-//d:Network mode selection list, sets the network mode setting 
-//d:to 'infrastructure' and network status to 'hidden'
-//l:list_single_pane_t1_cp2
-//w:
-//r:3.2
-//
-#define qtn_wlan_network_mode_infra_hidden "Infrastructure (hidden)"
-
-//d:Network mode selection list, sets the network mode setting 
-//d:to 'Ad-hoc' and network status to 'Public'
-//l:list_single_pane_t1_cp2
-//w:
-//r:3.2
-//
-#define qtn_wlan_network_mode_adhoc_public "Ad-hoc (public)"
-
-//d:Network mode selection list, sets the network mode setting 
-//d:to 'Ad-hoc' and network status to 'Hidden'
-//l:list_single_pane_t1_cp2
-//w:
-//r:3.2
-//
-#define qtn_wlan_network_mode_adhoc_hidden "Ad-hoc (hidden)"
-
-//d:Default value for WLAN security mode
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_security_mode_open "Open network"
-
-//d:Security settings mode "WEP"
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_security_mode_wep "WEP"
-
-//d:Security settings mode "802.1x"
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_security_mode_802_1x "802.1x"
-
-//d:Security settings mode "WPA/WPA2"
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_security_mode_wpa "WPA/WPA2"
-
-//d:Security settings mode "WAPI"
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_security_mode_wapi "WAPI"
-
-//d: Title of the Security Mode selection dialog
-//d: in the manual configuration of a new WLAN connection method
-//l: heading_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_prmpt_wlan_nw_security_mode "Security Mode:"
-
-//d:Default value for WLAN security mode
-//l:list_single_pane_t1_cp2
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_wlan_security_mode_open "Open network"
-
-//d:Security settings mode "WEP"
-//l:list_single_pane_t1_cp2
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_wlan_security_mode_wep "WEP"
-
-//d:Security settings mode "802.1x"
-//l:list_single_pane_t1_cp2
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_wlan_security_mode_802_1x "802.1x"
-
-//d:Security settings mode "WPA/WPA2"
-//l:list_single_pane_t1_cp2
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_wlan_security_mode_wpa "WPA/WPA2"
-
-//d: Title of the WPA/WPA2 mode selection dialog in the manual
-//d: configuration of a new WLAN connection method
-//l: heading_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_prmpt_wlan_wpa_mode "WPA/WPA2 mode:"
-
-//d:EAP item in the WPA/WPA2 mode selection dialog
-//l:list_single_pane_t1_cp2
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_prmpt_wpa_mode_eap "EAP"
-
-//d:Pre-shared item item in the WPA/WPA2 mode selection dialog
-//l:list_single_pane_t1_cp2
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_prmpt_wpa_mode_psk "Pre-shared key"
-
-//d: Note to indicate to user that the default EAP values have
-//d: been set and advanced values can be edited in the 
-//d: security settings of the connection method
-//l: popup_note_window
-//w:
-//r:3.2
-//
-#define qtn_netw_conset_info_eap_settings_default "Default EAP values set. Configure advanced settings by editing the method."
-
-//d:Specifies that the WLAN network name is user defined
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_network_name_user_defined "User defined"
-
-
-//d:Specifies that the WLAN network name is selected from a scanned list
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_network_name_scan "Scan for networks"
-
-
-//d:Specifies that the network mode is Ad-hoc
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_network_mode_adhoc "Ad-hoc"
-
-//d:Setting item text for Ad-hoc channel.
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_adhoc_channel "Ad-hoc channel"
-
-//d:Title in a numeric query dialog for the ad-hoc channel setting value
-//l: popup_query_data_window
-//w:
-//r:3.2
-//
-#define qtn_wlan_prmpt_adhoc_channel "Ad-hoc channel:"
-
-//d:Defines the ad-hoc channel to be automatic
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_adhoc_channel_automatic "Automatic"
-
-
-//d:Defines the ad-hoc channel to be user defined
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_adhoc_channel_user_defined "User defined"
-
-//d: wlan plugin info note text shown when user tries to edit
-//d: security settings for open network
-//l: popup_note_window
-//w: 
-//r: 3.2
-//
-#define qtn_wlan_info_no_security_settings "No security settings for ’Open network’"
-
-//d: Data bearer of the highlighted connection method.
-//l: popup_preview_text_window_t1
-//w:
-//r: 3.2
-#define qtn_netw_conset_popup_bearer_wlan "Wireless LAN"
-
-//d: Connection method settings query text 
-//d: displayed when network name is not defined 
-//d: and user presses 'back' from settings view 
-//l: popup_note_window
-//w:
-//r: 3.2
-//
-#define qtn_wlan_quest_nw_name_not_defined "Incomplete details. WLAN network name must be defined. Delete access point?"
-
-//d: Connection method settings query text 
-//d: displayed when security settings are empty 
-//d: and user presses 'back' from settings view 
-//l: popup_note_window
-//w:
-//r: 3.2
-//
-#define qtn_wlan_quest_security_settings_empty "Security settings for the selected security mode are incomplete. Delete access point?"
-
-//d: Name of the data bearer used when accessing external network.
-//l: list_set_graphic_pane_t1
-//w:
-//r: 3.2
-#define qtn_wlan_sett_bearer_wlan "Wireless LAN"
-
-
-//d:Item text in setting list "WLAN base station selection"
-//l:list_setting_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_ssid_roaming "WLAN base station selection"
-
-
-//d:Value for WLAN base station selection, allows roaming
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_ssid_roaming_enabled "Roam to best"
-
-
-//d:Value for WLAN base station selection, disallows roaming
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_wlan_sett_ssid_roaming_disabled "Stay in first"
-
-
-//d:Wait note during scanning of wlan networks
-//l:popup_note_wait_window
-//w:
-//r:3.2
-//
-#define qtn_wlan_wait_searching_networks         "Searching WLAN networks"
-
-
-//d:"Search for WLAN" - information note
-//l:popup_note_window
-//w:
-//r:3.0
-//
-#define qtn_wlan_info_no_networks_found         "No WLAN networks found"
-
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpluginwlan.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2879 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of WLAN Plugin interface implementation 
-*                for WLAN Bearer
-*
-*/
-
-
-#include <commdb.h>
-#include <ecom/ecom.h>		// For REComSession
-#include <f32file.h>    // for TParse
-#include <StringLoader.h>
-#include <data_caging_path_literals.hrh>
-#include <ConnectionUiUtilities.h>
-
-#include <cmpluginbaseeng.h>
-#include <cmpluginlanbase.h>
-#include <mcmdexec.h>
-#include <cmpbasesettingsdlg.h>
-#include <cmpluginwlan.mbg>
-#include <cmwlanui.rsg>
-#include <cmmanager.rsg>
-#include <cmcommonui.h>
-#include <wlancontainer.h>
-
-#include <WEPSecuritySettingsUI.h>
-#include <WPASecuritySettingsUI.h>
-#include <featmgr.h>
-#include <ConeResLoader.h>
-#include <AknWaitDialog.h>
-#include <uikon/eiksrvui.h>
-#include <AknGlobalNote.h>
-
-#include "cmwlancommonconstants.h"
-#include "cmpluginwlan.h"
-#include "cmwlancoveragecheck.h"
-#include "cmlogger.h"
-#include "cmpwlansettingsdlg.h"
-#include <cmpluginwlandef.h>
-#include <cmcommonconstants.h>
-#include "cmmanagerimpl.h"
-#include "cmpwlanactivewaiter.h"
-
-#include <wifiprotuiinprocess.h>
-
-using namespace CMManager;
-
-#include "wapisecuritysettingsui.h"
-
-// CONSTANTS
-const TUint32 KDefaultPriorityWLan = 0;
-
-const TInt KWlanSingleNetwork = 1; // Number of WLAN networks is 1
-const TInt KWlanMaxKeyLength = 64;
-const TInt KWlanLastSocketActivityTimeout = -1;
-const TInt KWlanLastSessionClosedTimeout = 1;
-const TInt KWlanLastSocketClosedTimeout = -1;
-const TUint32 KEndOfArray = KMaxTUint;
-
-// Daemon manager name for Easy WLAN IAP
-_LIT( KHotspotDaemonManagerName, "NetCfgExtnHotSpot" );
-_LIT( KEasyWlanName, "Easy WLAN" );
-
-// Modem bearer names for WLAN connection methods
-_LIT( KModemBearerWLAN, "WLANBearer" );
-
-_LIT( KWlanFileIcons, "z:cmpluginwlan.mbm" );
-_LIT( KWlanBearerName, "WLANBearer" );
-_LIT( KWlanBearerAgent, "wlanagt.agt" );
-_LIT( KWlanBearerNif, "wlannif" );
-
-_LIT( KWlanLDDName, "not used" );
-_LIT( KWlanPDDName, "not used" );
-
-static const TCmAttribConvTable SWlanConvTbl[] = 
-    {
-    // iAttribId, iCommsDatId, iValidFuncL, 
-    // iTitleId, 
-    // iMaxLength, iAttribFlags, iDefValueResId, iEditorResId, iNotUsed1, iNotUsed2
-    { EWlanServiceId,           EWlanRangeMax,          NULL },        
-    { EWlanServiceId,           KCDTIdWlanServiceId,    NULL },
-    { EWlanConnectionMode,      KCDTIdWlanConnMode,     NULL,
-      R_QTN_WLAN_SETT_NETWORK_MODE,
-       },
-    { EWlanSSID,                KCDTIdWlanSSID,         NULL,
-      R_QTN_WLAN_SETT_NETWORK_NAME,
-      KCmWlanNWNameMaxLength, EConvCompulsory | EConvNoZeroLength, R_QTN_SELEC_SETTING_COMPULSORY, R_TEXT_SETTING_PAGE_NETW_NAME, NULL, NULL },
-    { EWlanUsedSSID,            KCDTIdWlanUsedSSID,     NULL },
-    { EWlanSecurityMode,        KCDTIdWlanSecMode,      NULL,
-      R_QTN_WLAN_SETT_SECURITY_MODE,
-      0, 0, 0, 0, NULL, NULL },
-    { EWlanAuthenticationMode,  KCDTIdWlanAuthMode,     NULL },
-    { EWlanScanSSID,            KCDTIdWlanScanSSID,     NULL,
-      R_QTN_WLAN_SETT_HIDDEN_NETWORK,
-      0, 0, 0, 0, NULL, NULL },
-    { EWlanChannelID,           KCDTIdWlanChannelID,    NULL,
-      R_QTN_WLAN_SETT_ADHOC_CHANNEL,
-      KCmAdhocChannelMaxLength, EConvNumber, R_QTN_WLAN_SETT_ADHOC_CHANNEL_AUTOMATIC, 0, NULL, NULL },   
-    { EWlanAllowSSIDRoaming,  KCDTIdWlanAllowSSIDRoaming,     NULL, 
-      R_QTN_WLAN_SETT_SSID_ROAMING,
-      0, 0, 0, 0, NULL, NULL },
-    { 0,0 }
-    };
-
-
-static const TCmCommonAttrConvArrayItem SCommonConvTbl[] =
-{
-    { EWlanIfNetworks, ECmIFNetworks },
-    { EWlanIpNetMask, ECmIPNetmask },
-    { EWlanIpGateway, ECmIPGateway },
-    { EWlanIpAddrFromServer, ECmIPAddFromServer },
-    { EWlanIpAddr, ECmIPAddress },
-    { EWlanIpDNSAddrFromServer, ECmIPDNSAddrFromServer },
-    { EWlanIpNameServer1, ECmIPNameServer1 },
-    { EWlanIpNameServer2, ECmIPNameServer2 },
-    { EWlanIp6DNSAddrFromServer, ECmIP6DNSAddrFromServer },
-    { EWlanIp6NameServer1, ECmIP6NameServer1 },
-    { EWlanIp6NameServer2, ECmIP6NameServer2 },
-    { EWlanIpAddrLeaseValidFrom, ECmIPAddrLeaseValidFrom },
-    { EWlanIpAddrLeaseValidTo, ECmIPAddrLeaseValidTo },
-    { EWlanConfigDaemonManagerName, ECmConfigDaemonManagerName },
-    { EWlanConfigDaemonName, ECmConfigDaemonName },
-    { 0, 0 }
-    };
-
-
-/**
- * struct for security mode conversion table
- */
-typedef struct
-    {
-    TUint32 iSecurityMode;
-    TUint32 iNWModeSelectionDlgIndex;
-    TUint32 iRBSettingPageIndex;
-    TUint32 iResId;
-    } TCmSecurityModeConvTable;
-
-/**
- * Conversion table for the correct positioning of WLAN security types 
- * in WLAN UI components
- */  
-const TCmSecurityModeConvTable KWlanSecurityModeConvTable[] =
-    {                              
-        { EWlanSecModeOpen,   0, 0, R_QTN_NETW_CONSET_WLAN_SECURITY_MODE_OPEN   },
-        { EWlanSecModeWep,    1, 1, R_QTN_NETW_CONSET_WLAN_SECURITY_MODE_WEP    },
-        { EWlanSecMode802_1x, 2, 2, R_QTN_NETW_CONSET_WLAN_SECURITY_MODE_802_1X },
-        { EWlanSecModeWpa,    3, 3, R_QTN_NETW_CONSET_WLAN_SECURITY_MODE_WPA    },
-     // { EWlanSecModeWpa2,   3, 3, R_QTN_NETW_CONSET_WLAN_SECURITY_MODE_WPA2   },
-        { EWlanSecModeWAPI,   4, 4, R_QTN_WLAN_SETT_SECURITY_MODE_WAPI   },
-        { KEndOfArray, KEndOfArray, KEndOfArray, KEndOfArray }
-    };
-
-/**
- * struct for the network mode conversion table
- */
-typedef struct
-    {
-    TUint32 iNwMode;
-    TBool   iHidden;
-    TUint32 iResId;
-    } TCmNetworkModeConvTable;
-
-/**
- * Conversion table for the correct positioning of WLAN network modes
- */
-const TCmNetworkModeConvTable KWlanNetworkModeConvTable[] =
-    {
-        { EInfra, EFalse, R_QTN_WLAN_NETWORK_MODE_INFRA_PUBLIC }, // Infrastructure (public)
-        { EInfra, ETrue,  R_QTN_WLAN_NETWORK_MODE_INFRA_HIDDEN }, // Infrastructure (hidden)
-        { EAdhoc, EFalse, R_QTN_WLAN_NETWORK_MODE_ADHOC_PUBLIC }, // Ad-hoc (public)
-//        { EAdhoc, ETrue,  R_QTN_WLAN_NETWORK_MODE_ADHOC_HIDDEN }, // Ad-hoc (hidden)
-        { KEndOfArray, EFalse, KEndOfArray }
-    };
-
-// ======================= MEMBER FUNCTIONS =================================
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::NewL
-// --------------------------------------------------------------------------
-//
-CCmPluginWlan* CCmPluginWlan::NewL( TCmPluginInitParam* aInitParam )
-    {
-    if ( !FeatureSupported( KFeatureIdProtocolWlan ) )
-        {
-        User::Leave( KErrNotSupported );
-        }
-        
-    CCmPluginWlan* self = new( ELeave ) CCmPluginWlan( aInitParam );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::~CCmPluginWlan
-// --------------------------------------------------------------------------
-//
-CCmPluginWlan::~CCmPluginWlan()
-    {
-    AdditionalReset();
-    DestroyWaitDialog();
-    RemoveResourceFile( KPluginWlanResDirAndFileName );    
-    delete iConnUiUtils; iConnUiUtils = NULL;
-    
-    iAdditionalCmsCreated.Close();
-
-    CLOG_CLOSE;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::CreateInstanceL
-// --------------------------------------------------------------------------
-//
-CCmPluginBaseEng* CCmPluginWlan::CreateInstanceL( TCmPluginInitParam& aInitParam ) const
-    {
-    CCmPluginWlan* self = new( ELeave ) CCmPluginWlan( &aInitParam );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    return self;
-    }
-    
-// --------------------------------------------------------------------------
-// CCmPluginWlan::CCmPluginWlan
-// --------------------------------------------------------------------------
-//
-CCmPluginWlan::CCmPluginWlan( TCmPluginInitParam* aInitParam )
-    : CCmPluginLanBase( aInitParam )
-    {
-    CLOG_CREATE;
-    iWlanTableId = 0;
-    iBearerType = KUidWlanBearerType;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::ConstructL
-// --------------------------------------------------------------------------
-//
-void CCmPluginWlan::ConstructL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::ConstructL" );
-    
-    CCmPluginLanBase::ConstructL();
-
-    iBearerRecName = KModemBearerWLAN;
-    
-    // get WLAN table id
-    TRAP_IGNORE( iWlanTableId = CCDWlanServiceRecord::TableIdL( Session() ) );
-
-    if( !iWlanTableId )
-        {
-        iWlanTableId = CCDWlanServiceRecord::CreateTableL( Session() );
-
-        TMDBElementId tableId = 0;
-
-        TRAP_IGNORE( tableId = CCDWlanDeviceSettingsRecord::TableIdL( Session() ) );
-        if( !tableId )
-            {
-            CCDWlanDeviceSettingsRecord::CreateTableL( Session() );
-            }
-        
-        TRAP_IGNORE( tableId = CCDWLANSecSSIDTable::TableIdL( Session() ) );
-        if( !tableId )
-            {
-            CCDWLANSecSSIDTable::CreateTableL( Session() );
-            }
-
-        TRAP_IGNORE( tableId = CCDDestNWTable::TableIdL( Session() ) );
-        if( !tableId )
-            {
-            CCDDestNWTable::CreateTableL( Session() );
-            }
-        }
-
-    AddResourceFileL( KPluginWlanResDirAndFileName );
-    
-    AddConverstionTableL( ( CCDRecordBase** )&iWlanServiceRecord, 
-                            NULL, 
-                            SWlanConvTbl );
-    AddCommonConversionTableL( SCommonConvTbl );
-    
-    iIsWAPISupported = FeatureManager::FeatureSupported( KFeatureIdFfWlanWapi );
-    }
-    
-	
-// --------------------------------------------------------------------------
-// CCmPluginWlan::GetIntAttributeL
-// --------------------------------------------------------------------------
-//
-TUint32 CCmPluginWlan::GetIntAttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::GetIntAttributeL" );
-    
-    TInt retval;
-    switch ( aAttribute )
-        {
-        case ECmExtensionLevel:
-            {
-    	    retval = CCmPluginLanBase::GetIntAttributeL( aAttribute );
-    	    retval++;
-            break;
-            }        
-        case ECmBearerIcon:
-            {
-            TAknsItemID id;
-            MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-                   
-            TParse mbmFile;
-            User::LeaveIfError( mbmFile.Set( KWlanFileIcons, 
-                                &KDC_BITMAP_DIR,
-                                NULL ) );
-
-            // default - WLAN icon
-            TInt icon = EMbmCmpluginwlanQgn_prop_wlan_bearer;
-            TInt mask = EMbmCmpluginwlanQgn_prop_wlan_bearer_mask;
-            
-            // Easy WLAN icon
-            TUint32 easyWlanId = iCmMgr.EasyWlanIdL();
-            if ( easyWlanId && GetIntAttributeL( ECmId ) == easyWlanId )
-                {
-                icon = EMbmCmpluginwlanQgn_prop_set_conn_wlan_easy;
-                mask = EMbmCmpluginwlanQgn_prop_set_conn_wlan_easy_mask;
-                }
-            
-            retval = (TUint32)AknsUtils::CreateGulIconL( 
-                                skinInstance, 
-                                id,
-                                mbmFile.FullName(), 
-                                icon, 
-                                mask );
-            break;
-            }  
-        case ECmBearerAvailableIcon:
-            {
-            TAknsItemID id;
-            MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-                   
-            TParse mbmFile;
-            User::LeaveIfError( mbmFile.Set( KWlanFileIcons, 
-                                &KDC_BITMAP_DIR,
-                                NULL ) );
-
-            retval = (TUint32)AknsUtils::CreateGulIconL( 
-                                skinInstance, 
-                                id,
-                                mbmFile.FullName(), 
-                                EMbmCmpluginwlanQgn_prop_set_conn_bearer_avail_wlan, 
-                                EMbmCmpluginwlanQgn_prop_set_conn_bearer_avail_wlan_mask );
-            break;
-            }
-        case ECmCommsDBBearerType:
-            {
-            retval = KCommDbBearerWLAN;
-            break;
-            }
-            
-        case ECmDefaultUiPriority:
-            {
-            retval = GlobalUiBearerPriority( TPtrC(KCDTypeNameWLANServiceExt) );
-            
-            if( retval == KDataMobilitySelectionPolicyPriorityWildCard )
-                {
-                retval = KDefaultPriorityWLan;
-                }
-            }
-            break;
-        case ECmDefaultPriority:
-            {
-            retval = GlobalBearerPriority( TPtrC(KCDTypeNameWLANServiceExt) );
-            
-            if( retval == KDataMobilitySelectionPolicyPriorityWildCard )
-                {
-                retval = KDefaultPriorityWLan;
-                }
-            }
-            break;
-        case EWlanServiceId:
-            {
-            if ( iWlanServiceRecord )
-                {
-                retval = iWlanServiceRecord->RecordId();
-                break;
-                }
-            }
-        default:
-            {
-    	    retval = CCmPluginBaseEng::GetIntAttributeL( aAttribute );
-            break;
-            }
-        }
-    return retval;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::GetBoolAttributeL
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginWlan::GetBoolAttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::GetBoolAttributeL" );
-    
-    TBool retval( EFalse );
-
-    switch ( aAttribute )
-        {
-        case ECmCoverage:
-            {
-#ifndef __WINS__
-            TInt& networks = CONST_CAST( TInt&, iWlanNetworks );
-            networks = 0;
-
-            networks = CheckNetworkCoverageL();
-            
-            // If there's at least one WLAN network around, then there IS
-            // coverage.
-            retval = ( networks ? ETrue : EFalse );
-#else
-
-            TInt& networks = CONST_CAST( TInt&, iWlanNetworks );
-            ////networks = 0;
-            ////retval = EFalse;
-
-            networks = 1;
-            retval = ETrue;
-
-
-
-#endif
-            }
-            break;
-
-        case ECmAddToAvailableList:
-            {
-            retval = ETrue;
-            }
-            break;
-            
-        case ECmBearerHasUi:
-            {
-            retval = ETrue;
-            }
-            break;
-            
-        default:
-            {
-            retval = CCmPluginBaseEng::GetBoolAttributeL( aAttribute );
-            break;
-            }
-        }
-    return retval;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::GetStringAttributeL
-// --------------------------------------------------------------------------
-//
-HBufC* CCmPluginWlan::GetStringAttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::GetStringAttributeL" );
-
-	HBufC* retVal = NULL;
-	
-	switch( aAttribute )
-	    {
-	    case ECmBearerAvailableName:
-	        {
-	        retVal = AllocReadL( R_QTN_NETW_CONSET_BEARER_AVAILABLE_WLAN );
-	        }
-	        break;
-	        
-        case ECmBearerAvailableText:
-            {
-            if ( CEikonEnv::Static() )
-                {
-                if ( iWlanNetworks == KWlanSingleNetwork )
-                    {
-                    retVal = AllocReadL( 
-                                    R_QTN_NETW_CONSET_ONE_WLAN_NW_AVAILABLE );
-                    }
-                else
-                    {
-                    retVal = ReadResourceL( 
-                                    R_QTN_NETW_CONSET_MANY_WLAN_NW_AVAILABLE,
-                                    iWlanNetworks );
-                    }
-                }
-            else
-                {   // ReadResourceL does not work without a valid EikonEnv, so
-                    // to have a consistent behaviour when there is one or more
-                    // wlan networks for ECmBearerAvailableText, we always 
-                    // leave when called without valid EikonEnv
-                User::Leave( KErrNotSupported );
-                }
-            }
-            break;
-
-	    case ECmBearerSupportedName:
-	        {
-	        retVal = AllocReadL( R_QTN_NETW_CONSET_BEARER_SUPPORTED_WLAN );
-	        }
-	        break;
-	        
-	    case ECmBearerNamePopupNote:
-	        {
-	        retVal = AllocReadL( R_QTN_NETW_CONSET_POPUP_BEARER_WLAN );
-	        }
-	        break;
-	        
-	    case ECmBearerSettingName:
-	        {
-	        retVal = AllocReadL( R_QTN_WLAN_SETT_BEARER_WLAN );
-	        }
-	        break;
-
-	    default:
-	        {
-	        retVal = CCmPluginBaseEng::GetStringAttributeL( aAttribute );
-	        }
-	        break;
-	    }	    
-    return retVal;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::SetIntAttributeL
-// --------------------------------------------------------------------------
-//
-void CCmPluginWlan::SetIntAttributeL( const TUint32 aAttribute, 
-                                            TUint32 aValue )
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::SetIntAttributeL" );
-
-    CCmPluginBaseEng::SetIntAttributeL( aAttribute, aValue );
-    if ( aAttribute == EWlanSecurityMode )
-        {
-        UpdateSecurityModeL();
-        }
-    }
-
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::SetBoolAttributeL
-// --------------------------------------------------------------------------
-//
-void CCmPluginWlan::SetBoolAttributeL( const TUint32 aAttribute, 
-                                             TBool aValue )
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::SetBoolAttributeL" );
-    
-    CCmPluginBaseEng::SetBoolAttributeL( aAttribute, aValue );
-    }
-
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::SetStringAttributeL
-// --------------------------------------------------------------------------
-//
-void CCmPluginWlan::SetStringAttributeL( const TUint32 aAttribute, 
-                                               const TDesC16& aValue )
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::SetStringAttributeL" );
-        
-    switch( aAttribute )
-        {
-        case ECmName:
-            {
-            CCmPluginLanBase::SetStringAttributeL( aAttribute, aValue );
-            break;
-            }
-        case EWlanIpNameServer1:
-        case EWlanIpNameServer2:
-            {
-            // when setting nameservers, must set EWlanIpDNSAddrFromServer
-            // according to current nameserver settings
-            CCmPluginBaseEng::SetStringAttributeL( aAttribute, aValue );
-            break;
-            }
-        case EWlanIp6NameServer1:
-        case EWlanIp6NameServer2:
-            {
-            // when setting nameservers, must set EWlanIpDNSAddrFromServer
-            // according to current nameserver settings
-            CCmPluginBaseEng::SetStringAttributeL( aAttribute, aValue );
-            break;
-            }
-        default:
-            {
-            CCmPluginBaseEng::SetStringAttributeL( aAttribute, aValue );
-            break;
-            }
-        }
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::UpdateAdditionalRecordsL
-// --------------------------------------------------------------------------
-//     
-void CCmPluginWlan::UpdateAdditionalRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::UpdateAdditionalRecordsL" );
-    
-    CheckIfNameModifiedL( iWlanServiceRecord );
-
-    iWlanServiceRecord->iWlanServiceId.SetL( iIapRecord->iService );
-    
-    if ( !iWlanServiceRecord->RecordId() )
-        {
-        iWlanServiceRecord->SetRecordId( KCDNewRecordRequest );
-        iWlanServiceRecord->StoreL( Session() );
-        }
-    else
-        {
-        iWlanServiceRecord->ModifyL( Session() );
-        }
-    UpdateSecuritySettingsL();        
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::CanHandleIapIdL
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginWlan::CanHandleIapIdL( TUint32 aIapId ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::CanHandleIapIdL1" );
-    CLOG_WRITE_1( "IapId: [%d]", aIapId );
-    
-    TBool retVal( EFalse );
-    
-    CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord *>
-                        ( CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord) );
-        
-    CleanupStack::PushL( iapRecord );
-    iapRecord->SetRecordId( aIapId );
-    
-    TRAPD( err, iapRecord->LoadL( Session() ) );
-
-    if( !err )
-        {
-        CanHandleIapIdL( iapRecord );
-        }
-    
-    CleanupStack::PopAndDestroy( iapRecord );
-    return retVal;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::CanHandleIapIdL
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginWlan::CanHandleIapIdL( CCDIAPRecord *aIapRecord ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::CanHandleIapIdL2" );
-
-    CLOG_WRITE_1( "IapId: [%d]", aIapRecord->RecordId() );
-   
-    
-    TBool retVal( EFalse );
-    
-    CLOG_WRITE_2( "IAP record: [%S][%S]",
-                    &FIELD_TO_TDESC( aIapRecord->iServiceType ),
-                    &FIELD_TO_TDESC( aIapRecord->iBearerType ) 
-                );
-    
-    if( (TPtrC(aIapRecord->iServiceType) == TPtrC(KCDTypeNameLANService) ) &&
-        TPtrC(aIapRecord->iBearerType) == TPtrC(KCDTypeNameLANBearer) )
-        {
-        // check if there is a WLAN record with 
-        // an iServiceId == iIapRecord->iService;
-        CCDWlanServiceRecord* tmprec = new ( ELeave ) 
-                                       CCDWlanServiceRecord ( iWlanTableId );
-        CleanupStack::PushL( tmprec );
-
-        TInt service = aIapRecord->iService;
-        
-        tmprec->iWlanServiceId.SetL( (TUint32)service );
-        if ( tmprec->FindL( Session() ) )
-            {
-            // we found at least one WLAN using this IAP, 
-            retVal = ETrue;
-            tmprec->LoadL( Session() );
-            CLOG_WRITE( "I can." );
-            }
-        else
-            {
-            // not found -> not our
-            CLOG_WRITE_1( "Wlan with Service ID: [%d] NOT found ", 
-                          service );
-            }
-        CleanupStack::PopAndDestroy(tmprec);        
-        }
-    return retVal;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::DeleteAdditionalRecordsL
-// --------------------------------------------------------------------------
-//
-void CCmPluginWlan::DeleteAdditionalRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::DeleteAdditionalRecordsL" );    
-    
-    // as base class deletes service record, in this case LAN, 
-    // only WLAN related stuff needs to be deleted
-    // also security settings, too!
-    DeleteSecuritySettingsL();
-    iWlanServiceRecord->DeleteL( Session() );
-    }      
-    
-        
-// --------------------------------------------------------------------------
-// CCmPluginWlan::RunSettingsL
-// --------------------------------------------------------------------------
-//        
-TInt CCmPluginWlan::RunSettingsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::RunSettingsL" );
-    
-    CmPluginWlanSettingsDlg* cmDlg = CmPluginWlanSettingsDlg::NewL( *this );
-    return cmDlg->ConstructAndRunLD( );       
-    }
-
-	
-// --------------------------------------------------------------------------
-// CCmPluginWlan::LoadServiceSettingL
-// --------------------------------------------------------------------------
-//        
-void CCmPluginWlan::LoadServiceSettingL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::LoadServiceSettingL" );
-        
-    if( TPtrC(KCDTypeNameLANService) == iIapRecord->iServiceType  )
-        {
-        iServiceRecord = static_cast<CCDServiceRecordBase *>
-                    (CCDRecordBase::RecordFactoryL(KCDTIdLANServiceRecord));
-        iServiceRecord->SetRecordId( iIapRecord->iService );
-        CLOG_WRITE_1( "ID: [%d]", iServiceRecord->RecordId() );
-        iServiceRecord->LoadL(Session());        
-        }
-    else
-        // this IAP service is not supported by this plugin.
-        {
-        User::Leave( KErrNotSupported );
-        }
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::LoadAdditionalRecordsL
-// --------------------------------------------------------------------------
-//        
-void CCmPluginWlan::LoadAdditionalRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::LoadAdditionalRecordsL" );
-    
-    if (!iWlanServiceRecord) 
-        {
-        iWlanServiceRecord = 
-                        new ( ELeave ) CCDWlanServiceRecord ( iWlanTableId );
-        }
-    iWlanServiceRecord->SetRecordId( 0 );
-
-    iWlanServiceRecord->iWlanServiceId.SetL( ( TUint32 )
-                                                ( iIapRecord->iService ) );
-    
-    if ( iWlanServiceRecord->FindL( Session() ) )
-        {
-        iWlanServiceRecord->LoadL( Session() );
-        LoadSecuritySettingsL();
-        }
-    else
-        {
-        // not found -> error
-        CLOG_WRITE_1( "Wlan with Service ID: [%d] NOT found ", 
-                      iServiceRecord->RecordId() );
-        User::Leave(KErrNotFound);
-        }
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::CreateNewServiceRecordL
-// --------------------------------------------------------------------------
-//        
-void CCmPluginWlan::CreateNewServiceRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::CreateNewServiceRecordL" );
-        
-    // create base (LAN) service record:
-    CCmPluginLanBase::CreateNewServiceRecordL();
-    CCDLANServiceRecord* tmp = 
-                static_cast<CCDLANServiceRecord *>(iServiceRecord);
-    if( FeatureSupported( KFeatureIdIPv6 ) )
-        {
-        tmp->iIfNetworks.SetL( KDefIspIfNetworksIPv4IPv6 );
-        }
-    else
-        {
-        tmp->iIfNetworks.SetL( KDefIspIfNetworksIPv4 );
-        }
-
-    // create WLAN service record:
-    CreateWlanServiceRecordL();
-    
-    // In case of WLan 'show progress' is the default value
-    SetIntAttributeL( ECmSeamlessnessLevel, ESeamlessnessShowprogress );
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::CreateWlanServiceRecordL
-// --------------------------------------------------------------------------
-//        
-void CCmPluginWlan::CreateWlanServiceRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::CreateWlanServiceRecordL" );
-
-    delete iWlanServiceRecord; 
-    iWlanServiceRecord = NULL;
-    
-    iWlanServiceRecord = new ( ELeave ) CCDWlanServiceRecord ( iWlanTableId );
-    iWlanServiceRecord->SetRecordId( KCDNewRecordRequest );
-
-	iWlanServiceRecord->iRecordTag.SetL( 1 );
-	iWlanServiceRecord->iRecordName.SetL( iIapRecord->iRecordName );
-    iWlanServiceRecord->iWlanConnMode.SetL( EInfra );
-    iWlanServiceRecord->iWlanSecMode.SetL( EWlanSecModeOpen );
-    iWlanServiceRecord->iWlanScanSSID.SetL( EFalse );
-    }
-
-
-// ----------------------------------------------------------------------------
-// CCmPluginWlan::PrepareToUpdateRecordsL()
-// ----------------------------------------------------------------------------
-//
-void CCmPluginWlan::PrepareToUpdateRecordsL()
-    {
-    CCDLANServiceRecord* tmprec = static_cast<CCDLANServiceRecord*>(iServiceRecord);
-
-    CheckDNSServerAddressL( ETrue, 
-                            tmprec->iIp6NameServer1,
-                            tmprec->iIp6NameServer2,
-                            tmprec->iIp6DnsAddrFromServer );
-                            
-    CheckDNSServerAddressL( EFalse,
-                            tmprec->iIpNameServer1,
-                            tmprec->iIpNameServer2,
-                            tmprec->iIpDnsAddrFromServer );
-    SetDaemonNameL();
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::LoadSecuritySettingsL
-// --------------------------------------------------------------------------
-//        
-void CCmPluginWlan::LoadSecuritySettingsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::LoadSecuritySettingsL" );
-
-    TUint32 secmode = iWlanServiceRecord->iWlanSecMode;
-    TUint32 iapid = iIapRecord->iService;
-                   
-    switch ( secmode )
-        {
-        case EWlanSecModeOpen:
-            {
-            break;
-            }
-        case EWlanSecModeWep:
-            {
-            if ( !iWepSecSettings )
-                {
-                iWepSecSettings = CWEPSecuritySettings::NewL();
-                }
-                iWepSecSettings->LoadL( iapid, Session() );
-            break;
-            }
-        case EWlanSecMode802_1x:
-            {
-            if ( !iWpaSecSettings )
-                {
-                iWpaSecSettings = 
-                    CWPASecuritySettings::NewL( ESecurityMode8021x );
-                }
-            iWpaSecSettings->LoadL( iapid, Session() );
-            break;
-            }
-        case EWlanSecModeWpa:
-        case EWlanSecModeWpa2:
-            {
-            if ( !iWpaSecSettings )
-                {
-                iWpaSecSettings = 
-                    CWPASecuritySettings::NewL( ESecurityModeWpa );
-                }
-			iWpaSecSettings->LoadL( iapid, Session() );
-            break;
-            }
-        case EWlanSecModeWAPI:
-            {
-            if ( iIsWAPISupported )
-                {
-                if ( !iWAPISecSettings )
-                    {
-                    iWAPISecSettings = CWAPISecuritySettings::NewL();
-                    }
-                iWAPISecSettings->LoadL( iIapRecord->RecordId(), Session() );
-                }
-            else
-                {
-                User::Leave( KErrCorrupt );
-                }
-            break;
-            }
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            // do nothing in urel
-            break;
-            }
-        }
-    }
-    
-
-// ----------------------------------------------------------------------------
-// CCmPluginWlan::EditSecuritySettingsL
-// ----------------------------------------------------------------------------
-//        
-TInt CCmPluginWlan::EditSecuritySettingsL( CEikonEnv& aEikonEnv )
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::EditSecuritySettingsL" );
-
-    TInt ret = KErrNotFound;
-
-    TUint32 secmode = iWlanServiceRecord->iWlanSecMode;
-
-    HBufC* title = GetStringAttributeL(ECmName);
-    CleanupStack::PushL( title );   
-    switch ( secmode )
-        {
-        case EWlanSecModeOpen:
-            {
-            break;
-            }
-        case EWlanSecModeWep:
-            {
-            CWEPSecuritySettingsUi* ui = 
-                            CWEPSecuritySettingsUi::NewL(aEikonEnv);
-            CleanupStack::PushL( ui );
-            if ( !iWepSecSettings )
-                {
-                iWepSecSettings = CWEPSecuritySettings::NewL();
-                }            
-            ret = iWepSecSettings->EditL( *ui, *title );
-            CleanupStack::PopAndDestroy( ui );
-            break;
-            }
-        case EWlanSecMode802_1x:
-            {
-            CWPASecuritySettingsUi* ui = 
-                            CWPASecuritySettingsUi::NewL(aEikonEnv);
-            CleanupStack::PushL(ui);
-            if ( !iWpaSecSettings )
-                {
-                iWpaSecSettings = 
-                            CWPASecuritySettings::NewL( ESecurityMode8021x );
-                }                        
-            ret = iWpaSecSettings->EditL( *ui, *title );
-            CleanupStack::PopAndDestroy( ui );
-            break;
-            }
-        case EWlanSecModeWpa:
-        case EWlanSecModeWpa2:
-            {
-            CWPASecuritySettingsUi* ui = 
-                            CWPASecuritySettingsUi::NewL(aEikonEnv);
-            CleanupStack::PushL( ui );
-            if ( !iWpaSecSettings )
-                {
-                iWpaSecSettings = 
-                    CWPASecuritySettings::NewL( ESecurityModeWpa );
-                }                        
-            ret = iWpaSecSettings->EditL( *ui, *title );
-            CleanupStack::PopAndDestroy( ui );
-            break;
-            }            
-        case EWlanSecModeWAPI:
-            {
-            if ( iIsWAPISupported )
-                {
-                CWAPISecuritySettingsUi* ui =
-                            CWAPISecuritySettingsUi::NewL( aEikonEnv );
-                CleanupStack::PushL( ui );
-                if ( !iWAPISecSettings )
-                    {
-                    iWAPISecSettings = CWAPISecuritySettings::NewL();
-                    }
-                ret = iWAPISecSettings->EditL( *ui, *title );
-                CleanupStack::PopAndDestroy( ui );
-                }
-            else
-                {
-                User::Leave( KErrCorrupt );
-                }
-            break;
-            }
-        default:
-            {
-            // do nothing in urel
-            break;
-            }
-        }
-    CleanupStack::PopAndDestroy( title );
-    return ret;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::AreSecuritySettingsValidL
-// --------------------------------------------------------------------------
-//        
-TBool CCmPluginWlan::AreSecuritySettingsValidL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::AreSecuritySettingsValidL" );
-  
-    TBool ret = EFalse;
-
-    TUint32 secmode = iWlanServiceRecord->iWlanSecMode;
-                
-    switch ( secmode )
-        {
-        case EWlanSecModeOpen:
-            {
-            break;
-            }
-        case EWlanSecModeWep:
-            {
-            if ( !iWepSecSettings )
-                {
-                iWepSecSettings = CWEPSecuritySettings::NewL();
-                }            
-            ret = iWepSecSettings->IsValid();
-            break;
-            }
-        case EWlanSecMode802_1x:
-            {
-            if ( !iWpaSecSettings )
-                {
-                iWpaSecSettings = 
-                    CWPASecuritySettings::NewL( ESecurityMode8021x );
-                }
-            ret = iWpaSecSettings->IsValid();
-            break;
-            }
-        case EWlanSecModeWpa:
-        case EWlanSecModeWpa2:
-            {
-            if ( !iWpaSecSettings )
-                {
-                iWpaSecSettings = 
-                    CWPASecuritySettings::NewL( ESecurityModeWpa );
-                }
-            ret = iWpaSecSettings->IsValid();
-            break;
-            }
-        case EWlanSecModeWAPI:
-            {
-            if ( iIsWAPISupported )
-                {
-                if ( !iWAPISecSettings )
-                    {
-                    iWAPISecSettings = CWAPISecuritySettings::NewL();
-                    }
-                ret = iWAPISecSettings->IsValid();
-                }
-            else
-                {
-                User::Leave( KErrCorrupt );
-                }
-            break;
-            }
-        default:
-            {
-            // do nothing in urel
-            break;
-            }
-        }        
-    return ret;
-    }
-
-    
-// --------------------------------------------------------------------------
-// CCmPluginWlan::UpdateSecuritySettingsL()
-// --------------------------------------------------------------------------
-//        
-void CCmPluginWlan::UpdateSecuritySettingsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::UpdateSecuritySettingsL" );
-
-    TUint32 oldwlaniapid(0);
-    TUint32 wlaniapid = iIapRecord->iService;
-    
-    TUint32 secmode = iWlanServiceRecord->iWlanSecMode;    
-    CLOG_WRITE_1( "Sec mode: [%d]", secmode );
-
-    TTypeOfSaving savetype( ESavingBrandNewAP );
-    
-    if (iWlanServiceRecord->RecordId())
-        {
-        savetype = ESavingEditedAP;
-        oldwlaniapid = wlaniapid;
-        }
-
-    if ( iIsCopy )
-        {
-        oldwlaniapid = iCopiedFromIapId;
-        savetype = ESavingNewAPAsACopy;
-        
-        switch ( secmode )
-            {
-            case EWlanSecModeOpen:
-                {
-                break;
-                }
-            case EWlanSecModeWep:
-                {
-                // this is a brand new copy of another CM
-                // we have to load the settings for the old wlan
-                // and save with the new one.
-                // first delete possibly existing other settings
-                if ( iWepSecSettings )
-                    {
-                    delete iWepSecSettings;
-                    iWepSecSettings = NULL;
-                    }
-                break;
-                }
-            case EWlanSecMode802_1x:
-                {
-                // this is a brand new copy of another CM
-                // we have to load the settings for the old wlan
-                // and save with the new one.
-                // first delete possibly existing other settings
-                if ( iWpaSecSettings )
-                    {
-                    delete iWpaSecSettings;
-                    iWpaSecSettings = NULL;
-                    }
-                break;
-                }
-            case EWlanSecModeWpa:
-            case EWlanSecModeWpa2:
-                {
-                // this is a brand new copy of another CM
-                // we have to load the settings for the old wlan
-                // and save with the new one.
-                // first delete possibly existing other settings
-                if ( iWpaSecSettings )
-                    {
-                    delete iWpaSecSettings;
-                    iWpaSecSettings = NULL;
-                    }
-                break;
-                }
-            case EWlanSecModeWAPI:
-                {
-                if ( iIsWAPISupported )
-                    {
-                    if ( iWAPISecSettings )
-                        {
-                        delete iWAPISecSettings;
-                        iWAPISecSettings = NULL;
-                        }
-                    }
-                else
-                    {
-                    User::Leave( KErrCorrupt );
-                    }
-                break;
-                }
-            default:
-                {
-                CLOG_WRITE( "Unknown secmode" );
-                // do nothing in urel
-                break;
-                }
-            }
-        }
-    // now save, & load if still needed
-    switch ( secmode )
-        {
-        case EWlanSecModeOpen:
-            {
-            // Extra fileds are deleted from WLANServiceTable
-            // when security mode is changed from WPA to Open
-            if ( iWpaSecSettings )
-                {
-                iWpaSecSettings->DeleteL( wlaniapid );
-                }
-            break;
-            }
-        case EWlanSecModeWep:
-            {
-            // Extra fileds are deleted from WLANServiceTable
-            // when security mode is changed from WPA to WEP
-            if ( iWpaSecSettings )
-                {
-                iWpaSecSettings->DeleteL( wlaniapid );
-                }
-
-            // we have to try to save if:
-            // 1. it is a changed AP, it is possible that only 
-            // sec. settings have been changed. 
-            // In this case, iWepSecSettings might be NULL!!
-            // 2. it's sec. settings had been edited
-            
-            if ( !iWepSecSettings )
-                {
-                iWepSecSettings = CWEPSecuritySettings::NewL();
-                iWepSecSettings->LoadL( oldwlaniapid, Session() );
-                }
-            // save WEP settings, too, into same transaction...
-            iWepSecSettings->SaveL( wlaniapid, Session() );
-            break;
-            }
-        case EWlanSecMode802_1x:
-            {
-            if ( !iWpaSecSettings )
-                {
-                iWpaSecSettings = 
-                    CWPASecuritySettings::NewL( ESecurityMode8021x );
-                iWpaSecSettings->LoadL( oldwlaniapid, Session() );
-                }                            
-            // save WPA settings, too, into same transaction...
-            iWpaSecSettings->SaveL( wlaniapid, Session(), savetype, oldwlaniapid );
-            break;
-            }
-        case EWlanSecModeWpa:
-        case EWlanSecModeWpa2:
-            {
-            if ( !iWpaSecSettings )
-                {
-                iWpaSecSettings = 
-                      CWPASecuritySettings::NewL( ESecurityModeWpa );
-                iWpaSecSettings->LoadL( oldwlaniapid, Session() );
-                }
-            
-            // save WPA settings, too, into same transaction...
-            iWpaSecSettings->SaveL( wlaniapid, Session(), savetype, oldwlaniapid );
-            break;
-            }
-        case EWlanSecModeWAPI:
-            {
-            if ( iIsWAPISupported )
-                {
-                if ( !iWAPISecSettings )
-                    {
-                    iWAPISecSettings = CWAPISecuritySettings::NewL();
-                    iWAPISecSettings->LoadL( iIapRecord->RecordId(), Session() );
-                    }
-                // save WAPI settings
-                TRAPD( err, iWAPISecSettings->SaveL( iIapRecord->RecordId(), Session() ) );
-                if ( err )
-                    {
-                    if ( err != KErrArgument )
-                        {
-                        User::Leave( err );
-                        }
-                    }
-                }
-            else
-                {
-                User::Leave( KErrCorrupt );
-                }
-            break;
-            }
-        default:
-            {
-            CLOG_WRITE( "Unknown secmode" );
-            // do nothing in urel
-            break;
-            }
-        }
-    // clean up copy flags
-    if ( iIsCopy )
-        {
-        iIsCopy = EFalse;
-        iCopiedFromIapId = 0;
-        }
-    }
-    
-    
-// --------------------------------------------------------------------------
-// CCmPluginWlan::AdditionalReset()
-// --------------------------------------------------------------------------
-//        
-void CCmPluginWlan::AdditionalReset()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::AdditionalReset" );
-    
-    delete iWlanServiceRecord;
-    iWlanServiceRecord = NULL;
-    
-    delete iWepSecSettings;
-    iWepSecSettings = NULL;
-    
-    delete iWpaSecSettings;
-    iWpaSecSettings = NULL;
-
-    if ( iIsWAPISupported )
-        {
-        delete iWAPISecSettings;
-        iWAPISecSettings = NULL;
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::BearerRecordIdLC()
-// --------------------------------------------------------------------------
-//        
-void CCmPluginWlan::BearerRecordIdLC( HBufC* &aBearerName, 
-                                                  TUint32& aRecordId )
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::BearerRecordIdLC" );
-
-	CCDLANBearerRecord* tmprec = static_cast<CCDLANBearerRecord*>
-                ( CCDRecordBase::RecordFactoryL( KCDTIdLANBearerRecord ) );
-    CleanupStack::PushL( tmprec );
-
-    tmprec->iRecordName.SetL( TPtrC( iBearerRecName ) );
-    if ( !tmprec->FindL( Session() ) )
-        { // bearer not found -> create dummy values
-        CLOG_WRITE( "No bearer found" );
-        
-        tmprec->SetRecordId( KCDNewRecordRequest );
-        
-        tmprec->iBearerAgent.SetL( KWlanBearerAgent );
-        tmprec->iRecordName.SetL( KWlanBearerName );
-        tmprec->iLanBearerNifName.SetL( KWlanBearerNif );
-        tmprec->iLanBearerLddName.SetL( KWlanLDDName );
-        tmprec->iLanBearerPddName.SetL( KWlanPDDName );
-        tmprec->iLastSocketActivityTimeout.SetL(
-                                ( TUint32 )KWlanLastSocketActivityTimeout );
-        tmprec->iLastSessionClosedTimeout.SetL(
-                                (TUint32 )KWlanLastSessionClosedTimeout );
-        tmprec->iLastSocketClosedTimeout.SetL(
-                                ( TUint32 )KWlanLastSocketClosedTimeout );
-        tmprec->StoreL( Session() );
-        }
-
-    aRecordId = tmprec->RecordId();
-    
-    CLOG_WRITE_2( "Name: [%S], id: [%d]", 
-                  &tmprec->iRecordName.GetL(),
-                  aRecordId );
-
-    CleanupStack::PopAndDestroy( tmprec );
-
-    aBearerName = TPtrC(KCDTypeNameLANBearer).AllocLC();
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::ReadResourceL()
-// --------------------------------------------------------------------------
-//        
-HBufC* CCmPluginWlan::ReadResourceL( TInt aResId, TInt aInt ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::ReadResourceL" );
-    
-    HBufC* retval = NULL;
-
-    RConeResourceLoader resourceLoader( *CEikonEnv::Static() );
-    LoadResourceLC( resourceLoader );
-    retval = StringLoader::LoadL( aResId, aInt );
-
-    // Clean-up
-    CleanupStack::PopAndDestroy();
-
-    return retval;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::LoadResourceL()
-// --------------------------------------------------------------------------
-//  
-void CCmPluginWlan::LoadResourceLC( 
-                                RConeResourceLoader& aResourceLoader ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::LoadResourceLC" );
-    
-    // Add resource file.
-    TParse fp;
-    User::LeaveIfError( fp.Set( KPluginWlanResDirAndFileName, 
-                        &KDC_RESOURCE_FILES_DIR, 
-                        NULL ) );
-    TFileName resourceFileNameBuf = fp.FullName();
-
-    CleanupClosePushL( aResourceLoader );
-    aResourceLoader.OpenL( resourceFileNameBuf );
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::InitializeWithUiL
-// --------------------------------------------------------------------------
-//        
-TBool CCmPluginWlan::InitializeWithUiL( TBool aManuallyConfigure )
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::InitializeWithUiL" );
-    
-    TBool retVal ( EFalse );
-    RConeResourceLoader resourceLoader( *CEikonEnv::Static() );
-    LoadResourceLC( resourceLoader );
-    if ( aManuallyConfigure )
-        {
-        retVal = ManuallyConfigureL();
-        }
-    else
-        {
-        retVal = AutomaticallyConfigureL();
-        }
-    // Clean-up
-    CleanupStack::PopAndDestroy();
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::ProtectedSetupL
-// --------------------------------------------------------------------------
-//
-WiFiProt::TWiFiReturn CCmPluginWlan::ProtectedSetupL( TWlanSsid& aSsid )
-    {
-    RCmManagerExt packedCmManager;
-    iCmMgr.WrapCmManager( packedCmManager );
-    CWifiProtUiInProcess* wifi = CWifiProtUiInProcess::NewL(
-                             &packedCmManager );
-    CleanupStack::PushL( wifi );
-    WiFiProt::TWiFiReturn wifiret = wifi->StartFromUiL( aSsid, EFalse, iAdditionalCmsCreated);                         
-    CleanupStack::PopAndDestroy( wifi );                                         
-    switch ( wifiret )
-        {
-        case WiFiProt::EWiFiCancel:
-            {
-            break;
-            }
-        case WiFiProt::EWiFiOK:
-            {
-            if (iAdditionalCmsCreated.Count())
-                {
-                // Loading the first item in the array
-                // to the actual plugin
-                Reset();
-                AdditionalReset();
-                LoadL( iAdditionalCmsCreated[0] );
-                iAdditionalCmsCreated.Remove(0);
-                }
-             else 
-                {//no settings configured, do the same as cancel case
-                return WiFiProt::EWiFiCancel;
-                }
-                
-            break;
-            }
-        case WiFiProt::EWifiNoAuto:
-            {
-            break;
-            }  
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            break;
-            }                                              
-        }    
-    return wifiret;
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::AutomaticallyConfigureL
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginWlan::AutomaticallyConfigureL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::AutomaticallyConfigureL" );
-    
-    TBool retval ( ETrue );
-    
-    if ( !iConnUiUtils )
-        {
-        iConnUiUtils = CConnectionUiUtilities::NewL();
-        }
-
-    // Let's search for a WLAN network
-    TWlanSsid ssid;
-    TWlanConnectionMode connectionMode;
-    TWlanConnectionExtentedSecurityMode securityMode;
-
-    TUint32 secmode( EWlanSecModeOpen );
-    
-    // Fortunately user will not see WLAN networks with empty ssid in the list
-    // shown by next call.
-    CCmPluginWlanActiveWaiter* waiter = CCmPluginWlanActiveWaiter::NewL();
-    CleanupStack::PushL( waiter );
-
-    TBool isProtectedSetupSupported;
-    iConnUiUtils->SearchWLANNetworkAsync( waiter->iStatus, ssid, connectionMode, securityMode, isProtectedSetupSupported );
-
-    TInt searchWlanReturn = waiter->WaitForRequest();
-    CleanupStack::PopAndDestroy( waiter );
-
-    if ( searchWlanReturn == KErrNone)
-        {
-        if ( isProtectedSetupSupported )
-            {
-            TBool wifiret = ProtectedSetupL( ssid );
-            switch ( wifiret )
-                {
-                case WiFiProt::EWiFiCancel: //cancel pressed, cancel process
-                    {
-                    return EFalse;
-                    //break;
-                    }
-                case WiFiProt::EWiFiOK: //settings configured already, we can return
-                    {
-                    return ETrue;
-                    //break;
-                    }
-                case WiFiProt::EWifiNoAuto://proceed with normal setup
-                    {
-                    break;
-                    }  
-                default:
-                    {
-                    User::Leave( KErrNotSupported );
-                    break;
-                    }                                              
-                }    
-            }
-        switch( securityMode )
-            {
-            case EWlanConnectionExtentedSecurityModeOpen:
-                {
-                secmode = EWlanSecModeOpen;
-                }
-                break;
-                
-            case EWlanConnectionExtentedSecurityModeWepOpen:
-            case EWlanConnectionExtentedSecurityModeWepShared:
-                {
-                secmode = EWlanSecModeWep;
-                }
-                break;
-                
-            case EWlanConnectionExtentedSecurityMode802d1x:
-                {
-                secmode = EWlanSecMode802_1x;
-                }
-                break;
-                
-            case EWlanConnectionExtentedSecurityModeWpa:
-            case EWlanConnectionExtentedSecurityModeWpaPsk:
-                {
-                secmode = EWlanSecModeWpa;
-                }
-                break;
-                
-            case EWlanConnectionExtentedSecurityModeWpa2:
-            case EWlanConnectionExtentedSecurityModeWpa2Psk:
-                {
-                secmode = EWlanSecModeWpa2;
-                }
-                break;
-            case EWlanConnectionExtentedSecurityModeWapi:
-            case EWlanConnectionExtentedSecurityModeWapiPsk:
-                {
-                if ( iIsWAPISupported )
-                    {
-                    secmode = EWlanSecModeWAPI;
-                    }
-                else
-                    {
-                    User::Leave( KErrCorrupt );
-                    }
-                }
-                break;
-            default:
-                {
-                User::Leave( KErrNotSupported );
-                }
-            }
-
-        // Let's check the security mode and if it's other than "none", then
-        // ask for the key.
-        HBufC* key = HBufC::NewLC( KWlanMaxKeyLength );    // security key
-        TPtr keyPtr( key->Des() );
-        TBool wepKeyInAsciiFormat;
-        switch( securityMode )
-            {
-            case EWlanConnectionExtentedSecurityModeWepOpen:
-            case EWlanConnectionExtentedSecurityModeWepShared:
-                {
-    	          retval = iConnUiUtils->EasyWepDlg( &keyPtr, wepKeyInAsciiFormat );
-                break;
-                }
-            case EWlanConnectionExtentedSecurityModeWpaPsk:
-            case EWlanConnectionExtentedSecurityModeWpa2Psk:
-                {
-            	  retval = iConnUiUtils->EasyWpaDlg( &keyPtr );
-                break;
-                }
-            case EWlanConnectionExtentedSecurityModeWapiPsk:
-                {
-                retval = iConnUiUtils->EasyWapiDlg( &keyPtr );
-                break;
-                }
-            case EWlanConnectionExtentedSecurityModeOpen:
-            case EWlanConnectionExtentedSecurityMode802d1x:
-            case EWlanConnectionExtentedSecurityModeWpa:
-            case EWlanConnectionExtentedSecurityModeWpa2:
-            case EWlanConnectionExtentedSecurityModeWapi:
-            default:
-                {
-                break;
-                }
-            }
-
-        // If retval is not ETrue here, then most probably the user has
-        // cancelled the password dialog ==> she has cancelled the whole
-        // process.
-        if ( retval )
-            {
-            // We have to convert the 8-bit SSID to 16-bit for CommsDat.
-            HBufC* ssid16 = HBufC::NewLC( ssid.Length() );
-            TPtr ssid16Ptr( ssid16->Des() );
-            ssid16Ptr.Copy( ssid );
-
-            SetStringAttributeL( ECmName, *ssid16 );
-            SetStringAttributeL( EWlanSSID, *ssid16 );
-            // ConvertWLANConnectionStatesL( )converts WLAN connection state 
-            // (TWlanConnectionMode) into EInfra or EAdhoc (TWlanNetMode)
-            SetIntAttributeL( EWlanConnectionMode, 
-                    (TUint32) ConvertWLANConnectionStatesL( connectionMode ) );
-            SetIntAttributeL( EWlanSecurityMode, secmode );
-
-            // Check if the network is hidden
-            TBool hidden( EFalse );
-
-            // These values we already have so we are not interested of
-            // them
-            TWlanNetMode tempNetworkMode;
-            TWlanConnectionExtentedSecurityMode tempSecurityMode;
-
-            TBool tempProtectedSetupSupported;
-
-            TInt retVal( KErrNone );
-
-            CCmWlanCoverageCheck* coverage = new( ELeave )CCmWlanCoverageCheck;
-            CleanupStack::PushL( coverage );
-
-	          // We need to catch leave value of Wlan scanning
-	          TRAPD( err, retVal = coverage->ScanForPromptedSsidL( ssid, ETrue, 
-                   tempNetworkMode, 
-                   tempSecurityMode,
-                   tempProtectedSetupSupported ) );
-            if ( !retVal || err != KErrNone)
-                {
-                TRAPD( err, retVal = coverage->ScanForPromptedSsidL( ssid,
-								     EFalse,
-								     tempNetworkMode, 
-								     tempSecurityMode,
-								     tempProtectedSetupSupported ) );
-                if ( err == KErrNone && retVal )
-                    {
-                    hidden = ETrue;
-                    }
-                else // direct scan is ok, but network could not found with given ssid
-		            {
-                CleanupStack::PopAndDestroy( coverage ); // coverage
-                CleanupStack::PopAndDestroy( ssid16 );
-                CleanupStack::PopAndDestroy( key );
-			
-                TCmCommonUi::ShowNoteL( R_QTN_NETW_QUEST_IAP_INCOMPLETE_DELETE, TCmCommonUi::ECmOkNote );
-                return EFalse;
-		            }
-            }
-
-            CleanupStack::PopAndDestroy( coverage ); // coverage
-            
-            SetBoolAttributeL( EWlanScanSSID, hidden );
-            CLOG_WRITE_1( "Is hidden[%d]", (TInt) hidden );
-
-            // We have to store the security key as well.
-            if ( securityMode == EWlanConnectionExtentedSecurityModeWepOpen )
-                {
-                if ( !iWepSecSettings )
-                    {
-                    iWepSecSettings = CWEPSecuritySettings::NewL();
-                    }
-                iWepSecSettings->SetKeyDataL( 0, *key,
-                                             wepKeyInAsciiFormat );
-                // Note that the key will NOT be persisted at this very
-                // point, but only after SaveL, which will be called
-                // later on.
-                }
-            else if ( securityMode == EWlanConnectionExtentedSecurityModeWpaPsk
-                      || securityMode == EWlanConnectionExtentedSecurityModeWpa2Psk )
-                {
-                if ( !iWpaSecSettings )
-                    {
-                    iWpaSecSettings = CWPASecuritySettings::NewL( ESecurityModeWpa );
-                    }
-                iWpaSecSettings->SetWPAPreSharedKey( *key );
-
-                // Note that the key will NOT be persisted at this very
-                // point, but only after SaveL, which will be called
-                // later on.
-                }
-            else if ( securityMode == EWlanConnectionExtentedSecurityModeWapiPsk )
-                {
-                if ( !iWAPISecSettings )
-                    {
-                    iWAPISecSettings = CWAPISecuritySettings::NewL();
-                    }
-                
-                iWAPISecSettings->SetPreSharedKeyL( CWAPISecuritySettings::EWapiKeyAscii, *key );
-                // Note that the key will NOT be persisted at this very
-                // point, but only after SaveL, which will be called
-                // later on.
-                }
-
-            CLOG_WRITE( "InitializeWithUiL stored everything successfully" );
-
-            CleanupStack::PopAndDestroy( ssid16 );
-            }
-        CleanupStack::PopAndDestroy( key );
-        }
-    else
-        {
-        if ( searchWlanReturn == KErrNotFound )
-            {
-            // no Wlan network found, continuing process...
-            HBufC* ssid16 = HBufC::NewLC( ssid.Length() );
-            TPtr ssid16Ptr( ssid16->Des() );
-            ssid16Ptr.Copy( ssid );
-            // write ssid and go on...
-            SetStringAttributeL( ECmName, *ssid16 );
-            SetStringAttributeL( EWlanSSID, *ssid16 );
-            CleanupStack::PopAndDestroy( ssid16 );
-            retval = ProceedWithManualL( ETrue ); // revert to fully manual...
-            }
-        else
-            {
-            retval = EFalse;
-            }
-        }
-    return retval;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::ManuallyConfigureL
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginWlan::ManuallyConfigureL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::ManuallyConfigureL" );
-    
-    TBool proceed ( EFalse );
-    TBool askNWModeAndSec ( EFalse );
-    
-    // Step 1 - WLAN Network Name query (SSID)
-    // sets: ECmName, EWlanSSID
-    RBuf nwName;
-    nwName.CreateL( KCmWlanNWNameMaxLength );
-    CleanupClosePushL( nwName );
-
-    proceed = ShowNWNameQueryL( nwName );
-    
-    TWlanConnectionExtentedSecurityMode securityMode =
-                                        EWlanConnectionExtentedSecurityModeOpen;
-            
-    TWpaMode wpaMode = EWpaModeUndefined;
-
-    if ( proceed )
-        {
-        TWlanNetMode nwMode( EInfra );
-
-        // Step 2 - SSID scan ( first broadcast, then direct )
-        // sets: EWlanConnectionMode
-        //       EWlanScanSSID
-        //       EWlanSecurityMode
-
-        TWlanSsid ssid;
-        ssid.Copy( nwName );       
-        
-        TBool protectedSetupSupported = EFalse;
-        if ( ScanForWlanNwL( ssid, nwMode, securityMode, protectedSetupSupported ) )
-            {
-            if ( protectedSetupSupported )
-                {
-                TBool wifiret = ProtectedSetupL( ssid );
-                switch ( wifiret )
-                    {
-                    case WiFiProt::EWiFiCancel: //cancel pressed, cancel process
-                        {
-                        CleanupStack::PopAndDestroy( &nwName ); //cleanup and return 
-                        return EFalse;
-                        //break;
-                        }
-                    case WiFiProt::EWiFiOK:
-                        {
-                        CleanupStack::PopAndDestroy( &nwName );//cleanup and return 
-                        //UpdateSecuritySettingsL();
-                        return ETrue;
-                        //break;
-                        }
-                    case WiFiProt::EWifiNoAuto://proceed with normal setup
-                        {
-                        break;
-                        }  
-                    default:
-                        {
-                        User::Leave( KErrNotSupported );
-                        break;
-                        }                                              
-                    }    
-                }
-
-            if ( securityMode == EWlanConnectionExtentedSecurityModeWpaPsk
-                 || securityMode == EWlanConnectionExtentedSecurityModeWpa2Psk )
-                {
-                wpaMode = EWpaModePreSharedKey;
-                }
-            else if ( securityMode == EWlanConnectionExtentedSecurityModeWpa
-                      || securityMode == EWlanConnectionExtentedSecurityMode802d1x
-                      || securityMode == EWlanConnectionExtentedSecurityModeWpa2 )
-                {
-                wpaMode = EWpaModeEap;
-                }
-            }
-        else
-            {
-            askNWModeAndSec = ETrue;
-            }
-        proceed = ProceedWithManualL ( askNWModeAndSec, nwMode, securityMode, wpaMode  );
-        }
-    CleanupStack::PopAndDestroy( &nwName );
-
-    return proceed;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::ProceedWithManualL
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginWlan::ProceedWithManualL( TBool aAskNWModeAndSec,
-                                         TWlanNetMode aNwMode, 
-                                         TWlanConnectionExtentedSecurityMode aSecurityMode,
-                                         TWpaMode aWpaMode )
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::ProceedWithManualL" );
-
-    TInt proceed = ETrue;
-    if ( aAskNWModeAndSec )
-        {
-        // Step 3 - Network Mode
-        // sets: EWlanConnectionMode
-        //       EWlanScanSSID
-        proceed = SelectNWModeL( aNwMode );
-
-        // Step 4 - Network security
-        // sets: EWlanSecurityMode
-        // Open       - finished
-        // WEP        - go to step 5
-        // WPA/802.1x - go to step 6
-        // WAPI       - go to step 9
-        if ( proceed )
-            {
-            proceed = ShowNWSecurityDlgL( aNwMode, aSecurityMode );
-            }
-        }
-        
-    // Security settings - Steps 5-8
-    if ( proceed && aSecurityMode != EWlanConnectionExtentedSecurityModeOpen )
-        {
-        switch ( aSecurityMode )
-            {
-            // Step 5 - Enter WEP key
-            // sets: wep key
-            // finished
-            case EWlanConnectionExtentedSecurityModeWepOpen:
-            case EWlanConnectionExtentedSecurityModeWepShared:
-                {
-                proceed = EnterWEPKeyL();
-                break;
-                }
-            // Step 6 - WPA/WPA2 mode
-            // sets: wpa/802.1x keys
-            // Pre-shared - go to step 7
-            // EAP        - go to step 8
-            case EWlanConnectionExtentedSecurityMode802d1x:
-                TCmCommonUi::ShowNoteL( *( StringLoader::LoadLC( 
-                    R_QTN_NETW_CONSET_INFO_EAP_SETTINGS_DEFAULT ) ),
-                    TCmCommonUi::ECmInfoNote );
-                CleanupStack::PopAndDestroy();
-                break;
-                
-            case EWlanConnectionExtentedSecurityModeWpa:
-            case EWlanConnectionExtentedSecurityModeWpaPsk:
-            case EWlanConnectionExtentedSecurityModeWpa2:
-            case EWlanConnectionExtentedSecurityModeWpa2Psk:
-                {
-                if ( aWpaMode == EWpaModeUndefined )
-                    {
-                    proceed = SelectWpaModeDialogL( aWpaMode );
-                    }
-
-                if ( proceed )
-                    {
-                    // Step 7 - Pre-shared key
-                    // sets: pre-shared key
-                    // finished
-                    if ( aWpaMode == EWpaModePreSharedKey )
-                        {
-                        proceed = EnterWpaPreSharedKeyL();
-                        }
-                    // Step 8 - EAP selection note
-                    else
-                        {
-                        TCmCommonUi::ShowNoteL( *( StringLoader::LoadLC( 
-                            R_QTN_NETW_CONSET_INFO_EAP_SETTINGS_DEFAULT ) ),
-                            TCmCommonUi::ECmInfoNote );
-                        CleanupStack::PopAndDestroy();
-                        }
-                    }
-                break;
-                }
-            // Step 9
-            case EWlanConnectionExtentedSecurityModeWapi:
-            case EWlanConnectionExtentedSecurityModeWapiPsk:
-                {
-                if ( iIsWAPISupported )
-                    {
-                    if ( aSecurityMode == EWlanConnectionExtentedSecurityModeWapiPsk )
-                        {
-                        proceed = EnterWAPIPreSharedKeyL();
-                        }
-                    }
-                else
-                    {
-                    User::Leave( KErrCorrupt );
-                    }
-                break;
-                }
-            default:
-                {
-                User::Leave( KErrNotSupported );
-                break;
-                }
-            }
-        }
-        
-    // Store all the unsaved settings
-  /* if ( proceed )
-        {
-        UpdateSecuritySettingsL();
-        }*/
-    return proceed;
-    }
-    
-// --------------------------------------------------------------------------
-// CCmPluginWlan::ShowNWNameQueryL
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginWlan::ShowNWNameQueryL( TDes& aNwName )
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::ShowNWNameQueryL" );
-    
-    TBool retVal ( EFalse );
-    
-    retVal = TCmCommonUi::ShowConfirmationQueryWithInputL( 
-                                            R_QTN_WLAN_PRMPT_NETWORK_NAME,
-                                            aNwName );
-    if ( retVal )
-        {
-        SetStringAttributeL( ECmName, aNwName );
-        SetStringAttributeL( EWlanSSID, aNwName );
-        
-        retVal = ETrue;
-        }
-    return retVal;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::ScanForWlanNwL
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginWlan::ScanForWlanNwL( 
-#ifdef __WINS__
-                         TWlanSsid& /*aSsid*/, TWlanNetMode& /*aNetworkMode*/,
-                         TWlanConnectionExtentedSecurityMode& /*aSecurityMode*/,
-                         TBool& /*aProtectedSetupSupported*/ )
-#else
-                         TWlanSsid& aSsid, TWlanNetMode& aNetworkMode,
-                         TWlanConnectionExtentedSecurityMode& aSecurityMode,
-                         TBool& aProtectedSetupSupported )
-#endif  // __WINS__
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::ScanForWlanNwL" );
-    
-    TBool retVal ( EFalse );
-
-    DestroyWaitDialog();
-
-    iWaitDialog = new( ELeave )CAknWaitDialog
-                    ( REINTERPRET_CAST( CEikDialog**, &iWaitDialog ), ETrue );
-    iWaitDialog->ExecuteLD( R_SEARCHING_WLAN_WAIT_NOTE ); 
-
-#ifndef __WINS__
-    TBool hidden ( EFalse );
-    
-    CCmWlanCoverageCheck* coverage = new( ELeave )CCmWlanCoverageCheck;
-    CleanupStack::PushL( coverage );
-
-    CLOG_WRITE( "Coverage created, calling ScanForPromptedSsidL, broadcast" );
-    retVal = coverage->ScanForPromptedSsidL( aSsid, ETrue, aNetworkMode, 
-                                             aSecurityMode,
-                                             aProtectedSetupSupported );
-    CLOG_WRITE( "ScanForPromptedSsidL returned" );
-    
-    if ( !retVal )
-        {
-        CLOG_WRITE( "Calling ScanForPromptedSsidL, direct" );
-        retVal = coverage->ScanForPromptedSsidL( aSsid, EFalse, aNetworkMode, 
-                                                 aSecurityMode,
-                                                 aProtectedSetupSupported );
-        CLOG_WRITE( "ScanForPromptedSsidL returned" );
-
-        if ( retVal )
-            {
-            hidden = ETrue;
-            }
-        }
-
-    CleanupStack::PopAndDestroy( coverage );
-
-    if ( retVal )
-        {
-        CLOG_WRITE( "Ssid has been found" );
-
-        // Network mode
-        SetIntAttributeL( EWlanConnectionMode, aNetworkMode );
-        // Security mode
-        SetIntAttributeL( EWlanSecurityMode, 
-                          ConvertConnectionSecurityModeToSecModeL( 
-                          aSecurityMode ) );
-        // Hidden
-        SetBoolAttributeL( EWlanScanSSID, hidden );    
-        }
-    else    
-#else   // __WINS
-  if ( !retVal )  
-#endif  // __WINS
-        {
-        HBufC* stringLabel = StringLoader::LoadLC( 
-                                        R_INFO_NO_NETWORKS_FOUND );
-
-        CAknGlobalNote * note = CAknGlobalNote::NewL();
-        CleanupStack::PushL(note);
-        note->ShowNoteL(EAknGlobalInformationNote, *stringLabel);
-        CleanupStack::PopAndDestroy(note);
-        CleanupStack::PopAndDestroy( stringLabel );        
-        }
-
-
-    DestroyWaitDialog();
-
-    return retVal;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::SelectNWModeL
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginWlan::SelectNWModeL( TWlanNetMode& aNwMode )
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::SelectNWModeL" );
-    
-    TBool retVal ( EFalse );
-    
-    // Title
-    HBufC* title = StringLoader::LoadLC( 
-                        R_QTN_NETW_CONSET_PRMPT_WLAN_NW_MODE_AND_STATUS );
-    TPtr ptrTitle ( title->Des() );
-    
-    // Items
-    CDesCArrayFlat* items = 
-	            new ( ELeave ) CDesCArrayFlat( KCmArrayMediumGranularity );
-    CleanupStack::PushL( items );
-    
-    TInt i = 0;
-    while ( KWlanNetworkModeConvTable[i].iResId != KEndOfArray )
-        {
-        items->AppendL( 
-            *StringLoader::LoadLC( KWlanNetworkModeConvTable[i].iResId ) );
-        CleanupStack::PopAndDestroy(); 
-        i++;
-        }
-        
-    // Show the dialog
-    TInt selection(0);
-    if ( TCmCommonUi::ShowPopupListL( ptrTitle , 
-                                      items,
-                                      NULL,
-                                      R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT,
-                                      selection ) )
-        {
-        // result:        
-        i = 0;
-        
-        aNwMode = 
-            ( TWlanNetMode ) KWlanNetworkModeConvTable[selection].iNwMode;
-        
-        // Network mode
-        SetIntAttributeL( EWlanConnectionMode, aNwMode );
-        
-        // Network status
-        SetBoolAttributeL( EWlanScanSSID, 
-                           KWlanNetworkModeConvTable[selection].iHidden );
-                           
-        retVal = ETrue;
-        }
-                                      
-    CleanupStack::Pop( items );
-    CleanupStack::PopAndDestroy( title );
-    return retVal;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::ShowNWSecurityDlgL
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginWlan::ShowNWSecurityDlgL( TWlanNetMode aNwMode, 
-                                TWlanConnectionExtentedSecurityMode& aSecurityMode )
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::ShowNWSecurityDlgL" );
-
-    TBool retVal ( EFalse );    
-
-    // Collect NW Security Mode items
-	CDesCArrayFlat* items = 
-	            new ( ELeave ) CDesCArrayFlat( KCmArrayMediumGranularity );
-    
-    TInt i = 0;
-    while ( KWlanSecurityModeConvTable[i].iResId != KEndOfArray )
-        {
-        TWlanSecMode secMode = 
-                ( TWlanSecMode ) KWlanSecurityModeConvTable[i].iSecurityMode;
-        
-        if ( ( secMode == EWlanSecModeOpen || secMode == EWlanSecModeWep )
-                || aNwMode == EInfra )
-             {
-            items->AppendL( *StringLoader::LoadLC( 
-                                KWlanSecurityModeConvTable[i].iResId ) );
-            CleanupStack::PopAndDestroy(); 
-            }
-        i++;
-        // don't show WAPI if it's not supported
-        if ( !iIsWAPISupported )
-            {
-            if ( KWlanSecurityModeConvTable[i].iSecurityMode == EWlanSecModeWAPI )
-                {
-                break;
-                }
-            }
-        }
-   
-    // Title
-    HBufC* title = StringLoader::LoadLC( 
-                            R_QTN_NETW_CONSET_PRMPT_WLAN_NW_SECURITY_MODE );
-    TPtr ptrTitle ( title->Des() );
-    
-    TInt selection = 0;
-    
-    // Show the dialog
-    if ( TCmCommonUi::ShowPopupListL( ptrTitle , 
-                                      items,
-                                      NULL,
-                                      R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT,
-                                      selection ) )
-        {
-        // result:
-        aSecurityMode = 
-                ConvertSecModeToConnectionSecurityModeL( ( TWlanSecMode )
-                        KWlanSecurityModeConvTable[selection].iSecurityMode );
-        SetIntAttributeL( EWlanSecurityMode, 
-                        KWlanSecurityModeConvTable[selection].iSecurityMode );
-        retVal = ETrue;
-        }
-    CleanupStack::PopAndDestroy( title );
-    return retVal;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::EnterWEPKeyL
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginWlan::EnterWEPKeyL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::EnterWEPKeyL" );
-    
-    TBool retVal ( EFalse );
-    
-    // Security key
-    HBufC* key = HBufC::NewLC( KWlanMaxKeyLength );
-    TPtr keyPtr( key->Des() );
-    TBool wepKeyInAsciiFormat ( EFalse );
-    
-    if ( !iConnUiUtils )
-        {
-        iConnUiUtils = CConnectionUiUtilities::NewL();
-        }
-    
-    if ( iConnUiUtils->EasyWepDlg( &keyPtr, wepKeyInAsciiFormat ) )
-        {
-        if ( !iWepSecSettings )
-            {
-            iWepSecSettings = CWEPSecuritySettings::NewL();
-            }       
-        iWepSecSettings->SetKeyDataL( 0, 
-                                      *key,
-                                      wepKeyInAsciiFormat );
-        retVal = ETrue;
-        }
-    CleanupStack::PopAndDestroy( key );    
-    return retVal;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::EnterWpaPreSharedKeyL
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginWlan::EnterWpaPreSharedKeyL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::EnterWpaPreSharedKeyL" );
-    
-    TBool retVal ( EFalse );
-    
-    HBufC* key = HBufC::NewLC( KWlanMaxKeyLength );
-    TPtr keyPtr( key->Des() );
-
-    if ( !iConnUiUtils )
-        {
-        iConnUiUtils = CConnectionUiUtilities::NewL();
-        }
-    
-    if ( iConnUiUtils->EasyWpaDlg( &keyPtr ) )
-        {
-        if ( !iWpaSecSettings )
-            {
-            iWpaSecSettings = CWPASecuritySettings::NewL( ESecurityModeWpa );
-            }
-        iWpaSecSettings->SetWPAPreSharedKey( *key );
-        retVal = ETrue;
-        }
-    CleanupStack::PopAndDestroy( key );  
-    return retVal;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::SelectWpaModeDialogL
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginWlan::SelectWpaModeDialogL( TWpaMode& aWpaMode )
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::SelectWpaModeDialogL" );
-    
-    TBool retVal ( EFalse );
-    
-    // Collect NW Security Mode items
-    CDesCArrayFlat* items = 
-	            new ( ELeave ) CDesCArrayFlat( KCmArrayMediumGranularity );
-   
-    // Title
-    HBufC* title = 
-            StringLoader::LoadLC( R_QTN_NETW_CONSET_PRMPT_WLAN_WPA_MODE );
-    TPtr ptrTitle ( title->Des() );
-    
-    TInt selection = 0;
-    
-    // EWpaModeEap
-    items->AppendL( *StringLoader::LoadLC(
-                                    R_QTN_NETW_CONSET_PRMPT_WPA_MODE_EAP ) );
-    CleanupStack::PopAndDestroy(); 
-    
-    // EWpaModePreSharedKey
-    items->AppendL( *StringLoader::LoadLC( 
-                                    R_QTN_NETW_CONSET_PRMPT_WPA_MODE_PSK ) );
-    CleanupStack::PopAndDestroy(); 
-        
-    // Show the dialog    
-    if( TCmCommonUi::ShowPopupListL( ptrTitle, 
-                                     items,
-                                     NULL,
-                                     R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT,
-                                     selection ) )
-        {
-        aWpaMode = ( TWpaMode ) selection;
-        retVal = ETrue;
-        }
-    
-    CleanupStack::PopAndDestroy( title );
-    
-    return retVal;
-    }
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::UpdateSecurityModeL
-// --------------------------------------------------------------------------
-//
-void CCmPluginWlan::UpdateSecurityModeL( )
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::UpdateSecurityModeL" );
-    
-    TUint32 secmode = GetIntAttributeL( EWlanSecurityMode );
-
-    TUint32 wlaniapid = iIapRecord->iService;
-
-    switch ( secmode )
-        {
-        case EWlanSecModeOpen:
-            {
-            break;
-            }
-        case EWlanSecModeWep:
-            {
-            if ( iWepSecSettings )
-                {
-                delete iWepSecSettings;
-                iWepSecSettings = NULL;
-                }
-            iWepSecSettings = CWEPSecuritySettings::NewL();
-            iWepSecSettings->LoadL( wlaniapid, Session() );
-            break;
-            }
-        case EWlanSecMode802_1x:
-            {
-            if ( iWpaSecSettings )
-                {
-                delete iWpaSecSettings;
-                iWpaSecSettings = NULL;
-                }
-            iWpaSecSettings = 
-                CWPASecuritySettings::NewL( ESecurityMode8021x );
-            iWpaSecSettings->LoadL( wlaniapid, Session() );
-            break;
-            }
-        case EWlanSecModeWpa:
-        case EWlanSecModeWpa2:
-            {
-            if ( iWpaSecSettings )
-                {
-                delete iWpaSecSettings;
-                iWpaSecSettings = NULL;
-                }
-            iWpaSecSettings = 
-                  CWPASecuritySettings::NewL( ESecurityModeWpa );
-            iWpaSecSettings->LoadL( wlaniapid, Session() );
-            break;
-            }
-        case EWlanSecModeWAPI:
-            {
-            if ( iIsWAPISupported )
-                {
-                if ( iWAPISecSettings )
-                    {
-                    delete iWAPISecSettings;
-                    iWAPISecSettings = NULL;
-                    }
-                iWAPISecSettings = CWAPISecuritySettings::NewL();
-                if ( iIapRecord->RecordId() )
-                    {
-                    iWAPISecSettings->LoadL( iIapRecord->RecordId(), Session() );
-                    }
-                }
-            else
-                {
-                User::Leave( KErrCorrupt );
-                }
-            break;
-            }
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            break;
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::CopyAdditionalDataL
-// --------------------------------------------------------------------------
-//
-void CCmPluginWlan::CopyAdditionalDataL( CCmPluginBaseEng& aDestInst ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::CopyAdditionalDataL" );
-    
-    STATIC_CAST( CCmPluginWlan*, &aDestInst )->
-                    SetAsCopyOf( iIapRecord->iService );
-    }
-    
-
-// --------------------------------------------------------------------------
-// CCmPluginWlan::SetAsCopyOf
-// --------------------------------------------------------------------------
-//
-void CCmPluginWlan::SetAsCopyOf( TUint32 aBaseIapID )
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::SetAsCopyOf" );
-    
-    iIsCopy = ETrue;
-    
-    iCopiedFromIapId = aBaseIapID;    
-    }
-
-// ---------------------------------------------------------
-// CCmPluginWlan::DeleteSecuritySettingsL
-// ---------------------------------------------------------
-//    
-void CCmPluginWlan::DeleteSecuritySettingsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::DeleteSecuritySettingsL" );
-
-    TUint32 wlaniapid = iIapRecord->iService;
-    
-    // check security mode and existence of sec.settings
-    if (iWlanServiceRecord->RecordId() )
-        {// ha sat least WLAN service record, may start to wonder...
-        // wlan service record will be deleted separatelly!
-        // get current security mode
-        TUint32 secmode = iWlanServiceRecord->iWlanSecMode;
-     
-        switch ( secmode )
-            {     
-            case EWlanSecModeOpen:
-            case EWlanSecModeWep:
-                {
-                // nothing to do here
-                break;
-                }
-            case EWlanSecMode802_1x:
-                {                
-                if ( !iWpaSecSettings )
-                    {
-                    iWpaSecSettings = 
-                        CWPASecuritySettings::NewL( ESecurityMode8021x );
-                    }
-                iWpaSecSettings->DeleteL( wlaniapid );
-                break;
-                }
-            case EWlanSecModeWpa:
-            case EWlanSecModeWpa2:
-                {
-                if ( !iWpaSecSettings )
-                    {
-                    iWpaSecSettings = 
-                        CWPASecuritySettings::NewL( ESecurityModeWpa );
-                    }
-                iWpaSecSettings->DeleteL( wlaniapid );
-                break;
-                }
-            case EWlanSecModeWAPI:
-                if ( iIsWAPISupported )
-                    {
-                    if ( !iWAPISecSettings )
-                        {
-                        iWAPISecSettings = CWAPISecuritySettings::NewL();
-                        }
-                    TUint32 serviceId = iWlanServiceRecord->RecordId();
-                    iWAPISecSettings->DeleteAPSpecificDataL( serviceId );
-                    }
-                else
-                    {
-                    User::Leave( KErrCorrupt );
-                    }
-                break;
-            default:
-                {
-                User::Leave( KErrNotSupported );
-                // do nothing in urel
-                break;
-                }
-            }
-        }
-    // if there is no wlan service record, 
-    // then there can be no security settings, skipping...
-    }
-
-
-// ---------------------------------------------------------
-// CCmPluginWlan::SetDnsIpFromServer
-// ---------------------------------------------------------
-//    
-void CCmPluginWlan::SetDnsIpFromServerL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::SetDnsIpFromServer" );
-    
-    HBufC* ip1 = GetStringAttributeL( EWlanIpNameServer1 );
-    CleanupStack::PushL( ip1 );
-
-    HBufC* ip2 = GetStringAttributeL( EWlanIpNameServer2 );
-    CleanupStack::PushL( ip2 );
-    
-
-    if ( ( ip1->Compare( KDynIpAddress ) == 0 ) &&
-         ( ip2->Compare( KDynIpAddress ) == 0 ) )
-        {
-        SetBoolAttributeL( EWlanIpDNSAddrFromServer, ETrue );
-        }
-    else
-        {
-        SetBoolAttributeL( EWlanIpDNSAddrFromServer, EFalse );
-        }
-    CleanupStack::PopAndDestroy( 2,ip1 );
-    }
-
-
-// ---------------------------------------------------------
-// CCmPluginWlan::SetDns6IpFromServer
-// ---------------------------------------------------------
-//
-void CCmPluginWlan::SetDns6IpFromServerL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::SetDns6IpFromServer" );
-
-    HBufC* ip1 = GetStringAttributeL( EWlanIp6NameServer1 );
-    CleanupStack::PushL( ip1 );
-
-    HBufC* ip2 = GetStringAttributeL( EWlanIp6NameServer2 );
-    CleanupStack::PushL( ip2 );
-
-    if ( ( ip1->Compare( KDynIpv6Address ) == 0 ) &&
-         ( ip2->Compare( KDynIpv6Address ) == 0 ) )
-        {
-        SetBoolAttributeL( EWlanIp6DNSAddrFromServer, ETrue );
-        }
-    else
-        {
-        SetBoolAttributeL( EWlanIp6DNSAddrFromServer, EFalse );
-        }
-    CleanupStack::PopAndDestroy( 2,ip1 );
-    }
-
-
-// ----------------------------------------------------------------------------
-// CCmPluginWlan::CheckNetworkCoverageL()
-// ----------------------------------------------------------------------------
-//        
-TInt CCmPluginWlan::CheckNetworkCoverageL() const
-    {
-    LOGGER_ENTERFN("CCmPluginWlan::CheckNetworkCoverageL");
-    
-    TInt retVal( 0 ); 
-    
-#ifdef __WINS__
-    retVal = 1;
-#else
-    CCmWlanCoverageCheck* coverage = new (ELeave) CCmWlanCoverageCheck;
-    CleanupStack::PushL( coverage );
-
-    CLOG_WRITE( "Coverage created, calling GetCoverageL" );
-    retVal = coverage->GetCoverageL();
-    CLOG_WRITE( "GetCoverageL returned" );
-    
-    CleanupStack::PopAndDestroy( coverage );
-#endif  // __WINS
-    return retVal;
-    }
-
-
-// ----------------------------------------------------------------------------
-// CCmPluginWlan::ConvertConnectionSecurityModeToSecModeL()
-// ----------------------------------------------------------------------------
-//        
-TWlanSecMode CCmPluginWlan::ConvertConnectionSecurityModeToSecModeL(
-                                    TWlanConnectionExtentedSecurityMode aSecurityMode )
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::ConvertConnectionSecurityModeToSecModeL " );
-
-    switch( aSecurityMode )
-        {
-        case EWlanConnectionExtentedSecurityModeOpen:
-            {
-            return EWlanSecModeOpen;
-            }
-        
-        case EWlanConnectionExtentedSecurityModeWepOpen:
-        case EWlanConnectionExtentedSecurityModeWepShared:
-            {
-            return EWlanSecModeWep;
-            }
-        
-        case EWlanConnectionExtentedSecurityMode802d1x:
-            {
-            return EWlanSecMode802_1x;
-            }
-        
-        case EWlanConnectionExtentedSecurityModeWpa:
-        case EWlanConnectionExtentedSecurityModeWpaPsk:
-        case EWlanConnectionExtentedSecurityModeWpa2:
-        case EWlanConnectionExtentedSecurityModeWpa2Psk:
-            {
-            return EWlanSecModeWpa;
-            }
-        case EWlanConnectionExtentedSecurityModeWapi:
-        case EWlanConnectionExtentedSecurityModeWapiPsk:
-            {
-            if ( iIsWAPISupported )
-                {
-                return EWlanSecModeWAPI;
-                }
-            else
-                {
-                User::Leave( KErrCorrupt );
-                }
-            }
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-        }
-
-    return EWlanSecModeOpen;
-    }
-
-
-// ----------------------------------------------------------------------------
-// CCmPluginWlan::ConvertSecModeToConnectionSecurityModeL()
-// ----------------------------------------------------------------------------
-//        
-TWlanConnectionExtentedSecurityMode 
-        CCmPluginWlan::ConvertSecModeToConnectionSecurityModeL(
-                                                        TWlanSecMode aSecMode )
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::ConvertSecModeToConnectionSecurityModeL " );
-
-    switch( aSecMode )
-        {
-        case EWlanSecModeOpen:
-            {
-            return EWlanConnectionExtentedSecurityModeOpen;
-            }
-        
-        case EWlanSecModeWep:
-            {
-            return EWlanConnectionExtentedSecurityModeWepOpen;
-            }
-        
-        case EWlanSecMode802_1x:
-            {
-            return EWlanConnectionExtentedSecurityMode802d1x;
-            }
-        
-        case EWlanSecModeWpa:
-        case EWlanSecModeWpa2:
-            {
-            return EWlanConnectionExtentedSecurityModeWpa;
-            }
-        case EWlanSecModeWAPI:
-            {
-            if ( iIsWAPISupported )
-                {
-                return EWlanConnectionExtentedSecurityModeWapi;
-                }
-            else
-                {
-                User::Leave( KErrCorrupt );
-                }
-            }
-        
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-        }
-
-    return EWlanConnectionExtentedSecurityModeOpen;
-    }
-
-
-// ---------------------------------------------------------
-// CCmPluginWlan::DestroyWaitDialog()
-// ---------------------------------------------------------
-//
-void CCmPluginWlan::DestroyWaitDialog()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::DestroyWaitDialog " );
-
-    delete iWaitDialog;
-    iWaitDialog = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginWlan::SetDaemonNameL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginWlan::SetDaemonNameL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::SetDaemonNameL" );
-
-    // we have to check first that these values has not been 
-    // set(or changed) by any 3rd party sw to ensure that
-    // we don't break their settings
-    HBufC* daemonName = GetStringAttributeL( ECmConfigDaemonManagerName );
-    if ( daemonName )
-        {
-        if ( daemonName->Compare( KDaemonManagerName ) != 0 )
-    	    {
-    	    delete daemonName;
-            return;
-    	    }
-        delete daemonName;
-        }
-       
-    // check if Easy WLAN IAP since it has different config daemon
-    // manager name
-    HBufC* iapName = GetStringAttributeL( ECmName );
-    if ( iapName )
-        {
-        CleanupStack::PushL( iapName );
-        if ( iapName->Compare( KEasyWlanName ) == 0 )
-            {
-            SetStringAttributeL( ECmConfigDaemonManagerName, 
-                                  KHotspotDaemonManagerName );
-            SetStringAttributeL( ECmConfigDaemonName, 
-                                   KConfigDaemonName );
-            CleanupStack::PopAndDestroy( iapName );
-            return;
-            }
-        CleanupStack::PopAndDestroy( iapName );
-        }
-        
-    // use DHCP if we can
-    TBool ipfromSrv = GetBoolAttributeL( ECmIPAddFromServer );
-    if ( ipfromSrv )
-        {
-        SetStringAttributeL( ECmConfigDaemonManagerName, 
-                           KDaemonManagerName );
-        SetStringAttributeL( ECmConfigDaemonName, 
-                           KConfigDaemonName );
-        }
-    else
-        {
-        if ( FeatureSupported( KFeatureIdIPv6 ) )
-            {
-            SetStringAttributeL( ECmConfigDaemonManagerName, 
-                               KDaemonManagerName );
-            SetStringAttributeL( ECmConfigDaemonName, 
-                               KConfigDaemonName );
-            }
-        else
-            {
-            SetStringAttributeL( ECmConfigDaemonManagerName, 
-                               KNullDesC() );
-            SetStringAttributeL( ECmConfigDaemonName, 
-                               KNullDesC() );
-            }
-        }
-    }
-    
-    
-// --------------------------------------------------------------------------
-// CCmPluginWlan::ConvertWLANConnectionStatesL
-// --------------------------------------------------------------------------
-//
-TWlanNetMode CCmPluginWlan::ConvertWLANConnectionStatesL(
-                                    TWlanConnectionMode aConnectionMode )
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::ConvertWLANConnectionStatesL " );
-    
-    switch ( aConnectionMode )
-        {
-        /** Values for possible WLAN connection states. */
-        /** Connection to an infrastructure network is active. */
-        case EWlanConnectionModeInfrastructure:    
-            {
-            return EInfra;
-            }
-        /** Connection to an ad-hoc network is active. */
-        case EWlanConnectionModeAdhoc:
-            {
-            return EAdhoc;
-            }
-        default:
-        	/**
-        	 * The connection mode. This can be either Ad-hoc or infrastructure.
-        	 * TWlanNetMode enum is to be used.
-        	 * ( TUint32 - default: EInfra )
-        	 */
-            {
-            return EInfra;
-            }
-        }
-    }
-  
-// ---------------------------------------------------------------------------
-// CCmPluginWlan::GetAdditionalUids
-// ---------------------------------------------------------------------------
-//
-void CCmPluginWlan::GetAdditionalUids( RArray<TUint32>& aIapIds )
-    {
-    for (TInt i = 0; i<iAdditionalCmsCreated.Count(); i++ )
-        {
-        aIapIds.Append(iAdditionalCmsCreated[i]);
-        }
-    }
-    
-// --------------------------------------------------------------------------
-// CCmPluginWlan::EnterWAPIPreSharedKeyL
-// --------------------------------------------------------------------------
-//
-TBool CCmPluginWlan::EnterWAPIPreSharedKeyL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlan::EnterWAPIPreSharedKeyL" );
-    
-    TBool retVal ( EFalse );
-    
-    HBufC* key = HBufC::NewLC( KWlanMaxKeyLength );
-    TPtr keyPtr( key->Des() );
-
-    if ( !iConnUiUtils )
-        {
-        iConnUiUtils = CConnectionUiUtilities::NewL();
-        }
-    
-    if ( iConnUiUtils->EasyWapiDlg( &keyPtr ) )
-        {
-        if ( !iWAPISecSettings )
-            {
-            iWAPISecSettings = CWAPISecuritySettings::NewL();
-            }
-        iWAPISecSettings->SetPreSharedKeyL( CWAPISecuritySettings::EWapiKeyAscii, *key );
-        retVal = ETrue;
-        }
-    CleanupStack::PopAndDestroy( key );
-    
-    return retVal;
-    }
-
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpluginwlandata.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of WLan network data holder class
-*
-*/
-
-#include <e32std.h>
-#include "cmpluginwlandata.h"
-#include "cmlogger.h"
-
-
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlanData::NewLC
-// --------------------------------------------------------------------------
-//
-CCmPluginWlanData* CCmPluginWlanData::NewLC()
-    {
-    CCmPluginWlanData* self = new( ELeave ) CCmPluginWlanData();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;    
-    }
-    
-    
-
-// --------------------------------------------------------------------------
-// CCmPluginWlanData::~CCmPluginWlanData
-// --------------------------------------------------------------------------
-//
-CCmPluginWlanData::~CCmPluginWlanData()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlanData::~CCmPluginWlanData" );
-    
-    delete iNetworkName;
-    iNetworkName = NULL;
-    CLOG_CLOSE;
-    }
-    
-    
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlanData::CCmPluginWlanData
-// --------------------------------------------------------------------------
-//
-CCmPluginWlanData::CCmPluginWlanData()
-    {
-    CLOG_CREATE;
-    }
-
-
-
-
-// --------------------------------------------------------------------------
-// CCmPluginWlanData::ConstructL
-// --------------------------------------------------------------------------
-//
-void CCmPluginWlanData::ConstructL()
-    {
-    LOGGER_ENTERFN( "CCmPluginWlanData::ConstructL" );
-    
-    iNetworkName = NULL;
-    }
-
-
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpluginwlandataarray.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of WLan network data holder class
-*
-*/
-
-
-// INCLUDE FILES
-
-#include "cmpluginwlandata.h"
-#include "cmpluginwlandataarray.h"
-
-
-// CONSTANTS
-
-LOCAL_D const TInt KGranularity = 4;    ///< Granularity of the list.
-
-// ================= MEMBER FUNCTIONS =======================
-
-// C++ default constructor can NOT contain any code that
-// might leave.
-//
-// ---------------------------------------------------------
-// CCmPluginWlanDataArray::CCmPluginWlanDataArray
-// ---------------------------------------------------------
-//
-CCmPluginWlanDataArray::CCmPluginWlanDataArray()
-: CArrayPtrFlat<CCmPluginWlanData>( KGranularity )
-    {
-    }
-
-// Destructor
-// ---------------------------------------------------------
-// CCmPluginWlanDataArray::~CCmPluginWlanDataArray
-// ---------------------------------------------------------
-//
-CCmPluginWlanDataArray::~CCmPluginWlanDataArray()
-    {
-
-    ResetAndDestroy();
-
-    }
-
-
-//  End of File
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpluginwlanproxy.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of WLan Plugin proxy table
-*
-*/
-
-#include "cmpluginwlan.h"
-#include <e32std.h>
-#include <ecom/implementationproxy.h>
-
-// Exported proxy for instantiation method resolution
-// Define the interface UIDs
-const TImplementationProxy ImplementationTable[] = 
-	{
-	IMPLEMENTATION_PROXY_ENTRY( KUidWlanBearerType, CCmPluginWlan::NewL )
-	};
-
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy( 
-                                                        TInt& aTableCount )
-	{
-	aTableCount = sizeof( ImplementationTable ) / 
-	                                        sizeof( TImplementationProxy );
-
-	return ImplementationTable;
-	}
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpwlanactivewaiter.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-/*
-* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CCmPluginWlanActiveWaiter.
-*
-*/
-
-
-// INCLUDE FILES
-#include "cmpwlanactivewaiter.h"
-
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CCmPluginWlanActiveWaiter* CCmPluginWlanActiveWaiter::NewL()
-// ---------------------------------------------------------
-//
-CCmPluginWlanActiveWaiter* CCmPluginWlanActiveWaiter::NewL( )
-    {
-    CCmPluginWlanActiveWaiter* self = 
-                         new ( ELeave ) CCmPluginWlanActiveWaiter( );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    
-    return self;        
-    }
-
-// ---------------------------------------------------------
-// CCmPluginWlanActiveWaiter::ConstructL()
-// ---------------------------------------------------------
-//
-void CCmPluginWlanActiveWaiter::ConstructL()
-    {     
-    CActiveScheduler::Add( this );            
-    }
-
-
-// ---------------------------------------------------------
-// CCmPluginWlanActiveWaiter::CCmPluginWlanActiveWaiter()
-// ---------------------------------------------------------
-//
-CCmPluginWlanActiveWaiter::CCmPluginWlanActiveWaiter( )
-: CActive( KErrNone )
-    {
-    }
-    
-
-// ---------------------------------------------------------
-// CCmPluginWlanActiveWaiter::~CCmPluginWlanActiveWaiter()
-// ---------------------------------------------------------
-//    
-CCmPluginWlanActiveWaiter::~CCmPluginWlanActiveWaiter()
-    {
-    Cancel();
-    }
-
-
-// ---------------------------------------------------------
-// CCmPluginWlanActiveWaiter::DoCancel()
-// ---------------------------------------------------------
-// 
-void CCmPluginWlanActiveWaiter::DoCancel()
-    {
-    }
-     
- 
-// ---------------------------------------------------------
-// CCmPluginWlanActiveWaiter::RunL()
-// ---------------------------------------------------------
-//     
-void CCmPluginWlanActiveWaiter::RunL()
-    {
-    if ( iWait.IsStarted() )
-        {
-        iWait.AsyncStop();
-        }
-    }
-
-// ---------------------------------------------------------
-// CCmPluginWlanActiveWaiter::WaitForRequest()
-// ---------------------------------------------------------
-// 
-TInt CCmPluginWlanActiveWaiter::WaitForRequest()
-    {
-    SetActive(); 
-    iWait.Start();
-    return iStatus.Int();
-    }    
-// End of File
-
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpwlansettingsdlg.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,958 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Dialog for editing wlan settings for a wlan connection method
-*
-*/
-
-#include <badesca.h>
-#include <cmcommonui.h>
-#include <WEPSecuritySettingsUI.h>
-#include <WPASecuritySettingsUI.h>
-#include <wapisecuritysettingsui.h>
-#include <StringLoader.h>
-#include <akntextsettingpage.h>
-#include <cmwlanui.rsg>
-#include <ConnectionUiUtilities.h>
-#include <csxhelp/cp.hlp.hrh>
-#include <featmgr.h>
-#include "cmlogger.h"
-#include "cmwlancommonconstants.h"
-#include "cmpwlansettingsdlg.h"
-#include "cmpwlansettingsdlgadv.h"
-#include <cmpluginwlandef.h>
-#include "cmpluginwlan.h"
-#include "cmpluginmenucommands.hrh"
-#include <cmcommonconstants.h>
-#include <cmpsettingsconsts.h>
-#include "cmmanagerimpl.h"
-
-using namespace CMManager;
-
-const TUint32 KScanSSIDSelectionItems[] = 
-    {
-    R_QTN_WLAN_SETT_HIDDEN_NETWORK_NO,
-    R_QTN_WLAN_SETT_HIDDEN_NETWORK_YES,
-    0
-    };
-
-const TUint32 KSecModeRBSelectionItems[] = 
-    {
-    R_QTN_WLAN_SETT_SECURITY_MODE_OPEN,
-    R_QTN_WLAN_SETT_SECURITY_MODE_WEP,
-    0
-    };
-
-const TUint32 KSecModeRBIRSelectionItems[] = 
-    {
-    R_QTN_WLAN_SETT_SECURITY_MODE_OPEN,
-    R_QTN_WLAN_SETT_SECURITY_MODE_WEP,
-    R_QTN_WLAN_SETT_SECURITY_MODE_802_1X,
-    R_QTN_WLAN_SETT_SECURITY_MODE_WPA,
-    0
-    };
-
-const TUint32 KSecModeRBIRSelectionItemsWAPI[] = 
-    {
-    R_QTN_WLAN_SETT_SECURITY_MODE_OPEN,
-    R_QTN_WLAN_SETT_SECURITY_MODE_WEP,
-    R_QTN_WLAN_SETT_SECURITY_MODE_802_1X,
-    R_QTN_WLAN_SETT_SECURITY_MODE_WPA,
-    R_QTN_WLAN_SETT_SECURITY_MODE_WAPI,
-    0
-    };
-
-const TUint32 KNetworkRBSelectionItems[] = 
-    {
-    R_QTN_WLAN_SETT_NETWORK_MODE_INFRA,
-    R_QTN_WLAN_SETT_NETWORK_MODE_ADHOC,
-    0
-    };
-
-const TUint32 KNWNameSelectionItems[] = 
-    {
-    R_QTN_WLAN_SETT_NETWORK_NAME_USER_DEFINED,
-    R_QTN_WLAN_SETT_NETWORK_NAME_SCAN,
-    0
-    };
-    
-// ================= MEMBER FUNCTIONS =======================================
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlg::NewL()
-// --------------------------------------------------------------------------
-//
-CmPluginWlanSettingsDlg* CmPluginWlanSettingsDlg::NewL( 
-                                            CCmPluginBaseEng& aCmPluginBase )
-	{
-	CmPluginWlanSettingsDlg* self = 
-	                new (ELeave) CmPluginWlanSettingsDlg( aCmPluginBase );
-	return self;
-	}
-	
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlg::CmPluginWlanSettingsDlg()
-// --------------------------------------------------------------------------
-//
-CmPluginWlanSettingsDlg::CmPluginWlanSettingsDlg(
-                                            CCmPluginBaseEng& aCmPluginBase )
-    : CmPluginBaseSettingsDlg( aCmPluginBase )
-    , iNotifyFromAdv( KCmNotifiedNone )
-    {
-    
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlg::ConstructAndRunLD
-// --------------------------------------------------------------------------
-//
-TInt CmPluginWlanSettingsDlg::ConstructAndRunLD( )
-    {
-    LoadResourceL( KPluginWlanResDirAndFileName );
-    
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    cmMgr.WatcherRegisterL( this );
-    
-    return CmPluginBaseSettingsDlg::ConstructAndRunLD( );
-    }
-
-// ---------------------------------------------------------
-// CmPluginWlanSettingsDlg::~CmPluginWlanSettingsDlg
-// Destructor
-// ---------------------------------------------------------
-//
-CmPluginWlanSettingsDlg::~CmPluginWlanSettingsDlg()
-    {
-    iResourceReader.Close();
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlg::RunAdvancedSettingsL
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlg::RunAdvancedSettingsL()
-    {
-    CmPluginWlanSettingsDlgAdv* AdvDlg = 
-                        CmPluginWlanSettingsDlgAdv::NewL( iCmPluginBaseEng );
-
-    if (!iHasSettingChanged)
-        {
-        iHasSettingChanged = ETrue;
-        }                      
-    
-    // This view may have to un-register as watcher here
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    cmMgr.WatcherUnRegister();
-    
-    AdvDlg->RegisterParentView( this );
-    TInt ret = AdvDlg->ConstructAndRunLD();
-
-    if( iNotifyFromAdv == KCmNotifiedNone )
-        {
-        if( ret == KDialogUserExit )
-            {
-            iExitReason = KDialogUserExit;
-            ExitSettingsL(EFalse);
-            }
-        else
-            {
-            // Re-register as watcher if advanced view comes back or exists normally
-            cmMgr.WatcherRegisterL( this );
-            }
-        }
-    else
-        {
-        HandleCommsDatChangeL();
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginBaseSettingsDlg::UpdateListBoxContentBearerSpecificL
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlg::UpdateListBoxContentBearerSpecificL( 
-                                                    CDesCArray& aItemArray )
-    {
-    TBool boolSettingVal( EFalse ); // just for helping make code readable
-    TInt valResId(0);
-    
-    // DATA BEARER - only for real bearer types
-    AppendSettingTextsL( aItemArray, ECmBearerSettingName );
-    // NETWORK NAME
-    AppendSettingTextsL( aItemArray, EWlanSSID );
-    // NETWORK STATUS
-    boolSettingVal = iCmPluginBaseEng.GetBoolAttributeL( EWlanScanSSID );
-    AppendSettingTextsL( aItemArray,
-                         EWlanScanSSID,
-                         boolSettingVal ? 
-                            R_QTN_WLAN_SETT_HIDDEN_NETWORK_YES :
-                            R_QTN_WLAN_SETT_HIDDEN_NETWORK_NO );
-    // WLAN NETWORK MODE    
-    switch( iCmPluginBaseEng.GetIntAttributeL( EWlanConnectionMode ) )
-        {
-        case EAdhoc:
-            {
-            valResId = R_QTN_WLAN_SETT_NETWORK_MODE_ADHOC;
-            break;
-            }
-        case EInfra:
-            // fall-through intended here
-        default:
-            {
-            valResId = R_QTN_WLAN_SETT_NETWORK_MODE_INFRA;
-            break;
-            }
-        }
-    
-    AppendSettingTextsL( aItemArray, EWlanConnectionMode, valResId );
-    // WLAN SECURITY MODE
-    switch( iCmPluginBaseEng.GetIntAttributeL( EWlanSecurityMode ) )
-        {
-        case EWlanSecModeWep :
-            {
-            valResId = R_QTN_WLAN_SETT_SECURITY_MODE_WEP;
-            break;
-            }
-        case EWlanSecMode802_1x:
-            {
-            valResId = R_QTN_WLAN_SETT_SECURITY_MODE_802_1X;
-            break;
-            }
-        case EWlanSecModeWpa:
-        case EWlanSecModeWpa2:
-            {
-            valResId = R_QTN_WLAN_SETT_SECURITY_MODE_WPA;
-            break;
-            }
-        case EWlanSecModeWAPI:
-            {
-            valResId = R_QTN_WLAN_SETT_SECURITY_MODE_WAPI;
-            break;
-            }
-        case EWlanSecModeOpen:
-            // fall-through intended here
-        default:
-            {
-            valResId = R_QTN_WLAN_SETT_SECURITY_MODE_OPEN;
-            break;
-            }
-        }
-    AppendSettingTextsL( aItemArray, EWlanSecurityMode, valResId );
-    // WLAN SECURITY SETTINGS
-    AppendSettingTextsL( aItemArray,
-                         EWlanSecuritySettings,
-                         R_QTN_WLAN_SETT_SECURITY_SETTINGS,
-                         0 );
-    // HOMEPAGE
-    AppendSettingTextsL( aItemArray, ECmStartPage );
-    }
-
-    
-//---------------------------------------------------------------------------
-// CmPluginWlanSettingsDlg::ChangeBoolSettingL
-//---------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlg::ChangeBoolSettingL( TUint32 aAttribute, 
-                                                  TInt aCommandId )
-    {
-    // Change was selected from menu
-    if ( aCommandId == EPluginBaseCmdChange )
-        {
-        TInt selected = 
-                    iCmPluginBaseEng.GetBoolAttributeL( aAttribute );
-        TInt origVal = selected;
-                    
-        if ( ShowRadioButtonSettingPageL( KScanSSIDSelectionItems, 
-                                          selected,
-                                          R_QTN_WLAN_SETT_HIDDEN_NETWORK ) &&
-             origVal != selected )
-             {
-             iCmPluginBaseEng.SetBoolAttributeL( aAttribute, 
-                                                 selected );
-             UpdateListBoxContentL();
-             }
-        }
-    // Selection key was selected
-    else        
-        {
-        switch ( aAttribute )
-            {
-            case EWlanScanSSID:
-                {        
-                TBool boolFromCM = EFalse;
-                boolFromCM = iCmPluginBaseEng.GetBoolAttributeL( aAttribute );
-                iCmPluginBaseEng.SetBoolAttributeL( aAttribute , !boolFromCM );
-                UpdateListBoxContentL();              
-                break;
-                }
-            case EWlanConnectionMode:
-                {        
-                TInt intFromCM = 0;
-                intFromCM = iCmPluginBaseEng.GetIntAttributeL( aAttribute );
-                iCmPluginBaseEng.SetIntAttributeL( aAttribute , !intFromCM );
-                UpdateListBoxContentL();              
-                break;
-                }
-            }
-        }
-    }
-
-//---------------------------------------------------------------------------
-// CmPluginWlanSettingsDlg::ShowSecurityModeRBPageL
-//---------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlg::ShowSecurityModeRBPageL()
-    {   
-    TInt selected = 0;
-    TInt secMode = iCmPluginBaseEng.GetIntAttributeL( EWlanSecurityMode );
-    const TUint32* items = NULL;
-    
-    //converting secMode to idex
-    switch ( secMode ) 
-        {
-        case EWlanSecModeOpen:
-            {
-            selected = 0;
-            break;
-            }
-        case EWlanSecModeWep:
-            {
-            selected = 1;
-            break;
-            }
-        case EWlanSecMode802_1x:
-            {
-            selected = 2;
-            break;
-            }
-        case EWlanSecModeWpa:
-            {
-            selected = 3;
-            break;
-            }
-        // is this a real case?
-        case EWlanSecModeWpa2:
-            {
-            selected = 3;
-            break;
-            }
-        case EWlanSecModeWAPI:
-            {
-            selected = 4;
-            break;
-            }
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            break;
-            }
-        }
-        
-    if ( iCmPluginBaseEng.GetIntAttributeL( EWlanConnectionMode ) == EInfra )
-        {
-        if ( !FeatureManager::FeatureSupported( KFeatureIdFfWlanWapi ) )
-            {
-            items = KSecModeRBIRSelectionItems;
-            }
-        else
-            {
-            items = KSecModeRBIRSelectionItemsWAPI;
-            }
-        }
-    else
-        {
-        items = KSecModeRBSelectionItems;
-        }
-
-    TInt origVal = selected;
-    if ( ShowRadioButtonSettingPageL( items, 
-                                      selected, 
-                                      R_QTN_WLAN_SETT_SECURITY_MODE ) && 
-                                      origVal != selected )
-        {
-        if ( !iHasSettingChanged )
-            {
-            iHasSettingChanged = ETrue;
-            }
-		
-        switch ( selected )
-            {
-            case 0:
-                {
-                secMode = EWlanSecModeOpen;
-                break;
-                }
-            case 1:
-                {
-                secMode = EWlanSecModeWep;
-                break;
-                }
-            case 2:
-                {
-                secMode = EWlanSecMode802_1x;
-                break;
-                }
-            case 3:
-                {
-                secMode = EWlanSecModeWpa;
-                break;
-                }
-            case 4:
-                {
-                secMode = EWlanSecModeWAPI;
-                break;
-                }
-            default:
-                {
-                User::Leave( KErrNotSupported );
-                break;
-                }
-            }
-        iCmPluginBaseEng.SetIntAttributeL( EWlanSecurityMode , secMode );
-        UpdateListBoxContentL();
-        }
-    }
-
-//---------------------------------------------------------------------------
-// CmPluginWlanSettingsDlg::ShowNetworkModeRBPageL
-//---------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlg:: ShowNetworkModeRBPageL()
-    {   
-    const TUint32* items = KNetworkRBSelectionItems;
-    
-    TInt selected;
-    
-    // convert values to indices for UI
-    TInt netMode = iCmPluginBaseEng.GetIntAttributeL( EWlanConnectionMode );
-    switch ( netMode )
-        {
-        case EAdhoc:
-            {
-            selected = 1;
-            break;
-            }
-        case EInfra:
-            {
-            selected = 0;
-            break;
-            }
-        }
-    
-    TInt origVal = selected;
-    if ( ShowRadioButtonSettingPageL( items, 
-                                      selected,
-                                      R_QTN_WLAN_SETT_NETWORK_MODE ) && 
-         origVal != selected )
-        {
-        // convert indices back to proper values
-        switch ( selected )
-            {
-            case 0:
-                {
-                netMode = EInfra;
-                break;
-                }
-            case 1:
-                {
-                netMode = EAdhoc;
-                TInt secMode = iCmPluginBaseEng.GetIntAttributeL( 
-                                                        EWlanSecurityMode );
-                if( secMode != EWlanSecModeOpen &&
-                    secMode != EWlanSecModeWep )
-                    {
-                    iCmPluginBaseEng.SetIntAttributeL( EWlanSecurityMode,
-                                                       EWlanSecModeOpen );
-                    }
-                break;
-                }
-            default:
-                {
-                User::Leave( KErrNotSupported );
-                break;
-                }
-            }
-        iCmPluginBaseEng.SetIntAttributeL( EWlanConnectionMode , netMode );
-        UpdateListBoxContentL();
-        }    
-    }  
-
-//---------------------------------------------------------------------------
-// CmPluginWlanSettingsDlg::ShowWlanNWNamePageL
-//---------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlg::ShowWlanNWNamePageL()
-    {
-    const TCmAttribConvTable* convItem = 
-                        iCmPluginBaseEng.ConvTableItem( EWlanSSID );
-    
-    const TUint32* items = KNWNameSelectionItems;
-    TInt selected ( EWlanNwNameUserDefined );
-    
-    // Display a radio button page with options: User defined and Scan for Networks
-    if ( ShowRadioButtonSettingPageL( items, 
-                                      selected,
-                                      R_QTN_WLAN_SETT_NETWORK_NAME ) )
-        {
-        if ( selected == EWlanNwNameUserDefined )
-            {
-            HBufC* oldssId = iCmPluginBaseEng.GetStringAttributeL( EWlanSSID );
-            CleanupStack::PushL( oldssId );
-            
-            TBuf<KCmWlanNWNameMaxLength> buf;
-            buf.Copy( *oldssId );
-
-            if ( TCmCommonUi::ShowConfirmationQueryWithInputL(
-                                           R_QTN_WLAN_PRMPT_NETWORK_NAME,
-                                           buf ) )
-                {
-                if( buf.Compare( *oldssId ) )
-                    // SSID is changed
-                    {
-                    iCmPluginBaseEng.SetStringAttributeL( EWlanSSID, buf );
-                    UpdateListBoxContentL();
-                    }
-                }
-            CleanupStack::PopAndDestroy( oldssId );
-            }
-        else
-            {
-            // Let's search for a WLAN network
-            TWlanSsid ssid;
-            TWlanConnectionMode connectionMode;
-            TWlanConnectionSecurityMode securityMode;
-
-            CConnectionUiUtilities* uiUtils = CConnectionUiUtilities::NewL();
-            CleanupStack::PushL( uiUtils );
-
-            if ( uiUtils->SearchWLANNetwork( ssid, connectionMode, securityMode ) )
-                {
-                HBufC* temp = HBufC::NewLC( convItem->iMaxLength );
-                temp->Des().Copy( ssid );
-                iCmPluginBaseEng.SetStringAttributeL( EWlanSSID, *temp );
-                CleanupStack::PopAndDestroy( temp );
-                
-                UpdateListBoxContentL();
-                }                
-            CleanupStack::PopAndDestroy( uiUtils );
-            }
-        }
-    }
-
-//---------------------------------------------------------------------------
-// CmPluginWlanSettingsDlg::ShowPopupSettingPageL
-//---------------------------------------------------------------------------
-//
-TBool CmPluginWlanSettingsDlg::ShowPopupSettingPageL( TUint32 aAttribute, 
-                                                      TInt aCommandId )
-    {    
-    TBool retval = EFalse;
-    switch( aAttribute )
-        {
-        // Boolean settings
-        case EWlanScanSSID:            
-            {
-            ChangeBoolSettingL( aAttribute, aCommandId );
-            break;
-            }
-        // Textual Settings
-        case ECmStartPage:                
-            {
-            ShowPopupTextSettingPageL( aAttribute );
-            break;
-            }
-        case EWlanSecurityMode:            
-            {
-            ShowSecurityModeRBPageL();
-            break;
-            }
-        case EWlanSecuritySettings:
-            {
-            TInt secmode = iCmPluginBaseEng.GetIntAttributeL( EWlanSecurityMode );
-            if(  secmode == EWlanSecModeOpen )
-                {
-                TCmCommonUi::ShowNoteL( R_QTN_WLAN_INFO_NO_SECURITY_SETTINGS, 
-                                        TCmCommonUi::ECmInfoNote);
-                }
-            else
-                {
-                TInt exitValue = 
-                    STATIC_CAST( CCmPluginWlan*, &iCmPluginBaseEng )->
-                           EditSecuritySettingsL( *( CEikonEnv::Static() ) );
-                if ( secmode == EWlanSecModeWep )
-                    { // WEP
-                    if ( exitValue & CWEPSecuritySettings::EExitReq )
-                        {
-                        iSecDialExit = ETrue;
-                        iExitReason = KDialogUserExit;
-                        ExitSettingsL(EFalse);
-                        }                    
-                    }
-                else if ( secmode == EWlanSecModeWAPI )
-                    {
-                    if ( exitValue & CWAPISecuritySettings::EExitReq )
-                        {
-                        iSecDialExit = ETrue;
-                        iExitReason = KDialogUserExit;
-                        ExitSettingsL(EFalse);
-                        }
-                    }
-                else
-                    {// 802.1x, WPA/WPA2
-                    if ( exitValue & CWPASecuritySettings::EExitReq )
-                        {
-                        iSecDialExit = ETrue;
-                        iExitReason = KDialogUserExit;
-                        ExitSettingsL(EFalse);
-                        }
-                    }
-                }
-            break;
-            }
-        case EWlanConnectionMode:
-            {
-            if ( aCommandId == EPluginBaseCmdChange )
-                {
-                ShowNetworkModeRBPageL();
-                }
-            else
-                {
-                TInt netMode = 
-                    iCmPluginBaseEng.GetIntAttributeL( EWlanConnectionMode );
-                // OK has been used: switch the value without opening the setting page
-                if ( netMode == EInfra )
-                    {
-                    netMode = EAdhoc;
-                    TInt secMode = iCmPluginBaseEng.GetIntAttributeL( 
-                                                            EWlanSecurityMode );
-                    if( secMode != EWlanSecModeOpen &&
-                        secMode != EWlanSecModeWep )
-                        {
-                        iCmPluginBaseEng.SetIntAttributeL( EWlanSecurityMode,
-                                                           EWlanSecModeOpen );
-                        }
-                    }
-                else
-                    {
-                    netMode = EInfra;
-                    }
-                iCmPluginBaseEng.SetIntAttributeL( EWlanConnectionMode, netMode );
-                UpdateListBoxContentL();
-                }
-            break;
-            }
-        case EWlanSSID:
-            {
-            ShowWlanNWNamePageL();
-            break;
-            }
-        default:
-            {
-            CmPluginBaseSettingsDlg::ShowPopupSettingPageL( aAttribute, 
-                                                            aCommandId );
-            break;            
-            }
-        }
-    return retval;
-    }
-    
-        
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlg::ExitSettingsL
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlg::ExitSettingsL( TBool aConfirm )
-    {
-     if ( STATIC_CAST( CCmPluginWlan*, &iCmPluginBaseEng )->
-                                            AreSecuritySettingsValidL()  )
-        {
-        if ( iIsPossibleToSaveSetting && iHasSettingChanged )
-            {
-            iCmPluginBaseEng.UpdateL();
-            iHasSettingChanged = EFalse;
-            }
-        TryExitL( iExitReason );
-        }
-     else
-        {
-        HBufC* netwName = iCmPluginBaseEng.GetStringAttributeL( EWlanSSID );
-        TBool noNetwName = ETrue;
-        CleanupStack::PushL( netwName );
-        if ( *netwName != KNullDesC )
-            {
-            noNetwName = EFalse;
-            }
-        CleanupStack::PopAndDestroy( netwName );
-        
-        if ( noNetwName )
-            {
-            if ( aConfirm )
-                {                    
-                if ( TCmCommonUi::ShowConfirmationQueryL( 
-                                    R_QTN_WLAN_QUEST_NW_NAME_NOT_DEFINED ) )
-                    {
-                    iExitReason = KDialogUserDelete;
-                    TryExitL( iExitReason );
-                    }
-                else
-                    {
-                    // Find the index of the EWlanSSID item
-                    for ( TInt i = 0; i < iSettingIndex->Count(); i++ )
-                        {
-                        if ( iSettingIndex->At(i) == EWlanSSID )
-                            {
-                            SelectItem(i);
-                            break;
-                            }
-                        }
-                    }
-                }
-            else
-                {
-                TryExitL( iExitReason );
-                }
-            }
-        else
-            {
-            if ( iCmPluginBaseEng.GetIntAttributeL( EWlanSecurityMode ) == 
-                                                           EWlanSecModeOpen )
-                {
-                if ( iIsPossibleToSaveSetting && iHasSettingChanged)
-                {
-                    iCmPluginBaseEng.UpdateL();
-                    iHasSettingChanged = EFalse;
-                }
-                TryExitL( iExitReason );
-                }
-            else
-                {
-                if ( aConfirm )
-                    {                    
-                    if ( TCmCommonUi::ShowConfirmationQueryL( 
-                            R_QTN_WLAN_QUEST_SECURITY_SETTINGS_EMPTY ) )
-                        {
-                        iExitReason = KDialogUserDeleteConfirmed;
-                        TryExitL( iExitReason );
-                        }
-                     else                    
-                        {
-                        // Show the securitysettings page for WEP, other security mode
-                        // is not supported here(WPA has a default value)...
-                        ShowPopupSettingPageL( EWlanSecuritySettings, EWlanSecModeWep );
-                        }
-                    }
-                else
-                    {
-                    TryExitL( iExitReason );
-                    }
-                }
-            }
-        }
-    }
-
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlg::OkToExitL
-// Good to know : EAknSoftkeyCancel is never called, because
-// EEikDialogFlagNotifyEsc flag is not set in the resource.
-// --------------------------------------------------------------------------
-//
-TBool CmPluginWlanSettingsDlg::OkToExitL( TInt aButtonId )
-    {
-    // Translate the button presses into commands for the appui & current
-    // view to handle
-    TBool retval( EFalse );
-    
-    switch ( aButtonId )
-        {
-        case EAknSoftkeyOk:
-        case EAknSoftkeyChange:
-            {
-            ProcessCommandL( aButtonId );
-            break;
-            }        
-        case EAknSoftkeyBack:
-            {
-            ProcessCommandL( aButtonId );
-            break;
-            }
-        case EAknSoftkeyOptions:
-            {
-            DisplayMenuL();
-            break;
-            }
-        case KDialogUserExit:
-            {
-            if ( iSecDialExit )
-                {
-                iSecDialExit = EFalse;
-                }
-            retval=ETrue;
-            break;
-            }
-        default:
-            {
-            retval = ETrue;
-            break;
-            }
-        }
-
-    return retval;
-    }
-
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlg::ProcessCommandL
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlg::ProcessCommandL( TInt aCommandId )
-    {
-    if ( MenuShowing() )
-        {
-        HideMenu();
-        }
-
-    switch ( aCommandId )
-        {
-        case EPluginBaseCmdExit:
-            {
-            iExitReason = KDialogUserExit;
-            }            
-        case EAknSoftkeyBack:
-            {
-            CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-            cmMgr.WatcherUnRegister();
-            
-            ExitSettingsL(ETrue);
-            break;
-            }           
-        case EPluginBaseCmdAdvanced:
-            {
-            RunAdvancedSettingsL();
-            break;
-            }
-        case EPluginBaseCmdChange:
-        case EAknSoftkeyOk:
-            {
-            TUint32 attrib = iSettingIndex->At( iListbox->CurrentItemIndex() );
-            ShowPopupSettingPageL( attrib, aCommandId );
-            break;
-            }
-        default:
-            {
-            CmPluginBaseSettingsDlg::ProcessCommandL( aCommandId );
-            break;            
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlg::GetHelpContext
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlg::GetHelpContext( TCoeHelpContext& aContext ) const
-    {
-    LOGGER_ENTERFN( "CmPluginWlanSettingsDlg::GetHelpContext" );	
-    aContext.iMajor = KHelpUidPlugin;
-    aContext.iContext = KSET_HLP_AP_SETTING_WLAN;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlg::CommsDatChangesL
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlg::CommsDatChangesL()
-    {
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    CCmDestinationImpl* parentDest = iCmPluginBaseEng.ParentDestination();
-
-    if ( parentDest )
-        {
-        if( !cmMgr.DestinationStillExistedL( parentDest ) )
-            {
-            cmMgr.WatcherUnRegister();
-            // If parent destination is deleted by somebody then the dialog must exit back to main view
-            iExitReason = KDialogUserExit;
-            TryExitL( iExitReason );
-            
-            cmMgr.RemoveDestFromPool( parentDest );
-            delete parentDest;
-            return;
-            }
-        
-        if( !cmMgr.IsIapStillInDestL( parentDest, iCmPluginBaseEng ) )
-            {
-            cmMgr.WatcherUnRegister();
-            // In this case, the dialog can go back to the parent view
-            TryExitL( iExitReason );
-            
-            cmMgr.RemoveDestFromPool( parentDest );
-            delete parentDest;
-            return;            
-            }
-
-        // We may have to go back to parent view even though this Iap is still in CommsDat
-        // for cmMgr ( = iCmPluginBaseEng.CmMgr() ) can not be accessed any more
-        // after this call when some Iap is deleted.
-        cmMgr.WatcherUnRegister();
-        TryExitL( iExitReason );
-                
-        cmMgr.RemoveDestFromPool( parentDest );
-        delete parentDest;
-        }
-    else
-        {
-        if( !cmMgr.IapStillExistedL( iCmPluginBaseEng ) )
-            {
-            cmMgr.WatcherUnRegister();
-            // In this case, the dialog can go back to the parent view
-            TryExitL( iExitReason );
-            return;
-            }
-            
-        // We may have to go back to parent view even though this Iap is still in CommsDat
-        // for cmMgr ( = iCmPluginBaseEng.CmMgr() ) can not be accessed any more
-        // after this call when some Iap is deleted.
-        cmMgr.WatcherUnRegister();
-        TryExitL( iExitReason );
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlg::NotifyParentView
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlg::NotifyParentView( TInt aValue )
-    {
-    iNotifyFromAdv = aValue;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlg::HandleCommsDatChangeL
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlg::HandleCommsDatChangeL()
-    {
-    //CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    
-    if( iNotifyFromAdv == KCmNotifiedIapIsNotInThisDestination || 
-            iNotifyFromAdv == KCmNotifiedIapDisappear )
-        {
-        TryExitL( iExitReason );
-        }
-    else if( iNotifyFromAdv == KCmNotifiedDestinationDisappear )
-        {
-        iExitReason = KDialogUserExit;
-        TryExitL( iExitReason );
-        }
-    }
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpwlansettingsdlgadv.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,632 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Dialog for setting WLAN plugin advanced settings
-*
-*/
-
-#include <StringLoader.h>
-#include <akntextsettingpage.h>
-#include <aknmfnesettingpage.h> // for IP dialog
-#include <cmcommonui.h>
-#include <cmwlanui.rsg>
-#include <AknQueryDialog.h>
-#include <cmpluginbaseeng.h>
-#include <cmmanager.rsg>
-#include <csxhelp/cp.hlp.hrh>
-
-#include "cmpluginwlan.h"
-#include <cmpluginwlandef.h>
-#include "cmpwlansettingsdlgadv.h"
-#include "cmpwlansettingsdlgipv4.h"
-#include "cmpwlansettingsdlgipv6.h"
-#include "cmwlancommonconstants.h"
-#include <cmpbasesettingsdlg.h>
-#include "cmpluginmenucommands.hrh"
-#include <cmcommonconstants.h>
-#include <cmpsettingsconsts.h>
-#include "cmmanagerimpl.h"
-
-using namespace CMManager;
-
-const TUint32 KAdhocChannelSelectionItems[] = 
-    {
-    R_QTN_WLAN_SETT_ADHOC_CHANNEL_AUTOMATIC,
-    R_QTN_WLAN_SETT_ADHOC_CHANNEL_USER_DEFINED,
-    0
-    };
-
-// ================= MEMBER FUNCTIONS =========================================
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgAdv::NewL()
-// Two-phase dconstructor, second phase is ConstructAndRunLD
-// --------------------------------------------------------------------------
-//
-CmPluginWlanSettingsDlgAdv* CmPluginWlanSettingsDlgAdv::NewL( 
-                                            CCmPluginBaseEng& aCmPluginBase )
-	{
-	CmPluginWlanSettingsDlgAdv* self = 
-	                new (ELeave) CmPluginWlanSettingsDlgAdv( aCmPluginBase );
-	return self;
-	}
-	
-	
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgAdv::ConstructAndRunLD
-// Constructs the dialog and runs it.
-// --------------------------------------------------------------------------
-//
-TInt CmPluginWlanSettingsDlgAdv::ConstructAndRunLD( )
-    {
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    cmMgr.WatcherRegisterL( this );
-    
-    return CmPluginBaseSettingsDlgAdv::ConstructAndRunLD();
-    }
-    	
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgAdv::CmPluginWlanSettingsDlgAdv()
-// --------------------------------------------------------------------------
-//
-CmPluginWlanSettingsDlgAdv::CmPluginWlanSettingsDlgAdv( 
-                                        CCmPluginBaseEng& aCmPluginBase ) :
-    CmPluginBaseSettingsDlgAdv( aCmPluginBase ),
-    iIpv6Supported( aCmPluginBase.FeatureSupported( KFeatureIdIPv6 ) ),
-    iParent( NULL )
-    {
-    iHelpContext = KSET_HLP_AP_SETTING_WLAN_AS;
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgAdv::~CmPluginWlanSettingsDlgAdv
-// Destructor
-// --------------------------------------------------------------------------
-//
-CmPluginWlanSettingsDlgAdv::~CmPluginWlanSettingsDlgAdv()
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgAdv::UpdateListBoxContentBearerSpecificL
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlgAdv::UpdateListBoxContentBearerSpecificL( 
-                                                    CDesCArray& aItemArray )
-    {
-    if ( iIpv6Supported )
-        {
-        // IPV4 SETTINGS
-        AppendSettingTextsL( aItemArray,
-                             ESettingPageCmdIpv4,
-                             R_QTN_SET_IPV4_SETTINGS,
-                             0 );
-        // IPV6 SETTINGS
-        AppendSettingTextsL( aItemArray,
-                             ESettingPageCmdIpv6,
-                             R_QTN_SET_IPV6_SETTINGS,
-                             0 );
-        }
-    else
-        {
-        // PHONE IP ADDRESS
-        AppendSettingTextsL( aItemArray, EWlanIpAddr );
-        HBufC* ipAddr = iCmPluginBaseEng.GetStringAttributeL( EWlanIpAddr );
-        TBool isUnspec = IsUnspecifiedIPv4Address( *ipAddr );
-        delete ipAddr; ipAddr = NULL;
-
-        if ( !isUnspec )
-            {
-            // SUBNET MASK
-            AppendSettingTextsL( aItemArray, EWlanIpNetMask );
-            // DEFAULT GATEWAY
-            AppendSettingTextsL( aItemArray, EWlanIpGateway );
-            }
-                
-        // PRIMARY NAME SERVER
-        AppendSettingTextsL( aItemArray, EWlanIpNameServer1 );
-        // SECONDARY NAME SERVER
-        AppendSettingTextsL( aItemArray, EWlanIpNameServer2 );
-        }
-    
-    // AD-HOC CHANNEL
-    if ( iCmPluginBaseEng.GetIntAttributeL( EWlanConnectionMode ) == EAdhoc )
-        {
-        AppendSettingTextsL( aItemArray, EWlanChannelID );
-        }
-    
-    // PROXY SERVER ADDRESS
-    AppendSettingTextsL( aItemArray, ECmProxyServerName );            
-    // PROXY PORT NUMBER
-    AppendSettingTextsL( aItemArray, ECmProxyPortNumber );
-/*    
-    TInt valResId(0);
-    // Allow SSID Roaming?
-
-    TBool res = iCmPluginBaseEng.GetBoolAttributeL( EWlanAllowSSIDRoaming );
-    if ( res )
-        {
-        valResId = R_QTN_WLAN_SETT_SSID_ROAMING_ENABLED;
-        }
-    else
-        {
-        valResId = R_QTN_WLAN_SETT_SSID_ROAMING_DISABLED;
-        }    
-        
-    AppendSettingTextsL( aItemArray, EWlanAllowSSIDRoaming, valResId  );
-*/    
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgAdv::ShowPopupSettingPageL
-// --------------------------------------------------------------------------
-//
-TBool CmPluginWlanSettingsDlgAdv::ShowPopupSettingPageL( TUint32 aAttribute,
-                                                         TInt aCommandId )
-    {    
-    TBool retval = EFalse;
-    switch ( aAttribute )
-        {
-        case EWlanIpAddr:
-        case EWlanIpNetMask:
-        case EWlanIpGateway:
-        case EWlanIpNameServer1:
-        case EWlanIpNameServer2:        
-            {
-            ShowPopupIpSettingPageL( aAttribute );
-            break;
-            }        
-        case ESettingPageCmdIpv4:                
-            {
-            ShowIpv4SettingPageL();
-            break;
-            }
-        case ESettingPageCmdIpv6:                
-            {
-            ShowIpv6SettingPageL();
-            break;
-            }
-        case ECmProxyServerName:                
-            {
-            retval = ShowPopupTextSettingPageL( aAttribute );
-            break;
-            }
-        case ECmProxyPortNumber:                
-            {
-            retval = ShowPopupPortNumSettingPageL( aAttribute );
-            break;
-            }
-        case EWlanChannelID: // may not be correct
-            {
-            retval = ShowAdhocChannelSettingPageL();
-            break;
-            }
-        case EWlanAllowSSIDRoaming:
-            {
-//            retval = ShowAdhocChannelSettingPageL();
-            break;            
-            }
-        default:
-            {
-            CmPluginBaseSettingsDlgAdv::ShowPopupSettingPageL( aAttribute, aCommandId );
-            break;            
-            }
-        }
-    return retval;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgAdv::ShowIpv4SettingPageL
-// --------------------------------------------------------------------------
-//
-TBool CmPluginWlanSettingsDlgAdv::ShowIpv4SettingPageL()
-    {
-    TInt retVal( EFalse );
-    CmPluginWlanSettingsDlgIpv4* ipv4Dlg = 
-                    CmPluginWlanSettingsDlgIpv4::NewL( iCmPluginBaseEng );
-
-    // This view may have to un-register as watcher here
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    cmMgr.WatcherUnRegister();
-    
-    ipv4Dlg->RegisterParentView( this );
-    TInt ret = ipv4Dlg->ConstructAndRunLD();
-    
-    if( iNotifyFromIp == KCmNotifiedNone )
-        {
-        if ( ret == KDialogUserExit )
-            {
-            retVal = ETrue;
-            TryExitL( KDialogUserExit );
-            }
-        else
-            {
-            // Re-register as watcher if advanced view comes back or exists normally
-            cmMgr.WatcherRegisterL( this );
-            }
-        }
-    else
-        {
-        HandleCommsDatChangeL();
-        }
-    
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgAdv::ShowIpv6SettingPageL
-// --------------------------------------------------------------------------
-//    
-TBool CmPluginWlanSettingsDlgAdv::ShowIpv6SettingPageL()
-    {
-    TInt retVal( EFalse );
-    CmPluginWlanSettingsDlgIpv6* ipv6Dlg = 
-                    CmPluginWlanSettingsDlgIpv6::NewL( iCmPluginBaseEng );
-
-    // This view may have to un-register as watcher here
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    cmMgr.WatcherUnRegister();
- 
-    ipv6Dlg->RegisterParentView( this );
-    TInt ret = ipv6Dlg->ConstructAndRunLD();
- 
-    if( iNotifyFromIp == KCmNotifiedNone )
-        {
-        if ( ret == KDialogUserExit )
-            {
-            retVal = ETrue;
-            TryExitL( KDialogUserExit );
-            }
-        else
-            {
-            // Re-register as watcher if advanced view comes back or exists normally
-            cmMgr.WatcherRegisterL( this );
-            }
-        }
-    else
-        {
-        HandleCommsDatChangeL();
-        }
-    
-    return retVal;
-    }
-
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgAdv::ShowAdhocChannelSettingPageL
-// --------------------------------------------------------------------------
-//    
-TBool CmPluginWlanSettingsDlgAdv::ShowAdhocChannelSettingPageL()
-    {
-    TInt retVal( EFalse );
-    const TCmAttribConvTable* convItem = 
-                        iCmPluginBaseEng.ConvTableItem( EWlanChannelID );
-    const TUint32* items = KAdhocChannelSelectionItems;
-    TInt value = iCmPluginBaseEng.GetIntAttributeL( EWlanChannelID );
-    
-    TInt selected = value ? EAdhocUserDefined : EAdhocAutomatic;
-        
-    // Show the dialog  
-    if ( ShowRadioButtonSettingPageL( items, 
-                                      selected,
-                                      R_QTN_WLAN_SETT_ADHOC_CHANNEL ) )
-        {
-        // 'User defined' selected
-        if ( selected == EAdhocUserDefined )
-            {
-            // if EWlanChannelID doesn't have a valid number, use the defaul
-            if ( value < KCmAdhocChannelMinValue || value > KCmAdhocChannelMaxValue )
-                {
-                value = KCmAdhocChannelDefaultValue;
-                }
-            
-            TBool loop ( ETrue );
-            
-            do
-                {
-                HBufC* buf = HBufC::NewLC( convItem->iMaxLength );
-                TPtr ptr ( buf->Des() );
-                ptr.AppendNum( value );
-                
-                // Display a numeric query dialog
-                CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL( ptr );
-                
-                dlg->PrepareLC( R_NUMERIC_QUERY );
-                dlg->SetMaxLength( convItem->iMaxLength );
-                dlg->SetDefaultInputMode( EAknEditorNumericInputMode );
-                dlg->MakeLeftSoftkeyVisible( EFalse );
-                
-                HBufC* prompt = StringLoader::LoadLC( 
-                                                R_QTN_WLAN_PRMPT_ADHOC_CHANNEL );
-                dlg->SetPromptL( *prompt );
-                CleanupStack::PopAndDestroy( prompt );
-                
-                // Show the popup
-                if ( dlg->RunLD() )
-                    {
-                    TLex lex ( ptr );
-                    lex.Val( value );
-                    
-                    // Check valid limits
-                    if ( value >= KCmAdhocChannelMinValue && 
-                         value <= KCmAdhocChannelMaxValue )
-                        {
-                        // set result                
-                        iCmPluginBaseEng.SetIntAttributeL( EWlanChannelID, value );
-                        loop = EFalse;
-                        UpdateListBoxContentL();
-                        retVal = ETrue;
-                        }
-                    else
-                        {
-                        value = value <  KCmAdhocChannelMinValue ? 
-                                         KCmAdhocChannelMinValue : 
-                                         KCmAdhocChannelMaxValue;
-                        }
-                    }
-                else
-                    {
-                    loop = EFalse;
-                    }
-                CleanupStack::PopAndDestroy( buf );
-                } while ( loop );
-            }
-        else
-            {
-            iCmPluginBaseEng.SetIntAttributeL( EWlanChannelID, EAdhocAutomatic );
-            UpdateListBoxContentL();
-            retVal = ETrue;
-            }        
-        }
-        
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgAdv::ProcessCommandL
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlgAdv:: ProcessCommandL( TInt aCommandId )
-    {
-    if ( MenuShowing() )
-        {
-        HideMenu();
-        }
-
-    switch ( aCommandId )
-        {
-        case EPluginBaseCmdExit:
-            {
-            iExitReason = KDialogUserExit;
-            }            
-        case EAknSoftkeyBack:
-            {
-            CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-            cmMgr.WatcherUnRegister();
-            
-            HBufC* ipAddr = iCmPluginBaseEng.GetStringAttributeL( EWlanIpAddr );
-            TBool isUnspec = IsUnspecifiedIPv4Address( *ipAddr );
-            delete ipAddr; ipAddr = NULL;
-            
-            if ( !isUnspec )
-                {
-                ipAddr = iCmPluginBaseEng.GetStringAttributeL( EWlanIpNetMask );
-                TBool isUnspec1 = IsUnspecifiedIPv4Address( *ipAddr );
-                delete ipAddr;
-                ipAddr = iCmPluginBaseEng.GetStringAttributeL( EWlanIpGateway );
-                TBool isUnspec2 = IsUnspecifiedIPv4Address( *ipAddr );
-                delete ipAddr;
-                
-                if ( isUnspec1 || isUnspec2 )
-                    {
-                    if ( TCmCommonUi::ShowConfirmationQueryL(
-                            R_QTN_NETW_QUEST_IAP_INCOMPLETE_DELETE ) )
-                        {
-                        iCmPluginBaseEng.RestoreAttributeL( EWlanIpAddr );
-                        iCmPluginBaseEng.RestoreAttributeL( EWlanIpNetMask );
-                        iCmPluginBaseEng.RestoreAttributeL( EWlanIpGateway );
-                        iCmPluginBaseEng.RestoreAttributeL( EWlanIpDNSAddrFromServer );
-                        TryExitL( iExitReason );
-                        }
-                    }
-                 else
-                    {
-                    TryExitL( iExitReason );
-                    }
-                }
-            else
-                {
-                TryExitL( iExitReason );
-                }
-            break;
-            }  
-        case EAknSoftkeyOk:                    
-        case EPluginBaseCmdChange:
-            {
-            ShowPopupSettingPageL( 
-                        iSettingIndex->At( iListbox->CurrentItemIndex() ),
-                        aCommandId );
-            break;
-            }
-        default:
-            {
-            CmPluginBaseSettingsDlgAdv::ProcessCommandL( aCommandId );
-            break;            
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgAdv::OkToExitL
-// Good to know : EAknSoftkeyCancel is never called, because
-// EEikDialogFlagNotifyEsc flag is not set in the resource.
-// --------------------------------------------------------------------------
-//
-TBool CmPluginWlanSettingsDlgAdv::OkToExitL( TInt aButtonId )
-    {
-    // Translate the button presses into commands for the appui & current
-    // view to handle
-    TBool retval( EFalse );
-    
-    switch ( aButtonId )
-        {
-        case EAknSoftkeyOk:
-        case EAknSoftkeyChange:
-            {
-            ProcessCommandL( aButtonId );
-            break;
-            }        
-        case EAknSoftkeyBack:
-            {
-            ProcessCommandL( aButtonId );
-            break;
-            }
-        case EAknSoftkeyOptions:
-            {
-            DisplayMenuL();
-            break;
-            }
-        default:
-            {
-            retval = ETrue;
-            break;
-            }
-        }
-
-    return retval;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgAdv::RegisterParentView
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlgAdv::RegisterParentView( CCmParentViewNotifier* aParent )
-    {
-    iParent = aParent;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgAdv::CommsDatChangesL
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlgAdv::CommsDatChangesL()
-    {
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    CCmDestinationImpl* parentDest = iCmPluginBaseEng.ParentDestination();
-
-    if ( parentDest )
-        {
-        if( !cmMgr.DestinationStillExistedL( parentDest ) )
-            {
-            if( iParent )
-                {
-                iParent->NotifyParentView( KCmNotifiedDestinationDisappear );
-                }
-            
-            cmMgr.WatcherUnRegister();
-            // If parent destination is deleted by somebody then the dialog must exit back to main view
-            iExitReason = KDialogUserExit;
-            TryExitL( iExitReason );
-            
-            cmMgr.RemoveDestFromPool( parentDest );
-            delete parentDest;
-            return;
-            }
-        
-        if( !cmMgr.IsIapStillInDestL( parentDest, iCmPluginBaseEng ) )
-            {
-            if( iParent )
-                {
-                iParent->NotifyParentView( KCmNotifiedIapIsNotInThisDestination );
-                }
-            
-            cmMgr.WatcherUnRegister();
-            // In this case, the dialog can go back to the parent view
-            TryExitL( iExitReason );
-            
-            cmMgr.RemoveDestFromPool( parentDest );
-            delete parentDest;
-            return;            
-            }
-        
-        // We may have to notify parent view to go back to its parent view even though this is still in CommsDat
-        // for cmMgr ( = iCmPluginBaseEng.CmMgr() ) can not be accessed any more
-        // after this call when some Iap is deleted.
-        if( iParent )
-            {
-            iParent->NotifyParentView( KCmNotifiedIapDisappear );
-            }
-        cmMgr.WatcherUnRegister();
-        TryExitL( iExitReason );
-        
-        cmMgr.RemoveDestFromPool( parentDest );
-        delete parentDest;
-        }
-    else
-        {
-        if( !cmMgr.IapStillExistedL( iCmPluginBaseEng ) )
-            {
-            if( iParent )
-                {
-                iParent->NotifyParentView( KCmNotifiedIapDisappear );
-                }
-            
-            cmMgr.WatcherUnRegister();
-            // In this case, the dialog can go back to the parent view
-            TryExitL( iExitReason );
-            return;
-            }
-        
-        // We may have to notify parent view to go back to its parent view even though this is still in CommsDat
-        // for cmMgr ( = iCmPluginBaseEng.CmMgr() ) can not be accessed any more
-        // after this call when some Iap is deleted.
-        if( iParent )
-            {
-            iParent->NotifyParentView( KCmNotifiedIapDisappear );
-            }
-        cmMgr.WatcherUnRegister();
-        TryExitL( iExitReason );
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgAdv::NotifyParentView
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlgAdv::NotifyParentView( TInt aValue )
-    {
-    iNotifyFromIp = aValue;
-    
-    if( iParent )
-        {
-        iParent->NotifyParentView( aValue );
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgAdv::HandleCommsDatChangeL
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlgAdv::HandleCommsDatChangeL()
-    {    
-    if( iNotifyFromIp == KCmNotifiedIapIsNotInThisDestination || 
-            iNotifyFromIp == KCmNotifiedIapDisappear )
-        {
-        TryExitL( iExitReason );
-        }
-    else if( iNotifyFromIp == KCmNotifiedDestinationDisappear )
-        {
-        iExitReason = KDialogUserExit;
-        TryExitL( iExitReason );
-        }
-    }
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpwlansettingsdlgipv4.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,394 +0,0 @@
-/*
-* Copyright (c) 2006 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:  WLAN Ipv4 settings dialog
-*
-*/
-
-#include <StringLoader.h>
-#include <akntitle.h>
-#include <akntextsettingpage.h>
-#include <aknmfnesettingpage.h>  // for IP dialog
-#include <cmcommonui.h>
-#include <cmwlanui.rsg>
-#include <cmmanager.rsg>
-#include <csxhelp/cp.hlp.hrh>
-
-#include <cmpluginbaseeng.h>
-#include <cmpluginwlandef.h>
-#include "cmpwlansettingsdlgipv4.h"
-#include "cmwlancommonconstants.h"
-#include "cmpluginmenucommands.hrh"
-#include "cmpluginmultilinedialog.h"
-#include <cmcommonconstants.h>
-#include <cmpsettingsconsts.h>
-#include "cmmanagerimpl.h"
-
-using namespace CMManager;
-
-// ================= MEMBER FUNCTIONS =========================================
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv4::NewL
-// Two-phase dconstructor, second phase is ConstructAndRunLD
-// --------------------------------------------------------------------------
-//
-CmPluginWlanSettingsDlgIpv4* CmPluginWlanSettingsDlgIpv4::NewL(
-                                            CCmPluginBaseEng& aCmPluginBase )
-	{
-	CmPluginWlanSettingsDlgIpv4* self = 
-	            new ( ELeave ) CmPluginWlanSettingsDlgIpv4( aCmPluginBase );
-	return self;
-	}
-	
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv4::CmPluginWlanSettingsDlgIpv4
-// --------------------------------------------------------------------------
-//
-CmPluginWlanSettingsDlgIpv4::CmPluginWlanSettingsDlgIpv4( 
-                                        CCmPluginBaseEng& aCmPluginBase ) :
-    CmPluginBaseSettingsDlgIp( aCmPluginBase ) ,
-    iParent( NULL )
-    {
-    iHelpContext = KSET_HLP_AP_WLAN_AS_IPV4;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv4::ConstructAndRunLD
-// --------------------------------------------------------------------------
-//
-TInt CmPluginWlanSettingsDlgIpv4::ConstructAndRunLD()
-    {
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    cmMgr.WatcherRegisterL( this );
-    
-    return CmPluginBaseSettingsDlgIp::ConstructAndRunLD();
-    }
-    
-// ---------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv4::~CmPluginWlanSettingsDlgIpv4
-// Destructor
-// ---------------------------------------------------------
-//
-CmPluginWlanSettingsDlgIpv4::~CmPluginWlanSettingsDlgIpv4()
-    {
-    }
-
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv4::UpdateListBoxContentBearerSpecificL
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlgIpv4::UpdateListBoxContentBearerSpecificL( 
-                                                    CDesCArray& aItemArray )
-    {
-    // PHONE IP ADDRESS
-    AppendSettingTextsL( aItemArray, EWlanIpAddr );
-    HBufC* ipAddr = iCmPluginBaseEng.GetStringAttributeL( EWlanIpAddr );
-    TBool isUnspec = IsUnspecifiedIPv4Address( *ipAddr );
-    delete ipAddr; ipAddr = NULL;
-    
-    if ( !isUnspec )
-        {
-        // SUBNET MASK
-        AppendSettingTextsL( aItemArray, EWlanIpNetMask );
-        // DEFAULT GATEWAY
-        AppendSettingTextsL( aItemArray, EWlanIpGateway );
-        }
-
-    // DNS SERVERS IP ADDRESS
-    TBool boolValue = iCmPluginBaseEng.GetBoolAttributeL( 
-                                                EWlanIpDNSAddrFromServer );
-    AppendSettingTextsL( aItemArray,
-                         EWlanIpDNSAddrFromServer,
-                         boolValue ? 
-                                R_QTN_SET_DNS_SERVERS_AUTOMATIC : 
-                                R_QTN_SET_IP_USER_DEFINED );
-    }
-    
-//---------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv4::ShowPopupSettingPageL
-//---------------------------------------------------------------------------
-//
-TBool CmPluginWlanSettingsDlgIpv4::ShowPopupSettingPageL( TUint32 aAttribute, 
-                                                          TInt aCommandId )
-    {
-    TBool retval = EFalse;
-    switch ( aAttribute )
-        {
-        case EWlanIpDNSAddrFromServer:
-            {
-            ShowPopupIPv4DNSEditorL( EWlanIpDNSAddrFromServer, 
-                                     EWlanIpNameServer1,
-                                     EWlanIpNameServer2 );
-            break;
-            }
-        case EWlanIpAddr:
-        case EWlanIpNetMask:
-        case EWlanIpGateway:
-            {
-            ShowPopupIpSettingPageL( aAttribute );
-            break;
-            }
-        default:
-            {
-            CmPluginBaseSettingsDlgIp::ShowPopupSettingPageL( aAttribute, 
-                                                               aCommandId );
-            break;            
-            }
-        }
-    return retval;
-    }
-
-
-//---------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv4::ProcessCommandL
-//---------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlgIpv4::ProcessCommandL( TInt aCommandId )
-    {
-    if ( MenuShowing() )
-        {
-        HideMenu();
-        }
-    switch ( aCommandId )
-        {
-        case EPluginBaseCmdExit:
-            {
-            if ( ValidateAttribsL() )
-                {
-                CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-                cmMgr.WatcherUnRegister();
-                
-                iExitReason = KDialogUserExit;
-                TryExitL( iExitReason );
-                }
-            break;
-            }       
-        case EPluginBaseCmdChange:
-            {
-            ShowPopupSettingPageL( 
-                        iSettingIndex->At( iListbox->CurrentItemIndex() ),
-                        aCommandId );
-            break;
-            }
-        default:
-            {
-            CmPluginBaseSettingsDlgIp::ProcessCommandL( aCommandId );
-            break;            
-            }
-       }
-   }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv4::OkToExitL
-// --------------------------------------------------------------------------
-//
-TBool CmPluginWlanSettingsDlgIpv4::OkToExitL( TInt aButtonId )
-    {
-    TBool retval( EFalse );
-    
-    switch ( aButtonId )
-        {
-        case EAknSoftkeyOk:
-        case EAknSoftkeyChange:
-            {
-            ProcessCommandL( EPluginBaseCmdChange );
-            break;
-            }
-        case EAknSoftkeyBack:
-            {
-            if ( ValidateAttribsL() )
-                {
-                CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-                cmMgr.WatcherUnRegister();
-                
-                iExitReason = KDialogUserBack;
-                retval = ETrue;
-                }
-            break;
-            }
-        default:
-            {
-            retval = CmPluginBaseSettingsDlgIp::OkToExitL( aButtonId );
-            break;
-            }
-        }
-    return retval;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv4::ValidateAttribsL
-// --------------------------------------------------------------------------
-//
-TBool CmPluginWlanSettingsDlgIpv4::ValidateAttribsL()
-    {
-    TBool retVal ( EFalse );
-    HBufC* ipAddr = iCmPluginBaseEng.GetStringAttributeL( EWlanIpAddr );
-    TBool isUnspec = IsUnspecifiedIPv4Address( *ipAddr );
-    delete ipAddr; ipAddr = NULL;
-    
-    if ( !isUnspec )
-        {
-        ipAddr = iCmPluginBaseEng.GetStringAttributeL( EWlanIpNetMask );
-        TBool isUnspec1 = IsUnspecifiedIPv4Address( *ipAddr );
-        delete ipAddr;
-        ipAddr = iCmPluginBaseEng.GetStringAttributeL( EWlanIpGateway );
-        TBool isUnspec2 = IsUnspecifiedIPv4Address( *ipAddr );
-        delete ipAddr;
-        
-        if ( isUnspec1 || isUnspec2 )
-            {
-            if ( TCmCommonUi::ShowConfirmationQueryL(
-                    R_QTN_NETW_QUEST_IAP_INCOMPLETE_DELETE ) )
-                {
-                // quit without saving, so restore attributes
-                iCmPluginBaseEng.RestoreAttributeL( EWlanIpAddr );
-                iCmPluginBaseEng.RestoreAttributeL( EWlanIpNetMask );
-                iCmPluginBaseEng.RestoreAttributeL( EWlanIpGateway );
-                iCmPluginBaseEng.RestoreAttributeL( EWlanIpDNSAddrFromServer );
-                retVal = ETrue;
-                }
-            }
-         else
-            {
-            retVal = ETrue;
-            }
-        }
-    else
-        {
-        retVal = ETrue;
-        }
-
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv4::InitTextsL
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlgIpv4::InitTextsL()
-    {
-    // set pane text if neccessary...
-    // pane text needed if not pop-up...
-    if ( iEikonEnv )
-        {
-        iStatusPane = iEikonEnv->AppUiFactory()->StatusPane();
-        iTitlePane =
-            ( CAknTitlePane* )iStatusPane->ControlL(
-                                TUid::Uid( EEikStatusPaneUidTitle ) );
-
-        iOldTitleText = iTitlePane->Text()->AllocL();
-        HBufC* title = StringLoader::LoadLC ( R_QTN_SET_IPV4_SETTINGS );
-        iTitlePane->SetTextL( *title ) ;
-        CleanupStack::PopAndDestroy(title);                         
-        iNaviPane = ( CAknNavigationControlContainer* ) 
-                        iStatusPane->ControlL( 
-                                TUid::Uid( EEikStatusPaneUidNavi ) );
-        iNaviDecorator = iNaviPane->CreateNavigationLabelL( KNullDesC );
-        iNaviPane->PushL( *iNaviDecorator );
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv4::RegisterParentView
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlgIpv4::RegisterParentView( CCmParentViewNotifier* aParent )
-    {
-    iParent = aParent;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv4::CommsDatChangesL
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlgIpv4::CommsDatChangesL()
-    {
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    CCmDestinationImpl* parentDest = iCmPluginBaseEng.ParentDestination();
-    
-    if ( parentDest )
-        {
-        if( !cmMgr.DestinationStillExistedL( parentDest ) )
-            {
-            if( iParent )
-                {
-                iParent->NotifyParentView( KCmNotifiedDestinationDisappear );
-                }
-            
-            cmMgr.WatcherUnRegister();
-            // If parent destination is deleted by somebody then the dialog must exit back to main view
-            iExitReason = KDialogUserExit;
-            TryExitL( iExitReason );
-                
-            cmMgr.RemoveDestFromPool( parentDest );
-            delete parentDest;
-            return;
-            }
-            
-        if( !cmMgr.IsIapStillInDestL( parentDest, iCmPluginBaseEng ) )
-            {
-            if( iParent )
-                {
-                iParent->NotifyParentView( KCmNotifiedIapIsNotInThisDestination );
-                }
-            
-            cmMgr.WatcherUnRegister();
-            // In this case, the dialog can go back to the parent view
-            TryExitL( iExitReason );
-            
-            cmMgr.RemoveDestFromPool( parentDest );
-            delete parentDest;
-            return;
-            }
-        
-        // We may have to notify parent view to go back to its parent view even though this Iap is still in CommsDat
-        // for cmMgr ( = iCmPluginBaseEng.CmMgr() ) can not be accessed any more
-        // after this call when some Iap is deleted.
-        if( iParent )
-            {
-            iParent->NotifyParentView( KCmNotifiedIapDisappear );
-            }
-        cmMgr.WatcherUnRegister();
-        TryExitL( iExitReason );
-            
-        cmMgr.RemoveDestFromPool( parentDest );
-        delete parentDest;
-        }
-    else
-        {
-        if( !cmMgr.IapStillExistedL( iCmPluginBaseEng ) )
-            {
-            if( iParent )
-            {
-            iParent->NotifyParentView( KCmNotifiedIapDisappear );
-            }
-            
-            cmMgr.WatcherUnRegister();
-            // In this case, the dialog can go back to the parent view
-            TryExitL( iExitReason );
-            return;
-            }
-        
-        // We may have to notify parent view to go back to its parent view even though this Iap is still in CommsDat
-        // for cmMgr ( = iCmPluginBaseEng.CmMgr() ) can not be accessed any more
-        // after this call when some Iap is deleted.
-        if( iParent )
-            {
-            iParent->NotifyParentView( KCmNotifiedIapDisappear );
-            }
-        cmMgr.WatcherUnRegister();
-        TryExitL( iExitReason );
-        }
-    }
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpwlansettingsdlgipv6.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,345 +0,0 @@
-/*
-* Copyright (c) 2006 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:  WLAN Ipv6 settings dialog
-*
-*/
-
-#include <StringLoader.h>
-#include <akntitle.h>
-#include <aknnavide.h>
-#include <cmcommonui.h>
-#include <cmwlanui.rsg>
-#include <cmmanager.rsg>
-#include <csxhelp/cp.hlp.hrh>
-
-#include <cmpluginwlandef.h>
-#include "cmpluginwlan.h"
-#include "cmpwlansettingsdlgipv6.h"
-#include "cmwlancommonconstants.h"
-#include "cmpluginmenucommands.hrh"
-#include "cmpluginmultilinedialog.h"
-#include <cmcommonconstants.h>
-#include <cmpsettingsconsts.h>
-#include "cmmanagerimpl.h"
-
-using namespace CMManager;
-
-const TUint32 KIPv6SelectionItems[] = 
-    {
-    R_QTN_SET_DNS_SERVERS_AUTOMATIC,
-    R_QTN_SET_IP_WELL_KNOWN,
-    R_QTN_SET_IP_USER_DEFINED,
-    0
-    };
-    
-// ================= MEMBER FUNCTIONS =======================================
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv6::NewL
-// Two-phase dconstructor, second phase is ConstructAndRunLD
-// --------------------------------------------------------------------------
-//
-CmPluginWlanSettingsDlgIpv6* CmPluginWlanSettingsDlgIpv6::NewL( 
-                                            CCmPluginBaseEng& aCmPluginBase )
-	{
-	CmPluginWlanSettingsDlgIpv6* self = 
-	            new (ELeave) CmPluginWlanSettingsDlgIpv6( aCmPluginBase );
-	return self;
-	}
-	
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv6::CmPluginWlanSettingsDlgIpv6
-// --------------------------------------------------------------------------
-//
-CmPluginWlanSettingsDlgIpv6::CmPluginWlanSettingsDlgIpv6( 
-                                         CCmPluginBaseEng& aCmPluginBase ):
-    CmPluginBaseSettingsDlgIp( aCmPluginBase ) ,
-    iParent( NULL )
-    {
-    iHelpContext = KSET_HLP_AP_WLAN_AS_IPV6;
-    }
-    
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv6::~CmPluginWlanSettingsDlgIpv6
-// --------------------------------------------------------------------------
-//
-CmPluginWlanSettingsDlgIpv6::~CmPluginWlanSettingsDlgIpv6()
-    {
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv6::ConstructAndRunLD
-// --------------------------------------------------------------------------
-//
-TInt CmPluginWlanSettingsDlgIpv6::ConstructAndRunLD()
-    {
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    cmMgr.WatcherRegisterL( this );
-    
-    return CmPluginBaseSettingsDlgIp::ConstructAndRunLD();
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv6::UpdateListBoxContentBearerSpecificL
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlgIpv6::UpdateListBoxContentBearerSpecificL( 
-                                                    CDesCArray& aItemArray )
-    {
-    TInt value( 0 );
-    
-    // DNS SERVERS IP ADDRESS
-    switch ( GetIPv6DNSTypeL( EWlanIp6NameServer1,
-                              EWlanIp6NameServer2 ) )
-        {
-        case EIpv6DNSDynamic:
-            {
-            value = R_QTN_SET_DNS_SERVERS_AUTOMATIC;
-            break;
-            }
-        case EIpv6DNSWellKnown:
-            {
-            value = R_QTN_SET_IP_WELL_KNOWN;
-            break;
-            }
-        case EIpv6DNSUserDefined:
-            {
-            value = R_QTN_SET_IP_USER_DEFINED;
-            break;
-            }
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            break;
-            }
-        }
-    AppendSettingTextsL( aItemArray,
-                         EWlanIp6DNSAddrFromServer,
-                         value );
-    }    
-
-//---------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv6::ShowPopupSettingPageL
-//---------------------------------------------------------------------------
-//
-TBool CmPluginWlanSettingsDlgIpv6::ShowPopupSettingPageL( TUint32 aAttribute, 
-                                                          TInt aCommandId )
-    {    
-    TBool retval = EFalse;
-    switch ( aAttribute )
-        {
-        case EWlanIp6DNSAddrFromServer:        
-            {
-            ShowPopupIPv6DNSEditorL( KIPv6SelectionItems, 
-                                     EWlanIp6DNSAddrFromServer,
-                                     EWlanIp6NameServer1,
-                                     EWlanIp6NameServer2 );
-            break;
-            }
-        default:
-            {
-            CmPluginBaseSettingsDlgIp::ShowPopupSettingPageL( aAttribute, 
-                                                               aCommandId );
-            break;            
-            }
-        }
-    return retval;
-    }
-    
-//---------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv6::InitTextsL
-// called before the dialog is shown to initialize localized textual data
-//---------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlgIpv6::InitTextsL()
-    {
-    // set pane text if neccessary...
-    // pane text needed if not pop-up...
-    if ( iEikonEnv )
-        {
-        iStatusPane = iEikonEnv->AppUiFactory()->StatusPane();
-        iTitlePane = ( CAknTitlePane* )iStatusPane->ControlL(
-                                TUid::Uid( EEikStatusPaneUidTitle ) );
-
-        iOldTitleText = iTitlePane->Text()->AllocL();
-        HBufC* title = StringLoader::LoadLC ( R_QTN_SET_IPV6_SETTINGS );
-        iTitlePane->SetTextL( *title ) ;
-        CleanupStack::PopAndDestroy(title);                         
-        iNaviPane = ( CAknNavigationControlContainer* ) 
-                        iStatusPane->ControlL( 
-                                TUid::Uid( EEikStatusPaneUidNavi ) );
-        iNaviDecorator = iNaviPane->CreateNavigationLabelL( KNullDesC );
-        iNaviPane->PushL( *iNaviDecorator );
-        }
-    }    
-    
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv6::ProcessCommandL
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlgIpv6:: ProcessCommandL( TInt aCommandId )
-    {
-    if ( MenuShowing() )
-        {
-        HideMenu();
-        }
-
-    switch ( aCommandId )
-        {
-        case EPluginBaseCmdExit:
-            {
-            iExitReason = KDialogUserExit;
-            }
-        // fall-through intended here
-        case EAknSoftkeyBack:
-            {
-            CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-            cmMgr.WatcherUnRegister();
-            
-            TryExitL( iExitReason );
-            break;
-            }           
-        case EAknSoftkeyOk:
-        case EPluginBaseCmdChange:
-            {
-            TInt attrib = iSettingIndex->At( iListbox->CurrentItemIndex() );
-            ShowPopupSettingPageL( attrib, aCommandId);
-            break;
-            }
-        default:
-            {
-            CmPluginBaseSettingsDlgIp::ProcessCommandL( aCommandId );
-            break;            
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv6::OkToExitL
-// --------------------------------------------------------------------------
-//
-TBool CmPluginWlanSettingsDlgIpv6::OkToExitL( TInt aButtonId )
-    {
-    TBool retval( EFalse );
-    
-    switch ( aButtonId )
-        {
-        case EAknSoftkeyBack:
-        case EAknSoftkeyExit:
-        case KDialogUserExit:
-            {
-            CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-            cmMgr.WatcherUnRegister();
-            } // Continue to call base setting dialog view
-        default:
-            {
-            retval = CmPluginBaseSettingsDlgIp::OkToExitL( aButtonId );
-            break;
-            }
-        }
-    return retval;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv6::RegisterParentView
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlgIpv6::RegisterParentView( CCmParentViewNotifier* aParent )
-    {
-    iParent = aParent;
-    }
-
-// --------------------------------------------------------------------------
-// CmPluginWlanSettingsDlgIpv6::CommsDatChangesL
-// --------------------------------------------------------------------------
-//
-void CmPluginWlanSettingsDlgIpv6::CommsDatChangesL()
-    {
-    CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr();
-    CCmDestinationImpl* parentDest = iCmPluginBaseEng.ParentDestination();
-    
-    if ( parentDest )
-        {
-        if( !cmMgr.DestinationStillExistedL( parentDest ) )
-            {
-            if( iParent )
-                {
-                iParent->NotifyParentView( KCmNotifiedDestinationDisappear );
-                }
-            
-            // cmMgr.WatcherUnRegister();
-            // If parent destination is deleted by somebody then the dialog must exit back to main view
-            iExitReason = KDialogUserExit; // cmMgr.WatcherUnRegister will be done in function OkToExitL in this case
-            TryExitL( iExitReason );
-                
-            cmMgr.RemoveDestFromPool( parentDest );
-            delete parentDest;
-            return;
-            }
-            
-        if( !cmMgr.IsIapStillInDestL( parentDest, iCmPluginBaseEng ) )
-            {
-            if( iParent )
-                {
-                iParent->NotifyParentView( KCmNotifiedIapIsNotInThisDestination );
-                }
-            
-            cmMgr.WatcherUnRegister();
-            // In this case, the dialog can go back to the parent view
-            TryExitL( iExitReason );
-            
-            cmMgr.RemoveDestFromPool( parentDest );
-            delete parentDest;
-            return;
-            }
-        
-        // We may have to notify parent view to go back to its parent view even though this Iap is still in CommsDat
-        // for cmMgr ( = iCmPluginBaseEng.CmMgr() ) can not be accessed any more
-        // after this call when some Iap is deleted.
-        if( iParent )
-            {
-            iParent->NotifyParentView( KCmNotifiedIapDisappear );
-            }
-        cmMgr.WatcherUnRegister();
-        TryExitL( iExitReason );
-        
-        cmMgr.RemoveDestFromPool( parentDest );
-        delete parentDest;
-        }
-    else
-        {
-        if( !cmMgr.IapStillExistedL( iCmPluginBaseEng ) )
-            {
-            if( iParent )
-                {
-                iParent->NotifyParentView( KCmNotifiedIapDisappear );
-                }
-            
-            cmMgr.WatcherUnRegister();
-            // In this case, the dialog can go back to the parent view
-            TryExitL( iExitReason );
-            return;
-            }
-        
-        // We may have to notify parent view to go back to its parent view even though this Iap is still in CommsDat
-        // for cmMgr ( = iCmPluginBaseEng.CmMgr() ) can not be accessed any more
-        // after this call when some Iap is deleted.
-        if( iParent )
-            {
-            iParent->NotifyParentView( KCmNotifiedIapDisappear );
-            }
-        cmMgr.WatcherUnRegister();
-        TryExitL( iExitReason );
-        }
-    }
--- a/cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmwlancoveragecheck.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,413 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of WLAN Coverage Check class
-*
-*/
-
-
-#include <wlanmgmtclient.h>
-
-#include "cmwlancoveragecheck.h"
-#include "cmpluginwlan.h"
-#include "cmpluginwlandata.h"
-#include "cmpluginwlandataarray.h"
-#include "cmlogger.h"
-
-
-/**
-* Management frame information element IDs.
-* needed to determine coverage
-*/
-enum T802Dot11InformationElementID
-    {
-    E802Dot11SsidIE                 = 0,
-    E802Dot11SupportedRatesIE       = 1,
-    E802Dot11FhParameterSetIE       = 2,
-    E802Dot11DsParameterSetIE       = 3,
-    E802Dot11CfParameterSetIE       = 4,
-    E802Dot11TimIE                  = 5,
-    E802Dot11IbssParameterSetIE     = 6,
-    E802Dot11CountryIE              = 7,
-    E802Dot11HoppingPatternParamIE  = 8,
-    E802Dot11HoppingPatternTableIE  = 9,
-    E802Dot11RequestIE              = 10,
-
-    E802Dot11ChallengeTextIE        = 16,
-    // Reserved for challenge text extension 17 - 31
-    E802Dot11ErpInformationIE       = 42,
-    E802Dot11ExtendedRatesIE        = 50,
-    E802Dot11AironetIE              = 133,
-    E802Dot11ApIpAddressIE          = 149,
-    E802Dot11RsnIE                  = 221
-    };
-
-
-/**
-* Bit masks for Capability Information field.
-*/
-enum T802Dot11CapabilityBitMask
-    {
-    E802Dot11CapabilityEssMask          = 0x0001,
-    E802Dot11CapabilityIbssMask         = 0x0002,
-    E802Dot11CapabilityCfPollableMask   = 0x0004,
-    E802Dot11CapabilityCfPollRequestMask= 0x0008,
-    E802Dot11CapabilityPrivacyMask      = 0x0010,
-    E802Dot11ShortPreambleMask          = 0x0020,
-    E802Dot11PbccMask                   = 0x0040,      
-    E802Dot11ChannelAgilityMask         = 0x0080
-    };
-
-
-// ======================= MEMBER FUNCTIONS =================================
-
-// ----------------------------------------------------------------------------
-// CCmWlanCoverageCheck::CCmWlanCoverageCheck()
-// ----------------------------------------------------------------------------
-//
-CCmWlanCoverageCheck::CCmWlanCoverageCheck() : CActive( EPriorityStandard )
-    {
-    CActiveScheduler::Add( this );
-    }
-    
-// ----------------------------------------------------------------------------
-// CCmWlanCoverageCheck::~CCmWlanCoverageCheck()
-// ----------------------------------------------------------------------------
-//
-CCmWlanCoverageCheck::~CCmWlanCoverageCheck()
-    {
-    Cancel();
-    }
-    
-// ----------------------------------------------------------------------------
-// CCmWlanCoverageCheck::DoCancel
-// ----------------------------------------------------------------------------
-//
-void CCmWlanCoverageCheck::DoCancel()
-    {
-    iWait.AsyncStop();
-    }
-    
-// ----------------------------------------------------------------------------
-// CCmWlanCoverageCheck::RunL
-// ----------------------------------------------------------------------------
-//
-void CCmWlanCoverageCheck::RunL()
-    {
-    CLOG_WRITE( "RunL entered" );
-    switch( iProgState )
-        {
-        case EScanning:
-            {
-             if( !iStatus.Int() )
-                // The list is ready 
-                {
-                iProgState = EDone;
-                iWait.AsyncStop();
-                }
-            else
-                // something went wrong -> no coverage.
-                {
-                iWait.AsyncStop();
-                }
-            }
-            break;            
-        case EDone:
-            {
-            iWait.AsyncStop();
-            }
-            break;
-            
-        default:
-            {
-            User::Leave( KErrCorrupt );
-            }
-        }
-    }
-
-
-
-// ----------------------------------------------------------------------------
-// CCmWlanCoverageCheck::GetCoverageL
-// ----------------------------------------------------------------------------
-//
-TInt CCmWlanCoverageCheck::GetCoverageL()
-    {
-    LOGGER_ENTERFN( "CCmWlanCoverageCheck::GetCoverageL" );
-
-    iProgState = EServiceStatus;
-    iCoverage = 0;
-    
-    CWlanMgmtClient* wlanMgmt = CWlanMgmtClient::NewL();
-    CleanupStack::PushL( wlanMgmt );
-
-    CWlanScanInfo* scanInfo = CWlanScanInfo::NewL();
-    CleanupStack::PushL( scanInfo );
-
-    iProgState = EScanning;
-    
-    wlanMgmt->GetScanResults( iStatus, *scanInfo );
-    
-    SetActive();
-    iWait.Start();
-    
-    // now we have the results and might start to work on them...
-    if ( iProgState == EDone )
-        { //finished without error, work on the result...
-        CCmPluginWlanDataArray* wlandataarray = new ( ELeave ) 
-            CCmPluginWlanDataArray();
-        CleanupStack::PushL( wlandataarray );
-
-        for ( scanInfo->First(); !scanInfo->IsDone(); scanInfo->Next() )
-            {
-            // iWlanNetworks cannot be modified 'directly' in
-            // a const method (like GetBoolAttributeL), so we have to
-            // cast away the constness.
-            
-            // not simply count as before, but check if it is hidden,
-            // and do not allow duplicates...
-            TBool isHidden( EFalse );
-            
-            TUint8 ieLen( 0 );
-            const TUint8* ieData;
-            TBuf8<KWlanMaxSsidLength> ssid8;
-            
-            TInt ret = scanInfo->InformationElement( E802Dot11SsidIE, ieLen, 
-                                                      &ieData );
-            if ( ret == KErrNone ) 
-                {               
-                isHidden = IsHiddenSsid( ieLen, ieData );
-                if ( !isHidden )
-                    {
-                    // get the ssid
-                    ssid8.Copy( ieData, ieLen );
-                    HBufC* tmp = HBufC::NewLC(KWlanMaxSsidLength);
-                    TPtr tmpptr( tmp->Des() );
-                    
-                    tmpptr.Copy(ssid8);
-                    // get the signal strength                        
-                    TUint8 rxLevel8 = scanInfo->RXLevel();
-                    TInt rxLevel = static_cast< TInt >( rxLevel8 );
-                    
-                    // now add it to an array of CCmPluginWlanData,
-                    // as it is not hidden
-                    // the adding function should handle uniqeness and 
-                    // signal strength checking, it should contain only
-                    // the strongest signal!                        
-                    AddToArrayIfNeededL( *wlandataarray, rxLevel, tmpptr );
-                    
-                    CleanupStack::PopAndDestroy( tmp );
-                    }                
-                }
-            else
-                {
-                User::Leave( ret );
-                }
-            }
-        iCoverage = wlandataarray->Count();
-        
-        CleanupStack::PopAndDestroy( wlandataarray );
-
-        CleanupStack::PopAndDestroy( 2, wlanMgmt );
-        }
-    else
-        {
-        User::LeaveIfError( iStatus.Int() );        
-        }        
-        
-    return iCoverage;
-    }
-
-// ---------------------------------------------------------
-// CCmWlanCoverageCheck::IsHiddenSsid
-// ---------------------------------------------------------
-//    
-TBool CCmWlanCoverageCheck::IsHiddenSsid( TUint aSsidLength, 
-                                   const TUint8* aSsid ) const
-    {
-    LOGGER_ENTERFN( "CCmWlanCoverageCheck::IsHiddenSsid" );
-    
-    const TUint8 CSPACE = 0x20; 
-    TBool result( EFalse );
-    TBool result2( ETrue );
-
-    if ( !aSsidLength )
-        {
-        result = ETrue;
-        }
-
-    TInt count( 0 );
-    TUint8 temp( 0x00 );
-    
-    for ( TUint i( 0 ); i < aSsidLength; ++i )
-        {
-        temp = aSsid[i];
-        count += temp; // in hidden networks characters are: 0x00
-        result2 &= temp == CSPACE ;
-        }
-
-    if( !count || result2 )
-        {
-        result = ETrue;
-        }
-        
-    return result;    
-    }
-
-
-// ---------------------------------------------------------
-// CCmWlanCoverageCheck::AddToArrayIfNeededL
-// ---------------------------------------------------------
-//    
-void CCmWlanCoverageCheck::AddToArrayIfNeededL( 
-                            CCmPluginWlanDataArray& aArray, 
-                            TInt aRXLevel, 
-                            TDesC& aNetworkName ) const
-    {
-    LOGGER_ENTERFN( "CCmWlanCoverageCheck::AddToArrayIfNeededL" );
-
-    // first check if it is already in the array
-    
-    TBool found( EFalse );
-    TInt index( 0 );
-    TInt count = aArray.Count();
-    
-    while( ( index <  count ) && !found  )
-        {
-        if( ( aArray )[index]->iNetworkName->Compare( aNetworkName ) )
-            {
-            ++index;   
-            }
-        else
-            {
-            found = ETrue;
-            }
-        }
-
-    TSignalStrength strength = ( TSignalStrength )aRXLevel;
-    if ( found )
-        {
-        // if already exists, check signal strengths
-        TSignalStrength signal = ( aArray )[index]->iSignalStrength;
-        
-        // set to higher value
-        ( aArray )[index]->iSignalStrength = 
-                              signal < strength ? signal : strength ;
-        }
-    else
-        {
-        // new element, add it to array with signal strength!!
-        CCmPluginWlanData* data = CCmPluginWlanData::NewLC();
-        data->iNetworkName = aNetworkName.AllocL();
-        data->iSignalStrength = strength;
-        aArray.AppendL( data );
-        CleanupStack::Pop( data ); // item owned by list!
-        }    
-    }
-
-
-// ----------------------------------------------------------------------------
-// CCmWlanCoverageCheck::ScanForPromptedSsidL
-// ----------------------------------------------------------------------------
-//
-TBool CCmWlanCoverageCheck::ScanForPromptedSsidL( TWlanSsid aEnteredSsid,
-                                TBool aBroadcast,
-                                TWlanNetMode& aNetworkMode, 
-                                TWlanConnectionExtentedSecurityMode& aSecurityMode,
-                                TBool& aProtectedSetupSupported )
-    {
-    LOGGER_ENTERFN( "CCmWlanCoverageCheck::ScanForPromptedSsidL" );
-    
-    TBool found = EFalse;
-
-    iProgState = EServiceStatus;
-       
-    CWlanMgmtClient* wlanMgmt = CWlanMgmtClient::NewL();
-    CleanupStack::PushL( wlanMgmt );
-
-    CWlanScanInfo* scanInfo = CWlanScanInfo::NewL();
-    CleanupStack::PushL( scanInfo );
-
-    iProgState = EScanning;
-    
-    if ( aBroadcast )
-        {
-        wlanMgmt->GetScanResults( iStatus, *scanInfo );
-        }
-    else
-        {
-        wlanMgmt->GetScanResults( aEnteredSsid, iStatus, *scanInfo );
-        }
-
-    SetActive();
-    iWait.Start();
-    
-    // now we have the results and might start to work on them...
-    if ( iProgState == EDone )
-        {       //finished without error, work on the result...
-        TSignalStrength signalStrength = ESignalStrengthMin;
-
-        for ( scanInfo->First(); !scanInfo->IsDone(); scanInfo->Next() )
-            {
-            TUint8 ieLen( 0 );
-            const TUint8* ieData;
-            TBuf8<KWlanMaxSsidLength> ssid8;
-            
-            TInt ret = scanInfo->InformationElement( E802Dot11SsidIE, ieLen, 
-                                                     &ieData );
-            if ( ret == KErrNone ) 
-                {               
-                // get the ssid
-                ssid8.Copy( ieData, ieLen );
-                
-                if ( !aEnteredSsid.Compare( ssid8 ) )
-                    {
-                    // get the signal strength                        
-                    TUint8 rxLevel8 = scanInfo->RXLevel();
-                    TInt rxLevel = static_cast< TInt >( rxLevel8 );
-            
-                    TSignalStrength strength = ( TSignalStrength )rxLevel;
-                    if ( !found || ( found && strength < signalStrength ) )
-                        {
-                        found = ETrue;
-                        signalStrength = strength;
-
-                        aNetworkMode = ( scanInfo->Capability() & 
-                                         E802Dot11CapabilityEssMask ) ?
-                                       EInfra : EAdhoc;
-                        aSecurityMode = scanInfo->ExtendedSecurityMode();
-
-                        aProtectedSetupSupported = 
-                                        scanInfo->IsProtectedSetupSupported();
-                        }
-                    }
-                }
-            else
-                {
-                User::Leave( ret );
-                }
-        
-            }
-        
-        CleanupStack::PopAndDestroy( scanInfo );
-        CleanupStack::PopAndDestroy( wlanMgmt );
-        }
-    else
-        {
-        User::LeaveIfError( iStatus.Int() );        
-        }
-    
-    return found;
-    }
-
-
--- a/cmmanager/cmmgr/Rom/CmManager.iby	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef __CMMANAGER_IBY__
-#define __CMMANAGER_IBY__
-
-
-file=ABI_DIR\BUILD_DIR\cmmanager.dll     SHARED_LIB_DIR\cmmanager.dll
-SCALABLE_IMAGE(APP_RESOURCE_DIR,APP_RESOURCE_DIR,cmmanager)
-
-
-
-#endif // __CMMANAGER_IBY__
-
--- a/cmmanager/cmmgr/Rom/CmManagerResources.iby	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef __CMMANAGER_RESOURCES_IBY__
-#define __CMMANAGER_RESOURCES_IBY__
-
-
-
-data=ZRESOURCE\cmmanager.rsc                                  RESOURCE_FILES_DIR\cmmanager.rsc
-
-
-#endif
\ No newline at end of file
--- a/cmmanager/cmmgr/Rom/cmplugincsd.iby	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef __CMPLUGINCSD_IBY__
-#define __CMPLUGINCSD_IBY__
-
-
-ECOM_PLUGIN(cmplugincsd.dll,10281BB6.rsc)
-SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,cmplugincsd)
-
-
-#endif // __CMPLUGINCSD_IBY__
--- a/cmmanager/cmmgr/Rom/cmplugincsdresources.iby	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef __CMPLUGINCSD_RESOURCES_IBY__
-#define __CMPLUGINCSD_RESOURCES_IBY__
-
-
-data = DATAZ_\RESOURCE_FILES_DIR\cmplugincsdui.rsc RESOURCE_FILES_DIR\cmplugincsdui.rsc
-
-
-#endif // __CMPLUGINCSD_RESOURCES_IBY__
\ No newline at end of file
--- a/cmmanager/cmmgr/Rom/cmpluginembdestination.iby	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef __CMPLUGIN_EMBDESTINATION_IBY__
-#define __CMPLUGIN_EMBDESTINATION_IBY__
-
-
-ECOM_PLUGIN(cmpluginembdestination.dll,1020737D.rsc)
-
-
-#endif // __CMPLUGIN_EMBDESTINATION_IBY__
--- a/cmmanager/cmmgr/Rom/cmpluginembdestinationresources.iby	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef __CMPLUGIN_EMBDESTINATION_RESOURCES_IBY__
-#define __CMPLUGIN_EMBDESTINATION_RESOURCES_IBY__
-
-
-data = DATAZ_\RESOURCE_FILES_DIR\cmpluginembdestinationui.rsc RESOURCE_FILES_DIR\cmpluginembdestinationui.rsc
-
-
-#endif // __CMPLUGIN_EMBDESTINATION_RESOURCES_IBY__
\ No newline at end of file
--- a/cmmanager/cmmgr/Rom/cmpluginpacketdata.iby	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef __CMPLUGINPACKETDATA_IBY__
-#define __CMPLUGINPACKETDATA_IBY__
-
-
-ECOM_PLUGIN(cmpluginpacketdata.dll,1020737C.rsc)
-SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,cmpluginpacketdata)
-
-
-#endif
--- a/cmmanager/cmmgr/Rom/cmpluginpacketdataresources.iby	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef __CMPLUGINPACKETDATA_RESOURCES_IBY__
-#define __CMPLUGINPACKETDATA_RESOURCES_IBY__
-
-
-data = DATAZ_\RESOURCE_FILES_DIR\cmpacketdataui.RSC     RESOURCE_FILES_DIR\cmpacketdataui.RSC
-
-
-#endif
\ No newline at end of file
--- a/cmmanager/cmmgr/Rom/cmpluginvpn.iby	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef __CMPLUGINVPN_IBY__
-#define __CMPLUGINVPN_IBY__
-
-
-ECOM_PLUGIN(cmpluginvpn.dll,10281BBD.rsc)
-SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,cmpluginvpn)
-
-
-#endif
--- a/cmmanager/cmmgr/Rom/cmpluginvpnresources.iby	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef __CMPLUGINVPN_RESOURCES_IBY__
-#define __CMPLUGINVPN_RESOURCES_IBY__
-
-
-data = DATAZ_\RESOURCE_FILES_DIR\cmpluginvpnui.rsc     RESOURCE_FILES_DIR\cmpluginvpnui.rsc
-
-#
-#endif
\ No newline at end of file
--- a/cmmanager/cmmgr/Rom/cmpluginwlan.iby	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef __CMPLUGINWLAN_IBY__
-#define __CMPLUGINWLAN_IBY__
-
-#if defined( __PROTOCOL_WLAN ) 
-
-ECOM_PLUGIN(cmpluginwlan.dll,10281BB2.rsc)
-SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,cmpluginwlan)
-
-#endif //   __PROTOCOL_WLAN
-
-#endif // __CMPLUGINWLAN_IBY__
--- a/cmmanager/cmmgr/Rom/cmpluginwlanresources.iby	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef __CMPLUGINWLAN_RESOURCES_IBY__
-#define __CMPLUGINWLAN_RESOURCES_IBY__
-
-#if (  defined( __PROTOCOL_WLAN ) )
-
-data = DATAZ_\RESOURCE_FILES_DIR\cmwlanui.rsc RESOURCE_FILES_DIR\cmwlanui.rsc
-
-#endif //  __PROTOCOL_WLAN
-
-#endif // __CMPLUGINWLAN_RESOURCES_IBY__
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/BWinsCw/CmManager_prot_setupU.DEF	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,398 @@
+EXPORTS
+	??0CCmPluginBaseEng@@IAE@PAVTCmPluginInitParam@@@Z @ 1 NONAME ABSENT ; CCmPluginBaseEng::CCmPluginBaseEng(class TCmPluginInitParam *)
+	??0CCmPluginLanBase@@IAE@PAVTCmPluginInitParam@@@Z @ 2 NONAME ABSENT ; CCmPluginLanBase::CCmPluginLanBase(class TCmPluginInitParam *)
+	??0CmPluginBaseSettingsDlg@@QAE@AAVCCmPluginBaseEng@@@Z @ 3 NONAME ABSENT ; CmPluginBaseSettingsDlg::CmPluginBaseSettingsDlg(class CCmPluginBaseEng &)
+	??0CmPluginBaseSettingsDlgAdv@@QAE@AAVCCmPluginBaseEng@@@Z @ 4 NONAME ABSENT ; CmPluginBaseSettingsDlgAdv::CmPluginBaseSettingsDlgAdv(class CCmPluginBaseEng &)
+	??0CmPluginBaseSettingsDlgIp@@QAE@AAVCCmPluginBaseEng@@@Z @ 5 NONAME ABSENT ; CmPluginBaseSettingsDlgIp::CmPluginBaseSettingsDlgIp(class CCmPluginBaseEng &)
+	??0RCmDestination@@QAE@ABV0@@Z @ 6 NONAME ; RCmDestination::RCmDestination(class RCmDestination const &)
+	??0RCmDestinationExt@@QAE@ABV0@@Z @ 7 NONAME ; RCmDestinationExt::RCmDestinationExt(class RCmDestinationExt const &)
+	??1CCmApplicationSettingsUi@@UAE@XZ @ 8 NONAME ; CCmApplicationSettingsUi::~CCmApplicationSettingsUi(void)
+	??1CCmPluginBaseEng@@UAE@XZ @ 9 NONAME ABSENT ; CCmPluginBaseEng::~CCmPluginBaseEng(void)
+	??1CCmPluginLanBase@@MAE@XZ @ 10 NONAME ABSENT ; CCmPluginLanBase::~CCmPluginLanBase(void)
+	??1CCmSettingsUi@@UAE@XZ @ 11 NONAME ABSENT ; CCmSettingsUi::~CCmSettingsUi(void)
+	??1CmPluginBaseSettingsDlg@@UAE@XZ @ 12 NONAME ABSENT ; CmPluginBaseSettingsDlg::~CmPluginBaseSettingsDlg(void)
+	??1CmPluginBaseSettingsDlgAdv@@UAE@XZ @ 13 NONAME ABSENT ; CmPluginBaseSettingsDlgAdv::~CmPluginBaseSettingsDlgAdv(void)
+	??1CmPluginBaseSettingsDlgIp@@UAE@XZ @ 14 NONAME ABSENT ; CmPluginBaseSettingsDlgIp::~CmPluginBaseSettingsDlgIp(void)
+	??1RCmDestination@@QAE@XZ @ 15 NONAME ; RCmDestination::~RCmDestination(void)
+	??1RCmDestinationExt@@QAE@XZ @ 16 NONAME ; RCmDestinationExt::~RCmDestinationExt(void)
+	??4RCmDestination@@QAEAAV0@ABV0@@Z @ 17 NONAME ; class RCmDestination & RCmDestination::operator=(class RCmDestination const &)
+	??4RCmDestinationExt@@QAEAAV0@ABV0@@Z @ 18 NONAME ; class RCmDestinationExt & RCmDestinationExt::operator=(class RCmDestinationExt const &)
+	?AddCommonConversionTableL@CCmPluginBaseEng@@IAEXPBUTCmCommonAttrConvArrayItem@@@Z @ 19 NONAME ABSENT ; void CCmPluginBaseEng::AddCommonConversionTableL(struct TCmCommonAttrConvArrayItem const *)
+	?AddConnectionMethodL@RCmDestinationExt@@QAEHVRCmConnectionMethodExt@@@Z @ 20 NONAME ; int RCmDestinationExt::AddConnectionMethodL(class RCmConnectionMethodExt)
+	?AddConverstionTableL@CCmPluginBaseEng@@IAEXPAPAVCCDRecordBase@CommsDat@@PAHPBUTCmAttribConvTable@@@Z @ 21 NONAME ABSENT ; void CCmPluginBaseEng::AddConverstionTableL(class CommsDat::CCDRecordBase * *, int *, struct TCmAttribConvTable const *)
+	?AddEmbeddedDestinationL@RCmDestinationExt@@QAEHABV1@@Z @ 22 NONAME ; int RCmDestinationExt::AddEmbeddedDestinationL(class RCmDestinationExt const &)
+	?AddResourceFileL@CCmPluginBaseEng@@IAEXABVTDesC16@@@Z @ 23 NONAME ABSENT ; void CCmPluginBaseEng::AddResourceFileL(class TDesC16 const &)
+	?AllDestinationsL@CCmManagerImpl@@QAEXAAV?$RArray@K@@@Z @ 24 NONAME ABSENT ; void CCmManagerImpl::AllDestinationsL(class RArray<unsigned long> &)
+	?AllDestinationsL@RCmManager@@QBEXAAV?$RArray@K@@@Z @ 25 NONAME ; void RCmManager::AllDestinationsL(class RArray<unsigned long> &) const
+	?AllDestinationsL@RCmManagerExt@@QAEXAAV?$RArray@K@@@Z @ 26 NONAME ; void RCmManagerExt::AllDestinationsL(class RArray<unsigned long> &)
+	?AllocReadL@CCmPluginBaseEng@@IBEPAVHBufC16@@H@Z @ 27 NONAME ABSENT ; class HBufC16 * CCmPluginBaseEng::AllocReadL(int) const
+	?AppendSettingTextsL@CmPluginBaseSettingsDlg@@IAEXAAVCDesC16Array@@HH@Z @ 28 NONAME ABSENT ; void CmPluginBaseSettingsDlg::AppendSettingTextsL(class CDesC16Array &, int, int)
+	?AppendSettingTextsL@CmPluginBaseSettingsDlg@@IAEXAAVCDesC16Array@@HPBVHBufC16@@@Z @ 29 NONAME ABSENT ; void CmPluginBaseSettingsDlg::AppendSettingTextsL(class CDesC16Array &, int, class HBufC16 const *)
+	?AppendSettingTextsL@CmPluginBaseSettingsDlg@@IBEXAAVCDesC16Array@@HHABVTDesC16@@H@Z @ 30 NONAME ABSENT ; void CmPluginBaseSettingsDlg::AppendSettingTextsL(class CDesC16Array &, int, int, class TDesC16 const &, int) const
+	?AppendSettingTextsL@CmPluginBaseSettingsDlg@@IBEXAAVCDesC16Array@@HHHH@Z @ 31 NONAME ABSENT ; void CmPluginBaseSettingsDlg::AppendSettingTextsL(class CDesC16Array &, int, int, int, int) const
+	?BearerPriorityArrayL@RCmManager@@QBEXAAV?$RArray@VTBearerPriority@@@@@Z @ 32 NONAME ; void RCmManager::BearerPriorityArrayL(class RArray<class TBearerPriority> &) const
+	?BearerPriorityArrayL@RCmManagerExt@@QBEXAAV?$RArray@VTBearerPriority@@@@@Z @ 33 NONAME ; void RCmManagerExt::BearerPriorityArrayL(class RArray<class TBearerPriority> &) const
+	?BearerRecordIdLC@CCmPluginLanBase@@MAEXAAPAVHBufC16@@AAK@Z @ 34 NONAME ABSENT ; void CCmPluginLanBase::BearerRecordIdLC(class HBufC16 * &, unsigned long &)
+	?CheckDNSServerAddressL@CCmPluginBaseEng@@QAEXHAAV?$CMDBField@VTDesC16@@@CommsDat@@0AAV?$CMDBField@H@3@@Z @ 35 NONAME ABSENT ; void CCmPluginBaseEng::CheckDNSServerAddressL(int, class CommsDat::CMDBField<class TDesC16> &, class CommsDat::CMDBField<class TDesC16> &, class CommsDat::CMDBField<int> &)
+	?CheckIPv4ValidityL@@YAHPAVCCmPluginBaseEng@@KPBX@Z @ 36 NONAME ABSENT ; int CheckIPv4ValidityL(class CCmPluginBaseEng *, unsigned long, void const *)
+	?CheckIPv6ValidityL@@YAHPAVCCmPluginBaseEng@@KPBX@Z @ 37 NONAME ABSENT ; int CheckIPv6ValidityL(class CCmPluginBaseEng *, unsigned long, void const *)
+	?CheckIfAlreadyConnected@CCmPluginBaseEng@@MBEHXZ @ 38 NONAME ABSENT ; int CCmPluginBaseEng::CheckIfAlreadyConnected(void) const
+	?CheckIfNameModifiedL@CCmPluginBaseEng@@IBEXPAVCCDRecordBase@CommsDat@@@Z @ 39 NONAME ABSENT ; void CCmPluginBaseEng::CheckIfNameModifiedL(class CommsDat::CCDRecordBase *) const
+	?CheckPortNumberValidityL@@YAHPAVCCmPluginBaseEng@@KPBX@Z @ 40 NONAME ABSENT ; int CheckPortNumberValidityL(class CCmPluginBaseEng *, unsigned long, void const *)
+	?CheckRecordIdValidityL@@YAHPAVCCmPluginBaseEng@@KPBX@Z @ 41 NONAME ABSENT ; int CheckRecordIdValidityL(class CCmPluginBaseEng *, unsigned long, void const *)
+	?CheckWAPWspOptionValidityL@@YAHPAVCCmPluginBaseEng@@KPBX@Z @ 42 NONAME ABSENT ; int CheckWAPWspOptionValidityL(class CCmPluginBaseEng *, unsigned long, void const *)
+	?ClassifyIPv6Address@@YA?AW4TIPv6Types@CMManager@@ABVTDesC16@@@Z @ 43 NONAME ABSENT ; enum CMManager::TIPv6Types ClassifyIPv6Address(class TDesC16 const &)
+	?CleanupGlobalPriorityArray@RCmManager@@QBEXAAV?$RArray@VTBearerPriority@@@@@Z @ 44 NONAME ; void RCmManager::CleanupGlobalPriorityArray(class RArray<class TBearerPriority> &) const
+	?CleanupGlobalPriorityArray@RCmManagerExt@@QBEXAAV?$RArray@VTBearerPriority@@@@@Z @ 45 NONAME ; void RCmManagerExt::CleanupGlobalPriorityArray(class RArray<class TBearerPriority> &) const
+	?Close@CCmTransactionHandler@@QAEXXZ @ 46 NONAME ABSENT ; void CCmTransactionHandler::Close(void)
+	?Close@RCmConnectionMethod@@QAEXXZ @ 47 NONAME ; void RCmConnectionMethod::Close(void)
+	?Close@RCmConnectionMethodExt@@QAEXXZ @ 48 NONAME ; void RCmConnectionMethodExt::Close(void)
+	?Close@RCmDestination@@QAEXXZ @ 49 NONAME ; void RCmDestination::Close(void)
+	?Close@RCmDestinationExt@@QAEXXZ @ 50 NONAME ; void RCmDestinationExt::Close(void)
+	?Close@RCmManager@@QAEXXZ @ 51 NONAME ; void RCmManager::Close(void)
+	?Close@RCmManagerExt@@QAEXXZ @ 52 NONAME ; void RCmManagerExt::Close(void)
+	?ConnectionMethodByIDL@RCmDestination@@QBE?AVRCmConnectionMethod@@H@Z @ 53 NONAME ; class RCmConnectionMethod RCmDestination::ConnectionMethodByIDL(int) const
+	?ConnectionMethodByIDL@RCmDestinationExt@@QAE?AVRCmConnectionMethodExt@@H@Z @ 54 NONAME ; class RCmConnectionMethodExt RCmDestinationExt::ConnectionMethodByIDL(int)
+	?ConnectionMethodCount@CCmDestinationImpl@@QAEHXZ @ 55 NONAME ABSENT ; int CCmDestinationImpl::ConnectionMethodCount(void)
+	?ConnectionMethodCount@RCmDestination@@QBEHXZ @ 56 NONAME ; int RCmDestination::ConnectionMethodCount(void) const
+	?ConnectionMethodCount@RCmDestinationExt@@QAEHXZ @ 57 NONAME ; int RCmDestinationExt::ConnectionMethodCount(void)
+	?ConnectionMethodL@CCmDestinationImpl@@QAEPAVCCmPluginBaseEng@@H@Z @ 58 NONAME ABSENT ; class CCmPluginBaseEng * CCmDestinationImpl::ConnectionMethodL(int)
+	?ConnectionMethodL@CCmManagerImpl@@QAEPAVCCmPluginBaseEng@@K@Z @ 59 NONAME ABSENT ; class CCmPluginBaseEng * CCmManagerImpl::ConnectionMethodL(unsigned long)
+	?ConnectionMethodL@CCmManagerImpl@@QAEXAAV?$RArray@K@@HHHH@Z @ 60 NONAME ABSENT ; void CCmManagerImpl::ConnectionMethodL(class RArray<unsigned long> &, int, int, int, int)
+	?ConnectionMethodL@RCmDestination@@QBE?AVRCmConnectionMethod@@H@Z @ 61 NONAME ; class RCmConnectionMethod RCmDestination::ConnectionMethodL(int) const
+	?ConnectionMethodL@RCmDestinationExt@@QAE?AVRCmConnectionMethodExt@@H@Z @ 62 NONAME ; class RCmConnectionMethodExt RCmDestinationExt::ConnectionMethodL(int)
+	?ConnectionMethodL@RCmManager@@QBE?AVRCmConnectionMethod@@K@Z @ 63 NONAME ; class RCmConnectionMethod RCmManager::ConnectionMethodL(unsigned long) const
+	?ConnectionMethodL@RCmManager@@QBEXAAV?$RArray@K@@HHH@Z @ 64 NONAME ; void RCmManager::ConnectionMethodL(class RArray<unsigned long> &, int, int, int) const
+	?ConnectionMethodL@RCmManagerExt@@QAE?AVRCmConnectionMethodExt@@K@Z @ 65 NONAME ; class RCmConnectionMethodExt RCmManagerExt::ConnectionMethodL(unsigned long)
+	?ConnectionMethodL@RCmManagerExt@@QAEXAAV?$RArray@K@@HHH@Z @ 66 NONAME ; void RCmManagerExt::ConnectionMethodL(class RArray<unsigned long> &, int, int, int)
+	?ConstructAndRunLD@CmPluginBaseSettingsDlg@@QAEHXZ @ 67 NONAME ABSENT ; int CmPluginBaseSettingsDlg::ConstructAndRunLD(void)
+	?ConstructL@CCmPluginBaseEng@@MAEXXZ @ 68 NONAME ABSENT ; void CCmPluginBaseEng::ConstructL(void)
+	?ConstructL@CCmPluginLanBase@@MAEXXZ @ 69 NONAME ABSENT ; void CCmPluginLanBase::ConstructL(void)
+	?ConvTableItem@CCmPluginBaseEng@@QAEPBUTCmAttribConvTable@@K@Z @ 70 NONAME ABSENT ; struct TCmAttribConvTable const * CCmPluginBaseEng::ConvTableItem(unsigned long)
+	?CopyConnectionMethodL@RCmManagerExt@@QAEHAAVRCmDestinationExt@@AAVRCmConnectionMethodExt@@@Z @ 71 NONAME ; int RCmManagerExt::CopyConnectionMethodL(class RCmDestinationExt &, class RCmConnectionMethodExt &)
+	?CreateConnectionMethodL@RCmDestinationExt@@QAE?AVRCmConnectionMethodExt@@K@Z @ 72 NONAME ; class RCmConnectionMethodExt RCmDestinationExt::CreateConnectionMethodL(unsigned long)
+	?CreateConnectionMethodL@RCmManagerExt@@QAE?AVRCmConnectionMethodExt@@K@Z @ 73 NONAME ; class RCmConnectionMethodExt RCmManagerExt::CreateConnectionMethodL(unsigned long)
+	?CreateCopyL@CCmPluginBaseEng@@UBEPAV1@XZ @ 74 NONAME ABSENT ; class CCmPluginBaseEng * CCmPluginBaseEng::CreateCopyL(void) const
+	?CreateCopyL@RCmConnectionMethodExt@@QAE?AV1@XZ @ 75 NONAME ; class RCmConnectionMethodExt RCmConnectionMethodExt::CreateCopyL(void)
+	?CreateDestinationL@RCmManagerExt@@QAE?AVRCmDestinationExt@@ABVTDesC16@@@Z @ 76 NONAME ; class RCmDestinationExt RCmManagerExt::CreateDestinationL(class TDesC16 const &)
+	?CreateNewL@CCmPluginBaseEng@@UAEXXZ @ 77 NONAME ABSENT ; void CCmPluginBaseEng::CreateNewL(void)
+	?CreateNewServiceRecordL@CCmPluginLanBase@@MAEXXZ @ 78 NONAME ABSENT ; void CCmPluginLanBase::CreateNewServiceRecordL(void)
+	?DeleteConnectionMethodL@RCmDestinationExt@@QAEXAAVRCmConnectionMethodExt@@@Z @ 79 NONAME ; void RCmDestinationExt::DeleteConnectionMethodL(class RCmConnectionMethodExt &)
+	?DeleteL@CCmPluginBaseEng@@UAEHHH@Z @ 80 NONAME ABSENT ; int CCmPluginBaseEng::DeleteL(int, int)
+	?DeleteL@RCmConnectionMethodExt@@QAEHXZ @ 81 NONAME ; int RCmConnectionMethodExt::DeleteL(void)
+	?DeleteLD@CCmDestinationImpl@@QAEXXZ @ 82 NONAME ABSENT ; void CCmDestinationImpl::DeleteLD(void)
+	?DeleteLD@RCmDestinationExt@@QAEXXZ @ 83 NONAME ; void RCmDestinationExt::DeleteLD(void)
+	?Destination@CCmPluginBaseEng@@UBEPAVCCmDestinationImpl@@XZ @ 84 NONAME ABSENT ; class CCmDestinationImpl * CCmPluginBaseEng::Destination(void) const
+	?DestinationL@CCmManagerImpl@@QAEPAVCCmDestinationImpl@@K@Z @ 85 NONAME ABSENT ; class CCmDestinationImpl * CCmManagerImpl::DestinationL(unsigned long)
+	?DestinationL@RCmConnectionMethod@@QBE?AVRCmDestination@@XZ @ 86 NONAME ; class RCmDestination RCmConnectionMethod::DestinationL(void) const
+	?DestinationL@RCmConnectionMethodExt@@QBE?AVRCmDestinationExt@@XZ @ 87 NONAME ; class RCmDestinationExt RCmConnectionMethodExt::DestinationL(void) const
+	?DestinationL@RCmManager@@QBE?AVRCmDestination@@K@Z @ 88 NONAME ; class RCmDestination RCmManager::DestinationL(unsigned long) const
+	?DestinationL@RCmManagerExt@@QAE?AVRCmDestinationExt@@K@Z @ 89 NONAME ; class RCmDestinationExt RCmManagerExt::DestinationL(unsigned long)
+	?DynInitMenuPaneL@CmPluginBaseSettingsDlg@@MAEXHPAVCEikMenuPane@@@Z @ 90 NONAME ABSENT ; void CmPluginBaseSettingsDlg::DynInitMenuPaneL(int, class CEikMenuPane *)
+	?DynInitMenuPaneL@CmPluginBaseSettingsDlgAdv@@UAEXHPAVCEikMenuPane@@@Z @ 91 NONAME ABSENT ; void CmPluginBaseSettingsDlgAdv::DynInitMenuPaneL(int, class CEikMenuPane *)
+	?DynInitMenuPaneL@CmPluginBaseSettingsDlgIp@@UAEXHPAVCEikMenuPane@@@Z @ 92 NONAME ABSENT ; void CmPluginBaseSettingsDlgIp::DynInitMenuPaneL(int, class CEikMenuPane *)
+	?EasyWlanIdL@CCmManagerImpl@@QAEKXZ @ 93 NONAME ABSENT ; unsigned long CCmManagerImpl::EasyWlanIdL(void)
+	?EasyWlanIdL@RCmManager@@QBEKXZ @ 94 NONAME ; unsigned long RCmManager::EasyWlanIdL(void) const
+	?EasyWlanIdL@RCmManagerExt@@QAEKXZ @ 95 NONAME ; unsigned long RCmManagerExt::EasyWlanIdL(void)
+	?ElementId@RCmDestination@@QBEKXZ @ 96 NONAME ; unsigned long RCmDestination::ElementId(void) const
+	?ElementId@RCmDestinationExt@@QAEKXZ @ 97 NONAME ; unsigned long RCmDestinationExt::ElementId(void)
+	?EnableChargeCardL@CCmPluginBaseEng@@AAEXH@Z @ 98 NONAME ABSENT ; void CCmPluginBaseEng::EnableChargeCardL(int)
+	?EnableLocationL@CCmPluginBaseEng@@AAEXH@Z @ 99 NONAME ABSENT ; void CCmPluginBaseEng::EnableLocationL(int)
+	?EnableProxyL@CCmPluginBaseEng@@AAEXH@Z @ 100 NONAME ABSENT ; void CCmPluginBaseEng::EnableProxyL(int)
+	?FeatureSupported@CCmPluginBaseEng@@SAHH@Z @ 101 NONAME ABSENT ; int CCmPluginBaseEng::FeatureSupported(int)
+	?GetBearerInfoBoolL@CCmManagerImpl@@QBEHKK@Z @ 102 NONAME ABSENT ; int CCmManagerImpl::GetBearerInfoBoolL(unsigned long, unsigned long) const
+	?GetBearerInfoBoolL@RCmManager@@QBEHKK@Z @ 103 NONAME ; int RCmManager::GetBearerInfoBoolL(unsigned long, unsigned long) const
+	?GetBearerInfoBoolL@RCmManagerExt@@QBEHKK@Z @ 104 NONAME ; int RCmManagerExt::GetBearerInfoBoolL(unsigned long, unsigned long) const
+	?GetBearerInfoIntL@CCmManagerImpl@@QBEKKK@Z @ 105 NONAME ABSENT ; unsigned long CCmManagerImpl::GetBearerInfoIntL(unsigned long, unsigned long) const
+	?GetBearerInfoIntL@RCmManager@@QBEKKK@Z @ 106 NONAME ; unsigned long RCmManager::GetBearerInfoIntL(unsigned long, unsigned long) const
+	?GetBearerInfoIntL@RCmManagerExt@@QBEKKK@Z @ 107 NONAME ; unsigned long RCmManagerExt::GetBearerInfoIntL(unsigned long, unsigned long) const
+	?GetBearerInfoString8L@CCmManagerImpl@@QBEPAVHBufC8@@KK@Z @ 108 NONAME ABSENT ; class HBufC8 * CCmManagerImpl::GetBearerInfoString8L(unsigned long, unsigned long) const
+	?GetBearerInfoString8L@RCmManager@@QBEPAVHBufC8@@KK@Z @ 109 NONAME ; class HBufC8 * RCmManager::GetBearerInfoString8L(unsigned long, unsigned long) const
+	?GetBearerInfoString8L@RCmManagerExt@@QBEPAVHBufC8@@KK@Z @ 110 NONAME ; class HBufC8 * RCmManagerExt::GetBearerInfoString8L(unsigned long, unsigned long) const
+	?GetBearerInfoStringL@CCmManagerImpl@@QBEPAVHBufC16@@KK@Z @ 111 NONAME ABSENT ; class HBufC16 * CCmManagerImpl::GetBearerInfoStringL(unsigned long, unsigned long) const
+	?GetBearerInfoStringL@RCmManager@@QBEPAVHBufC16@@KK@Z @ 112 NONAME ; class HBufC16 * RCmManager::GetBearerInfoStringL(unsigned long, unsigned long) const
+	?GetBearerInfoStringL@RCmManagerExt@@QBEPAVHBufC16@@KK@Z @ 113 NONAME ; class HBufC16 * RCmManagerExt::GetBearerInfoStringL(unsigned long, unsigned long) const
+	?GetBoolAttributeL@CCmPluginBaseEng@@UBEHK@Z @ 114 NONAME ABSENT ; int CCmPluginBaseEng::GetBoolAttributeL(unsigned long) const
+	?GetBoolAttributeL@RCmConnectionMethod@@QBEHK@Z @ 115 NONAME ; int RCmConnectionMethod::GetBoolAttributeL(unsigned long) const
+	?GetBoolAttributeL@RCmConnectionMethodExt@@QBEHK@Z @ 116 NONAME ; int RCmConnectionMethodExt::GetBoolAttributeL(unsigned long) const
+	?GetConnectionMethodInfoBoolL@CCmManagerImpl@@QBEHKK@Z @ 117 NONAME ABSENT ; int CCmManagerImpl::GetConnectionMethodInfoBoolL(unsigned long, unsigned long) const
+	?GetConnectionMethodInfoBoolL@RCmManager@@QBEHKK@Z @ 118 NONAME ; int RCmManager::GetConnectionMethodInfoBoolL(unsigned long, unsigned long) const
+	?GetConnectionMethodInfoBoolL@RCmManagerExt@@QBEHKK@Z @ 119 NONAME ; int RCmManagerExt::GetConnectionMethodInfoBoolL(unsigned long, unsigned long) const
+	?GetConnectionMethodInfoIntL@CCmManagerImpl@@QBEKKK@Z @ 120 NONAME ABSENT ; unsigned long CCmManagerImpl::GetConnectionMethodInfoIntL(unsigned long, unsigned long) const
+	?GetConnectionMethodInfoIntL@RCmManager@@QBEKKK@Z @ 121 NONAME ; unsigned long RCmManager::GetConnectionMethodInfoIntL(unsigned long, unsigned long) const
+	?GetConnectionMethodInfoIntL@RCmManagerExt@@QBEKKK@Z @ 122 NONAME ; unsigned long RCmManagerExt::GetConnectionMethodInfoIntL(unsigned long, unsigned long) const
+	?GetConnectionMethodInfoString8L@CCmManagerImpl@@QBEPAVHBufC8@@KK@Z @ 123 NONAME ABSENT ; class HBufC8 * CCmManagerImpl::GetConnectionMethodInfoString8L(unsigned long, unsigned long) const
+	?GetConnectionMethodInfoString8L@RCmManager@@QBEPAVHBufC8@@KK@Z @ 124 NONAME ; class HBufC8 * RCmManager::GetConnectionMethodInfoString8L(unsigned long, unsigned long) const
+	?GetConnectionMethodInfoString8L@RCmManagerExt@@QBEPAVHBufC8@@KK@Z @ 125 NONAME ; class HBufC8 * RCmManagerExt::GetConnectionMethodInfoString8L(unsigned long, unsigned long) const
+	?GetConnectionMethodInfoStringL@CCmManagerImpl@@QBEPAVHBufC16@@KK@Z @ 126 NONAME ABSENT ; class HBufC16 * CCmManagerImpl::GetConnectionMethodInfoStringL(unsigned long, unsigned long) const
+	?GetConnectionMethodInfoStringL@RCmManager@@QBEPAVHBufC16@@KK@Z @ 127 NONAME ; class HBufC16 * RCmManager::GetConnectionMethodInfoStringL(unsigned long, unsigned long) const
+	?GetConnectionMethodInfoStringL@RCmManagerExt@@QBEPAVHBufC16@@KK@Z @ 128 NONAME ; class HBufC16 * RCmManagerExt::GetConnectionMethodInfoStringL(unsigned long, unsigned long) const
+	?GetHelpContext@CmPluginBaseSettingsDlg@@UBEXAAVTCoeHelpContext@@@Z @ 129 NONAME ABSENT ; void CmPluginBaseSettingsDlg::GetHelpContext(class TCoeHelpContext &) const
+	?GetIPv6DNSTypeL@CmPluginBaseSettingsDlg@@QAEHKK@Z @ 130 NONAME ABSENT ; int CmPluginBaseSettingsDlg::GetIPv6DNSTypeL(unsigned long, unsigned long)
+	?GetIntAttributeL@CCmPluginBaseEng@@UBEKK@Z @ 131 NONAME ABSENT ; unsigned long CCmPluginBaseEng::GetIntAttributeL(unsigned long) const
+	?GetIntAttributeL@RCmConnectionMethod@@QBEKK@Z @ 132 NONAME ; unsigned long RCmConnectionMethod::GetIntAttributeL(unsigned long) const
+	?GetIntAttributeL@RCmConnectionMethodExt@@QBEKK@Z @ 133 NONAME ; unsigned long RCmConnectionMethodExt::GetIntAttributeL(unsigned long) const
+	?GetString8AttributeL@CCmPluginBaseEng@@UBEPAVHBufC8@@K@Z @ 134 NONAME ABSENT ; class HBufC8 * CCmPluginBaseEng::GetString8AttributeL(unsigned long) const
+	?GetString8AttributeL@RCmConnectionMethod@@QBEPAVHBufC8@@K@Z @ 135 NONAME ; class HBufC8 * RCmConnectionMethod::GetString8AttributeL(unsigned long) const
+	?GetString8AttributeL@RCmConnectionMethodExt@@QBEPAVHBufC8@@K@Z @ 136 NONAME ; class HBufC8 * RCmConnectionMethodExt::GetString8AttributeL(unsigned long) const
+	?GetStringAttributeL@CCmPluginBaseEng@@UBEPAVHBufC16@@K@Z @ 137 NONAME ABSENT ; class HBufC16 * CCmPluginBaseEng::GetStringAttributeL(unsigned long) const
+	?GetStringAttributeL@RCmConnectionMethod@@QBEPAVHBufC16@@K@Z @ 138 NONAME ; class HBufC16 * RCmConnectionMethod::GetStringAttributeL(unsigned long) const
+	?GetStringAttributeL@RCmConnectionMethodExt@@QBEPAVHBufC16@@K@Z @ 139 NONAME ; class HBufC16 * RCmConnectionMethodExt::GetStringAttributeL(unsigned long) const
+	?GlobalBearerPriority@CCmPluginBaseEng@@IBEHABVTDesC16@@@Z @ 140 NONAME ABSENT ; int CCmPluginBaseEng::GlobalBearerPriority(class TDesC16 const &) const
+	?GlobalUiBearerPriority@CCmPluginBaseEng@@IBEHABVTDesC16@@@Z @ 141 NONAME ABSENT ; int CCmPluginBaseEng::GlobalUiBearerPriority(class TDesC16 const &) const
+	?HandleListBoxEventL@CmPluginBaseSettingsDlg@@MAEXPAVCEikListBox@@W4TListBoxEvent@MEikListBoxObserver@@@Z @ 142 NONAME ABSENT ; void CmPluginBaseSettingsDlg::HandleListBoxEventL(class CEikListBox *, enum MEikListBoxObserver::TListBoxEvent)
+	?HandleListboxDataChangeL@CmPluginBaseSettingsDlg@@QAEXXZ @ 143 NONAME ABSENT ; void CmPluginBaseSettingsDlg::HandleListboxDataChangeL(void)
+	?IAPRecordElementId@CCmPluginBaseEng@@QBEKXZ @ 144 NONAME ABSENT ; unsigned long CCmPluginBaseEng::IAPRecordElementId(void) const
+	?IconL@CCmDestinationImpl@@QAEPAVCGulIcon@@XZ @ 145 NONAME ABSENT ; class CGulIcon * CCmDestinationImpl::IconL(void)
+	?IconL@RCmDestination@@QBEPAVCGulIcon@@XZ @ 146 NONAME ABSENT ; class CGulIcon * RCmDestination::IconL(void) const
+	?IconL@RCmDestinationExt@@QAEPAVCGulIcon@@XZ @ 147 NONAME ABSENT ; class CGulIcon * RCmDestinationExt::IconL(void)
+	?Id@RCmDestination@@QBEKXZ @ 148 NONAME ; unsigned long RCmDestination::Id(void) const
+	?Id@RCmDestinationExt@@QAEKXZ @ 149 NONAME ; unsigned long RCmDestinationExt::Id(void)
+	?InitTextsL@CmPluginBaseSettingsDlg@@UAEXXZ @ 150 NONAME ABSENT ; void CmPluginBaseSettingsDlg::InitTextsL(void)
+	?InitializeWithUiL@CCmPluginLanBase@@UAEHH@Z @ 151 NONAME ABSENT ; int CCmPluginLanBase::InitializeWithUiL(int)
+	?IsConnectedL@CCmDestinationImpl@@QBEHXZ @ 152 NONAME ABSENT ; int CCmDestinationImpl::IsConnectedL(void) const
+	?IsConnectedL@RCmDestination@@QBEHXZ @ 153 NONAME ; int RCmDestination::IsConnectedL(void) const
+	?IsConnectedL@RCmDestinationExt@@QBEHXZ @ 154 NONAME ; int RCmDestinationExt::IsConnectedL(void) const
+	?IsHidden@CCmDestinationImpl@@QAEHXZ @ 155 NONAME ABSENT ; int CCmDestinationImpl::IsHidden(void)
+	?IsHidden@RCmDestination@@QBEHXZ @ 156 NONAME ; int RCmDestination::IsHidden(void) const
+	?IsHidden@RCmDestinationExt@@QAEHXZ @ 157 NONAME ; int RCmDestinationExt::IsHidden(void)
+	?IsProtected@CCmPluginBaseEng@@QBEHXZ @ 158 NONAME ABSENT ; int CCmPluginBaseEng::IsProtected(void) const
+	?IsUnspecifiedIPv4Address@@YAHABVTDesC16@@@Z @ 159 NONAME ABSENT ; int IsUnspecifiedIPv4Address(class TDesC16 const &)
+	?LoadL@CCmPluginBaseEng@@UAEXK@Z @ 160 NONAME ABSENT ; void CCmPluginBaseEng::LoadL(unsigned long)
+	?LoadResourceL@CmPluginBaseSettingsDlg@@IAEHABVTDesC16@@@Z @ 161 NONAME ABSENT ; int CmPluginBaseSettingsDlg::LoadResourceL(class TDesC16 const &)
+	?LoadServiceSettingL@CCmPluginBaseEng@@MAEXXZ @ 162 NONAME ABSENT ; void CCmPluginBaseEng::LoadServiceSettingL(void)
+	?LoadServiceSettingL@CCmPluginLanBase@@UAEXXZ @ 163 NONAME ABSENT ; void CCmPluginLanBase::LoadServiceSettingL(void)
+	?MetadataL@RCmDestination@@QBEKW4TSnapMetadataField@CMManager@@@Z @ 164 NONAME ; unsigned long RCmDestination::MetadataL(enum CMManager::TSnapMetadataField) const
+	?MetadataL@RCmDestinationExt@@QBEKW4TSnapMetadataField@CMManager@@@Z @ 165 NONAME ; unsigned long RCmDestinationExt::MetadataL(enum CMManager::TSnapMetadataField) const
+	?ModifyPriorityL@RCmDestinationExt@@QAEXAAVRCmConnectionMethodExt@@I@Z @ 166 NONAME ; void RCmDestinationExt::ModifyPriorityL(class RCmConnectionMethodExt &, unsigned int)
+	?MoveConnectionMethodL@RCmManagerExt@@QAEHAAVRCmDestinationExt@@0AAVRCmConnectionMethodExt@@@Z @ 167 NONAME ; int RCmManagerExt::MoveConnectionMethodL(class RCmDestinationExt &, class RCmDestinationExt &, class RCmConnectionMethodExt &)
+	?NameLC@CCmDestinationImpl@@QAEPAVHBufC16@@XZ @ 168 NONAME ABSENT ; class HBufC16 * CCmDestinationImpl::NameLC(void)
+	?NameLC@RCmDestination@@QBEPAVHBufC16@@XZ @ 169 NONAME ; class HBufC16 * RCmDestination::NameLC(void) const
+	?NameLC@RCmDestinationExt@@QAEPAVHBufC16@@XZ @ 170 NONAME ; class HBufC16 * RCmDestinationExt::NameLC(void)
+	?NewL@CCmApplicationSettingsUi@@SAPAV1@XZ @ 171 NONAME ; class CCmApplicationSettingsUi * CCmApplicationSettingsUi::NewL(void)
+	?NewL@CCmApplicationSettingsUiImpl@@SAPAV1@XZ @ 172 NONAME ABSENT ; class CCmApplicationSettingsUiImpl * CCmApplicationSettingsUiImpl::NewL(void)
+	?NewL@CCmConnSettingsUiImpl@@SAPAV1@PAVCCmManagerImpl@@@Z @ 173 NONAME ABSENT ; class CCmConnSettingsUiImpl * CCmConnSettingsUiImpl::NewL(class CCmManagerImpl *)
+	?NewL@CCmDestinationImpl@@SAPAV1@AAVCCmManagerImpl@@ABVTDesC16@@@Z @ 174 NONAME ABSENT ; class CCmDestinationImpl * CCmDestinationImpl::NewL(class CCmManagerImpl &, class TDesC16 const &)
+	?NewL@CCmDestinationImpl@@SAPAV1@AAVCCmManagerImpl@@I@Z @ 175 NONAME ABSENT ; class CCmDestinationImpl * CCmDestinationImpl::NewL(class CCmManagerImpl &, unsigned int)
+	?NewL@CCmPluginMultiLineDialog@@SAPAV1@AAVTDes16@@0W4TTone@CAknQueryDialog@@@Z @ 176 NONAME ABSENT ; class CCmPluginMultiLineDialog * CCmPluginMultiLineDialog::NewL(class TDes16 &, class TDes16 &, enum CAknQueryDialog::TTone)
+	?NewL@CCmSettingsUi@@SAPAV1@XZ @ 177 NONAME ABSENT ; class CCmSettingsUi * CCmSettingsUi::NewL(void)
+	?NewLC@CCmApplicationSettingsUi@@SAPAV1@XZ @ 178 NONAME ; class CCmApplicationSettingsUi * CCmApplicationSettingsUi::NewLC(void)
+	?NumOfConnMethodReferencesL@CCmPluginBaseEng@@UAEHXZ @ 179 NONAME ABSENT ; int CCmPluginBaseEng::NumOfConnMethodReferencesL(void)
+	?OkToExitL@CmPluginBaseSettingsDlg@@MAEHH@Z @ 180 NONAME ABSENT ; int CmPluginBaseSettingsDlg::OkToExitL(int)
+	?OpenL@RCmManager@@QAEXXZ @ 181 NONAME ; void RCmManager::OpenL(void)
+	?OpenL@RCmManagerExt@@QAEXXZ @ 182 NONAME ; void RCmManagerExt::OpenL(void)
+	?OpenLC@RCmManager@@QAEXXZ @ 183 NONAME ; void RCmManager::OpenLC(void)
+	?OpenLC@RCmManagerExt@@QAEXXZ @ 184 NONAME ; void RCmManagerExt::OpenLC(void)
+	?PreLayoutDynInitL@CmPluginBaseSettingsDlg@@MAEXXZ @ 185 NONAME ABSENT ; void CmPluginBaseSettingsDlg::PreLayoutDynInitL(void)
+	?PrepareToLoadRecordsL@CCmPluginBaseEng@@MAEXXZ @ 186 NONAME ABSENT ; void CCmPluginBaseEng::PrepareToLoadRecordsL(void)
+	?PrepareToUpdateRecordsL@CCmPluginBaseEng@@MAEXXZ @ 187 NONAME ABSENT ; void CCmPluginBaseEng::PrepareToUpdateRecordsL(void)
+	?PrepareToUpdateRecordsL@CCmPluginLanBase@@UAEXXZ @ 188 NONAME ABSENT ; void CCmPluginLanBase::PrepareToUpdateRecordsL(void)
+	?PriorityL@CCmDestinationImpl@@QAEIAAVCCmPluginBaseEng@@@Z @ 189 NONAME ABSENT ; unsigned int CCmDestinationImpl::PriorityL(class CCmPluginBaseEng &)
+	?PriorityL@RCmDestination@@QBEIABVRCmConnectionMethod@@@Z @ 190 NONAME ; unsigned int RCmDestination::PriorityL(class RCmConnectionMethod const &) const
+	?PriorityL@RCmDestinationExt@@QAEIABVRCmConnectionMethodExt@@@Z @ 191 NONAME ; unsigned int RCmDestinationExt::PriorityL(class RCmConnectionMethodExt const &)
+	?ProcessCommandL@CmPluginBaseSettingsDlg@@UAEXH@Z @ 192 NONAME ABSENT ; void CmPluginBaseSettingsDlg::ProcessCommandL(int)
+	?ProtectionLevel@CCmDestinationImpl@@QAE?AW4TProtectionLevel@CMManager@@XZ @ 193 NONAME ABSENT ; enum CMManager::TProtectionLevel CCmDestinationImpl::ProtectionLevel(void)
+	?ProtectionLevel@RCmDestination@@QBE?AW4TProtectionLevel@CMManager@@XZ @ 194 NONAME ; enum CMManager::TProtectionLevel RCmDestination::ProtectionLevel(void) const
+	?ProtectionLevel@RCmDestinationExt@@QAE?AW4TProtectionLevel@CMManager@@XZ @ 195 NONAME ; enum CMManager::TProtectionLevel RCmDestinationExt::ProtectionLevel(void)
+	?ReadDefConnL@RCmManager@@QAEXAAUTCmDefConnValue@@@Z @ 196 NONAME ; void RCmManager::ReadDefConnL(struct TCmDefConnValue &)
+	?ReadDefConnL@RCmManagerExt@@QAEXAAUTCmDefConnValue@@@Z @ 197 NONAME ; void RCmManagerExt::ReadDefConnL(struct TCmDefConnValue &)
+	?ReadOnlyAttributeL@@YAHPAVCCmPluginBaseEng@@KPBX@Z @ 198 NONAME ABSENT ; int ReadOnlyAttributeL(class CCmPluginBaseEng *, unsigned long, void const *)
+	?RemoveAllReferencesL@RCmManagerExt@@QAEXAAVRCmConnectionMethodExt@@@Z @ 199 NONAME ; void RCmManagerExt::RemoveAllReferencesL(class RCmConnectionMethodExt &)
+	?RemoveCommonConversionTable@CCmPluginBaseEng@@IAEXPBUTCmCommonAttrConvArrayItem@@@Z @ 200 NONAME ABSENT ; void CCmPluginBaseEng::RemoveCommonConversionTable(struct TCmCommonAttrConvArrayItem const *)
+	?RemoveConnectionMethodL@RCmDestinationExt@@QAEXVRCmConnectionMethodExt@@@Z @ 201 NONAME ; void RCmDestinationExt::RemoveConnectionMethodL(class RCmConnectionMethodExt)
+	?RemoveConnectionMethodL@RCmManagerExt@@QAEXAAVRCmDestinationExt@@AAVRCmConnectionMethodExt@@@Z @ 202 NONAME ; void RCmManagerExt::RemoveConnectionMethodL(class RCmDestinationExt &, class RCmConnectionMethodExt &)
+	?RemoveConversionTable@CCmPluginBaseEng@@IAEXPBUTCmAttribConvTable@@@Z @ 203 NONAME ABSENT ; void CCmPluginBaseEng::RemoveConversionTable(struct TCmAttribConvTable const *)
+	?RemoveFromPool@CCmDestinationImpl@@QAEXXZ @ 204 NONAME ABSENT ; void CCmDestinationImpl::RemoveFromPool(void)
+	?RemoveResourceFile@CCmPluginBaseEng@@IAEXABVTDesC16@@@Z @ 205 NONAME ABSENT ; void CCmPluginBaseEng::RemoveResourceFile(class TDesC16 const &)
+	?Reset@CCmPluginBaseEng@@IAEXXZ @ 206 NONAME ABSENT ; void CCmPluginBaseEng::Reset(void)
+	?RestoreAttributeL@CCmPluginBaseEng@@UAEXK@Z @ 207 NONAME ABSENT ; void CCmPluginBaseEng::RestoreAttributeL(unsigned long)
+	?RunAdvancedSettingsL@CmPluginBaseSettingsDlgAdv@@UAEXXZ @ 208 NONAME ABSENT ; void CmPluginBaseSettingsDlgAdv::RunAdvancedSettingsL(void)
+	?RunAdvancedSettingsL@CmPluginBaseSettingsDlgIp@@UAEXXZ @ 209 NONAME ABSENT ; void CmPluginBaseSettingsDlgIp::RunAdvancedSettingsL(void)
+	?RunApplicationSettingsL@CCmApplicationSettingsUi@@QAEHAAUTCmSettingSelection@@@Z @ 210 NONAME ; int CCmApplicationSettingsUi::RunApplicationSettingsL(struct TCmSettingSelection &)
+	?RunApplicationSettingsL@CCmApplicationSettingsUi@@QAEHAAUTCmSettingSelection@@IAAV?$RArray@K@@@Z @ 211 NONAME ; int CCmApplicationSettingsUi::RunApplicationSettingsL(struct TCmSettingSelection &, unsigned int, class RArray<unsigned long> &)
+	?RunApplicationSettingsL@CCmApplicationSettingsUiImpl@@QAEHAAUTCmSettingSelection@@@Z @ 212 NONAME ABSENT ; int CCmApplicationSettingsUiImpl::RunApplicationSettingsL(struct TCmSettingSelection &)
+	?RunApplicationSettingsL@CCmConnSettingsUiImpl@@QAEHAAUTCmSettingSelection@@IAAV?$RArray@K@@@Z @ 213 NONAME ABSENT ; int CCmConnSettingsUiImpl::RunApplicationSettingsL(struct TCmSettingSelection &, unsigned int, class RArray<unsigned long> &)
+	?RunSettingsL@CCmPluginLanBase@@UAEHXZ @ 214 NONAME ABSENT ; int CCmPluginLanBase::RunSettingsL(void)
+	?RunSettingsL@CCmSettingsUi@@QAE?AW4TResult@1@XZ @ 215 NONAME ABSENT ; enum CCmSettingsUi::TResult CCmSettingsUi::RunSettingsL(void)
+	?SelectDestinationDlgL@CCmSettingsUi@@QAEHAAK@Z @ 216 NONAME ABSENT ; int CCmSettingsUi::SelectDestinationDlgL(unsigned long &)
+	?SelectItem@CmPluginBaseSettingsDlg@@IAEXH@Z @ 217 NONAME ABSENT ; void CmPluginBaseSettingsDlg::SelectItem(int)
+	?ServiceRecord@CCmPluginLanBase@@ABEAAVCCDLANServiceRecord@CommsDat@@XZ @ 218 NONAME ABSENT ; class CommsDat::CCDLANServiceRecord & CCmPluginLanBase::ServiceRecord(void) const
+	?ServiceRecordIdLC@CCmPluginLanBase@@MAEXAAPAVHBufC16@@AAK@Z @ 219 NONAME ABSENT ; void CCmPluginLanBase::ServiceRecordIdLC(class HBufC16 * &, unsigned long &)
+	?Session@CCmPluginBaseEng@@QBEAAVCMDBSession@CommsDat@@XZ @ 220 NONAME ABSENT ; class CommsDat::CMDBSession & CCmPluginBaseEng::Session(void) const
+	?SetBoolAttributeL@CCmPluginBaseEng@@UAEXKH@Z @ 221 NONAME ABSENT ; void CCmPluginBaseEng::SetBoolAttributeL(unsigned long, int)
+	?SetBoolAttributeL@RCmConnectionMethodExt@@QAEXKH@Z @ 222 NONAME ; void RCmConnectionMethodExt::SetBoolAttributeL(unsigned long, int)
+	?SetDNSServerAddressL@CCmPluginBaseEng@@QAEXKABVTDesC16@@K0KH@Z @ 223 NONAME ABSENT ; void CCmPluginBaseEng::SetDNSServerAddressL(unsigned long, class TDesC16 const &, unsigned long, class TDesC16 const &, unsigned long, int)
+	?SetHiddenL@CCmDestinationImpl@@QAEXH@Z @ 224 NONAME ABSENT ; void CCmDestinationImpl::SetHiddenL(int)
+	?SetHiddenL@RCmDestinationExt@@QAEXH@Z @ 225 NONAME ; void RCmDestinationExt::SetHiddenL(int)
+	?SetIconL@CCmDestinationImpl@@QAEXK@Z @ 226 NONAME ABSENT ; void CCmDestinationImpl::SetIconL(unsigned long)
+	?SetIconL@RCmDestinationExt@@QAEXK@Z @ 227 NONAME ABSENT ; void RCmDestinationExt::SetIconL(unsigned long)
+	?SetIntAttributeL@CCmPluginBaseEng@@UAEXKK@Z @ 228 NONAME ABSENT ; void CCmPluginBaseEng::SetIntAttributeL(unsigned long, unsigned long)
+	?SetIntAttributeL@RCmConnectionMethodExt@@QAEXKK@Z @ 229 NONAME ; void RCmConnectionMethodExt::SetIntAttributeL(unsigned long, unsigned long)
+	?SetMetadataL@RCmDestinationExt@@QAEXW4TSnapMetadataField@CMManager@@K@Z @ 230 NONAME ; void RCmDestinationExt::SetMetadataL(enum CMManager::TSnapMetadataField, unsigned long)
+	?SetNameL@CCmDestinationImpl@@QAEXABVTDesC16@@@Z @ 231 NONAME ABSENT ; void CCmDestinationImpl::SetNameL(class TDesC16 const &)
+	?SetNameL@RCmDestinationExt@@QAEXABVTDesC16@@@Z @ 232 NONAME ; void RCmDestinationExt::SetNameL(class TDesC16 const &)
+	?SetProtectionL@CCmDestinationImpl@@QAEXW4TProtectionLevel@CMManager@@@Z @ 233 NONAME ABSENT ; void CCmDestinationImpl::SetProtectionL(enum CMManager::TProtectionLevel)
+	?SetProtectionL@RCmDestinationExt@@QAEXW4TProtectionLevel@CMManager@@@Z @ 234 NONAME ; void RCmDestinationExt::SetProtectionL(enum CMManager::TProtectionLevel)
+	?SetProxyServerNameL@@YAHPAVCCmPluginBaseEng@@KPBX@Z @ 235 NONAME ABSENT ; int SetProxyServerNameL(class CCmPluginBaseEng *, unsigned long, void const *)
+	?SetString8AttributeL@CCmPluginBaseEng@@UAEXKABVTDesC8@@@Z @ 236 NONAME ABSENT ; void CCmPluginBaseEng::SetString8AttributeL(unsigned long, class TDesC8 const &)
+	?SetString8AttributeL@RCmConnectionMethodExt@@QAEXKABVTDesC8@@@Z @ 237 NONAME ; void RCmConnectionMethodExt::SetString8AttributeL(unsigned long, class TDesC8 const &)
+	?SetStringAttributeL@CCmPluginBaseEng@@UAEXKABVTDesC16@@@Z @ 238 NONAME ABSENT ; void CCmPluginBaseEng::SetStringAttributeL(unsigned long, class TDesC16 const &)
+	?SetStringAttributeL@RCmConnectionMethodExt@@QAEXKABVTDesC16@@@Z @ 239 NONAME ; void RCmConnectionMethodExt::SetStringAttributeL(unsigned long, class TDesC16 const &)
+	?ShowConfirmationQueryL@TCmCommonUi@@SAHH@Z @ 240 NONAME ABSENT ; int TCmCommonUi::ShowConfirmationQueryL(int)
+	?ShowConfirmationQueryL@TCmCommonUi@@SAHHABVTDesC16@@@Z @ 241 NONAME ABSENT ; int TCmCommonUi::ShowConfirmationQueryL(int, class TDesC16 const &)
+	?ShowConfirmationQueryWithInputL@TCmCommonUi@@SAHHAAVTDes16@@@Z @ 242 NONAME ABSENT ; int TCmCommonUi::ShowConfirmationQueryWithInputL(int, class TDes16 &)
+	?ShowNoteL@TCmCommonUi@@SAHABVTDesC16@@W4TCmNoteType@1@@Z @ 243 NONAME ABSENT ; int TCmCommonUi::ShowNoteL(class TDesC16 const &, enum TCmCommonUi::TCmNoteType)
+	?ShowNoteL@TCmCommonUi@@SAHHABVTDesC16@@W4TCmNoteType@1@@Z @ 244 NONAME ABSENT ; int TCmCommonUi::ShowNoteL(int, class TDesC16 const &, enum TCmCommonUi::TCmNoteType)
+	?ShowNoteL@TCmCommonUi@@SAHHW4TCmNoteType@1@@Z @ 245 NONAME ABSENT ; int TCmCommonUi::ShowNoteL(int, enum TCmCommonUi::TCmNoteType)
+	?ShowPopupIPv4DNSEditorL@CmPluginBaseSettingsDlg@@QAEHKKKK@Z @ 246 NONAME ABSENT ; int CmPluginBaseSettingsDlg::ShowPopupIPv4DNSEditorL(unsigned long, unsigned long, unsigned long, unsigned long)
+	?ShowPopupIPv6DNSEditorL@CmPluginBaseSettingsDlg@@QAEHPBKKKK@Z @ 247 NONAME ABSENT ; int CmPluginBaseSettingsDlg::ShowPopupIPv6DNSEditorL(unsigned long const *, unsigned long, unsigned long, unsigned long)
+	?ShowPopupIpSettingPageL@CmPluginBaseSettingsDlg@@QAEHKK@Z @ 248 NONAME ABSENT ; int CmPluginBaseSettingsDlg::ShowPopupIpSettingPageL(unsigned long, unsigned long)
+	?ShowPopupListL@TCmCommonUi@@SAHABVTDesC16@@PAVCDesC16ArrayFlat@@PAV?$CArrayPtr@VCGulIcon@@@@IAAH@Z @ 249 NONAME ABSENT ; int TCmCommonUi::ShowPopupListL(class TDesC16 const &, class CDesC16ArrayFlat *, class CArrayPtr<class CGulIcon> *, unsigned int, int &)
+	?ShowPopupPasswordSettingPageL@CmPluginBaseSettingsDlg@@QAEHKK@Z @ 250 NONAME ABSENT ; int CmPluginBaseSettingsDlg::ShowPopupPasswordSettingPageL(unsigned long, unsigned long)
+	?ShowPopupPortNumSettingPageL@CmPluginBaseSettingsDlg@@QAEHKK@Z @ 251 NONAME ABSENT ; int CmPluginBaseSettingsDlg::ShowPopupPortNumSettingPageL(unsigned long, unsigned long)
+	?ShowPopupSettingPageL@CmPluginBaseSettingsDlg@@MAEHKH@Z @ 252 NONAME ABSENT ; int CmPluginBaseSettingsDlg::ShowPopupSettingPageL(unsigned long, int)
+	?ShowPopupSettingPageL@CmPluginBaseSettingsDlgAdv@@MAEHHH@Z @ 253 NONAME ABSENT ; int CmPluginBaseSettingsDlgAdv::ShowPopupSettingPageL(int, int)
+	?ShowPopupTextSettingPageL@CmPluginBaseSettingsDlg@@QAEHKK@Z @ 254 NONAME ABSENT ; int CmPluginBaseSettingsDlg::ShowPopupTextSettingPageL(unsigned long, unsigned long)
+	?ShowRadioButtonSettingPageL@CmPluginBaseSettingsDlg@@QAEHAAVCDesC16ArrayFlat@@AAHK@Z @ 255 NONAME ABSENT ; int CmPluginBaseSettingsDlg::ShowRadioButtonSettingPageL(class CDesC16ArrayFlat &, int &, unsigned long)
+	?ShowRadioButtonSettingPageL@CmPluginBaseSettingsDlg@@QAEHPBKAAHK@Z @ 256 NONAME ABSENT ; int CmPluginBaseSettingsDlg::ShowRadioButtonSettingPageL(unsigned long const *, int &, unsigned long)
+	?StringAttributeWithDefaultL@CmPluginBaseSettingsDlg@@IAEPAVHBufC16@@KK@Z @ 257 NONAME ABSENT ; class HBufC16 * CmPluginBaseSettingsDlg::StringAttributeWithDefaultL(unsigned long, unsigned long)
+	?SupportedBearersL@RCmManagerExt@@QBEXAAV?$RArray@K@@@Z @ 258 NONAME ; void RCmManagerExt::SupportedBearersL(class RArray<unsigned long> &) const
+	?UncategorizedIconL@RCmManagerExt@@QBEPAVCGulIcon@@XZ @ 259 NONAME ABSENT ; class CGulIcon * RCmManagerExt::UncategorizedIconL(void) const
+	?UpdateBearerPriorityArrayL@RCmManagerExt@@QAEXABV?$RArray@VTBearerPriority@@@@@Z @ 260 NONAME ; void RCmManagerExt::UpdateBearerPriorityArrayL(class RArray<class TBearerPriority> const &)
+	?UpdateL@CCmDestinationImpl@@QAEXXZ @ 261 NONAME ABSENT ; void CCmDestinationImpl::UpdateL(void)
+	?UpdateL@CCmPluginBaseEng@@UAEXXZ @ 262 NONAME ABSENT ; void CCmPluginBaseEng::UpdateL(void)
+	?UpdateL@RCmConnectionMethodExt@@QAEXXZ @ 263 NONAME ; void RCmConnectionMethodExt::UpdateL(void)
+	?UpdateL@RCmDestinationExt@@QAEXXZ @ 264 NONAME ; void RCmDestinationExt::UpdateL(void)
+	?UpdateListBoxContentL@CmPluginBaseSettingsDlg@@MAEXXZ @ 265 NONAME ABSENT ; void CmPluginBaseSettingsDlg::UpdateListBoxContentL(void)
+	?UpdateListBoxContentL@CmPluginBaseSettingsDlgAdv@@MAEXXZ @ 266 NONAME ABSENT ; void CmPluginBaseSettingsDlgAdv::UpdateListBoxContentL(void)
+	?UpdateListBoxContentL@CmPluginBaseSettingsDlgIp@@MAEXXZ @ 267 NONAME ABSENT ; void CmPluginBaseSettingsDlgIp::UpdateListBoxContentL(void)
+	?UpdateProxyRecordL@CCmPluginBaseEng@@AAEXXZ @ 268 NONAME ABSENT ; void CCmPluginBaseEng::UpdateProxyRecordL(void)
+	?UpdateServiceRecordL@CCmPluginBaseEng@@MAEXXZ @ 269 NONAME ABSENT ; void CCmPluginBaseEng::UpdateServiceRecordL(void)
+	?WriteDefConnL@RCmManagerExt@@QAEXABUTCmDefConnValue@@@Z @ 270 NONAME ; void RCmManagerExt::WriteDefConnL(struct TCmDefConnValue const &)
+	??0RCmDestination@@QAE@XZ @ 271 NONAME ; RCmDestination::RCmDestination(void)
+	??0RCmDestinationExt@@QAE@XZ @ 272 NONAME ; RCmDestinationExt::RCmDestinationExt(void)
+	??8RCmDestination@@QBEHABV0@@Z @ 273 NONAME ; int RCmDestination::operator==(class RCmDestination const &) const
+	??8RCmDestinationExt@@QBEHABV0@@Z @ 274 NONAME ; int RCmDestinationExt::operator==(class RCmDestinationExt const &) const
+	??9RCmDestination@@QBEHABV0@@Z @ 275 NONAME ; int RCmDestination::operator!=(class RCmDestination const &) const
+	??9RCmDestinationExt@@QBEHABV0@@Z @ 276 NONAME ; int RCmDestinationExt::operator!=(class RCmDestinationExt const &) const
+	??0CCmPluginBase@@QAE@PAVCCmPluginBaseEng@@@Z @ 277 NONAME ABSENT ; CCmPluginBase::CCmPluginBase(class CCmPluginBaseEng *)
+	??1CCmPluginBase@@UAE@XZ @ 278 NONAME ABSENT ; CCmPluginBase::~CCmPluginBase(void)
+	?AddResourceFileL@CCmPluginBase@@IAEXABVTDesC16@@@Z @ 279 NONAME ABSENT ; void CCmPluginBase::AddResourceFileL(class TDesC16 const &)
+	?AllocReadL@CCmPluginBase@@IBEPAVHBufC16@@H@Z @ 280 NONAME ABSENT ; class HBufC16 * CCmPluginBase::AllocReadL(int) const
+	?CmMgr@CCmPluginBase@@QBEAAVCCmManagerImpl@@XZ @ 281 NONAME ABSENT ; class CCmManagerImpl & CCmPluginBase::CmMgr(void) const
+	?ConstructL@CCmPluginBase@@IAEXXZ @ 282 NONAME ABSENT ; void CCmPluginBase::ConstructL(void)
+	?CreateCopyL@CCmPluginBase@@QBEPAV1@XZ @ 283 NONAME ABSENT ; class CCmPluginBase * CCmPluginBase::CreateCopyL(void) const
+	?CreateNewL@CCmPluginBase@@QAEXXZ @ 284 NONAME ABSENT ; void CCmPluginBase::CreateNewL(void)
+	?DeleteL@CCmPluginBase@@QAEHHH@Z @ 285 NONAME ABSENT ; int CCmPluginBase::DeleteL(int, int)
+	?Destination@CCmPluginBase@@QBEPAVCCmDestinationImpl@@XZ @ 286 NONAME ABSENT ; class CCmDestinationImpl * CCmPluginBase::Destination(void) const
+	?EnableChargeCardL@CCmPluginBase@@AAEXH@Z @ 287 NONAME ABSENT ; void CCmPluginBase::EnableChargeCardL(int)
+	?EnableLocationL@CCmPluginBase@@AAEXH@Z @ 288 NONAME ABSENT ; void CCmPluginBase::EnableLocationL(int)
+	?EnableProxyL@CCmPluginBase@@AAEXH@Z @ 289 NONAME ABSENT ; void CCmPluginBase::EnableProxyL(int)
+	?GetBoolAttributeL@CCmPluginBase@@QBEHK@Z @ 290 NONAME ABSENT ; int CCmPluginBase::GetBoolAttributeL(unsigned long) const
+	?GetConnectionMethodL@CCmDestinationImpl@@QAEPAVCCmPluginBase@@H@Z @ 291 NONAME ABSENT ; class CCmPluginBase * CCmDestinationImpl::GetConnectionMethodL(int)
+	?GetConnectionMethodL@CCmManagerImpl@@QAEPAVCCmPluginBase@@K@Z @ 292 NONAME ABSENT ; class CCmPluginBase * CCmManagerImpl::GetConnectionMethodL(unsigned long)
+	?GetIntAttributeL@CCmPluginBase@@QBEKK@Z @ 293 NONAME ABSENT ; unsigned long CCmPluginBase::GetIntAttributeL(unsigned long) const
+	?GetString8AttributeL@CCmPluginBase@@QBEPAVHBufC8@@K@Z @ 294 NONAME ABSENT ; class HBufC8 * CCmPluginBase::GetString8AttributeL(unsigned long) const
+	?GetStringAttributeL@CCmPluginBase@@QBEPAVHBufC16@@K@Z @ 295 NONAME ABSENT ; class HBufC16 * CCmPluginBase::GetStringAttributeL(unsigned long) const
+	?IAPRecordElementId@CCmPluginBase@@QBEKXZ @ 296 NONAME ABSENT ; unsigned long CCmPluginBase::IAPRecordElementId(void) const
+	?LoadL@CCmPluginBase@@QAEXK@Z @ 297 NONAME ABSENT ; void CCmPluginBase::LoadL(unsigned long)
+	?LoadServiceSettingL@CCmPluginBase@@IAEXXZ @ 298 NONAME ABSENT ; void CCmPluginBase::LoadServiceSettingL(void)
+	?NumOfConnMethodReferencesL@CCmPluginBase@@QAEHXZ @ 299 NONAME ABSENT ; int CCmPluginBase::NumOfConnMethodReferencesL(void)
+	?ParentDestination@CCmPluginBase@@QBEPAVCCmDestinationImpl@@XZ @ 300 NONAME ABSENT ; class CCmDestinationImpl * CCmPluginBase::ParentDestination(void) const
+	?Plugin@CCmPluginBase@@QBEPAVCCmPluginBaseEng@@XZ @ 301 NONAME ABSENT ; class CCmPluginBaseEng * CCmPluginBase::Plugin(void) const
+	?PrepareToLoadRecordsL@CCmPluginBase@@IAEXXZ @ 302 NONAME ABSENT ; void CCmPluginBase::PrepareToLoadRecordsL(void)
+	?PrepareToUpdateRecordsL@CCmPluginBase@@IAEXXZ @ 303 NONAME ABSENT ; void CCmPluginBase::PrepareToUpdateRecordsL(void)
+	?RemoveResourceFile@CCmPluginBase@@IAEXABVTDesC16@@@Z @ 304 NONAME ABSENT ; void CCmPluginBase::RemoveResourceFile(class TDesC16 const &)
+	?RestoreAttributeL@CCmPluginBase@@QAEXK@Z @ 305 NONAME ABSENT ; void CCmPluginBase::RestoreAttributeL(unsigned long)
+	?Session@CCmPluginBase@@QBEAAVCMDBSession@CommsDat@@XZ @ 306 NONAME ABSENT ; class CommsDat::CMDBSession & CCmPluginBase::Session(void) const
+	?SetBoolAttributeL@CCmPluginBase@@QAEXKH@Z @ 307 NONAME ABSENT ; void CCmPluginBase::SetBoolAttributeL(unsigned long, int)
+	?SetIntAttributeL@CCmPluginBase@@QAEXKK@Z @ 308 NONAME ABSENT ; void CCmPluginBase::SetIntAttributeL(unsigned long, unsigned long)
+	?SetString8AttributeL@CCmPluginBase@@QAEXKABVTDesC8@@@Z @ 309 NONAME ABSENT ; void CCmPluginBase::SetString8AttributeL(unsigned long, class TDesC8 const &)
+	?SetStringAttributeL@CCmPluginBase@@QAEXKABVTDesC16@@@Z @ 310 NONAME ABSENT ; void CCmPluginBase::SetStringAttributeL(unsigned long, class TDesC16 const &)
+	?UpdateL@CCmPluginBase@@QAEXXZ @ 311 NONAME ABSENT ; void CCmPluginBase::UpdateL(void)
+	?UpdateProxyRecordL@CCmPluginBase@@AAEXXZ @ 312 NONAME ABSENT ; void CCmPluginBase::UpdateProxyRecordL(void)
+	?UpdateServiceRecordL@CCmPluginBase@@IAEXXZ @ 313 NONAME ABSENT ; void CCmPluginBase::UpdateServiceRecordL(void)
+	??0RCmConnectionMethod@@QAE@XZ @ 314 NONAME ; RCmConnectionMethod::RCmConnectionMethod(void)
+	??0RCmConnectionMethodExt@@QAE@XZ @ 315 NONAME ; RCmConnectionMethodExt::RCmConnectionMethodExt(void)
+	??4RCmConnectionMethod@@QAEAAV0@ABV0@@Z @ 316 NONAME ; class RCmConnectionMethod & RCmConnectionMethod::operator=(class RCmConnectionMethod const &)
+	??4RCmConnectionMethodExt@@QAEAAV0@ABV0@@Z @ 317 NONAME ; class RCmConnectionMethodExt & RCmConnectionMethodExt::operator=(class RCmConnectionMethodExt const &)
+	??8RCmConnectionMethod@@QBEHAAV0@@Z @ 318 NONAME ; int RCmConnectionMethod::operator==(class RCmConnectionMethod &) const
+	??8RCmConnectionMethodExt@@QBEHAAV0@@Z @ 319 NONAME ; int RCmConnectionMethodExt::operator==(class RCmConnectionMethodExt &) const
+	??9RCmConnectionMethod@@QBEHAAV0@@Z @ 320 NONAME ; int RCmConnectionMethod::operator!=(class RCmConnectionMethod &) const
+	??9RCmConnectionMethodExt@@QBEHAAV0@@Z @ 321 NONAME ; int RCmConnectionMethodExt::operator!=(class RCmConnectionMethodExt &) const
+	??1RCmConnectionMethod@@QAE@XZ @ 322 NONAME ; RCmConnectionMethod::~RCmConnectionMethod(void)
+	??1RCmConnectionMethodExt@@QAE@XZ @ 323 NONAME ; RCmConnectionMethodExt::~RCmConnectionMethodExt(void)
+	?ClearDestinationArrayToUse@CCmConnSettingsUiImpl@@QAEXXZ @ 324 NONAME ABSENT ; void CCmConnSettingsUiImpl::ClearDestinationArrayToUse(void)
+	?SetDestinationArrayToUseL@CCmConnSettingsUiImpl@@QAEXV?$RArray@K@@@Z @ 325 NONAME ABSENT ; void CCmConnSettingsUiImpl::SetDestinationArrayToUseL(class RArray<unsigned long>)
+	?GetAdditionalUids@CCmPluginBase@@QAEXAAV?$RArray@K@@@Z @ 326 NONAME ABSENT ; void CCmPluginBase::GetAdditionalUids(class RArray<unsigned long> &)
+	?GetAdditionalUids@CCmPluginBaseEng@@UAEXAAV?$RArray@K@@@Z @ 327 NONAME ABSENT ; void CCmPluginBaseEng::GetAdditionalUids(class RArray<unsigned long> &)
+	?WrapCmManager@CCmManagerImpl@@QAEXAAVRCmManagerExt@@@Z @ 328 NONAME ABSENT ; void CCmManagerImpl::WrapCmManager(class RCmManagerExt &)
+	?CombineArraysForPriorityOrderL@CCmManagerImpl@@AAEXAAV?$RPointerArray@VCCmPluginBase@@@@0@Z @ 329 NONAME ABSENT ; void CCmManagerImpl::CombineArraysForPriorityOrderL(class RPointerArray<class CCmPluginBase> &, class RPointerArray<class CCmPluginBase> &)
+	?CreateFlatCMListL@CCmManagerImpl@@QAEXKAAV?$RPointerArray@VCCmPluginBase@@@@@Z @ 330 NONAME ABSENT ; void CCmManagerImpl::CreateFlatCMListL(unsigned long, class RPointerArray<class CCmPluginBase> &)
+	?FilterOutVirtualsL@CCmManagerImpl@@QAEXAAV?$RPointerArray@VCCmPluginBase@@@@@Z @ 331 NONAME ABSENT ; void CCmManagerImpl::FilterOutVirtualsL(class RPointerArray<class CCmPluginBase> &)
+	?CreateFlatCMListLC@CCmManagerImpl@@QAEXKAAV?$RPointerArray@VCCmPluginBase@@@@@Z @ 332 NONAME ABSENT ; void CCmManagerImpl::CreateFlatCMListLC(unsigned long, class RPointerArray<class CCmPluginBase> &)
+	??0RCmConnectionMethod@@QAE@ABV0@@Z @ 333 NONAME ; RCmConnectionMethod::RCmConnectionMethod(class RCmConnectionMethod const &)
+	??0RCmConnectionMethodExt@@QAE@ABV0@@Z @ 334 NONAME ; RCmConnectionMethodExt::RCmConnectionMethodExt(class RCmConnectionMethodExt const &)
+	?IsLinkedToIap@CCmPluginBase@@QAEHK@Z @ 335 NONAME ABSENT ; int CCmPluginBase::IsLinkedToIap(unsigned long)
+	?IsLinkedToSnap@CCmPluginBase@@QAEHK@Z @ 336 NONAME ABSENT ; int CCmPluginBase::IsLinkedToSnap(unsigned long)
+	?ParentDestination@CCmPluginBaseEng@@QBEPAVCCmDestinationImpl@@XZ @ 337 NONAME ABSENT ; class CCmDestinationImpl * CCmPluginBaseEng::ParentDestination(void) const
+	?CreateTablesAndOpenL@RCmManagerExt@@QAEXXZ @ 338 NONAME ; void RCmManagerExt::CreateTablesAndOpenL(void)
+	?CreateConnectionMethodL@RCmDestinationExt@@QAE?AVRCmConnectionMethodExt@@KK@Z @ 339 NONAME ; class RCmConnectionMethodExt RCmDestinationExt::CreateConnectionMethodL(unsigned long, unsigned long)
+	?CreateConnectionMethodL@RCmManagerExt@@QAE?AVRCmConnectionMethodExt@@KK@Z @ 340 NONAME ; class RCmConnectionMethodExt RCmManagerExt::CreateConnectionMethodL(unsigned long, unsigned long)
+	?CreateDestinationL@RCmManagerExt@@QAE?AVRCmDestinationExt@@ABVTDesC16@@K@Z @ 341 NONAME ; class RCmDestinationExt RCmManagerExt::CreateDestinationL(class TDesC16 const &, unsigned long)
+	?SetPreDefinedId@CCmPluginBaseEng@@QAEXK@Z @ 342 NONAME ABSENT ; void CCmPluginBaseEng::SetPreDefinedId(unsigned long)
+	?HandleResourceChange@CmPluginBaseSettingsDlg@@UAEXH@Z @ 343 NONAME ABSENT ; void CmPluginBaseSettingsDlg::HandleResourceChange(int)
+	?Execute@CmPluginBaseSettingsDlg@@UAEXXZ @ 344 NONAME ABSENT ; void CmPluginBaseSettingsDlg::Execute(void)
+	?CheckSpaceBelowCriticalLevelL@CCmPluginBaseEng@@QBEHXZ @ 345 NONAME ABSENT ; int CCmPluginBaseEng::CheckSpaceBelowCriticalLevelL(void) const
+	?HandleLeaveError@CmPluginBaseSettingsDlg@@UAEXH@Z @ 346 NONAME ABSENT ; void CmPluginBaseSettingsDlg::HandleLeaveError(int)
+	?AddConnectionMethodL@RCmDestination@@QAEHVRCmConnectionMethod@@@Z @ 347 NONAME ; int RCmDestination::AddConnectionMethodL(class RCmConnectionMethod)
+	?AddEmbeddedDestinationL@RCmDestination@@QAEHABV1@@Z @ 348 NONAME ; int RCmDestination::AddEmbeddedDestinationL(class RCmDestination const &)
+	?CopyConnectionMethodL@RCmManager@@QAEHAAVRCmDestination@@AAVRCmConnectionMethod@@@Z @ 349 NONAME ; int RCmManager::CopyConnectionMethodL(class RCmDestination &, class RCmConnectionMethod &)
+	?CreateConnectionMethodL@RCmDestination@@QAE?AVRCmConnectionMethod@@K@Z @ 350 NONAME ; class RCmConnectionMethod RCmDestination::CreateConnectionMethodL(unsigned long)
+	?CreateConnectionMethodL@RCmDestination@@QAE?AVRCmConnectionMethod@@KK@Z @ 351 NONAME ; class RCmConnectionMethod RCmDestination::CreateConnectionMethodL(unsigned long, unsigned long)
+	?CreateConnectionMethodL@RCmManager@@QAE?AVRCmConnectionMethod@@K@Z @ 352 NONAME ; class RCmConnectionMethod RCmManager::CreateConnectionMethodL(unsigned long)
+	?CreateConnectionMethodL@RCmManager@@QAE?AVRCmConnectionMethod@@KK@Z @ 353 NONAME ; class RCmConnectionMethod RCmManager::CreateConnectionMethodL(unsigned long, unsigned long)
+	?CreateCopyL@RCmConnectionMethod@@QAE?AV1@XZ @ 354 NONAME ; class RCmConnectionMethod RCmConnectionMethod::CreateCopyL(void)
+	?CreateDestinationL@RCmManager@@QAE?AVRCmDestination@@ABVTDesC16@@@Z @ 355 NONAME ; class RCmDestination RCmManager::CreateDestinationL(class TDesC16 const &)
+	?CreateDestinationL@RCmManager@@QAE?AVRCmDestination@@ABVTDesC16@@K@Z @ 356 NONAME ; class RCmDestination RCmManager::CreateDestinationL(class TDesC16 const &, unsigned long)
+	?CreateTablesAndOpenL@RCmManager@@QAEXXZ @ 357 NONAME ; void RCmManager::CreateTablesAndOpenL(void)
+	?DeleteConnectionMethodL@RCmDestination@@QAEXAAVRCmConnectionMethod@@@Z @ 358 NONAME ; void RCmDestination::DeleteConnectionMethodL(class RCmConnectionMethod &)
+	?DeleteL@RCmConnectionMethod@@QAEHXZ @ 359 NONAME ; int RCmConnectionMethod::DeleteL(void)
+	?DeleteLD@RCmDestination@@QAEXXZ @ 360 NONAME ; void RCmDestination::DeleteLD(void)
+	?ModifyPriorityL@RCmDestination@@QAEXAAVRCmConnectionMethod@@I@Z @ 361 NONAME ; void RCmDestination::ModifyPriorityL(class RCmConnectionMethod &, unsigned int)
+	?MoveConnectionMethodL@RCmManager@@QAEHAAVRCmDestination@@0AAVRCmConnectionMethod@@@Z @ 362 NONAME ; int RCmManager::MoveConnectionMethodL(class RCmDestination &, class RCmDestination &, class RCmConnectionMethod &)
+	?RemoveAllReferencesL@RCmManager@@QAEXAAVRCmConnectionMethod@@@Z @ 363 NONAME ; void RCmManager::RemoveAllReferencesL(class RCmConnectionMethod &)
+	?RemoveConnectionMethodL@RCmDestination@@QAEXVRCmConnectionMethod@@@Z @ 364 NONAME ; void RCmDestination::RemoveConnectionMethodL(class RCmConnectionMethod)
+	?RemoveConnectionMethodL@RCmManager@@QAEXAAVRCmDestination@@AAVRCmConnectionMethod@@@Z @ 365 NONAME ; void RCmManager::RemoveConnectionMethodL(class RCmDestination &, class RCmConnectionMethod &)
+	?SetBoolAttributeL@RCmConnectionMethod@@QAEXKH@Z @ 366 NONAME ; void RCmConnectionMethod::SetBoolAttributeL(unsigned long, int)
+	?SetHiddenL@RCmDestination@@QAEXH@Z @ 367 NONAME ; void RCmDestination::SetHiddenL(int)
+	?SetIconL@RCmDestination@@QAEXK@Z @ 368 NONAME ABSENT ; void RCmDestination::SetIconL(unsigned long)
+	?SetIntAttributeL@RCmConnectionMethod@@QAEXKK@Z @ 369 NONAME ; void RCmConnectionMethod::SetIntAttributeL(unsigned long, unsigned long)
+	?SetMetadataL@RCmDestination@@QAEXW4TSnapMetadataField@CMManager@@K@Z @ 370 NONAME ; void RCmDestination::SetMetadataL(enum CMManager::TSnapMetadataField, unsigned long)
+	?SetNameL@RCmDestination@@QAEXABVTDesC16@@@Z @ 371 NONAME ; void RCmDestination::SetNameL(class TDesC16 const &)
+	?SetProtectionL@RCmDestination@@QAEXW4TProtectionLevel@CMManager@@@Z @ 372 NONAME ; void RCmDestination::SetProtectionL(enum CMManager::TProtectionLevel)
+	?SetString8AttributeL@RCmConnectionMethod@@QAEXKABVTDesC8@@@Z @ 373 NONAME ; void RCmConnectionMethod::SetString8AttributeL(unsigned long, class TDesC8 const &)
+	?SetStringAttributeL@RCmConnectionMethod@@QAEXKABVTDesC16@@@Z @ 374 NONAME ; void RCmConnectionMethod::SetStringAttributeL(unsigned long, class TDesC16 const &)
+	?SupportedBearersL@RCmManager@@QBEXAAV?$RArray@K@@@Z @ 375 NONAME ; void RCmManager::SupportedBearersL(class RArray<unsigned long> &) const
+	?UncategorizedIconL@RCmManager@@QBEPAVCGulIcon@@XZ @ 376 NONAME ABSENT ; class CGulIcon * RCmManager::UncategorizedIconL(void) const
+	?UpdateBearerPriorityArrayL@RCmManager@@QAEXABV?$RArray@VTBearerPriority@@@@@Z @ 377 NONAME ; void RCmManager::UpdateBearerPriorityArrayL(class RArray<class TBearerPriority> const &)
+	?UpdateL@RCmConnectionMethod@@QAEXXZ @ 378 NONAME ; void RCmConnectionMethod::UpdateL(void)
+	?UpdateL@RCmDestination@@QAEXXZ @ 379 NONAME ; void RCmDestination::UpdateL(void)
+	?WriteDefConnL@RCmManager@@QAEXABUTCmDefConnValue@@@Z @ 380 NONAME ; void RCmManager::WriteDefConnL(struct TCmDefConnValue const &)
+	?WriteGenConnSettingsL@RCmManager@@QAEXABUTCmGenConnSettings@@@Z @ 381 NONAME ; void RCmManager::WriteGenConnSettingsL(struct TCmGenConnSettings const &)
+	?ReadGenConnSettingsL@RCmManager@@QAEXAAUTCmGenConnSettings@@@Z @ 382 NONAME ; void RCmManager::ReadGenConnSettingsL(struct TCmGenConnSettings &)
+	?WatcherRegisterL@CCmManagerImpl@@QAEXPAVMCmCommsDatWatcher@@@Z @ 383 NONAME ABSENT ; void CCmManagerImpl::WatcherRegisterL(class MCmCommsDatWatcher *)
+	?DestinationStillExistedL@CCmManagerImpl@@QAEHPAVCCmDestinationImpl@@@Z @ 384 NONAME ABSENT ; int CCmManagerImpl::DestinationStillExistedL(class CCmDestinationImpl *)
+	?IsIapStillInDestL@CCmManagerImpl@@QAEHPAVCCmDestinationImpl@@ABVCCmPluginBaseEng@@@Z @ 385 NONAME ABSENT ; int CCmManagerImpl::IsIapStillInDestL(class CCmDestinationImpl *, class CCmPluginBaseEng const &)
+	?IapStillExistedL@CCmManagerImpl@@QAEHABVCCmPluginBaseEng@@@Z @ 386 NONAME ABSENT ; int CCmManagerImpl::IapStillExistedL(class CCmPluginBaseEng const &)
+	?WatcherUnRegister@CCmManagerImpl@@QAEXXZ @ 387 NONAME ABSENT ; void CCmManagerImpl::WatcherUnRegister(void)
+	?RemoveDestFromPool@CCmManagerImpl@@QAEXPAVCCmDestinationImpl@@@Z @ 388 NONAME ABSENT ; void CCmManagerImpl::RemoveDestFromPool(class CCmDestinationImpl *)
+	?OfferKeyEventL@CmPluginBaseSettingsDlg@@MAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 389 NONAME ABSENT ; enum TKeyResponse CmPluginBaseSettingsDlg::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode)
+	?GetUncategorizedIconL@RCmManager@@QBEPAVHBufC16@@XZ @ 390 NONAME ; class HBufC16 * RCmManager::GetUncategorizedIconL(void) const
+	?GetIconL@RCmDestination@@QBEPAVHBufC16@@XZ @ 391 NONAME ; class HBufC16 * RCmDestination::GetIconL(void) const
+	?GetIconL@RCmConnectionMethod@@QBEPAVHBufC16@@XZ @ 392 NONAME ; class HBufC16 * RCmConnectionMethod::GetIconL(void) const
+	?SetIconL@RCmConnectionMethod@@QAEXABVTDesC16@@@Z @ 393 NONAME ; void RCmConnectionMethod::SetIconL(class TDesC16 const &)
+	?SetIconL@RCmDestination@@QAEXABVTDesC16@@@Z @ 394 NONAME ; void RCmDestination::SetIconL(class TDesC16 const &)
+	?RefreshL@RCmConnectionMethod@@QAEXXZ @ 395 NONAME ; void RCmConnectionMethod::RefreshL(void)
+	?RefreshL@RCmDestination@@QAEXXZ @ 396 NONAME ; void RCmDestination::RefreshL(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/EABI/CmManager_prot_setupU.def	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,445 @@
+EXPORTS
+	_Z18CheckIPv4ValidityLP16CCmPluginBaseEngmPKv @ 1 NONAME ABSENT
+	_Z18CheckIPv6ValidityLP16CCmPluginBaseEngmPKv @ 2 NONAME ABSENT
+	_Z18ReadOnlyAttributeLP16CCmPluginBaseEngmPKv @ 3 NONAME ABSENT
+	_Z19ClassifyIPv6AddressRK7TDesC16 @ 4 NONAME ABSENT
+	_Z19SetProxyServerNameLP16CCmPluginBaseEngmPKv @ 5 NONAME ABSENT
+	_Z22CheckRecordIdValidityLP16CCmPluginBaseEngmPKv @ 6 NONAME ABSENT
+	_Z24CheckPortNumberValidityLP16CCmPluginBaseEngmPKv @ 7 NONAME ABSENT
+	_Z24IsUnspecifiedIPv4AddressRK7TDesC16 @ 8 NONAME ABSENT
+	_Z26CheckWAPWspOptionValidityLP16CCmPluginBaseEngmPKv @ 9 NONAME ABSENT
+	_ZN10RCmManager12ReadDefConnLER15TCmDefConnValue @ 10 NONAME
+	_ZN10RCmManager5CloseEv @ 11 NONAME
+	_ZN10RCmManager5OpenLEv @ 12 NONAME
+	_ZN10RCmManager6OpenLCEv @ 13 NONAME
+	_ZN11TCmCommonUi14ShowPopupListLERK7TDesC16P16CDesC16ArrayFlatP9CArrayPtrI8CGulIconEjRi @ 14 NONAME ABSENT
+	_ZN11TCmCommonUi22ShowConfirmationQueryLEi @ 15 NONAME ABSENT
+	_ZN11TCmCommonUi22ShowConfirmationQueryLEiRK7TDesC16 @ 16 NONAME ABSENT
+	_ZN11TCmCommonUi31ShowConfirmationQueryWithInputLEiR6TDes16 @ 17 NONAME ABSENT
+	_ZN11TCmCommonUi9ShowNoteLERK7TDesC16NS_11TCmNoteTypeE @ 18 NONAME ABSENT
+	_ZN11TCmCommonUi9ShowNoteLEiNS_11TCmNoteTypeE @ 19 NONAME ABSENT
+	_ZN11TCmCommonUi9ShowNoteLEiRK7TDesC16NS_11TCmNoteTypeE @ 20 NONAME ABSENT
+	_ZN13CCmSettingsUi12RunSettingsLEv @ 21 NONAME ABSENT
+	_ZN13CCmSettingsUi21SelectDestinationDlgLERm @ 22 NONAME ABSENT
+	_ZN13CCmSettingsUi4NewLEv @ 23 NONAME ABSENT
+	_ZN13CCmSettingsUiD0Ev @ 24 NONAME ABSENT
+	_ZN13CCmSettingsUiD1Ev @ 25 NONAME ABSENT
+	_ZN13CCmSettingsUiD2Ev @ 26 NONAME ABSENT
+	_ZN13RCmManagerExt11EasyWlanIdLEv @ 27 NONAME
+	_ZN13RCmManagerExt12DestinationLEm @ 28 NONAME
+	_ZN13RCmManagerExt12ReadDefConnLER15TCmDefConnValue @ 29 NONAME
+	_ZN13RCmManagerExt13WriteDefConnLERK15TCmDefConnValue @ 30 NONAME
+	_ZN13RCmManagerExt16AllDestinationsLER6RArrayImE @ 31 NONAME
+	_ZN13RCmManagerExt17ConnectionMethodLER6RArrayImEiii @ 32 NONAME
+	_ZN13RCmManagerExt17ConnectionMethodLEm @ 33 NONAME
+	_ZN13RCmManagerExt18CreateDestinationLERK7TDesC16 @ 34 NONAME
+	_ZN13RCmManagerExt20RemoveAllReferencesLER22RCmConnectionMethodExt @ 35 NONAME
+	_ZN13RCmManagerExt21CopyConnectionMethodLER17RCmDestinationExtR22RCmConnectionMethodExt @ 36 NONAME
+	_ZN13RCmManagerExt21MoveConnectionMethodLER17RCmDestinationExtS1_R22RCmConnectionMethodExt @ 37 NONAME
+	_ZN13RCmManagerExt23CreateConnectionMethodLEm @ 38 NONAME
+	_ZN13RCmManagerExt23RemoveConnectionMethodLER17RCmDestinationExtR22RCmConnectionMethodExt @ 39 NONAME
+	_ZN13RCmManagerExt26UpdateBearerPriorityArrayLERK6RArrayI15TBearerPriorityE @ 40 NONAME
+	_ZN13RCmManagerExt5CloseEv @ 41 NONAME
+	_ZN13RCmManagerExt5OpenLEv @ 42 NONAME
+	_ZN13RCmManagerExt6OpenLCEv @ 43 NONAME
+	_ZN14CCmManagerImpl11EasyWlanIdLEv @ 44 NONAME ABSENT
+	_ZN14CCmManagerImpl12DestinationLEm @ 45 NONAME ABSENT
+	_ZN14CCmManagerImpl16AllDestinationsLER6RArrayImE @ 46 NONAME ABSENT
+	_ZN14CCmManagerImpl17ConnectionMethodLER6RArrayImEiiii @ 47 NONAME ABSENT
+	_ZN14CCmManagerImpl17ConnectionMethodLEm @ 48 NONAME ABSENT
+	_ZN14RCmDestination5CloseEv @ 49 NONAME
+	_ZN14RCmDestinationC1ERKS_ @ 50 NONAME
+	_ZN14RCmDestinationC2ERKS_ @ 51 NONAME
+	_ZN14RCmDestinationD1Ev @ 52 NONAME
+	_ZN14RCmDestinationD2Ev @ 53 NONAME
+	_ZN14RCmDestinationaSERKS_ @ 54 NONAME
+	_ZN16CCmPluginBaseEng10ConstructLEv @ 55 NONAME ABSENT
+	_ZN16CCmPluginBaseEng10CreateNewLEv @ 56 NONAME ABSENT
+	_ZN16CCmPluginBaseEng12EnableProxyLEi @ 57 NONAME ABSENT
+	_ZN16CCmPluginBaseEng13ConvTableItemEm @ 58 NONAME ABSENT
+	_ZN16CCmPluginBaseEng15EnableLocationLEi @ 59 NONAME ABSENT
+	_ZN16CCmPluginBaseEng16AddResourceFileLERK7TDesC16 @ 60 NONAME ABSENT
+	_ZN16CCmPluginBaseEng16FeatureSupportedEi @ 61 NONAME ABSENT
+	_ZN16CCmPluginBaseEng16SetIntAttributeLEmm @ 62 NONAME ABSENT
+	_ZN16CCmPluginBaseEng17EnableChargeCardLEi @ 63 NONAME ABSENT
+	_ZN16CCmPluginBaseEng17RestoreAttributeLEm @ 64 NONAME ABSENT
+	_ZN16CCmPluginBaseEng17SetBoolAttributeLEmi @ 65 NONAME ABSENT
+	_ZN16CCmPluginBaseEng18RemoveResourceFileERK7TDesC16 @ 66 NONAME ABSENT
+	_ZN16CCmPluginBaseEng18UpdateProxyRecordLEv @ 67 NONAME ABSENT
+	_ZN16CCmPluginBaseEng19LoadServiceSettingLEv @ 68 NONAME ABSENT
+	_ZN16CCmPluginBaseEng19SetStringAttributeLEmRK7TDesC16 @ 69 NONAME ABSENT
+	_ZN16CCmPluginBaseEng20AddConverstionTableLEPPN8CommsDat13CCDRecordBaseEPiPK18TCmAttribConvTable @ 70 NONAME ABSENT
+	_ZN16CCmPluginBaseEng20SetDNSServerAddressLEmRK7TDesC16mS2_mi @ 71 NONAME ABSENT
+	_ZN16CCmPluginBaseEng20SetString8AttributeLEmRK6TDesC8 @ 72 NONAME ABSENT
+	_ZN16CCmPluginBaseEng20UpdateServiceRecordLEv @ 73 NONAME ABSENT
+	_ZN16CCmPluginBaseEng21PrepareToLoadRecordsLEv @ 74 NONAME ABSENT
+	_ZN16CCmPluginBaseEng21RemoveConversionTableEPK18TCmAttribConvTable @ 75 NONAME ABSENT
+	_ZN16CCmPluginBaseEng22CheckDNSServerAddressLEiRN8CommsDat9CMDBFieldI7TDesC16EES4_RNS1_IiEE @ 76 NONAME ABSENT
+	_ZN16CCmPluginBaseEng23PrepareToUpdateRecordsLEv @ 77 NONAME ABSENT
+	_ZN16CCmPluginBaseEng25AddCommonConversionTableLEPK26TCmCommonAttrConvArrayItem @ 78 NONAME ABSENT
+	_ZN16CCmPluginBaseEng26NumOfConnMethodReferencesLEv @ 79 NONAME ABSENT
+	_ZN16CCmPluginBaseEng27RemoveCommonConversionTableEPK26TCmCommonAttrConvArrayItem @ 80 NONAME ABSENT
+	_ZN16CCmPluginBaseEng5LoadLEm @ 81 NONAME ABSENT
+	_ZN16CCmPluginBaseEng5ResetEv @ 82 NONAME ABSENT
+	_ZN16CCmPluginBaseEng7DeleteLEii @ 83 NONAME ABSENT
+	_ZN16CCmPluginBaseEng7UpdateLEv @ 84 NONAME ABSENT
+	_ZN16CCmPluginBaseEngC2EP18TCmPluginInitParam @ 85 NONAME ABSENT
+	_ZN16CCmPluginBaseEngD0Ev @ 86 NONAME ABSENT
+	_ZN16CCmPluginBaseEngD1Ev @ 87 NONAME ABSENT
+	_ZN16CCmPluginBaseEngD2Ev @ 88 NONAME ABSENT
+	_ZN16CCmPluginLanBase10ConstructLEv @ 89 NONAME ABSENT
+	_ZN16CCmPluginLanBase12RunSettingsLEv @ 90 NONAME ABSENT
+	_ZN16CCmPluginLanBase16BearerRecordIdLCERP7HBufC16Rm @ 91 NONAME ABSENT
+	_ZN16CCmPluginLanBase17InitializeWithUiLEi @ 92 NONAME ABSENT
+	_ZN16CCmPluginLanBase17ServiceRecordIdLCERP7HBufC16Rm @ 93 NONAME ABSENT
+	_ZN16CCmPluginLanBase19LoadServiceSettingLEv @ 94 NONAME ABSENT
+	_ZN16CCmPluginLanBase23CreateNewServiceRecordLEv @ 95 NONAME ABSENT
+	_ZN16CCmPluginLanBase23PrepareToUpdateRecordsLEv @ 96 NONAME ABSENT
+	_ZN16CCmPluginLanBaseC2EP18TCmPluginInitParam @ 97 NONAME ABSENT
+	_ZN16CCmPluginLanBaseD0Ev @ 98 NONAME ABSENT
+	_ZN16CCmPluginLanBaseD1Ev @ 99 NONAME ABSENT
+	_ZN16CCmPluginLanBaseD2Ev @ 100 NONAME ABSENT
+	_ZN17RCmDestinationExt10SetHiddenLEi @ 101 NONAME
+	_ZN17RCmDestinationExt12SetMetadataLEN9CMManager18TSnapMetadataFieldEm @ 102 NONAME
+	_ZN17RCmDestinationExt14SetProtectionLEN9CMManager16TProtectionLevelE @ 103 NONAME
+	_ZN17RCmDestinationExt15ModifyPriorityLER22RCmConnectionMethodExtj @ 104 NONAME
+	_ZN17RCmDestinationExt15ProtectionLevelEv @ 105 NONAME
+	_ZN17RCmDestinationExt17ConnectionMethodLEi @ 106 NONAME
+	_ZN17RCmDestinationExt20AddConnectionMethodLE22RCmConnectionMethodExt @ 107 NONAME
+	_ZN17RCmDestinationExt21ConnectionMethodByIDLEi @ 108 NONAME
+	_ZN17RCmDestinationExt21ConnectionMethodCountEv @ 109 NONAME
+	_ZN17RCmDestinationExt23AddEmbeddedDestinationLERKS_ @ 110 NONAME
+	_ZN17RCmDestinationExt23CreateConnectionMethodLEm @ 111 NONAME
+	_ZN17RCmDestinationExt23DeleteConnectionMethodLER22RCmConnectionMethodExt @ 112 NONAME
+	_ZN17RCmDestinationExt23RemoveConnectionMethodLE22RCmConnectionMethodExt @ 113 NONAME
+	_ZN17RCmDestinationExt2IdEv @ 114 NONAME
+	_ZN17RCmDestinationExt5CloseEv @ 115 NONAME
+	_ZN17RCmDestinationExt5IconLEv @ 116 NONAME ABSENT
+	_ZN17RCmDestinationExt6NameLCEv @ 117 NONAME
+	_ZN17RCmDestinationExt7UpdateLEv @ 118 NONAME
+	_ZN17RCmDestinationExt8DeleteLDEv @ 119 NONAME
+	_ZN17RCmDestinationExt8IsHiddenEv @ 120 NONAME
+	_ZN17RCmDestinationExt8SetIconLEm @ 121 NONAME ABSENT
+	_ZN17RCmDestinationExt8SetNameLERK7TDesC16 @ 122 NONAME
+	_ZN17RCmDestinationExt9ElementIdEv @ 123 NONAME
+	_ZN17RCmDestinationExt9PriorityLERK22RCmConnectionMethodExt @ 124 NONAME
+	_ZN17RCmDestinationExtC1ERKS_ @ 125 NONAME
+	_ZN17RCmDestinationExtC2ERKS_ @ 126 NONAME
+	_ZN17RCmDestinationExtD1Ev @ 127 NONAME
+	_ZN17RCmDestinationExtD2Ev @ 128 NONAME
+	_ZN17RCmDestinationExtaSERKS_ @ 129 NONAME
+	_ZN18CCmDestinationImpl10SetHiddenLEi @ 130 NONAME ABSENT
+	_ZN18CCmDestinationImpl14RemoveFromPoolEv @ 131 NONAME ABSENT
+	_ZN18CCmDestinationImpl14SetProtectionLEN9CMManager16TProtectionLevelE @ 132 NONAME ABSENT
+	_ZN18CCmDestinationImpl15ProtectionLevelEv @ 133 NONAME ABSENT
+	_ZN18CCmDestinationImpl17ConnectionMethodLEi @ 134 NONAME ABSENT
+	_ZN18CCmDestinationImpl21ConnectionMethodCountEv @ 135 NONAME ABSENT
+	_ZN18CCmDestinationImpl4NewLER14CCmManagerImplRK7TDesC16 @ 136 NONAME ABSENT
+	_ZN18CCmDestinationImpl4NewLER14CCmManagerImplj @ 137 NONAME ABSENT
+	_ZN18CCmDestinationImpl5IconLEv @ 138 NONAME ABSENT
+	_ZN18CCmDestinationImpl6NameLCEv @ 139 NONAME ABSENT
+	_ZN18CCmDestinationImpl7UpdateLEv @ 140 NONAME ABSENT
+	_ZN18CCmDestinationImpl8DeleteLDEv @ 141 NONAME ABSENT
+	_ZN18CCmDestinationImpl8IsHiddenEv @ 142 NONAME ABSENT
+	_ZN18CCmDestinationImpl8SetNameLERK7TDesC16 @ 143 NONAME ABSENT
+	_ZN18CCmDestinationImpl9PriorityLER16CCmPluginBaseEng @ 144 NONAME ABSENT
+	_ZN19RCmConnectionMethod5CloseEv @ 145 NONAME
+	_ZN21CCmConnSettingsUiImpl23RunApplicationSettingsLER19TCmSettingSelectionjR6RArrayImE @ 146 NONAME ABSENT
+	_ZN21CCmConnSettingsUiImpl4NewLEP14CCmManagerImpl @ 147 NONAME ABSENT
+	_ZN21CCmTransactionHandler5CloseEv @ 148 NONAME ABSENT
+	_ZN22RCmConnectionMethodExt11CreateCopyLEv @ 149 NONAME
+	_ZN22RCmConnectionMethodExt16SetIntAttributeLEmm @ 150 NONAME
+	_ZN22RCmConnectionMethodExt17SetBoolAttributeLEmi @ 151 NONAME
+	_ZN22RCmConnectionMethodExt19SetStringAttributeLEmRK7TDesC16 @ 152 NONAME
+	_ZN22RCmConnectionMethodExt20SetString8AttributeLEmRK6TDesC8 @ 153 NONAME
+	_ZN22RCmConnectionMethodExt5CloseEv @ 154 NONAME
+	_ZN22RCmConnectionMethodExt7DeleteLEv @ 155 NONAME
+	_ZN22RCmConnectionMethodExt7UpdateLEv @ 156 NONAME
+	_ZN23CmPluginBaseSettingsDlg10InitTextsLEv @ 157 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg10SelectItemEi @ 158 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg13LoadResourceLERK7TDesC16 @ 159 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg15GetIPv6DNSTypeLEmm @ 160 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg15ProcessCommandLEi @ 161 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg16DynInitMenuPaneLEiP12CEikMenuPane @ 162 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg17ConstructAndRunLDEv @ 163 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg17PreLayoutDynInitLEv @ 164 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg19AppendSettingTextsLER12CDesC16ArrayiPK7HBufC16 @ 165 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg19AppendSettingTextsLER12CDesC16Arrayii @ 166 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg19HandleListBoxEventLEP11CEikListBoxN19MEikListBoxObserver13TListBoxEventE @ 167 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg21ShowPopupSettingPageLEmi @ 168 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg21UpdateListBoxContentLEv @ 169 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg23ShowPopupIPv4DNSEditorLEmmmm @ 170 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg23ShowPopupIPv6DNSEditorLEPKmmmm @ 171 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg23ShowPopupIpSettingPageLEmm @ 172 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg24HandleListboxDataChangeLEv @ 173 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg25ShowPopupTextSettingPageLEmm @ 174 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg27ShowRadioButtonSettingPageLEPKmRim @ 175 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg27ShowRadioButtonSettingPageLER16CDesC16ArrayFlatRim @ 176 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg27StringAttributeWithDefaultLEmm @ 177 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg28ShowPopupPortNumSettingPageLEmm @ 178 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg29ShowPopupPasswordSettingPageLEmm @ 179 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg9OkToExitLEi @ 180 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlgC2ER16CCmPluginBaseEng @ 181 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlgD0Ev @ 182 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlgD1Ev @ 183 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlgD2Ev @ 184 NONAME ABSENT
+	_ZN24CCmApplicationSettingsUi23RunApplicationSettingsLER19TCmSettingSelection @ 185 NONAME
+	_ZN24CCmApplicationSettingsUi23RunApplicationSettingsLER19TCmSettingSelectionjR6RArrayImE @ 186 NONAME
+	_ZN24CCmApplicationSettingsUi4NewLEv @ 187 NONAME
+	_ZN24CCmApplicationSettingsUi5NewLCEv @ 188 NONAME
+	_ZN24CCmApplicationSettingsUiD0Ev @ 189 NONAME
+	_ZN24CCmApplicationSettingsUiD1Ev @ 190 NONAME
+	_ZN24CCmApplicationSettingsUiD2Ev @ 191 NONAME
+	_ZN24CCmPluginMultiLineDialog4NewLER6TDes16S1_N15CAknQueryDialog5TToneE @ 192 NONAME ABSENT
+	_ZN25CmPluginBaseSettingsDlgIp16DynInitMenuPaneLEiP12CEikMenuPane @ 193 NONAME ABSENT
+	_ZN25CmPluginBaseSettingsDlgIp20RunAdvancedSettingsLEv @ 194 NONAME ABSENT
+	_ZN25CmPluginBaseSettingsDlgIp21UpdateListBoxContentLEv @ 195 NONAME ABSENT
+	_ZN25CmPluginBaseSettingsDlgIpC1ER16CCmPluginBaseEng @ 196 NONAME ABSENT
+	_ZN25CmPluginBaseSettingsDlgIpC2ER16CCmPluginBaseEng @ 197 NONAME ABSENT
+	_ZN25CmPluginBaseSettingsDlgIpD0Ev @ 198 NONAME ABSENT
+	_ZN25CmPluginBaseSettingsDlgIpD1Ev @ 199 NONAME ABSENT
+	_ZN25CmPluginBaseSettingsDlgIpD2Ev @ 200 NONAME ABSENT
+	_ZN26CmPluginBaseSettingsDlgAdv16DynInitMenuPaneLEiP12CEikMenuPane @ 201 NONAME ABSENT
+	_ZN26CmPluginBaseSettingsDlgAdv20RunAdvancedSettingsLEv @ 202 NONAME ABSENT
+	_ZN26CmPluginBaseSettingsDlgAdv21ShowPopupSettingPageLEii @ 203 NONAME ABSENT
+	_ZN26CmPluginBaseSettingsDlgAdv21UpdateListBoxContentLEv @ 204 NONAME ABSENT
+	_ZN26CmPluginBaseSettingsDlgAdvC1ER16CCmPluginBaseEng @ 205 NONAME ABSENT
+	_ZN26CmPluginBaseSettingsDlgAdvC2ER16CCmPluginBaseEng @ 206 NONAME ABSENT
+	_ZN26CmPluginBaseSettingsDlgAdvD0Ev @ 207 NONAME ABSENT
+	_ZN26CmPluginBaseSettingsDlgAdvD1Ev @ 208 NONAME ABSENT
+	_ZN26CmPluginBaseSettingsDlgAdvD2Ev @ 209 NONAME ABSENT
+	_ZN28CCmApplicationSettingsUiImpl23RunApplicationSettingsLER19TCmSettingSelection @ 210 NONAME ABSENT
+	_ZN28CCmApplicationSettingsUiImpl4NewLEv @ 211 NONAME ABSENT
+	_ZNK10RCmManager11EasyWlanIdLEv @ 212 NONAME
+	_ZNK10RCmManager12DestinationLEm @ 213 NONAME
+	_ZNK10RCmManager16AllDestinationsLER6RArrayImE @ 214 NONAME
+	_ZNK10RCmManager17ConnectionMethodLER6RArrayImEiii @ 215 NONAME
+	_ZNK10RCmManager17ConnectionMethodLEm @ 216 NONAME
+	_ZNK10RCmManager17GetBearerInfoIntLEmm @ 217 NONAME
+	_ZNK10RCmManager18GetBearerInfoBoolLEmm @ 218 NONAME
+	_ZNK10RCmManager20BearerPriorityArrayLER6RArrayI15TBearerPriorityE @ 219 NONAME
+	_ZNK10RCmManager20GetBearerInfoStringLEmm @ 220 NONAME
+	_ZNK10RCmManager21GetBearerInfoString8LEmm @ 221 NONAME
+	_ZNK10RCmManager26CleanupGlobalPriorityArrayER6RArrayI15TBearerPriorityE @ 222 NONAME
+	_ZNK10RCmManager27GetConnectionMethodInfoIntLEmm @ 223 NONAME
+	_ZNK10RCmManager28GetConnectionMethodInfoBoolLEmm @ 224 NONAME
+	_ZNK10RCmManager30GetConnectionMethodInfoStringLEmm @ 225 NONAME
+	_ZNK10RCmManager31GetConnectionMethodInfoString8LEmm @ 226 NONAME
+	_ZNK13RCmManagerExt17GetBearerInfoIntLEmm @ 227 NONAME
+	_ZNK13RCmManagerExt17SupportedBearersLER6RArrayImE @ 228 NONAME
+	_ZNK13RCmManagerExt18GetBearerInfoBoolLEmm @ 229 NONAME
+	_ZNK13RCmManagerExt18UncategorizedIconLEv @ 230 NONAME ABSENT
+	_ZNK13RCmManagerExt20BearerPriorityArrayLER6RArrayI15TBearerPriorityE @ 231 NONAME
+	_ZNK13RCmManagerExt20GetBearerInfoStringLEmm @ 232 NONAME
+	_ZNK13RCmManagerExt21GetBearerInfoString8LEmm @ 233 NONAME
+	_ZNK13RCmManagerExt26CleanupGlobalPriorityArrayER6RArrayI15TBearerPriorityE @ 234 NONAME
+	_ZNK13RCmManagerExt27GetConnectionMethodInfoIntLEmm @ 235 NONAME
+	_ZNK13RCmManagerExt28GetConnectionMethodInfoBoolLEmm @ 236 NONAME
+	_ZNK13RCmManagerExt30GetConnectionMethodInfoStringLEmm @ 237 NONAME
+	_ZNK13RCmManagerExt31GetConnectionMethodInfoString8LEmm @ 238 NONAME
+	_ZNK14CCmManagerImpl17GetBearerInfoIntLEmm @ 239 NONAME ABSENT
+	_ZNK14CCmManagerImpl18GetBearerInfoBoolLEmm @ 240 NONAME ABSENT
+	_ZNK14CCmManagerImpl20GetBearerInfoStringLEmm @ 241 NONAME ABSENT
+	_ZNK14CCmManagerImpl21GetBearerInfoString8LEmm @ 242 NONAME ABSENT
+	_ZNK14CCmManagerImpl27GetConnectionMethodInfoIntLEmm @ 243 NONAME ABSENT
+	_ZNK14CCmManagerImpl28GetConnectionMethodInfoBoolLEmm @ 244 NONAME ABSENT
+	_ZNK14CCmManagerImpl30GetConnectionMethodInfoStringLEmm @ 245 NONAME ABSENT
+	_ZNK14CCmManagerImpl31GetConnectionMethodInfoString8LEmm @ 246 NONAME ABSENT
+	_ZNK14RCmDestination12IsConnectedLEv @ 247 NONAME
+	_ZNK14RCmDestination15ProtectionLevelEv @ 248 NONAME
+	_ZNK14RCmDestination17ConnectionMethodLEi @ 249 NONAME
+	_ZNK14RCmDestination21ConnectionMethodByIDLEi @ 250 NONAME
+	_ZNK14RCmDestination21ConnectionMethodCountEv @ 251 NONAME
+	_ZNK14RCmDestination2IdEv @ 252 NONAME
+	_ZNK14RCmDestination5IconLEv @ 253 NONAME ABSENT
+	_ZNK14RCmDestination6NameLCEv @ 254 NONAME
+	_ZNK14RCmDestination8IsHiddenEv @ 255 NONAME
+	_ZNK14RCmDestination9ElementIdEv @ 256 NONAME
+	_ZNK14RCmDestination9MetadataLEN9CMManager18TSnapMetadataFieldE @ 257 NONAME
+	_ZNK14RCmDestination9PriorityLERK19RCmConnectionMethod @ 258 NONAME
+	_ZNK16CCmPluginBaseEng10AllocReadLEi @ 259 NONAME ABSENT
+	_ZNK16CCmPluginBaseEng11CreateCopyLEv @ 260 NONAME ABSENT
+	_ZNK16CCmPluginBaseEng11DestinationEv @ 261 NONAME ABSENT
+	_ZNK16CCmPluginBaseEng16GetIntAttributeLEm @ 262 NONAME ABSENT
+	_ZNK16CCmPluginBaseEng17GetBoolAttributeLEm @ 263 NONAME ABSENT
+	_ZNK16CCmPluginBaseEng19GetStringAttributeLEm @ 264 NONAME ABSENT
+	_ZNK16CCmPluginBaseEng20CheckIfNameModifiedLEPN8CommsDat13CCDRecordBaseE @ 265 NONAME ABSENT
+	_ZNK16CCmPluginBaseEng20GetString8AttributeLEm @ 266 NONAME ABSENT
+	_ZNK16CCmPluginBaseEng20GlobalBearerPriorityERK7TDesC16 @ 267 NONAME ABSENT
+	_ZNK16CCmPluginBaseEng22GlobalUiBearerPriorityERK7TDesC16 @ 268 NONAME ABSENT
+	_ZNK16CCmPluginBaseEng23CheckIfAlreadyConnectedEv @ 269 NONAME ABSENT
+	_ZNK16CCmPluginBaseEng7SessionEv @ 270 NONAME ABSENT
+	_ZNK16CCmPluginLanBase13ServiceRecordEv @ 271 NONAME ABSENT
+	_ZNK17RCmDestinationExt12IsConnectedLEv @ 272 NONAME
+	_ZNK17RCmDestinationExt9MetadataLEN9CMManager18TSnapMetadataFieldE @ 273 NONAME
+	_ZNK18CCmDestinationImpl12IsConnectedLEv @ 274 NONAME ABSENT
+	_ZNK19RCmConnectionMethod12DestinationLEv @ 275 NONAME
+	_ZNK19RCmConnectionMethod16GetIntAttributeLEm @ 276 NONAME
+	_ZNK19RCmConnectionMethod17GetBoolAttributeLEm @ 277 NONAME
+	_ZNK19RCmConnectionMethod19GetStringAttributeLEm @ 278 NONAME
+	_ZNK19RCmConnectionMethod20GetString8AttributeLEm @ 279 NONAME
+	_ZNK22RCmConnectionMethodExt12DestinationLEv @ 280 NONAME
+	_ZNK22RCmConnectionMethodExt16GetIntAttributeLEm @ 281 NONAME
+	_ZNK22RCmConnectionMethodExt17GetBoolAttributeLEm @ 282 NONAME
+	_ZNK22RCmConnectionMethodExt19GetStringAttributeLEm @ 283 NONAME
+	_ZNK22RCmConnectionMethodExt20GetString8AttributeLEm @ 284 NONAME
+	_ZNK23CmPluginBaseSettingsDlg14GetHelpContextER15TCoeHelpContext @ 285 NONAME ABSENT
+	_ZNK23CmPluginBaseSettingsDlg19AppendSettingTextsLER12CDesC16ArrayiiRK7TDesC16i @ 286 NONAME ABSENT
+	_ZNK23CmPluginBaseSettingsDlg19AppendSettingTextsLER12CDesC16Arrayiiii @ 287 NONAME ABSENT
+	_ZTI16CCmPluginBaseEng @ 288 NONAME ABSENT ; #<TI>#
+	_ZTI16CCmPluginLanBase @ 289 NONAME ABSENT ; #<TI>#
+	_ZTI23CmPluginBaseSettingsDlg @ 290 NONAME ABSENT ; #<TI>#
+	_ZTI25CmPluginBaseSettingsDlgIp @ 291 NONAME ABSENT ; #<TI>#
+	_ZTI26CmPluginBaseSettingsDlgAdv @ 292 NONAME ABSENT ; #<TI>#
+	_ZTIN11TCmCommonUi12CCmDesCArrayE @ 293 NONAME ABSENT ; #<TI>#
+	_ZTV16CCmPluginBaseEng @ 294 NONAME ABSENT ; #<VT>#
+	_ZTV16CCmPluginLanBase @ 295 NONAME ABSENT ; #<VT>#
+	_ZTV23CmPluginBaseSettingsDlg @ 296 NONAME ABSENT ; #<VT>#
+	_ZTV25CmPluginBaseSettingsDlgIp @ 297 NONAME ABSENT ; #<VT>#
+	_ZTV26CmPluginBaseSettingsDlgAdv @ 298 NONAME ABSENT ; #<VT>#
+	_ZTVN11TCmCommonUi12CCmDesCArrayE @ 299 NONAME ABSENT ; #<VT>#
+	_ZThn156_N23CmPluginBaseSettingsDlg15ProcessCommandLEi @ 300 NONAME ABSENT ; #<thunk>#
+	_ZThn156_N23CmPluginBaseSettingsDlg16DynInitMenuPaneLEiP12CEikMenuPane @ 301 NONAME ABSENT ; #<thunk>#
+	_ZThn156_N25CmPluginBaseSettingsDlgIp16DynInitMenuPaneLEiP12CEikMenuPane @ 302 NONAME ABSENT ; #<thunk>#
+	_ZThn156_N26CmPluginBaseSettingsDlgAdv16DynInitMenuPaneLEiP12CEikMenuPane @ 303 NONAME ABSENT ; #<thunk>#
+	_ZThn176_N23CmPluginBaseSettingsDlg19HandleListBoxEventLEP11CEikListBoxN19MEikListBoxObserver13TListBoxEventE @ 304 NONAME ABSENT ; #<thunk>#
+	_ZN14RCmDestinationC1Ev @ 305 NONAME
+	_ZN14RCmDestinationC2Ev @ 306 NONAME
+	_ZN17RCmDestinationExtC1Ev @ 307 NONAME
+	_ZN17RCmDestinationExtC2Ev @ 308 NONAME
+	_ZNK14RCmDestinationeqERKS_ @ 309 NONAME
+	_ZNK14RCmDestinationneERKS_ @ 310 NONAME
+	_ZNK17RCmDestinationExteqERKS_ @ 311 NONAME
+	_ZNK17RCmDestinationExtneERKS_ @ 312 NONAME
+	_ZN13CCmPluginBase10ConstructLEv @ 313 NONAME ABSENT
+	_ZN13CCmPluginBase10CreateNewLEv @ 314 NONAME ABSENT
+	_ZN13CCmPluginBase12EnableProxyLEi @ 315 NONAME ABSENT
+	_ZN13CCmPluginBase15EnableLocationLEi @ 316 NONAME ABSENT
+	_ZN13CCmPluginBase16AddResourceFileLERK7TDesC16 @ 317 NONAME ABSENT
+	_ZN13CCmPluginBase16SetIntAttributeLEmm @ 318 NONAME ABSENT
+	_ZN13CCmPluginBase17EnableChargeCardLEi @ 319 NONAME ABSENT
+	_ZN13CCmPluginBase17RestoreAttributeLEm @ 320 NONAME ABSENT
+	_ZN13CCmPluginBase17SetBoolAttributeLEmi @ 321 NONAME ABSENT
+	_ZN13CCmPluginBase18RemoveResourceFileERK7TDesC16 @ 322 NONAME ABSENT
+	_ZN13CCmPluginBase18UpdateProxyRecordLEv @ 323 NONAME ABSENT
+	_ZN13CCmPluginBase19LoadServiceSettingLEv @ 324 NONAME ABSENT
+	_ZN13CCmPluginBase19SetStringAttributeLEmRK7TDesC16 @ 325 NONAME ABSENT
+	_ZN13CCmPluginBase20SetString8AttributeLEmRK6TDesC8 @ 326 NONAME ABSENT
+	_ZN13CCmPluginBase20UpdateServiceRecordLEv @ 327 NONAME ABSENT
+	_ZN13CCmPluginBase21PrepareToLoadRecordsLEv @ 328 NONAME ABSENT
+	_ZN13CCmPluginBase23PrepareToUpdateRecordsLEv @ 329 NONAME ABSENT
+	_ZN13CCmPluginBase26NumOfConnMethodReferencesLEv @ 330 NONAME ABSENT
+	_ZN13CCmPluginBase5LoadLEm @ 331 NONAME ABSENT
+	_ZN13CCmPluginBase7DeleteLEii @ 332 NONAME ABSENT
+	_ZN13CCmPluginBase7UpdateLEv @ 333 NONAME ABSENT
+	_ZN13CCmPluginBaseC1EP16CCmPluginBaseEng @ 334 NONAME ABSENT
+	_ZN13CCmPluginBaseC2EP16CCmPluginBaseEng @ 335 NONAME ABSENT
+	_ZN13CCmPluginBaseD0Ev @ 336 NONAME ABSENT
+	_ZN13CCmPluginBaseD1Ev @ 337 NONAME ABSENT
+	_ZN13CCmPluginBaseD2Ev @ 338 NONAME ABSENT
+	_ZN14CCmManagerImpl20GetConnectionMethodLEm @ 339 NONAME ABSENT
+	_ZN18CCmDestinationImpl20GetConnectionMethodLEi @ 340 NONAME ABSENT
+	_ZNK13CCmPluginBase10AllocReadLEi @ 341 NONAME ABSENT
+	_ZNK13CCmPluginBase11CreateCopyLEv @ 342 NONAME ABSENT
+	_ZNK13CCmPluginBase11DestinationEv @ 343 NONAME ABSENT
+	_ZNK13CCmPluginBase16GetIntAttributeLEm @ 344 NONAME ABSENT
+	_ZNK13CCmPluginBase17GetBoolAttributeLEm @ 345 NONAME ABSENT
+	_ZNK13CCmPluginBase17ParentDestinationEv @ 346 NONAME ABSENT
+	_ZNK13CCmPluginBase19GetStringAttributeLEm @ 347 NONAME ABSENT
+	_ZNK13CCmPluginBase20GetString8AttributeLEm @ 348 NONAME ABSENT
+	_ZNK13CCmPluginBase5CmMgrEv @ 349 NONAME ABSENT
+	_ZNK13CCmPluginBase6PluginEv @ 350 NONAME ABSENT
+	_ZNK13CCmPluginBase7SessionEv @ 351 NONAME ABSENT
+	_ZTI13CCmPluginBase @ 352 NONAME ABSENT ; #<TI>#
+	_ZTV13CCmPluginBase @ 353 NONAME ABSENT ; #<VT>#
+	_ZN19RCmConnectionMethodC1Ev @ 354 NONAME
+	_ZN19RCmConnectionMethodC2Ev @ 355 NONAME
+	_ZN19RCmConnectionMethodaSERKS_ @ 356 NONAME
+	_ZN22RCmConnectionMethodExtC1Ev @ 357 NONAME
+	_ZN22RCmConnectionMethodExtC2Ev @ 358 NONAME
+	_ZN22RCmConnectionMethodExtaSERKS_ @ 359 NONAME
+	_ZNK19RCmConnectionMethodeqERS_ @ 360 NONAME
+	_ZNK19RCmConnectionMethodneERS_ @ 361 NONAME
+	_ZNK22RCmConnectionMethodExteqERS_ @ 362 NONAME
+	_ZNK22RCmConnectionMethodExtneERS_ @ 363 NONAME
+	_ZN19RCmConnectionMethodD1Ev @ 364 NONAME
+	_ZN19RCmConnectionMethodD2Ev @ 365 NONAME
+	_ZN22RCmConnectionMethodExtD1Ev @ 366 NONAME
+	_ZN22RCmConnectionMethodExtD2Ev @ 367 NONAME
+	_ZN21CCmConnSettingsUiImpl25SetDestinationArrayToUseLE6RArrayImE @ 368 NONAME ABSENT
+	_ZN21CCmConnSettingsUiImpl26ClearDestinationArrayToUseEv @ 369 NONAME ABSENT
+	_ZN13CCmPluginBase17GetAdditionalUidsER6RArrayImE @ 370 NONAME ABSENT
+	_ZN14CCmManagerImpl13WrapCmManagerER13RCmManagerExt @ 371 NONAME ABSENT
+	_ZN16CCmPluginBaseEng17GetAdditionalUidsER6RArrayImE @ 372 NONAME ABSENT
+	_ZN14CCmManagerImpl17CreateFlatCMListLEmR13RPointerArrayI13CCmPluginBaseE @ 373 NONAME ABSENT
+	_ZN14CCmManagerImpl18FilterOutVirtualsLER13RPointerArrayI13CCmPluginBaseE @ 374 NONAME ABSENT
+	_ZN14CCmManagerImpl30CombineArraysForPriorityOrderLER13RPointerArrayI13CCmPluginBaseES3_ @ 375 NONAME ABSENT
+	_ZN14CCmManagerImpl18CreateFlatCMListLCEmR13RPointerArrayI13CCmPluginBaseE @ 376 NONAME ABSENT
+	_ZN19RCmConnectionMethodC1ERKS_ @ 377 NONAME
+	_ZN19RCmConnectionMethodC2ERKS_ @ 378 NONAME
+	_ZN22RCmConnectionMethodExtC1ERKS_ @ 379 NONAME
+	_ZN22RCmConnectionMethodExtC2ERKS_ @ 380 NONAME
+	_ZN13CCmPluginBase13IsLinkedToIapEm @ 381 NONAME ABSENT
+	_ZN13CCmPluginBase14IsLinkedToSnapEm @ 382 NONAME ABSENT
+	_ZNK16CCmPluginBaseEng17ParentDestinationEv @ 383 NONAME ABSENT
+	_ZN13RCmManagerExt20CreateTablesAndOpenLEv @ 384 NONAME
+	_ZN13RCmManagerExt18CreateDestinationLERK7TDesC16m @ 385 NONAME
+	_ZN13RCmManagerExt23CreateConnectionMethodLEmm @ 386 NONAME
+	_ZN16CCmPluginBaseEng15SetPreDefinedIdEm @ 387 NONAME ABSENT
+	_ZN17RCmDestinationExt23CreateConnectionMethodLEmm @ 388 NONAME
+	_ZN23CmPluginBaseSettingsDlg20HandleResourceChangeEi @ 389 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg7ExecuteEv @ 390 NONAME ABSENT
+	_ZThn180_N23CmPluginBaseSettingsDlg7ExecuteEv @ 391 NONAME ABSENT ; #<thunk>#
+	_ZN23CmPluginBaseSettingsDlg16HandleLeaveErrorEi @ 392 NONAME ABSENT
+	_ZThn180_N23CmPluginBaseSettingsDlg16HandleLeaveErrorEi @ 393 NONAME ABSENT ; #<thunk>#
+	_ZN10RCmManager13WriteDefConnLERK15TCmDefConnValue @ 394 NONAME
+	_ZN10RCmManager18CreateDestinationLERK7TDesC16 @ 395 NONAME
+	_ZN10RCmManager18CreateDestinationLERK7TDesC16m @ 396 NONAME
+	_ZN10RCmManager20CreateTablesAndOpenLEv @ 397 NONAME
+	_ZN10RCmManager20RemoveAllReferencesLER19RCmConnectionMethod @ 398 NONAME
+	_ZN10RCmManager21CopyConnectionMethodLER14RCmDestinationR19RCmConnectionMethod @ 399 NONAME
+	_ZN10RCmManager21MoveConnectionMethodLER14RCmDestinationS1_R19RCmConnectionMethod @ 400 NONAME
+	_ZN10RCmManager23CreateConnectionMethodLEm @ 401 NONAME
+	_ZN10RCmManager23CreateConnectionMethodLEmm @ 402 NONAME
+	_ZN10RCmManager23RemoveConnectionMethodLER14RCmDestinationR19RCmConnectionMethod @ 403 NONAME
+	_ZN10RCmManager26UpdateBearerPriorityArrayLERK6RArrayI15TBearerPriorityE @ 404 NONAME
+	_ZN14RCmDestination10SetHiddenLEi @ 405 NONAME
+	_ZN14RCmDestination12SetMetadataLEN9CMManager18TSnapMetadataFieldEm @ 406 NONAME
+	_ZN14RCmDestination14SetProtectionLEN9CMManager16TProtectionLevelE @ 407 NONAME
+	_ZN14RCmDestination15ModifyPriorityLER19RCmConnectionMethodj @ 408 NONAME
+	_ZN14RCmDestination20AddConnectionMethodLE19RCmConnectionMethod @ 409 NONAME
+	_ZN14RCmDestination23AddEmbeddedDestinationLERKS_ @ 410 NONAME
+	_ZN14RCmDestination23CreateConnectionMethodLEm @ 411 NONAME
+	_ZN14RCmDestination23CreateConnectionMethodLEmm @ 412 NONAME
+	_ZN14RCmDestination23DeleteConnectionMethodLER19RCmConnectionMethod @ 413 NONAME
+	_ZN14RCmDestination23RemoveConnectionMethodLE19RCmConnectionMethod @ 414 NONAME
+	_ZN14RCmDestination7UpdateLEv @ 415 NONAME
+	_ZN14RCmDestination8DeleteLDEv @ 416 NONAME
+	_ZN14RCmDestination8SetIconLEm @ 417 NONAME ABSENT
+	_ZN14RCmDestination8SetNameLERK7TDesC16 @ 418 NONAME
+	_ZN19RCmConnectionMethod11CreateCopyLEv @ 419 NONAME
+	_ZN19RCmConnectionMethod16SetIntAttributeLEmm @ 420 NONAME
+	_ZN19RCmConnectionMethod17SetBoolAttributeLEmi @ 421 NONAME
+	_ZN19RCmConnectionMethod19SetStringAttributeLEmRK7TDesC16 @ 422 NONAME
+	_ZN19RCmConnectionMethod20SetString8AttributeLEmRK6TDesC8 @ 423 NONAME
+	_ZN19RCmConnectionMethod7DeleteLEv @ 424 NONAME
+	_ZN19RCmConnectionMethod7UpdateLEv @ 425 NONAME
+	_ZNK10RCmManager17SupportedBearersLER6RArrayImE @ 426 NONAME
+	_ZNK10RCmManager18UncategorizedIconLEv @ 427 NONAME ABSENT
+	_ZN10RCmManager20ReadGenConnSettingsLER18TCmGenConnSettings @ 428 NONAME
+	_ZN10RCmManager21WriteGenConnSettingsLERK18TCmGenConnSettings @ 429 NONAME
+	_ZN14CCmManagerImpl16IapStillExistedLERK16CCmPluginBaseEng @ 430 NONAME ABSENT
+	_ZN14CCmManagerImpl16WatcherRegisterLEP18MCmCommsDatWatcher @ 431 NONAME ABSENT
+	_ZN14CCmManagerImpl17IsIapStillInDestLEP18CCmDestinationImplRK16CCmPluginBaseEng @ 432 NONAME ABSENT
+	_ZN14CCmManagerImpl17WatcherUnRegisterEv @ 433 NONAME ABSENT
+	_ZN14CCmManagerImpl18RemoveDestFromPoolEP18CCmDestinationImpl @ 434 NONAME ABSENT
+	_ZN14CCmManagerImpl24DestinationStillExistedLEP18CCmDestinationImpl @ 435 NONAME ABSENT
+	_ZN23CmPluginBaseSettingsDlg14OfferKeyEventLERK9TKeyEvent10TEventCode @ 436 NONAME ABSENT
+	_ZN14RCmDestination8SetIconLERK7TDesC16 @ 437 NONAME
+	_ZN19RCmConnectionMethod8SetIconLERK7TDesC16 @ 438 NONAME
+	_ZNK10RCmManager21GetUncategorizedIconLEv @ 439 NONAME
+	_ZNK14RCmDestination8GetIconLEv @ 440 NONAME
+	_ZNK19RCmConnectionMethod8GetIconLEv @ 441 NONAME
+	_ZN14RCmDestination8RefreshLEv @ 442 NONAME
+	_ZN19RCmConnectionMethod8RefreshLEv @ 443 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/group/bld.inf	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2006-2010 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:
+* Build file for Connection Method Manager's framework.
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+// export iby files
+../rom/cmmapi.iby    CORE_MW_LAYER_IBY_EXPORT_PATH(cmmapi.iby)
+
+PRJ_MMPFILES
+cmmapi.mmp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/group/cmmapi.mmp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2006-2010 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:
+* Makefile of Connection Method Manager's framework.
+*
+*/
+
+
+#include <data_caging_paths.hrh>
+#include <platform_paths.hrh>
+
+TARGET          cmmanager.dll
+TARGETTYPE      dll
+UID             0x1000008d 0x10207376
+CAPABILITY      CAP_GENERAL_DLL
+VENDORID VID_DEFAULT
+
+SOURCEPATH      ../../cmmcommon/Src
+SOURCE          cmmclistatic.cpp
+
+SOURCEPATH      ../Src
+SOURCE          cmmanager.cpp
+SOURCE          cmmanagerapi.cpp
+SOURCE          cmdestination.cpp
+SOURCE          cmdestinationwrapper.cpp
+SOURCE          cmdestinationapi.cpp
+SOURCE          cmconnectionmethod.cpp
+SOURCE          cmconnectionmethodwrapper.cpp
+SOURCE          cmconnectionmethodapi.cpp
+SOURCE          cmmanagerext.cpp
+SOURCE          cmdestinationext.cpp
+SOURCE          cmconnectionmethodext.cpp
+SOURCE          cmapplicationsettingsui.cpp
+
+// Component specific internal headers
+USERINCLUDE         ../inc
+USERINCLUDE         ../../cmmcommon/inc
+USERINCLUDE         ../traces
+
+// ADO specific internal headers
+SYSTEMINCLUDE       ../../../../inc
+
+//Macro to /epoc32 headers
+MW_LAYER_SYSTEMINCLUDE
+
+LIBRARY         euser.lib
+
+DEBUGLIBRARY    flogger.lib
+
+#if defined(ARMCC)
+DEFFILE ../EABI/CmManager_prot_setup.def
+#elif defined( WINSCW )
+DEFFILE ../BWinsCw/CmManager_prot_setup.def
+#elif defined( WINS )
+DEFFILE ../BWins/CmManager_prot_setup.def
+#else
+DEFFILE ../BMarm/CmManager_prot_setup.def
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/inc/cmconnectionmethodapi.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,107 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Client side IPC handling for Connection Method Manager server.
+*
+*/
+
+
+#ifndef CMCONNECTIONMETHODAPI_H
+#define CMCONNECTIONMETHODAPI_H
+
+#include <e32std.h>
+
+
+NONSHARABLE_CLASS( RCmConnectionMethodApi ) : public RSubSessionBase
+    {
+public:
+    RCmConnectionMethodApi();
+    TBool SessionConnected() const;
+
+public:
+    void ConnectAndGetConnMethodWithIdL(
+            const RSessionBase& aSession,
+            const TUint32 aIapId,
+            TInt& aExistingHandle );
+    void ConnectAndGetConnMethodFromDestWithIndexL(
+            const RSessionBase& aSession,
+            const TInt aDestHandle,
+            const TInt aIndex,
+            TInt& aExistingHandle );
+    void ConnectAndGetConnMethodFromDestWithIdL(
+            const RSessionBase& aSession,
+            const TInt aDestHandle,
+            const TInt aIapId,
+            TInt& aExistingHandle );
+    void ConnectAndCreateConnMethodL(
+            const RSessionBase& aSession,
+            const TUint32 aBearerType );
+    void ConnectAndCreateConnMethodWithIdL(
+            const RSessionBase& aSession,
+            const TUint32 aBearerType,
+            const TUint32 aIapId );
+    TInt ConnectAndCreateConnMethodCopy(
+            const RSessionBase& aSession,
+            const TInt aConnMethodHandle );
+    void ConnectAndCreateConnMethodToDestL(
+            const RSessionBase& aSession,
+            const TInt aDestHandle,
+            const TUint32 aBearerType );
+    void ConnectAndCreateConnMethodToDestWithIdL(
+            const RSessionBase& aSession,
+            const TInt aDestHandle,
+            const TUint32 aBearerType,
+            const TUint32 aIapId );
+
+    void Close();
+
+    TInt GetIntAttribute(
+            const TUint32 aAttribute,
+            TUint32& aValue );
+    TInt GetBoolAttribute(
+            const TUint32 aAttribute,
+            TBool& aValue );
+    TInt GetStringAttribute(
+            const TUint32 aAttribute,
+            HBufC* aBuffer );
+    TInt GetString8Attribute(
+            const TUint32 aAttribute,
+            HBufC8* aBuffer8 );
+
+    TInt SetIntAttribute(
+            const TUint32 aAttribute,
+            const TUint32 aValue );
+    TInt SetBoolAttribute(
+            const TUint32 aAttribute,
+            const TBool aValue );
+    TInt SetStringAttribute(
+            const TUint32 aAttribute,
+            const TDesC16& aValue );
+    TInt SetString8Attribute(
+            const TUint32 aAttribute,
+            const TDesC8& aValue );
+
+    TInt Update();
+    TInt Refresh();
+    TInt Delete( TBool& aResult );
+    TInt IsEqual( const TInt aHandle, TBool& aResult );
+
+private:
+    // True when a subsession is established to the server.
+    TBool iSessionConnected;
+    };
+
+#endif // CMCONNECTIONMETHODAPI_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/inc/cmconnectionmethodwrapper.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,127 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Collects API calls from RCmConnectionMethod- and
+* RCmConnectionMethodExt-classes.
+*
+*/
+
+
+#ifndef CMCONNECTIONMETHODWRAPPER_H
+#define CMCONNECTIONMETHODWRAPPER_H
+
+#include <e32base.h>
+#include "cmconnectionmethodapi.h"
+
+class RCmManagerApi;
+
+
+NONSHARABLE_CLASS( CCmConnectionMethodWrapper ) : public CBase
+    {
+public:
+    static CCmConnectionMethodWrapper* NewL();
+    static CCmConnectionMethodWrapper* NewLC();
+    virtual ~CCmConnectionMethodWrapper();
+
+public:
+    CCmConnectionMethodWrapper();
+
+public:
+    void GetConnMethodWithIdL(
+            RCmManagerApi* aCmManagerApi,
+            const TUint32 aIapId,
+            TInt& aExistingHandle );
+    void GetConnMethodFromDestWithIndexL(
+            RCmManagerApi* aCmManagerApi,
+            const TInt aDestHandle,
+            const TInt aIndex,
+            TInt& aExistingHandle );
+    void GetConnMethodFromDestWithIdL(
+            RCmManagerApi* aCmManagerApi,
+            const TInt aDestHandle,
+            const TInt aIapId,
+            TInt& aExistingHandle );
+    void CreateConnMethodL(
+            RCmManagerApi* aCmManagerApi,
+            const TUint32 aBearerType );
+    void CreateConnMethodWithIdL(
+            RCmManagerApi* aCmManagerApi,
+            const TUint32 aBearerType,
+            const TUint32 aIapId );
+    TInt CreateConnMethodCopy(
+            RCmManagerApi* aCmManagerApi,
+            const TInt aConnMethodHandle );
+    void CreateConnMethodToDestL(
+            RCmManagerApi* aCmManagerApi,
+            const TInt aDestHandle,
+            const TUint32 aBearerType );
+    void CreateConnMethodToDestWithIdL(
+            RCmManagerApi* aCmManagerApi,
+            const TInt aDestHandle,
+            const TUint32 aBearerType,
+            const TUint32 aIapId );
+
+    TInt GetIntAttribute(
+            const TUint32 aAttribute,
+            TUint32& aValue );
+    TInt GetBoolAttribute(
+            const TUint32 aAttribute,
+            TBool& aValue );
+    TInt GetStringAttribute(
+            const TUint32 aAttribute,
+            HBufC* aBuffer );
+    TInt GetString8Attribute(
+            const TUint32 aAttribute,
+            HBufC8* aBuffer );
+
+    TInt SetIntAttribute(
+            const TUint32 aAttribute,
+            const TUint32 aValue );
+    TInt SetBoolAttribute(
+            const TUint32 aAttribute,
+            const TBool aValue );
+    TInt SetStringAttribute(
+            const TUint32 aAttribute,
+            const TDesC16& aValue );
+    TInt SetString8Attribute(
+            const TUint32 aAttribute,
+            const TDesC8& aValue );
+
+    TInt Update();
+    TInt Refresh();
+    TInt Delete( TBool& aResult );
+    TInt IsEqual( const TInt aHandle, TBool& aResult );
+
+    TBool SessionConnected() const;
+    void CloseSession();
+    TInt GetHandle() const;
+    RCmManagerApi* GetMainSession() const;
+
+    void IncreaseReferenceCounter();
+    TInt DecreaseReferenceCounter();
+
+private:
+    // Subsession to server representing this connection method handle.
+    RCmConnectionMethodApi iCmConnectionMethodApi;
+
+    // Pointer for main session to server.
+    RCmManagerApi* iCmManagerApi; // Not owned.
+
+    // Counts the number of references client has to this specific handle.
+    TInt iReferenceCounter;
+    };
+
+#endif // CMCONNECTIONMETHODWRAPPER_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/inc/cmdestinationapi.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,96 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Client side IPC handling for Connection Method Manager server.
+*
+*/
+
+
+#ifndef CMDESTINATIONAPI_H
+#define CMDESTINATIONAPI_H
+
+#include <e32std.h>
+
+
+NONSHARABLE_CLASS( RCmDestinationApi ) : public RSubSessionBase
+    {
+public:
+    RCmDestinationApi();
+    TBool SessionConnected();
+
+public:
+    void ConnectAndGetDestWithIdL(
+            const RSessionBase& aSession,
+            const TUint32 aId,
+            TInt& aExistingHandle );
+    void ConnectAndCreateDestWithNameL(
+            const RSessionBase& aSession,
+            const TDesC& aName );
+    void ConnectAndCreateDestWithNameAndIdL(
+            const RSessionBase& aSession,
+            const TDesC& aName,
+            const TUint32 aId );
+    void ConnectAndGetConnMethodAsEmbeddedDestL(
+            const RSessionBase& aSession,
+            const TInt aConnMethodHandle,
+            TInt& aExistingHandle );
+
+    void Close();
+    TInt ConnectionMethodCount( TInt& aCount );
+
+    TInt Priority( const TInt aHandle, TUint& aPriority );
+    TInt GetName( HBufC* aBuffer );
+
+    TInt GetId( TUint32& aId );
+    TInt GetElementId( TUint32& aElementId );
+    TInt GetMetadata(
+            const TUint32 aMetadataField,
+            TUint32& aValue );
+    TInt GetProtectionLevel( TInt& aProtectionLevel );
+
+    TInt AddConnectionMethod(
+            const TInt aConnMethodHandle,
+            TInt& aIndex );
+    TInt AddEmbeddedDestination(
+            const TInt aDestHandle,
+            TInt& aIndex );
+    TInt DeleteConnectionMethod(
+            const TInt aConnMethodHandle );
+    TInt RemoveConnectionMethod(
+            const TInt aConnMethodHandle );
+
+    TInt ModifyPriority(
+            const TInt aConnMethodHandle,
+            const TUint aIndex );
+    TInt SetName( const TDesC& aValue );
+    TInt SetMetadata(
+            const TUint32 aMetaField,
+            const TUint32 aValue );
+    TInt SetProtection( const TInt aValue );
+    TInt SetHidden( const TBool aHidden );
+    TInt Update();
+    TInt Refresh();
+    TInt Delete();
+    TInt IsConnected( TBool& aResult );
+    TInt IsHidden( TBool& aResult );
+    TInt IsEqual( const TInt aHandle, TBool& aResult );
+
+private:
+    // True when a subsession is established to the server.
+    TBool iSessionConnected;
+    };
+
+#endif // CMDESTINATIONAPI_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/inc/cmdestinationwrapper.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,115 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Collects API calls from RCmDestination- and RCmDestinationExt-classes.
+*
+*/
+
+
+#ifndef CMDESTINATIONWRAPPER_H
+#define CMDESTINATIONWRAPPER_H
+
+
+#include <e32base.h>
+#include "cmdestinationapi.h"
+
+class RCmManagerApi;
+
+
+NONSHARABLE_CLASS( CCmDestinationWrapper ) : public CBase
+    {
+public:
+    static CCmDestinationWrapper* NewL();
+    static CCmDestinationWrapper* NewLC();
+    virtual ~CCmDestinationWrapper();
+
+public:
+    CCmDestinationWrapper();
+
+public:
+    void GetDestWithIdL(
+            RCmManagerApi* aCmManagerApi,
+            const TUint32 aId,
+            TInt& aExistingHandle );
+    void CreateDestByNameL(
+            RCmManagerApi* aCmManagerApi,
+            const TDesC& aName );
+    void CreateDestByNameAndIdL(
+            RCmManagerApi* aCmManagerApi,
+            const TDesC& aName,
+            const TUint32 aId );
+    void GetConnMethodAsEmbeddedDestL(
+            RCmManagerApi* aCmManagerApi,
+            const TInt aConnMethodHandle,
+            TInt& aExistingHandle );
+
+    TInt ConnectionMethodCount( TInt& aCount );
+    TInt Priority( const TInt aHandle, TUint& aPriority );
+    TInt GetName( HBufC* aBuffer );
+    TInt GetId( TUint32& aId );
+    TInt GetElementId( TUint32& aElementId );
+    TInt GetMetadata(
+            const TUint32 aMetadataField,
+            TUint32& aValue );
+    TInt GetProtectionLevel( TInt& aProtectionLevel );
+
+    TInt AddConnectionMethod(
+            const TInt aConnMethodHandle,
+            TInt& aIndex );
+    TInt AddEmbeddedDestination(
+            const TInt aDestHandle,
+            TInt& aIndex );
+    TInt DeleteConnectionMethod(
+            const TInt aConnMethodHandle);
+    TInt RemoveConnectionMethod(
+            const TInt aConnMethodHandle );
+
+    TInt ModifyPriority(
+            const TInt aConnMethodHandle,
+            const TUint aIndex );
+    TInt SetName( const TDesC& aValue );
+    TInt SetMetadata(
+            const TUint32 aMetaField,
+            const TUint32 aValue );
+    TInt SetProtection( const TInt aValue );
+    TInt SetHidden( const TBool aHidden );
+    TInt Update();
+    TInt Refresh();
+    TInt Delete();
+    TInt IsConnected( TBool& aResult );
+    TInt IsHidden( TBool& aResult );
+    TInt IsEqual( const TInt aHandle, TBool& aResult );
+
+    TBool SessionConnected();
+    void CloseSession();
+    TInt GetHandle() const;
+    RCmManagerApi* GetMainSession() const;
+
+    void IncreaseReferenceCounter();
+    TInt DecreaseReferenceCounter();
+
+private:
+    // Subsession to server representing this destination handle.
+    RCmDestinationApi iCmDestinationApi;
+
+    // Pointer for main session to server.
+    RCmManagerApi* iCmManagerApi; // Not owned.
+
+    // Counts the number of references client has to this specific handle.
+    TInt iReferenceCounter;
+    };
+
+#endif // CMDESTINATIONWRAPPER_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/inc/cmmanagerapi.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,159 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Client side IPC handling for Connection Method Manager server.
+*
+*/
+
+
+#ifndef CMMANAGERAPI_H
+#define CMMANAGERAPI_H
+
+#include <e32std.h>
+#include <cmdefconnvalues.h>
+#include <cmgenconnsettings.h>
+
+class CCmDestinationWrapper;
+class CCmConnectionMethodWrapper;
+class TBearerPriority;
+class TCmmIpcStructGetConnMethods;
+class TCmmIpcStructMoveConnMethod;
+
+
+NONSHARABLE_CLASS( RCmManagerApi ) : public RSessionBase
+    {
+public:
+    /**
+     * Constructor.
+     */
+    RCmManagerApi();
+
+public:
+    /**
+     * Opens a connection (session) to the CMM server.
+     * @return KErrNone if the connection succeeds, a system-wide error code
+     * if not.
+     */
+    TInt Connect();
+
+    /**
+     * Closes the connection (session).
+     */
+    void Close();
+
+    TInt StoreDestinationWrapper(
+            CCmDestinationWrapper* aDestinationWrapper );
+    TInt RemoveDestinationWrapper(
+            CCmDestinationWrapper* aDestinationWrapper );
+    CCmDestinationWrapper* GetDestinationWrapperL( const TInt& aHandle );
+
+    TInt StoreConnMethodWrapper(
+            CCmConnectionMethodWrapper* aConnMethodWrapper );
+    TInt RemoveConnMethodWrapper(
+            CCmConnectionMethodWrapper* aConnMethodWrapper );
+    CCmConnectionMethodWrapper* GetConnMethodWrapperL( const TInt& aHandle );
+
+    TInt GetBearerInfoInt(
+            const TUint32 aBearerType,
+            const TUint32 aAttribute,
+            TUint32& aValue );
+    TInt GetBearerInfoBool(
+            const TUint32 aBearerType,
+            const TUint32 aAttribute,
+            TBool& aValue );
+    TInt GetBearerInfoString(
+            const TUint32 aBearerType,
+            const TUint32 aAttribute,
+            HBufC* aBuffer );
+    TInt GetBearerInfoString8(
+            const TUint32 aBearerType,
+            const TUint32 aAttribute,
+            HBufC8* aBuffer8 );
+
+    TInt GetConnectionMethodInfoInt(
+            const TUint32 aIapId,
+            const TUint32 aAttribute,
+            TUint32& aValue );
+    TInt GetConnectionMethodInfoBool(
+            const TUint32 aIapId,
+            const TUint32 aAttribute,
+            TBool& aValue );
+    TInt GetConnectionMethodInfoString(
+            const TUint32 aIapId,
+            const TUint32 aAttribute,
+            HBufC* aBuffer );
+    TInt GetConnectionMethodInfoString8(
+            const TUint32 aIapId,
+            const TUint32 aAttribute,
+            HBufC8* aBuffer8 );
+
+    void GetConnMethodsL(
+            const TCmmIpcStructGetConnMethods& aParameters,
+            RArray<TUint32>& aCmArray );
+    void GetAllDestinationsL(
+            RArray<TUint32>& aDestArray );
+
+    void GetBearerPriorityArrayL( RArray<TBearerPriority>& aArray );
+    void SetBearerPriorityArrayL( const RArray<TBearerPriority>& aArray );
+
+    void GetSupportedBearersL( RArray<TUint32>& aArray );
+
+    TInt GetEasyWlanId( TUint32& aValue );
+
+    TInt ReadDefaultConnection(
+            TCmDefConnValue& aDefConnSetting );
+    TInt WriteDefaultConnection(
+            const TCmDefConnValue& aDefConnSetting );
+
+    TInt ReadGeneralConnectionSettings(
+            TCmGenConnSettings& aGenConnSettings );
+    TInt WriteGeneralConnectionSettings(
+            const TCmGenConnSettings& aGenConnSettings );
+
+    TInt CopyConnectionMethod(
+            const TInt aTargetDestHandle,
+            const TInt aConnMethodHandle,
+            TInt& aIndex );
+    TInt MoveConnectionMethod(
+            TCmmIpcStructMoveConnMethod& aPkgData );
+    TInt RemoveConnectionMethod(
+            const TInt aTargetDestHandle,
+            const TInt aConnMethodHandle );
+    TInt RemoveAllReferences(
+            const TInt aConnMethodHandle );
+
+private:
+    // Array of destination handles opened through this session.
+    // Does not have ownership of contained objects.
+    RPointerArray<CCmDestinationWrapper> iDestinations;
+
+    // Array of connection method handles opened through this session.
+    // Does not have ownership of contained objects.
+    RPointerArray<CCmConnectionMethodWrapper> iConnMethods;
+
+    // True when a session is established to the server.
+    TBool iConnected;
+
+    // True when using smaller buffer for ConnectionMethodL(array)-query.
+    // Bigger buffer is taken into use if needed.
+    TBool iSmallBufsForDestinations;
+
+    // True when using smaller buffer for AllDestinationsL(array)-query.
+    // Bigger buffer is taken into use if needed.
+    TBool iSmallBufsForConnMethods;
+    };
+
+#endif // CMMANAGERAPI_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/rom/cmmapi.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2009-2010 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: 
+* cmmanager.dll to ROM.
+*
+*/
+
+#ifndef CMMAPI_IBY__
+#define CMMAPI_IBY__
+
+file=ABI_DIR\BUILD_DIR\cmmanager.dll     SHARED_LIB_DIR\cmmanager.dll
+
+
+#endif // CMMAPI_IBY__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/src/cmapplicationsettingsui.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,122 @@
+/*
+* Copyright (c) 2006 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:  Application Setting UI
+*
+*/
+
+// Dummy implementation not to break the build.
+// Not working at the moment due to cmmanager refactoring work.
+
+#include "cmapplicationsettingsui.h"
+//#include <cmmanager.h>
+//#include "cmconnsettingsuiimpl.h"
+//#include "cmmanager.hrh"
+
+using namespace CMManager;
+//-----------------------------------------------------------------------------
+//  CCmApplicationSettingsUi::NewL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C CCmApplicationSettingsUi* CCmApplicationSettingsUi::NewL()
+    {
+    /*
+    CCmApplicationSettingsUi* self = new (ELeave) CCmApplicationSettingsUi();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );   // self
+    return self;
+    */
+    return NULL;
+    }
+    
+//-----------------------------------------------------------------------------
+//  CCmApplicationSettingsUi::NewLC()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C CCmApplicationSettingsUi* CCmApplicationSettingsUi::NewLC()
+    {
+    /*
+    CCmApplicationSettingsUi* self = new (ELeave) CCmApplicationSettingsUi();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    */
+    return NULL;
+    }
+
+//-----------------------------------------------------------------------------
+//  CCmApplicationSettingsUi::CCmApplicationSettingsUi()
+//-----------------------------------------------------------------------------
+//
+CCmApplicationSettingsUi::CCmApplicationSettingsUi()
+    {
+    iImpl = NULL;
+    }
+
+//-----------------------------------------------------------------------------
+//  CCmApplicationSettingsUi::~CCmApplicationSettingsUi()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C CCmApplicationSettingsUi::~CCmApplicationSettingsUi()
+    {
+    // delete iImpl;
+    }
+
+//-----------------------------------------------------------------------------
+//  CCmApplicationSettingsUi::ConstructL()
+//-----------------------------------------------------------------------------
+//
+void CCmApplicationSettingsUi::ConstructL()
+    {
+    // iImpl = CCmConnSettingsUiImpl::NewWithoutTablesL(); */
+    }
+    
+//-----------------------------------------------------------------------------
+//  CCmApplicationSettingsUi::RunSettingsL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool CCmApplicationSettingsUi::RunApplicationSettingsL( 
+                                               TCmSettingSelection& aSelection )
+    {
+    /*
+    TBearerFilterArray aFilterArray;
+    return iImpl->RunApplicationSettingsL(  aSelection,
+                                            EShowDefaultConnection | 
+                                            EShowDestinations | 
+                                            EShowConnectionMethods,
+                                            aFilterArray );
+                                            */
+    (void) aSelection;
+    return NULL;
+    }    
+    
+//-----------------------------------------------------------------------------
+//  CCmApplicationSettingsUi::RunSettingsL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool CCmApplicationSettingsUi::RunApplicationSettingsL( 
+                                        TCmSettingSelection& aSelection, 
+                                        TUint aListItems,
+                                        TBearerFilterArray& aFilterArray)
+    {
+    /*
+    return iImpl->RunApplicationSettingsL(  aSelection,
+                                            aListItems,
+                                            aFilterArray );
+    */
+    (void) aSelection;
+    (void) aListItems;
+    (void) aFilterArray;
+    return NULL;
+    }    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/src/cmconnectionmethod.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,536 @@
+/*
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Implementation of RCmConnectionMethod.
+*
+*/
+
+
+#include <cmconnectionmethod.h>
+#include <cmdestination.h>
+
+#include "cmmserverdefs.h"
+#include "cmmanagerapi.h"
+#include "cmdestinationwrapper.h"
+#include "cmconnectionmethodwrapper.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmconnectionmethodTraces.h"
+#endif
+
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::RCmConnectionMethod()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethod::RCmConnectionMethod(
+        const RCmConnectionMethod& aConnMethod )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_RCMCONNECTIONMETHOD_ENTRY );
+
+    this->iCmConnectionMethodWrapper = aConnMethod.iCmConnectionMethodWrapper;
+    if ( iCmConnectionMethodWrapper )
+        {
+        iCmConnectionMethodWrapper->IncreaseReferenceCounter();
+        }
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_RCMCONNECTIONMETHOD_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::Close()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmConnectionMethod::Close()
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_CLOSE_ENTRY );
+
+    if ( iCmConnectionMethodWrapper )
+        {
+        if ( iCmConnectionMethodWrapper->DecreaseReferenceCounter() <= 0 )
+            {
+            delete iCmConnectionMethodWrapper;
+            }
+        iCmConnectionMethodWrapper = NULL;
+        }
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_CLOSE_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::~RCmConnectionMethod()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethod::~RCmConnectionMethod()
+    {
+    OstTraceFunctionEntry0( DUP1_RCMCONNECTIONMETHOD_RCMCONNECTIONMETHOD_ENTRY );
+    Close();
+    OstTraceFunctionExit0( DUP1_RCMCONNECTIONMETHOD_RCMCONNECTIONMETHOD_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::CreateCopyL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethod RCmConnectionMethod::CreateCopyL()
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_CREATECOPYL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt connMethodHandle = iCmConnectionMethodWrapper->GetHandle();
+    CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+
+    TInt err = cmWrapper->CreateConnMethodCopy(
+            iCmConnectionMethodWrapper->GetMainSession(),
+            connMethodHandle );
+    User::LeaveIfError( err );
+    CleanupStack::Pop( cmWrapper );
+
+    RCmConnectionMethod cm;
+    cm.iCmConnectionMethodWrapper = cmWrapper;
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_CREATECOPYL_EXIT );
+    return cm;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::GetIntAttributeL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmConnectionMethod::GetIntAttributeL(
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_GETINTATTRIBUTEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TUint32 value( 0 );
+    TInt err = iCmConnectionMethodWrapper->GetIntAttribute( aAttribute, value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_GETINTATTRIBUTEL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::GetBoolAttributeL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmConnectionMethod::GetBoolAttributeL(
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_GETBOOLATTRIBUTEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TBool value( 0 );
+    TInt err = iCmConnectionMethodWrapper->GetBoolAttribute( aAttribute, value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_GETBOOLATTRIBUTEL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::GetStringAttributeL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* RCmConnectionMethod::GetStringAttributeL(
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_GETSTRINGATTRIBUTEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    HBufC* buffer = HBufC::NewLC( KCmmStringLengthMax );
+    TInt err = iCmConnectionMethodWrapper->GetStringAttribute( aAttribute, buffer );
+    User::LeaveIfError( err );
+
+    if ( buffer->Length() > 0 )
+        {
+        CleanupStack::Pop( buffer );
+        }
+    else
+        {
+        CleanupStack::PopAndDestroy( buffer );
+        buffer = NULL;
+        buffer = KNullDesC().AllocL();
+        }
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_GETSTRINGATTRIBUTEL_EXIT );
+    return buffer;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::GetString8AttributeL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* RCmConnectionMethod::GetString8AttributeL(
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_GETSTRING8ATTRIBUTEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    HBufC8* buffer8 = HBufC8::NewLC( KCmmStringLengthMax );
+    TInt err = iCmConnectionMethodWrapper->GetString8Attribute( aAttribute, buffer8 );
+    User::LeaveIfError( err );
+
+    if ( buffer8->Length() > 0 )
+        {
+        CleanupStack::Pop( buffer8 );
+        }
+    else
+        {
+        CleanupStack::PopAndDestroy( buffer8 );
+        buffer8 = NULL;
+        buffer8 = KNullDesC8().AllocL();
+        }
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_GETSTRING8ATTRIBUTEL_EXIT );
+    return buffer8;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::SetIntAttributeL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmConnectionMethod::SetIntAttributeL(
+        TUint32 aAttribute,
+        TUint32 aValue )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_SETINTATTRIBUTEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmConnectionMethodWrapper->SetIntAttribute( aAttribute, aValue );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_SETINTATTRIBUTEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::SetBoolAttributeL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmConnectionMethod::SetBoolAttributeL(
+        TUint32 aAttribute,
+        TBool aValue )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_SETBOOLATTRIBUTEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmConnectionMethodWrapper->SetBoolAttribute( aAttribute, aValue );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_SETBOOLATTRIBUTEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::SetStringAttributeL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmConnectionMethod::SetStringAttributeL(
+        TUint32 aAttribute,
+        const TDesC16& aValue )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_SETSTRINGATTRIBUTEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmConnectionMethodWrapper->SetStringAttribute( aAttribute, aValue );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_SETSTRINGATTRIBUTEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::SetString8AttributeL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmConnectionMethod::SetString8AttributeL(
+        TUint32 aAttribute,
+        const TDesC8& aValue )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_SETSTRING8ATTRIBUTEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmConnectionMethodWrapper->SetString8Attribute( aAttribute, aValue );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_SETSTRING8ATTRIBUTEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::UpdateL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmConnectionMethod::UpdateL()
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_UPDATEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmConnectionMethodWrapper->Update();
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_UPDATEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::DeleteL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmConnectionMethod::DeleteL()
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_DELETEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TBool result( ETrue );
+    TInt err = iCmConnectionMethodWrapper->Delete( result );
+    User::LeaveIfError( err );
+
+    // Instead of calling Close(), we need to force this handle closed even if
+    // copies have been made. So we delete the destination wrapper directly.
+    delete iCmConnectionMethodWrapper;
+    iCmConnectionMethodWrapper = NULL;
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_DELETEL_EXIT );
+    return result;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::DestinationL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestination RCmConnectionMethod::DestinationL() const
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_DESTINATIONL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    // If client already has a handle open to this destination, give a
+    // reference to it.
+    CCmDestinationWrapper* destWrap = CCmDestinationWrapper::NewLC();
+    TInt connMethodHandle = iCmConnectionMethodWrapper->GetHandle();
+    TInt existingHandle( 0 );
+    destWrap->GetConnMethodAsEmbeddedDestL(
+            iCmConnectionMethodWrapper->GetMainSession(),
+            connMethodHandle,
+            existingHandle );
+    if ( existingHandle )
+        {
+        CleanupStack::PopAndDestroy( destWrap );
+        destWrap = iCmConnectionMethodWrapper->GetMainSession()->GetDestinationWrapperL(
+                existingHandle );
+        destWrap->IncreaseReferenceCounter();
+        }
+    else
+        {
+        CleanupStack::Pop( destWrap );
+        }
+
+    RCmDestination dest;
+    dest.iCmDestinationWrapper = destWrap;
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_DESTINATIONL_EXIT );
+    return dest;
+    }
+
+//--------------------------------------------------------------------------
+//  RCmConnectionMethod::RCmConnectionMethod()
+//--------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethod::RCmConnectionMethod() : iCmConnectionMethodWrapper( NULL )
+    {
+    OstTraceFunctionEntry0( DUP2_RCMCONNECTIONMETHOD_RCMCONNECTIONMETHOD_ENTRY );
+    OstTraceFunctionExit0( DUP2_RCMCONNECTIONMETHOD_RCMCONNECTIONMETHOD_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::operator=()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethod& RCmConnectionMethod::operator=(
+        const RCmConnectionMethod& aConnMethod )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_OPERATOR_ENTRY );
+
+    if ( this != &aConnMethod )
+        {
+        Close();
+        this->iCmConnectionMethodWrapper = aConnMethod.iCmConnectionMethodWrapper;
+        if ( iCmConnectionMethodWrapper )
+            {
+            iCmConnectionMethodWrapper->IncreaseReferenceCounter();
+            }
+        }
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_OPERATOR_EXIT );
+    return *this;
+    }
+
+//--------------------------------------------------------------------------
+//  RCmConnectionMethod::operator==()
+//--------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmConnectionMethod::operator==( RCmConnectionMethod& aConnMethod ) const
+    {
+    OstTraceFunctionEntry0( DUP1_RCMCONNECTIONMETHOD_OPERATOR_ENTRY );
+
+    TBool result( EFalse );
+    if ( !aConnMethod.iCmConnectionMethodWrapper )
+        {
+        if ( !iCmConnectionMethodWrapper )
+            {
+            result = ETrue; // Both empty.
+            }
+        else
+            {
+            result = EFalse;
+            }
+        }
+    else if ( !iCmConnectionMethodWrapper )
+        {
+        result = EFalse;
+        }
+    else
+        {
+        // Both connection method objects have wrappers.
+
+        if ( !iCmConnectionMethodWrapper->SessionConnected() ||
+                !aConnMethod.iCmConnectionMethodWrapper->SessionConnected() )
+            {
+            result = EFalse;
+            }
+        else
+            {
+            // Both connection method objects are connected to server.
+
+            TInt handle = aConnMethod.iCmConnectionMethodWrapper->GetHandle();
+            TInt err = iCmConnectionMethodWrapper->IsEqual( handle, result );
+
+            if ( err )
+                {
+                result = EFalse;
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( DUP1_RCMCONNECTIONMETHOD_OPERATOR_EXIT );
+    return result;
+    }
+
+//--------------------------------------------------------------------------
+//
+//--------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmConnectionMethod::operator!=( RCmConnectionMethod& aConnMethod ) const
+    {
+    OstTraceFunctionEntry0( DUP2_RCMCONNECTIONMETHOD_OPERATOR_ENTRY );
+
+    TBool result = !( operator==( aConnMethod ) );
+
+    OstTraceFunctionExit0( DUP2_RCMCONNECTIONMETHOD_OPERATOR_EXIT );
+    return result;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::GetIconL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* RCmConnectionMethod::GetIconL() const
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_GETICONL_ENTRY );
+
+    User::Leave( KErrNotSupported );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_GETICONL_EXIT );
+    return NULL;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::SetIconL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmConnectionMethod::SetIconL( const TDesC& /*aIcon*/ )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_SETICONL_ENTRY );
+
+    User::Leave( KErrNotSupported );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_SETICONL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethod::RefreshL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmConnectionMethod::RefreshL()
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHOD_REFRESHL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmConnectionMethodWrapper->Refresh();
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHOD_REFRESHL_EXIT );
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/src/cmconnectionmethodapi.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,405 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Client side IPC handling for Connection Method Manager server.
+*
+*/
+
+
+#include "cmmserverdefs.h"
+#include "cmconnectionmethodapi.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmconnectionmethodapiTraces.h"
+#endif
+
+
+RCmConnectionMethodApi::RCmConnectionMethodApi()
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_RCMCONNECTIONMETHODAPI_ENTRY );
+    iSessionConnected = EFalse;
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_RCMCONNECTIONMETHODAPI_EXIT );
+    }
+
+TBool RCmConnectionMethodApi::SessionConnected() const
+    {
+    return iSessionConnected;
+    }
+
+void RCmConnectionMethodApi::ConnectAndGetConnMethodWithIdL(
+        const RSessionBase& aSession,
+        const TUint32 aIapId,
+        TInt& aExistingHandle )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_CONNECTANDGETCONNMETHODWITHIDL_ENTRY );
+
+    if ( iSessionConnected )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    aExistingHandle = 0;
+    TPckg<TInt> pckg( aExistingHandle );
+    TIpcArgs args( aIapId, &pckg );
+    TInt result = CreateSubSession( aSession, ECMGetConnMethodWithId, args );
+    if ( !aExistingHandle )
+        {
+        User::LeaveIfError( result );
+        iSessionConnected = ETrue;
+        }
+    else
+        {
+        if ( result != KErrAlreadyExists )
+            {
+            User::Leave( result );
+            }
+        }
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_CONNECTANDGETCONNMETHODWITHIDL_EXIT );
+    }
+
+void RCmConnectionMethodApi::ConnectAndGetConnMethodFromDestWithIndexL(
+        const RSessionBase& aSession,
+        const TInt aDestHandle,
+        const TInt aIndex,
+        TInt& aExistingHandle )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_CONNECTANDGETCONNMETHODFROMDESTWITHINDEXL_ENTRY );
+
+    if ( iSessionConnected )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    aExistingHandle = 0;
+    TPckg<TInt> pckg( aExistingHandle );
+    TIpcArgs args( aDestHandle, aIndex, &pckg );
+    TInt result = CreateSubSession( aSession, ECMGetConnMethodFromDestWithIndex, args );
+    if ( !aExistingHandle )
+        {
+        User::LeaveIfError( result );
+        iSessionConnected = ETrue;
+        }
+    else
+        {
+        if ( result != KErrAlreadyExists )
+            {
+            User::Leave( result );
+            }
+        }
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_CONNECTANDGETCONNMETHODFROMDESTWITHINDEXL_EXIT );
+    }
+
+void RCmConnectionMethodApi::ConnectAndGetConnMethodFromDestWithIdL(
+        const RSessionBase& aSession,
+        const TInt aDestHandle,
+        const TInt aIapId,
+        TInt& aExistingHandle )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_CONNECTANDGETCONNMETHODFROMDESTWITHIDL_ENTRY );
+
+    if ( iSessionConnected )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    aExistingHandle = 0;
+    TPckg<TInt> pckg( aExistingHandle );
+    TIpcArgs args( aDestHandle, aIapId, &pckg );
+    TInt result = CreateSubSession( aSession, ECMGetConnMethodFromDestWithId, args );
+    if ( !aExistingHandle )
+        {
+        User::LeaveIfError( result );
+        iSessionConnected = ETrue;
+        }
+    else
+        {
+        if ( result != KErrAlreadyExists )
+            {
+            User::Leave( result );
+            }
+        }
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_CONNECTANDGETCONNMETHODFROMDESTWITHIDL_EXIT );
+    }
+
+void RCmConnectionMethodApi::ConnectAndCreateConnMethodL(
+        const RSessionBase& aSession,
+        const TUint32 aBearerType )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODL_ENTRY );
+
+    if ( iSessionConnected )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    TIpcArgs args( aBearerType );
+    User::LeaveIfError( CreateSubSession( aSession, ECMCreateConnMethod, args ) );
+    iSessionConnected = ETrue;
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODL_EXIT );
+    }
+
+void RCmConnectionMethodApi::ConnectAndCreateConnMethodWithIdL(
+        const RSessionBase& aSession,
+        const TUint32 aBearerType,
+        const TUint32 aIapId )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODWITHIDL_ENTRY );
+
+    if ( iSessionConnected )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    TIpcArgs args( aBearerType, aIapId );
+    User::LeaveIfError( CreateSubSession( aSession, ECMCreateConnMethodWithId, args ) );
+    iSessionConnected = ETrue;
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODWITHIDL_EXIT );
+    }
+
+TInt RCmConnectionMethodApi::ConnectAndCreateConnMethodCopy(
+        const RSessionBase& aSession,
+        const TInt aConnMethodHandle )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODCOPY_ENTRY );
+
+    TInt err( KErrNone );
+    if ( iSessionConnected )
+        {
+        err = KErrAlreadyExists;
+        }
+    else
+        {
+        TIpcArgs args( aConnMethodHandle );
+        err = CreateSubSession( aSession, ECMCreateCopyOfExisting, args );
+        if ( !err )
+            {
+            iSessionConnected = ETrue;
+            }
+        }
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODCOPY_EXIT );
+    return err;
+    }
+
+void RCmConnectionMethodApi::ConnectAndCreateConnMethodToDestL(
+        const RSessionBase& aSession,
+        const TInt aDestHandle,
+        const TUint32 aBearerType )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODFROMDESTL_ENTRY );
+
+    if ( iSessionConnected )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    TIpcArgs args( aDestHandle, aBearerType );
+    User::LeaveIfError( CreateSubSession( aSession, ECMCreateConnMethodToDest, args ) );
+    iSessionConnected = ETrue;
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODFROMDESTL_EXIT );
+    }
+
+void RCmConnectionMethodApi::ConnectAndCreateConnMethodToDestWithIdL(
+        const RSessionBase& aSession,
+        const TInt aDestHandle,
+        const TUint32 aBearerType,
+        const TUint32 aIapId )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODFROMDESTWITHIDL_ENTRY );
+
+    if ( iSessionConnected )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    TIpcArgs args( aDestHandle, aBearerType, aIapId );
+    User::LeaveIfError( CreateSubSession( aSession, ECMCreateConnMethodToDestWithId, args ) );
+    iSessionConnected = ETrue;
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODFROMDESTWITHIDL_EXIT );
+    }
+
+void RCmConnectionMethodApi::Close()
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_CLOSE_ENTRY );
+
+    if ( iSessionConnected )
+        {
+        CloseSubSession( ECMCloseConnMethod );
+        iSessionConnected = EFalse;
+        }
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_CLOSE_EXIT );
+    }
+
+TInt RCmConnectionMethodApi::GetIntAttribute(
+        const TUint32 aAttribute,
+        TUint32& aValue )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_GETINTATTRIBUTE_ENTRY );
+
+    TPckg<TUint32> pckg( aValue );
+    TIpcArgs args( aAttribute, &pckg );
+    TInt err = SendReceive( ECMGetIntAttribute, args );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_GETINTATTRIBUTE_EXIT );
+    return err;
+    }
+
+TInt RCmConnectionMethodApi::GetBoolAttribute(
+        const TUint32 aAttribute,
+        TBool& aValue )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_GETBOOLATTRIBUTE_ENTRY );
+
+    TPckg<TBool> pckg( aValue );
+    TIpcArgs args( aAttribute, &pckg );
+    TInt err = SendReceive( ECMGetBoolAttribute, args );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_GETBOOLATTRIBUTE_EXIT );
+    return err;
+    }
+
+TInt RCmConnectionMethodApi::GetStringAttribute(
+        const TUint32 aAttribute,
+        HBufC* aBuffer )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_GETSTRINGATTRIBUTE_ENTRY );
+
+    TPtr descriptor( aBuffer->Des() );
+    TIpcArgs args( aAttribute, &descriptor );
+    TInt err = SendReceive( ECMGetStringAttribute, args );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_GETSTRINGATTRIBUTE_EXIT );
+    return err;
+    }
+
+TInt RCmConnectionMethodApi::GetString8Attribute(
+        const TUint32 aAttribute,
+        HBufC8* aBuffer8 )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_GETSTRING8ATTRIBUTE_ENTRY );
+
+    TPtr8 descriptor( aBuffer8->Des() );
+    TIpcArgs args( aAttribute, &descriptor );
+    TInt err = SendReceive( ECMGetString8Attribute, args );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_GETSTRING8ATTRIBUTE_EXIT );
+    return err;
+    }
+
+TInt RCmConnectionMethodApi::SetIntAttribute(
+        const TUint32 aAttribute,
+        const TUint32 aValue )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_SETINTATTRIBUTE_ENTRY );
+
+    TIpcArgs args( aAttribute, aValue );
+    TInt err = SendReceive( ECMSetIntAttribute, args );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_SETINTATTRIBUTE_EXIT );
+    return err;
+    }
+
+TInt RCmConnectionMethodApi::SetBoolAttribute(
+        const TUint32 aAttribute,
+        const TBool aValue )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_SETBOOLATTRIBUTE_ENTRY );
+
+    TIpcArgs args( aAttribute, aValue );
+    TInt err = SendReceive( ECMSetBoolAttribute, args );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_SETBOOLATTRIBUTE_EXIT );
+    return err;
+    }
+
+TInt RCmConnectionMethodApi::SetStringAttribute(
+        const TUint32 aAttribute,
+        const TDesC16& aValue )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_SETSTRINGATTRIBUTE_ENTRY );
+
+    TIpcArgs args( aAttribute, &aValue );
+    TInt err = SendReceive( ECMSetStringAttribute, args );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_SETSTRINGATTRIBUTE_EXIT );
+    return err;
+    }
+
+TInt RCmConnectionMethodApi::SetString8Attribute(
+        const TUint32 aAttribute,
+        const TDesC8& aValue )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_SETSTRING8ATTRIBUTE_ENTRY );
+
+    TIpcArgs args( aAttribute, &aValue );
+    TInt err = SendReceive( ECMSetString8Attribute, args );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_SETSTRING8ATTRIBUTE_EXIT );
+    return err;
+    }
+
+TInt RCmConnectionMethodApi::Update()
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_UPDATE_ENTRY );
+
+    TInt err = SendReceive( ECMUpdate );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_UPDATE_EXIT );
+    return err;
+    }
+
+TInt RCmConnectionMethodApi::Refresh()
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_REFRESH_ENTRY );
+
+    TInt err = SendReceive( ECMRefresh );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_REFRESH_EXIT );
+    return err;
+    }
+
+TInt RCmConnectionMethodApi::Delete( TBool& aResult )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_DELETE_ENTRY );
+
+    TPckg<TBool> pckg( aResult );
+    TIpcArgs args( &pckg );
+    TInt err = SendReceive( ECMDelete, args );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_DELETE_EXIT );
+    return err;
+    }
+
+TInt RCmConnectionMethodApi::IsEqual( const TInt aHandle, TBool& aResult )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODAPI_ISEQUAL_ENTRY );
+
+    TPckg<TBool> pckg( aResult );
+    TIpcArgs args( aHandle, &pckg );
+    TInt err = SendReceive( ECMIsEqual, args );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODAPI_ISEQUAL_EXIT );
+    return err;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/src/cmconnectionmethodext.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,488 @@
+/*
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Implementation of RCmConnectionMethodExt.
+*
+*/
+
+
+#include <cmconnectionmethodext.h>
+#include <cmdestinationext.h>
+
+#include "cmmserverdefs.h"
+#include "cmmanagerapi.h"
+#include "cmdestinationwrapper.h"
+#include "cmconnectionmethodwrapper.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmconnectionmethodextTraces.h"
+#endif
+
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethodExt::RCmConnectionMethodExt()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethodExt::RCmConnectionMethodExt(
+        const RCmConnectionMethodExt& aConnMethod )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODEXT_RCMCONNECTIONMETHODEXT_ENTRY );
+
+    this->iCmConnectionMethodWrapper = aConnMethod.iCmConnectionMethodWrapper;
+    if ( iCmConnectionMethodWrapper )
+        {
+        iCmConnectionMethodWrapper->IncreaseReferenceCounter();
+        }
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODEXT_RCMCONNECTIONMETHODEXT_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethodExt::Close()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmConnectionMethodExt::Close()
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODEXT_CLOSE_ENTRY );
+
+    if ( iCmConnectionMethodWrapper )
+        {
+        if ( iCmConnectionMethodWrapper->DecreaseReferenceCounter() <= 0 )
+            {
+            delete iCmConnectionMethodWrapper;
+            }
+        iCmConnectionMethodWrapper = NULL;
+        }
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODEXT_CLOSE_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethodExt::~RCmConnectionMethodExt()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethodExt::~RCmConnectionMethodExt()
+    {
+    OstTraceFunctionEntry0( DUP2_RCMCONNECTIONMETHODEXT_RCMCONNECTIONMETHODEXT_ENTRY );
+    Close();
+    OstTraceFunctionExit0( DUP2_RCMCONNECTIONMETHODEXT_RCMCONNECTIONMETHODEXT_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethodExt::CreateCopyL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethodExt RCmConnectionMethodExt::CreateCopyL()
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODEXT_CREATECOPYL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt connMethodHandle = iCmConnectionMethodWrapper->GetHandle();
+    CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+
+    TInt err = cmWrapper->CreateConnMethodCopy(
+            iCmConnectionMethodWrapper->GetMainSession(),
+            connMethodHandle );
+    User::LeaveIfError( err );
+    CleanupStack::Pop( cmWrapper );
+
+    RCmConnectionMethodExt cm;
+    cm.iCmConnectionMethodWrapper = cmWrapper;
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODEXT_CREATECOPYL_EXIT );
+    return cm;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethodExt::GetIntAttributeL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmConnectionMethodExt::GetIntAttributeL(
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODEXT_GETINTATTRIBUTEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TUint32 value( 0 );
+    TInt err = iCmConnectionMethodWrapper->GetIntAttribute( aAttribute, value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODEXT_GETINTATTRIBUTEL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethodExt::GetBoolAttributeL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmConnectionMethodExt::GetBoolAttributeL(
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODEXT_GETBOOLATTRIBUTEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TBool value( 0 );
+    TInt err = iCmConnectionMethodWrapper->GetBoolAttribute( aAttribute, value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODEXT_GETBOOLATTRIBUTEL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethodExt::GetStringAttributeL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* RCmConnectionMethodExt::GetStringAttributeL(
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODEXT_GETSTRINGATTRIBUTEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    HBufC* buffer = HBufC::NewLC( KCmmStringLengthMax );
+    TInt err = iCmConnectionMethodWrapper->GetStringAttribute( aAttribute, buffer );
+    User::LeaveIfError( err );
+
+    if ( buffer->Length() > 0 )
+        {
+        CleanupStack::Pop( buffer );
+        }
+    else
+        {
+        CleanupStack::PopAndDestroy( buffer );
+        buffer = NULL;
+        buffer = KNullDesC().AllocL();
+        }
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODEXT_GETSTRINGATTRIBUTEL_EXIT );
+    return buffer;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethodExt::GetString8AttributeL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* RCmConnectionMethodExt::GetString8AttributeL(
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODEXT_GETSTRING8ATTRIBUTEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    HBufC8* buffer8 = HBufC8::NewLC( KCmmStringLengthMax );
+    TInt err = iCmConnectionMethodWrapper->GetString8Attribute( aAttribute, buffer8 );
+    User::LeaveIfError( err );
+
+    if ( buffer8->Length() > 0 )
+        {
+        CleanupStack::Pop( buffer8 );
+        }
+    else
+        {
+        CleanupStack::PopAndDestroy( buffer8 );
+        buffer8 = NULL;
+        buffer8 = KNullDesC8().AllocL();
+        }
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODEXT_GETSTRING8ATTRIBUTEL_EXIT );
+    return buffer8;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethodExt::SetIntAttributeL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmConnectionMethodExt::SetIntAttributeL(
+        TUint32 aAttribute,
+        TUint32 aValue )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODEXT_SETINTATTRIBUTEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmConnectionMethodWrapper->SetIntAttribute( aAttribute, aValue );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODEXT_SETINTATTRIBUTEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethodExt::SetBoolAttributeL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmConnectionMethodExt::SetBoolAttributeL(
+        TUint32 aAttribute,
+        TBool aValue )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODEXT_SETBOOLATTRIBUTEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmConnectionMethodWrapper->SetBoolAttribute( aAttribute, aValue );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODEXT_SETBOOLATTRIBUTEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethodExt::SetStringAttributeL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmConnectionMethodExt::SetStringAttributeL(
+        TUint32 aAttribute,
+        const TDesC16& aValue )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODEXT_SETSTRINGATTRIBUTEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmConnectionMethodWrapper->SetStringAttribute( aAttribute, aValue );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODEXT_SETSTRINGATTRIBUTEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethodExt::SetString8AttributeL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmConnectionMethodExt::SetString8AttributeL(
+        TUint32 aAttribute,
+        const TDesC8& aValue )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODEXT_SETSTRING8ATTRIBUTEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmConnectionMethodWrapper->SetString8Attribute( aAttribute, aValue );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODEXT_SETSTRING8ATTRIBUTEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethodExt::UpdateL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmConnectionMethodExt::UpdateL()
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODEXT_UPDATEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmConnectionMethodWrapper->Update();
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODEXT_UPDATEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethodExt::DeleteL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmConnectionMethodExt::DeleteL()
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODEXT_DELETEL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TBool result( ETrue );
+    TInt err = iCmConnectionMethodWrapper->Delete( result );
+    User::LeaveIfError( err );
+
+    delete iCmConnectionMethodWrapper;
+    iCmConnectionMethodWrapper = NULL;
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODEXT_DELETEL_EXIT );
+    return result;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethodExt::DestinationL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestinationExt RCmConnectionMethodExt::DestinationL() const
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODEXT_DESTINATIONL_ENTRY );
+
+    if ( !iCmConnectionMethodWrapper || !iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    // If client already has a handle open to this destination, give a
+    // reference to it.
+    CCmDestinationWrapper* destWrap = CCmDestinationWrapper::NewLC();
+    TInt connMethodHandle = iCmConnectionMethodWrapper->GetHandle();
+    TInt existingHandle( 0 );
+    destWrap->GetConnMethodAsEmbeddedDestL(
+            iCmConnectionMethodWrapper->GetMainSession(),
+            connMethodHandle,
+            existingHandle );
+    if ( existingHandle )
+        {
+        CleanupStack::PopAndDestroy( destWrap );
+        destWrap = iCmConnectionMethodWrapper->GetMainSession()->GetDestinationWrapperL(
+                existingHandle );
+        destWrap->IncreaseReferenceCounter();
+        }
+    else
+        {
+        CleanupStack::Pop( destWrap );
+        }
+
+    RCmDestinationExt dest;
+    dest.iCmDestinationWrapper = destWrap;
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODEXT_DESTINATIONL_EXIT );
+    return dest;
+    }
+
+//--------------------------------------------------------------------------
+//  RCmConnectionMethodExt::RCmConnectionMethodExt()
+//--------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethodExt::RCmConnectionMethodExt() : iCmConnectionMethodWrapper( NULL )
+    {
+    OstTraceFunctionEntry0( DUP1_RCMCONNECTIONMETHODEXT_RCMCONNECTIONMETHODEXT_ENTRY );
+    OstTraceFunctionExit0( DUP1_RCMCONNECTIONMETHODEXT_RCMCONNECTIONMETHODEXT_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmConnectionMethodExt::operator=()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethodExt& RCmConnectionMethodExt::operator=(
+        const RCmConnectionMethodExt& aConnMethod )
+    {
+    OstTraceFunctionEntry0( RCMCONNECTIONMETHODEXT_OPERATOR_ENTRY );
+
+    if ( this != &aConnMethod )
+        {
+        Close();
+        this->iCmConnectionMethodWrapper = aConnMethod.iCmConnectionMethodWrapper;
+        if ( iCmConnectionMethodWrapper )
+            {
+            iCmConnectionMethodWrapper->IncreaseReferenceCounter();
+            }
+        }
+
+    OstTraceFunctionExit0( RCMCONNECTIONMETHODEXT_OPERATOR_EXIT );
+    return *this;
+    }
+
+//--------------------------------------------------------------------------
+//  RCmConnectionMethodExt::operator==()
+//--------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmConnectionMethodExt::operator==( RCmConnectionMethodExt& aConnMethod ) const
+    {
+    OstTraceFunctionEntry0( DUP1_RCMCONNECTIONMETHODEXT_OPERATOR_ENTRY );
+
+    TBool result( EFalse );
+    if ( !aConnMethod.iCmConnectionMethodWrapper )
+        {
+        if ( !iCmConnectionMethodWrapper )
+            {
+            result = ETrue; // Both empty
+            }
+        else
+            {
+            result = EFalse;
+            }
+        }
+    else if ( !iCmConnectionMethodWrapper )
+        {
+        result = EFalse;
+        }
+    else
+        {
+        // Both connection method objects have wrappers.
+
+        if ( !iCmConnectionMethodWrapper->SessionConnected() ||
+                !aConnMethod.iCmConnectionMethodWrapper->SessionConnected() )
+            {
+            result = EFalse;
+            }
+        else
+            {
+            // Both connection method objects are connected to server.
+
+            TInt handle = aConnMethod.iCmConnectionMethodWrapper->GetHandle();
+            TInt err = iCmConnectionMethodWrapper->IsEqual( handle, result );
+
+            if ( err )
+                {
+                result = EFalse;
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( DUP1_RCMCONNECTIONMETHODEXT_OPERATOR_EXIT );
+    return result;
+    }
+
+//--------------------------------------------------------------------------
+//
+//--------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmConnectionMethodExt::operator!=( RCmConnectionMethodExt& aConnMethod ) const
+    {
+    OstTraceFunctionEntry0( DUP2_RCMCONNECTIONMETHODEXT_OPERATOR_ENTRY );
+
+    TBool result = !( operator==( aConnMethod ) );
+
+    OstTraceFunctionExit0( DUP2_RCMCONNECTIONMETHODEXT_OPERATOR_EXIT );
+    return result;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/src/cmconnectionmethodwrapper.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,448 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Collects API calls from RCmConnectionMethod- and
+* RCmConnectionMethodExt-classes.
+*
+*/
+
+
+#include "cmconnectionmethodwrapper.h"
+#include "cmmanagerapi.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmconnectionmethodwrapperTraces.h"
+#endif
+
+
+CCmConnectionMethodWrapper* CCmConnectionMethodWrapper::NewL()
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_NEWL_ENTRY );
+
+    CCmConnectionMethodWrapper* self = CCmConnectionMethodWrapper::NewLC();
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_NEWL_EXIT );
+    return self;
+    }
+
+CCmConnectionMethodWrapper* CCmConnectionMethodWrapper::NewLC()
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_NEWLC_ENTRY );
+
+    CCmConnectionMethodWrapper* self = new (ELeave) CCmConnectionMethodWrapper;
+    CleanupStack::PushL( self );
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_NEWLC_EXIT );
+    return self;
+    }
+
+CCmConnectionMethodWrapper::~CCmConnectionMethodWrapper()
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_CCMCONNECTIONMETHODWRAPPER_ENTRY );
+
+    iCmConnectionMethodApi.Close();
+
+    if ( iCmManagerApi )
+        {
+        iCmManagerApi->RemoveConnMethodWrapper( this );
+        iCmManagerApi = NULL;
+        }
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_CCMCONNECTIONMETHODWRAPPER_EXIT );
+    }
+
+CCmConnectionMethodWrapper::CCmConnectionMethodWrapper()
+    {
+    OstTraceFunctionEntry0( DUP1_CCMCONNECTIONMETHODWRAPPER_CCMCONNECTIONMETHODWRAPPER_ENTRY );
+
+    iCmManagerApi = NULL;
+    iReferenceCounter = 1;
+
+    OstTraceFunctionExit0( DUP1_CCMCONNECTIONMETHODWRAPPER_CCMCONNECTIONMETHODWRAPPER_EXIT );
+    }
+
+void CCmConnectionMethodWrapper::GetConnMethodWithIdL(
+        RCmManagerApi* aCmManagerApi,
+        const TUint32 aIapId,
+        TInt& aExistingHandle )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODWITHIDL_ENTRY );
+
+    if ( iCmManagerApi || iCmConnectionMethodApi.SessionConnected() )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    iCmManagerApi = aCmManagerApi;
+    iCmConnectionMethodApi.ConnectAndGetConnMethodWithIdL( *aCmManagerApi, aIapId, aExistingHandle );
+    if ( !aExistingHandle )
+        {
+        iCmManagerApi->StoreConnMethodWrapper( this );
+        }
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODWITHIDL_EXIT );
+    }
+
+void CCmConnectionMethodWrapper::GetConnMethodFromDestWithIndexL(
+        RCmManagerApi* aCmManagerApi,
+        const TInt aDestHandle,
+        const TInt aIndex,
+        TInt& aExistingHandle )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODFROMDESTWITHINDEXL_ENTRY );
+
+    if ( iCmManagerApi || iCmConnectionMethodApi.SessionConnected() )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    iCmManagerApi = aCmManagerApi;
+    iCmConnectionMethodApi.ConnectAndGetConnMethodFromDestWithIndexL(
+            *aCmManagerApi,
+            aDestHandle,
+            aIndex,
+            aExistingHandle );
+    if ( !aExistingHandle )
+        {
+        iCmManagerApi->StoreConnMethodWrapper( this );
+        }
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODFROMDESTWITHINDEXL_EXIT );
+    }
+
+void CCmConnectionMethodWrapper::GetConnMethodFromDestWithIdL(
+        RCmManagerApi* aCmManagerApi,
+        const TInt aDestHandle,
+        const TInt aIapId,
+        TInt& aExistingHandle )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODFROMDESTWITHIDL_ENTRY );
+
+    if ( iCmManagerApi || iCmConnectionMethodApi.SessionConnected() )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    iCmManagerApi = aCmManagerApi;
+    iCmConnectionMethodApi.ConnectAndGetConnMethodFromDestWithIdL(
+            *aCmManagerApi,
+            aDestHandle,
+            aIapId,
+            aExistingHandle );
+    if ( !aExistingHandle )
+        {
+        iCmManagerApi->StoreConnMethodWrapper( this );
+        }
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODFROMDESTWITHIDL_EXIT );
+    }
+
+void CCmConnectionMethodWrapper::CreateConnMethodL(
+        RCmManagerApi* aCmManagerApi,
+        const TUint32 aBearerType )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODL_ENTRY );
+
+    if ( iCmManagerApi || iCmConnectionMethodApi.SessionConnected() )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    iCmManagerApi = aCmManagerApi;
+    iCmConnectionMethodApi.ConnectAndCreateConnMethodL(
+            *aCmManagerApi,
+            aBearerType );
+    iCmManagerApi->StoreConnMethodWrapper( this );
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODL_EXIT );
+    }
+
+void CCmConnectionMethodWrapper::CreateConnMethodWithIdL(
+        RCmManagerApi* aCmManagerApi,
+        const TUint32 aBearerType,
+        const TUint32 aIapId )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODWITHIDL_ENTRY );
+
+    if ( iCmManagerApi || iCmConnectionMethodApi.SessionConnected() )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    iCmManagerApi = aCmManagerApi;
+    iCmConnectionMethodApi.ConnectAndCreateConnMethodWithIdL(
+            *aCmManagerApi,
+            aBearerType,
+            aIapId );
+    iCmManagerApi->StoreConnMethodWrapper( this );
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODWITHIDL_EXIT );
+    }
+
+TInt CCmConnectionMethodWrapper::CreateConnMethodCopy(
+        RCmManagerApi* aCmManagerApi,
+        const TInt aConnMethodHandle )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODCOPY_ENTRY );
+
+    TInt err( KErrNone );
+
+    if ( iCmManagerApi || iCmConnectionMethodApi.SessionConnected() )
+        {
+        err = KErrAlreadyExists;
+        }
+    else
+        {
+        err = iCmConnectionMethodApi.ConnectAndCreateConnMethodCopy(
+                *aCmManagerApi,
+                aConnMethodHandle );
+        if ( !err )
+            {
+            iCmManagerApi = aCmManagerApi;
+            iCmManagerApi->StoreConnMethodWrapper( this );
+            }
+        }
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODCOPY_EXIT );
+    return err;
+    }
+
+void CCmConnectionMethodWrapper::CreateConnMethodToDestL(
+        RCmManagerApi* aCmManagerApi,
+        const TInt aDestHandle,
+        const TUint32 aBearerType )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODFROMDESTL_ENTRY );
+
+    if ( iCmManagerApi || iCmConnectionMethodApi.SessionConnected() )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    iCmManagerApi = aCmManagerApi;
+    iCmConnectionMethodApi.ConnectAndCreateConnMethodToDestL(
+            *aCmManagerApi,
+            aDestHandle,
+            aBearerType );
+    iCmManagerApi->StoreConnMethodWrapper( this );
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODFROMDESTL_EXIT );
+    }
+
+void CCmConnectionMethodWrapper::CreateConnMethodToDestWithIdL(
+        RCmManagerApi* aCmManagerApi,
+        const TInt aDestHandle,
+        const TUint32 aBearerType,
+        const TUint32 aIapId )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODFROMDESTWITHIDL_ENTRY );
+
+    if ( iCmManagerApi || iCmConnectionMethodApi.SessionConnected() )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    iCmManagerApi = aCmManagerApi;
+    iCmConnectionMethodApi.ConnectAndCreateConnMethodToDestWithIdL(
+            *aCmManagerApi,
+            aDestHandle,
+            aBearerType,
+            aIapId );
+    iCmManagerApi->StoreConnMethodWrapper( this );
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODFROMDESTWITHIDL_EXIT );
+    }
+
+TInt CCmConnectionMethodWrapper::GetIntAttribute(
+        const TUint32 aAttribute,
+        TUint32& aValue )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_GETINTATTRIBUTE_ENTRY );
+
+    TInt err = iCmConnectionMethodApi.GetIntAttribute( aAttribute, aValue );
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_GETINTATTRIBUTE_EXIT );
+    return err;
+    }
+
+TInt CCmConnectionMethodWrapper::GetBoolAttribute(
+        const TUint32 aAttribute,
+        TBool& aValue )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_GETBOOLATTRIBUTE_ENTRY );
+
+    TInt err = iCmConnectionMethodApi.GetBoolAttribute( aAttribute, aValue );
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_GETBOOLATTRIBUTE_EXIT );
+    return err;
+    }
+
+TInt CCmConnectionMethodWrapper::GetStringAttribute(
+        const TUint32 aAttribute,
+        HBufC* aBuffer )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_GETSTRINGATTRIBUTE_ENTRY );
+
+    TInt err = iCmConnectionMethodApi.GetStringAttribute( aAttribute, aBuffer );
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_GETSTRINGATTRIBUTE_EXIT );
+    return err;
+    }
+
+TInt CCmConnectionMethodWrapper::GetString8Attribute(
+        const TUint32 aAttribute,
+        HBufC8* aBuffer8 )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_GETSTRING8ATTRIBUTE_ENTRY );
+
+    TInt err = iCmConnectionMethodApi.GetString8Attribute( aAttribute, aBuffer8 );
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_GETSTRING8ATTRIBUTE_EXIT );
+    return err;
+    }
+
+TInt CCmConnectionMethodWrapper::SetIntAttribute(
+        const TUint32 aAttribute,
+        const TUint32 aValue )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_SETINTATTRIBUTE_ENTRY );
+
+    TInt err = iCmConnectionMethodApi.SetIntAttribute( aAttribute, aValue );
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_SETINTATTRIBUTE_EXIT );
+    return err;
+    }
+
+TInt CCmConnectionMethodWrapper::SetBoolAttribute(
+        const TUint32 aAttribute,
+        const TBool aValue )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_SETBOOLATTRIBUTE_ENTRY );
+
+    TInt err = iCmConnectionMethodApi.SetBoolAttribute( aAttribute, aValue );
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_SETBOOLATTRIBUTE_EXIT );
+    return err;
+    }
+
+TInt CCmConnectionMethodWrapper::SetStringAttribute(
+        const TUint32 aAttribute,
+        const TDesC16& aValue )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_SETSTRINGATTRIBUTE_ENTRY );
+
+    TInt err = iCmConnectionMethodApi.SetStringAttribute( aAttribute, aValue );
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_SETSTRINGATTRIBUTE_EXIT );
+    return err;
+    }
+
+TInt CCmConnectionMethodWrapper::SetString8Attribute(
+        const TUint32 aAttribute,
+        const TDesC8& aValue )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_SETSTRING8ATTRIBUTE_ENTRY );
+
+    TInt err = iCmConnectionMethodApi.SetString8Attribute( aAttribute, aValue );
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_SETSTRING8ATTRIBUTE_EXIT );
+    return err;
+    }
+
+TInt CCmConnectionMethodWrapper::Update()
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_UPDATE_ENTRY );
+
+    TInt result = iCmConnectionMethodApi.Update();
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_UPDATE_EXIT );
+    return result;
+    }
+
+TInt CCmConnectionMethodWrapper::Refresh()
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_REFRESH_ENTRY );
+
+    TInt result = iCmConnectionMethodApi.Refresh();
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_REFRESH_EXIT );
+    return result;
+    }
+
+TInt CCmConnectionMethodWrapper::Delete( TBool& aResult )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_DELETE_ENTRY );
+
+    TInt err = iCmConnectionMethodApi.Delete( aResult );
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_DELETE_EXIT );
+    return err;
+    }
+
+TInt CCmConnectionMethodWrapper::IsEqual( const TInt aHandle, TBool& aResult )
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_ISEQUAL_ENTRY );
+
+    TInt err = iCmConnectionMethodApi.IsEqual( aHandle, aResult );
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_ISEQUAL_EXIT );
+    return err;
+    }
+
+TBool CCmConnectionMethodWrapper::SessionConnected() const
+    {
+    return iCmConnectionMethodApi.SessionConnected();
+    }
+
+void CCmConnectionMethodWrapper::CloseSession()
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_CLOSESESSION_ENTRY );
+    iCmConnectionMethodApi.Close();
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_CLOSESESSION_EXIT );
+    }
+
+TInt CCmConnectionMethodWrapper::GetHandle() const
+    {
+    return iCmConnectionMethodApi.SubSessionHandle();
+    }
+
+RCmManagerApi* CCmConnectionMethodWrapper::GetMainSession() const
+    {
+    return iCmManagerApi;
+    }
+
+void CCmConnectionMethodWrapper::IncreaseReferenceCounter()
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_INCREASEREFERENCECOUNTER_ENTRY );
+    iReferenceCounter++;
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_INCREASEREFERENCECOUNTER_EXIT );
+    }
+
+TInt CCmConnectionMethodWrapper::DecreaseReferenceCounter()
+    {
+    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_DECREASEREFERENCECOUNTER_ENTRY );
+
+    iReferenceCounter--;
+    if ( iReferenceCounter < 0 )
+        {
+        iReferenceCounter = 0;
+        }
+
+    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_DECREASEREFERENCECOUNTER_EXIT );
+    return iReferenceCounter;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/src/cmdestination.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,837 @@
+/*
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Implementation of RCmDestination.
+*
+*/
+
+
+#include <cmdestination.h>
+#include <cmconnectionmethod.h>
+
+#include "cmmserverdefs.h"
+#include "cmmanagerapi.h"
+#include "cmdestinationwrapper.h"
+#include "cmconnectionmethodwrapper.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmdestinationTraces.h"
+#endif
+
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::Close()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestination::Close()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_CLOSE_ENTRY );
+
+    if ( iCmDestinationWrapper )
+        {
+        if ( iCmDestinationWrapper->DecreaseReferenceCounter() <= 0 )
+            {
+            delete iCmDestinationWrapper;
+            }
+        iCmDestinationWrapper = NULL;
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATION_CLOSE_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::~RCmDestination()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestination::~RCmDestination()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_RCMDESTINATION_ENTRY );
+    Close();
+    OstTraceFunctionExit0( RCMDESTINATION_RCMDESTINATION_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::RCmDestination()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestination::RCmDestination(
+        const RCmDestination& aDestination )
+    {
+    OstTraceFunctionEntry0( DUP1_RCMDESTINATION_RCMDESTINATION_ENTRY );
+
+    this->iCmDestinationWrapper = aDestination.iCmDestinationWrapper;
+    if ( iCmDestinationWrapper )
+        {
+        iCmDestinationWrapper->IncreaseReferenceCounter();
+        }
+
+    OstTraceFunctionExit0( DUP1_RCMDESTINATION_RCMDESTINATION_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::operator=()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestination& RCmDestination::operator=(
+        const RCmDestination& aDestination )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_OPERATOR_ENTRY );
+
+    if ( this != &aDestination )
+        {
+        Close();
+        this->iCmDestinationWrapper = aDestination.iCmDestinationWrapper;
+        if ( iCmDestinationWrapper )
+            {
+            iCmDestinationWrapper->IncreaseReferenceCounter();
+            }
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATION_OPERATOR_EXIT );
+    return *this;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::ConnectionMethodCount()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TInt RCmDestination::ConnectionMethodCount() const
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_CONNECTIONMETHODCOUNT_ENTRY );
+
+    __ASSERT_ALWAYS( iCmDestinationWrapper && iCmDestinationWrapper->SessionConnected(),
+            User::Panic( KCmmPanicCategoryApi, EDestNotConnectedToServer ) );
+
+    TInt value( 0 );
+    TInt err = iCmDestinationWrapper->ConnectionMethodCount( value );
+
+    if ( err )
+        {
+        value = 0;
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATION_CONNECTIONMETHODCOUNT_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::ConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethod RCmDestination::ConnectionMethodL(
+        TInt aIndex ) const
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_CONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+    TInt destHandle = iCmDestinationWrapper->GetHandle();
+    TInt existingHandle( 0 );
+    cmWrapper->GetConnMethodFromDestWithIndexL(
+            iCmDestinationWrapper->GetMainSession(),
+            destHandle,
+            aIndex,
+            existingHandle );
+    if ( existingHandle )
+        {
+        CleanupStack::PopAndDestroy( cmWrapper );
+        cmWrapper = iCmDestinationWrapper->GetMainSession()->GetConnMethodWrapperL( existingHandle );
+        cmWrapper->IncreaseReferenceCounter();
+        }
+    else
+        {
+        CleanupStack::Pop( cmWrapper );
+        }
+
+    RCmConnectionMethod cm;
+    cm.iCmConnectionMethodWrapper = cmWrapper;
+
+    OstTraceFunctionExit0( RCMDESTINATION_CONNECTIONMETHODL_EXIT );
+    return cm;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::ConnectionMethodByIDL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethod RCmDestination::ConnectionMethodByIDL(
+        TInt aConnMethodId ) const
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_CONNECTIONMETHODBYIDL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+    TInt destHandle = iCmDestinationWrapper->GetHandle();
+    TInt existingHandle( 0 );
+    cmWrapper->GetConnMethodFromDestWithIdL(
+            iCmDestinationWrapper->GetMainSession(),
+            destHandle,
+            aConnMethodId,
+            existingHandle );
+    if ( existingHandle )
+        {
+        CleanupStack::PopAndDestroy( cmWrapper );
+        cmWrapper = iCmDestinationWrapper->GetMainSession()->GetConnMethodWrapperL(
+                existingHandle );
+        cmWrapper->IncreaseReferenceCounter();
+        }
+    else
+        {
+        CleanupStack::Pop( cmWrapper );
+        }
+
+    RCmConnectionMethod cm;
+    cm.iCmConnectionMethodWrapper = cmWrapper;
+
+    OstTraceFunctionExit0( RCMDESTINATION_CONNECTIONMETHODBYIDL_EXIT );
+    return cm;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::PriorityL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint RCmDestination::PriorityL(
+        const RCmConnectionMethod& aConnectionMethod ) const
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_PRIORITYL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+    if ( !aConnectionMethod.iCmConnectionMethodWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TUint priority( 0 );
+    TInt handle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    TInt err = iCmDestinationWrapper->Priority( handle, priority );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATION_PRIORITYL_EXIT );
+    return priority;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::NameLC()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* RCmDestination::NameLC() const
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_NAMELC_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    HBufC* buffer = HBufC::NewLC( KCmmStringLengthMax );
+    TInt err = iCmDestinationWrapper->GetName( buffer );
+    User::LeaveIfError( err );
+    // Leave buffer in cleanup stack.
+
+    OstTraceFunctionExit0( RCMDESTINATION_NAMELC_EXIT );
+    return buffer;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::Id()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmDestination::Id() const
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_ID_ENTRY );
+
+    __ASSERT_ALWAYS( iCmDestinationWrapper && iCmDestinationWrapper->SessionConnected(),
+            User::Panic( KCmmPanicCategoryApi, EDestNotConnectedToServer ) );
+
+    TUint32 id( 0 );
+    TInt err = iCmDestinationWrapper->GetId( id );
+
+    if ( err )
+        {
+        id = 0;
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATION_ID_EXIT );
+    return id;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::ElementId()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmDestination::ElementId() const
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_ELEMENTID_ENTRY );
+
+    __ASSERT_ALWAYS( iCmDestinationWrapper && iCmDestinationWrapper->SessionConnected(),
+            User::Panic( KCmmPanicCategoryApi, EDestNotConnectedToServer ) );
+
+    TUint32 elementId( 0 );
+    TInt err = iCmDestinationWrapper->GetElementId( elementId );
+
+    if ( err )
+        {
+        elementId = 0;
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATION_ELEMENTID_EXIT );
+    return elementId;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::MetadataL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmDestination::MetadataL(
+        CMManager::TSnapMetadataField aMetadataField ) const
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_METADATAL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TUint32 value( 0 );
+    TInt err = iCmDestinationWrapper->GetMetadata( aMetadataField, value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATION_METADATAL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::ProtectionLevel()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C CMManager::TProtectionLevel RCmDestination::ProtectionLevel() const
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_PROTECTIONLEVEL_ENTRY );
+
+    __ASSERT_ALWAYS( iCmDestinationWrapper && iCmDestinationWrapper->SessionConnected(),
+            User::Panic( KCmmPanicCategoryApi, EDestNotConnectedToServer ) );
+
+    TInt protectionLevel( CMManager::EProtLevel0 );
+    TInt err = iCmDestinationWrapper->GetProtectionLevel( protectionLevel );
+
+    if ( err )
+        {
+        protectionLevel = CMManager::EProtLevel0;
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATION_PROTECTIONLEVEL_EXIT );
+    return ( CMManager::TProtectionLevel )protectionLevel;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::IsHidden()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmDestination::IsHidden() const
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_ISHIDDEN_ENTRY );
+
+    __ASSERT_ALWAYS( iCmDestinationWrapper && iCmDestinationWrapper->SessionConnected(),
+            User::Panic( KCmmPanicCategoryApi, EDestNotConnectedToServer ) );
+
+    TBool value( EFalse );
+    TInt err = iCmDestinationWrapper->IsHidden( value );
+
+    if ( err )
+        {
+        value = EFalse;
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATION_ISHIDDEN_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::CreateConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethod RCmDestination::CreateConnectionMethodL(
+        TUint32 aBearerType )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_CREATECONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+    TInt destHandle = iCmDestinationWrapper->GetHandle();
+    cmWrapper->CreateConnMethodToDestL(
+            iCmDestinationWrapper->GetMainSession(),
+            destHandle,
+            aBearerType );
+    CleanupStack::Pop( cmWrapper );
+
+    RCmConnectionMethod cm;
+    cm.iCmConnectionMethodWrapper = cmWrapper;
+
+    OstTraceFunctionExit0( RCMDESTINATION_CREATECONNECTIONMETHODL_EXIT );
+    return cm;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::CreateConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethod RCmDestination::CreateConnectionMethodL(
+        TUint32 aBearerType,
+        TUint32 aConnMethodId )
+    {
+    OstTraceFunctionEntry0( DUP1_RCMDESTINATION_CREATECONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+    TInt destHandle = iCmDestinationWrapper->GetHandle();
+    cmWrapper->CreateConnMethodToDestWithIdL(
+            iCmDestinationWrapper->GetMainSession(),
+            destHandle,
+            aBearerType,
+            aConnMethodId );
+    CleanupStack::Pop( cmWrapper );
+
+    RCmConnectionMethod cm;
+    cm.iCmConnectionMethodWrapper = cmWrapper;
+
+    OstTraceFunctionExit0( DUP1_RCMDESTINATION_CREATECONNECTIONMETHODL_EXIT );
+    return cm;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::AddConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TInt RCmDestination::AddConnectionMethodL(
+        RCmConnectionMethod aConnectionMethod )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_ADDCONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+    if ( !aConnectionMethod.iCmConnectionMethodWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt index( 0 );
+    TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    TInt err = iCmDestinationWrapper->AddConnectionMethod( connMethodHandle, index );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATION_ADDCONNECTIONMETHODL_EXIT );
+    return index;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::AddEmbeddedDestinationL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TInt RCmDestination::AddEmbeddedDestinationL(
+        const RCmDestination& aDestination )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_ADDEMBEDDEDDESTINATIONL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+    if ( iCmDestinationWrapper == aDestination.iCmDestinationWrapper )
+        {
+        User::Leave( KErrArgument );
+        }
+    if ( !aDestination.iCmDestinationWrapper ||
+            !aDestination.iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt index( 0 );
+    TInt destinationHandle = aDestination.iCmDestinationWrapper->GetHandle();
+    TInt err = iCmDestinationWrapper->AddEmbeddedDestination( destinationHandle, index );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATION_ADDEMBEDDEDDESTINATIONL_EXIT );
+    return index;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::DeleteConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestination::DeleteConnectionMethodL(
+        RCmConnectionMethod& aConnectionMethod )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_DELETECONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+    if ( !aConnectionMethod.iCmConnectionMethodWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    TInt err = iCmDestinationWrapper->DeleteConnectionMethod( connMethodHandle );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATION_DELETECONNECTIONMETHODL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::RemoveConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestination::RemoveConnectionMethodL(
+        RCmConnectionMethod aConnectionMethod )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_REMOVECONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+    if ( !aConnectionMethod.iCmConnectionMethodWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    TInt err = iCmDestinationWrapper->RemoveConnectionMethod( connMethodHandle );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATION_REMOVECONNECTIONMETHODL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::ModifyPriorityL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestination::ModifyPriorityL(
+        RCmConnectionMethod& aConnectionMethod,
+        TUint aIndex )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_MODIFYPRIORITYL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+    if ( !aConnectionMethod.iCmConnectionMethodWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    TInt err = iCmDestinationWrapper->ModifyPriority( connMethodHandle, aIndex );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATION_MODIFYPRIORITYL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::SetNameL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestination::SetNameL( const TDesC& aName )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_SETNAMEL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmDestinationWrapper->SetName( aName );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATION_SETNAMEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::SetMetadataL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestination::SetMetadataL(
+        CMManager::TSnapMetadataField aMetadataField,
+        TUint32 aValue )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_SETMETADATAL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmDestinationWrapper->SetMetadata( aMetadataField, aValue );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATION_SETMETADATAL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::SetProtectionL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestination::SetProtectionL( CMManager::TProtectionLevel aProtLevel )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_SETPROTECTIONL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmDestinationWrapper->SetProtection( aProtLevel );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATION_SETPROTECTIONL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::SetHiddenL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestination::SetHiddenL( TBool aHidden )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_SETHIDDENL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmDestinationWrapper->SetHidden( aHidden );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATION_SETHIDDENL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::UpdateL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestination::UpdateL()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_UPDATEL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmDestinationWrapper->Update();
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATION_UPDATEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::DeleteLD()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestination::DeleteLD()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_DELETELD_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmDestinationWrapper->Delete();
+    User::LeaveIfError( err );
+
+    // Instead of calling Close(), we need to force this handle closed even if
+    // copies have been made. So we delete the destination wrapper directly.
+    delete iCmDestinationWrapper;
+    iCmDestinationWrapper = NULL;
+
+    OstTraceFunctionExit0( RCMDESTINATION_DELETELD_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::IsConnectedL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmDestination::IsConnectedL() const
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_ISCONNECTEDL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TBool value( 0 );
+    TInt err = iCmDestinationWrapper->IsConnected( value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATION_ISCONNECTEDL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::RCmDestination()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestination::RCmDestination() : iCmDestinationWrapper( NULL )
+    {
+    OstTraceFunctionEntry0( DUP2_RCMDESTINATION_RCMDESTINATION_ENTRY );
+    OstTraceFunctionExit0( DUP2_RCMDESTINATION_RCMDESTINATION_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::operator==()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmDestination::operator==(
+        const RCmDestination& aDestination ) const
+    {
+    OstTraceFunctionEntry0( DUP1_RCMDESTINATION_OPERATOR_ENTRY );
+
+    TBool result( EFalse );
+    if ( !aDestination.iCmDestinationWrapper )
+        {
+        if ( !iCmDestinationWrapper )
+            {
+            result = ETrue; // Both empty.
+            }
+        else
+            {
+            result = EFalse;
+            }
+        }
+    else if ( !iCmDestinationWrapper )
+        {
+        result = EFalse;
+        }
+    else
+        {
+        // Both destination objects have wrappers.
+
+        if ( !iCmDestinationWrapper->SessionConnected() ||
+                !aDestination.iCmDestinationWrapper->SessionConnected() )
+            {
+            result = EFalse;
+            }
+        else
+            {
+            // Both destination objects are connected to server.
+
+            TInt handle = aDestination.iCmDestinationWrapper->GetHandle();
+            TInt err = iCmDestinationWrapper->IsEqual( handle, result );
+            if ( err )
+                {
+                result = EFalse;
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( DUP1_RCMDESTINATION_OPERATOR_EXIT );
+    return result;
+    }
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmDestination::operator!=(
+        const RCmDestination& aDestination ) const
+    {
+    OstTraceFunctionEntry0( DUP2_RCMDESTINATION_OPERATOR_ENTRY );
+
+    TBool result = !( operator==( aDestination ) );
+
+    OstTraceFunctionExit0( DUP2_RCMDESTINATION_OPERATOR_EXIT );
+    return result;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::GetIconL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* RCmDestination::GetIconL() const
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_GETICONL_ENTRY );
+
+    User::Leave( KErrNotSupported );
+
+    OstTraceFunctionExit0( RCMDESTINATION_GETICONL_EXIT );
+    return NULL;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::SetIconL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestination::SetIconL( const TDesC& /*aIcon*/ )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_SETICONL_ENTRY );
+
+    User::Leave( KErrNotSupported );
+
+    OstTraceFunctionExit0( RCMDESTINATION_SETICONL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestination::RefreshL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestination::RefreshL()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATION_REFRESHL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmDestinationWrapper->Refresh();
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATION_REFRESHL_EXIT );
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/src/cmdestinationapi.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,416 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Client side IPC handling for Connection Method Manager server.
+*
+*/
+
+
+#include "cmmserverdefs.h"
+#include "cmdestinationapi.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmdestinationapiTraces.h"
+#endif
+
+
+RCmDestinationApi::RCmDestinationApi()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_RCMDESTINATIONAPI_ENTRY );
+    iSessionConnected = EFalse;
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_RCMDESTINATIONAPI_EXIT );
+    }
+
+TBool RCmDestinationApi::SessionConnected()
+    {
+    return iSessionConnected;
+    }
+
+void RCmDestinationApi::ConnectAndGetDestWithIdL(
+        const RSessionBase& aSession,
+        const TUint32 aId,
+        TInt& aExistingHandle )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_CONNECTANDGETDESTWITHIDL_ENTRY );
+
+    if ( iSessionConnected )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    aExistingHandle = 0;
+    TPckg<TInt> pckg( aExistingHandle );
+    TIpcArgs args( aId, &pckg );
+    TInt result = CreateSubSession( aSession, EDestGetDestination, args );
+    if ( !aExistingHandle )
+        {
+        User::LeaveIfError( result );
+        iSessionConnected = ETrue;
+        }
+    else
+        {
+        if ( result != KErrAlreadyExists )
+            {
+            User::Leave( result );
+            }
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_CONNECTANDGETDESTWITHIDL_EXIT );
+    }
+
+void RCmDestinationApi::ConnectAndCreateDestWithNameL(
+        const RSessionBase& aSession,
+        const TDesC& aName )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_CONNECTANDCREATEDESTWITHNAMEL_ENTRY );
+
+    if ( iSessionConnected )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+    TIpcArgs args( &aName );
+    User::LeaveIfError( CreateSubSession( aSession, EDestCreateDestinationWithName, args ) );
+    iSessionConnected = ETrue;
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_CONNECTANDCREATEDESTWITHNAMEL_EXIT );
+    }
+
+void RCmDestinationApi::ConnectAndCreateDestWithNameAndIdL(
+        const RSessionBase& aSession,
+        const TDesC& aName,
+        const TUint32 aId )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_CONNECTANDCREATEDESTWITHNAMEANDIDL_ENTRY );
+
+    if ( iSessionConnected )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+    TIpcArgs args( &aName, aId );
+    User::LeaveIfError( CreateSubSession( aSession, EDestCreateDestinationWithNameAndId, args ) );
+    iSessionConnected = ETrue;
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_CONNECTANDCREATEDESTWITHNAMEANDIDL_EXIT );
+    }
+
+void RCmDestinationApi::ConnectAndGetConnMethodAsEmbeddedDestL(
+        const RSessionBase& aSession,
+        const TInt aConnMethodHandle,
+        TInt& aExistingHandle )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_CONNECTANDGETCONNMETHODASEMBEDDEDDESTL_ENTRY );
+
+    if ( iSessionConnected )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    aExistingHandle = 0;
+    TPckg<TInt> pckg( aExistingHandle );
+    TIpcArgs args( aConnMethodHandle, &pckg );
+    TInt result = CreateSubSession( aSession, EDestGetEmbeddedDestination, args );
+    if ( !aExistingHandle )
+        {
+        User::LeaveIfError( result );
+        iSessionConnected = ETrue;
+        }
+    else
+        {
+        if ( result != KErrAlreadyExists )
+            {
+            User::Leave( result );
+            }
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_CONNECTANDGETCONNMETHODASEMBEDDEDDESTL_EXIT );
+    }
+
+void RCmDestinationApi::Close()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_CLOSE_ENTRY );
+
+    if ( iSessionConnected )
+        {
+        CloseSubSession( EDestCloseDestination );
+        iSessionConnected = EFalse;
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_CLOSE_EXIT );
+    }
+
+TInt RCmDestinationApi::ConnectionMethodCount( TInt& aCount )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_CONNECTIONMETHODCOUNT_ENTRY );
+
+    TPckg<TInt> pckg( aCount );
+    TIpcArgs args( &pckg );
+    TInt err = SendReceive( EDestGetConnMethodCount, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_CONNECTIONMETHODCOUNT_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::Priority( const TInt aHandle, TUint& aPriority )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_PRIORITY_ENTRY );
+
+    TPckg<TUint> pckg( aPriority );
+    TIpcArgs args( aHandle, &pckg );
+    TInt err = SendReceive( EDestGetConnMethodPriority, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_PRIORITY_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::GetName( HBufC* aBuffer )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_GETNAME_ENTRY );
+
+    TPtr descriptor( aBuffer->Des() );
+    TIpcArgs args( &descriptor );
+    TInt err = SendReceive( EDestGetName, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_GETNAME_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::GetId( TUint32& aId )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_GETID_ENTRY );
+
+    TPckg<TUint32> pckg( aId );
+    TIpcArgs args( &pckg );
+    TInt err = SendReceive( EDestGetId, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_GETID_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::GetElementId( TUint32& aElementId )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_GETELEMENTID_ENTRY );
+
+    TPckg<TUint32> pckg( aElementId );
+    TIpcArgs args( &pckg );
+    TInt err = SendReceive( EDestGetElementId, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_GETELEMENTID_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::GetMetadata(
+        const TUint32 aMetadataField,
+        TUint32& aValue )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_GETMETADATA_ENTRY );
+
+    TPckg<TUint32> pckg( aValue );
+    TIpcArgs args( aMetadataField, &pckg );
+    TInt err = SendReceive( EDestMetadata, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_GETMETADATA_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::GetProtectionLevel( TInt& aProtectionLevel )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_GETPROTECTIONLEVEL_ENTRY );
+
+    TPckg<TInt> pckg( aProtectionLevel );
+    TIpcArgs args( &pckg );
+    TInt err = SendReceive( EDestGetProtectionLevel, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_GETPROTECTIONLEVEL_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::AddConnectionMethod(
+        const TInt aConnMethodHandle,
+        TInt& aIndex )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_ADDCONNECTIONMETHOD_ENTRY );
+
+    TPckg<TInt> pckg( aIndex );
+    TIpcArgs args( aConnMethodHandle, &pckg );
+    TInt err = SendReceive( EDestAddConnMethod, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_ADDCONNECTIONMETHOD_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::AddEmbeddedDestination(
+        const TInt aDestHandle,
+        TInt& aIndex )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_ADDEMBEDDEDDESTINATION_ENTRY );
+
+    TPckg<TInt> pckg( aIndex );
+    TIpcArgs args( aDestHandle, &pckg );
+    TInt err = SendReceive( EDestAddEmbeddedDestination, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_ADDEMBEDDEDDESTINATION_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::DeleteConnectionMethod(
+        const TInt aConnMethodHandle )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_DELETECONNECTIONMETHOD_ENTRY );
+
+    TIpcArgs args( aConnMethodHandle );
+    TInt err = SendReceive( EDestDeleteConnMethod, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_DELETECONNECTIONMETHOD_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::RemoveConnectionMethod(
+        const TInt aConnMethodHandle )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_REMOVECONNECTIONMETHOD_ENTRY );
+
+    TIpcArgs args( aConnMethodHandle );
+    TInt err = SendReceive( EDestRemoveConnMethod, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_REMOVECONNECTIONMETHOD_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::ModifyPriority(
+        const TInt aConnMethodHandle,
+        const TUint aIndex )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_MODIFYPRIORITY_ENTRY );
+
+    TIpcArgs args( aConnMethodHandle, aIndex );
+    TInt err = SendReceive( EDestModifyPriority, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_MODIFYPRIORITY_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::SetName( const TDesC& aValue )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_SETNAME_ENTRY );
+
+    TIpcArgs args( &aValue );
+    TInt err = SendReceive( EDestSetName, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_SETNAME_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::SetMetadata(
+        const TUint32 aMetaField,
+        const TUint32 aValue )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_SETMETADATA_ENTRY );
+
+    TIpcArgs args( aMetaField, aValue );
+    TInt err = SendReceive( EDestSetMetadata, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_SETMETADATA_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::SetProtection( const TInt aValue )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_SETPROTECTION_ENTRY );
+
+    TIpcArgs args( aValue );
+    TInt err = SendReceive( EDestSetProtection, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_SETPROTECTION_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::SetHidden( const TBool aHidden )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_SETHIDDEN_ENTRY );
+
+    TIpcArgs args( aHidden );
+    TInt err = SendReceive( EDestSetHidden, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_SETHIDDEN_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::Update()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_UPDATE_ENTRY );
+
+    TInt err = SendReceive( EDestUpdate );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_UPDATE_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::Refresh()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_REFRESH_ENTRY );
+
+    TInt err = SendReceive( EDestRefresh );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_REFRESH_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::Delete()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_DELETE_ENTRY );
+
+    TInt err = SendReceive( EDestDelete );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_DELETE_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::IsConnected( TBool& aResult )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_ISCONNECTED_ENTRY );
+
+    TPckg<TBool> pckg( aResult );
+    TIpcArgs args( &pckg );
+    TInt err = SendReceive( EDestIsConnected, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_ISCONNECTED_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::IsHidden( TBool& aResult )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_ISHIDDEN_ENTRY );
+
+    TPckg<TBool> pckg( aResult );
+    TIpcArgs args( &pckg );
+    TInt err = SendReceive( EDestIsHidden, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_ISHIDDEN_EXIT );
+    return err;
+    }
+
+TInt RCmDestinationApi::IsEqual( const TInt aHandle, TBool& aResult )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONAPI_ISEQUAL_ENTRY );
+
+    TPckg<TBool> pckg( aResult );
+    TIpcArgs args( aHandle, &pckg );
+    TInt err = SendReceive( EDestIsEqual, args );
+
+    OstTraceFunctionExit0( RCMDESTINATIONAPI_ISEQUAL_EXIT );
+    return err;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/src/cmdestinationext.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,792 @@
+/*
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Implementation of RCmDestinationExt.
+*
+*/
+
+
+#include <cmdestinationext.h>
+#include <cmconnectionmethodext.h>
+
+#include "cmmserverdefs.h"
+#include "cmmanagerapi.h"
+#include "cmdestinationwrapper.h"
+#include "cmconnectionmethodwrapper.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmdestinationextTraces.h"
+#endif
+
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::Close()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestinationExt::Close()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_CLOSE_ENTRY );
+
+    if ( iCmDestinationWrapper )
+        {
+        if ( iCmDestinationWrapper->DecreaseReferenceCounter() <= 0 )
+            {
+            delete iCmDestinationWrapper;
+            }
+        iCmDestinationWrapper = NULL;
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_CLOSE_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::~RCmDestinationExt()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestinationExt::~RCmDestinationExt()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_RCMDESTINATIONEXT_ENTRY );
+    Close();
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_RCMDESTINATIONEXT_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::RCmDestinationExt()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestinationExt::RCmDestinationExt(
+        const RCmDestinationExt& aDestination )
+    {
+    OstTraceFunctionEntry0( DUP1_RCMDESTINATIONEXT_RCMDESTINATIONEXT_ENTRY );
+
+    this->iCmDestinationWrapper = aDestination.iCmDestinationWrapper;
+    if ( iCmDestinationWrapper )
+        {
+        iCmDestinationWrapper->IncreaseReferenceCounter();
+        }
+
+    OstTraceFunctionExit0( DUP1_RCMDESTINATIONEXT_RCMDESTINATIONEXT_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::operator=()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestinationExt& RCmDestinationExt::operator=(
+        const RCmDestinationExt& aDestination )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_OPERATOR_ENTRY );
+
+    if ( this != &aDestination )
+        {
+        Close();
+        this->iCmDestinationWrapper = aDestination.iCmDestinationWrapper;
+        if ( iCmDestinationWrapper )
+            {
+            iCmDestinationWrapper->IncreaseReferenceCounter();
+            }
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_OPERATOR_EXIT );
+    return *this;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::ConnectionMethodCount()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TInt RCmDestinationExt::ConnectionMethodCount()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_CONNECTIONMETHODCOUNT_ENTRY );
+
+    __ASSERT_ALWAYS( iCmDestinationWrapper && iCmDestinationWrapper->SessionConnected(),
+            User::Panic( KCmmPanicCategoryApi, EDestNotConnectedToServer ) );
+
+    TInt value( 0 );
+    TInt err = iCmDestinationWrapper->ConnectionMethodCount( value );
+
+    if ( err )
+        {
+        value = 0;
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_CONNECTIONMETHODCOUNT_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::ConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethodExt RCmDestinationExt::ConnectionMethodL(
+        TInt aIndex )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_CONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+    TInt destHandle = iCmDestinationWrapper->GetHandle();
+    TInt existingHandle( 0 );
+    cmWrapper->GetConnMethodFromDestWithIndexL(
+            iCmDestinationWrapper->GetMainSession(),
+            destHandle,
+            aIndex,
+            existingHandle );
+    if ( existingHandle )
+        {
+        CleanupStack::PopAndDestroy( cmWrapper );
+        cmWrapper = iCmDestinationWrapper->GetMainSession()->GetConnMethodWrapperL( existingHandle );
+        cmWrapper->IncreaseReferenceCounter();
+        }
+    else
+        {
+        CleanupStack::Pop( cmWrapper );
+        }
+
+    RCmConnectionMethodExt cm;
+    cm.iCmConnectionMethodWrapper = cmWrapper;
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_CONNECTIONMETHODL_EXIT );
+    return cm;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::ConnectionMethodByIDL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethodExt RCmDestinationExt::ConnectionMethodByIDL(
+        TInt aConnMethodId )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_CONNECTIONMETHODBYIDL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+    TInt destHandle = iCmDestinationWrapper->GetHandle();
+    TInt existingHandle( 0 );
+    cmWrapper->GetConnMethodFromDestWithIdL(
+            iCmDestinationWrapper->GetMainSession(),
+            destHandle,
+            aConnMethodId,
+            existingHandle );
+    if ( existingHandle )
+        {
+        CleanupStack::PopAndDestroy( cmWrapper );
+        cmWrapper = iCmDestinationWrapper->GetMainSession()->GetConnMethodWrapperL( existingHandle );
+        cmWrapper->IncreaseReferenceCounter();
+        }
+    else
+        {
+        CleanupStack::Pop( cmWrapper );
+        }
+
+    RCmConnectionMethodExt cm;
+    cm.iCmConnectionMethodWrapper = cmWrapper;
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_CONNECTIONMETHODBYIDL_EXIT );
+    return cm;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::PriorityL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint RCmDestinationExt::PriorityL(
+        const RCmConnectionMethodExt& aConnectionMethod )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_PRIORITYL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+    if ( !aConnectionMethod.iCmConnectionMethodWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TUint priority( 0 );
+    TInt handle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    TInt err = iCmDestinationWrapper->Priority( handle, priority );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_PRIORITYL_EXIT );
+    return priority;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::NameLC()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* RCmDestinationExt::NameLC()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_NAMELC_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    HBufC* buffer = HBufC::NewLC( KCmmStringLengthMax );
+    TInt err = iCmDestinationWrapper->GetName( buffer );
+    User::LeaveIfError( err );
+    // Leave buffer in cleanup stack.
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_NAMELC_EXIT );
+    return buffer;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::Id()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmDestinationExt::Id()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_ID_ENTRY );
+
+    __ASSERT_ALWAYS( iCmDestinationWrapper && iCmDestinationWrapper->SessionConnected(),
+            User::Panic( KCmmPanicCategoryApi, EDestNotConnectedToServer ) );
+
+    TUint32 id( 0 );
+    TInt err = iCmDestinationWrapper->GetId( id );
+
+    if ( err )
+        {
+        id = 0;
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_ID_EXIT );
+    return id;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::ElementId()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmDestinationExt::ElementId()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_ELEMENTID_ENTRY );
+
+    __ASSERT_ALWAYS( iCmDestinationWrapper && iCmDestinationWrapper->SessionConnected(),
+            User::Panic( KCmmPanicCategoryApi, EDestNotConnectedToServer ) );
+
+    TUint32 elementId( 0 );
+    TInt err = iCmDestinationWrapper->GetElementId( elementId );
+
+    if ( err )
+        {
+        elementId = 0;
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_ELEMENTID_EXIT );
+    return elementId;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::MetadataL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmDestinationExt::MetadataL(
+        CMManager::TSnapMetadataField aMetadataField ) const
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_METADATAL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TUint32 value( 0 );
+    TInt err = iCmDestinationWrapper->GetMetadata( aMetadataField, value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_METADATAL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::ProtectionLevel()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C CMManager::TProtectionLevel RCmDestinationExt::ProtectionLevel()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_PROTECTIONLEVEL_ENTRY );
+
+    __ASSERT_ALWAYS( iCmDestinationWrapper && iCmDestinationWrapper->SessionConnected(),
+            User::Panic( KCmmPanicCategoryApi, EDestNotConnectedToServer ) );
+
+    TInt protectionLevel( CMManager::EProtLevel0 );
+    TInt err = iCmDestinationWrapper->GetProtectionLevel( protectionLevel );
+
+    if ( err )
+        {
+        protectionLevel = CMManager::EProtLevel0;
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_PROTECTIONLEVEL_EXIT );
+    return ( CMManager::TProtectionLevel )protectionLevel;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::IsHidden()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmDestinationExt::IsHidden()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_ISHIDDEN_ENTRY );
+
+    __ASSERT_ALWAYS( iCmDestinationWrapper && iCmDestinationWrapper->SessionConnected(),
+            User::Panic( KCmmPanicCategoryApi, EDestNotConnectedToServer ) );
+
+    TBool value( EFalse );
+    TInt err = iCmDestinationWrapper->IsHidden( value );
+
+    if ( err )
+        {
+        value = EFalse;
+        }
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_ISHIDDEN_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::CreateConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethodExt RCmDestinationExt::CreateConnectionMethodL(
+        TUint32 aBearerType )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_CREATECONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+    TInt destHandle = iCmDestinationWrapper->GetHandle();
+    cmWrapper->CreateConnMethodToDestL(
+            iCmDestinationWrapper->GetMainSession(),
+            destHandle,
+            aBearerType );
+    CleanupStack::Pop( cmWrapper );
+
+    RCmConnectionMethodExt cm;
+    cm.iCmConnectionMethodWrapper = cmWrapper;
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_CREATECONNECTIONMETHODL_EXIT );
+    return cm;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::CreateConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethodExt RCmDestinationExt::CreateConnectionMethodL(
+        TUint32 aBearerType,
+        TUint32 aConnMethodId )
+    {
+    OstTraceFunctionEntry0( DUP1_RCMDESTINATIONEXT_CREATECONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+    TInt destHandle = iCmDestinationWrapper->GetHandle();
+    cmWrapper->CreateConnMethodToDestWithIdL(
+            iCmDestinationWrapper->GetMainSession(),
+            destHandle,
+            aBearerType,
+            aConnMethodId );
+    CleanupStack::Pop( cmWrapper );
+
+    RCmConnectionMethodExt cm;
+    cm.iCmConnectionMethodWrapper = cmWrapper;
+
+    OstTraceFunctionExit0( DUP1_RCMDESTINATIONEXT_CREATECONNECTIONMETHODL_EXIT );
+    return cm;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::AddConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TInt RCmDestinationExt::AddConnectionMethodL(
+        RCmConnectionMethodExt aConnectionMethod )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_ADDCONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+    if ( !aConnectionMethod.iCmConnectionMethodWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt index( 0 );
+    TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    TInt err = iCmDestinationWrapper->AddConnectionMethod( connMethodHandle, index );
+
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_ADDCONNECTIONMETHODL_EXIT );
+    return index;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::AddEmbeddedDestinationL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TInt RCmDestinationExt::AddEmbeddedDestinationL(
+        const RCmDestinationExt& aDestination )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_ADDEMBEDDEDDESTINATIONL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+    if ( iCmDestinationWrapper == aDestination.iCmDestinationWrapper )
+        {
+        User::Leave( KErrArgument );
+        }
+    if ( !aDestination.iCmDestinationWrapper ||
+            !aDestination.iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt index( 0 );
+    TInt destinationHandle = aDestination.iCmDestinationWrapper->GetHandle();
+    TInt err = iCmDestinationWrapper->AddEmbeddedDestination( destinationHandle, index );
+
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_ADDEMBEDDEDDESTINATIONL_EXIT );
+    return index;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::DeleteConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestinationExt::DeleteConnectionMethodL(
+        RCmConnectionMethodExt& aConnectionMethod )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_DELETECONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+    if ( !aConnectionMethod.iCmConnectionMethodWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    TInt err = iCmDestinationWrapper->DeleteConnectionMethod( connMethodHandle );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_DELETECONNECTIONMETHODL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::RemoveConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestinationExt::RemoveConnectionMethodL(
+        RCmConnectionMethodExt aConnectionMethod )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_REMOVECONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+    if ( !aConnectionMethod.iCmConnectionMethodWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    TInt err = iCmDestinationWrapper->RemoveConnectionMethod( connMethodHandle );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_REMOVECONNECTIONMETHODL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::ModifyPriorityL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestinationExt::ModifyPriorityL(
+        RCmConnectionMethodExt& aConnectionMethod,
+        TUint aIndex )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_MODIFYPRIORITYL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+    if ( !aConnectionMethod.iCmConnectionMethodWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    TInt err = iCmDestinationWrapper->ModifyPriority( connMethodHandle, aIndex );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_MODIFYPRIORITYL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::SetNameL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestinationExt::SetNameL( const TDesC& aName )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_SETNAMEL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmDestinationWrapper->SetName( aName );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_SETNAMEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::SetMetadataL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestinationExt::SetMetadataL(
+        CMManager::TSnapMetadataField aMetadataField,
+        TUint32 aValue )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_SETMETADATAL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmDestinationWrapper->SetMetadata( aMetadataField, aValue );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_SETMETADATAL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::SetProtectionL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestinationExt::SetProtectionL( CMManager::TProtectionLevel aProtLevel )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_SETPROTECTIONL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmDestinationWrapper->SetProtection( aProtLevel );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_SETPROTECTIONL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::SetHiddenL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestinationExt::SetHiddenL( TBool aHidden )
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_SETHIDDENL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmDestinationWrapper->SetHidden( aHidden );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_SETHIDDENL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::UpdateL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestinationExt::UpdateL()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_UPDATEL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmDestinationWrapper->Update();
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_UPDATEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::DeleteLD()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmDestinationExt::DeleteLD()
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_DELETELD_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmDestinationWrapper->Delete();
+    User::LeaveIfError( err );
+
+    // Instead of calling Close(), we need to force this handle closed even if
+    // copies have been made. So we delete the destination wrapper directly.
+    delete iCmDestinationWrapper;
+    iCmDestinationWrapper = NULL;
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_DELETELD_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::IsConnectedL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmDestinationExt::IsConnectedL() const
+    {
+    OstTraceFunctionEntry0( RCMDESTINATIONEXT_ISCONNECTEDL_ENTRY );
+
+    if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TBool value( 0 );
+    TInt err = iCmDestinationWrapper->IsConnected( value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMDESTINATIONEXT_ISCONNECTEDL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::RCmDestinationExt()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestinationExt::RCmDestinationExt() : iCmDestinationWrapper( NULL )
+    {
+    OstTraceFunctionEntry0( DUP2_RCMDESTINATIONEXT_RCMDESTINATIONEXT_ENTRY );
+    OstTraceFunctionExit0( DUP2_RCMDESTINATIONEXT_RCMDESTINATIONEXT_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmDestinationExt::operator==()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmDestinationExt::operator==(
+        const RCmDestinationExt& aDestination ) const
+    {
+    OstTraceFunctionEntry0( DUP1_RCMDESTINATIONEXT_OPERATOR_ENTRY );
+
+    TBool result( EFalse );
+    if ( !aDestination.iCmDestinationWrapper )
+        {
+        if ( !iCmDestinationWrapper )
+            {
+            result = ETrue; // Both empty.
+            }
+        else
+            {
+            result = EFalse;
+            }
+        }
+    else if ( !iCmDestinationWrapper )
+        {
+        result = EFalse;
+        }
+    else
+        {
+        // Both destination objects have wrappers.
+
+        if ( !iCmDestinationWrapper->SessionConnected() ||
+                !aDestination.iCmDestinationWrapper->SessionConnected() )
+            {
+            result = EFalse;
+            }
+        else
+            {
+            // Both destination objects are connected to server.
+
+            TInt handle = aDestination.iCmDestinationWrapper->GetHandle();
+            TInt err = iCmDestinationWrapper->IsEqual( handle, result );
+            if ( err )
+                {
+                result = EFalse;
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( DUP1_RCMDESTINATIONEXT_OPERATOR_EXIT );
+    return result;
+    }
+
+//-----------------------------------------------------------------------------
+//RCmDestinationExt::operator!=()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmDestinationExt::operator!=(
+        const RCmDestinationExt& aDestination ) const
+    {
+    OstTraceFunctionEntry0( DUP2_RCMDESTINATIONEXT_OPERATOR_ENTRY );
+
+    TBool result = !( operator==( aDestination ) );
+
+    OstTraceFunctionExit0( DUP2_RCMDESTINATIONEXT_OPERATOR_EXIT );
+    return result;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/src/cmdestinationwrapper.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,432 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Collects API calls from RCmDestination- and RCmDestinationExt-classes.
+*
+*/
+
+
+#include "cmdestinationwrapper.h"
+#include "cmmanagerapi.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmdestinationwrapperTraces.h"
+#endif
+
+
+CCmDestinationWrapper* CCmDestinationWrapper::NewL()
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_NEWL_ENTRY );
+
+    CCmDestinationWrapper* self = CCmDestinationWrapper::NewLC();
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_NEWL_EXIT );
+    return self;
+    }
+
+CCmDestinationWrapper* CCmDestinationWrapper::NewLC()
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_NEWLC_ENTRY );
+
+    CCmDestinationWrapper* self = new (ELeave) CCmDestinationWrapper;
+    CleanupStack::PushL( self );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_NEWLC_EXIT );
+    return self;
+    }
+
+CCmDestinationWrapper::~CCmDestinationWrapper()
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_CCMDESTINATIONWRAPPER_ENTRY );
+
+    iCmDestinationApi.Close();
+
+    if ( iCmManagerApi )
+        {
+        iCmManagerApi->RemoveDestinationWrapper( this );
+        iCmManagerApi = NULL;
+        }
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_CCMDESTINATIONWRAPPER_EXIT );
+    }
+
+CCmDestinationWrapper::CCmDestinationWrapper()
+    {
+    OstTraceFunctionEntry0( DUP1_CCMDESTINATIONWRAPPER_CCMDESTINATIONWRAPPER_ENTRY );
+
+    iCmManagerApi = NULL;
+    iReferenceCounter = 1;
+
+    OstTraceFunctionExit0( DUP1_CCMDESTINATIONWRAPPER_CCMDESTINATIONWRAPPER_EXIT );
+    }
+
+void CCmDestinationWrapper::GetDestWithIdL(
+        RCmManagerApi* aCmManagerApi,
+        const TUint32 aId,
+        TInt& aExistingHandle )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_GETDESTWITHIDL_ENTRY );
+
+    if ( iCmManagerApi || iCmDestinationApi.SessionConnected() )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    iCmManagerApi = aCmManagerApi;
+    iCmDestinationApi.ConnectAndGetDestWithIdL( *aCmManagerApi, aId, aExistingHandle );
+    if ( !aExistingHandle )
+        {
+        iCmManagerApi->StoreDestinationWrapper( this );
+        }
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_GETDESTWITHIDL_EXIT );
+    }
+
+void CCmDestinationWrapper::CreateDestByNameL(
+        RCmManagerApi* aCmManagerApi,
+        const TDesC& aName )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_CREATEDESTBYNAMEL_ENTRY );
+
+    if ( iCmManagerApi || iCmDestinationApi.SessionConnected() )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    iCmManagerApi = aCmManagerApi;
+    iCmDestinationApi.ConnectAndCreateDestWithNameL( *aCmManagerApi, aName );
+    iCmManagerApi->StoreDestinationWrapper( this );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_CREATEDESTBYNAMEL_EXIT );
+    }
+
+void CCmDestinationWrapper::CreateDestByNameAndIdL(
+        RCmManagerApi* aCmManagerApi,
+        const TDesC& aName,
+        const TUint32 aId )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_CREATEDESTBYNAMEANDIDL_ENTRY );
+
+    if ( iCmManagerApi || iCmDestinationApi.SessionConnected() )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    iCmManagerApi = aCmManagerApi;
+    iCmDestinationApi.ConnectAndCreateDestWithNameAndIdL( *aCmManagerApi, aName, aId );
+    iCmManagerApi->StoreDestinationWrapper( this );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_CREATEDESTBYNAMEANDIDL_EXIT );
+    }
+
+void CCmDestinationWrapper::GetConnMethodAsEmbeddedDestL(
+        RCmManagerApi* aCmManagerApi,
+        const TInt aConnMethodHandle,
+        TInt& aExistingHandle )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_GETCONNMETHODASEMBEDDEDDESTL_ENTRY );
+
+    if ( iCmManagerApi || iCmDestinationApi.SessionConnected() )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    iCmManagerApi = aCmManagerApi;
+    iCmDestinationApi.ConnectAndGetConnMethodAsEmbeddedDestL( *aCmManagerApi, aConnMethodHandle, aExistingHandle );
+    if ( !aExistingHandle )
+        {
+        iCmManagerApi->StoreDestinationWrapper( this );
+        }
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_GETCONNMETHODASEMBEDDEDDESTL_EXIT );
+    }
+
+TInt CCmDestinationWrapper::ConnectionMethodCount( TInt& aCount )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_CONNECTIONMETHODCOUNT_ENTRY );
+
+    TInt err = iCmDestinationApi.ConnectionMethodCount( aCount );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_CONNECTIONMETHODCOUNT_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::Priority( const TInt aHandle, TUint& aPriority )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_PRIORITY_ENTRY );
+
+    TInt err = iCmDestinationApi.Priority( aHandle, aPriority );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_PRIORITY_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::GetName( HBufC* aBuffer )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_GETNAME_ENTRY );
+
+    TInt err = iCmDestinationApi.GetName( aBuffer );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_GETNAME_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::GetId( TUint32& aId )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_GETID_ENTRY );
+
+    TInt err = iCmDestinationApi.GetId( aId );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_GETID_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::GetElementId( TUint32& aElementId )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_GETELEMENTID_ENTRY );
+
+    TInt err = iCmDestinationApi.GetElementId( aElementId );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_GETELEMENTID_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::GetMetadata(
+        const TUint32 aMetadataField,
+        TUint32& aValue )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_GETMETADATA_ENTRY );
+
+    TInt err = iCmDestinationApi.GetMetadata( aMetadataField, aValue );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_GETMETADATA_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::GetProtectionLevel( TInt& aProtectionLevel )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_GETPROTECTIONLEVEL_ENTRY );
+
+    TInt err = iCmDestinationApi.GetProtectionLevel( aProtectionLevel );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_GETPROTECTIONLEVEL_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::AddConnectionMethod(
+        const TInt aConnMethodHandle,
+        TInt& aIndex )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_ADDCONNECTIONMETHOD_ENTRY );
+
+    TInt err = iCmDestinationApi.AddConnectionMethod( aConnMethodHandle, aIndex );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_ADDCONNECTIONMETHOD_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::AddEmbeddedDestination(
+        const TInt aDestHandle,
+        TInt& aIndex )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_ADDEMBEDDEDDESTINATION_ENTRY );
+
+    TInt err = iCmDestinationApi.AddEmbeddedDestination( aDestHandle, aIndex );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_ADDEMBEDDEDDESTINATION_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::DeleteConnectionMethod(
+        const TInt aConnMethodHandle )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_DELETECONNECTIONMETHOD_ENTRY );
+
+    TInt err = iCmDestinationApi.DeleteConnectionMethod( aConnMethodHandle );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_DELETECONNECTIONMETHOD_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::RemoveConnectionMethod(
+        const TInt aConnMethodHandle )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_REMOVECONNECTIONMETHOD_ENTRY );
+
+    TInt err = iCmDestinationApi.RemoveConnectionMethod( aConnMethodHandle );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_REMOVECONNECTIONMETHOD_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::ModifyPriority(
+        const TInt aConnMethodHandle,
+        const TUint aIndex )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_MODIFYPRIORITY_ENTRY );
+
+    TInt err = iCmDestinationApi.ModifyPriority( aConnMethodHandle, aIndex );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_MODIFYPRIORITY_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::SetName( const TDesC& aValue )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_SETNAME_ENTRY );
+
+    TInt err = iCmDestinationApi.SetName( aValue );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_SETNAME_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::SetMetadata(
+        const TUint32 aMetaField,
+        const TUint32 aValue )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_SETMETADATA_ENTRY );
+
+    TInt err = iCmDestinationApi.SetMetadata( aMetaField, aValue );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_SETMETADATA_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::SetProtection( const TInt aValue )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_SETPROTECTION_ENTRY );
+
+    TInt err = iCmDestinationApi.SetProtection( aValue );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_SETPROTECTION_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::SetHidden( const TBool aHidden )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_SETHIDDEN_ENTRY );
+
+    TInt err = iCmDestinationApi.SetHidden( aHidden );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_SETHIDDEN_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::Update()
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_UPDATE_ENTRY );
+
+    TInt err = iCmDestinationApi.Update();
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_UPDATE_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::Refresh()
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_REFRESH_ENTRY );
+
+    TInt err = iCmDestinationApi.Refresh();
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_REFRESH_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::Delete()
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_DELETE_ENTRY );
+
+    TInt err = iCmDestinationApi.Delete();
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_DELETE_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::IsConnected( TBool& aResult )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_ISCONNECTED_ENTRY );
+
+    TInt err = iCmDestinationApi.IsConnected( aResult );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_ISCONNECTED_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::IsHidden( TBool& aResult )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_ISHIDDEN_ENTRY );
+
+    TInt err = iCmDestinationApi.IsHidden( aResult );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_ISHIDDEN_EXIT );
+    return err;
+    }
+
+TInt CCmDestinationWrapper::IsEqual( const TInt aHandle, TBool& aResult )
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_ISEQUAL_ENTRY );
+
+    TInt err = iCmDestinationApi.IsEqual( aHandle, aResult );
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_ISEQUAL_EXIT );
+    return err;
+    }
+
+TBool CCmDestinationWrapper::SessionConnected()
+    {
+    return iCmDestinationApi.SessionConnected();
+    }
+
+void CCmDestinationWrapper::CloseSession()
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_CLOSESESSION_ENTRY );
+    iCmDestinationApi.Close();
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_CLOSESESSION_EXIT );
+    }
+
+TInt CCmDestinationWrapper::GetHandle() const
+    {
+    return iCmDestinationApi.SubSessionHandle();
+    }
+
+RCmManagerApi* CCmDestinationWrapper::GetMainSession() const
+    {
+    return iCmManagerApi;
+    }
+
+void CCmDestinationWrapper::IncreaseReferenceCounter()
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_INCREASEREFERENCECOUNTER_ENTRY );
+    iReferenceCounter++;
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_INCREASEREFERENCECOUNTER_EXIT );
+    }
+
+TInt CCmDestinationWrapper::DecreaseReferenceCounter()
+    {
+    OstTraceFunctionEntry0( CCMDESTINATIONWRAPPER_DECREASEREFERENCECOUNTER_ENTRY );
+
+    iReferenceCounter--;
+    if ( iReferenceCounter < 0 )
+        {
+        iReferenceCounter = 0;
+        }
+
+    OstTraceFunctionExit0( CCMDESTINATIONWRAPPER_DECREASEREFERENCECOUNTER_EXIT );
+    return iReferenceCounter;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/src/cmmanager.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,918 @@
+/*
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Implementation of RCmManager.
+*
+*/
+
+
+#include <cmmanager.h>
+#include <cmconnectionmethod.h>
+#include <cmdestination.h>
+
+#include "cmmserverdefs.h"
+#include "cmmanagerapi.h"
+#include "cmconnectionmethodwrapper.h"
+#include "cmdestinationwrapper.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmanagerTraces.h"
+#endif
+
+
+//-----------------------------------------------------------------------------
+//  RCmManager::OpenL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::OpenL()
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_OPENL_ENTRY );
+
+    OpenLC();
+    CleanupStack::Pop( this );
+
+    OstTraceFunctionExit0( RCMMANAGER_OPENL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::OpenLC()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::OpenLC()
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_OPENLC_ENTRY );
+
+    if ( iCmManagerApi )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    CleanupClosePushL( *this );
+    iCmManagerApi = new (ELeave) RCmManagerApi();
+    User::LeaveIfError( iCmManagerApi->Connect() );
+
+    OstTraceFunctionExit0( RCMMANAGER_OPENLC_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::Close()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::Close()
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_CLOSE_ENTRY );
+
+    if ( iCmManagerApi )
+        {
+        iCmManagerApi->Close();
+        delete iCmManagerApi;
+        iCmManagerApi = NULL;
+        }
+
+    OstTraceFunctionExit0( RCMMANAGER_CLOSE_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::CreateTablesAndOpenL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::CreateTablesAndOpenL()
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_CREATETABLESANDOPENL_ENTRY );
+    OpenL();
+    OstTraceFunctionExit0( RCMMANAGER_CREATETABLESANDOPENL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::ConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethod RCmManager::ConnectionMethodL(
+        TUint32 aConnectionMethodId ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_CONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    if ( !( ( aConnectionMethodId > KCmmConnMethodIdIntervalMin ) &&
+            ( aConnectionMethodId < KCmmConnMethodIdIntervalMax ) ) )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    // If client already has a handle open to this connection method, give a
+    // reference to it.
+    CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+    TInt existingHandle( 0 );
+    cmWrapper->GetConnMethodWithIdL( iCmManagerApi, aConnectionMethodId, existingHandle );
+    if ( existingHandle )
+        {
+        CleanupStack::PopAndDestroy( cmWrapper );
+        cmWrapper = iCmManagerApi->GetConnMethodWrapperL( existingHandle );
+        cmWrapper->IncreaseReferenceCounter();
+        }
+    else
+        {
+        CleanupStack::Pop( cmWrapper );
+        }
+
+    RCmConnectionMethod cm;
+    cm.iCmConnectionMethodWrapper = cmWrapper;
+
+    OstTraceFunctionExit0( DUP1_RCMMANAGER_CONNECTIONMETHODL_EXIT );
+    return cm;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::GetBearerInfoIntL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmManager::GetBearerInfoIntL(
+        TUint32 aBearerType,
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_GETBEARERINFOINTL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TUint32 value( 0 );
+    TInt err = iCmManagerApi->GetBearerInfoInt( aBearerType, aAttribute, value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGER_GETBEARERINFOINTL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::GetBearerInfoBoolL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmManager::GetBearerInfoBoolL(
+        TUint32 aBearerType,
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_GETBEARERINFOBOOLL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TBool value( 0 );
+    TInt err = iCmManagerApi->GetBearerInfoBool( aBearerType, aAttribute, value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGER_GETBEARERINFOBOOLL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::GetBearerInfoStringL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* RCmManager::GetBearerInfoStringL(
+        TUint32 aBearerType,
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_GETBEARERINFOSTRINGL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    HBufC* buffer = HBufC::NewLC( KCmmStringLengthMax );
+    TInt err = iCmManagerApi->GetBearerInfoString( aBearerType, aAttribute, buffer );
+    User::LeaveIfError( err );
+
+    if ( buffer->Length() > 0 )
+        {
+        CleanupStack::Pop( buffer );
+        }
+    else
+        {
+        CleanupStack::PopAndDestroy( buffer );
+        buffer = NULL;
+        buffer = KNullDesC().AllocL();
+        }
+
+    OstTraceFunctionExit0( RCMMANAGER_GETBEARERINFOSTRINGL_EXIT );
+    return buffer;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::GetBearerInfoString8L()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* RCmManager::GetBearerInfoString8L(
+        TUint32 aBearerType,
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_GETBEARERINFOSTRING8L_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    HBufC8* buffer8 = HBufC8::NewLC( KCmmStringLengthMax );
+    TInt err = iCmManagerApi->GetBearerInfoString8( aBearerType, aAttribute, buffer8 );
+    User::LeaveIfError( err );
+
+    if ( buffer8->Length() > 0 )
+        {
+        CleanupStack::Pop( buffer8 );
+        }
+    else
+        {
+        CleanupStack::PopAndDestroy( buffer8 );
+        buffer8 = NULL;
+        buffer8 = KNullDesC8().AllocL();
+        }
+
+    OstTraceFunctionExit0( RCMMANAGER_GETBEARERINFOSTRING8L_EXIT );
+    return buffer8;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::GetConnectionMethodInfoIntL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmManager::GetConnectionMethodInfoIntL(
+        TUint32 aIapId,
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_GETCONNECTIONMETHODINFOINTL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TUint32 value( 0 );
+    TInt err = iCmManagerApi->GetConnectionMethodInfoInt( aIapId, aAttribute, value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGER_GETCONNECTIONMETHODINFOINTL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::GetConnectionMethodInfoBoolL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmManager::GetConnectionMethodInfoBoolL(
+        TUint32 aIapId,
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_GETCONNECTIONMETHODINFOBOOLL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TBool value( 0 );
+    TInt err = iCmManagerApi->GetConnectionMethodInfoBool( aIapId, aAttribute, value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGER_GETCONNECTIONMETHODINFOBOOLL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::GetConnectionMethodInfoStringL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* RCmManager::GetConnectionMethodInfoStringL(
+        TUint32 aIapId,
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_GETCONNECTIONMETHODINFOSTRINGL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    HBufC* buffer = HBufC::NewLC( KCmmStringLengthMax );
+    TInt err = iCmManagerApi->GetConnectionMethodInfoString( aIapId, aAttribute, buffer );
+    User::LeaveIfError( err );
+
+    if ( buffer->Length() > 0 )
+        {
+        CleanupStack::Pop( buffer );
+        }
+    else
+        {
+        CleanupStack::PopAndDestroy( buffer );
+        buffer = NULL;
+        buffer = KNullDesC().AllocL();
+        }
+
+    OstTraceFunctionExit0( RCMMANAGER_GETCONNECTIONMETHODINFOSTRINGL_EXIT );
+    return buffer;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::GetConnectionMethodInfoString8L()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* RCmManager::GetConnectionMethodInfoString8L(
+        TUint32 aIapId,
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_GETCONNECTIONMETHODINFOSTRING8L_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    HBufC8* buffer8 = HBufC8::NewLC( KCmmStringLengthMax );
+    TInt err = iCmManagerApi->GetConnectionMethodInfoString8( aIapId, aAttribute, buffer8 );
+    User::LeaveIfError( err );
+
+    if ( buffer8->Length() > 0 )
+        {
+        CleanupStack::Pop( buffer8 );
+        }
+    else
+        {
+        CleanupStack::PopAndDestroy( buffer8 );
+        buffer8 = NULL;
+        buffer8 = KNullDesC8().AllocL();
+        }
+
+    OstTraceFunctionExit0( RCMMANAGER_GETCONNECTIONMETHODINFOSTRING8L_EXIT );
+    return buffer8;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::CreateDestinationL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestination RCmManager::CreateDestinationL(
+        const TDesC& aName )
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_CREATEDESTINATIONL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    if ( aName.Length() == 0 )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    CCmDestinationWrapper* destWrap = CCmDestinationWrapper::NewLC();
+    destWrap->CreateDestByNameL( iCmManagerApi, aName );
+    CleanupStack::Pop( destWrap );
+
+    RCmDestination dest;
+    dest.iCmDestinationWrapper = destWrap;
+
+    OstTraceFunctionExit0( RCMMANAGER_CREATEDESTINATIONL_EXIT );
+    return dest;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::CreateConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethod RCmManager::CreateConnectionMethodL(
+        TUint32 aBearerType )
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_CREATECONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+    cmWrapper->CreateConnMethodL( iCmManagerApi, aBearerType );
+    CleanupStack::Pop( cmWrapper );
+
+    RCmConnectionMethod cm;
+    cm.iCmConnectionMethodWrapper = cmWrapper;
+
+    OstTraceFunctionExit0( RCMMANAGER_CREATECONNECTIONMETHODL_EXIT );
+    return cm;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::CopyConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TInt RCmManager::CopyConnectionMethodL(
+        RCmDestination& aTargetDestination,
+        RCmConnectionMethod& aConnectionMethod )
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_COPYCONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    if ( !aTargetDestination.iCmDestinationWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper )
+        {
+        User::Leave( KErrArgument );
+        }
+    if ( !aTargetDestination.iCmDestinationWrapper->SessionConnected() ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt index( 0 );
+    TInt targetDestHandle = aTargetDestination.iCmDestinationWrapper->GetHandle();
+    TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    TInt err = iCmManagerApi->CopyConnectionMethod( targetDestHandle, connMethodHandle, index );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGER_COPYCONNECTIONMETHODL_EXIT );
+    return index;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::MoveConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TInt RCmManager::MoveConnectionMethodL(
+        RCmDestination& aSourceDestination,
+        RCmDestination& aTargetDestination,
+        RCmConnectionMethod& aConnectionMethod )
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_MOVECONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    if ( !aSourceDestination.iCmDestinationWrapper ||
+            !aTargetDestination.iCmDestinationWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper )
+        {
+        User::Leave( KErrArgument );
+        }
+    if ( !aSourceDestination.iCmDestinationWrapper->SessionConnected() ||
+            !aTargetDestination.iCmDestinationWrapper->SessionConnected() ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TCmmIpcStructMoveConnMethod pkgData;
+    pkgData.iSourceDestHandle = aSourceDestination.iCmDestinationWrapper->GetHandle();
+    pkgData.iTargetDestHandle = aTargetDestination.iCmDestinationWrapper->GetHandle();
+    pkgData.iConnMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    pkgData.iIndex = 0;
+
+    TInt err = iCmManagerApi->MoveConnectionMethod( pkgData );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGER_MOVECONNECTIONMETHODL_EXIT );
+    return pkgData.iIndex;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::RemoveConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::RemoveConnectionMethodL(
+        RCmDestination& aDestination,
+        RCmConnectionMethod& aConnectionMethod )
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_REMOVECONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    if ( !aDestination.iCmDestinationWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper )
+        {
+        User::Leave( KErrArgument );
+        }
+    if ( !aDestination.iCmDestinationWrapper->SessionConnected() ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt targetDestHandle = aDestination.iCmDestinationWrapper->GetHandle();
+    TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    TInt err = iCmManagerApi->RemoveConnectionMethod( targetDestHandle, connMethodHandle );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGER_REMOVECONNECTIONMETHODL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::RemoveAllReferencesL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::RemoveAllReferencesL(
+        RCmConnectionMethod& aConnectionMethod )
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_REMOVEALLREFERENCESL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    if ( !aConnectionMethod.iCmConnectionMethodWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    TInt err = iCmManagerApi->RemoveAllReferences( connMethodHandle );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGER_REMOVEALLREFERENCESL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::ConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::ConnectionMethodL(
+        RArray<TUint32>& aCmArray,
+        TBool aCheckBearerType,
+        TBool aLegacyOnly,
+        TBool aEasyWlan ) const
+    {
+    OstTraceFunctionEntry0( DUP1_RCMMANAGER_CONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TCmmIpcStructGetConnMethods parameters;
+    parameters.iCheckBearerType = aCheckBearerType;
+    parameters.iLegacyOnly = aLegacyOnly;
+    parameters.iEasyWlan = aEasyWlan;
+
+    iCmManagerApi->GetConnMethodsL( parameters, aCmArray );
+
+    OstTraceFunctionExit0( RCMMANAGER_CONNECTIONMETHODL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::AllDestinationsL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::AllDestinationsL( RArray<TUint32>& aDestArray ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_ALLDESTINATIONSL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    iCmManagerApi->GetAllDestinationsL( aDestArray );
+
+    OstTraceFunctionExit0( RCMMANAGER_ALLDESTINATIONSL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::DestinationL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestination RCmManager::DestinationL( TUint32 aDestinationId ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_DESTINATIONL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    // If client already has a handle open to this destination, give a
+    // reference to it.
+    CCmDestinationWrapper* destWrap = CCmDestinationWrapper::NewLC();
+    TInt existingHandle( 0 );
+    destWrap->GetDestWithIdL( iCmManagerApi, aDestinationId, existingHandle );
+    if ( existingHandle )
+        {
+        CleanupStack::PopAndDestroy( destWrap );
+        destWrap = iCmManagerApi->GetDestinationWrapperL( existingHandle );
+        destWrap->IncreaseReferenceCounter();
+        }
+    else
+        {
+        CleanupStack::Pop( destWrap );
+        }
+
+    RCmDestination dest;
+    dest.iCmDestinationWrapper = destWrap;
+
+    return dest;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::BearerPriorityArrayL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::BearerPriorityArrayL(
+        RArray<TBearerPriority>& aArray ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_BEARERPRIORITYARRAYL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    iCmManagerApi->GetBearerPriorityArrayL( aArray );
+
+    OstTraceFunctionExit0( RCMMANAGER_BEARERPRIORITYARRAYL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::UpdateBearerPriorityArrayL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::UpdateBearerPriorityArrayL(
+        const RArray<TBearerPriority>& aArray )
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_UPDATEBEARERPRIORITYARRAYL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    iCmManagerApi->SetBearerPriorityArrayL( aArray );
+
+    OstTraceFunctionExit0( RCMMANAGER_UPDATEBEARERPRIORITYARRAYL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::CleanupGlobalPriorityArray()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::CleanupGlobalPriorityArray(
+        RArray<TBearerPriority>& aArray ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_CLEANUPGLOBALPRIORITYARRAY_ENTRY );
+
+    for ( TInt i = 0; i < aArray.Count(); i++ )
+        {
+        delete aArray[i].iServiceType;
+        }
+    aArray.Reset();
+    aArray.Close();
+
+    OstTraceFunctionExit0( RCMMANAGER_CLEANUPGLOBALPRIORITYARRAY_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::SupportedBearersL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::SupportedBearersL( RArray<TUint32>& aArray ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_SUPPORTEDBEARERSL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+    iCmManagerApi->GetSupportedBearersL( aArray );
+
+    OstTraceFunctionExit0( RCMMANAGER_SUPPORTEDBEARERSL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::EasyWlanIdL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmManager::EasyWlanIdL() const
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_EASYWLANIDL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TUint32 value( 0 );
+    TInt err = iCmManagerApi->GetEasyWlanId( value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGER_EASYWLANIDL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::ReadDefConnL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::ReadDefConnL(
+        TCmDefConnValue& aDefConnSetting )
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_READDEFCONNL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmManagerApi->ReadDefaultConnection( aDefConnSetting );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGER_READDEFCONNL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::WriteDefConnL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::WriteDefConnL(
+        const TCmDefConnValue& aDefConnSetting )
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_WRITEDEFCONNL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmManagerApi->WriteDefaultConnection( aDefConnSetting );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGER_WRITEDEFCONNL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::ReadGenConnSettingsL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::ReadGenConnSettingsL(
+        TCmGenConnSettings& aGenConnSettings )
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_READGENCONNSETTINGSL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmManagerApi->ReadGeneralConnectionSettings( aGenConnSettings );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGER_READGENCONNSETTINGSL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::WriteGenConnSettingsL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::WriteGenConnSettingsL(
+        const TCmGenConnSettings& aGenConnSettings )
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_WRITEGENCONNSETTINGSL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmManagerApi->WriteGeneralConnectionSettings( aGenConnSettings );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGER_WRITEGENCONNSETTINGSL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::CreateDestinationL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestination RCmManager::CreateDestinationL(
+        const TDesC& aName,
+        TUint32 aDestId )
+    {
+    OstTraceFunctionEntry0( DUP1_RCMMANAGER_CREATEDESTINATIONL_ENTRY );
+
+    if ( aDestId == 0 )
+        {
+        return CreateDestinationL( aName );
+        }
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    if ( aName.Length() == 0 )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TUint32 adjustedDestId( 0 );
+    if ( aDestId > KCmmDestIdIntervalLegacyMin && aDestId < KCmmDestIdIntervalLegacyMax )
+        {
+        adjustedDestId = aDestId + KCmDefaultDestinationAPTagId;
+        }
+    else if ( aDestId > KCmmDestIdIntervalMin && aDestId < KCmmDestIdIntervalMax )
+        {
+        adjustedDestId = aDestId;
+        }
+    else
+        {
+        User::Leave( KErrArgument );
+        }
+
+    CCmDestinationWrapper* destWrap = CCmDestinationWrapper::NewLC();
+    destWrap->CreateDestByNameAndIdL( iCmManagerApi, aName, adjustedDestId );
+    CleanupStack::Pop( destWrap );
+
+    RCmDestination dest;
+    dest.iCmDestinationWrapper = destWrap;
+
+    OstTraceFunctionExit0( DUP1_RCMMANAGER_CREATEDESTINATIONL_EXIT );
+    return dest;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::CreateConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethod RCmManager::CreateConnectionMethodL(
+        TUint32 aBearerType,
+        TUint32 aConnMethodId )
+    {
+    OstTraceFunctionEntry0( DUP1_RCMMANAGER_CREATECONNECTIONMETHODL_ENTRY );
+
+    if ( aConnMethodId == 0 )
+        {
+        return CreateConnectionMethodL( aBearerType );
+        }
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+    if ( !( aConnMethodId > KCmmConnMethodIdIntervalMin &&
+            aConnMethodId < KCmmConnMethodIdIntervalMax ) )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+    cmWrapper->CreateConnMethodWithIdL( iCmManagerApi, aBearerType, aConnMethodId );
+    CleanupStack::Pop( cmWrapper );
+
+    RCmConnectionMethod cm;
+    cm.iCmConnectionMethodWrapper = cmWrapper;
+
+    OstTraceFunctionExit0( DUP1_RCMMANAGER_CREATECONNECTIONMETHODL_EXIT );
+    return cm;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManager::GetUncategorizedIconL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* RCmManager::GetUncategorizedIconL() const
+    {
+    OstTraceFunctionEntry0( RCMMANAGER_GETUNCATEGORIZEDICONL_ENTRY );
+
+    User::Leave( KErrNotSupported );
+
+    OstTraceFunctionExit0( RCMMANAGER_GETUNCATEGORIZEDICONL_EXIT );
+    return NULL;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/src/cmmanagerapi.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,957 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Client side IPC handling for Connection Method Manager server.
+*
+*/
+
+
+#include <cmmanagerdef.h>
+
+#include "cmmserverdefs.h"
+#include "cmmanagerapi.h"
+#include "cmdestinationwrapper.h"
+#include "cmconnectionmethodwrapper.h"
+#include "cmmclistatic.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmanagerapiTraces.h"
+#endif
+
+
+RCmManagerApi::RCmManagerApi() : RSessionBase()
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_RCMMANAGERAPI_ENTRY );
+
+    iConnected = EFalse;
+    iSmallBufsForDestinations = ETrue;
+    iSmallBufsForConnMethods = ETrue;
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_RCMMANAGERAPI_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::Connect()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::Connect()
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_CONNECT_ENTRY );
+
+    if ( !iConnected )
+        {
+        TInt retry = 2;
+        for (;;)
+            {
+            TInt err = CreateSession( KCmmServer, TVersion( 0, 0, 0 ), KCmmDefaultMessageSlots );
+
+            if ( err != KErrNotFound && err != KErrServerTerminated )
+                {
+                if ( !err )
+                    {
+                    iConnected = ETrue;
+                    }
+                OstTraceFunctionExit0( RCMMANAGERAPI_CONNECT_EXIT );
+                return err;
+                }
+            // KErrNotFound and KErrServerTerminated will go through.
+            if ( --retry <= 0 )
+                {
+                OstTraceFunctionExit0( DUP1_RCMMANAGERAPI_CONNECT_EXIT );
+                return err;
+                }
+            err = TCmManagerLauncher::LaunchServer(
+                    KCmmServer,
+                    KCmmServerFile,
+                    KCmmUid3,
+                    KCmmServerInitHeapSize,
+                    KCmmServerMaxHeapSize,
+                    KCmmServerStackSize );
+
+            if ( err != KErrNone && err != KErrAlreadyExists )
+                {
+                // Failed to launch server, and it wasn't already running.
+                OstTraceFunctionExit0( DUP2_RCMMANAGERAPI_CONNECT_EXIT );
+                return err;
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( DUP3_RCMMANAGERAPI_CONNECT_EXIT );
+    return KErrNone;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::Close()
+//-----------------------------------------------------------------------------
+//
+void RCmManagerApi::Close()
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_CLOSE_ENTRY );
+
+    if ( iConnected )
+        {
+        // Close all subsessions first.
+        //
+        // Don't call subsession destructors (wrappers), since they will try to
+        // remove themselves from these pointer arrays. Here we can just close
+        // the arrays at the end.
+        for ( TInt i = 0; i < iConnMethods.Count(); i++ )
+            {
+            iConnMethods[i]->CloseSession();
+            }
+        iConnMethods.Close();
+        for ( TInt i = 0; i < iDestinations.Count(); i++ )
+            {
+            iDestinations[i]->CloseSession();
+            }
+        iDestinations.Close();
+
+        RSessionBase::Close();
+        iConnected = EFalse;
+        }
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_CLOSE_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::StoreDestinationWrapper()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::StoreDestinationWrapper(
+        CCmDestinationWrapper* aDestinationWrapper )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_STOREDESTINATIONWRAPPER_ENTRY );
+
+    TInt err = iDestinations.InsertInAddressOrder( aDestinationWrapper );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_STOREDESTINATIONWRAPPER_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::RemoveDestinationWrapper()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::RemoveDestinationWrapper(
+        CCmDestinationWrapper* aDestinationWrapper )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_REMOVEDESTINATIONPOINTER_ENTRY );
+
+    TInt index = iDestinations.FindInAddressOrder( aDestinationWrapper );
+    if ( index >= 0 )
+        {
+        iDestinations.Remove( index );
+        index = KErrNone;
+        }
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_REMOVEDESTINATIONPOINTER_EXIT );
+    return index;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::GetDestinationWrapperL()
+//-----------------------------------------------------------------------------
+//
+CCmDestinationWrapper* RCmManagerApi::GetDestinationWrapperL( const TInt& aHandle )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_GETDESTINATIONWRAPPER_ENTRY );
+
+    CCmDestinationWrapper* result( NULL );
+    if ( aHandle )
+        {
+        for ( TInt i = 0; i < iDestinations.Count(); i++ )
+            {
+            if ( iDestinations[i]->GetHandle() == aHandle )
+                {
+                result = iDestinations[i];
+                break;
+                }
+            }
+        }
+    if ( !result )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_GETDESTINATIONWRAPPER_EXIT );
+    return result;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::StoreConnMethodWrapper()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::StoreConnMethodWrapper(
+        CCmConnectionMethodWrapper* aConnMethodWrapper )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_STORECONNMETHODWRAPPER_ENTRY );
+
+    TInt err = iConnMethods.InsertInAddressOrder( aConnMethodWrapper );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_STORECONNMETHODWRAPPER_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::RemoveConnMethodWrapper()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::RemoveConnMethodWrapper(
+        CCmConnectionMethodWrapper* aConnMethodWrapper )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_REMOVECONNMETHODPOINTER_ENTRY );
+
+    TInt index = iConnMethods.FindInAddressOrder( aConnMethodWrapper );
+    if ( index >= 0 )
+        {
+        iConnMethods.Remove( index );
+        index = KErrNone;
+        }
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_REMOVECONNMETHODPOINTER_EXIT );
+    return index;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::GetConnMethodWrapperL()
+//-----------------------------------------------------------------------------
+//
+CCmConnectionMethodWrapper* RCmManagerApi::GetConnMethodWrapperL( const TInt& aHandle )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_GETCONNMETHODWRAPPER_ENTRY );
+
+    CCmConnectionMethodWrapper* result( NULL );
+    if ( aHandle )
+        {
+        for ( TInt i = 0; i < iConnMethods.Count(); i++ )
+            {
+            if ( iConnMethods[i]->GetHandle() == aHandle )
+                {
+                result = iConnMethods[i];
+                break;
+                }
+            }
+        }
+    if ( !result )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_GETCONNMETHODWRAPPER_EXIT );
+    return result;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::GetBearerInfoInt()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::GetBearerInfoInt(
+        const TUint32 aBearerType,
+        const TUint32 aAttribute,
+        TUint32& aValue )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_GETBEARERINFOINT_ENTRY );
+
+    TPckg<TUint32> pckg( aValue );
+    TIpcArgs args( aBearerType, aAttribute, &pckg );
+    TInt err = SendReceive( ECmmGetBearerInfoInt, args );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_GETBEARERINFOINT_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::GetBearerInfoBool()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::GetBearerInfoBool(
+        const TUint32 aBearerType,
+        const TUint32 aAttribute,
+        TBool& aValue )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_GETBEARERINFOBOOL_ENTRY );
+
+    TPckg<TBool> pckg( aValue );
+    TIpcArgs args( aBearerType, aAttribute, &pckg );
+    TInt err = SendReceive( ECmmGetBearerInfoBool, args );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_GETBEARERINFOBOOL_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::GetBearerInfoString()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::GetBearerInfoString(
+        const TUint32 aBearerType,
+        const TUint32 aAttribute,
+        HBufC* aBuffer )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_GETBEARERINFOSTRING_ENTRY );
+
+    TPtr descriptor( aBuffer->Des() );
+    TIpcArgs args( aBearerType, aAttribute, &descriptor );
+    TInt err = SendReceive( ECmmGetBearerInfoString, args );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_GETBEARERINFOSTRING_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::GetBearerInfoString8()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::GetBearerInfoString8(
+        const TUint32 aBearerType,
+        const TUint32 aAttribute,
+        HBufC8* aBuffer8 )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_GETBEARERINFOSTRING8_ENTRY );
+
+    TPtr8 descriptor( aBuffer8->Des() );
+    TIpcArgs args( aBearerType, aAttribute, &descriptor );
+    TInt err = SendReceive( ECmmGetBearerInfoString8, args );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_GETBEARERINFOSTRING8_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::GetConnectionMethodInfoInt()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::GetConnectionMethodInfoInt(
+        const TUint32 aIapId,
+        const TUint32 aAttribute,
+        TUint32& aValue )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_GETCONNECTIONMETHODINFOINT_ENTRY );
+
+    TPckg<TUint32> pckg( aValue );
+    TIpcArgs args( aIapId, aAttribute, &pckg );
+    TInt err = SendReceive( ECmmGetConnMethodInfoInt, args );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_GETCONNECTIONMETHODINFOINT_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::GetConnectionMethodInfoBool()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::GetConnectionMethodInfoBool(
+        const TUint32 aIapId,
+        const TUint32 aAttribute,
+        TBool& aValue )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_GETCONNECTIONMETHODINFOBOOL_ENTRY );
+
+    TPckg<TUint32> pckg( aValue );
+    TIpcArgs args( aIapId, aAttribute, &pckg );
+    TInt err = SendReceive( ECmmGetConnMethodInfoBool, args );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_GETCONNECTIONMETHODINFOBOOL_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::GetConnectionMethodInfoString()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::GetConnectionMethodInfoString(
+        const TUint32 aIapId,
+        const TUint32 aAttribute,
+        HBufC* aBuffer )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_GETCONNECTIONMETHODINFOSTRING_ENTRY );
+
+    TPtr descriptor( aBuffer->Des() );
+    TIpcArgs args( aIapId, aAttribute, &descriptor );
+    TInt err = SendReceive( ECmmGetConnMethodInfoString, args );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_GETCONNECTIONMETHODINFOSTRING_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::GetConnectionMethodInfoString8()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::GetConnectionMethodInfoString8(
+        const TUint32 aIapId,
+        const TUint32 aAttribute,
+        HBufC8* aBuffer8 )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_GETCONNECTIONMETHODINFOSTRING8_ENTRY );
+
+    TPtr8 descriptor( aBuffer8->Des() );
+    TIpcArgs args( aIapId, aAttribute, &descriptor );
+    TInt err = SendReceive( ECmmGetConnMethodInfoString8, args );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_GETCONNECTIONMETHODINFOSTRING8_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::GetConnMethodsL(
+//-----------------------------------------------------------------------------
+//
+void RCmManagerApi::GetConnMethodsL(
+        const TCmmIpcStructGetConnMethods& aParameters,
+        RArray<TUint32>& aCmArray )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_GETCONNMETHODSL_ENTRY );
+
+    TInt err( KErrNone );
+    TInt count( KMaxTInt );
+    TPckg<TInt> countPckg( count );
+    TPckgBuf<TCmmIpcStructGetConnMethods> parametersPckg( aParameters );
+
+    HBufC8* smallBuf( NULL );
+    HBufC8* bigBuf( NULL );
+
+    if ( iSmallBufsForConnMethods )
+        {
+        smallBuf = HBufC8::NewLC( KCmmConnMethodAmountNormal );
+        TPtr8 smallBufPtr( smallBuf->Des() );
+
+        TIpcArgs args( &parametersPckg, &countPckg, &smallBufPtr );
+        err = SendReceive( ECmmGetConnMethodArray, args );
+        User::LeaveIfError( err );
+        }
+
+    if ( countPckg() <= KCmmConnMethodAmountNormal )
+        {
+        aCmArray.Reset();
+        aCmArray.ReserveL( countPckg() );
+        for ( TInt i = 0; i < countPckg(); i++ )
+            {
+            aCmArray.AppendL( (TUint32)(*smallBuf)[i] );
+            }
+        }
+    else if ( countPckg() == KMaxTInt )
+        {
+        // All connection methods didn't fit into small array, ask again with big array.
+        iSmallBufsForConnMethods = EFalse; // Switch small buffer mode off.
+        if ( smallBuf )
+            {
+            CleanupStack::PopAndDestroy( smallBuf );
+            smallBuf = NULL;
+            }
+
+        bigBuf = HBufC8::NewLC( KCmmConnMethodAmountMax );
+        TPtr8 bigBufPtr( bigBuf->Des() );
+
+        TIpcArgs args( &parametersPckg, &countPckg, &bigBufPtr );
+        err = SendReceive( ECmmGetConnMethodArray, args );
+        User::LeaveIfError( err );
+
+        if ( countPckg() <= KCmmConnMethodAmountMax )
+            {
+            // Don't switch back to small buffer mode if client was only asking
+            // for legacy connection methods (likely a small list).
+            if ( countPckg() < KCmmConnMethodAmountNormal && aParameters.iLegacyOnly == EFalse )
+                {
+                iSmallBufsForConnMethods = ETrue; // Switch small buffer mode back on.
+                }
+
+            aCmArray.Reset();
+            aCmArray.ReserveL( countPckg() );
+            for ( TInt i = 0; i < countPckg(); i++ )
+                {
+                aCmArray.AppendL( (TUint32)(*smallBuf)[i] );
+                }
+            }
+        else
+            {
+            User::Leave( KErrUnknown );
+            }
+        CleanupStack::PopAndDestroy( bigBuf );
+        }
+    else
+        {
+        User::Leave( KErrUnknown );
+        }
+
+    if ( smallBuf )
+        {
+        CleanupStack::PopAndDestroy( smallBuf );
+        }
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_GETCONNMETHODSL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::GetAllDestinationsL()
+//-----------------------------------------------------------------------------
+//
+void RCmManagerApi::GetAllDestinationsL( RArray<TUint32>& aDestArray )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_GETALLDESTINATIONSL_ENTRY );
+
+    TInt err( KErrNone );
+    TInt count( KMaxTInt );
+    TPckg<TInt> countPckg( count );
+
+    HBufC16* smallBuf( NULL );
+    HBufC16* bigBuf( NULL );
+
+    if ( iSmallBufsForDestinations )
+        {
+        smallBuf = HBufC16::NewLC( KCmmDestAmountNormal );
+        TPtr16 smallBufPtr( smallBuf->Des() );
+
+        TIpcArgs args( &countPckg, &smallBufPtr );
+        err = SendReceive( ECmmGetAllDestinations, args );
+        User::LeaveIfError( err );
+        }
+
+    if ( countPckg() <= KCmmDestAmountNormal )
+        {
+        aDestArray.Reset();
+        aDestArray.ReserveL( countPckg() );
+        for ( TInt i = 0; i < countPckg(); i++ )
+            {
+            aDestArray.AppendL( (TUint32)(*smallBuf)[i] );
+            }
+        }
+    else if ( countPckg() == KMaxTInt )
+        {
+        // All destinations didn't fit into small array, ask again with big array.
+        iSmallBufsForDestinations = EFalse; // Switch small buffer mode off.
+        if ( smallBuf )
+            {
+            CleanupStack::PopAndDestroy( smallBuf );
+            smallBuf = NULL;
+            }
+
+        bigBuf = HBufC16::NewLC( KCmmDestAmountMax );
+        TPtr16 bigBufPtr( bigBuf->Des() );
+
+        TIpcArgs args( &countPckg, &bigBufPtr );
+        err = SendReceive( ECmmGetAllDestinations, args );
+        User::LeaveIfError( err );
+
+        if ( countPckg() <= KCmmDestAmountMax )
+            {
+            if ( countPckg() < KCmmDestAmountNormal )
+                {
+                iSmallBufsForDestinations = ETrue; // Switch small buffer mode back on.
+                }
+
+            aDestArray.Reset();
+            aDestArray.ReserveL( countPckg() );
+            for ( TInt i = 0; i < countPckg(); i++ )
+                {
+                aDestArray.AppendL( (TUint32)(*smallBuf)[i] );
+                }
+            }
+        else
+            {
+            User::Leave( KErrUnknown );
+            }
+        CleanupStack::PopAndDestroy( bigBuf );
+        }
+    else
+        {
+        User::Leave( KErrUnknown );
+        }
+
+    if ( smallBuf )
+        {
+        CleanupStack::PopAndDestroy( smallBuf );
+        }
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_GETALLDESTINATIONSL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::GetBearerPriorityArrayL()
+//-----------------------------------------------------------------------------
+//
+void RCmManagerApi::GetBearerPriorityArrayL( RArray<TBearerPriority>& aArray )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_GETBEARERPRIORITYARRAYL_ENTRY );
+
+    HBufC* buffer = HBufC::NewLC( KCmmDefaultBearerPriorityArraySize );
+    TPtr bufferPtr( buffer->Des() );
+
+    TIpcArgs args( &bufferPtr );
+    TInt err = SendReceive( ECmmGetBearerPriorityArray, args );
+    User::LeaveIfError( err );
+
+    // bufferPtr[1] should now contain the needed buffer length.
+    if ( bufferPtr[1] > bufferPtr.Length() )
+        {
+        // First buffer wasn't big enough. Try again with correct size buffer.
+        CleanupStack::PopAndDestroy( buffer );
+        buffer = HBufC::NewLC( bufferPtr[1] );
+        bufferPtr.Set( buffer->Des() );
+
+        TIpcArgs args2( &bufferPtr );
+        err = SendReceive( ECmmGetBearerPriorityArray, args2 );
+        User::LeaveIfError( err );
+
+        if ( bufferPtr[1] > bufferPtr.Length() )
+            {
+            User::Leave( KErrAbort );
+            }
+        }
+
+    const TInt bearerCount = bufferPtr[0];
+
+    // Cleanup old array. There's a pointer in that T-class...
+    for ( TInt i = 0; i < aArray.Count(); i++ )
+        {
+        if ( aArray[i].iServiceType )
+            {
+            delete aArray[i].iServiceType;
+            aArray[i].iServiceType = NULL;
+            }
+        }
+    aArray.Reset();
+    aArray.ReserveL( bearerCount );
+
+    TInt position( 2 ); // Start of first priority item
+    for ( TInt i = 0; i < bearerCount; i++ )
+        {
+        TBearerPriority bearerPriority;
+        bearerPriority.iPriority = bufferPtr[position++] << KBitsInTwoBytes;
+        bearerPriority.iPriority += bufferPtr[position++];
+        bearerPriority.iUIPriority = bufferPtr[position++] << KBitsInTwoBytes;
+        bearerPriority.iUIPriority += bufferPtr[position++];
+        bearerPriority.iServiceType = NULL;
+
+        const TInt stringLength = bufferPtr[position++];
+        if ( stringLength )
+            {
+            HBufC* serviceName = HBufC::NewL( stringLength );
+            serviceName->Des().Append( &(bufferPtr[position]), stringLength );
+            position += stringLength;
+            bearerPriority.iServiceType = serviceName;
+            // Ownership moved into array.
+            }
+        aArray.AppendL( bearerPriority );
+        }
+
+    CleanupStack::PopAndDestroy( buffer );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_GETBEARERPRIORITYARRAYL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::SetBearerPriorityArrayL()
+//-----------------------------------------------------------------------------
+//
+void RCmManagerApi::SetBearerPriorityArrayL( const RArray<TBearerPriority>& aArray )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_SETBEARERPRIORITYARRAYL_ENTRY );
+
+    // iPriority:           2 16-bit values,
+    // iUIPriority:         2 16-bit values,
+    // iServiceType length: 1 16-bit value.
+    const TInt KCmmBearerPriorityHeaderLength = 5;
+
+    // Buffer starts with legth of 2, to contain both the total amount of
+    // TBearerPriority objects, and the size of the buffer (number of 16-bit
+    // values) needed to contain the whole structure including all headers.
+    TInt bufferLength( 2 );
+
+    const TInt bearerCount = aArray.Count();
+    for ( TInt i = 0; i < bearerCount; i++ )
+        {
+        bufferLength += KCmmBearerPriorityHeaderLength;
+        const TBearerPriority& bearerPriority = aArray[i];
+        if ( !bearerPriority.iServiceType )
+            {
+            User::Leave( KErrArgument );
+            }
+        // Get length of service type name and add it to needed buffer length.
+        bufferLength += bearerPriority.iServiceType->Length();
+        }
+
+    HBufC* buffer = HBufC::NewLC( bufferLength );
+    TPtr bufferPtr( buffer->Des() );
+
+    bufferPtr.Append( bearerCount );
+    bufferPtr.Append( bufferLength );
+
+    TInt position = bufferPtr.Length();
+    for ( TInt i = 0; i < bearerCount; i++ )
+        {
+        const TBearerPriority& bearerPriority = aArray[i];
+
+        bufferPtr.Append( ( bearerPriority.iPriority & 0xFFFF0000 ) >> KBitsInTwoBytes );
+        bufferPtr.Append( ( bearerPriority.iPriority & 0x0000FFFF ) );
+        bufferPtr.Append( ( bearerPriority.iUIPriority & 0xFFFF0000 ) >> KBitsInTwoBytes );
+        bufferPtr.Append( ( bearerPriority.iUIPriority & 0x0000FFFF ) );
+
+        position += KCmmBearerPriorityHeaderLength;
+        if ( !bearerPriority.iServiceType )
+            {
+            User::Leave( KErrArgument );
+            }
+        const TInt stringLength = bearerPriority.iServiceType->Length();
+        bufferPtr.Append( stringLength );
+        bufferPtr.Insert( position, *(bearerPriority.iServiceType) );
+        position += stringLength;
+        }
+
+    TIpcArgs args( &bufferPtr );
+    TInt err = SendReceive( ECmmUpdateBearerPriorityArray, args );
+    User::LeaveIfError( err );
+    CleanupStack::PopAndDestroy( buffer );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_SETBEARERPRIORITYARRAYL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::GetSupportedBearersL()
+//-----------------------------------------------------------------------------
+//
+void RCmManagerApi::GetSupportedBearersL( RArray<TUint32>& aArray )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_GETSUPPORTEDBEARERSL_ENTRY );
+
+    TInt err( KErrNone );
+    TInt count( KMaxTInt );
+    TPckg<TInt> countPckg( count );
+
+    HBufC8* smallBuf( NULL );
+    HBufC8* bigBuf( NULL );
+
+    smallBuf = HBufC8::NewLC( KCmmBearerAmountNormal * sizeof( TUint32 ) );
+    TPtr8 smallBufPtr( smallBuf->Des() );
+
+    TIpcArgs args( &countPckg, &smallBufPtr );
+    err = SendReceive( ECmmGetSupportedBearers, args );
+    User::LeaveIfError( err );
+
+    if ( countPckg() <= KCmmBearerAmountNormal )
+        {
+        aArray.Reset();
+        aArray.ReserveL( countPckg() );
+
+        TUint32 a( 0 );
+        TPtr8 ptr = smallBuf->Des();
+        for ( TInt i = 0; i < countPckg(); i++ )
+            {
+            a = 0;
+            a += (TUint32)ptr[0 + ( i * sizeof( TUint32 ) )];
+            a += (TUint32)ptr[1 + ( i * sizeof( TUint32 ) )] << KBitsInOneByte;
+            a += (TUint32)ptr[2 + ( i * sizeof( TUint32 ) )] << KBitsInTwoBytes;
+            a += (TUint32)ptr[3 + ( i * sizeof( TUint32 ) )] << KBitsInThreeBytes;
+            aArray.AppendL( a );
+            }
+        }
+    else
+        {
+        TInt storedCount = countPckg();
+
+        bigBuf = HBufC8::NewLC( countPckg() * sizeof( TUint32 ) );
+        TPtr8 bigBufPtr( bigBuf->Des() );
+
+        TIpcArgs args( &countPckg, &bigBufPtr );
+        err = SendReceive( ECmmGetSupportedBearers, args );
+        User::LeaveIfError( err );
+
+        if ( countPckg() <= storedCount )
+            {
+            aArray.Reset();
+            aArray.ReserveL( countPckg() );
+
+            TUint32 a( 0 );
+            TPtr8 ptr = bigBuf->Des();
+            for ( TInt i = 0; i < countPckg(); i++ )
+                {
+                a = 0;
+                a += (TUint32)ptr[0 + ( i * sizeof( TUint32 ) )];
+                a += (TUint32)ptr[1 + ( i * sizeof( TUint32 ) )] << KBitsInOneByte;
+                a += (TUint32)ptr[2 + ( i * sizeof( TUint32 ) )] << KBitsInTwoBytes;
+                a += (TUint32)ptr[3 + ( i * sizeof( TUint32 ) )] << KBitsInThreeBytes;
+                aArray.AppendL( a );
+                }
+            }
+        else
+            {
+            User::Leave( KErrUnknown );
+            }
+
+        CleanupStack::PopAndDestroy( bigBuf );
+        }
+    CleanupStack::PopAndDestroy( smallBuf );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_GETSUPPORTEDBEARERSL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::GetEasyWlanId()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::GetEasyWlanId( TUint32& aValue )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_GETEASYWLANID_ENTRY );
+
+    TPckg<TUint32> pckg( aValue );
+    TIpcArgs args( &pckg );
+    TInt err = SendReceive( ECmmGetEasyWlanId, args );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_GETEASYWLANID_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::ReadDefaultConnection()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::ReadDefaultConnection(
+        TCmDefConnValue& aDefConnSetting )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_READDEFAULTCONNECTION_ENTRY );
+
+    TPckgBuf<TCmDefConnValue> pkg( aDefConnSetting );
+    TIpcArgs args( &pkg );
+    TInt err = SendReceive( ECmmReadDefaultConnection, args );
+    aDefConnSetting = pkg();
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_READDEFAULTCONNECTION_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::WriteDefaultConnection()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::WriteDefaultConnection(
+        const TCmDefConnValue& aDefConnSetting )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_WRITEDEFAULTCONNECTION_ENTRY );
+
+    TPckgBuf<TCmDefConnValue> pkg( aDefConnSetting );
+    TIpcArgs args( &pkg );
+    TInt err = SendReceive( ECmmWriteDefaultConnection, args );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_WRITEDEFAULTCONNECTION_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::ReadGeneralConnectionSettings()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::ReadGeneralConnectionSettings(
+        TCmGenConnSettings& aGenConnSettings )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_READGENERALCONNECTIONSETTINGS_ENTRY );
+
+    TPckgBuf<TCmGenConnSettings> pkg( aGenConnSettings );
+    TIpcArgs args( &pkg );
+    TInt err = SendReceive( ECmmReadGeneralConnectionSettings, args );
+    aGenConnSettings = pkg();
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_READGENERALCONNECTIONSETTINGS_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::WriteGeneralConnectionSettings()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::WriteGeneralConnectionSettings(
+        const TCmGenConnSettings& aGenConnSettings )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_WRITEGENERALCONNECTIONSETTINGS_ENTRY );
+
+    TPckgBuf<TCmGenConnSettings> pkg( aGenConnSettings );
+    TIpcArgs args( &pkg );
+    TInt err = SendReceive( ECmmWriteGeneralConnectionSettings, args );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_WRITEGENERALCONNECTIONSETTINGS_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::CopyConnectionMethod()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::CopyConnectionMethod(
+        const TInt aTargetDestHandle,
+        const TInt aConnMethodHandle,
+        TInt& aIndex )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_COPYCONNECTIONMETHOD_ENTRY );
+
+    TPckg<TInt> pkg( aIndex );
+    TIpcArgs args( aTargetDestHandle, aConnMethodHandle, &pkg );
+    TInt err = SendReceive( ECmmCopyConnMethod, args );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_COPYCONNECTIONMETHOD_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::MoveConnectionMethod()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::MoveConnectionMethod(
+        TCmmIpcStructMoveConnMethod& aPkgData )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_MOVECONNECTIONMETHOD_ENTRY );
+
+    TPckgBuf<TCmmIpcStructMoveConnMethod> pkg( aPkgData );
+    TIpcArgs args( &pkg );
+    TInt err = SendReceive( ECmmMoveConnMethod, args );
+    aPkgData = pkg();
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_MOVECONNECTIONMETHOD_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::RemoveConnectionMethod()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::RemoveConnectionMethod(
+        const TInt aTargetDestHandle,
+        const TInt aConnMethodHandle )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_REMOVECONNECTIONMETHOD_ENTRY );
+
+    TIpcArgs args( aTargetDestHandle, aConnMethodHandle );
+    TInt err = SendReceive( ECmmRemoveConnMethod, args );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_REMOVECONNECTIONMETHOD_EXIT );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// RCmManagerApi::RemoveAllReferences()
+//-----------------------------------------------------------------------------
+//
+TInt RCmManagerApi::RemoveAllReferences(
+        const TInt aConnMethodHandle )
+    {
+    OstTraceFunctionEntry0( RCMMANAGERAPI_REMOVEALLREFERENCES_ENTRY );
+
+    TIpcArgs args( aConnMethodHandle );
+    TInt err = SendReceive( ECmmRemoveAllReferences, args );
+
+    OstTraceFunctionExit0( RCMMANAGERAPI_REMOVEALLREFERENCES_EXIT );
+    return err;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/src/cmmanagerext.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,862 @@
+/*
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Implementation of RCmManagerExt.
+*
+*/
+
+
+#include <cmmanagerext.h>
+#include <cmconnectionmethodext.h>
+#include <cmdestinationext.h>
+
+#include "cmmserverdefs.h"
+#include "cmmanagerapi.h"
+#include "cmconnectionmethodwrapper.h"
+#include "cmdestinationwrapper.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmanagerextTraces.h"
+#endif
+
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::OpenL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::OpenL()
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_OPENL_ENTRY );
+
+    OpenLC();
+    CleanupStack::Pop( this );
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_OPENL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::OpenLC()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::OpenLC()
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_OPENLC_ENTRY );
+
+    if ( iCmManagerApi )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    CleanupClosePushL( *this );
+    iCmManagerApi = new (ELeave) RCmManagerApi();
+    User::LeaveIfError( iCmManagerApi->Connect() );
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_OPENLC_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::Close()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::Close()
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_CLOSE_ENTRY );
+
+    if ( iCmManagerApi )
+        {
+        iCmManagerApi->Close();
+        delete iCmManagerApi;
+        iCmManagerApi = NULL;
+        }
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_CLOSE_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::CreateTablesAndOpenL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::CreateTablesAndOpenL()
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_CREATETABLESANDOPENL_ENTRY );
+    OpenL();
+    OstTraceFunctionExit0( RCMMANAGEREXT_CREATETABLESANDOPENL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::ConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethodExt RCmManagerExt::ConnectionMethodL(
+        TUint32 aConnectionMethodId )
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_CONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    if ( !( ( aConnectionMethodId > KCmmConnMethodIdIntervalMin ) &&
+            ( aConnectionMethodId < KCmmConnMethodIdIntervalMax ) ) )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    // If client already has a handle open to this connection method, give a
+    // reference to it.
+    CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+    TInt existingHandle( 0 );
+    cmWrapper->GetConnMethodWithIdL( iCmManagerApi, aConnectionMethodId, existingHandle );
+    if ( existingHandle )
+        {
+        CleanupStack::PopAndDestroy( cmWrapper );
+        cmWrapper = iCmManagerApi->GetConnMethodWrapperL( existingHandle );
+        cmWrapper->IncreaseReferenceCounter();
+        }
+    else
+        {
+        CleanupStack::Pop( cmWrapper );
+        }
+
+    RCmConnectionMethodExt cm;
+    cm.iCmConnectionMethodWrapper = cmWrapper;
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_CONNECTIONMETHODL_EXIT );
+    return cm;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::GetBearerInfoIntL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmManagerExt::GetBearerInfoIntL(
+        TUint32 aBearerType,
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_GETBEARERINFOINTL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TUint32 value( 0 );
+    TInt err = iCmManagerApi->GetBearerInfoInt( aBearerType, aAttribute, value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_GETBEARERINFOINTL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::GetBearerInfoBoolL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmManagerExt::GetBearerInfoBoolL(
+        TUint32 aBearerType,
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_GETBEARERINFOBOOLL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TBool value( 0 );
+    TInt err = iCmManagerApi->GetBearerInfoBool( aBearerType, aAttribute, value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_GETBEARERINFOBOOLL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::GetBearerInfoStringL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* RCmManagerExt::GetBearerInfoStringL(
+        TUint32 aBearerType,
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_GETBEARERINFOSTRINGL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    HBufC* buffer = HBufC::NewLC( KCmmStringLengthMax );
+    TInt err = iCmManagerApi->GetBearerInfoString( aBearerType, aAttribute, buffer );
+    User::LeaveIfError( err );
+
+    if ( buffer->Length() > 0 )
+        {
+        CleanupStack::Pop( buffer );
+        }
+    else
+        {
+        CleanupStack::PopAndDestroy( buffer );
+        buffer = NULL;
+        buffer = KNullDesC().AllocL();
+        }
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_GETBEARERINFOSTRINGL_EXIT );
+    return buffer;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::GetBearerInfoString8L()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* RCmManagerExt::GetBearerInfoString8L(
+        TUint32 aBearerType,
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_GETBEARERINFOSTRING8L_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    HBufC8* buffer8 = HBufC8::NewLC( KCmmStringLengthMax );
+    TInt err = iCmManagerApi->GetBearerInfoString8( aBearerType, aAttribute, buffer8 );
+    User::LeaveIfError( err );
+
+    if ( buffer8->Length() > 0 )
+        {
+        CleanupStack::Pop( buffer8 );
+        }
+    else
+        {
+        CleanupStack::PopAndDestroy( buffer8 );
+        buffer8 = NULL;
+        buffer8 = KNullDesC8().AllocL();
+        }
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_GETBEARERINFOSTRING8L_EXIT );
+    return buffer8;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::GetConnectionMethodInfoIntL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmManagerExt::GetConnectionMethodInfoIntL(
+        TUint32 aIapId,
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_GETCONNECTIONMETHODINFOINTL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TUint32 value( 0 );
+    TInt err = iCmManagerApi->GetConnectionMethodInfoInt( aIapId, aAttribute, value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_GETCONNECTIONMETHODINFOINTL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::GetConnectionMethodInfoBoolL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmManagerExt::GetConnectionMethodInfoBoolL(
+        TUint32 aIapId,
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_GETCONNECTIONMETHODINFOBOOLL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TBool value( 0 );
+    TInt err = iCmManagerApi->GetConnectionMethodInfoBool( aIapId, aAttribute, value );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_GETCONNECTIONMETHODINFOBOOLL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::GetConnectionMethodInfoStringL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* RCmManagerExt::GetConnectionMethodInfoStringL(
+        TUint32 aIapId,
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_GETCONNECTIONMETHODINFOSTRINGL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    HBufC* buffer = HBufC::NewLC( KCmmStringLengthMax );
+    TInt err = iCmManagerApi->GetConnectionMethodInfoString( aIapId, aAttribute, buffer );
+    User::LeaveIfError( err );
+
+    if ( buffer->Length() > 0 )
+        {
+        CleanupStack::Pop( buffer );
+        }
+    else
+        {
+        CleanupStack::PopAndDestroy( buffer );
+        buffer = NULL;
+        buffer = KNullDesC().AllocL();
+        }
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_GETCONNECTIONMETHODINFOSTRINGL_EXIT );
+    return buffer;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::GetConnectionMethodInfoString8L()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* RCmManagerExt::GetConnectionMethodInfoString8L(
+        TUint32 aIapId,
+        TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_GETCONNECTIONMETHODINFOSTRING8L_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    HBufC8* buffer8 = HBufC8::NewLC( KCmmStringLengthMax );
+    TInt err = iCmManagerApi->GetConnectionMethodInfoString8( aIapId, aAttribute, buffer8 );
+    User::LeaveIfError( err );
+
+    if ( buffer8->Length() > 0 )
+        {
+        CleanupStack::Pop( buffer8 );
+        }
+    else
+        {
+        CleanupStack::PopAndDestroy( buffer8 );
+        buffer8 = NULL;
+        buffer8 = KNullDesC8().AllocL();
+        }
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_GETCONNECTIONMETHODINFOSTRING8L_EXIT );
+    return buffer8;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::CreateDestinationL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestinationExt RCmManagerExt::CreateDestinationL(
+        const TDesC& aName )
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_CREATEDESTINATIONL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    if ( aName.Length() == 0 )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    CCmDestinationWrapper* destWrap = CCmDestinationWrapper::NewLC();
+    destWrap->CreateDestByNameL( iCmManagerApi, aName );
+    CleanupStack::Pop( destWrap );
+
+    RCmDestinationExt dest;
+    dest.iCmDestinationWrapper = destWrap;
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_CREATEDESTINATIONL_EXIT );
+    return dest;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::CreateConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethodExt RCmManagerExt::CreateConnectionMethodL(
+        TUint32 aBearerType )
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_CREATECONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+    cmWrapper->CreateConnMethodL( iCmManagerApi, aBearerType );
+    CleanupStack::Pop( cmWrapper );
+
+    RCmConnectionMethodExt cm;
+    cm.iCmConnectionMethodWrapper = cmWrapper;
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_CREATECONNECTIONMETHODL_EXIT );
+    return cm;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::CopyConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TInt RCmManagerExt::CopyConnectionMethodL(
+        RCmDestinationExt& aTargetDestination,
+        RCmConnectionMethodExt& aConnectionMethod )
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_COPYCONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    if ( !aTargetDestination.iCmDestinationWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper )
+        {
+        User::Leave( KErrArgument );
+        }
+    if ( !aTargetDestination.iCmDestinationWrapper->SessionConnected() ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt index( 0 );
+    TInt targetDestHandle = aTargetDestination.iCmDestinationWrapper->GetHandle();
+    TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    TInt err = iCmManagerApi->CopyConnectionMethod( targetDestHandle, connMethodHandle, index );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_COPYCONNECTIONMETHODL_EXIT );
+    return index;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::MoveConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TInt RCmManagerExt::MoveConnectionMethodL(
+        RCmDestinationExt& aSourceDestination,
+        RCmDestinationExt& aTargetDestination,
+        RCmConnectionMethodExt& aConnectionMethod )
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_MOVECONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    if ( !aSourceDestination.iCmDestinationWrapper ||
+            !aTargetDestination.iCmDestinationWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper )
+        {
+        User::Leave( KErrArgument );
+        }
+    if ( !aSourceDestination.iCmDestinationWrapper->SessionConnected() ||
+            !aTargetDestination.iCmDestinationWrapper->SessionConnected() ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TCmmIpcStructMoveConnMethod pkgData;
+    pkgData.iSourceDestHandle = aSourceDestination.iCmDestinationWrapper->GetHandle();
+    pkgData.iTargetDestHandle = aTargetDestination.iCmDestinationWrapper->GetHandle();
+    pkgData.iConnMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    pkgData.iIndex = 0;
+
+    TInt err = iCmManagerApi->MoveConnectionMethod( pkgData );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_MOVECONNECTIONMETHODL_EXIT );
+    return pkgData.iIndex;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::RemoveConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::RemoveConnectionMethodL(
+        RCmDestinationExt& aDestination,
+        RCmConnectionMethodExt& aConnectionMethod )
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_REMOVECONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    if ( !aDestination.iCmDestinationWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper )
+        {
+        User::Leave( KErrArgument );
+        }
+    if ( !aDestination.iCmDestinationWrapper->SessionConnected() ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt targetDestHandle = aDestination.iCmDestinationWrapper->GetHandle();
+    TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    TInt err = iCmManagerApi->RemoveConnectionMethod( targetDestHandle, connMethodHandle );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_REMOVECONNECTIONMETHODL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::RemoveAllReferencesL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::RemoveAllReferencesL(
+        RCmConnectionMethodExt& aConnectionMethod )
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_REMOVEALLREFERENCESL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    if ( !aConnectionMethod.iCmConnectionMethodWrapper ||
+            !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+    TInt err = iCmManagerApi->RemoveAllReferences( connMethodHandle );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_REMOVEALLREFERENCESL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::ConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::ConnectionMethodL(
+        RArray<TUint32>& aCmArray,
+        TBool aCheckBearerType,
+        TBool aLegacyOnly,
+        TBool aEasyWlan )
+    {
+    OstTraceFunctionEntry0( DUP1_RCMMANAGEREXT_CONNECTIONMETHODL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TCmmIpcStructGetConnMethods parameters;
+    parameters.iCheckBearerType = aCheckBearerType;
+    parameters.iLegacyOnly = aLegacyOnly;
+    parameters.iEasyWlan = aEasyWlan;
+
+    iCmManagerApi->GetConnMethodsL( parameters, aCmArray );
+
+    OstTraceFunctionExit0( DUP1_RCMMANAGEREXT_CONNECTIONMETHODL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::AllDestinationsL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::AllDestinationsL( RArray<TUint32>& aDestArray )
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_ALLDESTINATIONSL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    iCmManagerApi->GetAllDestinationsL( aDestArray );
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_ALLDESTINATIONSL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::DestinationL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestinationExt RCmManagerExt::DestinationL( TUint32 aDestinationId )
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_DESTINATIONL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    // If client already has a handle open to this destination, give a
+    // reference to it.
+    CCmDestinationWrapper* destWrap = CCmDestinationWrapper::NewLC();
+    TInt existingHandle( 0 );
+    destWrap->GetDestWithIdL( iCmManagerApi, aDestinationId, existingHandle );
+    if ( existingHandle )
+        {
+        CleanupStack::PopAndDestroy( destWrap );
+        destWrap = iCmManagerApi->GetDestinationWrapperL( existingHandle );
+        destWrap->IncreaseReferenceCounter();
+        }
+    else
+        {
+        CleanupStack::Pop( destWrap );
+        }
+
+    RCmDestinationExt dest;
+    dest.iCmDestinationWrapper = destWrap;
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_DESTINATIONL_EXIT );
+    return dest;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::BearerPriorityArrayL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::BearerPriorityArrayL(
+        RArray<TBearerPriority>& aArray ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_BEARERPRIORITYARRAYL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    iCmManagerApi->GetBearerPriorityArrayL( aArray );
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_BEARERPRIORITYARRAYL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::UpdateBearerPriorityArrayL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::UpdateBearerPriorityArrayL(
+        const RArray<TBearerPriority>& aArray )
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_UPDATEBEARERPRIORITYARRAYL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    iCmManagerApi->SetBearerPriorityArrayL( aArray );
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_UPDATEBEARERPRIORITYARRAYL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::CleanupGlobalPriorityArray()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::CleanupGlobalPriorityArray(
+        RArray<TBearerPriority>& aArray ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_CLEANUPGLOBALPRIORITYARRAY_ENTRY );
+
+    for ( TInt i = 0; i < aArray.Count(); i++ )
+        {
+        delete aArray[i].iServiceType;
+        }
+    aArray.Reset();
+    aArray.Close();
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_CLEANUPGLOBALPRIORITYARRAY_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::SupportedBearersL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::SupportedBearersL( RArray<TUint32>& aArray ) const
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_SUPPORTEDBEARERSL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+    iCmManagerApi->GetSupportedBearersL( aArray );
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_SUPPORTEDBEARERSL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::EasyWlanIdL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmManagerExt::EasyWlanIdL()
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_EASYWLANIDL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TUint32 value( 0 );
+    TInt err = iCmManagerApi->GetEasyWlanId( value );
+    User::LeaveIfError( err );
+    OstTraceFunctionExit0( RCMMANAGEREXT_EASYWLANIDL_EXIT );
+    return value;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::ReadDefConnL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::ReadDefConnL( TCmDefConnValue& aDefConnSetting )
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_READDEFCONNL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmManagerApi->ReadDefaultConnection( aDefConnSetting );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_READDEFCONNL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::WriteDefConnL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::WriteDefConnL( const TCmDefConnValue& aDefConnSetting )
+    {
+    OstTraceFunctionEntry0( RCMMANAGEREXT_WRITEDEFCONNL_ENTRY );
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    TInt err = iCmManagerApi->WriteDefaultConnection( aDefConnSetting );
+    User::LeaveIfError( err );
+
+    OstTraceFunctionExit0( RCMMANAGEREXT_WRITEDEFCONNL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::CreateDestinationL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestinationExt RCmManagerExt::CreateDestinationL(
+        const TDesC& aName,
+        TUint32 aDestId )
+    {
+    OstTraceFunctionEntry0( DUP1_RCMMANAGEREXT_CREATEDESTINATIONL_ENTRY );
+
+    if ( aDestId == 0 )
+        {
+        return CreateDestinationL( aName );
+        }
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    if ( aName.Length() == 0 )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TUint32 adjustedDestId( 0 );
+    if ( aDestId > KCmmDestIdIntervalLegacyMin && aDestId < KCmmDestIdIntervalLegacyMax )
+        {
+        adjustedDestId = aDestId + KCmDefaultDestinationAPTagId;
+        }
+    else if ( aDestId > KCmmDestIdIntervalMin && aDestId < KCmmDestIdIntervalMax )
+        {
+        adjustedDestId = aDestId;
+        }
+    else
+        {
+        User::Leave( KErrArgument );
+        }
+
+    CCmDestinationWrapper* destWrap = CCmDestinationWrapper::NewLC();
+    destWrap->CreateDestByNameAndIdL( iCmManagerApi, aName, adjustedDestId );
+    CleanupStack::Pop( destWrap );
+
+    RCmDestinationExt dest;
+    dest.iCmDestinationWrapper = destWrap;
+
+    OstTraceFunctionExit0( DUP1_RCMMANAGEREXT_CREATEDESTINATIONL_EXIT );
+    return dest;
+    }
+
+//-----------------------------------------------------------------------------
+//  RCmManagerExt::CreateConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethodExt RCmManagerExt::CreateConnectionMethodL(
+        TUint32 aBearerType,
+        TUint32 aConnMethodId )
+    {
+    OstTraceFunctionEntry0( DUP1_RCMMANAGEREXT_CREATECONNECTIONMETHODL_ENTRY );
+
+    if ( aConnMethodId == 0 )
+        {
+        return CreateConnectionMethodL( aBearerType );
+        }
+
+    if ( !iCmManagerApi )
+        {
+        User::Leave( KErrBadHandle );
+        }
+    if ( !( aConnMethodId > KCmmConnMethodIdIntervalMin &&
+            aConnMethodId < KCmmConnMethodIdIntervalMax ) )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+    cmWrapper->CreateConnMethodWithIdL( iCmManagerApi, aBearerType, aConnMethodId );
+    CleanupStack::Pop( cmWrapper );
+
+    RCmConnectionMethodExt cm;
+    cm.iCmConnectionMethodWrapper = cmWrapper;
+
+    OstTraceFunctionExit0( DUP1_RCMMANAGEREXT_CREATECONNECTIONMETHODL_EXIT );
+    return cm;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/traces/OstTraceDefinitions.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+// #define OST_TRACE_COMPILER_IN_USE
+#include <opensystemtrace.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/traces/fixed_id.definitions	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,480 @@
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_FLOW=0x7
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_CCMCONNECTIONMETHODWRAPPER_ENTRY=0xf9
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_CCMCONNECTIONMETHODWRAPPER_EXIT=0xfa
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_CLOSESESSION_ENTRY=0x116
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_CLOSESESSION_EXIT=0x117
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODFROMDESTL_ENTRY=0x102
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODFROMDESTL_EXIT=0x103
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODFROMDESTWITHIDL_ENTRY=0x104
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODFROMDESTWITHIDL_EXIT=0x105
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODL_ENTRY=0x106
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODL_EXIT=0x107
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODWITHIDL_ENTRY=0x108
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODWITHIDL_EXIT=0x109
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_DELETE_ENTRY=0x113
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_GETBOOLATTRIBUTE_ENTRY=0x10b
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODFROMDESTWITHIDL_ENTRY=0x100
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODFROMDESTWITHIDL_EXIT=0x101
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODFROMDESTWITHINDEXL_ENTRY=0xfe
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODFROMDESTWITHINDEXL_EXIT=0xff
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODWITHIDL_ENTRY=0xfc
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODWITHIDL_EXIT=0xfd
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_GETHANDLE_ENTRY=0x118
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_GETINTATTRIBUTE_ENTRY=0x10a
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_GETMAINSESSION_ENTRY=0x119
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_GETMAINSESSION_EXIT=0x11a
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_GETSTRING8ATTRIBUTE_ENTRY=0x10d
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_GETSTRINGATTRIBUTE_ENTRY=0x10c
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_ISEQUAL_ENTRY=0x114
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_NEWLC_ENTRY=0xf8
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_NEWL_ENTRY=0xf7
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_SESSIONCONNECTED_ENTRY=0x115
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_SETBOOLATTRIBUTE_ENTRY=0x10f
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_SETINTATTRIBUTE_ENTRY=0x10e
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_SETSTRING8ATTRIBUTE_ENTRY=0x111
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_SETSTRINGATTRIBUTE_ENTRY=0x110
+[TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_UPDATE_ENTRY=0x112
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_ADDCONNECTIONMETHOD_ENTRY=0x9e
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_CCMDESTINATIONWRAPPER_ENTRY=0x8c
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_CCMDESTINATIONWRAPPER_EXIT=0x8d
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_CLOSESESSION_ENTRY=0xad
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_CLOSESESSION_EXIT=0xae
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_CONNECTIONMETHODCOUNT_ENTRY=0x97
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_CREATEDESTBYNAMEANDIDL_ENTRY=0x93
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_CREATEDESTBYNAMEANDIDL_EXIT=0x94
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_CREATEDESTBYNAMEL_ENTRY=0x91
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_CREATEDESTBYNAMEL_EXIT=0x92
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_DELETECONNECTIONMETHOD_ENTRY=0xa0
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_DELETE_ENTRY=0xa8
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_GETCONNMETHODASEMBEDDEDDESTL_ENTRY=0x95
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_GETCONNMETHODASEMBEDDEDDESTL_EXIT=0x96
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_GETDESTWITHIDL_ENTRY=0x8f
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_GETDESTWITHIDL_EXIT=0x90
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_GETELEMENTID_ENTRY=0x9b
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_GETHANDLE_ENTRY=0xaf
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_GETID_ENTRY=0x9a
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_GETMAINSESSION_ENTRY=0xb0
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_GETMAINSESSION_EXIT=0xb1
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_GETMETADATA_ENTRY=0x9c
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_GETNAME_ENTRY=0x99
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_GETPROTECTIONLEVEL_ENTRY=0x9d
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_ISCONNECTED_ENTRY=0xa9
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_ISEQUAL_ENTRY=0xab
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_ISHIDDEN_ENTRY=0xaa
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_MODIFYPRIORITY_ENTRY=0xa2
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_NEWLC_ENTRY=0x8b
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_NEWL_ENTRY=0x8a
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_PRIORITY_ENTRY=0x98
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_REMOVECONNECTIONMETHOD_ENTRY=0xa1
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_SESSIONCONNECTED_ENTRY=0xac
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_SETHIDDEN_ENTRY=0xa6
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_SETMETADATA_ENTRY=0xa4
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_SETNAME=0xa3
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_SETPROTECTION_ENTRY=0xa5
+[TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_UPDATE_ENTRY=0xa7
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMCONNECTIONMETHODWRAPPER_CCMCONNECTIONMETHODWRAPPER_ENTRY=0x11b
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMCONNECTIONMETHODWRAPPER_CCMCONNECTIONMETHODWRAPPER_EXIT=0x11c
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMDESTINATIONWRAPPER_CCMDESTINATIONWRAPPER_ENTRY=0xb2
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMDESTINATIONWRAPPER_CCMDESTINATIONWRAPPER_EXIT=0xb3
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMCONNECTIONMETHODEXT_OPERATOR_ENTRY=0x1db
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMCONNECTIONMETHODEXT_OPERATOR_EXIT=0x1dc
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMCONNECTIONMETHODEXT_RCMCONNECTIONMETHODEXT_ENTRY=0x1d5
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMCONNECTIONMETHODEXT_RCMCONNECTIONMETHODEXT_EXIT=0x1d6
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMCONNECTIONMETHOD_OPERATOR_ENTRY=0xf3
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMCONNECTIONMETHOD_RCMCONNECTIONMETHOD_ENTRY=0xdd
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMCONNECTIONMETHOD_RCMCONNECTIONMETHOD_EXIT=0xde
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMDESTINATIONEXT_CREATECONNECTIONMETHODL_ENTRY=0x199
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMDESTINATIONEXT_CREATECONNECTIONMETHODL_EXIT=0x19a
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMDESTINATIONEXT_OPERATOR_ENTRY=0x1b5
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMDESTINATIONEXT_OPERATOR_EXIT=0x1b6
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMDESTINATIONEXT_RCMDESTINATIONEXT_ENTRY=0x180
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMDESTINATIONEXT_RCMDESTINATIONEXT_EXIT=0x181
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMDESTINATION_CREATECONNECTIONMETHODL_ENTRY=0x6f
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMDESTINATION_CREATECONNECTIONMETHODL_EXIT=0x70
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMDESTINATION_OPERATOR_ENTRY=0x88
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMDESTINATION_RCMDESTINATION_ENTRY=0x5b
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMDESTINATION_RCMDESTINATION_EXIT=0x5c
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMMANAGERAPI_CONNECT_EXIT=0x32
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMMANAGEREXT_CONNECTIONMETHODL_ENTRY=0x164
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMMANAGEREXT_CONNECTIONMETHODL_EXIT=0x165
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMMANAGEREXT_CREATECONNECTIONMETHODL_ENTRY=0x17a
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMMANAGEREXT_CREATECONNECTIONMETHODL_EXIT=0x17b
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMMANAGEREXT_CREATEDESTINATIONL_ENTRY=0x178
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMMANAGEREXT_CREATEDESTINATIONL_EXIT=0x179
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMMANAGER_CONNECTIONMETHODL_ENTRY=0x1a
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMMANAGER_CREATECONNECTIONMETHODL_ENTRY=0x2d
+[TRACE]TRACE_FLOW[0x7]_DUP1_RCMMANAGER_CREATEDESTINATIONL_ENTRY=0x2c
+[TRACE]TRACE_FLOW[0x7]_DUP2_RCMCONNECTIONMETHODEXT_OPERATOR_ENTRY=0x1dd
+[TRACE]TRACE_FLOW[0x7]_DUP2_RCMCONNECTIONMETHODEXT_OPERATOR_EXIT=0x1de
+[TRACE]TRACE_FLOW[0x7]_DUP2_RCMCONNECTIONMETHODEXT_RCMCONNECTIONMETHODEXT_ENTRY=0x1d7
+[TRACE]TRACE_FLOW[0x7]_DUP2_RCMCONNECTIONMETHODEXT_RCMCONNECTIONMETHODEXT_EXIT=0x1d8
+[TRACE]TRACE_FLOW[0x7]_DUP2_RCMCONNECTIONMETHOD_OPERATOR_ENTRY=0xf4
+[TRACE]TRACE_FLOW[0x7]_DUP2_RCMCONNECTIONMETHOD_RCMCONNECTIONMETHOD_ENTRY=0xef
+[TRACE]TRACE_FLOW[0x7]_DUP2_RCMCONNECTIONMETHOD_RCMCONNECTIONMETHOD_EXIT=0xf0
+[TRACE]TRACE_FLOW[0x7]_DUP2_RCMDESTINATIONEXT_OPERATOR_ENTRY=0x1b7
+[TRACE]TRACE_FLOW[0x7]_DUP2_RCMDESTINATIONEXT_OPERATOR_EXIT=0x1b8
+[TRACE]TRACE_FLOW[0x7]_DUP2_RCMDESTINATIONEXT_RCMDESTINATIONEXT_ENTRY=0x1b3
+[TRACE]TRACE_FLOW[0x7]_DUP2_RCMDESTINATIONEXT_RCMDESTINATIONEXT_EXIT=0x1b4
+[TRACE]TRACE_FLOW[0x7]_DUP2_RCMDESTINATION_OPERATOR_ENTRY=0x89
+[TRACE]TRACE_FLOW[0x7]_DUP2_RCMDESTINATION_RCMDESTINATION_ENTRY=0x86
+[TRACE]TRACE_FLOW[0x7]_DUP2_RCMDESTINATION_RCMDESTINATION_EXIT=0x87
+[TRACE]TRACE_FLOW[0x7]_DUP2_RCMMANAGERAPI_CONNECT_EXIT=0x33
+[TRACE]TRACE_FLOW[0x7]_DUP3_RCMMANAGERAPI_CONNECT_EXIT=0x34
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CLOSE_ENTRY=0x131
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CLOSE_EXIT=0x132
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODFROMDESTL_ENTRY=0x129
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODFROMDESTL_EXIT=0x12a
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODFROMDESTWITHIDL_ENTRY=0x12b
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODFROMDESTWITHIDL_EXIT=0x12c
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODL_ENTRY=0x12d
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODL_EXIT=0x12e
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODWITHIDL_ENTRY=0x12f
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODWITHIDL_EXIT=0x130
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CONNECTANDGETCONNMETHODFROMDESTWITHIDL_ENTRY=0x127
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CONNECTANDGETCONNMETHODFROMDESTWITHIDL_EXIT=0x128
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CONNECTANDGETCONNMETHODFROMDESTWITHINDEXL_ENTRY=0x125
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CONNECTANDGETCONNMETHODFROMDESTWITHINDEXL_EXIT=0x126
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CONNECTANDGETCONNMETHODWITHIDL_ENTRY=0x123
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CONNECTANDGETCONNMETHODWITHIDL_EXIT=0x124
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_DELETE_ENTRY=0x13c
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_GETBOOLATTRIBUTE_ENTRY=0x134
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_GETHANDLE_ENTRY=0x121
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_GETINTATTRIBUTE_ENTRY=0x133
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_GETSTRING8ATTRIBUTE_ENTRY=0x136
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_GETSTRINGATTRIBUTE_ENTRY=0x135
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_ISEQUAL_ENTRY=0x13d
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_RCMCONNECTIONMETHODAPI_ENTRY=0x11d
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_RCMCONNECTIONMETHODAPI_EXIT=0x11e
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_SESSIONCONNECTED_ENTRY=0x11f
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_SESSIONCONNECTED_EXIT=0x120
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_SETBOOLATTRIBUTE_ENTRY=0x138
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_SETINTATTRIBUTE_ENTRY=0x137
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_SETSTRING8ATTRIBUTE_ENTRY=0x13a
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_SETSTRINGATTRIBUTE_ENTRY=0x139
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_UPDATE_ENTRY=0x13b
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_CLOSE_ENTRY=0x1bb
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_CLOSE_EXIT=0x1bc
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_CREATECOPYL_ENTRY=0x1bd
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_CREATECOPYL_EXIT=0x1be
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_DELETEL_ENTRY=0x1d1
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_DELETEL_EXIT=0x1d2
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_DESTINATIONL_ENTRY=0x1d3
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_DESTINATIONL_EXIT=0x1d4
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_GETBOOLATTRIBUTEL_ENTRY=0x1c1
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_GETBOOLATTRIBUTEL_EXIT=0x1c2
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_GETINTATTRIBUTEL_ENTRY=0x1bf
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_GETINTATTRIBUTEL_EXIT=0x1c0
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_GETSTRING8ATTRIBUTEL_ENTRY=0x1c5
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_GETSTRING8ATTRIBUTEL_EXIT=0x1c6
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_GETSTRINGATTRIBUTEL_ENTRY=0x1c3
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_GETSTRINGATTRIBUTEL_EXIT=0x1c4
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_OPERATOR_ENTRY=0x1d9
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_OPERATOR_EXIT=0x1da
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_RCMCONNECTIONMETHODEXT_ENTRY=0x1b9
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_RCMCONNECTIONMETHODEXT_EXIT=0x1ba
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_SETBOOLATTRIBUTEL_ENTRY=0x1c9
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_SETBOOLATTRIBUTEL_EXIT=0x1ca
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_SETINTATTRIBUTEL_ENTRY=0x1c7
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_SETINTATTRIBUTEL_EXIT=0x1c8
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_SETSTRING8ATTRIBUTEL_ENTRY=0x1cd
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_SETSTRING8ATTRIBUTEL_EXIT=0x1ce
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_SETSTRINGATTRIBUTEL_ENTRY=0x1cb
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_SETSTRINGATTRIBUTEL_EXIT=0x1cc
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_UPDATEL_ENTRY=0x1cf
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODEXT_UPDATEL_EXIT=0x1d0
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_CLOSE_ENTRY=0xdb
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_CLOSE_EXIT=0xdc
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_CREATECOPYL_ENTRY=0xf5
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_CREATECOPYL_EXIT=0xf6
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_DELETEL_ENTRY=0xed
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_DESTINATIONL_ENTRY=0xee
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_GETBOOLATTRIBUTEL_ENTRY=0xe0
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_GETINTATTRIBUTEL_ENTRY=0xdf
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_GETSTRING8ATTRIBUTEL_ENTRY=0xe2
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_GETSTRINGATTRIBUTEL_ENTRY=0xe1
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_OPERATOR_ENTRY=0xf1
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_OPERATOR_EXIT=0xf2
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_RCMCONNECTIONMETHOD_ENTRY=0xd9
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_RCMCONNECTIONMETHOD_EXIT=0xda
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_SETBOOLATTRIBUTEL_ENTRY=0xe5
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_SETBOOLATTRIBUTEL_EXIT=0xe6
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_SETINTATTRIBUTEL_ENTRY=0xe3
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_SETINTATTRIBUTEL_EXIT=0xe4
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_SETSTRING8ATTRIBUTEL_ENTRY=0xe9
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_SETSTRING8ATTRIBUTEL_EXIT=0xea
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_SETSTRINGATTRIBUTEL_ENTRY=0xe7
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_SETSTRINGATTRIBUTEL_EXIT=0xe8
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_UPDATEL_ENTRY=0xeb
+[TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHOD_UPDATEL_EXIT=0xec
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_ADDCONNECTIONMETHOD_ENTRY=0xcb
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_ADDEMBEDDEDDESTINATION_ENTRY=0xcc
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_CLOSE_ENTRY=0xc2
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_CLOSE_EXIT=0xc3
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_CONNECTANDCREATEDESTWITHNAMEANDIDL_ENTRY=0xbe
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_CONNECTANDCREATEDESTWITHNAMEANDIDL_EXIT=0xbf
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_CONNECTANDCREATEDESTWITHNAMEL_ENTRY=0xbc
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_CONNECTANDCREATEDESTWITHNAMEL_EXIT=0xbd
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_CONNECTANDGETCONNMETHODASEMBEDDEDDESTL_ENTRY=0xc0
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_CONNECTANDGETCONNMETHODASEMBEDDEDDESTL_EXIT=0xc1
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_CONNECTANDGETDESTWITHIDL_ENTRY=0xba
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_CONNECTANDGETDESTWITHIDL_EXIT=0xbb
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_CONNECTIONMETHODCOUNT_ENTRY=0xc4
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_DELETECONNECTIONMETHOD_ENTRY=0xcd
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_DELETE_ENTRY=0xd5
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_GETELEMENTID_ENTRY=0xc8
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_GETHANDLE_ENTRY=0xb8
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_GETID_ENTRY=0xc7
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_GETMETADATA_ENTRY=0xc9
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_GETNAME_ENTRY=0xc6
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_GETPROTECTIONLEVEL_ENTRY=0xca
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_ISCONNECTED_ENTRY=0xd6
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_ISEQUAL_ENTRY=0xd8
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_ISHIDDEN_ENTRY=0xd7
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_MODIFYPRIORITY_ENTRY=0xcf
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_PRIORITY_ENTRY=0xc5
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_RCMDESTINATIONAPI_ENTRY=0xb4
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_RCMDESTINATIONAPI_EXIT=0xb5
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_REMOVECONNECTIONMETHOD_ENTRY=0xce
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_SESSIONCONNECTED_ENTRY=0xb6
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_SESSIONCONNECTED_EXIT=0xb7
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_SETHIDDEN_ENTRY=0xd3
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_SETMETADATA_ENTRY=0xd1
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_SETNAME_ENTRY=0xd0
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_SETPROTECTION_ENTRY=0xd2
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_UPDATE_ENTRY=0xd4
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_ADDCONNECTIONMETHODL_ENTRY=0x19b
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_ADDCONNECTIONMETHODL_EXIT=0x19c
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_ADDEMBEDDEDDESTINATIONL_ENTRY=0x19d
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_ADDEMBEDDEDDESTINATIONL_EXIT=0x19e
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_CLOSE_ENTRY=0x17c
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_CLOSE_EXIT=0x17d
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_CONNECTIONMETHODBYIDL_ENTRY=0x188
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_CONNECTIONMETHODBYIDL_EXIT=0x189
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_CONNECTIONMETHODCOUNT_ENTRY=0x184
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_CONNECTIONMETHODCOUNT_EXIT=0x185
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_CONNECTIONMETHODL_ENTRY=0x186
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_CONNECTIONMETHODL_EXIT=0x187
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_CREATECONNECTIONMETHODL_ENTRY=0x197
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_CREATECONNECTIONMETHODL_EXIT=0x198
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_DELETECONNECTIONMETHODL_ENTRY=0x19f
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_DELETECONNECTIONMETHODL_EXIT=0x1a0
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_DELETELD_ENTRY=0x1af
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_DELETELD_EXIT=0x1b0
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_ELEMENTID_ENTRY=0x190
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_ELEMENTID_EXIT=0x191
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_ID_ENTRY=0x18e
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_ID_EXIT=0x18f
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_ISCONNECTEDL_ENTRY=0x1b1
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_ISCONNECTEDL_EXIT=0x1b2
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_ISHIDDEN_ENTRY=0x195
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_ISHIDDEN_EXIT=0x196
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_METADATAL_ENTRY=0x192
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_METADATAL_EXIT=0x193
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_MODIFYPRIORITYL_ENTRY=0x1a3
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_MODIFYPRIORITYL_EXIT=0x1a4
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_NAMELC_ENTRY=0x18c
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_NAMELC_EXIT=0x18d
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_OPERATOR_ENTRY=0x182
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_OPERATOR_EXIT=0x183
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_PRIORITYL_ENTRY=0x18a
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_PRIORITYL_EXIT=0x18b
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_PROTECTIONLEVEL_ENTRY=0x194
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_RCMDESTINATIONEXT_ENTRY=0x17e
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_RCMDESTINATIONEXT_EXIT=0x17f
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_REMOVECONNECTIONMETHODL_ENTRY=0x1a1
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_REMOVECONNECTIONMETHODL_EXIT=0x1a2
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_SETHIDDENL_ENTRY=0x1ab
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_SETHIDDENL_EXIT=0x1ac
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_SETMETADATAL_ENTRY=0x1a7
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_SETMETADATAL_EXIT=0x1a8
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_SETNAMEL_ENTRY=0x1a5
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_SETNAMEL_EXIT=0x1a6
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_SETPROTECTIONL_ENTRY=0x1a9
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_SETPROTECTIONL_EXIT=0x1aa
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_UPDATEL_ENTRY=0x1ad
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONEXT_UPDATEL_EXIT=0x1ae
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_ADDCONNECTIONMETHODL_ENTRY=0x71
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_ADDEMBEDDEDDESTINATIONL_ENTRY=0x72
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_CLOSE_ENTRY=0x57
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_CLOSE_EXIT=0x58
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_CONNECTIONMETHODBYIDL_ENTRY=0x62
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_CONNECTIONMETHODBYIDL_EXIT=0x63
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_CONNECTIONMETHODCOUNT_ENTRY=0x5f
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_CONNECTIONMETHODL_ENTRY=0x60
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_CONNECTIONMETHODL_EXIT=0x61
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_CREATECONNECTIONMETHODL_ENTRY=0x6d
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_CREATECONNECTIONMETHODL_EXIT=0x6e
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_DELETECONNECTIONMETHODL_ENTRY=0x73
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_DELETECONNECTIONMETHODL_EXIT=0x74
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_DELETELD_ENTRY=0x83
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_DELETELD_EXIT=0x84
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_ELEMENTID_ENTRY=0x68
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_ID_ENTRY=0x67
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_ISCONNECTEDL_ENTRY=0x85
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_ISHIDDEN_ENTRY=0x6c
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_METADATAL_ENTRY=0x69
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_METADATAL_EXIT=0x6a
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_MODIFYPRIORITYL_ENTRY=0x77
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_MODIFYPRIORITYL_EXIT=0x78
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_NAMELC_ENTRY=0x66
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_OPERATOR_ENTRY=0x5d
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_OPERATOR_EXIT=0x5e
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_PRIORITYL_ENTRY=0x64
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_PRIORITYL_EXIT=0x65
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_PROTECTIONLEVEL_ENTRY=0x6b
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_RCMDESTINATION_ENTRY=0x59
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_RCMDESTINATION_EXIT=0x5a
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_REMOVECONNECTIONMETHODL_ENTRY=0x75
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_REMOVECONNECTIONMETHODL_EXIT=0x76
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_SETHIDDENL_ENTRY=0x7f
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_SETHIDDENL_EXIT=0x80
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_SETMETADATAL_ENTRY=0x7b
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_SETMETADATAL_EXIT=0x7c
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_SETNAMEL_ENTRY=0x79
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_SETNAMEL_EXIT=0x7a
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_SETPROTECTIONL_ENTRY=0x7d
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_SETPROTECTIONL_EXIT=0x7e
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_UPDATEL_ENTRY=0x81
+[TRACE]TRACE_FLOW[0x7]_RCMDESTINATION_UPDATEL_EXIT=0x82
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_CLOSE_ENTRY=0x35
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_CLOSE_EXIT=0x36
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_CONNECT_ENTRY=0x30
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_CONNECT_EXIT=0x31
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_COPYCONNECTIONMETHOD_ENTRY=0x53
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_CREATETABLES_ENTRY=0x3d
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETALLDESTINATIONSL_ENTRY=0x48
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETALLDESTINATIONSL_EXIT=0x49
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETBEARERINFOBOOL_ENTRY=0x3f
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETBEARERINFOINT_ENTRY=0x3e
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETBEARERINFOSTRING8_ENTRY=0x41
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETBEARERINFOSTRING_ENTRY=0x40
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETBEARERPRIORITYARRAYL_ENTRY=0x4a
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETBEARERPRIORITYARRAYL_EXIT=0x4b
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETCONNECTIONMETHODINFOBOOL_ENTRY=0x43
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETCONNECTIONMETHODINFOINT_ENTRY=0x42
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETCONNECTIONMETHODINFOSTRING8_ENTRY=0x45
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETCONNECTIONMETHODINFOSTRING_ENTRY=0x44
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETCONNMETHODSL_ENTRY=0x46
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETCONNMETHODSL_EXIT=0x47
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETEASYWLANID_ENTRY=0x50
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETSUPPORTEDBEARERSL_ENTRY=0x4e
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_GETSUPPORTEDBEARERSL_EXIT=0x4f
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_MOVECONNECTIONMETHOD_ENTRY=0x54
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_RCMMANAGERAPI_ENTRY=0x2e
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_RCMMANAGERAPI_EXIT=0x2f
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_READDEFAULTCONNECTION_ENTRY=0x51
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_REMOVEALLREFERENCES_ENTRY=0x56
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_REMOVECONNECTIONMETHOD_ENTRY=0x55
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_REMOVECONNMETHODPOINTER_ENTRY=0x3b
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_REMOVECONNMETHODPOINTER_EXIT=0x3c
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_REMOVEDESTINATIONPOINTER_ENTRY=0x38
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_REMOVEDESTINATIONPOINTER_EXIT=0x39
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_SETBEARERPRIORITYARRAYL_ENTRY=0x4c
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_SETBEARERPRIORITYARRAYL_EXIT=0x4d
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_STORECONNMETHODPOINTER_ENTRY=0x3a
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_STOREDESTINATIONPOINTER_ENTRY=0x37
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGERAPI_WRITEDEFAULTCONNECTION_ENTRY=0x52
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_ALLDESTINATIONSL_ENTRY=0x168
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_ALLDESTINATIONSL_EXIT=0x169
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_BEARERPRIORITYARRAYL_ENTRY=0x16a
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_BEARERPRIORITYARRAYL_EXIT=0x16b
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_CLEANUPGLOBALPRIORITYARRAY_ENTRY=0x16e
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_CLEANUPGLOBALPRIORITYARRAY_EXIT=0x16f
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_CLOSE_ENTRY=0x13e
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_CLOSE_EXIT=0x13f
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_CONNECTIONMETHODL_ENTRY=0x162
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_CONNECTIONMETHODL_EXIT=0x163
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_COPYCONNECTIONMETHODL_ENTRY=0x15a
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_COPYCONNECTIONMETHODL_EXIT=0x15b
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_CREATECONNECTIONMETHODL_ENTRY=0x158
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_CREATECONNECTIONMETHODL_EXIT=0x159
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_CREATEDESTINATIONL_ENTRY=0x156
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_CREATEDESTINATIONL_EXIT=0x157
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_CREATETABLESANDOPENL_ENTRY=0x142
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_CREATETABLESANDOPENL_EXIT=0x143
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_DESTINATIONL_ENTRY=0x166
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_DESTINATIONL_EXIT=0x167
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_EASYWLANIDL_ENTRY=0x172
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_EASYWLANIDL_EXIT=0x173
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_GETBEARERINFOBOOLL_ENTRY=0x148
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_GETBEARERINFOBOOLL_EXIT=0x149
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_GETBEARERINFOINTL_ENTRY=0x146
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_GETBEARERINFOINTL_EXIT=0x147
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_GETBEARERINFOSTRING8L_ENTRY=0x14c
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_GETBEARERINFOSTRING8L_EXIT=0x14d
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_GETBEARERINFOSTRINGL_ENTRY=0x14a
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_GETBEARERINFOSTRINGL_EXIT=0x14b
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_GETCONNECTIONMETHODINFOBOOLL_ENTRY=0x150
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_GETCONNECTIONMETHODINFOBOOLL_EXIT=0x151
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_GETCONNECTIONMETHODINFOINTL_ENTRY=0x14e
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_GETCONNECTIONMETHODINFOINTL_EXIT=0x14f
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_GETCONNECTIONMETHODINFOSTRING8L_ENTRY=0x154
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_GETCONNECTIONMETHODINFOSTRING8L_EXIT=0x155
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_GETCONNECTIONMETHODINFOSTRINGL_ENTRY=0x152
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_GETCONNECTIONMETHODINFOSTRINGL_EXIT=0x153
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_MOVECONNECTIONMETHODL_ENTRY=0x15c
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_MOVECONNECTIONMETHODL_EXIT=0x15d
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_OPENLC_ENTRY=0x144
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_OPENLC_EXIT=0x145
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_OPENL_ENTRY=0x140
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_OPENL_EXIT=0x141
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_READDEFCONNL_ENTRY=0x174
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_READDEFCONNL_EXIT=0x175
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_REMOVEALLREFERENCESL_ENTRY=0x160
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_REMOVEALLREFERENCESL_EXIT=0x161
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_REMOVECONNECTIONMETHODL_ENTRY=0x15e
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_REMOVECONNECTIONMETHODL_EXIT=0x15f
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_SUPPORTEDBEARERSL_ENTRY=0x170
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_SUPPORTEDBEARERSL_EXIT=0x171
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_UPDATEBEARERPRIORITYARRAYL_ENTRY=0x16c
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_UPDATEBEARERPRIORITYARRAYL_EXIT=0x16d
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_WRITEDEFCONNL_ENTRY=0x176
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGEREXT_WRITEDEFCONNL_EXIT=0x177
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_ALLDESTINATIONSL_ENTRY=0x1c
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_ALLDESTINATIONSL_EXIT=0x1d
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_BEARERPRIORITYARRAYL_ENTRY=0x1f
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_BEARERPRIORITYARRAYL_EXIT=0x20
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_CLEANUPGLOBALPRIORITYARRAY_ENTRY=0x23
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_CLEANUPGLOBALPRIORITYARRAY_EXIT=0x24
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_CLOSE_ENTRY=0x5
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_CLOSE_EXIT=0x6
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_CONNECTIONMETHODL_ENTRY=0x9
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_CONNECTIONMETHODL_EXIT=0x1b
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_COPYCONNECTIONMETHODL_ENTRY=0x14
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_CREATECONNECTIONMETHODL_ENTRY=0x13
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_CREATEDESTINATIONL_ENTRY=0x12
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_CREATETABLESANDOPENL_ENTRY=0x7
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_CREATETABLESANDOPENL_EXIT=0x8
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_DESTINATIONL_ENTRY=0x1e
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_EASYWLANIDL_ENTRY=0x27
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_GETBEARERINFOBOOLL_ENTRY=0xb
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_GETBEARERINFOINTL_ENTRY=0xa
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_GETBEARERINFOSTRING8L_ENTRY=0xd
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_GETBEARERINFOSTRINGL_ENTRY=0xc
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_GETCONNECTIONMETHODINFOBOOLL_ENTRY=0xf
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_GETCONNECTIONMETHODINFOINTL_ENTRY=0xe
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_GETCONNECTIONMETHODINFOSTRING8L_ENTRY=0x11
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_GETCONNECTIONMETHODINFOSTRINGL_ENTRY=0x10
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_MOVECONNECTIONMETHODL_ENTRY=0x15
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_OPENLC_ENTRY=0x3
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_OPENLC_EXIT=0x4
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_OPENL_ENTRY=0x1
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_OPENL_EXIT=0x2
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_READDEFCONNL_ENTRY=0x28
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_READDEFCONNL_EXIT=0x29
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_REMOVEALLREFERENCESL_ENTRY=0x18
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_REMOVEALLREFERENCESL_EXIT=0x19
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_REMOVECONNECTIONMETHODL_ENTRY=0x16
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_REMOVECONNECTIONMETHODL_EXIT=0x17
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_SUPPORTEDBEARERSL_ENTRY=0x25
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_SUPPORTEDBEARERSL_EXIT=0x26
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_UPDATEBEARERPRIORITYARRAYL_ENTRY=0x21
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_UPDATEBEARERPRIORITYARRAYL_EXIT=0x22
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_WRITEDEFCONNL_ENTRY=0x2a
+[TRACE]TRACE_FLOW[0x7]_RCMMANAGER_WRITEDEFCONNL_EXIT=0x2b
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODCOPY_ENTRY=0xfb
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_ADDEMBEDDEDDESTINATION_ENTRY=0x9f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONWRAPPER_CREATEDESTCOPY_ENTRY=0x8e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_RCMCONNECTIONMETHODAPI_CONNECTANDCREATECONNMETHODCOPY_ENTRY=0x122
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_RCMDESTINATIONAPI_CONNECTANDCREATEDESTCOPY_ENTRY=0xb9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmcommon/inc/cmmclistatic.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Launches the Connection Method Manager Server.
+*
+*/
+
+
+#ifndef CMMCLISTATIC_H
+#define CMMCLISTATIC_H
+
+#include <e32std.h>
+
+const TUint KCmmDefaultMinHeapSize =  0x1000;  //  4K
+const TUint KCmmDefaultMaxHeapSize = 0x10000;  // 64K
+
+const TInt KCmmDefaultMessageSlots = 2;
+
+_LIT( KCmManagerStartupMutex, "CmManagerStartupMutex" );
+
+
+/**
+ * Class to handle CmManager server startup.
+ */
+class TCmManagerLauncher
+    {
+public:
+    static TInt LaunchServer(
+            const TDesC& aServerName,
+            const TDesC& aServerFileName,
+            const TUid& aServerUid3,
+            const TUint aWinsMinHeapSize = KCmmDefaultMinHeapSize,
+            const TUint aWinsMaxHeapSize = KCmmDefaultMaxHeapSize,
+            const TUint aWinsStackSize = KDefaultStackSize );
+
+private:
+    static TBool ServerStartupLock( RMutex& mutex, TInt& err );
+    static void ServerStartupUnlock( RMutex& mutex );
+    };
+
+#endif // CMMCLISTATIC_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmcommon/inc/cmmserverdefs.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,296 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Common definitions and enumerations for connection method manager server
+* (internal use).
+*
+*/
+
+
+#ifndef CMMSERVERDEFS_H
+#define CMMSERVERDEFS_H
+
+#include <e32base.h>
+
+static const TUid KCmmUid3 = { 0x20016A7A };
+
+/**
+ * CmManager server name.
+ */
+_LIT( KCmmServer, "!CmmServer" );
+
+/**
+ * CmManager server filename.
+ */
+_LIT( KCmmServerFile, "cmmserver" );
+
+const TInt KCmmServerStackSize    = 0x5000; //TODO, check if really used (in common code).
+const TInt KCmmServerInitHeapSize = 0x1000; //TODO, check if really used (in common code).
+const TInt KCmmServerMaxHeapSize  = 0x1000000; //TODO, check if really used (in common code).
+
+const TInt KBitsInOneByte = 8;
+const TInt KBitsInTwoBytes = 16;
+const TInt KBitsInThreeBytes = 24;
+
+/**
+ * The server version. A version must be specified when creating a session with
+ * the server.
+ */
+const TUint KCmmServerMajorVersionNumber = 0; //TODO, check if really used (in common code).
+const TUint KCmmServerMinorVersionNumber = 1; //TODO, check if really used (in common code).
+const TUint KCmmServerBuildVersionNumber = 1; //TODO, check if really used (in common code).
+
+/**
+ * Amount of time in microseconds that the server will wait before shutting
+ * down, after last client has gone.
+ */
+#if defined(__WINSCW__)
+const TUint KCmmShutdownDelay = 5000000; // 5 seconds, for testing purposes.
+#else
+const TUint KCmmShutdownDelay = 70000000; // 70 seconds.
+#endif
+
+const TUint32 KCmDefaultDestinationAPTagId = 0x1000;
+const TUint32 KCmMaxDestinationAPTagId = 0x1100;
+
+const TUint32 KCmmConnMethodIdIntervalMin = 0;
+const TUint32 KCmmConnMethodIdIntervalMax = 0x0100;
+
+const TUint32 KCmmDestIdIntervalLegacyMin = 0;
+const TUint32 KCmmDestIdIntervalLegacyMax = 0x0100;
+
+const TUint32 KCmmDestIdIntervalMin = 0x1000;
+const TUint32 KCmmDestIdIntervalMax = 0x1100;
+
+const TInt KCmmStringLengthMax = 1024; //TODO, need to find out correct value here
+
+const TUint32 KTemporaryIdCounterStart = 32768;
+
+const TUint32 KDestProtectionLevelMask = 0xF0000000;
+const TInt KBitsToShiftDestProtectionLevel = 28;
+
+
+// Buffer size for initial connection method query
+const TInt KCmmConnMethodAmountNormal = 64; //TODO, Check value
+// Maximum theoretical amount of connection methods
+const TInt KCmmConnMethodAmountMax = 256;
+
+// Buffer size for initial destination query
+const TInt KCmmDestAmountNormal = 32;
+// Maximum theoretical amount of connection methods
+const TInt KCmmDestAmountMax = 256;
+
+// Buffer size for supported bearers query
+const TInt KCmmBearerAmountNormal = 10;
+
+// Buffer size for bearer priority array query, first attempt
+const TInt KCmmDefaultBearerPriorityArraySize = 256;
+
+// iPriority:           2 16-bit values,
+// iUIPriority:         2 16-bit values,
+// iServiceType length: 1 16-bit value.
+const TInt KCmmBearerPriorityHeaderLength = 5;
+
+
+// Opcodes used in message passing between client and server
+enum TCmmRequests
+    {
+    ECmmGetBearerInfoInt                     = 0,
+    ECmmGetBearerInfoBool                    = 1,
+    ECmmGetBearerInfoString                  = 2,
+    ECmmGetBearerInfoString8                 = 3,
+    ECmmGetConnMethodArray                   = 4,
+    ECmmGetAllDestinations                   = 5,
+    ECmmGetBearerPriorityArray               = 6,
+    ECmmGetEasyWlanId                        = 7,
+    ECmmReadDefaultConnection                = 8,
+    ECmmReadGeneralConnectionSettings        = 9,
+    ECmmGetSupportedBearers                  = 10,
+
+    ECmmGetConnMethodInfoInt                 = 11,
+    ECmmGetConnMethodInfoBool                = 12,
+    ECmmGetConnMethodInfoString              = 13,
+    ECmmGetConnMethodInfoString8             = 14,
+
+    ECmmUpdateBearerPriorityArray            = 15,
+    ECmmWriteDefaultConnection               = 16,
+    ECmmWriteGeneralConnectionSettings       = 17,
+    ECmmCopyConnMethod                       = 18,
+    ECmmMoveConnMethod                       = 19,
+    ECmmRemoveConnMethod                     = 20,
+    ECmmRemoveAllReferences                  = 21, // Connection method becomes uncategorized.
+
+    // RCmDestination starts from 100
+    EDestGetDestination                      = 100,
+    EDestRefresh                             = 101,
+    EDestCloseDestination                    = 102,
+    EDestGetConnMethodCount                  = 103,
+    EDestGetConnMethodPriority               = 104,
+    EDestGetName                             = 105,
+    EDestGetId                               = 106,
+    EDestGetElementId                        = 107,
+    EDestMetadata                            = 108,
+    EDestGetProtectionLevel                  = 109,
+    EDestIsHidden                            = 110,
+    EDestIsEqual                             = 111,
+    EDestGetEmbeddedDestination              = 112,
+
+    EDestCreateDestinationWithName           = 113,
+    EDestCreateDestinationWithNameAndId      = 114,
+    EDestIsConnected                         = 115,
+    EDestAddConnMethod                       = 116,
+    EDestAddEmbeddedDestination              = 117,
+    EDestDeleteConnMethod                    = 118,
+    EDestRemoveConnMethod                    = 119,
+    EDestModifyPriority                      = 120,
+    EDestSetName                             = 121,
+    EDestSetMetadata                         = 122,
+    EDestSetProtection                       = 123,
+    EDestSetHidden                           = 124,
+    EDestUpdate                              = 125,
+    EDestDelete                              = 126,
+
+    //RCmConnectionMethod starts from 200
+    ECMGetConnMethodWithId                   = 200,
+    ECMRefresh                               = 201,
+    ECMGetConnMethodFromDestWithIndex        = 202,
+    ECMGetConnMethodFromDestWithId           = 203,
+    ECMCloseConnMethod                       = 204,
+    ECMIsEqual                               = 205,
+
+    ECMCreateConnMethod                      = 206,
+    ECMCreateConnMethodWithId                = 207,
+    ECMCreateConnMethodToDest                = 208,
+    ECMCreateConnMethodToDestWithId          = 209,
+    ECMCreateCopyOfExisting                  = 210,
+
+    ECMGetIntAttribute                       = 211,
+    ECMGetBoolAttribute                      = 212,
+    ECMGetStringAttribute                    = 213,
+    ECMGetString8Attribute                   = 214,
+
+    ECMSetIntAttribute                       = 215,
+    ECMSetBoolAttribute                      = 216,
+    ECMSetStringAttribute                    = 217,
+    ECMSetString8Attribute                   = 218,
+    ECMDelete                                = 219,
+    ECMUpdate                                = 220
+    };
+
+// Panic categories
+_LIT( KCmmPanicCategoryApi, "CmManager API" );
+
+// Panic codes
+enum TCmmServerPanic
+    {
+    ECreateTrapCleanup = 1,
+    ECreateServer,
+    EBadDescriptor,
+    EBadRequest,
+    EInvalidImportState,
+    EDestNotConnectedToServer = 201
+    };
+
+// Status flag values for database records.
+enum TCmmRecordStatus
+    {
+    ECmmRecordStatusBlank = 0x0001,
+    ECmmRecordStatusLoaded = 0x0002, // Loaded and up-to-date.
+    ECmmRecordStatusExpired = 0x0004, // Loaded but out-of-date. //TODO, should this be cache side only?
+    ECmmRecordStatusModified = 0x0008, // Loaded and modified (Session side only).
+    ECmmRecordStatusUnsaved = 0x0010 // Doesn't yet exist in database (Cache side only).
+    };
+
+// Status flag values for connection method instances.
+enum TCmmConnMethodStatus
+    {
+    ECmmConnMethodStatusNotSaved = 1, // Connection method doesn't yet exist in database (cache side only).
+    ECmmConnMethodStatusValid = 2, // Connection method exists in database and sessions can open handles to it.
+    ECmmConnMethodStatusChanged = 3, // Contents modified, but not saved (session side only).
+    ECmmConnMethodStatusToBeDeleted = 4 // Connection method will be deleted when reference count goes to 0 (cache side only).
+    };
+
+// Status flag values for destination instances.
+enum TCmmDestinationStatus
+    {
+    ECmmDestinationStatusNotSaved = 1, // Destination doesn't yet exist in database (Cache side only).
+    ECmmDestinationStatusValid = 2, // Destination exists in database and sessions can open handles to it.
+    ECmmDestinationStatusChanged = 3, // Contents modified, but not saved (Session side only).
+    ECmmDestinationStatusToBeDeleted = 4 // Destination will be deleted when reference count goes to 0 (cache side only).
+    };
+
+// Identifiers for different destination related database records for internal use.
+enum TCmmDbRecords
+    {
+    ECmmDestNetworkRecord = 1,  //
+    ECmmDestApRecord,           //
+    ECmmDestMetadataRecord,     // CCDSNAPMetadataRecord
+    ECmmDbSnapRecord,           // CCDDataMobilitySelectionPolicyRecord
+    ECmmDbBearerPriorityRecord, //
+    ECmmDbDefConnRecord         //
+    };
+
+NONSHARABLE_CLASS( TCmmIpcStructGetConnMethods )
+    {
+public:
+    TBool iCheckBearerType;
+    TBool iLegacyOnly;
+    TBool iEasyWlan;
+    };
+
+NONSHARABLE_CLASS( TCmmIpcStructMoveConnMethod )
+    {
+public:
+    TInt iSourceDestHandle;
+    TInt iTargetDestHandle;
+    TInt iConnMethodHandle;
+    TInt iIndex;
+    };
+
+// Prefix 'Cmm' used to avoid any future problems or name overlapping with
+// other similar implementations.
+template <class T>
+class CmmCleanupResetAndDestroy
+    {
+public:
+    inline static void PushL( T& aRef );
+
+private:
+    static void ResetAndDestroy( TAny *aPtr );
+    };
+
+template <class T>
+inline void CmmCleanupResetAndDestroyPushL( T& aRef );
+
+template <class T>
+inline void CmmCleanupResetAndDestroy<T>::PushL( T& aRef )
+    {
+    CleanupStack::PushL( TCleanupItem( &ResetAndDestroy, &aRef ) );
+    }
+
+template <class T>
+void CmmCleanupResetAndDestroy<T>::ResetAndDestroy( TAny *aPtr )
+    {
+    (STATIC_CAST(T*,aPtr))->ResetAndDestroy();
+    }
+
+template <class T>
+inline void CmmCleanupResetAndDestroyPushL( T& aRef )
+    {
+    CmmCleanupResetAndDestroy<T>::PushL( aRef );
+    }
+
+#endif // CMMSERVERDEFS_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmcommon/src/cmmclistatic.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,137 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Launches the Connection Method Manager Server.
+*
+*/
+
+
+#include "cmmclistatic.h"
+
+/**
+ * LaunchServer
+ *
+ * Launches the CmManager server.
+ *
+ * Return KErrNone if CmManager server is launched successfully,
+ * otherwise one of the system wide error codes.
+ */
+TInt TCmManagerLauncher::LaunchServer(
+        const TDesC& aServerName,
+        const TDesC& aServerFileName,
+        const TUid& aServerUid3,
+        const TUint aWinsMinHeapSize,
+        const TUint aWinsMaxHeapSize,
+        const TUint aWinsStackSize )
+    {
+    RMutex mutex;
+    TInt err( KErrNone );
+    const TUidType serverUid( KNullUid, KNullUid, aServerUid3 );
+
+    //
+    // EPOC and EKA2 is easy, we just create a new server process. Simultaneous
+    // launching of two such processes should be detected when the second one
+    // attempts to create the server object, failing with KErrAlreadyExists.
+    //
+
+    // Try obtaining a lock. If that fails, server has already been started.
+    // If something fails with obtaining the lock, propagate the error to user.
+    if ( !ServerStartupLock( mutex, err ) )
+        {
+        ServerStartupUnlock( mutex );
+        return err;
+        }
+
+    RProcess server;
+    err = server.Create( aServerFileName, KNullDesC, serverUid );
+    (void)aServerName;
+    (void)aWinsMinHeapSize;
+    (void)aWinsMaxHeapSize;
+    (void)aWinsStackSize;
+
+    if ( err != KErrNone )
+        {
+        ServerStartupUnlock( mutex );
+        return err;
+        }
+
+    TRequestStatus stat;
+    server.Rendezvous( stat );
+    if ( stat != KRequestPending )
+        {
+        server.Kill( 0 ); // Abort startup.
+        }
+    else
+        {
+        server.Resume(); // Logon OK - start the server.
+        }
+    User::WaitForRequest( stat ); // Wait for start or death.
+    // We can't use the 'exit reason' if the server panicked as this
+    // is the panic 'reason' and may be '0' which cannot be distinguished
+    // from KErrNone.
+    err = ( server.ExitType() == EExitPanic ) ? KErrGeneral : stat.Int();
+    server.Close();
+
+    ServerStartupUnlock( mutex );
+    return err;
+    }
+
+/**
+ * ServerStartupLock
+ *
+ * Returns true if obtains the lock without waiting. That is, the
+ * mutex is not created before this call.
+ *
+ * Return false if mutex is created.
+ */
+TBool TCmManagerLauncher::ServerStartupLock( RMutex& mutex, TInt& err )
+    {
+    TInt retval( ETrue );
+
+    // Create handle to mutex.
+    err = mutex.CreateGlobal( KCmManagerStartupMutex );
+    if ( err != KErrNone )
+        {
+        // Mutex already created, wait until done.
+        retval = EFalse;
+        err = mutex.OpenGlobal( KCmManagerStartupMutex );
+        if ( err == KErrNone )
+            {
+            // Wait for completion
+            mutex.Wait();
+            // Server already running, return.
+            return EFalse;
+            }
+        // Else opening failed, err will be propagated to user.
+        }
+    // Else Obtained lock without waiting (retval is ETrue).
+    // The next call completes instantly.
+    mutex.Wait();
+    return retval;
+    }
+
+/**
+ * ServerStartupUnlock
+ *
+ * Frees and closes the mutex.
+ */
+void TCmManagerLauncher::ServerStartupUnlock( RMutex& mutex )
+    {
+    // Let others run
+    mutex.Signal();
+    // Destroy handle
+    mutex.Close();
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmpluginbase/BWinsCw/cmmpluginbaseu.def	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,27 @@
+EXPORTS
+	?GetBoolAttributeL@CCmPluginBaseEng@@QAEHKPAVCCmClientPluginInstance@@@Z @ 1 NONAME ; int CCmPluginBaseEng::GetBoolAttributeL(unsigned long, class CCmClientPluginInstance *)
+	?CreateNewL@CCmPluginBaseEng@@QAEXK@Z @ 2 NONAME ; void CCmPluginBaseEng::CreateNewL(unsigned long)
+	?SetStringAttributeL@CCmPluginBaseEng@@QAEXKABVTDesC16@@PAVCCmClientPluginInstance@@@Z @ 3 NONAME ; void CCmPluginBaseEng::SetStringAttributeL(unsigned long, class TDesC16 const &, class CCmClientPluginInstance *)
+	?GetGenericTableIdsToBeObserved@CCmPluginBaseEng@@QBEXAAV?$RArray@K@@@Z @ 4 NONAME ; void CCmPluginBaseEng::GetGenericTableIdsToBeObserved(class RArray<unsigned long> &) const
+	?GetPluginDataL@CCmPluginBaseEng@@QAEXPAVCCmClientPluginInstance@@@Z @ 5 NONAME ; void CCmPluginBaseEng::GetPluginDataL(class CCmClientPluginInstance *)
+	?SetString8AttributeL@CCmPluginBaseEng@@QAEXKABVTDesC8@@PAVCCmClientPluginInstance@@@Z @ 6 NONAME ; void CCmPluginBaseEng::SetString8AttributeL(unsigned long, class TDesC8 const &, class CCmClientPluginInstance *)
+	?GetIntAttributeL@CCmPluginBaseEng@@QAEKKPAVCCmClientPluginInstance@@@Z @ 7 NONAME ; unsigned long CCmPluginBaseEng::GetIntAttributeL(unsigned long, class CCmClientPluginInstance *)
+	?CheckIfNameModifiedL@CCmPluginBaseEng@@IBEXPAVCCDRecordBase@CommsDat@@0@Z @ 8 NONAME ; void CCmPluginBaseEng::CheckIfNameModifiedL(class CommsDat::CCDRecordBase *, class CommsDat::CCDRecordBase *) const
+	??1CCmPluginBaseEng@@UAE@XZ @ 9 NONAME ; CCmPluginBaseEng::~CCmPluginBaseEng(void)
+	?CreateCopyL@CCmPluginBaseEng@@QAEPAV1@PAVCCmClientPluginInstance@@@Z @ 10 NONAME ; class CCmPluginBaseEng * CCmPluginBaseEng::CreateCopyL(class CCmClientPluginInstance *)
+	?SetIntAttributeL@CCmPluginBaseEng@@QAEXKKPAVCCmClientPluginInstance@@@Z @ 11 NONAME ; void CCmPluginBaseEng::SetIntAttributeL(unsigned long, unsigned long, class CCmClientPluginInstance *)
+	?ReLoadL@CCmPluginBaseEng@@QAEXXZ @ 12 NONAME ; void CCmPluginBaseEng::ReLoadL(void)
+	?NewL@CCmClientPluginInstance@@SAPAV1@XZ @ 13 NONAME ; class CCmClientPluginInstance * CCmClientPluginInstance::NewL(void)
+	?ConstructL@CCmPluginBaseEng@@MAEXXZ @ 14 NONAME ; void CCmPluginBaseEng::ConstructL(void)
+	??0CCmPluginBaseEng@@IAE@PAVTCmPluginInitParam@@@Z @ 15 NONAME ; CCmPluginBaseEng::CCmPluginBaseEng(class TCmPluginInitParam *)
+	?NewLC@CCmClientPluginInstance@@SAPAV1@XZ @ 16 NONAME ; class CCmClientPluginInstance * CCmClientPluginInstance::NewLC(void)
+	?SetBoolAttributeL@CCmPluginBaseEng@@QAEXKHPAVCCmClientPluginInstance@@@Z @ 17 NONAME ; void CCmPluginBaseEng::SetBoolAttributeL(unsigned long, int, class CCmClientPluginInstance *)
+	?LoadL@CCmPluginBaseEng@@QAEXK@Z @ 18 NONAME ; void CCmPluginBaseEng::LoadL(unsigned long)
+	?DeleteL@CCmPluginBaseEng@@UAEXXZ @ 19 NONAME ; void CCmPluginBaseEng::DeleteL(void)
+	?CheckDNSServerAddressL@CCmPluginBaseEng@@IAEXHAAV?$CMDBField@VTDesC16@@@CommsDat@@0AAV?$CMDBField@H@3@@Z @ 20 NONAME ; void CCmPluginBaseEng::CheckDNSServerAddressL(int, class CommsDat::CMDBField<class TDesC16> &, class CommsDat::CMDBField<class TDesC16> &, class CommsDat::CMDBField<int> &)
+	??0TCmPluginInitParam@@QAE@AAVCMDBSession@CommsDat@@@Z @ 21 NONAME ; TCmPluginInitParam::TCmPluginInitParam(class CommsDat::CMDBSession &)
+	?GetString8AttributeL@CCmPluginBaseEng@@QAEPAVHBufC8@@KPAVCCmClientPluginInstance@@@Z @ 22 NONAME ; class HBufC8 * CCmPluginBaseEng::GetString8AttributeL(unsigned long, class CCmClientPluginInstance *)
+	?UpdateL@CCmPluginBaseEng@@UAEXPAVCCmClientPluginInstance@@@Z @ 23 NONAME ; void CCmPluginBaseEng::UpdateL(class CCmClientPluginInstance *)
+	?GetStringAttributeL@CCmPluginBaseEng@@QAEPAVHBufC16@@KPAVCCmClientPluginInstance@@@Z @ 24 NONAME ; class HBufC16 * CCmPluginBaseEng::GetStringAttributeL(unsigned long, class CCmClientPluginInstance *)
+	??1CCmClientPluginInstance@@UAE@XZ @ 25 NONAME ; CCmClientPluginInstance::~CCmClientPluginInstance(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmpluginbase/EABI/cmmpluginbaseu.def	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,34 @@
+EXPORTS
+	_ZN16CCmPluginBaseEng10ConstructLEv @ 1 NONAME
+	_ZN16CCmPluginBaseEng10CreateNewLEm @ 2 NONAME
+	_ZN16CCmPluginBaseEng11CreateCopyLEP23CCmClientPluginInstance @ 3 NONAME
+	_ZN16CCmPluginBaseEng14GetPluginDataLEP23CCmClientPluginInstance @ 4 NONAME
+	_ZN16CCmPluginBaseEng16GetIntAttributeLEmP23CCmClientPluginInstance @ 5 NONAME
+	_ZN16CCmPluginBaseEng16SetIntAttributeLEmmP23CCmClientPluginInstance @ 6 NONAME
+	_ZN16CCmPluginBaseEng17GetBoolAttributeLEmP23CCmClientPluginInstance @ 7 NONAME
+	_ZN16CCmPluginBaseEng17SetBoolAttributeLEmiP23CCmClientPluginInstance @ 8 NONAME
+	_ZN16CCmPluginBaseEng19GetStringAttributeLEmP23CCmClientPluginInstance @ 9 NONAME
+	_ZN16CCmPluginBaseEng19SetStringAttributeLEmRK7TDesC16P23CCmClientPluginInstance @ 10 NONAME
+	_ZN16CCmPluginBaseEng20GetString8AttributeLEmP23CCmClientPluginInstance @ 11 NONAME
+	_ZN16CCmPluginBaseEng20SetString8AttributeLEmRK6TDesC8P23CCmClientPluginInstance @ 12 NONAME
+	_ZN16CCmPluginBaseEng22CheckDNSServerAddressLEiRN8CommsDat9CMDBFieldI7TDesC16EES4_RNS1_IiEE @ 13 NONAME
+	_ZN16CCmPluginBaseEng5LoadLEm @ 14 NONAME
+	_ZN16CCmPluginBaseEng7DeleteLEv @ 15 NONAME
+	_ZN16CCmPluginBaseEng7ReLoadLEv @ 16 NONAME
+	_ZN16CCmPluginBaseEng7UpdateLEP23CCmClientPluginInstance @ 17 NONAME
+	_ZN16CCmPluginBaseEngC2EP18TCmPluginInitParam @ 18 NONAME
+	_ZN16CCmPluginBaseEngD0Ev @ 19 NONAME
+	_ZN16CCmPluginBaseEngD1Ev @ 20 NONAME
+	_ZN16CCmPluginBaseEngD2Ev @ 21 NONAME
+	_ZN18TCmPluginInitParamC1ERN8CommsDat11CMDBSessionE @ 22 NONAME
+	_ZN18TCmPluginInitParamC2ERN8CommsDat11CMDBSessionE @ 23 NONAME
+	_ZN23CCmClientPluginInstance4NewLEv @ 24 NONAME
+	_ZN23CCmClientPluginInstance5NewLCEv @ 25 NONAME
+	_ZN23CCmClientPluginInstanceD0Ev @ 26 NONAME
+	_ZN23CCmClientPluginInstanceD1Ev @ 27 NONAME
+	_ZN23CCmClientPluginInstanceD2Ev @ 28 NONAME
+	_ZNK16CCmPluginBaseEng20CheckIfNameModifiedLEPN8CommsDat13CCDRecordBaseES2_ @ 29 NONAME
+	_ZNK16CCmPluginBaseEng30GetGenericTableIdsToBeObservedER6RArrayImE @ 30 NONAME
+	_ZTI16CCmPluginBaseEng @ 31 NONAME
+	_ZTV16CCmPluginBaseEng @ 32 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmpluginbase/group/bld.inf	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2009-2010 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:  
+*         Build file for cmpluginbase.
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+// export iby files
+../rom/cmmpluginbase.iby  CORE_MW_LAYER_IBY_EXPORT_PATH(cmmpluginbase.iby)
+
+PRJ_MMPFILES
+cmmpluginbase.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmpluginbase/group/cmmpluginbase.mmp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2009-2010 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:
+*        Project definition file for project cmpluginbase
+*
+*/
+
+#include <data_caging_paths.hrh>
+#include <platform_paths.hrh>
+
+TARGET          cmmpluginbase.dll
+TARGETTYPE      dll
+UID             0x1000008d 0x20016A84
+CAPABILITY      CAP_GENERAL_DLL
+VENDORID        VID_DEFAULT
+
+SOURCEPATH      ../src
+
+SOURCE          ccmpluginbaseeng.cpp
+SOURCE          ccmpluginbaseengtextresolver.cpp
+
+// Component specific internal headers
+USERINCLUDE     ../inc
+USERINCLUDE     ../../cmmserver/inc
+USERINCLUDE     ../traces
+
+// ADO specific internal headers
+SYSTEMINCLUDE   ../../../../inc
+
+//Macro to /epoc32 headers
+MW_LAYER_SYSTEMINCLUDE
+
+LIBRARY     euser.lib
+LIBRARY     commsdat.lib
+LIBRARY     featmgr.lib
+LIBRARY     esock.lib
+LIBRARY     ws32.lib
+LIBRARY     cmmanagerdatabase.lib
+LIBRARY     insock.lib
+LIBRARY     sysutil.lib
+LIBRARY     ecom.lib
+LIBRARY     efsrv.lib
+LIBRARY     hbcore.lib
+
+#if defined(ARMCC)
+    DEFFILE ../EABI/cmmpluginbase.def
+#else
+    DEFFILE ../BWinsCw/cmmpluginbase.def
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmpluginbase/inc/ccmpluginbaseengtextresolver.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2010 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:
+* Provides functionality for text resolving
+*
+*/
+
+#ifndef CMPLUGINBASEENGTEXTRESOLVER_H
+#define CMPLUGINBASEENGTEXTRESOLVER_H
+
+/**
+ *  Utility class for resolving localised text.
+ */
+class CCmPluginBaseEngTextResolver
+    {
+public:    
+    /**
+     * Resolves localised text from cmmanager translation file.
+     * @param aTextId Text Id from TS file
+     * @return Resolved text
+     */
+    static HBufC* ResolveTextL( const TDesC& aTextId );        
+    };
+
+#endif // CMPLUGINBASEENGTEXTRESOLVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmpluginbase/rom/cmmpluginbase.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2009-2010 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: 
+* cmmpluginbase.dll to ROM.
+*
+*/
+
+#ifndef CMMPLUGINBASE_IBY__
+#define CMMPLUGINBASE_IBY__
+
+file=ABI_DIR\BUILD_DIR\cmmpluginbase.dll     SHARED_LIB_DIR\cmmpluginbase.dll
+
+
+#endif // CMMAPI_IBY__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,2968 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*        Implementation of plugin base class
+*
+*/
+
+
+#include <datamobilitycommsdattypes.h>
+#include <cmpluginbaseeng.h>
+#include <cmpsettingsconsts.h>
+#include <FeatMgr.h>
+
+#include "ccmpluginbaseengtextresolver.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "ccmpluginbaseengTraces.h"
+#endif
+
+
+using namespace CMManager;
+using namespace CommsDat;
+
+const TInt KApMaxConnNameLength = 30;
+_LIT( KFormatPostfix, "%02d" );
+_LIT( KFormatLargePostfix, "%d" );
+_LIT( KFormatNameWithPostfix, "%S(%S)" );
+_LIT( KFormatNoPostfix, "%S" );
+const TInt KMaxPostfixLength = 5;
+
+_LIT( KDefWapGatewayIpAddress, "0.0.0.0" );
+
+_LIT( KLocationName, "Mobile" );
+
+_LIT( KDefaultIapName, "Connection Method" );
+
+
+EXPORT_C CCmClientPluginInstance* CCmClientPluginInstance::NewLC()
+    {
+    OstTraceFunctionEntry0( CCMCLIENTPLUGININSTANCE_NEWLC_ENTRY );
+
+    CCmClientPluginInstance* self = new( ELeave ) CCmClientPluginInstance();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+
+    OstTraceFunctionExit0( CCMCLIENTPLUGININSTANCE_NEWLC_EXIT );
+    return self;
+    }
+
+EXPORT_C CCmClientPluginInstance* CCmClientPluginInstance::NewL()
+    {
+    OstTraceFunctionEntry0( CCMCLIENTPLUGININSTANCE_NEWL_ENTRY );
+
+    CCmClientPluginInstance* self = CCmClientPluginInstance::NewLC();
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMCLIENTPLUGININSTANCE_NEWL_EXIT );
+    return self;
+    }
+
+CCmClientPluginInstance::CCmClientPluginInstance()
+        :
+        iNamingMethod( ENamingUnique ),
+        iLocationEnabled( EFalse ),
+        iIapId( 0 )
+    {
+    }
+
+EXPORT_C CCmClientPluginInstance::~CCmClientPluginInstance()
+    {
+    OstTraceFunctionEntry0( CCMCLIENTPLUGININSTANCE_CCMCLIENTPLUGININSTANCE_ENTRY );
+
+    iGenRecordArray.ResetAndDestroy();
+    iBearerSpecRecordArray.ResetAndDestroy();
+
+    OstTraceFunctionExit0( CCMCLIENTPLUGININSTANCE_CCMCLIENTPLUGININSTANCE_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CCmClientPluginInstance::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMCLIENTPLUGININSTANCE_CONSTRUCTL_ENTRY );
+    OstTraceFunctionExit0( CCMCLIENTPLUGININSTANCE_CONSTRUCTL_EXIT );
+    }
+
+
+// ---------------------------------------------------------------------------
+// TCmPluginInitParam::TCmPluginInitParam
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TCmPluginInitParam::TCmPluginInitParam( CommsDat::CMDBSession& aSession )
+        :
+        iSessionRef( aSession )
+    {
+    OstTraceFunctionEntry0( TCMPLUGININITPARAM_TCMPLUGININITPARAM_ENTRY );
+
+    iNotused1 = NULL;
+    iNotused2 = NULL;
+
+    OstTraceFunctionExit0( TCMPLUGININITPARAM_TCMPLUGININITPARAM_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::CCmPluginBaseEng
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CCmPluginBaseEng::CCmPluginBaseEng( TCmPluginInitParam *aInitParam )
+        :
+        iSession( aInitParam->iSessionRef ),
+        iNamingMethod( ENamingUnique )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_CCMPLUGINBASEENG_ENTRY );
+
+    iDtor_ID_Key.iUid = 0;
+    iBearerType = 0;
+
+    iIapRecord = NULL;
+    iProxyRecord = NULL;
+    iServiceRecord = NULL;
+    iNetworkRecord = NULL;
+    iLocationRecord = NULL;
+    iWapAPRecord = NULL;
+    iWapIPBearerRecord = NULL;
+    iMetaDataRecord = NULL;
+
+    iIapId = 0;
+    iMetadataTableId = 0;
+    iLocationEnabled = EFalse;
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_CCMPLUGINBASEENG_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::~CCmPluginBaseEng
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CCmPluginBaseEng::~CCmPluginBaseEng()
+    {
+    OstTraceFunctionEntry0( DUP1_CCMPLUGINBASEENG_CCMPLUGINBASEENG_ENTRY );
+
+    iIapId = 0;
+    delete iIapRecord; iIapRecord = NULL;
+    delete iProxyRecord; iProxyRecord = NULL;
+    delete iServiceRecord; iServiceRecord = NULL;
+    delete iNetworkRecord; iNetworkRecord = NULL;
+    delete iLocationRecord; iLocationRecord = NULL;
+    delete iWapAPRecord; iWapAPRecord = NULL;
+    delete iWapIPBearerRecord; iWapIPBearerRecord = NULL;
+    delete iMetaDataRecord; iMetaDataRecord = NULL;
+
+    iLocationEnabled = EFalse;
+
+    REComSession::DestroyedImplementation( iDtor_ID_Key );
+
+    OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_CCMPLUGINBASEENG_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::ConstructL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CCmPluginBaseEng::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_CONSTRUCTL_ENTRY );
+
+    TRAPD( err, iMetadataTableId = CCDIAPMetadataRecord::TableIdL( iSession ) );
+    if ( err )
+        {
+        if ( err == KErrNotFound )
+            {
+            iMetadataTableId = CCDIAPMetadataRecord::CreateTableL( iSession );
+            }
+        else
+            {
+            User::LeaveIfError( err );
+            }
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_CONSTRUCTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::UpdateL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CCmPluginBaseEng::UpdateL(
+        CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATEL_ENTRY );
+
+    PrepareToUpdateRecordsL( aClientPluginInstance );
+
+    UpdateServiceRecordL( aClientPluginInstance );
+    UpdateLocationRecordL( aClientPluginInstance );
+    UpdateNetworkRecordL( aClientPluginInstance );
+    UpdateIAPRecordL( aClientPluginInstance );
+    UpdateWapRecordL( aClientPluginInstance );
+    UpdateProxyRecordL( aClientPluginInstance );
+    UpdateMetadataRecordL( aClientPluginInstance );
+    UpdateConnPrefSettingL();
+
+    UpdateBearerRecordsL(
+            aClientPluginInstance->iGenRecordArray,
+            aClientPluginInstance->iBearerSpecRecordArray );
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Delete this connection methond.
+// Record ids are checked to be sure that we delete only records
+// that were loaded before.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CCmPluginBaseEng::DeleteL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_DELETEL_ENTRY );
+
+    PrepareToDeleteRecordsL();
+
+    if ( iIapRecord && iIapRecord->RecordId() )
+        {
+        iIapRecord->DeleteL( iSession );
+        }
+
+    if ( iProxyRecord && iProxyRecord->RecordId() )
+        {
+        iProxyRecord->DeleteL( iSession );
+        }
+
+    if ( iServiceRecord && iServiceRecord->RecordId() )
+        {
+        iServiceRecord->DeleteL( iSession );
+        }
+
+    if ( iNetworkRecord && iNetworkRecord->RecordId() )
+        {
+        iNetworkRecord->DeleteL( iSession );
+        }
+
+    if ( iLocationRecord && iLocationRecord->RecordId() )
+        {
+        iLocationRecord->DeleteL( iSession );
+        }
+
+    if ( iWapAPRecord && iWapAPRecord->RecordId() )
+        {
+        iWapAPRecord->DeleteL( iSession );
+        }
+
+    if ( iWapIPBearerRecord && iWapIPBearerRecord->RecordId() )
+        {
+        iWapIPBearerRecord->DeleteL( iSession );
+        }
+
+    if ( iMetaDataRecord && iMetaDataRecord->RecordId() )
+        {
+        iMetaDataRecord->DeleteL( iSession );
+        }
+
+    DeleteBearerRecordsL();
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_DELETEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::ReLoad
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CCmPluginBaseEng::ReLoadL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_RELOAD_ENTRY );
+
+    delete iIapRecord; iIapRecord = NULL;
+    delete iProxyRecord; iProxyRecord = NULL;
+    delete iServiceRecord; iServiceRecord = NULL;
+    delete iNetworkRecord; iNetworkRecord = NULL;
+    delete iLocationRecord; iLocationRecord = NULL;
+    delete iWapAPRecord; iWapAPRecord = NULL;
+    delete iWapIPBearerRecord; iWapIPBearerRecord = NULL;
+    delete iMetaDataRecord; iMetaDataRecord = NULL;
+
+    iLocationEnabled = EFalse;
+
+    ResetBearerRecords();
+
+    LoadL( iIapId );
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_RELOAD_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::LoadL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CCmPluginBaseEng::LoadL( TUint32 aIapId )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADL_ENTRY );
+
+    DoLoadL( aIapId );
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::CreateNewL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CCmPluginBaseEng::CreateNewL( TUint32 aCmId )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_CREATENEWL_ENTRY );
+
+    if ( iIapId )
+        // we already have IAP id ->
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    // optional record is disabled in default
+    iLocationEnabled = EFalse;
+
+    // create mandatory records
+    iIapRecord = static_cast<CCDIAPRecord *>
+                          (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+    iNetworkRecord = static_cast<CCDNetworkRecord *>
+                          (CCDRecordBase::RecordFactoryL(KCDTIdNetworkRecord));
+    iProxyRecord = static_cast<CCDProxiesRecord *>
+                  (CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord));
+    NewWapRecordL();
+    iWapIPBearerRecord->iWAPGatewayAddress.SetL( KDefWapGatewayIpAddress );
+
+    iMetaDataRecord = NewMetadataRecordL( ETrue );
+
+    // call plugin to create its own records
+    CreateServiceRecordL();
+
+    // Update iaprecord servicetype name
+    HBufC* servicetypeName( NULL );
+    ServiceRecordNameLC( servicetypeName );
+    iIapRecord->iServiceType.SetL( *servicetypeName );
+    CleanupStack::PopAndDestroy( servicetypeName );
+
+    // Update iaprecord bearertype name
+    HBufC* bearerTypeName( NULL );
+    BearerRecordNameLC( bearerTypeName );
+    iIapRecord->iBearerType.SetL( *bearerTypeName );
+    CleanupStack::PopAndDestroy( bearerTypeName );
+
+    CreateBearerRecordsL();
+
+    EnableProxyL( EFalse );
+
+    _LIT(KDefaultConnNameTextId, "txt_occ_setlabel_connection_name_val_connection");
+    HBufC* resolvedText( NULL );
+    resolvedText = CCmPluginBaseEngTextResolver::ResolveTextL( KDefaultConnNameTextId );
+    if ( resolvedText != NULL )
+        {
+        SetDefaultNameL( *resolvedText );
+        }
+    else
+        {
+        SetDefaultNameL( KDefaultIapName );
+        }
+
+    delete resolvedText;
+    resolvedText = NULL;
+
+    iIapRecord->iNetworkWeighting = 0; // it's always 0.
+
+    if ( aCmId != 0 )
+        {
+        iIapRecord->SetRecordId( aCmId );
+        iIapId = 0;
+        }
+    else
+        {
+        iIapRecord->SetRecordId( KCDNewRecordRequest );
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_CREATENEWL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::CreateCopyL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CCmPluginBaseEng* CCmPluginBaseEng::CreateCopyL(
+    CCmClientPluginInstance* /*aClientPluginInstance*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_CREATECOPYL_ENTRY );
+
+    TCmPluginInitParam params( iSession );
+
+    CCmPluginBaseEng* copyInst = CreateInstanceL( params );
+    CleanupStack::PushL( copyInst );
+
+    PrepareToCopyDataL( copyInst );
+
+    CopyDataL( copyInst );
+
+    CleanupStack::Pop( copyInst );
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_CREATECOPYL_EXIT );
+
+    return copyInst;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::GetGenericTableIdsToBeObserved
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CCmPluginBaseEng::GetGenericTableIdsToBeObserved(
+        RArray<TUint32>& aTableIdArray ) const
+    {
+    // Service and bearer records should be added by plugins
+
+    aTableIdArray.Append( KCDTIdIAPRecord );
+    aTableIdArray.Append( KCDTIdWAPAccessPointRecord );
+    aTableIdArray.Append( KCDTIdProxiesRecord );
+    aTableIdArray.Append( iMetadataTableId );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::CopyDataL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::CopyDataL( CCmPluginBaseEng* aCopyInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_COPYDATAL_ENTRY );
+
+    aCopyInstance->iLocationEnabled = iLocationEnabled;
+    aCopyInstance->iNamingMethod = iNamingMethod;
+    CopyRecordsL( aCopyInstance );
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYDATAL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::CopyRecordsL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::CopyRecordsL( CCmPluginBaseEng* aCopyInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_COPYRECORDSL_ENTRY );
+
+    CopyRecordDataL( KIapRecordIndex, aCopyInstance );
+
+    // Ensure that iap's name is set by the rules(Naming Method)
+    SetNameL( iIapRecord->iRecordName.GetL(),
+              aCopyInstance->iIapRecord,
+              aCopyInstance->iNamingMethod );
+
+    CopyRecordDataL( KServiceRecordIndex, aCopyInstance );
+    CopyRecordDataL( KNetworkRecordIndex, aCopyInstance );
+    CopyRecordDataL( KWAPAPRecordIndex, aCopyInstance );
+    CopyRecordDataL( KWAPBearerRecordIndex, aCopyInstance );
+    CopyRecordDataL( KMetaDataRecordIndex, aCopyInstance );
+    CopyRecordDataL( KLocationRecordIndex, aCopyInstance );
+    CopyRecordDataL( KProxyRecordIndex, aCopyInstance );
+
+    CopyBearerRecordsL( aCopyInstance );
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYRECORDSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::CopyRecordDataL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::CopyRecordDataL( TUint32 aRecordIdentifier,
+                                        CCmPluginBaseEng* aCopyInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_COPYRECORDDATAL_ENTRY );
+
+    switch( aRecordIdentifier )
+        {
+        case KIapRecordIndex:
+            {
+            aCopyInstance->iIapRecord =
+                static_cast<CCDIAPRecord*>( CCDRecordBase::CreateCopyRecordL( *iIapRecord ) );
+            }
+            break;
+        case KServiceRecordIndex:
+            {
+            aCopyInstance->iServiceRecord = CopyServiceRecordL();
+            }
+            break;
+        case KNetworkRecordIndex:
+            {
+            aCopyInstance->iNetworkRecord =
+                static_cast<CCDNetworkRecord*>( CCDRecordBase::CreateCopyRecordL( *iNetworkRecord ) );
+            }
+            break;
+        case KWAPAPRecordIndex:
+            {
+            aCopyInstance->iWapAPRecord =
+                static_cast<CCDWAPAccessPointRecord*>( CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) );
+            }
+            break;
+        case KWAPBearerRecordIndex:
+            {
+            aCopyInstance->iWapIPBearerRecord =
+                static_cast<CCDWAPIPBearerRecord*>( CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );
+            }
+            break;
+        case KMetaDataRecordIndex:
+            {
+            aCopyInstance->iMetaDataRecord = new (ELeave) CCDIAPMetadataRecord( iMetadataTableId );
+            aCopyInstance->iMetaDataRecord->iIAP = IAPRecordElementId();
+            aCopyInstance->iMetaDataRecord->iMetadata.SetL( iMetaDataRecord->iMetadata );
+            aCopyInstance->iMetaDataRecord->iSeamlessness.SetL( iMetaDataRecord->iSeamlessness );
+            }
+            break;
+        case KLocationRecordIndex:
+            {
+            aCopyInstance->iWapIPBearerRecord =
+                    static_cast<CCDWAPIPBearerRecord*>
+                        ( CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );
+            }
+            break;
+        case KProxyRecordIndex:
+            {
+            if ( iProxyRecord )
+                {
+                aCopyInstance->iProxyRecord = static_cast<CCDProxiesRecord*>
+                                        ( CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) );
+                }
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrArgument );
+            }
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYRECORDDATAL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::DoLoadL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::DoLoadL( TUint32 aIapId )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_DOLOADL_ENTRY );
+
+    PrepareToLoadRecordsL();
+
+    LoadIAPRecordL( aIapId );
+    LoadWapRecordL();
+    LoadMetadataRecordL();
+    LoadNetworkRecordL();
+    LoadLocationRecordL();
+
+    // This is a connectionmethodinfo instance, that has no
+    // service and proxy setting.
+    if ( KDummyBearerType != iBearerType )
+        {
+        LoadServiceRecordL();
+        LoadProxyRecordL();
+        }
+
+    LoadBearerRecordsL();
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_DOLOADL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::PrepareToLoadRecordsL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::PrepareToLoadRecordsL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_PREPARETOLOADRECORDSL_ENTRY );
+
+    iLocationEnabled = EFalse;
+    PreparePluginToLoadRecordsL();
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_PREPARETOLOADRECORDSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::LoadIAPRecordL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::LoadIAPRecordL( TUint32 aIapId )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADIAPRECORDL_ENTRY );
+
+    iIapId = aIapId;
+
+    // Load IAP record
+    CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord *>(
+            CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
+
+    CleanupStack::PushL( iapRecord );
+
+    iapRecord->SetRecordId( iIapId );
+    iapRecord->LoadL( iSession );
+
+    CleanupStack::Pop( iapRecord );
+    iIapRecord = iapRecord;
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADIAPRECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::LoadProxySettingL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::LoadProxyRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADPROXYSETTINGL_ENTRY );
+
+    // Load Proxy record
+    CMDBRecordSet<CCDProxiesRecord>* proxieRS =
+            new( ELeave ) CMDBRecordSet<CCDProxiesRecord>( KCDTIdProxiesRecord );
+    CleanupStack::PushL(proxieRS);
+
+    // Now try to find the linked proxy record
+    // create new record
+    CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord *>(
+            CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
+
+    CleanupStack::PushL( proxyRecord );
+
+    // Prime record
+    TPtrC serviceType( iIapRecord->iServiceType );
+    proxyRecord->iServiceType.SetL( serviceType );
+    proxieRS->iRecords.AppendL( proxyRecord ); // Ownership transfered.
+
+    CleanupStack::Pop( proxyRecord );
+    proxyRecord = NULL;
+
+    if ( proxieRS->FindL(iSession) )
+        {
+        TInt i( 0 );
+        while( i < proxieRS->iRecords.Count() )
+            // Now that we have a list of services with the proper service type
+            // search for our proxy record and remove it from the array,
+            // then destroy the array.
+            {
+            CCDProxiesRecord* proxyRecord = (*proxieRS)[i];
+
+            // Compare the record id of these 2 services
+            if ( TUint32( proxyRecord->iService ) == TUint32( iIapRecord->iService ) )
+                {
+                iProxyRecord = proxyRecord;
+                // Take ownership of this record
+                proxieRS->iRecords.Remove( i );
+                break;
+                }
+            ++i;
+            }
+        }
+
+    proxieRS->iRecords.ResetAndDestroy();
+
+    if ( !iProxyRecord )
+        {
+        // This creates a proxy record, where usage is disabled.
+        EnableProxyL( EFalse );
+        }
+
+    CleanupStack::PopAndDestroy( proxieRS );
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADPROXYSETTINGL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::LoadNetworkSettingL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::LoadNetworkRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADNETWORKSETTINGL_ENTRY );
+
+    CCDNetworkRecord* networkRecord = static_cast<CCDNetworkRecord*>(
+            CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) );
+    CleanupStack::PushL( networkRecord );
+
+    networkRecord->SetRecordId( iIapRecord->iNetwork );
+    TRAPD( err, networkRecord->LoadL( iSession ) );
+    if ( err == KErrNotFound )
+        {
+        CleanupStack::PopAndDestroy( networkRecord );
+
+        networkRecord = static_cast<CCDNetworkRecord*>(
+                CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) );
+        }
+    else
+        // KErrNotFound -> doesn't matter. We will do it UpdateL()
+        {
+        User::LeaveIfError( err );
+
+        CleanupStack::Pop( networkRecord );
+        }
+
+    iNetworkRecord = networkRecord;
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADNETWORKSETTINGL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::LoadLocationSettingL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::LoadLocationRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADLOCATIONSETTINGL_ENTRY );
+
+    CCDLocationRecord* locationRecord = static_cast<CCDLocationRecord*>
+                         (CCDRecordBase::RecordFactoryL(KCDTIdLocationRecord));
+
+    CleanupStack::PushL( locationRecord );
+
+    locationRecord->SetRecordId( iIapRecord->iLocation );
+    if ( locationRecord->FindL(iSession) )
+        {
+        iLocationEnabled = ETrue;
+
+        iLocationRecord = locationRecord;
+
+        CleanupStack::Pop( locationRecord );
+        }
+    else
+        {
+        iLocationEnabled = EFalse;
+
+        CleanupStack::PopAndDestroy( locationRecord );
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADLOCATIONSETTINGL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::PrepareToUpdateRecordsL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::PrepareToUpdateRecordsL(
+    CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_PREPARETOUPDATERECORDSL_ENTRY );
+
+    // Set the record attributes to bearer specific records
+    CCDIAPRecord* iapRecord =
+       static_cast<CCDIAPRecord*>( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+
+    for ( TInt i = 0; i < aClientPluginInstance->iBearerSpecRecordArray.Count(); i++ )
+        {
+        CCDRecordBase* record =
+                static_cast<CCDRecordBase*>( aClientPluginInstance->iBearerSpecRecordArray[i] );
+
+        CopyAttributes( iapRecord, record );
+        }
+
+    PreparePluginToUpdateRecordsL( aClientPluginInstance->iGenRecordArray,
+                                   aClientPluginInstance->iBearerSpecRecordArray );
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_PREPARETOUPDATERECORDSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::UpdateIAPRecordL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::UpdateIAPRecordL(
+    CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATEIAPRECORDL_ENTRY );
+
+    CCDIAPRecord* iapRecord =
+       static_cast<CCDIAPRecord*>( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+
+    if ( iIapId == 0 )
+        {
+        // Otherwise predefined iapid
+        if ( !iIapRecord->RecordId() )
+            {
+            iIapRecord->SetRecordId( KCDNewRecordRequest );
+            }
+
+        TUint32 id( 0 );
+        id = ServiceRecordId();
+        iIapRecord->iService = id;
+
+        HBufC* name( NULL );
+        ServiceRecordNameLC( name );
+        iIapRecord->iServiceType.SetL( *name );
+        CleanupStack::PopAndDestroy( name );
+
+        BearerRecordIdL( id );
+        iIapRecord->iBearer = id;
+        BearerRecordNameLC( name );
+        iIapRecord->iBearerType.SetL( *name );
+        CleanupStack::PopAndDestroy( name );
+
+        iIapRecord->iNetwork = iNetworkRecord->RecordId();
+
+        if ( iLocationRecord )
+            {
+            iIapRecord->iLocation = iLocationRecord->RecordId();
+            }
+        else
+            {
+            iIapRecord->iLocation = GetLocationIdL();
+            }
+
+        CopyAttributes( iapRecord, iIapRecord );
+        CheckIfNameModifiedL( iapRecord, iIapRecord );
+
+        iIapRecord->StoreL( iSession );
+
+        iIapId = iIapRecord->RecordId();
+        aClientPluginInstance->iIapId = iIapId;
+
+        CCDIAPRecord* tempIapRecord = static_cast<CCDIAPRecord*>(
+                CCDRecordBase::CreateCopyRecordL( *iIapRecord ) );
+        CleanupStack::PushL( tempIapRecord );
+        tempIapRecord->SetElementId( iIapRecord->ElementId() );
+
+        aClientPluginInstance->iGenRecordArray.Remove( KIapRecordIndex );
+        CleanupStack::PushL( iapRecord );
+
+        aClientPluginInstance->iGenRecordArray.InsertL(
+                static_cast<CommsDat::CCDRecordBase*>( tempIapRecord ), KIapRecordIndex );
+
+        CleanupStack::PopAndDestroy( iapRecord );
+        CleanupStack::Pop( tempIapRecord );
+
+        }
+    else
+        {
+        delete iIapRecord;
+        iIapRecord = NULL;
+
+        iIapRecord = static_cast<CCDIAPRecord*>
+                            ( CCDRecordBase::CreateCopyRecordL( *iapRecord ) );
+
+        iIapRecord->SetElementId( iapRecord->ElementId() );
+
+        iIapRecord->ModifyL( iSession );
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEIAPRECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::UpdateProxyRecordL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::UpdateProxyRecordL(
+        CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATEPROXYRECORDL_ENTRY );
+
+    CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+            aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+
+    CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
+            aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
+
+    CopyAttributes( iapRecord, proxyRecord );
+    CheckIfNameModifiedL( iapRecord, proxyRecord );
+
+    if ( proxyRecord->iUseProxyServer )
+        {
+        delete iProxyRecord;
+        iProxyRecord = NULL;
+
+        iProxyRecord = static_cast<CCDProxiesRecord*>
+                            ( CCDRecordBase::CreateCopyRecordL( *proxyRecord ) );
+        iProxyRecord->SetElementId( proxyRecord->ElementId() );
+
+        if ( !iProxyRecord->RecordId() )
+            // new proxy setting -> create new record
+            {
+            iProxyRecord->iService = iServiceRecord->RecordId();
+            iProxyRecord->iServiceType.SetL( iIapRecord->iServiceType );
+
+            // By default protocol is set to "http"
+            if ( TPtrC( proxyRecord->iProtocolName ).Length() == 0 )
+                {
+                iProxyRecord->iProtocolName.SetL( KDefProxyProtocolName );
+                }
+
+            iProxyRecord->SetRecordId( KCDNewRecordRequest );
+            iProxyRecord->StoreL( iSession );
+            proxyRecord->SetElementId( iProxyRecord->ElementId() );
+            proxyRecord->iService = iServiceRecord->RecordId();
+            proxyRecord->iServiceType.SetL( iIapRecord->iServiceType );
+            }
+        else
+            // already existing record -> update only
+            {
+            iProxyRecord->ModifyL( iSession );
+            }
+        }
+    else
+        {
+        if ( iProxyRecord->RecordId() )
+            {
+            iProxyRecord->DeleteL( iSession );
+            }
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEPROXYRECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::UpdateMetadataRecordL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::UpdateMetadataRecordL(
+        CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATEMETADATARECORDL_ENTRY );
+
+    CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+            aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+
+    CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>(
+            aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
+
+    CopyAttributes( iapRecord, metadataRecord );
+    CheckIfNameModifiedL( iapRecord, metadataRecord );
+
+    delete iMetaDataRecord;
+    iMetaDataRecord = NULL;
+
+    // Get a new blank IAP metadata record.
+    iMetaDataRecord = NewMetadataRecordL( EFalse );
+
+    iMetaDataRecord->SetElementId( metadataRecord->ElementId() );
+    iMetaDataRecord->iRecordName.SetL( metadataRecord->iRecordName );
+    iMetaDataRecord->iMetadata.SetL( metadataRecord->iMetadata );
+    iMetaDataRecord->iSeamlessness.SetL( metadataRecord->iSeamlessness );
+
+    if ( !iMetaDataRecord->RecordId() )
+        {
+        iMetaDataRecord->iIAP = IAPRecordElementId();
+        iMetaDataRecord->SetRecordId( KCDNewRecordRequest );
+        iMetaDataRecord->StoreL( iSession );
+        metadataRecord->SetElementId( iMetaDataRecord->ElementId() );
+        }
+    else
+        {
+        iMetaDataRecord->ModifyL( iSession );
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEMETADATARECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::UpdateServiceRecordL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::UpdateServiceRecordL(
+    CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATESERVICERECORDL_ENTRY );
+
+    CCDIAPRecord* iapRecord =
+                static_cast<CCDIAPRecord*>( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+
+    CCDRecordBase* serviceRecord =
+                static_cast<CCDRecordBase*>( aClientPluginInstance->iGenRecordArray[KServiceRecordIndex] );
+
+    CopyAttributes( iapRecord, serviceRecord );
+
+    UpdateServiceRecordL( aClientPluginInstance->iGenRecordArray,
+                          aClientPluginInstance->iBearerSpecRecordArray );
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATESERVICERECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::UpdateNetworkRecordL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::UpdateNetworkRecordL(
+    CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATENETWORKRECORDL_ENTRY );
+
+    CCDIAPRecord* iapRecord =
+                static_cast<CCDIAPRecord*>( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+
+    CCDNetworkRecord* networkRecord =
+                static_cast<CCDNetworkRecord*>( aClientPluginInstance->iGenRecordArray[KNetworkRecordIndex] );
+
+    CopyAttributes( iapRecord, networkRecord );
+
+    delete iNetworkRecord;
+    iNetworkRecord = NULL;
+
+    CheckIfNameModifiedL( iapRecord, networkRecord );
+
+    iNetworkRecord = static_cast<CCDNetworkRecord*>
+                        ( CCDRecordBase::CreateCopyRecordL( *networkRecord ) );
+
+    iNetworkRecord->SetElementId( networkRecord->ElementId() );
+
+    if ( !iNetworkRecord->RecordId() )
+        {
+        iNetworkRecord->SetRecordId( KCDNewRecordRequest );
+        iNetworkRecord->StoreL( iSession );
+        networkRecord->SetElementId( iNetworkRecord->ElementId() );
+        }
+    else
+        {
+        iNetworkRecord->ModifyL( iSession );
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATENETWORKRECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::UpdateLocationRecordL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::UpdateLocationRecordL(
+    CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATELOCATIONRECORDL_ENTRY );
+
+    if ( iLocationEnabled )
+        {
+        CCDIAPRecord* iapRecord =
+                    static_cast<CCDIAPRecord*>( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+
+        CCDLocationRecord* locationRecord =
+                    static_cast<CCDLocationRecord*>( aClientPluginInstance->iGenRecordArray[KLocationRecordIndex] );
+
+        // location record is not set as hidden because it can be shared between iaps
+        CopyAttributes( iapRecord, locationRecord );
+        locationRecord->ClearAttributes( ECDHidden );
+
+        delete iLocationRecord;
+        iLocationRecord = NULL;
+
+        iLocationRecord = static_cast<CCDLocationRecord*>
+                            ( CCDRecordBase::CreateCopyRecordL( *locationRecord ) );
+
+        iLocationRecord->SetElementId( locationRecord->ElementId() );
+
+        CheckIfNameModifiedL( iapRecord, locationRecord );
+
+        if ( !iLocationRecord->RecordId() )
+            {
+            iLocationRecord->SetRecordId( KCDNewRecordRequest );
+            iLocationRecord->StoreL( iSession );
+            }
+        else
+            {
+            iLocationRecord->ModifyL( iSession );
+            }
+        }
+    else
+        {
+        if ( iLocationRecord )
+            {
+            iLocationRecord->DeleteL( iSession );
+            }
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATELOCATIONRECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::UpdateConnPrefSettingL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::UpdateConnPrefSettingL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATECONNPREFSETTINGL_ENTRY );
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATECONNPREFSETTINGL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::EnableProxyL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::EnableProxyL( TBool aEnable )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_ENABLEPROXYL_ENTRY );
+
+    if ( !iServiceRecord )
+        {
+        User::Leave( KErrNotSupported );
+        }
+
+    if ( !iProxyRecord )
+        {
+        iProxyRecord = static_cast<CCDProxiesRecord *>
+                      (CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord));
+        }
+
+    iProxyRecord->iUseProxyServer = aEnable;
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_ENABLEPROXYL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::EnableLocationL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::EnableLocationL( TBool aEnable )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_ENABLELOCATIONL_ENTRY );
+
+    if ( aEnable )
+        {
+        if ( !iLocationRecord )
+            {
+            iLocationRecord = static_cast<CCDLocationRecord *>
+                         (CCDRecordBase::RecordFactoryL(KCDTIdLocationRecord));
+            }
+        }
+
+    iLocationEnabled = aEnable;
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_ENABLELOCATIONL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::LoadWapRecordL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::LoadWapRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADWAPRECORDL_ENTRY );
+
+    iWapIPBearerRecord = FindWAPRecordL();
+    if ( iWapIPBearerRecord )
+        {
+        CCDWAPAccessPointRecord *wapApRecord = static_cast<CCDWAPAccessPointRecord *>
+                   (CCDRecordBase::RecordFactoryL(KCDTIdWAPAccessPointRecord));
+
+        CleanupStack::PushL( wapApRecord );
+
+        wapApRecord->SetRecordId( iWapIPBearerRecord->iWAPAccessPointId );
+        TRAPD( err, wapApRecord->LoadL( iSession ) );
+        if ( err == KErrNotFound )
+            {
+            CleanupStack::PopAndDestroy( wapApRecord );
+
+            wapApRecord = static_cast<CCDWAPAccessPointRecord *>
+                   (CCDRecordBase::RecordFactoryL(KCDTIdWAPAccessPointRecord));
+            }
+        else
+            {
+            User::LeaveIfError( err );
+
+            CleanupStack::Pop( wapApRecord );
+            }
+
+        iWapAPRecord = wapApRecord;
+        }
+    else
+        // No WAP record found -> create a new one
+        {
+        NewWapRecordL();
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADWAPRECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::LoadMetadataRecordL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::LoadMetadataRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADSEAMLESSNESSRECORDL_ENTRY );
+
+    iMetaDataRecord = FindMetadataRecordL();
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADSEAMLESSNESSRECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::UpdateWapRecordL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::UpdateWapRecordL(
+    CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATEWAPRECORDL_ENTRY );
+
+    delete iWapAPRecord;
+    iWapAPRecord = NULL;
+
+    delete iWapIPBearerRecord;
+    iWapIPBearerRecord = NULL;
+
+    CCDIAPRecord* iapRecord =
+        static_cast<CCDIAPRecord*>( aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+
+    CCDWAPAccessPointRecord* wapAPRecord =
+        static_cast<CCDWAPAccessPointRecord*>( aClientPluginInstance->iGenRecordArray[KWAPAPRecordIndex] );
+
+    CCDWAPIPBearerRecord* wapIPBearerRecord =
+        static_cast<CCDWAPIPBearerRecord*>( aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] );
+
+    CopyAttributes( iapRecord, wapAPRecord );
+    CopyAttributes( iapRecord, wapIPBearerRecord );
+
+    CheckIfNameModifiedL( iapRecord, wapAPRecord );
+    CheckIfNameModifiedL( iapRecord, wapIPBearerRecord );
+
+    iWapAPRecord = static_cast<CCDWAPAccessPointRecord*>
+                            ( CCDRecordBase::CreateCopyRecordL( *wapAPRecord ) );
+    iWapAPRecord->SetElementId( wapAPRecord->ElementId() );
+
+    iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>
+                        ( CCDRecordBase::CreateCopyRecordL( *wapIPBearerRecord ) );
+    iWapIPBearerRecord->SetElementId( wapIPBearerRecord->ElementId() );
+
+    if ( !iWapAPRecord->RecordId() )
+        {
+        iWapAPRecord->SetRecordId( KCDNewRecordRequest );
+        iWapAPRecord->StoreL(iSession );
+        wapAPRecord->SetElementId( iWapAPRecord->ElementId() );
+        }
+    else
+        {
+        iWapAPRecord->ModifyL( iSession );
+        }
+
+    if ( !iWapIPBearerRecord->RecordId() )
+        {
+        iWapIPBearerRecord->iWAPAccessPointId = iWapAPRecord->RecordId();
+        iWapIPBearerRecord->iWAPIAP = iapRecord->RecordId();
+
+        iWapIPBearerRecord->SetRecordId( KCDNewRecordRequest );
+        iWapIPBearerRecord->StoreL( iSession );
+        wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() );
+
+        wapIPBearerRecord->iWAPAccessPointId = iWapAPRecord->RecordId();
+        wapIPBearerRecord->iWAPIAP = iapRecord->RecordId();
+        }
+    else
+        {
+        iWapIPBearerRecord->ModifyL( iSession );
+        }
+    OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_UPDATEWAPRECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::NewWapRecordL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::NewWapRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_NEWWAPRECORDL_ENTRY );
+
+    if ( !iWapIPBearerRecord )
+        {
+        iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord *>
+                      ( CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) );
+        iWapIPBearerRecord->iWAPProxyPort = 0;
+        iWapIPBearerRecord->iWAPWSPOption = ECmWapWspOptionConnectionOriented;
+        iWapIPBearerRecord->iWAPSecurity = EFalse;
+        }
+
+    if ( !iWapAPRecord )
+        {
+        iWapAPRecord = static_cast<CCDWAPAccessPointRecord *>
+                   ( CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) );
+        // SMS bearer is not supported by this version
+        iWapAPRecord->iWAPCurrentBearer.SetL( TPtrC( KCDTypeNameWAPIPBearer ) );
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_NEWWAPRECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::NewMetadataRecordL
+// ---------------------------------------------------------------------------
+//
+CCDIAPMetadataRecord* CCmPluginBaseEng::NewMetadataRecordL( TBool aSetDef )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_NEWSEAMLESSNESSRECORDL_ENTRY );
+
+    CCDIAPMetadataRecord* record = new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId );
+
+    if ( aSetDef )
+        {
+        TRAPD( err, record->iSeamlessness = GetBearerInfoIntL( ECmSeamlessnessLevel ) );
+        if ( err )
+            {
+            record->iSeamlessness = ESeamlessnessConfirmFirst;
+            }
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_NEWSEAMLESSNESSRECORDL_EXIT );
+    return record;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::SetAttribute
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::SetAttribute( CCDRecordBase* aRecord,
+                                     TUint32 aAttribute,
+                                     TBool aSet )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETATTRIBUTE_ENTRY );
+
+    if ( aSet )
+        {
+        aRecord->SetAttributes( aAttribute );
+        }
+    else
+        {
+        aRecord->ClearAttributes( aAttribute );
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_SETATTRIBUTE_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::CopyAttributes
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::CopyAttributes( CCDRecordBase* aSrcRecord,
+                                       CCDRecordBase* aDstRecord )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_COPYATTRIBUTES_ENTRY );
+
+    if ( aSrcRecord == NULL || aDstRecord == NULL )
+        {
+        return;
+        }
+
+    // clear the target record attributes first
+    aDstRecord->ClearAttributes( aDstRecord->Attributes() );
+
+    aDstRecord->SetAttributes( aSrcRecord->Attributes() );
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYATTRIBUTES_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::FindWAPRecordL
+// ---------------------------------------------------------------------------
+//
+CCDWAPIPBearerRecord* CCmPluginBaseEng::FindWAPRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_FINDWAPRECORDL_ENTRY );
+
+    CMDBRecordSet<CCDWAPIPBearerRecord>* wapRS =
+            new(ELeave)
+                   CMDBRecordSet<CCDWAPIPBearerRecord>(KCDTIdWAPIPBearerRecord);
+    CleanupStack::PushL( wapRS );
+
+    CCDWAPIPBearerRecord* wapBearerRecord = static_cast<CCDWAPIPBearerRecord *>
+                      (CCDRecordBase::RecordFactoryL(KCDTIdWAPIPBearerRecord));
+
+    CleanupStack::PushL( wapBearerRecord );
+
+    wapBearerRecord->iWAPIAP = iIapId;
+    wapRS->iRecords.AppendL( wapBearerRecord );
+
+    CleanupStack::Pop( wapBearerRecord );
+    wapBearerRecord = NULL;
+
+    if ( wapRS->FindL(iSession) )
+        {
+        wapBearerRecord =
+                        static_cast<CCDWAPIPBearerRecord *>(wapRS->iRecords[0]);
+
+        // we take over the ownership of this record
+        wapRS->iRecords.Remove( 0 );
+        }
+
+    CleanupStack::PopAndDestroy( wapRS );
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_FINDWAPRECORDL_EXIT );
+
+    return wapBearerRecord;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::FindSeamlessnessRecordL
+// ---------------------------------------------------------------------------
+//
+CCDIAPMetadataRecord* CCmPluginBaseEng::FindMetadataRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_FINDSEAMLESSNESSRECORDL_ENTRY );
+
+    CMDBRecordSet<CCDIAPMetadataRecord>* metadataRecordSet =
+          new(ELeave) CMDBRecordSet<CCDIAPMetadataRecord>( iMetadataTableId );
+    CleanupStack::PushL( metadataRecordSet );
+
+    CCDIAPMetadataRecord* metadataRecord =
+            new (ELeave) CCDIAPMetadataRecord( iMetadataTableId );
+
+    CleanupStack::PushL( metadataRecord );
+
+    metadataRecord->iIAP = IAPRecordElementId();
+    metadataRecordSet->iRecords.AppendL( metadataRecord );
+
+    CleanupStack::Pop( metadataRecord );
+    metadataRecord = NULL;
+
+    if ( metadataRecordSet->FindL( iSession ) )
+        {
+        CMDBRecordBase* record = metadataRecordSet->iRecords[0];
+
+        metadataRecord = NewMetadataRecordL( EFalse );
+        metadataRecord->SetRecordId( record->RecordId() );
+
+        // This can leave only in case of OOM.
+        metadataRecord->LoadL( iSession );
+        }
+    else
+        {
+        metadataRecord = NewMetadataRecordL( ETrue );
+        }
+
+    CleanupStack::PopAndDestroy( metadataRecordSet );
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_FINDSEAMLESSNESSRECORDL_EXIT );
+
+    return metadataRecord;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::DoMakeValidNameL
+// ---------------------------------------------------------------------------
+//
+HBufC* CCmPluginBaseEng::DoMakeValidNameL( const TDesC& aName,
+                                           const TUint32& aIapId  )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_DOMAKEVALIDNAMEL_ENTRY );
+
+    TBool changed( EFalse );
+    HBufC* temp = HBufC::NewLC( KApMaxConnNameLength );
+    HBufC* temp2 = HBufC::NewLC( KApMaxConnNameLength );
+
+    HBufC* corrname = EnsureMaxLengthLC( aName, changed );
+    *temp = *corrname;
+    TInt postfix( 0 );
+    TInt pf( 0 );
+    TInt i( 0 );
+    TBool valid ( EFalse );
+
+    TPtrC prefix = GetPrefix( *corrname );
+
+    postfix = GetPostfix( *temp, prefix );
+    postfix = -1;
+    do
+        {
+        valid = IsValidNameL( *temp, aIapId );
+        if ( !valid )
+            {
+            changed = ETrue;
+            postfix++;
+            // check the length of postfix, check text length accordingly
+            pf = postfix;
+            for (i=1; i<10; i++)
+                {
+                pf /= 10;
+                if ( !pf )
+                    break;
+                }
+            TPtr sgdptr( temp->Des() );
+            TPtr sgdptr2( temp2->Des() );
+            if ( postfix )
+                {
+                if ( postfix < 10 )
+                    {
+                    sgdptr2 = prefix.Left( KApMaxConnNameLength - i - 3 );
+                    }
+                else
+                    {
+                    sgdptr2 = prefix.Left( KApMaxConnNameLength - i - 2 );
+                    }
+                }
+            else
+                {
+                sgdptr2 = prefix.Left( KApMaxConnNameLength );
+                }
+            if ( postfix )
+                {
+                TBuf< KMaxPostfixLength > postfixString;
+                if ( postfix > 9 )
+                    {
+                    postfixString.Format( KFormatLargePostfix, postfix );
+//     TODO:               AknTextUtils::LanguageSpecificNumberConversion( postfixString );
+                    }
+                else
+                    {
+                    postfixString.Format( KFormatPostfix, postfix );
+//     TODO:               AknTextUtils::LanguageSpecificNumberConversion( postfixString );
+                    }
+                sgdptr.Format( KFormatNameWithPostfix, &sgdptr2,
+                                   &postfixString );
+                }
+            else
+                {
+                sgdptr.Format( KFormatNoPostfix, &sgdptr2 );
+                }
+            }
+        } while ( !valid );
+
+    CleanupStack::PopAndDestroy( corrname );
+    CleanupStack::PopAndDestroy( temp2 );
+
+    if ( changed )
+        {
+        CleanupStack::Pop( temp );
+        }
+    else
+        {
+        CleanupStack::PopAndDestroy( temp );
+        temp = NULL;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_DOMAKEVALIDNAMEL_EXIT );
+
+    return temp;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::EnsureMaxLengthLC
+// ---------------------------------------------------------------------------
+//
+HBufC* CCmPluginBaseEng::EnsureMaxLengthLC( const TDesC& aName,
+                                            TBool& aChanged )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_ENSUREMAXLENGTHLC_ENTRY );
+
+    TInt length = aName.Length();
+
+    aChanged = EFalse;
+
+    if ( !length )
+        {
+        // Name is required.
+        User::Leave( KErrArgument );
+        }
+
+    HBufC* corrname;
+    if ( KApMaxConnNameLength < length )
+        { // name too long, truncate.
+        corrname = aName.Left( KApMaxConnNameLength ).AllocLC();
+        aChanged = ETrue;
+        }
+    else
+        {
+        corrname = aName.AllocLC();
+        corrname->Des().Trim();
+        if ( corrname->Length() == 0 )
+            {
+            User::Leave( KErrArgument );
+            }
+        // comes here only if name is valid
+        if ( corrname->Length() != aName.Length() )
+            {
+            aChanged = ETrue;
+            }
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_ENSUREMAXLENGTHLC_EXIT );
+
+    return corrname;
+    }
+
+// ---------------------------------------------------------------------------
+// Given aName in the format <prefix> or <prefix><brace><integer><brace>,
+// return a pointer to the leading part.
+// That is, if there is trailing <space><integer>,
+// then that is excluded; if there is no trailing part, then the original
+// decriptor is returned.
+// Examples:
+//   - "Foo" returns "Foo";
+//   - "Foo 12" returns "Foo 12";
+//   - "Foo(12)" returns "Foo";
+//   - "Foo 12 (34)" returns "Foo 12 ";
+//   - "Foo bar" returns "Foo bar";
+//   - "Foo " returns "Foo ".
+// ---------------------------------------------------------------------------
+TPtrC CCmPluginBaseEng::GetPrefix( const TDesC& aName )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETPREFIX_ENTRY );
+
+    TPtrC prefix = aName;
+    TInt lastBrace = aName.LocateReverse('(');
+    if ( lastBrace != KErrNotFound )
+        {
+        // aName looks like "<prefix><brace><something>".
+        // See if <something> is an integer number.
+        TPtrC num = aName.Right( aName.Length() - lastBrace - 1 );
+        TInt val;
+        TLex lex( num );
+        if ( lex.Val( val ) == KErrNone )
+            {
+            // Yes, the trailer is an integer.
+            prefix.Set( aName.Left( lastBrace ) );
+            }
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_GETPREFIX_EXIT );
+
+    return prefix;
+    }
+
+
+// ---------------------------------------------------------------------------
+// If aName is constructed from aPrefix with a postfix, get the numeric
+// value of the postfix, e.g:
+//   - GetPostfix( "Foo (3)", "Foo" ) == 3
+//   - GetPostfix( "Foo 23 (45)", "Foo 23" ) == 45
+// If aName is the same as aPrefix, return 0, e.g.:
+//   - GetPostfix( "Foo", "Foo" ) == 0
+// If aName is not constructed from aPrefix, return -1, e.g.:
+//   - GetPostfix( "Foobar", "Foo" ) == -1
+//   - GetPostfix( "Fo 23 45", "Foo" ) == -1
+// ---------------------------------------------------------------------------
+TInt CCmPluginBaseEng::GetPostfix( const TDesC& aName, const TDesC& aPrefix )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETPOSTFIX_ENTRY );
+
+    TInt postfix( KErrNotFound );
+    TInt nameLength = aName.Length();
+    TInt prefixLength = aPrefix.Length();
+    if ( nameLength >= prefixLength && aName.FindF( aPrefix ) == 0 )
+        {
+        // aName is longer or equal length, and
+        // aPrefix can be found in the beginning of aName.
+        if ( nameLength == prefixLength )
+            {
+            // They have the same length; they equal.
+            postfix = 0;
+            }
+        else
+            {
+            if ( prefixLength > 0 )
+                {
+                if ( aName[ prefixLength ] == '(' )
+                    {
+                    // (Now we know that aName is longer than aPrefix.)
+                    // aName looks like "aPrefix<brace><something>".
+                    // See if <something> is an integer number.
+                    TPtrC num = aName.Right( nameLength - prefixLength - 1 );
+                        TBuf< KApMaxConnNameLength > pf;
+                    pf = num;
+// TODO                    AknTextUtils::ConvertDigitsTo( pf, EDigitTypeWestern );
+                    TInt val;
+                    TLex lex( pf );
+                    if ( lex.Val( val ) == KErrNone )
+                        {
+                        // Yes, the trailer is an integer.
+                        if ( val > 0 )
+                            {
+                            postfix = val;
+                            }
+                        else
+                            {
+                            // signal that it is invalid...
+                            postfix = -1;
+                            }
+                        }
+                    }
+                }
+            else
+                {
+                postfix = -1;
+                }
+            }
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_GETPOSTFIX_EXIT );
+
+    return postfix;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::IsValidNameL
+// ---------------------------------------------------------------------------
+//
+TBool CCmPluginBaseEng::IsValidNameL( const TDesC& aNameText,
+                                      const TUint32& aIapId )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_ISVALIDNAMEL_ENTRY );
+
+    TBool retVal( ETrue );
+
+    CMDBRecordSet<CCDIAPRecord>* iapRS =
+                      new(ELeave) CMDBRecordSet<CCDIAPRecord>(KCDTIdIAPRecord);
+    CleanupStack::PushL(iapRS);
+
+    CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord *>
+                            (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+
+    CleanupStack::PushL( iapRecord );
+
+    // Prime record
+    iapRecord->iRecordName.SetL( aNameText );
+
+    iapRS->iRecords.AppendL( iapRecord );
+
+    CleanupStack::Pop( iapRecord );
+
+    iapRecord = NULL;
+
+    if ( iapRS->FindL(iSession) )
+        {
+        if ( iIapId )
+            // this is not a new CM
+            {
+            for ( TInt i = 0; i < iapRS->iRecords.Count(); ++i )
+                {
+                if ( iapRS->iRecords[i]->RecordId() != aIapId )
+                    // duplication because it's not our name
+                    {
+                    retVal = EFalse;
+                    break;
+                    }
+                }
+            }
+        else
+            // new CM -> any occurence is a duplication
+            {
+            retVal = EFalse;
+            }
+        }
+
+    CleanupStack::PopAndDestroy( iapRS );
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_ISVALIDNAMEL_EXIT );
+
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::EscapeTextLC
+// ---------------------------------------------------------------------------
+//
+HBufC* CCmPluginBaseEng::EscapeTextLC( const TDesC& aLiteral )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_ESCAPETEXTLC_ENTRY );
+
+    TInt l( aLiteral.Length() );
+    //> 2*, to ensure correct esc. even if ALL chars are quotes...
+    HBufC* retbuf = HBufC::NewLC( 2*l );
+    TPtr ret = retbuf->Des();
+    TUint quote( '\'' );  // TChar gives warnings in THUMB & ARMI
+    TInt i( 0 );
+
+    for ( i=0; i<l; i++ )
+        {
+        ret.Append( aLiteral[i] );
+        if ( aLiteral[i] == quote )
+            {
+            // Duplicate quote.
+            ret.Append( quote );
+            }
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_ESCAPETEXTLC_EXIT );
+
+    return retbuf;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::SetDefaultNameL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::SetDefaultNameL( const TDesC& aName )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETDEFAULTNAMEL_ENTRY );
+
+    if ( iNamingMethod == ENamingNothing )
+        {
+        iIapRecord->iRecordName.SetL( aName );
+        }
+    else if ( iNamingMethod == ENamingUnique )
+        {
+        HBufC* newName = DoMakeValidNameL( aName, iIapId );
+
+        if ( newName )
+            // name converted to unique
+            {
+            CleanupStack::PushL( newName );
+            iIapRecord->iRecordName.SetL( *newName );
+            CleanupStack::PopAndDestroy( newName );
+            }
+        else
+            {
+            iIapRecord->iRecordName.SetL( aName );
+            }
+        }
+    else if ( iNamingMethod == ENamingNotAccept )
+        {
+        if ( IsValidNameL( aName, iIapId ) )
+            {
+            iIapRecord->iRecordName.SetL( aName );
+            }
+        else
+            {
+            User::Leave( KErrArgument );
+            }
+        }
+    else
+        {
+        User::Leave( KErrCorrupt );
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_SETDEFAULTNAMEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::SetNameL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginBaseEng::SetNameL(
+        const TDesC& aName,
+        CommsDat::CCDRecordBase* aIapRecord,
+        const CMManager::TNamingMethod aNamingMethod )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETNAMEL_ENTRY );
+
+    if ( aNamingMethod == ENamingNothing )
+        {
+        aIapRecord->iRecordName.SetL( aName );
+        }
+    else if ( aNamingMethod == ENamingUnique )
+        {
+        TUint32 iapid = aIapRecord->RecordId();
+        HBufC* newName = DoMakeValidNameL( aName, iapid );
+
+        if ( newName )
+            // name converted to unique
+            {
+            CleanupStack::PushL( newName );
+            aIapRecord->iRecordName.SetL( *newName );
+            CleanupStack::PopAndDestroy( newName );
+            }
+        else
+            {
+            aIapRecord->iRecordName.SetL( aName );
+            }
+        }
+    else if ( aNamingMethod == ENamingNotAccept )
+        {
+        if ( IsValidNameL( aName, aIapRecord->RecordId() ) )
+            {
+            aIapRecord->iRecordName.SetL( aName );
+            }
+        else
+            {
+            User::Leave( KErrArgument );
+            }
+        }
+    else
+        {
+        User::Leave( KErrCorrupt );
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_SETNAMEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::CheckIfNameModifiedL
+// ---------------------------------------------------------------------------
+EXPORT_C void CCmPluginBaseEng::CheckIfNameModifiedL(
+    CCDRecordBase* aSrcRecord,
+    CCDRecordBase* aDestRecord ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_CHECKIFNAMEMODIFIEDL_ENTRY );
+
+    if ( !TPtrC( aSrcRecord->iRecordName ).CompareF( TPtrC( aDestRecord->iRecordName ) ) )
+        // names matche
+        {
+        OstTraceFunctionExit0( CCMPLUGINBASEENG_CHECKIFNAMEMODIFIEDL_EXIT );
+        return;
+        }
+
+    aDestRecord->iRecordName.SetL( TPtrC( aSrcRecord->iRecordName ) );
+
+    OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_CHECKIFNAMEMODIFIEDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::IAPRecordElementId
+// ---------------------------------------------------------------------------
+TMDBElementId CCmPluginBaseEng::IAPRecordElementId() const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_IAPRECORDELEMENTID_ENTRY );
+
+    return ( KCDMaskShowField & iIapRecord->ElementId() );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::IsProtected
+// ---------------------------------------------------------------------------
+TBool CCmPluginBaseEng::IsProtected() const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_ISPROTECTED_ENTRY );
+
+    return ( iIapRecord->Attributes() & ECDProtectedWrite );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::GetLocationIdL
+// ---------------------------------------------------------------------------
+TUint32 CCmPluginBaseEng::GetLocationIdL() const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETLOCATIONIDL_ENTRY );
+
+    TUint32 locId( 0 );
+    CMDBRecordSet<CCDLocationRecord>* locRS =
+            new(ELeave) CMDBRecordSet<CCDLocationRecord>(KCDTIdLocationRecord);
+    CleanupStack::PushL( locRS );
+
+    CCDLocationRecord* locRecord = static_cast<CCDLocationRecord *>
+                         (CCDRecordBase::RecordFactoryL(KCDTIdLocationRecord));
+
+    CleanupStack::PushL( locRecord );
+    locRecord->iRecordName.SetL( KLocationName );
+    locRS->iRecords.AppendL( locRecord );
+    CleanupStack::Pop( locRecord );
+
+    if ( locRS->FindL(iSession) )
+        {
+        locRecord = static_cast<CCDLocationRecord *>(locRS->iRecords[0]);
+
+        locId = locRecord->RecordId();
+        }
+    else
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    CleanupStack::PopAndDestroy( locRS );
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_GETLOCATIONIDL_EXIT );
+
+    return locId;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::SetProxyServerNameL
+// ---------------------------------------------------------------------------
+ void CCmPluginBaseEng::SetProxyServerNameL( const TDesC& aProxyServer,
+                                             CCDRecordBase* aProxyRecord )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETPROXYSERVERNAMEL_ENTRY );
+
+    CCDProxiesRecord* proxyRecord =
+                    static_cast<CCDProxiesRecord*>( aProxyRecord );
+
+    proxyRecord->iServerName.SetL( aProxyServer );
+    if ( !aProxyServer.Length() )
+        {
+        proxyRecord->iPortNumber = 0;
+        proxyRecord->iUseProxyServer = EFalse;
+        }
+    else
+        {
+        proxyRecord->iUseProxyServer = ETrue;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_SETPROXYSERVERNAMEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::CheckDNSServerAddressL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CCmPluginBaseEng::CheckDNSServerAddressL( TBool aIPv6,
+                                                        CMDBField<TDesC>& aDNS1,
+                                                        CMDBField<TDesC>& aDNS2,
+                                                        CMDBField<TBool>& aDNSFromServer )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_CHECKDNSSERVERADDRESSL_ENTRY );
+
+    if ( !aDNSFromServer )
+        {
+        if ( aIPv6 )
+            {
+            if ( ClassifyIPv6Address( aDNS1 ) == EIPv6Unspecified )
+                {
+                if ( ClassifyIPv6Address( aDNS2 ) != EIPv6Unspecified )
+                    {
+                    aDNS1.SetL( aDNS2 );
+                    aDNS2.SetL( KDynamicIpv6Address );
+                    }
+                else
+                    {
+                    // Both are unspecified
+                    aDNSFromServer = ETrue;
+                    }
+                }
+            }
+        else // IPv4
+            {
+            if ( IsUnspecifiedIPv4Address( aDNS1 ) )
+                {
+                if ( !IsUnspecifiedIPv4Address( aDNS2 ) )
+                    {
+                    aDNS1.SetL( aDNS2 );
+                    aDNS2.SetL( KUnspecifiedIPv4 );
+                    }
+                else
+                    {
+                    // Both are unspecified
+                    aDNSFromServer = ETrue;
+                    }
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_CHECKDNSSERVERADDRESSL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// CCmPluginBaseEng::GetGenericCmRecordsL
+// -----------------------------------------------------------------------------
+EXPORT_C void CCmPluginBaseEng::GetPluginDataL(
+        CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETPLUGINDATAL_ENTRY );
+
+    if ( !aClientPluginInstance )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
+    aClientPluginInstance->iGenRecordArray.ResetAndDestroy();
+    aClientPluginInstance->iBearerSpecRecordArray.ResetAndDestroy();
+
+    aClientPluginInstance->iNamingMethod = iNamingMethod;
+    aClientPluginInstance->iLocationEnabled = iLocationEnabled;
+
+    if ( iIapRecord )
+        {
+        CCDIAPRecord* iapRecord =
+                static_cast<CCDIAPRecord*>( CCDRecordBase::CreateCopyRecordL( *iIapRecord ) );
+        CleanupStack::PushL( iapRecord );
+        iapRecord->SetElementId( iIapRecord->ElementId() );
+        aClientPluginInstance->iGenRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( iapRecord ) );
+        CleanupStack::Pop( iapRecord );
+        }
+    else
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    if ( iServiceRecord )
+        {
+        CCDRecordBase* serviceRecord = CopyServiceRecordL();
+        serviceRecord->SetElementId( iServiceRecord->ElementId() );
+        CleanupStack::PushL( serviceRecord );
+        aClientPluginInstance->iGenRecordArray.AppendL( serviceRecord );
+        CleanupStack::Pop( serviceRecord );
+        }
+    else
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    if ( iNetworkRecord )
+        {
+        CCDNetworkRecord* networkRecord =
+                static_cast<CCDNetworkRecord*>( CCDRecordBase::CreateCopyRecordL( *iNetworkRecord ) );
+        CleanupStack::PushL( networkRecord );
+        networkRecord->SetElementId( iNetworkRecord->ElementId() );
+        aClientPluginInstance->iGenRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( networkRecord ) );
+        CleanupStack::Pop( networkRecord );
+        }
+    else
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    if ( iWapAPRecord )
+        {
+        CCDWAPAccessPointRecord* wapAPRecord =
+                static_cast<CCDWAPAccessPointRecord*>( CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) );
+        CleanupStack::PushL( wapAPRecord );
+        wapAPRecord->SetElementId( iWapAPRecord->ElementId() );
+        aClientPluginInstance->iGenRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( wapAPRecord ) );
+        CleanupStack::Pop( wapAPRecord );
+        }
+    else
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    if ( iWapIPBearerRecord )
+        {
+        CCDWAPIPBearerRecord* wapIPBearerRecord =
+                static_cast<CCDWAPIPBearerRecord*>( CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );
+        CleanupStack::PushL( wapIPBearerRecord );
+        wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() );
+        aClientPluginInstance->iGenRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( wapIPBearerRecord ) );
+        CleanupStack::Pop( wapIPBearerRecord );
+        }
+    else
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    if ( iMetaDataRecord )
+        {
+        CCDIAPMetadataRecord* metaDataRecord =
+                new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId );
+        CleanupStack::PushL( metaDataRecord );
+        metaDataRecord->iIAP = IAPRecordElementId();
+        metaDataRecord->iMetadata.SetL( iMetaDataRecord->iMetadata );
+        metaDataRecord->iSeamlessness.SetL( iMetaDataRecord->iSeamlessness );
+        metaDataRecord->SetElementId( iMetaDataRecord->ElementId() );
+        // Record name is set during update.
+
+        aClientPluginInstance->iGenRecordArray.AppendL(
+                static_cast<CommsDat::CCDRecordBase*>( metaDataRecord ) );
+        CleanupStack::Pop( metaDataRecord );
+        }
+    else
+        {
+        aClientPluginInstance->iGenRecordArray.AppendL( NULL );
+        }
+
+    if ( iLocationRecord )
+        {
+        CCDLocationRecord* locationRecord =
+                static_cast<CCDLocationRecord*>( CCDRecordBase::CreateCopyRecordL( *iLocationRecord ) );
+        CleanupStack::PushL( locationRecord );
+        locationRecord->SetElementId( iLocationRecord->ElementId() );
+        aClientPluginInstance->iGenRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( locationRecord ) );
+        CleanupStack::Pop( locationRecord );
+        }
+    else
+        {
+        aClientPluginInstance->iGenRecordArray.AppendL( NULL );
+        }
+
+    if ( iProxyRecord )
+        {
+        CCDProxiesRecord* proxyRecord =
+                static_cast<CCDProxiesRecord*>( CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) );
+        CleanupStack::PushL( proxyRecord );
+        proxyRecord->SetElementId( iProxyRecord->ElementId() );
+        aClientPluginInstance->iGenRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( proxyRecord ) );
+        CleanupStack::Pop( proxyRecord );
+        }
+    else
+        {
+        aClientPluginInstance->iGenRecordArray.AppendL( NULL );
+        }
+
+    GetBearerSpecificRecordsL( aClientPluginInstance->iBearerSpecRecordArray );
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_GETPLUGINDATAL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// CCmPluginBaseEng::GetIntAttributeL
+// -----------------------------------------------------------------------------
+EXPORT_C TUint32 CCmPluginBaseEng::GetIntAttributeL(
+    TUint32 aAttribute,
+    CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETINTATTRIBUTEL_ENTRY );
+
+    TUint32 retVal( 0 );
+
+    switch ( aAttribute )
+        {
+        case ECmIapId: // If the CM has an ECmIapId then the ECmIapId is the ECmId.
+        case ECmId:
+            {
+            retVal = static_cast<CCDIAPRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KIapRecordIndex] )->RecordId();
+            }
+            break;
+        case ECmWapId:
+            {
+            retVal = static_cast<CCDWAPIPBearerRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPAccessPointId;
+            }
+            break;
+        case ECmIapServiceId:
+            {
+            retVal = static_cast<CCDIAPRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KIapRecordIndex] )->iService;
+            }
+            break;
+        case ECmBearerType:
+            {
+            retVal = iBearerType;
+            }
+            break;
+        case ECmDefaultPriority:
+            {
+            retVal = KDataMobilitySelectionPolicyPriorityWildCard;
+            }
+            break;
+        case ECmDefaultUiPriority:
+            {
+            retVal = KDataMobilitySelectionPolicyPriorityWildCard;
+            }
+            break;
+        case ECmNamingMethod:
+            {
+            retVal = iNamingMethod;
+            }
+            break;
+        case ECmSeamlessnessLevel:
+            {
+            if ( iMetaDataRecord )
+                {
+                retVal = static_cast<CCDIAPMetadataRecord*>(
+                        aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] )->iSeamlessness;
+                }
+            else
+                {
+                User::Leave( KErrNotFound );
+                }
+            }
+            break;
+        case ECmElementID:
+            {
+            if ( !iIapRecord )
+                {
+                User::Leave( KErrNotReady );
+                }
+
+            retVal = ( KCDMaskShowField & ( static_cast<CCDIAPRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KIapRecordIndex] )->ElementId() ) );
+            }
+            break;
+
+        case ECmLoadResult:
+            {
+            retVal = KErrNone;
+            }
+            break;
+
+        case ECmNetworkId:
+            {
+            retVal = static_cast<CCDIAPRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KIapRecordIndex] )->iNetwork;
+            }
+            break;
+        case ECmProxyPortNumber:
+            {
+            if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
+                {
+                User::Leave( KErrNotFound );
+                }
+
+            retVal = static_cast<CCDProxiesRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->iPortNumber;
+            }
+            break;
+        case ECmWapIPWSPOption:
+            {
+            retVal = static_cast<CCDWAPIPBearerRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPWSPOption;
+            }
+            break;
+        case ECmWapIPProxyPort:
+            {
+            retVal = static_cast<CCDWAPIPBearerRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPProxyPort;
+            }
+            break;
+        default:
+            {
+            retVal = GetBearerIntAttributeL( aAttribute,
+                                             aClientPluginInstance->iGenRecordArray,
+                                             aClientPluginInstance->iBearerSpecRecordArray );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_GETINTATTRIBUTEL_EXIT );
+
+    return retVal;
+    }
+
+//-----------------------------------------------------------------------------
+// CCmPluginBaseEng::GetBoolAttributeL
+// -----------------------------------------------------------------------------
+EXPORT_C TBool CCmPluginBaseEng::GetBoolAttributeL(
+    TUint32 aAttribute,
+    CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETBOOLATTRIBUTEL_ENTRY );
+
+    TBool retVal( EFalse );
+
+    switch ( aAttribute )
+        {
+        case ECmProtected:
+            {
+            retVal = IsProtected();
+            }
+            break;
+        case ECmHidden:
+            {
+            CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+                                aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+            retVal = iapRecord->Attributes() & ECDHidden;
+            }
+            break;
+        case ECmProxyUsageEnabled:
+            {
+            if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
+                {
+                retVal = EFalse;
+                }
+
+            retVal = static_cast<CCDProxiesRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->iUseProxyServer;
+            }
+            break;
+        case ECmDestination:
+            {
+            TRAPD( err, retVal = GetBearerBoolAttributeL( aAttribute,
+                                                          aClientPluginInstance->iGenRecordArray,
+                                                          aClientPluginInstance->iBearerSpecRecordArray ) );
+            if ( err )
+                {
+                if ( err == KErrNotFound )
+                    {
+                    retVal = EFalse;
+                    }
+                else
+                    {
+                    User::Leave( err );
+                    }
+                }
+            }
+            break;
+        case ECmChargeCardUsageEnabled:
+            {
+            retVal = EFalse;
+            }
+            break;
+        case ECmCoverage:
+            // In default the plugin has no network coverage
+            {
+            TRAPD( err, retVal = GetBearerBoolAttributeL( aAttribute,
+                                                          aClientPluginInstance->iGenRecordArray,
+                                                          aClientPluginInstance->iBearerSpecRecordArray ) );
+            if ( err )
+                {
+                if ( err == KErrNotFound )
+                    {
+                    retVal = EFalse;
+                    }
+                else
+                    {
+                    User::Leave( err );
+                    }
+                }
+            }
+            break;
+        case ECmMetaHighlight:
+            {
+            CCDIAPMetadataRecord* metadataRecord =
+                static_cast<CCDIAPMetadataRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
+            retVal = metadataRecord->iMetadata & EMetaHighlight;
+            }
+            break;
+        case ECmMetaHiddenAgent:
+            {
+            CCDIAPMetadataRecord* metadataRecord =
+                static_cast<CCDIAPMetadataRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
+            retVal = metadataRecord->iMetadata & EMetaHiddenAgent;
+            }
+            break;
+        case ECmVirtual:
+            {
+            retVal = EFalse;
+            }
+            break;
+        case ECmWapIPSecurity:
+            {
+            retVal = static_cast<CCDWAPIPBearerRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPSecurity;
+            }
+            break;
+        default:
+            {
+            retVal = GetBearerBoolAttributeL( aAttribute,
+                                              aClientPluginInstance->iGenRecordArray,
+                                              aClientPluginInstance->iBearerSpecRecordArray );
+            }
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_GETBOOLATTRIBUTEL_EXIT );
+
+    return retVal;
+    }
+
+// -----------------------------------------------------------------------------
+// CCmPluginBaseEng::GetStringAttributeL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* CCmPluginBaseEng::GetStringAttributeL(
+    TUint32 aAttribute,
+    CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETSTRINGATTRIBUTEL_ENTRY );
+
+    HBufC* retVal = NULL;
+
+    switch ( aAttribute )
+        {
+        case ECmStartPage:
+            {
+            CCDWAPAccessPointRecord* wapAPRecord =
+                static_cast<CCDWAPAccessPointRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KWAPAPRecordIndex] );
+
+            retVal = TPtrC( wapAPRecord->iWAPStartPage).AllocL();
+            }
+            break;
+        case ECmName:
+            {
+            CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+                                aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+            retVal = TPtrC( iapRecord->iRecordName ).AllocL();
+            }
+            break;
+        case ECmProxyServerName:
+            {
+            if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
+                {
+                User::Leave( KErrNotFound );
+                }
+
+            CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
+
+            retVal = TPtrC( proxyRecord->iServerName ).AllocL();
+            }
+            break;
+        case ECmProxyProtocolName:
+            {
+            if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
+                {
+                User::Leave( KErrNotFound );
+                }
+
+            CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
+
+            retVal = TPtrC( proxyRecord->iExceptions ).AllocL();
+            }
+            break;
+        case ECmProxyExceptions:
+            {
+            if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
+                {
+                User::Leave( KErrNotFound );
+                }
+
+            CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
+
+            retVal = TPtrC( proxyRecord->iProtocolName ).AllocL();
+            }
+            break;
+        case ECmWapIPGatewayAddress:
+            {
+            if ( !aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )
+                {
+                User::Leave( KErrNotFound );
+                }
+
+            CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] );
+
+            retVal = TPtrC( wapIPBearerRecord->iWAPGatewayAddress ).AllocL();
+            }
+            break;
+        case ECmWapIPProxyLoginName:
+            {
+            if ( !aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )
+                {
+                User::Leave( KErrNotFound );
+                }
+
+            CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] );
+
+            retVal = TPtrC( wapIPBearerRecord->iWAPProxyLoginName ).AllocL();
+            }
+            break;
+        case ECmWapIPProxyLoginPass:
+            {
+            if ( !aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )
+                {
+                User::Leave( KErrNotFound );
+                }
+
+            CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] );
+
+            retVal = TPtrC( wapIPBearerRecord->iWAPProxyLoginPass ).AllocL();
+            }
+            break;
+        default:
+            {
+            retVal = GetBearerStringAttributeL( aAttribute,
+                                                aClientPluginInstance->iGenRecordArray,
+                                                aClientPluginInstance->iBearerSpecRecordArray );
+            }
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_GETSTRINGATTRIBUTEL_EXIT );
+
+    return retVal;
+    }
+
+// -----------------------------------------------------------------------------
+// CCmPluginBaseEng::GetString8AttributeL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* CCmPluginBaseEng::GetString8AttributeL(
+    TUint32 aAttribute,
+    CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETSTRING8ATTRIBUTEL_ENTRY );
+
+    HBufC8* retVal = NULL;
+
+    switch ( aAttribute )
+        {
+        default:
+            {
+            retVal = GetBearerString8AttributeL( aAttribute,
+                                                 aClientPluginInstance->iGenRecordArray,
+                                                 aClientPluginInstance->iBearerSpecRecordArray );
+            }
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_GETSTRING8ATTRIBUTEL_EXIT );
+
+    return retVal;
+    }
+
+//-----------------------------------------------------------------------------
+// CCmPluginBaseEng::GetIntAttributeL
+// -----------------------------------------------------------------------------
+EXPORT_C void CCmPluginBaseEng::SetIntAttributeL(
+    TUint32 aAttribute,
+    TUint32 aValue,
+    CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETINTATTRIBUTEL_ENTRY );
+
+    switch ( aAttribute )
+        {
+        case ECmNamingMethod:
+            {
+            aClientPluginInstance->iNamingMethod = ( TNamingMethod )aValue;
+            }
+            break;
+
+        case ECmCommsDBBearerType:
+        case ECmElementID:
+        case ECmIapId:
+        case ECmId:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+
+        case ECmSeamlessnessLevel:
+            {
+            if ( aValue == ESeamlessnessConfirmFirst || aValue == ESeamlessnessShowprogress )
+                {
+                static_cast<CCDIAPMetadataRecord*>(
+                        aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] )->
+                                iSeamlessness.SetL( aValue );
+                }
+            else
+                {
+                User::Leave( KErrNotSupported );
+                }
+            }
+            break;
+
+        case ECmNetworkId:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        case ECmProxyPortNumber:
+            {
+            if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
+                {
+                CCDProxiesRecord* proxyRecord =
+                        static_cast<CCDProxiesRecord*>( CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) );
+                CleanupStack::PushL( proxyRecord );
+                proxyRecord->SetElementId( iProxyRecord->ElementId() );
+                aClientPluginInstance->iGenRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( proxyRecord ) );
+                CleanupStack::Pop( proxyRecord );
+                }
+
+            static_cast<CCDProxiesRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
+                        ->iPortNumber = aValue;
+            }
+            break;
+        case ECmWapIPWSPOption:
+            {
+            if ( aValue > KMaxTUint8 )
+                {
+                User::Leave( KErrArgument );
+                }
+            else
+                {
+                static_cast<CCDWAPIPBearerRecord*>(
+                        aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPWSPOption.SetL( aValue );
+                }
+            }
+            break;
+        case ECmWapIPProxyPort:
+            {
+            static_cast<CCDWAPIPBearerRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPProxyPort.SetL( aValue );
+            }
+            break;
+        default:
+            {
+            SetBearerIntAttributeL( aAttribute,
+                                    aValue,
+                                    aClientPluginInstance->iGenRecordArray,
+                                    aClientPluginInstance->iBearerSpecRecordArray );
+            }
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_SETINTATTRIBUTEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// CCmPluginBaseEng::SetBoolAttributeL
+// -----------------------------------------------------------------------------
+EXPORT_C void CCmPluginBaseEng::SetBoolAttributeL(
+    TUint32 aAttribute,
+    TBool aValue,
+    CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETBOOLATTRIBUTEL_ENTRY );
+
+    CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+                        aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case ECmProtected:
+            {
+            /**
+             * ECDProtectedWrite attribute is set in
+             * - iap record
+             * - network record
+             * - iapmetadata record
+             * - wap records
+             * - proxy record
+             * And depending the bearer
+             * - service record
+             * - bearer record
+             * - other bearer specific records
+             */
+            SetAttribute( iapRecord, ECDProtectedWrite, aValue );
+            }
+            break;
+        case ECmHidden:
+            {
+            /**
+             * ECDHidden attribute is set in
+             * - iap record
+             * - network record
+             * - iapmetadata record
+             * - wap records
+             * - proxy record
+             * And depending the bearer
+             * - service record
+             * - bearer record
+             * - other bearer specific records
+             */
+            SetAttribute( iapRecord, ECDHidden, aValue );
+            }
+            break;
+        case ECmProxyUsageEnabled:
+            {
+            if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
+                {
+                CCDProxiesRecord* proxyRecord =
+                        static_cast<CCDProxiesRecord*>( CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) );
+                CleanupStack::PushL( proxyRecord );
+                proxyRecord->SetElementId( iProxyRecord->ElementId() );
+                aClientPluginInstance->iGenRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( proxyRecord ) );
+                CleanupStack::Pop( proxyRecord );
+                }
+
+            static_cast<CCDProxiesRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
+                        ->iUseProxyServer = aValue;
+            }
+            break;
+        case ECmChargeCardUsageEnabled:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        case ECmLocationUsageEnabled:
+            {
+            EnableLocationL( aValue );
+            }
+            break;
+        case ECmMetaHighlight:
+            {
+            CCDIAPMetadataRecord* metadataRecord =
+                static_cast<CCDIAPMetadataRecord*>(
+                        aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
+            if ( aValue )
+                {
+                metadataRecord->iMetadata = EMetaHighlight | metadataRecord->iMetadata;
+                }
+            else
+                {
+                metadataRecord->iMetadata = ~EMetaHighlight & metadataRecord->iMetadata;
+                }
+            }
+            break;
+        case ECmMetaHiddenAgent:
+            {
+            CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
+            if ( aValue )
+                {
+                metadataRecord->iMetadata = EMetaHiddenAgent | metadataRecord->iMetadata;
+                }
+            else
+                {
+                metadataRecord->iMetadata = ~EMetaHiddenAgent & metadataRecord->iMetadata;
+                }
+            }
+            break;
+        case ECmWapIPSecurity:
+            {
+            static_cast<CCDWAPIPBearerRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPSecurity.SetL( aValue );
+            }
+            break;
+        default:
+            {
+            SetBearerBoolAttributeL( aAttribute,
+                                     aValue,
+                                     aClientPluginInstance->iGenRecordArray,
+                                     aClientPluginInstance->iBearerSpecRecordArray );
+            }
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_SETBOOLATTRIBUTEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// CCmPluginBaseEng::SetStringAttributeL
+// -----------------------------------------------------------------------------
+EXPORT_C void CCmPluginBaseEng::SetStringAttributeL(
+    TUint32 aAttribute,
+    const TDesC16& aValue,
+    CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETSTRINGATTRIBUTEL_ENTRY );
+
+    switch ( aAttribute )
+        {
+        case ECmStartPage:
+            {
+            CCDWAPAccessPointRecord* wapAPRecord =
+                static_cast<CCDWAPAccessPointRecord*>(
+                        aClientPluginInstance->iGenRecordArray[KWAPAPRecordIndex] );
+
+            wapAPRecord->iWAPStartPage.SetL( aValue );
+            }
+            break;
+        case ECmName:
+            {
+            CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+
+            SetNameL( aValue, iapRecord, aClientPluginInstance->iNamingMethod );
+            }
+            break;
+        case ECmProxyServerName:
+            {
+            CCDProxiesRecord* proxyRecord =
+                    static_cast<CCDProxiesRecord*>(
+                            aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
+            if ( !proxyRecord )
+                {
+                proxyRecord = static_cast<CCDProxiesRecord *>
+                              ( CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord ) );
+
+                // map proxy record to this iap.
+                proxyRecord->iService =
+                        static_cast<CCDProxiesRecord*>(
+                                aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId();
+
+                aClientPluginInstance->iGenRecordArray.Insert( proxyRecord, KProxyRecordIndex );
+                }
+
+            SetProxyServerNameL( aValue, proxyRecord );
+            }
+            break;
+        case ECmProxyProtocolName:
+            {
+            CCDProxiesRecord* proxyRecord =
+                    static_cast<CCDProxiesRecord*>(
+                            aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
+            if ( !proxyRecord )
+                {
+                proxyRecord = static_cast<CCDProxiesRecord *>
+                              ( CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord ) );
+
+                // map proxy record to this iap.
+                proxyRecord->iService =
+                        static_cast<CCDProxiesRecord*>(
+                                aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId();
+
+                aClientPluginInstance->iGenRecordArray.Insert( proxyRecord, KProxyRecordIndex );
+                }
+
+            proxyRecord->iProtocolName.SetL( aValue );
+            }
+            break;
+        case ECmProxyExceptions:
+            {
+            CCDProxiesRecord* proxyRecord =
+                    static_cast<CCDProxiesRecord*>(
+                            aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] );
+            if ( !proxyRecord )
+                {
+                proxyRecord = static_cast<CCDProxiesRecord *>
+                              ( CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord ) );
+
+                // map proxy record to this iap.
+                proxyRecord->iService =
+                        static_cast<CCDProxiesRecord*>(
+                                aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId();
+
+                aClientPluginInstance->iGenRecordArray.Insert( proxyRecord, KProxyRecordIndex );
+                }
+
+            proxyRecord->iExceptions.SetL( aValue );
+            }
+            break;
+        case ECmWapIPGatewayAddress:
+            {
+            CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] );
+
+            wapIPBearerRecord->iWAPGatewayAddress.SetL( aValue );
+            }
+            break;
+        case ECmWapIPProxyLoginName:
+            {
+            CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] );
+
+            wapIPBearerRecord->iWAPProxyLoginName.SetL( aValue );
+            }
+            break;
+        case ECmWapIPProxyLoginPass:
+            {
+            CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
+                    aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] );
+
+            wapIPBearerRecord->iWAPProxyLoginPass.SetL( aValue );
+            }
+            break;
+        default:
+            {
+            SetBearerStringAttributeL( aAttribute,
+                                       aValue,
+                                       aClientPluginInstance->iGenRecordArray,
+                                       aClientPluginInstance->iBearerSpecRecordArray );
+            }
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_SETSTRINGATTRIBUTEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// CCmPluginBaseEng::SetString8AttributeL
+// -----------------------------------------------------------------------------
+EXPORT_C void CCmPluginBaseEng::SetString8AttributeL(
+    TUint32 aAttribute,
+    const TDesC8& aValue,
+    CCmClientPluginInstance* aClientPluginInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETSTRING8ATTRIBUTEL_ENTRY );
+
+    switch ( aAttribute )
+        {
+        default:
+            {
+            SetBearerString8AttributeL( aAttribute,
+                                        aValue,
+                                        aClientPluginInstance->iGenRecordArray,
+                                        aClientPluginInstance->iBearerSpecRecordArray );
+            }
+        }
+    OstTraceFunctionExit0( CCMPLUGINBASEENG_SETSTRING8ATTRIBUTEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::IsUnspecifiedIPv4Address
+// ---------------------------------------------------------------------------
+//
+TBool CCmPluginBaseEng::IsUnspecifiedIPv4Address( const TDesC& aIpv4Address )
+    {
+    OstTraceFunctionEntry0( _ISUNSPECIFIEDIPV4ADDRESS_ENTRY );
+
+    if ( aIpv4Address.Length() == 0 || !aIpv4Address.CompareF( KUnspecifiedIPv4 ) )
+        {
+        OstTraceFunctionExit0( _ISUNSPECIFIEDIPV4ADDRESS_EXIT );
+        return ETrue;
+        }
+
+    OstTraceFunctionExit0( DUP1__ISUNSPECIFIEDIPV4ADDRESS_EXIT );
+
+    return EFalse;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginBaseEng::ClassifyIPv6Address
+// ---------------------------------------------------------------------------
+//
+TIPv6Types CCmPluginBaseEng::ClassifyIPv6Address( const TDesC& aIpv6Address )
+    {
+    OstTraceFunctionEntry0( _CLASSIFYIPV6ADDRESS_ENTRY );
+
+    if ( aIpv6Address.Length() == 0 || !aIpv6Address.CompareF( KDynamicIpv6Address ) )
+        {
+        OstTraceFunctionExit0( _CLASSIFYIPV6ADDRESS_EXIT );
+
+        return EIPv6Unspecified;
+        }
+    else if ( !aIpv6Address.CompareF( KKnownIp6NameServer1 ) ||
+            !aIpv6Address.CompareF( KKnownIp6NameServer2 ) )
+        {
+        OstTraceFunctionExit0( DUP1__CLASSIFYIPV6ADDRESS_EXIT );
+
+        return EIPv6WellKnown;
+        }
+
+    OstTraceFunctionExit0( DUP2__CLASSIFYIPV6ADDRESS_EXIT );
+
+    return EIPv6UserDefined;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseengtextresolver.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2010 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:   Provides functionality for text resolving
+*
+*/
+
+#include <hb/hbcore/hbtextresolversymbian.h>
+#include "ccmpluginbaseengtextresolver.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "ccmpluginbaseengtextresolverTraces.h"
+#endif
+
+
+HBufC* CCmPluginBaseEngTextResolver::ResolveTextL( const TDesC& aTextId )
+    {
+    _LIT(KCMManagerTranslationFile, "cmmanager_");
+    _LIT(KTranslationPath, "\\resource\\qt\\translations");
+    
+    TBool result = HbTextResolverSymbian::Init( KCMManagerTranslationFile,
+                                                KTranslationPath );
+    if ( result )
+        {
+        OstTrace0( TRACE_ERROR, CCMPLUGINBASEENGTEXTRESOLVER_RESOLVETEXTL, "CCmPluginBaseEngTextResolver::ResolveTextL" );
+        }
+    
+    return HbTextResolverSymbian::LoadL( aTextId );        
+    }
+
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmpluginbase/traces/OstTraceDefinitions.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+// #define OST_TRACE_COMPILER_IN_USE
+#include <opensystemtrace.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmpluginbase/traces/fixed_id.definitions	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,397 @@
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_FLOW=0x7
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ADDCOMMONCONVERSIONTABLEL_ENTRY=0x99
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ADDCOMMONCONVERSIONTABLEL_EXIT=0x9a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ADDCONVERSTIONTABLEL_ENTRY=0x97
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ADDCONVERSTIONTABLEL_EXIT=0x98
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ADDRESOURCEFILEL_ENTRY=0x41
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ADDRESOURCEFILEL_EXIT=0x42
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ALLDESTINATIONSL=0x184
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ALLOCREADL_ENTRY=0x45
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ALLOCREADL_EXIT=0x46
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CCMPLUGINBASEENG_ENTRY=0x1b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CCMPLUGINBASEENG_EXIT=0x1c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CHECKDNSSERVERADDRESSL_ENTRY=0xc0
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CHECKDNSSERVERADDRESSL_EXIT=0xc1
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CHECKFORCOMMONATTRIBUTE_ENTRY=0xac
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CHECKFORCOMMONATTRIBUTE_EXIT=0xad
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CHECKIFALREADYCONNECTED_ENTRY=0xa3
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CHECKIFALREADYCONNECTED_EXIT=0xa4
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CHECKIFNAMEMODIFIEDL_ENTRY=0xa5
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CHECKIFNAMEMODIFIEDL_EXIT=0xa6
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CHECKSPACEBELOWCRITICALLEVELL_ENTRY=0xc3
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CHECKSPACEBELOWCRITICALLEVELL_EXIT=0xc4
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_COMMITTRANSACTIONL_ENTRY=0x49
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_COMMITTRANSACTIONL_EXIT=0x4a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_COMMONATTRIBUTE_ENTRY=0xaf
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_COMMONATTRIBUTE_EXIT=0xb0
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CONSTRUCTL_ENTRY=0x1f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CONSTRUCTL_EXIT=0x20
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CONVERSIONTABLE_ENTRY=0xbb
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CONVERSIONTABLE_EXIT=0xbc
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CONVTABLEITEM_ENTRY=0xb8
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CONVTABLEITEM_EXIT=0xb9
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_COPYATTRIBUTES_ENTRY=0x83
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_COPYATTRIBUTES_EXIT=0x84
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CREATECOPYL_ENTRY=0x3f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CREATECOPYL_EXIT=0x40
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CREATENEWL_ENTRY=0x3d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_CREATENEWL_EXIT=0x3e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_DELETEL_ENTRY=0x39
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_DELETEL_EXIT=0x3a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_DESTINATIONPROTECTIONLEVELL_ENTRY=0xdf
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_DESTINATION_ENTRY=0x33
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_DESTINATION_EXIT=0x34
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_DOLOADL_ENTRY=0x4d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_DOLOADL_EXIT=0x4e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_DOMAKEVALIDNAMEL_ENTRY=0x89
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_DOMAKEVALIDNAMEL_EXIT=0x8a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_EASYWLANIDL=0x18b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ENABLECHARGECARDL_ENTRY=0x72
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ENABLECHARGECARDL_EXIT=0x73
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ENABLELOCATIONL_ENTRY=0x74
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ENABLELOCATIONL_EXIT=0x75
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ENABLEPROXYL_ENTRY=0x70
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ENABLEPROXYL_EXIT=0x71
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ENSUREMAXLENGTHLC_ENTRY=0x8b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ENSUREMAXLENGTHLC_EXIT=0x8c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ESCAPETEXTLC_ENTRY=0x93
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ESCAPETEXTLC_EXIT=0x94
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_FEATURESUPPORTED_ENTRY=0xb2
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_FEATURESUPPORTED_EXIT=0xb3
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_FIELDBYATTRIBUTEL_ENTRY=0xbd
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_FINDFIELDL_ENTRY=0x9f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_FINDFIELDL_EXIT=0xa0
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_FINDSEAMLESSNESSRECORDL_ENTRY=0x87
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_FINDSEAMLESSNESSRECORDL_EXIT=0x88
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_FINDWAPRECORDL_ENTRY=0x85
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_FINDWAPRECORDL_EXIT=0x86
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GENERICSTRINGWRITERL_ENTRY=0xc9
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GENERICSTRINGWRITERL_EXIT=0xca
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETADDITIONALUIDS_ENTRY=0xd0
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETADDITIONALUIDS_EXIT=0xd1
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETBOOLATTRIBUTEL_ENTRY=0x23
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETBOOLATTRIBUTEL_EXIT=0x24
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETCOMMONBOOLATTRIBUTEL_ENTRY=0xd5
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETCOMMONINTATTRIBUTEL_ENTRY=0xd4
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETCOMMONSTRINGATTRIBUTEL_ENTRY=0xd6
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETCONNECTIONMETHODINFOBOOLL=0x186
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETCONNECTIONMETHODINFOINTL=0x185
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETCONNECTIONMETHODINFOSTRING8L=0x188
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETCONNECTIONMETHODINFOSTRINGL=0x187
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETDESTINATIONID=0x18a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETDESTINATIONNAMELC=0x189
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETINTATTRIBUTEL_ENTRY=0x21
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETINTATTRIBUTEL_EXIT=0x22
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETLOCATIONIDL_ENTRY=0xaa
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETLOCATIONIDL_EXIT=0xab
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETPOSTFIX_ENTRY=0x8f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETPOSTFIX_EXIT=0x90
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETPREFIX_ENTRY=0x8d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETPREFIX_EXIT=0x8e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETSTRING8ATTRIBUTEL_ENTRY=0x27
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETSTRING8ATTRIBUTEL_EXIT=0x28
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETSTRINGATTRIBUTEL_ENTRY=0x25
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETSTRINGATTRIBUTEL_EXIT=0x26
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GLOBALBEARERPRIORITY_ENTRY=0xb4
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GLOBALUIBEARERPRIORITY_ENTRY=0xb5
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_IAPRECORDELEMENTID_ENTRY=0xa8
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_IDISVALID_ENTRY=0xc5
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_IDISVALID_EXIT=0xc6
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ISDESTINATIONCONNECTEDL_ENTRY=0xe1
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ISDESTINATIONHIDDENL_ENTRY=0xe0
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ISPROTECTED_ENTRY=0xa9
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ISVALIDNAMEL_ENTRY=0x91
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ISVALIDNAMEL_EXIT=0x92
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADCHARGECARDSETTINGL_ENTRY=0x57
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADCHARGECARDSETTINGL_EXIT=0x58
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADCOMMONSERVICESETTINGL_ENTRY=0xdd
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADCOMMONSERVICESETTINGL_EXIT=0xde
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADIAPRECORDL_ENTRY=0x51
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADIAPRECORDL_EXIT=0x52
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADLOCATIONSETTINGL_ENTRY=0x5c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADLOCATIONSETTINGL_EXIT=0x5d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADL_ENTRY=0x3b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADL_EXIT=0x3c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADNETWORKSETTINGL_ENTRY=0x5a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADNETWORKSETTINGL_EXIT=0x5b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADPROXYSETTINGL_ENTRY=0x53
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADPROXYSETTINGL_EXIT=0x54
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADSEAMLESSNESSRECORDL_ENTRY=0x78
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADSEAMLESSNESSRECORDL_EXIT=0x79
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADSERVICESETTINGL_ENTRY=0x55
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADSERVICESETTINGL_EXIT=0x56
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADWAPRECORDL_ENTRY=0x76
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_LOADWAPRECORDL_EXIT=0x77
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_MAPPEDCOMMONATTRIBUTE_ENTRY=0xcb
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_MAPPEDCOMMONATTRIBUTE_EXIT=0xcc
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_NEWSEAMLESSNESSRECORDL_ENTRY=0x7f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_NEWSEAMLESSNESSRECORDL_EXIT=0x80
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_NEWWAPRECORDL_ENTRY=0x7d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_NEWWAPRECORDL_EXIT=0x7e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_NUMOFCONNMETHODREFERENCESL_ENTRY=0x37
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_OPENTRANSACTIONLC_ENTRY=0x47
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_OPENTRANSACTIONLC_EXIT=0x48
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_PARENTDESTINATION_ENTRY=0xce
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_PARENTDESTINATION_EXIT=0xcf
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_PREPARETOLOADRECORDSL_ENTRY=0x4f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_PREPARETOLOADRECORDSL_EXIT=0x50
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_PREPARETOUPDATERECORDSL_ENTRY=0x5e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_PREPARETOUPDATERECORDSL_EXIT=0x5f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_REMOVECOMMONCONVERSIONTABLE_ENTRY=0x9d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_REMOVECOMMONCONVERSIONTABLE_EXIT=0x9e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_REMOVECONVERSIONTABLE_ENTRY=0x9b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_REMOVECONVERSIONTABLE_EXIT=0x9c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_REMOVERESOURCEFILE_ENTRY=0x43
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_REMOVERESOURCEFILE_EXIT=0x44
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_RESET_ENTRY=0xa1
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_RESET_EXIT=0xa2
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_RESTOREATTRIBUTEL_ENTRY=0x31
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_RESTOREATTRIBUTEL_EXIT=0x32
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ROLLBACKTRANSACTION_ENTRY=0x4b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_ROLLBACKTRANSACTION_EXIT=0x4c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SESSION_ENTRY=0x38
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETATTRIBUTE_ENTRY=0x81
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETATTRIBUTE_EXIT=0x82
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETBOOLATTRIBUTEL_ENTRY=0x2b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETBOOLATTRIBUTEL_EXIT=0x2c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETCOMMONBOOLATTRIBUTEL_ENTRY=0xd9
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETCOMMONBOOLATTRIBUTEL_EXIT=0xda
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETCOMMONINTATTRIBUTEL_ENTRY=0xd7
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETCOMMONINTATTRIBUTEL_EXIT=0xd8
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETCOMMONSTRINGATTRIBUTEL_ENTRY=0xdb
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETCOMMONSTRINGATTRIBUTEL_EXIT=0xdc
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETDNSSERVERADDRESSL_ENTRY=0xbe
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETDNSSERVERADDRESSL_EXIT=0xbf
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETIDVALIDITY_ENTRY=0xc7
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETIDVALIDITY_EXIT=0xc8
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETINTATTRIBUTEL_ENTRY=0x29
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETINTATTRIBUTEL_EXIT=0x2a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETNAMEL_ENTRY=0x95
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETNAMEL_EXIT=0x96
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETPREDEFINEDID_ENTRY=0xd2
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETPREDEFINEDID_EXIT=0xd3
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETPROXYSERVERNAMEL_ENTRY=0xb6
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETPROXYSERVERNAMEL_EXIT=0xb7
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETSTRING8ATTRIBUTEL_ENTRY=0x2f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETSTRING8ATTRIBUTEL_EXIT=0x30
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETSTRINGATTRIBUTEL_ENTRY=0x2d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_SETSTRINGATTRIBUTEL_EXIT=0x2e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATECHARGECARDRECORDL_ENTRY=0x66
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATECHARGECARDRECORDL_EXIT=0x67
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATECONNPREFSETTINGL_ENTRY=0x6e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATECONNPREFSETTINGL_EXIT=0x6f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATEIAPRECORDL_ENTRY=0x60
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATEIAPRECORDL_EXIT=0x61
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATELOCATIONRECORDL_ENTRY=0x6c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATELOCATIONRECORDL_EXIT=0x6d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATEL_ENTRY=0x35
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATEL_EXIT=0x36
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATENETWORKRECORDL_ENTRY=0x6a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATENETWORKRECORDL_EXIT=0x6b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATEPROXYRECORDL_ENTRY=0x62
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATEPROXYRECORDL_EXIT=0x63
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATESEAMLESSNESSRECORDL_ENTRY=0x64
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATESEAMLESSNESSRECORDL_EXIT=0x65
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATESERVICERECORDL_ENTRY=0x68
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATESERVICERECORDL_EXIT=0x69
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATEWAPRECORDL_ENTRY=0x7a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_UPDATEWAPRECORDL_EXIT=0x7b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEPRIVATE_CCMPLUGINBASEPRIVATE_ENTRY=0x17
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEPRIVATE_CCMPLUGINBASEPRIVATE_EXIT=0x18
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_ADDITIONALRESET_ENTRY=0xee
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_ADDITIONALRESET_EXIT=0xef
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_ADDRESOURCEFILEL_ENTRY=0x122
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_ADDRESOURCEFILEL_EXIT=0x123
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_ALLOCREADL_ENTRY=0x126
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_BEARERRECORDIDLC_ENTRY=0xf2
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_BEARERRECORDIDLC_EXIT=0xf3
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_CANHANDLEIAPIDL_ENTRY=0xec
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_CCMPLUGINBASE_ENTRY=0xe4
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_CCMPLUGINBASE_EXIT=0xe5
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_CMMGR_ENTRY=0x164
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_COMMITTRANSACTIONL_ENTRY=0x129
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_COMMITTRANSACTIONL_EXIT=0x12a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_CONSTRUCTL_ENTRY=0xe8
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_CONSTRUCTL_EXIT=0xe9
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_COPYADDITIONALDATAL_ENTRY=0xfe
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_COPYADDITIONALDATAL_EXIT=0xff
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_COPYATTRIBUTES_ENTRY=0x15e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_COPYATTRIBUTES_EXIT=0x15f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_CREATEADDITIONALRECORDSL_ENTRY=0xfa
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_CREATEADDITIONALRECORDSL_EXIT=0xfb
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_CREATECOPYL_ENTRY=0x120
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_CREATECOPYL_EXIT=0x121
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_CREATEINSTANCEL_ENTRY=0xea
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_CREATEINSTANCEL_EXIT=0xeb
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_CREATENEWL_ENTRY=0x11e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_CREATENEWL_EXIT=0x11f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_CREATENEWSERVICERECORDL_ENTRY=0xf8
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_CREATENEWSERVICERECORDL_EXIT=0xf9
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_DECREMENTREFCOUNTER_ENTRY=0x16b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_DECREMENTREFCOUNTER_EXIT=0x16c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_DELETEADDITIONALRECORDSL_ENTRY=0xf6
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_DELETEADDITIONALRECORDSL_EXIT=0xf7
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_DELETEL_ENTRY=0x119
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_DESTINATION_ENTRY=0x114
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_DOLOADL_ENTRY=0x12b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_DOLOADL_EXIT=0x12c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_ENABLECHARGECARDL_ENTRY=0x14f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_ENABLECHARGECARDL_EXIT=0x150
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_ENABLELOCATIONL_ENTRY=0x151
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_ENABLELOCATIONL_EXIT=0x152
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_ENABLEPROXYL_ENTRY=0x14d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_ENABLEPROXYL_EXIT=0x14e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_FILTERPOSSIBLEPARENTSL_ENTRY=0x171
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_FILTERPOSSIBLEPARENTSL_EXIT=0x172
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_FINDSEAMLESSNESSRECORDL_ENTRY=0x161
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_FINDWAPRECORDL_ENTRY=0x160
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_GETADDITIONALUIDS_ENTRY=0x16f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_GETADDITIONALUIDS_EXIT=0x170
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_GETBOOLATTRIBUTEL_ENTRY=0x107
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_GETINTATTRIBUTEL_ENTRY=0x106
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_GETREFCOUNTER_ENTRY=0x16d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_GETREFCOUNTER_EXIT=0x16e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_GETSTRING8ATTRIBUTEL_ENTRY=0x109
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_GETSTRINGATTRIBUTEL_ENTRY=0x108
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_IAPRECORDELEMENTID_ENTRY=0x162
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_INCREMENTREFCOUNTER_ENTRY=0x169
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_INCREMENTREFCOUNTER_EXIT=0x16a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_ISLINKEDTOIAP_ENTRY=0x104
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_ISLINKEDTOSNAP_ENTRY=0x105
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADADDITIONALRECORDSL_ENTRY=0x100
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADADDITIONALRECORDSL_EXIT=0x101
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADCHARGECARDSETTINGL_ENTRY=0x135
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADCHARGECARDSETTINGL_EXIT=0x136
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADIAPRECORDL_ENTRY=0x12f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADIAPRECORDL_EXIT=0x130
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADLOCATIONSETTINGL_ENTRY=0x139
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADLOCATIONSETTINGL_EXIT=0x13a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADL_ENTRY=0x11a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADL_EXIT=0x11b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADNETWORKSETTINGL_ENTRY=0x137
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADNETWORKSETTINGL_EXIT=0x138
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADPROXYSETTINGL_ENTRY=0x131
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADPROXYSETTINGL_EXIT=0x132
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADSEAMLESSNESSRECORDL_ENTRY=0x155
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADSEAMLESSNESSRECORDL_EXIT=0x156
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADSERVICESETTINGL_ENTRY=0x133
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADSERVICESETTINGL_EXIT=0x134
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADWAPRECORDL_ENTRY=0x153
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_LOADWAPRECORDL_EXIT=0x154
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_NEWSEAMLESSNESSRECORDL_ENTRY=0x15b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_NEWWAPRECORDL_ENTRY=0x159
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_NEWWAPRECORDL_EXIT=0x15a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_NUMOFCONNMETHODREFERENCESL_ENTRY=0x117
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_OPENTRANSACTIONLC_ENTRY=0x127
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_OPENTRANSACTIONLC_EXIT=0x128
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_PARENTDESTINATION_ENTRY=0x163
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_PLUGIN_ENTRY=0x167
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_PLUGIN_EXIT=0x168
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_PREPARETOCOPYDATAL_ENTRY=0xfc
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_PREPARETOCOPYDATAL_EXIT=0xfd
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_PREPARETODELETERECORDSL_ENTRY=0xf4
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_PREPARETODELETERECORDSL_EXIT=0xf5
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_PREPARETOLOADRECORDSL_ENTRY=0x12d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_PREPARETOLOADRECORDSL_EXIT=0x12e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_PREPARETOUPDATERECORDSL_ENTRY=0x13b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_PREPARETOUPDATERECORDSL_EXIT=0x13c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_RELOADL_ENTRY=0x11c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_RELOADL_EXIT=0x11d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_REMOVERESOURCEFILE_ENTRY=0x124
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_REMOVERESOURCEFILE_EXIT=0x125
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_RESTOREATTRIBUTEL_ENTRY=0x112
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_RESTOREATTRIBUTEL_EXIT=0x113
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_SERVICERECORDIDLC_ENTRY=0xf0
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_SERVICERECORDIDLC_EXIT=0xf1
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_SESSION_ENTRY=0x118
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_SETATTRIBUTE_ENTRY=0x15c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_SETATTRIBUTE_EXIT=0x15d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_SETBOOLATTRIBUTEL_ENTRY=0x10c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_SETBOOLATTRIBUTEL_EXIT=0x10d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_SETINTATTRIBUTEL_ENTRY=0x10a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_SETINTATTRIBUTEL_EXIT=0x10b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_SETPLUGIN_ENTRY=0x165
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_SETPLUGIN_EXIT=0x166
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_SETSTRING8ATTRIBUTEL_ENTRY=0x110
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_SETSTRING8ATTRIBUTEL_EXIT=0x111
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_SETSTRINGATTRIBUTEL_ENTRY=0x10e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_SETSTRINGATTRIBUTEL_EXIT=0x10f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATEADDITIONALRECORDSL_ENTRY=0x102
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATEADDITIONALRECORDSL_EXIT=0x103
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATECHARGECARDRECORDL_ENTRY=0x143
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATECHARGECARDRECORDL_EXIT=0x144
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATECONNPREFSETTINGL_ENTRY=0x14b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATECONNPREFSETTINGL_EXIT=0x14c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATEIAPRECORDL_ENTRY=0x13d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATEIAPRECORDL_EXIT=0x13e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATELOCATIONRECORDL_ENTRY=0x149
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATELOCATIONRECORDL_EXIT=0x14a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATEL_ENTRY=0x115
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATEL_EXIT=0x116
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATENETWORKRECORDL_ENTRY=0x147
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATENETWORKRECORDL_EXIT=0x148
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATEPROXYRECORDL_ENTRY=0x13f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATEPROXYRECORDL_EXIT=0x140
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATESEAMLESSNESSRECORDL_ENTRY=0x141
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATESEAMLESSNESSRECORDL_EXIT=0x142
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATESERVICERECORDL_ENTRY=0x145
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATESERVICERECORDL_EXIT=0x146
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATEWAPRECORDL_ENTRY=0x157
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASE_UPDATEWAPRECORDL_EXIT=0x158
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLANBASE_BEARERRECORDIDLC_ENTRY=0x17e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLANBASE_BEARERRECORDIDLC_EXIT=0x17f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLANBASE_CCMPLUGINLANBASE_ENTRY=0x173
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLANBASE_CCMPLUGINLANBASE_EXIT=0x174
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLANBASE_CONSTRUCTL_ENTRY=0x177
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLANBASE_CONSTRUCTL_EXIT=0x178
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLANBASE_CREATENEWSERVICERECORDL_ENTRY=0x180
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLANBASE_CREATENEWSERVICERECORDL_EXIT=0x181
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLANBASE_LOADSERVICESETTINGL_ENTRY=0x179
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLANBASE_LOADSERVICESETTINGL_EXIT=0x17a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLANBASE_PREPARETOUPDATERECORDSL_ENTRY=0x182
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLANBASE_PREPARETOUPDATERECORDSL_EXIT=0x183
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLANBASE_SERVICERECORDIDLC_ENTRY=0x17c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLANBASE_SERVICERECORDIDLC_EXIT=0x17d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLANBASE_SERVICERECORD_ENTRY=0x17b
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINBASEENG_CCMPLUGINBASEENG_ENTRY=0x1d
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINBASEENG_CCMPLUGINBASEENG_EXIT=0x1e
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINBASEENG_CHECKDNSSERVERADDRESSL_EXIT=0xc2
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINBASEENG_CHECKFORCOMMONATTRIBUTE_EXIT=0xae
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINBASEENG_CHECKIFNAMEMODIFIEDL_EXIT=0xa7
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINBASEENG_COMMONATTRIBUTE_EXIT=0xb1
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINBASEENG_CONVTABLEITEM_EXIT=0xba
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINBASEENG_LOADCHARGECARDSETTINGL_EXIT=0x59
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINBASEENG_MAPPEDCOMMONATTRIBUTE_EXIT=0xcd
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINBASEENG_UPDATEWAPRECORDL_EXIT=0x7c
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINBASEPRIVATE_CCMPLUGINBASEPRIVATE_ENTRY=0x19
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINBASEPRIVATE_CCMPLUGINBASEPRIVATE_EXIT=0x1a
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINBASE_CANHANDLEIAPIDL_ENTRY=0xed
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINBASE_CCMPLUGINBASE_ENTRY=0xe6
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINBASE_CCMPLUGINBASE_EXIT=0xe7
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINLANBASE_CCMPLUGINLANBASE_ENTRY=0x175
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINLANBASE_CCMPLUGINLANBASE_EXIT=0x176
+[TRACE]TRACE_FLOW[0x7]_DUP1__CLASSIFYIPV6ADDRESS_EXIT=0x12
+[TRACE]TRACE_FLOW[0x7]_DUP1__ISUNSPECIFIEDIPV4ADDRESS_EXIT=0xf
+[TRACE]TRACE_FLOW[0x7]_DUP2__CLASSIFYIPV6ADDRESS_EXIT=0x13
+[TRACE]TRACE_FLOW[0x7]_TCMPLUGININITPARAM_TCMPLUGININITPARAM_ENTRY=0x15
+[TRACE]TRACE_FLOW[0x7]_TCMPLUGININITPARAM_TCMPLUGININITPARAM_EXIT=0x16
+[TRACE]TRACE_FLOW[0x7]__CHECKIPV4VALIDITYL_ENTRY=0x3
+[TRACE]TRACE_FLOW[0x7]__CHECKIPV4VALIDITYL_EXIT=0x4
+[TRACE]TRACE_FLOW[0x7]__CHECKIPV6VALIDITYL_ENTRY=0x5
+[TRACE]TRACE_FLOW[0x7]__CHECKIPV6VALIDITYL_EXIT=0x6
+[TRACE]TRACE_FLOW[0x7]__CHECKPORTNUMBERVALIDITYL_ENTRY=0x7
+[TRACE]TRACE_FLOW[0x7]__CHECKPORTNUMBERVALIDITYL_EXIT=0x8
+[TRACE]TRACE_FLOW[0x7]__CHECKRECORDIDVALIDITYL_ENTRY=0x9
+[TRACE]TRACE_FLOW[0x7]__CHECKRECORDIDVALIDITYL_EXIT=0xa
+[TRACE]TRACE_FLOW[0x7]__CHECKWAPWSPOPTIONVALIDITYL_ENTRY=0xb
+[TRACE]TRACE_FLOW[0x7]__CHECKWAPWSPOPTIONVALIDITYL_EXIT=0xc
+[TRACE]TRACE_FLOW[0x7]__CLASSIFYIPV6ADDRESS_ENTRY=0x10
+[TRACE]TRACE_FLOW[0x7]__CLASSIFYIPV6ADDRESS_EXIT=0x11
+[TRACE]TRACE_FLOW[0x7]__ISUNSPECIFIEDIPV4ADDRESS_ENTRY=0xd
+[TRACE]TRACE_FLOW[0x7]__ISUNSPECIFIEDIPV4ADDRESS_EXIT=0xe
+[TRACE]TRACE_FLOW[0x7]__READONLYATTRIBUTEL_ENTRY=0x1
+[TRACE]TRACE_FLOW[0x7]__READONLYATTRIBUTEL_EXIT=0x2
+[TRACE]TRACE_FLOW[0x7]__SETPROXYSERVERNAMEL_ENTRY=0x14
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETALLDESTINATIONSL_ENTRY=0xe2
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMPLUGINBASEENG_GETALLDESTINATIONSL_EXIT=0xe3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginlan/data/1020737B.rss	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2009-2010 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: 
+*     PacketData PlugIn's resource file
+*     
+*
+*/
+
+#include "ecom/RegistryInfo.rh"
+
+// Because attribute enums had to be added to namespace CMManager
+// it's not possible to included cmpluginlanbasedef.h
+// Thus bearer type id had to be redefine here.
+#define KUidLanBearerType  0x1020737A
+
+RESOURCE REGISTRY_INFO theInfo
+	{
+	dll_uid = 0x1020737B;
+	interfaces = 
+		{
+		INTERFACE_INFO
+			{
+			interface_uid = 0x10207377; // = KCMPluginInterfaceUid
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					implementation_uid = KUidLanBearerType;
+					version_no = 1;
+					display_name = "Lan";
+					default_data = "Lan";
+					opaque_data = "";
+					}
+				};
+			}
+		};
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginlan/group/bld.inf	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2009-2010 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: 
+*      Build information for the LAN plugin.   
+*      
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+//../Rom/cmmpluginlan.iby   CORE_MW_LAYER_IBY_EXPORT_PATH(cmmpluginlan.iby)
+
+PRJ_MMPFILES
+cmpluginlan.mmp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginlan/group/cmpluginlan.mmp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2009-2010 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: 
+*      Project specification for LAN Plugin.   
+*      
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET      cmpluginlan.dll
+UID         0x10009D8D 0x1020737B
+
+TARGETTYPE		PLUGIN
+
+CAPABILITY      CAP_ECOM_PLUGIN
+VENDORID        VID_DEFAULT
+
+SOURCEPATH  ../src
+
+SOURCE      cmpluginlanproxy.cpp
+SOURCE      cmpluginlan.cpp
+
+SOURCEPATH  ../data
+
+START RESOURCE 1020737B.rss
+TARGET cmpluginlan.rsc
+END
+
+// Component specific internal headers 
+USERINCLUDE			../inc
+USERINCLUDE         ../traces
+
+// ADO specific internal headers 
+SYSTEMINCLUDE		../../../../../inc
+
+//Macro to /epoc32 headers
+MW_LAYER_SYSTEMINCLUDE
+
+LIBRARY euser.lib
+LIBRARY	ECOM.LIB
+LIBRARY	cmmpluginbase.lib
+LIBRARY COMMSDAT.lib
+LIBRARY featmgr.lib
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginlan/inc/cmpluginlan.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,335 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*      Declaration of Lan interface implementation
+*      for "LAN" plugin
+*
+*
+*/
+
+
+#ifndef LAN_PLUGIN_H
+#define LAN_PLUGIN_H
+
+#include <cmpluginbaseeng.h>
+#include <cmpluginlandef.h>
+
+
+/**
+*  CCmPluginLan defines the functionality of lan bearer support.
+*  Most of the API is inherited from CCmPluginBaseEng class.
+*/
+NONSHARABLE_CLASS( CCmPluginLan ) : public CCmPluginBaseEng
+    {
+    public: // Constructors and destructor
+        /**
+         * Two phased constructor.
+         * @return Returns the LAN plugin object.
+         */
+        static CCmPluginLan* NewL( TCmPluginInitParam* aInitParam );
+
+        /**
+         * Destructor.
+         */
+        virtual ~CCmPluginLan();
+
+    public: // From CCmPluginBaseEng
+        /**
+         * Creates a new instance of LAN bearer plugin. The instance
+         * created represents a bearer, not a connection method.
+         * @param aInitParam Initialization data.
+         * @return Returns CCmPluginBaseEng type pointer which represents pure
+         * bearer instance for the cmm server.
+         */
+        virtual CCmPluginBaseEng* CreateInstanceL(
+                TCmPluginInitParam& aInitParam ) const;
+
+        /**
+         * Following GetBearerInfoXXXL methods return the values of the
+         * requested attributes. These values are LAN specific
+         * so they don't vary between LAN Conneciton Methods.
+         * @param aAttribute An attribute identifier.
+         * @return Returns the value requested. If not found leaves with
+         * KErrNotFound error code.
+         */
+
+        virtual TUint32 GetBearerInfoIntL( TUint32 aAttribute ) const;
+
+        virtual TBool GetBearerInfoBoolL( TUint32 aAttribute ) const;
+
+        virtual HBufC* GetBearerInfoStringL( TUint32 aAttribute ) const;
+
+        virtual HBufC8* GetBearerInfoString8L( TUint32 aAttribute ) const;
+
+        /**
+         * Checks if the plug-in can handle the Connection Method identified
+         * with parameter aIapId.
+         * @param aIapId IAPId of the Connection Method to be checked.
+         * @return ETrue if plug-in can handle the IAP, otherwise EFalse.
+         */
+        virtual TBool CanHandleIapIdL( TUint32 aIapId ) const;
+
+        /**
+        * Checks if the plug-in can handle the given IAP record.
+        * @param aIapRecord IAP record to be checked
+        * @return ETrue if plug-in can handle the IAP, otherwise EFalse.
+        */
+        virtual TBool CanHandleIapIdL(
+                CommsDat::CCDIAPRecord* aIapRecord ) const;
+
+    public: // From CCmPluginBaseEng concerning a Connection Method
+        /**
+         * Before generic side starts to request plugins to load records
+         * it calls this to give a possibility make some preparations
+         * if needed.
+         */
+        virtual void PreparePluginToLoadRecordsL();
+
+        /**
+         * Before generic side starts to request plugins to update records
+         * it calls this to give a possibility make some preparations
+         * if needed.
+         * @param aGenRecordArray An array of generic records to be updated.
+         * @param aBearerSpecRecordArray An array of bearer specific records
+         * to be updated.
+         */
+        virtual void PreparePluginToUpdateRecordsL(
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+         * Creates the CCDLANServiceRecord type service record.
+         */
+        virtual void CreateServiceRecordL();
+
+        /**
+         * Loads the service record. Service record pointer is stored to
+         * plugins generic side implementation(CCmPluginBaseEng).
+         */
+        void LoadServiceRecordL();
+
+        /**
+         * Returns the service record id of this Connection Method.
+         * @return Returns the id of the service record id of this Connection Method.
+         */
+        virtual TUint32 ServiceRecordId() const;
+
+        /**
+        * Returns the service record name of the Connection Method.
+        * @param aServiceName Name of the service record which CM's iap record
+        * points to.
+        */
+        virtual void ServiceRecordNameLC( HBufC* &aServiceName );
+
+        /**
+         * Writes the service record data to CommsDat.
+         * @param aGenRecordArray An array containing pointers to service
+         * record of the Connection Method.
+         * @param aBearerSpecRecordArray An array containing pointers to bearer
+         * specific records of the Connection Method.
+         */
+        virtual void UpdateServiceRecordL(
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+         * Creates LAN specific default records.
+         */
+        virtual void CreateBearerRecordsL();
+
+        /**
+         * Loads LAN specific records of the Connection Method.
+         */
+        virtual void LoadBearerRecordsL();
+
+        /**
+         * Returns the bearer record id of the Connection Method.
+         * @param aRecordId Id of the bearer record this CM's iap record
+         * points to.
+         */
+        virtual void BearerRecordIdL( TUint32& aRecordId );
+
+        /**
+         * Returns the bearer record name of the Connection Method.
+         * @param aBearerName Name of the bearer record this CM's iap record
+         * points to.
+         */
+        virtual void BearerRecordNameLC( HBufC*& aBearerName );
+
+        /**
+         * Writes LAN specific record data to CommsDat.
+         * @param aGenRecordArray An array containing pointers to service
+         * record of the Connection Method.
+         * @param aBearerSpecRecordArray An array containing pointers to bearer
+         * specific records to be written.
+         */
+        virtual void UpdateBearerRecordsL(
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+        * Deletes LAN specific records of the Connection Method.
+        */
+        void DeleteBearerRecordsL();
+
+        /**
+         * Releases the memory reserved by the LAN specific records
+         * of the Connection Method.
+         */
+        virtual void ResetBearerRecords();
+
+        /**
+         * Creates a copy of LAN specific records and adds them to
+         * aRecordArray.
+         */
+        virtual void GetBearerSpecificRecordsL(
+                RPointerArray<CommsDat::CCDRecordBase>& aRecordArray );
+
+        /**
+         * Following GetBearerXXXXAttribute methods get only the
+         * fields in records in pointer arrays(parameters).
+         * @param aAttribute Identifier of the requested value.
+         * @param aGenRecordArray An array containing pointers to generic
+         * records of the Connection Method.
+         * @param aBearerSpecRecordArray An array containing pointers to bearer
+         * specific records of the Connection Method. aAttribute
+         * parameter should identify one field(integer, boolean string)
+         * in one of these records.
+         * @return Returns the requested value. In error case leaves with
+         * system-wide error code.
+         */
+
+        virtual TUint32 GetBearerIntAttributeL(
+                TUint32 aAttribute,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual TBool GetBearerBoolAttributeL(
+                TUint32 aAttribute,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual HBufC* GetBearerStringAttributeL(
+                TUint32 aAttribute,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual HBufC8* GetBearerString8AttributeL(
+                TUint32 aAttribute,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+         * Following SetBearerXXXXAttribute methods set only the
+         * fields in records in pointer arrays(parameters). They are not
+         * allowed to update the original records in plugins.
+         * @param aAttribute Identifier of the field to set.
+         * @param aValue The value to set.
+         * @param aGenRecordArray An array containing pointers to generic
+         * records of the Connection Method.
+         * @param aBearerSpecRecordArray An array containing pointers to bearer
+         * specific records of the Connection Method. aAttribute
+         * parameter should identify one field(integer, boolean string)
+         * in one of these records.
+         * @return None.
+         */
+
+        virtual void SetBearerIntAttributeL(
+                TUint32 aAttribute, TUint32 aValue,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual void SetBearerBoolAttributeL(
+                TUint32 aAttribute, TBool aValue,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual void SetBearerStringAttributeL(
+                TUint32 aAttribute, const TDesC16& aValue,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual void SetBearerString8AttributeL(
+                TUint32 aAttribute, const TDesC8& aValue,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+         * Bearer is requested by the server if it uses CommsDat tables which
+         * should be observed for possible changes to be able to keep the
+         * data in memory in up to date.
+         * @param aTableIdArray A reference to an array where to add those
+         * table ids.
+         */
+        virtual void GetBearerTableIdsToBeObservedL(
+                RArray<TUint32>& aTableIdArray ) const;
+
+    private: // Constructors
+        /**
+        * Constructor.
+        */
+        CCmPluginLan( TCmPluginInitParam* aInitParam );
+
+        /**
+        * Second phase constructor. Leaves on failure.
+        */
+        void ConstructL();
+
+    private:
+        /**
+         * Sets the daemon name for the Connection Method.
+         */
+        void SetDaemonNameL(
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+         * Returns a reference to service record of the Connection Method.
+         */
+        CommsDat::CCDLANServiceRecord& ServiceRecord() const;
+
+        /**
+         * Makes needed preparations before copying records.
+         * @param aCopyInstance Instance of the plugin where to copy.
+         */
+        virtual void PrepareToCopyDataL( CCmPluginBaseEng* aCopyInstance );
+
+        /**
+         * Copies the service record.
+         * @return Returns a pointer to service record created.
+         */
+        CommsDat::CCDRecordBase* CopyServiceRecordL();
+
+        /**
+         * Copies the bearer specific records to copy instance.
+         * @param aCopyInstance Instance of the plugin where to copy.
+         */
+        virtual void CopyBearerRecordsL( CCmPluginBaseEng* aCopyInstance );
+
+        /**
+         * Adds LAN bearer record with default values to record array.
+         * @param aRecordArray The array where to add the bearer record.
+         */
+        void GetDefaultLanBearerRecordL(
+                RPointerArray<CommsDat::CCDRecordBase>& aRecordArray );
+
+    private: // Data
+
+        /**
+         * Pointer to LAN bearer record.
+         */
+        CommsDat::CCDLANBearerRecord* iBearerRecord;
+    };
+
+#endif // LAN_PLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginlan/rom/cmmpluginlan.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2009-2010 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: 
+* cmpluginlan.dll to ROM.
+*
+*/
+#ifndef CMMPLUGINLAN_IBY__
+#define CMMPLUGINLAN_IBY__
+
+ECOM_PLUGIN(cmpluginlan.dll,1020737B.rsc)
+
+
+#endif // CMMPLUGINLAN_IBY__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginlan/src/cmpluginlan.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,1354 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*      Implementation of Lan Plugin interface implementation
+*      for Lan Bearer
+*
+*
+*/
+
+
+#include "cmpluginlan.h"
+
+#include "datamobilitycommsdattypes.h"
+#include <cmmanagerdef.h>
+#include <ecom/ecom.h>  // For REComSession
+#include <featmgr.h>
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmpluginlanTraces.h"
+#endif
+
+
+using namespace CMManager;
+using namespace CommsDat;
+
+_LIT( KEmpty, "" );
+
+_LIT( KLanBearerName, "LANBearer" );
+_LIT( KLanBearerAgent, "nullagt.agt" );
+_LIT( KLanBearerNif, "ethint" );
+
+_LIT( KLanLDDFileName, "enet" );
+_LIT( KLanPDDFileName, "ethernet" );
+
+_LIT( KLanLDDName, "Ethernet" );
+_LIT( KLanPDDName, "Ethernet.Wins" );
+_LIT( KLanPacketDriverName, "EtherPkt.drv" );
+
+
+const TBool KDefIpAddrFromServer = ETrue;
+const TBool KDefIpDnsAddrFromServer = ETrue;
+const TBool KDefIp6DnsAddrFromServer = ETrue;
+
+const TInt KLanLastSocketActivityTimeout = -1;
+const TInt KLanLastSocketClosedTimeout = -1;
+const TInt KLanLastSessionClosedTimeout = -1;
+
+const TUint32 KDefaultPriorityLAN = 0;
+
+
+// ---------------------------------------------------------
+// CCmPluginLan::NewOutgoingL()
+// ---------------------------------------------------------
+//
+CCmPluginLan* CCmPluginLan::NewL( TCmPluginInitParam* aInitParam )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_NEWL_ENTRY );
+
+    CCmPluginLan* self = new( ELeave ) CCmPluginLan( aInitParam );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_NEWL_EXIT );
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginLan::CreateInstanceL
+// ----------------------------------------------------------------------------
+//
+CCmPluginBaseEng* CCmPluginLan::CreateInstanceL( TCmPluginInitParam& aInitParam ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_CREATEINSTANCEL_ENTRY );
+
+    CCmPluginLan* self = new( ELeave ) CCmPluginLan( &aInitParam );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_CREATEINSTANCEL_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CCmPluginLan::~CCmPluginLan()
+// ---------------------------------------------------------
+//
+CCmPluginLan::~CCmPluginLan()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_CCMPLUGINLAN_ENTRY );
+
+    ResetBearerRecords();
+    FeatureManager::UnInitializeLib();
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_CCMPLUGINLAN_EXIT );
+    }
+
+// ---------------------------------------------------------
+// CCmPluginLan::CCmPluginLan()
+// ---------------------------------------------------------
+//
+CCmPluginLan::CCmPluginLan( TCmPluginInitParam* aInitParam )
+        :
+        CCmPluginBaseEng( aInitParam )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMPLUGINLAN_CCMPLUGINLAN_ENTRY );
+
+    iBearerType = KUidLanBearerType;
+    iBearerRecord = NULL;
+
+    OstTraceFunctionExit0( DUP1_CCMPLUGINLAN_CCMPLUGINLAN_EXIT );
+    }
+
+// ---------------------------------------------------------
+// CCmPluginLan::ConstructL()
+// ---------------------------------------------------------
+//
+void CCmPluginLan::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_CONSTRUCTL_ENTRY );
+
+    FeatureManager::InitializeLibL();
+
+    CCmPluginBaseEng::ConstructL();
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_CONSTRUCTL_EXIT );
+    }
+
+// ---------------------------------------------------------
+// CCmPluginLan::CanHandleIapIdL()
+// ---------------------------------------------------------
+//
+TBool CCmPluginLan::CanHandleIapIdL( TUint32 aIapId ) const
+    {
+    OstTraceFunctionEntryExt( CCMPLUGINLAN_CANHANDLEIAPIDL_ENTRY, this );
+
+    TBool retVal( EFalse );
+
+    CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord *>
+                            ( CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
+
+    CleanupStack::PushL( iapRecord );
+    iapRecord->SetRecordId( aIapId );
+
+    TRAPD( err, iapRecord->LoadL( iSession ) );
+
+    if( !err )
+        {
+        retVal = CanHandleIapIdL( iapRecord );
+        }
+
+    CleanupStack::PopAndDestroy( iapRecord );
+
+    OstTraceFunctionExitExt( CCMPLUGINLAN_CANHANDLEIAPIDL_EXIT, this, retVal );
+
+    return retVal;
+    }
+
+// ---------------------------------------------------------
+// CCmPluginLan::CanHandleIapIdL()
+// ---------------------------------------------------------
+//
+TBool CCmPluginLan::CanHandleIapIdL( CCDIAPRecord *aIapRecord ) const
+    {
+    OstTraceFunctionEntryExt( DUP1_CCMPLUGINLAN_CANHANDLEIAPIDL_ENTRY, this );
+
+    TBool retVal( EFalse );
+
+    if( (TPtrC( aIapRecord->iServiceType ) == TPtrC( KCDTypeNameLANService ) ) &&
+        TPtrC( aIapRecord->iBearerType ) == TPtrC( KCDTypeNameLANBearer ) )
+        {
+        retVal = ETrue;
+        }
+
+    OstTraceFunctionExitExt( DUP1_CCMPLUGINLAN_CANHANDLEIAPIDL_EXIT, this, retVal );
+
+    return retVal;
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginLan::PreparePluginToUpdateRecordsL()
+// ----------------------------------------------------------------------------
+//
+void CCmPluginLan::PreparePluginToLoadRecordsL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_PREPAREPLUGINTOLOADRECORDSL_ENTRY );
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_PREPAREPLUGINTOLOADRECORDSL_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginLan::PreparePluginToUpdateRecordsL()
+// ----------------------------------------------------------------------------
+//
+void CCmPluginLan::PreparePluginToUpdateRecordsL(
+    RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+    RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_PREPAREPLUGINTOUPDATERECORDSL_ENTRY );
+
+    CCDIAPRecord* iapRecord =
+                static_cast<CCDIAPRecord*>( aGenRecordArray[KIapRecordIndex] );
+
+    CCDLANServiceRecord* serviceRecord =
+            static_cast<CCDLANServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
+
+    CheckIfNameModifiedL( iapRecord, serviceRecord );
+
+    CheckDNSServerAddressL( ETrue,
+                            serviceRecord->iIp6NameServer1,
+                            serviceRecord->iIp6NameServer2,
+                            serviceRecord->iIp6DnsAddrFromServer );
+
+    CheckDNSServerAddressL( EFalse,
+                            serviceRecord->iIpNameServer1,
+                            serviceRecord->iIpNameServer2,
+                            serviceRecord->iIpDnsAddrFromServer );
+
+    SetDaemonNameL( aGenRecordArray, aBearerSpecRecordArray );
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_PREPAREPLUGINTOUPDATERECORDSL_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginLan::CreateServiceRecordL
+// --------------------------------------------------------------------------
+//
+void CCmPluginLan::CreateServiceRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_CREATESERVICERECORDL_ENTRY );
+
+    delete iServiceRecord;
+    iServiceRecord = NULL;
+
+    iServiceRecord = static_cast<CCDLANServiceRecord*>
+                (CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord ) );
+
+    CCDLANServiceRecord* lanServiceRecord = static_cast<CCDLANServiceRecord *>( iServiceRecord );
+
+
+    if( FeatureManager::FeatureSupported( KFeatureIdIPv6 ) )
+        {
+        lanServiceRecord->iIfNetworks.SetL( KDefIspIfNetworksIPv4IPv6LAN );
+        }
+    else
+        {
+        lanServiceRecord->iIfNetworks.SetL( KDefIspIfNetworksIPv4 );
+        }
+
+    lanServiceRecord->iIpGateway.SetL( KUnspecifiedIPv4 );
+    lanServiceRecord->iIpAddrFromServer.SetL( KDefIpAddrFromServer );
+
+    lanServiceRecord->iIpAddr.SetL( KUnspecifiedIPv4 );
+
+    lanServiceRecord->iIpDnsAddrFromServer.SetL( KDefIpDnsAddrFromServer );
+
+    lanServiceRecord->iIpNameServer1.SetL( KUnspecifiedIPv4 );
+    lanServiceRecord->iIpNameServer2.SetL( KUnspecifiedIPv4 );
+    lanServiceRecord->iIp6DnsAddrFromServer.SetL( KDefIp6DnsAddrFromServer );
+    lanServiceRecord->iIp6NameServer1.SetL( KDynamicIpv6Address );
+    lanServiceRecord->iIp6NameServer2.SetL( KDynamicIpv6Address );
+
+    if ( KDefIpAddrFromServer )
+        {
+        lanServiceRecord->iConfigDaemonManagerName.SetL( KDaemonManagerName );
+        lanServiceRecord->iConfigDaemonName.SetL( KConfigDaemonName );
+        }
+    else
+        {
+        lanServiceRecord->iConfigDaemonManagerName.SetL( KEmpty );
+        lanServiceRecord->iConfigDaemonName.SetL( KEmpty );
+        }
+    OstTraceFunctionExit0( CCMPLUGINLAN_CREATESERVICERECORDL_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginLan::LoadServiceRecordL
+// --------------------------------------------------------------------------
+//
+void CCmPluginLan::LoadServiceRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_LOADSERVICERECORDL_ENTRY );
+
+    if( TPtrC( KCDTypeNameLANService ) == iIapRecord->iServiceType )
+        {
+        iServiceRecord = static_cast<CCDLANServiceRecord *>
+                    (CCDRecordBase::RecordFactoryL(KCDTIdLANServiceRecord));
+
+        ServiceRecord().SetRecordId( iIapRecord->iService );
+        ServiceRecord().LoadL( iSession );
+        }
+    else
+        // this IAP service is not supported by this plugin.
+        {
+        User::Leave( KErrNotSupported );
+        }
+    OstTraceFunctionExit0( CCMPLUGINLAN_LOADSERVICERECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginLan::PrepareToCopyDataL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginLan::PrepareToCopyDataL( CCmPluginBaseEng* /*aCopyInstance*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_PREPARETOCOPYDATAL_ENTRY );
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_PREPARETOCOPYDATAL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginLan::CopyServiceRecordL
+// ---------------------------------------------------------------------------
+//
+CommsDat::CCDRecordBase* CCmPluginLan::CopyServiceRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_COPYSERVICERECORDL_ENTRY );
+
+    __ASSERT_DEBUG( iServiceRecord != NULL, User::Leave( KErrNotFound ));
+
+    CCDRecordBase* serviceRecord = static_cast<CCDLANServiceRecord*>
+                                  ( CCDRecordBase::CreateCopyRecordL( *iServiceRecord ) );
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_COPYSERVICERECORDL_EXIT );
+
+    return serviceRecord;
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginLan::UpdateServiceRecordL()
+// ----------------------------------------------------------------------------
+//
+void CCmPluginLan::UpdateServiceRecordL(
+    RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+    RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_UPDATESERVICERECORDL_ENTRY );
+
+    // Delete the original record and create a copy from the parameter
+    delete iServiceRecord;
+    iServiceRecord = NULL;
+
+    iServiceRecord = static_cast<CCDLANServiceRecord*>
+                    (CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord ) );
+
+    // LAN Service copy does not work so we have to copy it manually
+
+    CCDLANServiceRecord* lanServiceRecordTo = static_cast<CCDLANServiceRecord *>( iServiceRecord );
+    CCDLANServiceRecord* lanServiceRecordFrom =
+                static_cast<CCDLANServiceRecord *>( aGenRecordArray[KServiceRecordIndex] );
+
+    if( !lanServiceRecordFrom->iRecordName.IsNull() )
+        {
+        lanServiceRecordTo->iRecordName.SetL( lanServiceRecordFrom->iRecordName );
+        }
+    if( !lanServiceRecordFrom->iIfNetworks.IsNull() )
+        {
+        lanServiceRecordTo->iIfNetworks.SetL( lanServiceRecordFrom->iIfNetworks );
+        }
+    if( !lanServiceRecordFrom->iIpNetmask.IsNull() )
+        {
+        lanServiceRecordTo->iIpNetmask.SetL( lanServiceRecordFrom->iIpNetmask );
+        }
+    if( !lanServiceRecordFrom->iIpGateway.IsNull() )
+        {
+        lanServiceRecordTo->iIpGateway.SetL( lanServiceRecordFrom->iIpGateway );
+        }
+    if( !lanServiceRecordFrom->iIpAddrFromServer.IsNull() )
+        {
+        lanServiceRecordTo->iIpAddrFromServer.SetL( lanServiceRecordFrom->iIpAddrFromServer );
+        }
+    if( !lanServiceRecordFrom->iIpAddr.IsNull() )
+        {
+        lanServiceRecordTo->iIpAddr.SetL( lanServiceRecordFrom->iIpAddr );
+        }
+    if( !lanServiceRecordFrom->iIpDnsAddrFromServer.IsNull() )
+        {
+        lanServiceRecordTo->iIpDnsAddrFromServer.SetL( lanServiceRecordFrom->iIpDnsAddrFromServer );
+        }
+    if( !lanServiceRecordFrom->iIpNameServer1.IsNull() )
+        {
+        lanServiceRecordTo->iIpNameServer1.SetL( lanServiceRecordFrom->iIpNameServer1 );
+        }
+    if( !lanServiceRecordFrom->iIpNameServer2.IsNull() )
+        {
+        lanServiceRecordTo->iIpNameServer2.SetL( lanServiceRecordFrom->iIpNameServer2 );
+        }
+    if( !lanServiceRecordFrom->iIp6DnsAddrFromServer.IsNull() )
+        {
+        lanServiceRecordTo->iIp6DnsAddrFromServer.SetL( lanServiceRecordFrom->iIp6DnsAddrFromServer );
+        }
+    if( !lanServiceRecordFrom->iIp6NameServer1.IsNull() )
+        {
+        lanServiceRecordTo->iIp6NameServer1.SetL( lanServiceRecordFrom->iIp6NameServer1 );
+        }
+    if( !lanServiceRecordFrom->iIp6NameServer2.IsNull() )
+        {
+        lanServiceRecordTo->iIp6NameServer2.SetL( lanServiceRecordFrom->iIp6NameServer2 );
+        }
+    if( !lanServiceRecordFrom->iIpAddrLeaseValidFrom.IsNull() )
+        {
+        lanServiceRecordTo->iIpAddrLeaseValidFrom.SetL( lanServiceRecordFrom->iIpAddrLeaseValidFrom );
+        }
+    if( !lanServiceRecordFrom->iIpAddrLeaseValidTo.IsNull() )
+        {
+        lanServiceRecordTo->iIpAddrLeaseValidTo.SetL( lanServiceRecordFrom->iIpAddrLeaseValidTo );
+        }
+    if( !lanServiceRecordFrom->iConfigDaemonManagerName.IsNull() )
+        {
+        lanServiceRecordTo->iConfigDaemonManagerName.SetL( lanServiceRecordFrom->iConfigDaemonManagerName );
+        }
+    if( !lanServiceRecordFrom->iConfigDaemonName.IsNull() )
+        {
+        lanServiceRecordTo->iConfigDaemonName.SetL( lanServiceRecordFrom->iConfigDaemonName );
+        }
+
+    lanServiceRecordTo->SetElementId( lanServiceRecordFrom->ElementId() );
+
+    if ( !ServiceRecord().RecordId() )
+        {
+        ServiceRecord().SetRecordId( KCDNewRecordRequest );
+        ServiceRecord().StoreL( iSession );
+
+        // Update needed values to record tables too( lanservice and wlanservice )
+        lanServiceRecordFrom->SetElementId( ServiceRecord().ElementId() );
+        }
+    else
+        {
+        ServiceRecord().ModifyL( iSession );
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_UPDATESERVICERECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginLan::CreateBearerRecordsL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginLan::CreateBearerRecordsL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_CREATEBEARERRECORDSL_ENTRY );
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_CREATEBEARERRECORDSL_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginLan::LoadBearerRecordsL
+// --------------------------------------------------------------------------
+//
+void CCmPluginLan::LoadBearerRecordsL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_LOADBEARERRECORDSL_ENTRY );
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_LOADBEARERRECORDSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginLan::ServiceRecord()
+// ---------------------------------------------------------------------------
+//
+CCDLANServiceRecord& CCmPluginLan::ServiceRecord() const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_SERVICERECORD_ENTRY );
+
+    return *static_cast<CCDLANServiceRecord*>( iServiceRecord );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginLan::ServiceRecordIdLC
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmPluginLan::ServiceRecordId() const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_SERVICERECORDID_ENTRY );
+
+    return ServiceRecord().RecordId();
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginLan::ServiceRecordNameLC
+// ---------------------------------------------------------------------------
+//
+void CCmPluginLan::ServiceRecordNameLC( HBufC* &aName )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_SERVICERECORDNAMELC_ENTRY );
+
+    aName = TPtrC( KCDTypeNameLANService ).AllocLC();
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_SERVICERECORDNAMELC_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginLan::BearerRecordIdL()
+// ---------------------------------------------------------------------------
+//
+void CCmPluginLan::BearerRecordIdL( TUint32& aRecordId )
+    {
+    CCDLANBearerRecord* lanBearerRecord = static_cast<CCDLANBearerRecord*>
+                        (CCDRecordBase::RecordFactoryL( KCDTIdLANBearerRecord ));
+    CleanupStack::PushL( lanBearerRecord );
+
+    lanBearerRecord->iRecordName.SetL( TPtrC( KLanBearerName ) );
+    if ( !lanBearerRecord->FindL( iSession ) )
+        { // bearer not found -> create dummy values
+        lanBearerRecord->SetRecordId( KCDNewRecordRequest );
+        lanBearerRecord->iBearerAgent = KLanBearerAgent;
+        lanBearerRecord->iRecordName = KLanBearerName;
+        lanBearerRecord->iLanBearerNifName = KLanBearerNif;
+
+        lanBearerRecord->iLanBearerLddFilename = KLanLDDFileName;
+        lanBearerRecord->iLanBearerLddName = KLanLDDName;
+        lanBearerRecord->iLanBearerPddFilename = KLanPDDFileName;
+        lanBearerRecord->iLanBearerPddName = KLanPDDName;
+        lanBearerRecord->iLanBearerPacketDriverName = KLanPacketDriverName;
+        lanBearerRecord->iLastSocketActivityTimeout =
+                                        (TUint32)KLanLastSocketActivityTimeout;
+        lanBearerRecord->iLastSessionClosedTimeout =
+                                        (TUint32)KLanLastSessionClosedTimeout;
+        lanBearerRecord->iLastSocketClosedTimeout =
+                                        (TUint32)KLanLastSocketClosedTimeout;
+
+        lanBearerRecord->StoreL( iSession );
+        }
+
+    aRecordId = lanBearerRecord->RecordId();
+
+    CleanupStack::PopAndDestroy( lanBearerRecord );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginLan::BearerRecordNameLC()
+// ---------------------------------------------------------------------------
+//
+void CCmPluginLan::BearerRecordNameLC( HBufC*& aBearerName )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_BEARERRECORDNAMELC_ENTRY );
+
+    aBearerName = TPtrC( KCDTypeNameLANBearer ).AllocLC();
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_BEARERRECORDNAMELC_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginLan::GetBearerSpecificRecordsL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginLan::GetBearerSpecificRecordsL(
+        RPointerArray<CommsDat::CCDRecordBase>& /*aRecordArray*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERSPECIFICRECORDSL_ENTRY );
+    OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERSPECIFICRECORDSL_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginLan::DeleteBearerRecordsL
+// --------------------------------------------------------------------------
+//
+void CCmPluginLan::DeleteBearerRecordsL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_DELETEBEARERRECORDSL_ENTRY );
+    OstTraceFunctionExit0( CCMPLUGINLAN_DELETEBEARERRECORDSL_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginLan::UpdateBearerRecordsL()
+// ----------------------------------------------------------------------------
+//
+void CCmPluginLan::UpdateBearerRecordsL(
+        RPointerArray<CommsDat::CCDRecordBase>& /*aGenRecordArray*/,
+        RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_UPDATEBEARERRECORDSL_ENTRY );
+    OstTraceFunctionExit0( CCMPLUGINLAN_UPDATEBEARERRECORDSL_EXIT );
+    }
+
+// ---------------------------------------------------------
+// CCmPluginLan::ResetBearerRecords()
+// ---------------------------------------------------------
+//
+void CCmPluginLan::ResetBearerRecords()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_RESETBEARERRECORDS_ENTRY );
+    OstTraceFunctionExit0( CCMPLUGINLAN_RESETBEARERRECORDS_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginLan::SetDaemonNameL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginLan::SetDaemonNameL(
+    RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+    RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_SETDAEMONNAMEL_ENTRY );
+
+    // we have to check first that these values has not been
+    // set(or changed) by any 3rd party sw to ensure that
+    // we don't break their settings
+    HBufC* daemonName = GetBearerStringAttributeL( ECmConfigDaemonManagerName,
+                                                   aGenRecordArray,
+                                                   aBearerSpecRecordArray );
+    if ( daemonName )
+        {
+        if ( daemonName->Compare( KDaemonManagerName ) != 0 )
+            {
+            delete daemonName;
+            OstTraceFunctionExit1( CCMPLUGINWLAN_SETDAEMONNAMEL_EXIT, this );
+            OstTraceFunctionExit0( CCMPLUGINLAN_SETDAEMONNAMEL_EXIT );
+            return;
+            }
+        delete daemonName;
+        }
+
+    // use DHCP if we can
+    TBool ipfromSrv = GetBearerBoolAttributeL( ECmIPAddFromServer,
+                                               aGenRecordArray,
+                                               aBearerSpecRecordArray );
+    if ( ipfromSrv )
+        {
+        SetBearerStringAttributeL( ECmConfigDaemonManagerName,
+                                   KDaemonManagerName,
+                                   aGenRecordArray,
+                                   aBearerSpecRecordArray );
+
+        SetBearerStringAttributeL( ECmConfigDaemonName,
+                                   KConfigDaemonName,
+                                   aGenRecordArray,
+                                   aBearerSpecRecordArray );
+
+        }
+    else
+        {
+        if ( FeatureManager::FeatureSupported( KFeatureIdIPv6 ) )
+            {
+            SetBearerStringAttributeL( ECmConfigDaemonManagerName,
+                                       KDaemonManagerName,
+                                       aGenRecordArray,
+                                       aBearerSpecRecordArray );
+
+            SetBearerStringAttributeL( ECmConfigDaemonName,
+                                       KConfigDaemonName,
+                                       aGenRecordArray,
+                                       aBearerSpecRecordArray );
+            }
+        else
+            {
+            SetBearerStringAttributeL( ECmConfigDaemonManagerName,
+                                       KNullDesC(),
+                                       aGenRecordArray,
+                                       aBearerSpecRecordArray );
+
+            SetBearerStringAttributeL( ECmConfigDaemonName,
+                                       KNullDesC(),
+                                       aGenRecordArray,
+                                       aBearerSpecRecordArray );
+            }
+        }
+    OstTraceFunctionExit0( DUP1_CCMPLUGINLAN_SETDAEMONNAMEL_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginLan::GetBearerIntAttributeL
+// --------------------------------------------------------------------------
+//
+TUint32 CCmPluginLan::GetBearerIntAttributeL(
+        TUint32 aAttribute,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERINTATTRIBUTEL_ENTRY );
+
+    TUint32 retVal( 0 );
+
+    CCDLANServiceRecord* serviceRecord =
+            static_cast<CCDLANServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case ECmInvalidAttribute:
+            {
+            retVal = 0;
+            }
+            break;
+        case ECmExtensionLevel:
+            {
+            retVal = KExtensionBaseLevel;
+            }
+            break;
+        case ECmCommsDBBearerType:
+            {
+            retVal = KCommDbBearerLAN;
+            }
+            break;
+        case ECmDefaultPriority:
+            {
+            retVal = KDefaultPriorityLAN;
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERINTATTRIBUTEL_EXIT );
+    return retVal;
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginLan::GetBearerBoolAttributeL
+// --------------------------------------------------------------------------
+//
+TBool CCmPluginLan::GetBearerBoolAttributeL(
+        TUint32 aAttribute,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERBOOLATTRIBUTEL_ENTRY );
+
+    TBool retVal( 0 );
+
+    CCDLANServiceRecord* serviceRecord =
+                static_cast<CCDLANServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case ECmCoverage:
+            {
+            retVal = ETrue;
+            }
+            break;
+        case ECmDestination:
+            {
+            retVal = EFalse;
+            }
+            break;
+        case ECmBearerHasUi:
+            {
+            retVal = EFalse;
+            }
+            break;
+        case ECmIPv6Supported:
+            {
+            retVal = FeatureManager::FeatureSupported( KFeatureIdIPv6 );
+            }
+            break;
+        case ECmIPAddFromServer:
+        case ELanIpAddrFromServer:
+            {
+            retVal = serviceRecord->iIpAddrFromServer;
+            }
+            break;
+        case ECmIPDNSAddrFromServer:
+        case ELanIpDNSAddrFromServer:
+            {
+            retVal = serviceRecord->iIpDnsAddrFromServer;
+            }
+            break;
+        case ECmIP6DNSAddrFromServer:
+        case ELanIp6DNSAddrFromServer:
+            {
+            retVal = serviceRecord->iIp6DnsAddrFromServer;
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERBOOLATTRIBUTEL_EXIT );
+    return retVal;
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginLan::GetBearerStringAttributeL
+// --------------------------------------------------------------------------
+//
+HBufC* CCmPluginLan::GetBearerStringAttributeL(
+        TUint32 aAttribute,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERSTRINGATTRIBUTEL_ENTRY );
+
+    HBufC* retVal = NULL;
+
+    CCDLANServiceRecord* serviceRecord =
+            static_cast<CCDLANServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case ECmIFNetworks:
+        case ELanIfNetworks:
+            {
+            if ( !serviceRecord->iIfNetworks.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iIfNetworks ).AllocL();
+                }
+            }
+            break;
+        case ECmIPNetmask:
+        case ELanIpNetMask:
+            {
+            if ( !serviceRecord->iIpNetmask.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iIpNetmask ).AllocL();
+                }
+            }
+            break;
+        case ECmIPGateway:
+        case ELanIpGateway:
+            {
+            if ( !serviceRecord->iIpGateway.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iIpGateway ).AllocL();
+                }
+            }
+            break;
+        case ECmIPAddress:
+        case ELanIpAddr:
+            {
+            if ( !serviceRecord->iIpAddr.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iIpAddr ).AllocL();
+                }
+            }
+            break;
+        case ECmIPNameServer1:
+        case ELanIpNameServer1:
+            {
+            if ( !serviceRecord->iIpNameServer1.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iIpNameServer1 ).AllocL();
+                }
+            }
+            break;
+        case ECmIPNameServer2:
+        case ELanIpNameServer2:
+            {
+            if ( !serviceRecord->iIpNameServer2.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iIpNameServer2 ).AllocL();
+                }
+            }
+            break;
+        case ECmIP6NameServer1:
+        case ELanIp6NameServer1:
+            {
+            if ( !serviceRecord->iIp6NameServer1.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iIp6NameServer1 ).AllocL();
+                }
+            }
+            break;
+        case ECmIP6NameServer2:
+        case ELanIp6NameServer2:
+            {
+            if ( !serviceRecord->iIp6NameServer2.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iIp6NameServer2 ).AllocL();
+                }
+            }
+            break;
+        case ECmIPAddrLeaseValidFrom:
+        case ELanIpAddrLeaseValidFrom:
+            {
+            if ( !serviceRecord->iIpAddrLeaseValidFrom.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iIpAddrLeaseValidFrom ).AllocL();
+                }
+            }
+            break;
+        case ECmIPAddrLeaseValidTo:
+        case ELanIpAddrLeaseValidTo:
+            {
+            if ( !serviceRecord->iIpAddrLeaseValidTo.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iIpAddrLeaseValidTo ).AllocL();
+                }
+            }
+            break;
+        case ECmConfigDaemonManagerName:
+        case ELanConfigDaemonManagerName:
+            {
+            if ( !serviceRecord->iConfigDaemonManagerName.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iConfigDaemonManagerName ).AllocL();
+                }
+            }
+            break;
+        case ECmConfigDaemonName:
+        case ELanConfigDaemonName:
+            {
+            if ( !serviceRecord->iConfigDaemonName.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iConfigDaemonName ).AllocL();
+                }
+            }
+            break;
+        case ELanServiceExtensionTableName:
+            {
+            if ( !serviceRecord->iServiceExtensionTableName.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iServiceExtensionTableName ).AllocL();
+                }
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERSTRINGATTRIBUTEL_EXIT );
+    return retVal;
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginLan::GetBearerString8AttributeL
+// --------------------------------------------------------------------------
+//
+HBufC8* CCmPluginLan::GetBearerString8AttributeL(
+        TUint32 aAttribute,
+        RPointerArray<CommsDat::CCDRecordBase>& /*aGenRecordArray*/,
+        RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERSTRING8ATTRIBUTEL_ENTRY );
+
+    HBufC8* retVal( NULL );
+
+    switch ( aAttribute )
+        {
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERSTRING8ATTRIBUTEL_EXIT );
+    return retVal;
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginLan::SetBearerIntAttributeL
+// --------------------------------------------------------------------------
+//
+void CCmPluginLan::SetBearerIntAttributeL(
+        TUint32 aAttribute,
+        TUint32 /*aValue*/,
+        RPointerArray<CommsDat::CCDRecordBase>& /*aGenRecordArray*/,
+        RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_SETBEARERINTATTRIBUTEL_ENTRY );
+
+    switch ( aAttribute )
+        {
+        case ECmExtensionLevel:
+        case ECmCommsDBBearerType:
+        case ECmDefaultUiPriority:
+        case ECmDefaultPriority:
+            {
+            User::Leave( KErrArgument );
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_SETBEARERINTATTRIBUTEL_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginLan::SetBearerBoolAttributeL
+// --------------------------------------------------------------------------
+//
+void CCmPluginLan::SetBearerBoolAttributeL(
+        TUint32 aAttribute,
+        TBool aValue,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_SETBEARERBOOLATTRIBUTEL_ENTRY );
+
+    CCDLANServiceRecord* serviceRecord =
+                static_cast<CCDLANServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case ECmIPAddFromServer:
+        case ELanIpAddrFromServer:
+            {
+            serviceRecord->iIpAddrFromServer.SetL( aValue );
+            }
+            break;
+        case ECmIPDNSAddrFromServer:
+        case ELanIpDNSAddrFromServer:
+            {
+            serviceRecord->iIpDnsAddrFromServer.SetL( aValue );
+            }
+            break;
+        case ECmIP6DNSAddrFromServer:
+        case ELanIp6DNSAddrFromServer:
+            {
+            serviceRecord->iIp6DnsAddrFromServer.SetL( aValue );
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_SETBEARERBOOLATTRIBUTEL_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginLan::SetBearerStringAttributeL
+// --------------------------------------------------------------------------
+//
+void CCmPluginLan::SetBearerStringAttributeL(
+        TUint32 aAttribute,
+        const TDesC16& aValue,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_SETBEARERSTRINGATTRIBUTEL_ENTRY );
+
+    CCDLANServiceRecord* serviceRecord =
+            static_cast<CCDLANServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case ECmIFNetworks:
+        case ELanIfNetworks:
+            {
+            serviceRecord->iIfNetworks.SetL( aValue );
+            }
+            break;
+        case ECmIPNetmask:
+        case ELanIpNetMask:
+            {
+            serviceRecord->iIpNetmask.SetL( aValue );
+            }
+            break;
+        case ECmIPGateway:
+        case ELanIpGateway:
+            {
+            serviceRecord->iIpGateway.SetL( aValue );
+            }
+            break;
+        case ECmIPAddress:
+        case ELanIpAddr:
+            {
+            if ( ( aValue.Compare( KUnspecifiedIPv4 ) == 0 ) ||
+                    ( aValue.Compare( KNullDesC ) == 0 ) )
+                {
+                // If unspecified or NULL address is set dynamic
+                // IP must be enabled.
+                SetBearerBoolAttributeL( ECmIPAddFromServer,
+                                         ETrue,
+                                         aGenRecordArray,
+                                         aBearerSpecRecordArray );
+                }
+            else
+                {
+                // If valid address is set dynamic IP is disabled.
+                SetBearerBoolAttributeL( ECmIPAddFromServer,
+                                         EFalse,
+                                         aGenRecordArray,
+                                         aBearerSpecRecordArray );
+                }
+            serviceRecord->iIpAddr.SetL( aValue );
+            }
+            break;
+        case ECmIPNameServer1:
+        case ELanIpNameServer1:
+            {
+            serviceRecord->iIpNameServer1.SetL( aValue );
+            }
+            break;
+        case ECmIPNameServer2:
+        case ELanIpNameServer2:
+            {
+            serviceRecord->iIpNameServer2.SetL( aValue );
+            }
+            break;
+        case ECmIP6NameServer1:
+        case ELanIp6NameServer1:
+            {
+            serviceRecord->iIp6NameServer1.SetL( aValue );
+            }
+            break;
+        case ECmIP6NameServer2:
+        case ELanIp6NameServer2:
+            {
+            serviceRecord->iIp6NameServer2.SetL( aValue );
+            }
+            break;
+        case ECmIPAddrLeaseValidFrom:
+        case ELanIpAddrLeaseValidFrom:
+            {
+            serviceRecord->iIpAddrLeaseValidFrom.SetL( aValue );
+            }
+            break;
+        case ECmIPAddrLeaseValidTo:
+        case ELanIpAddrLeaseValidTo:
+            {
+            serviceRecord->iIpAddrLeaseValidTo.SetL( aValue );
+            }
+            break;
+        case ECmConfigDaemonManagerName:
+        case ELanConfigDaemonManagerName:
+            {
+            serviceRecord->iConfigDaemonManagerName.SetL( aValue );
+            }
+            break;
+        case ECmConfigDaemonName:
+        case ELanConfigDaemonName:
+            {
+            serviceRecord->iConfigDaemonName.SetL( aValue );
+            }
+            break;
+        case ELanServiceExtensionTableName:
+            {
+            serviceRecord->iServiceExtensionTableName.SetL( aValue );
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_SETBEARERSTRINGATTRIBUTEL_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginLan::SetBearerString8AttributeL
+// --------------------------------------------------------------------------
+//
+void CCmPluginLan::SetBearerString8AttributeL(
+        TUint32 aAttribute,
+        const TDesC8& /*aValue*/,
+        RPointerArray<CommsDat::CCDRecordBase>& /*aGenRecordArray*/,
+        RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_SETBEARERSTRING8ATTRIBUTEL_ENTRY );
+
+    switch ( aAttribute )
+        {
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_SETBEARERSTRING8ATTRIBUTEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginLan::GetBearerInfoIntL
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmPluginLan::GetBearerInfoIntL( TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERINFOINTL_ENTRY );
+
+    TUint32 retVal( 0 );
+    switch ( aAttribute )
+        {
+        case ECmBearerType:
+            {
+            retVal = iBearerType;
+            }
+            break;
+        case ECmCommsDBBearerType:
+            {
+            retVal = KCommDbBearerLAN;
+            }
+            break;
+        case ECmDefaultUiPriority:
+        case ECmDefaultPriority:
+            {
+            retVal = KDefaultPriorityLAN;
+            }
+            break;
+        case ECmExtensionLevel:
+            {
+            retVal = KExtensionBaseLevel;
+            }
+            break;
+        case ECmSeamlessnessLevel:
+            {
+            retVal = ESeamlessnessShowprogress;
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERINFOINTL_EXIT );
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginLan::GetBearerInfoBoolL
+// ---------------------------------------------------------------------------
+//
+TBool CCmPluginLan::GetBearerInfoBoolL( TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERINFOBOOLL_ENTRY );
+
+    TBool retVal( EFalse );
+
+    switch ( aAttribute )
+        {
+        case ECmCoverage:
+            {
+#ifndef __WINS__
+            retVal = EFalse;
+#else
+            retVal = ETrue;
+#endif
+            }
+            break;
+        case ECmDestination:
+            {
+            retVal = EFalse;
+            }
+            break;
+        case ECmBearerHasUi:
+            {
+            retVal = EFalse;
+            }
+            break;
+        case ECmIPv6Supported:
+            {
+            retVal = FeatureManager::FeatureSupported( KFeatureIdIPv6 );
+            }
+            break;
+        case ECmVirtual:
+            {
+            retVal = EFalse;
+            }
+            break;
+
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERINFOBOOLL_EXIT );
+    return retVal;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CCmPluginLan::GetBearerInfoStringL
+// ---------------------------------------------------------------------------
+//
+HBufC* CCmPluginLan::GetBearerInfoStringL( TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERINFOSTRINGL_ENTRY );
+
+    HBufC* retVal( NULL );
+    switch ( aAttribute )
+        {
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERINFOSTRINGL_EXIT );
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginLan::GetBearerInfoString8L
+// ---------------------------------------------------------------------------
+//
+HBufC8* CCmPluginLan::GetBearerInfoString8L( TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERINFOSTRING8L_ENTRY );
+
+    HBufC8* retVal( NULL );
+    switch ( aAttribute )
+        {
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERINFOSTRING8L_EXIT );
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::CopyBearerRecordsL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginLan::CopyBearerRecordsL( CCmPluginBaseEng* /*aCopyInstance*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_COPYBEARERRECORDSL_ENTRY );
+    OstTraceFunctionExit0( CCMPLUGINLAN_COPYBEARERRECORDSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginLan::GetBearerTableIdsToBeObserved
+// ---------------------------------------------------------------------------
+//
+void CCmPluginLan::GetBearerTableIdsToBeObservedL(
+        RArray<TUint32>& aTableIdArray ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINLAN_GETBEARERTABLEIDSTOBEOBSERVED_ENTRY );
+
+    aTableIdArray.AppendL( KCDTIdLANServiceRecord );
+
+    OstTraceFunctionExit0( CCMPLUGINLAN_GETBEARERTABLEIDSTOBEOBSERVED_EXIT );
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginlan/src/cmpluginlanproxy.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*      Implementation of Lan Plugin proxy table
+*
+*
+*/
+
+
+#include "cmpluginlan.h"
+#include <e32std.h>
+#include <ecom/ImplementationProxy.h>
+
+// Exported proxy for instantiation method resolution
+// Define the interface UIDs
+const TImplementationProxy ImplementationTable[] =
+    {
+    IMPLEMENTATION_PROXY_ENTRY( KUidLanBearerType, CCmPluginLan::NewL)
+    };
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+
+    return ImplementationTable;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginlan/traces/OstTraceDefinitions.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+// #define OST_TRACE_COMPILER_IN_USE
+#include <opensystemtrace.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginlan/traces/fixed_id.definitions	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,21 @@
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_FLOW=0x7
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLAN_ADDITIONALRESET_ENTRY=0x11
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLAN_ADDITIONALRESET_EXIT=0x12
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLAN_CANHANDLEIAPIDL_ENTRY=0xd
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLAN_CANHANDLEIAPIDL_EXIT=0xe
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLAN_CCMPLUGINLAN_ENTRY=0x5
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLAN_CCMPLUGINLAN_EXIT=0x6
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLAN_CONSTRUCTL_ENTRY=0x9
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLAN_CONSTRUCTL_EXIT=0xa
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLAN_CREATEINSTANCEL_ENTRY=0x3
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLAN_CREATEINSTANCEL_EXIT=0x4
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLAN_NEWL_ENTRY=0x1
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINLAN_NEWL_EXIT=0x2
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_SETDAEMONNAMEL_EXIT=0x13
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINLAN_CANHANDLEIAPIDL_ENTRY=0xf
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINLAN_CANHANDLEIAPIDL_EXIT=0x10
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINLAN_CCMPLUGINLAN_ENTRY=0x7
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINLAN_CCMPLUGINLAN_EXIT=0x8
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMPLUGINLAN_GETINTATTRIBUTEL_ENTRY=0xb
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMPLUGINLAN_GETINTATTRIBUTEL_EXIT=0xc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/data/1020737C.rss	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2009-2010 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:  
+*        Resource definitions for project cmpluginpacketdata
+*
+*/
+
+#include "ecom/RegistryInfo.rh"
+
+// Because attribute enums had to be added to namespace CMManager
+// it's not possible to included cmpluginpacketdatadef.h.
+// Thus bearer type id had to be redefine here.
+#define KPacketDataBearerType   0x10207378
+
+RESOURCE REGISTRY_INFO theInfo
+	{
+	dll_uid = 0x1020737C;
+	interfaces = 
+		{
+		INTERFACE_INFO
+			{
+			interface_uid = 0x10207377; // = KCMPluginInterfaceUid
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					implementation_uid = KPacketDataBearerType;
+					version_no = 1;
+					display_name = "Packet Data";
+					default_data = "PacketData";
+					opaque_data = "";
+					}
+				};
+			}
+		};
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/group/bld.inf	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2009-2010 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:  
+*        Build information file for project cmpluginpacketdata
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+// export iby files
+../Rom/cmmpluginpacketdata.iby   CORE_MW_LAYER_IBY_EXPORT_PATH(cmmpluginpacketdata.iby)
+
+PRJ_MMPFILES
+cmpluginpacketdata.mmp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/group/cmpluginpacketdata.mmp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2009-2010 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:  
+*        Project definition file for project cmpluginpacketdata
+*
+*/
+
+#include <data_caging_paths.hrh>
+#include <platform_paths.hrh>
+
+TARGET      cmpluginpacketdata.dll
+UID         0x10009D8D 0x1020737C
+
+TARGETTYPE		PLUGIN
+
+CAPABILITY      CAP_ECOM_PLUGIN
+VENDORID        VID_DEFAULT
+
+SOURCEPATH  ../src
+
+SOURCE      cmpluginpacketdataproxy.cpp
+SOURCE      cmpluginpacketdata.cpp
+
+SOURCEPATH  ../Data
+
+START RESOURCE 1020737C.rss
+TARGET cmpluginpacketdata.rsc
+END
+
+//USERINCLUDE     ../../../Framework/SrcData
+USERINCLUDE     ../data
+
+// Component specific internal headers 
+USERINCLUDE			../inc
+USERINCLUDE         ../traces
+
+// ADO specific internal headers 
+SYSTEMINCLUDE		../../../../../inc
+
+//Macro to /epoc32 headers
+MW_LAYER_SYSTEMINCLUDE
+
+LIBRARY euser.lib
+LIBRARY	ecom.lib
+LIBRARY cmmpluginbase.lib
+LIBRARY commsdat.lib
+LIBRARY etel.lib
+LIBRARY etelpckt.lib
+LIBRARY featmgr.lib
+LIBRARY centralrepository.lib 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/inc/cmpluginpacketdata.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,443 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*       Declaration of packetdata interface implementation
+*       for "Packetdata" plugin
+*
+*/
+
+#ifndef PACKETDATA_PLUGIN_H
+#define PACKETDATA_PLUGIN_H
+
+#include <cmpluginbaseeng.h>
+#include <cmpluginpacketdatadef.h>
+
+/**
+*  CCmPluginPacketData defines the functionality of packetdata bearer support.
+*  Most of the API is inherited from CCmPluginBaseEng class.
+*/
+NONSHARABLE_CLASS( CCmPluginPacketData ) : public CCmPluginBaseEng
+    {
+
+    public:
+        /**
+         * Two phased constructor.
+         * @return Returns the packetdata plugin object.
+         */
+        static CCmPluginPacketData* NewL( TCmPluginInitParam* aInitParam );
+
+        /**
+         * Destructor.
+         */
+        virtual ~CCmPluginPacketData();
+
+    public: // From CCmPluginBaseEng
+        /**
+         * Creates a new instance of packetdata bearer plugin. The instance
+         * created represents a bearer, not a connection method.
+         * @param aInitParam Initialization data.
+         * @return Returns CCmPluginBaseEng type pointer which represents pure
+         * bearer instance for the cmm server.
+         */
+        virtual CCmPluginBaseEng* CreateInstanceL(
+                TCmPluginInitParam& aInitParam ) const;
+
+        /**
+         * Following GetBearerInfoXXXL methods return the values of the
+         * requested attributes. These values are packetdata specific
+         * so they don't vary between packetdata Connection Methods.
+         * @param aAttribute An attribute identifier.
+         * @return Returns the value requested. If not found leaves with
+         * KErrNotFound error code.
+         */
+
+        virtual TUint32 GetBearerInfoIntL( TUint32 aAttribute ) const;
+
+        virtual TBool GetBearerInfoBoolL( TUint32 aAttribute ) const;
+
+        virtual HBufC* GetBearerInfoStringL( TUint32 aAttribute ) const;
+
+        virtual HBufC8* GetBearerInfoString8L( TUint32 aAttribute ) const;
+
+        /**
+         * Checks if the plug-in can handle the Connection Method identified
+         * with parameter aIapId.
+         * @param aIapId IAPId of the Connection Method to be checked.
+         * @return ETrue if plug-in can handle the IAP, otherwise EFalse.
+         */
+        virtual TBool CanHandleIapIdL( TUint32 aIapId ) const;
+
+        /**
+        * Checks if the plug-in can handle the given IAP record.
+        * @param aIapRecord IAP record to be checked
+        * @return ETrue if plug-in can handle the IAP, otherwise EFalse.
+        */
+        virtual TBool CanHandleIapIdL(
+                CommsDat::CCDIAPRecord *aIapRecord ) const;
+
+    public: // From CCmPluginBaseEng concerning a Connection Method
+        /**
+         * Before generic side starts to request plugins to load records
+         * it calls this to give a possibility make some preparations
+         * if needed.
+         */
+        virtual void PreparePluginToLoadRecordsL();
+
+        /**
+         * Before generic side starts to request plugins to update records
+         * it calls this to give a possibility make some preparations
+         * if needed.
+         * @param aGenRecordArray An array of generic records to be updated.
+         * @param aBearerSpecRecordArray An array of bearer specific records
+         * to be updated.
+         */
+        virtual void PreparePluginToUpdateRecordsL(
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+         * Creates the CCDWCDMAPacketServiceRecord type service record.
+         */
+        virtual void CreateServiceRecordL();
+
+        /**
+         * Loads the service record. Service record pointer is stored to
+         * plugins generic side implementation(CCmPluginBaseEng).
+         */
+        virtual void LoadServiceRecordL();
+
+        /**
+         * Returns the service record id of this Connection Method.
+         * @return Returns the id of the service record id of this Connection Method.
+         */
+        virtual TUint32 ServiceRecordId() const;
+
+        /**
+        * Returns the service record name of the Connection Method.
+        * @param aServiceName Name of the service record which CM's iap record
+        * points to.
+        */
+        virtual void ServiceRecordNameLC( HBufC* &aServiceName );
+
+        /**
+         * Writes the service record data to CommsDat.
+         * @param aGenRecordArray An array containing pointers to service
+         * record of the Connection Method.
+         * @param aBearerSpecRecordArray An array containing pointers to bearer
+         * specific records of the Connection Method.
+         */
+        virtual void UpdateServiceRecordL(
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+         * Creates packetdata specific default records.
+         */
+        virtual void CreateBearerRecordsL();
+
+        /**
+         * Loads packetdata specific records of the Connection Method.
+         */
+        virtual void LoadBearerRecordsL();
+
+        /**
+         * Returns the bearer record id of the Connection Method.
+         * @param aRecordId Id of the bearer record this CM's iap record
+         * points to.
+         */
+        virtual void BearerRecordIdL( TUint32& aRecordId );
+
+        /**
+         * Returns the bearer record name of the Connection Method.
+         * @param aBearerName Name of the bearer record this CM's iap record
+         * points to.
+         */
+        virtual void BearerRecordNameLC( HBufC* &aBearerName );
+
+        /**
+         * Writes packetdata specific record data to CommsDat.
+         * @param aGenRecordArray An array containing pointers to generic records
+         * of the Connection Method.
+         * @param aBearerSpecRecordArray An array containing pointers to bearer
+         * specific records to be written.
+         */
+        virtual void UpdateBearerRecordsL(
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+        * Deletes packetdata specific records of the Connection Method.
+        */
+        void DeleteBearerRecordsL();
+
+        /**
+         * Releases the memory reserved by the packetdata specific records
+         * of the Connection Method.
+         */
+        virtual void ResetBearerRecords();
+
+        /**
+         * Creates a copy of packetdata specific records and adds them to
+         * aRecordArray.
+         */
+        virtual void GetBearerSpecificRecordsL(
+                RPointerArray<CommsDat::CCDRecordBase>& aRecordArray );
+
+        /**
+         * Following GetBearerXXXXAttribute methods get only the
+         * fields in records in pointer arrays(parameters).
+         * @param aAttribute Identifier of the requested value.
+         * @param aGenRecordArray An array containing pointers to generic
+         *      records of the Connection Method.
+         * @param aBearerSpecRecordArray An array containing pointers to bearer
+         *      specific records of the Connection Method. aAttribute
+         *      parameter should identify one field(integer, boolean string)
+         *      in one of these records.
+         * @return Returns the requested value. In error case leaves with
+         *      system-wide error code.
+         */
+
+        virtual TUint32 GetBearerIntAttributeL(
+                TUint32 aAttribute,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual TBool GetBearerBoolAttributeL(
+                TUint32 aAttribute,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+
+        virtual HBufC* GetBearerStringAttributeL(
+                TUint32 aAttribute,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual HBufC8* GetBearerString8AttributeL(
+                TUint32 aAttribute,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+         * Following SetBearerXXXXAttribute methods set only the
+         * fields in records in pointer arrays(parameters). They are not
+         * allowed to update the original records in plugins.
+         * @param aAttribute Identifier of the field to set.
+         * @param aValue The value to set.
+         * @param aGenRecordArray An array containing pointers to generic
+         *      records of the Connection Method.
+         * @param aBearerSpecRecordArray An array containing pointers to bearer
+         *      specific records of the Connection Method. aAttribute
+         *      parameter should identify one field(integer, boolean string)
+         *      in one of these records.
+         * @return None.
+         */
+
+        virtual void SetBearerIntAttributeL(
+                TUint32 aAttribute, TUint32 aValue,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual void SetBearerBoolAttributeL(
+                TUint32 aAttribute, TBool aValue,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual void SetBearerStringAttributeL(
+                TUint32 aAttribute, const TDesC16& aValue,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual void SetBearerString8AttributeL(
+                TUint32 aAttribute, const TDesC8& aValue,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+         * Bearer is requested by the server if it uses CommsDat tables which
+         * should be observed for possible changes to be able to keep the
+         * data in memory in up to date.
+         * @param aTableIdArray A reference to an array where to add those
+         * table ids.
+         */
+        virtual void GetBearerTableIdsToBeObservedL(
+                RArray<TUint32>& aTableIdArray ) const;
+
+    private: // Constructors
+
+        /**
+        * Constructor
+        */
+        CCmPluginPacketData(
+                TCmPluginInitParam* aInitParam,
+                TBool aOutgoing );
+
+        /**
+        * Second phase constructor
+        */
+        void ConstructL();
+
+    private:
+        /**
+         * Adds Service record with default values to record array.
+         * @param aRecordArray The array where to add the service record.
+         */
+        void GetDefaultServiceRecordL(
+                RPointerArray<CommsDat::CCDRecordBase>& aRecordArray );
+
+        /**
+         * Adds QoS record with default values to record array.
+         * @param aRecordArray The array where to add the QoS record.
+         */
+        void GetDefaultQosRecordL(
+                RPointerArray<CommsDat::CCDRecordBase>& aRecordArray );
+
+        /**
+         * Returns a reference to service record of the Connection Method.
+         */
+        CommsDat::CCDWCDMAPacketServiceRecord& ServiceRecord() const;
+
+        /**
+         * Makes needed preparations before copying records.
+         * @param aCopyInstance Instance of the plugin where to copy.
+         */
+        virtual void PrepareToCopyDataL( CCmPluginBaseEng* aCopyInstance );
+
+        /**
+         * Copies the service record.
+         * @return Returns a pointer to service record created.
+         */
+        CommsDat::CCDRecordBase* CopyServiceRecordL();
+
+        /**
+         * Copies the bearer specific records to copy instance.
+         * @param aCopyInstance Instance of the plugin where to copy.
+         */
+        virtual void CopyBearerRecordsL( CCmPluginBaseEng* aCopyInstance );
+
+
+        /**
+         * Gets an integer value from service record.
+         * @param aAttribute An indentifier to know the field in the record.
+         * @param aGenRecordArray Array of records where the service record
+         * can be found.
+         * @return Returns an integer if the requested attribute
+         * is found. Otherwise leaves with error code KErrNotFound.
+         */
+        TUint32 GetServiceIntAttributeL(
+                TUint32 aAttribute,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray );
+
+        /**
+         * Gets a string value from service record. Ownership of the return
+         * value is passed to the caller.
+         * @param aAttribute An indentifier to know the field in the record.
+         * @param aGenRecordArray Array of records where the service record
+         * can be found.
+         * @return Returns a pointer to an buffer if the requested attribute
+         * is found. Otherwise leaves with error code KErrNotFound.
+         */
+        HBufC* GetServiceStringAttributeL(
+                TUint32 aAttribute,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray );
+
+        /**
+         * Sets integer value to service record.
+         * @param aAttribute An indentifier to know the field in the record.
+         * @param aValue A value to set.
+         * @param aGenRecordArray Array of records where the service record
+         * can be found.
+         */
+        void SetServiceIntAttributeL(
+                TUint32 aAttribute,
+                TUint32 aValue,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray );
+
+        /**
+         * Gets an integer value from packetdata specific record.
+         * @param aAttribute An indentifier to know the field in the record.
+         * @param aBearerSpecRecordArray Array of records where the service
+         * record can be found.
+         * @return Returns an integer if the requested attribute
+         * is found. Otherwise leaves with error code KErrNotFound.
+         */
+        TUint32 GetQosIntAttributeL(
+                TUint32 aAttribute,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+         * Sets an integer value to packetdata specific record.
+         * @param aAttribute An indentifier to know the field in the record.
+         * @param aValue The value to be set.
+         * @param aBearerSpecRecordArray Array of records where the service
+         * record can be found.
+         * @return Returns an integer if the requested attribute
+         * is found. Otherwise leaves with error code KErrNotFound.
+         */
+        void SetQosIntAttributeL(
+                TUint32 aAttribute,
+                TUint32 aValue,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+       /**
+        * Sets the PDP-type.
+        * @param aPdpType Pdp type to set.
+        * @param aServiceRecord Pointer to the service record where to save the
+        * pdp type.
+        */
+        void SetPDPTypeL( RPacketContext::TProtocolType aPdpType,
+                          CommsDat::CCDWCDMAPacketServiceRecord* aServiceRecord );
+
+        /**
+         * Sets the daemon name for the Connection Method.
+         * @param aGenRecordArray An array containing pointers to generic records
+         * of the Connection Method.
+         * @param aBearerSpecRecordArray An array containing pointers to bearer
+         * specific records of the Connection Method.
+         */
+        void SetDaemonNameL(
+            RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+            RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+    private:
+        /**
+         * Checks if the packetdata network is available.
+         * @return Returns ETrue if the network is available. Otherwise returns
+         * EFalse.
+         */
+        TBool CheckNetworkCoverageL() const;
+
+    private: // Data
+        /**
+         * Boolean to define if this is outgoing or incoming packetdata cm.
+         */
+        TBool   iOutgoing;
+
+        /**
+         * Id of the bearer record of the iap.
+         */
+        TUint32 iBearerRecordId;
+
+        /**
+         * Name of the bearer record of the iap.
+         */
+        HBufC*  iBearerRecordName;
+
+        /**
+         * pointer to the QoS record of the iap.
+         */
+        CommsDat::CCDUmtsR99QoSAndOnTableRecord* iPacketDataQoSRecord;
+    };
+
+#endif // PACKETDATA_PLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/rom/cmmpluginpacketdata.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2009-2010 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: 
+* cmpluginpacketdata.dll to ROM.
+*
+*/
+#ifndef CMMPLUGINPACKETDATA_IBY__
+#define CMMPLUGINPACKETDATA_IBY__
+
+ECOM_PLUGIN(cmpluginpacketdata.dll,1020737C.rsc)
+
+
+#endif // CMMPLUGINPACKETDATA_IBY__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/src/cmpluginpacketdata.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,2974 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*      Implementation of packetdata Plugin interface.
+*
+*/
+
+
+#include <stringloader.h>
+#include <FeatMgr.h>
+#include <centralrepository.h>
+#include <CoreApplicationUIsSDKCRKeys.h>
+
+#include "cmpluginpacketdata.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmpluginpacketdataTraces.h"
+#endif
+
+using namespace CMManager;
+using namespace CommsDat;
+
+// ================= CONSTANTS =======================
+
+const TUint32 KDefaultPriorityPacketData = 1;
+
+/// Modem bearer names for GPRS/WCDMA Access Points
+_LIT( KModemBearerPacketData, "GPRS Modem" );
+_LIT( KDefaultQosDataRecordName, "PRIMARY1" );
+_LIT( KDefaultQosDataRecordNamewithSpace, "PRIMARY1 " );
+
+const TInt KQosRecordIndex = 0;
+
+// ======== MEMBER FUNCTIONS ========
+/**
+*  CCmPDCoverageCheck defines the functionality for packetdata service
+*  coverage checking.
+*/
+class CCmPDCoverageCheck : public CActive
+    {
+    public:
+        /**
+         * Constructor.
+         */
+        CCmPDCoverageCheck();
+
+        /**
+         * Destructor.
+         */
+        ~CCmPDCoverageCheck();
+
+        /**
+         * Checks if the packet service is available(status is
+         * ERegisteredOnHomeNetwork or ERegisteredRoaming or
+         * ENotRegisteredButAvailable)
+         * @return Return ETrue if the status is one mentioned above.
+         * Otherwise returns EFalse.
+         */
+        TBool IsThereCoverageL();
+
+    protected:  // from CActive
+        virtual void DoCancel();
+        virtual void RunL();
+
+    private:
+        /**
+         * Ckecks if the phode mode is offline.
+         * @return Returns ETrue if the phone is in offline mode.
+         * Otherwise returns EFalse.
+         */
+        TBool IsPhoneOfflineL() const;
+
+    private:
+        /** Boolean which has the latest coverage information  */
+        TBool                   iCoverage;
+
+        /** Controller for single scheduling loop */
+        CActiveSchedulerWait    iWait;
+
+        /** Handle to telephony server */
+        RTelServer              iServer;
+
+        /** Handle to phone(needed for packet service) */
+        RPhone                  iPhone;
+
+        /** Handle to packet service */
+        RPacketService          iService;
+
+        /** Network registration status information */
+        RPacketService::TRegistrationStatus iNwRegStatus;
+    };
+
+// ----------------------------------------------------------------------------
+// CCmPDCoverageCheck::CCmPDCoverageCheck()
+// ----------------------------------------------------------------------------
+//
+CCmPDCoverageCheck::CCmPDCoverageCheck() : CActive( EPriorityStandard )
+    {
+    OstTraceFunctionEntry0( CCMPDCOVERAGECHECK_CCMPDCOVERAGECHECK_ENTRY );
+
+    CActiveScheduler::Add( this );
+
+    OstTraceFunctionExit0( CCMPDCOVERAGECHECK_CCMPDCOVERAGECHECK_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPDCoverageCheck::~CCmPDCoverageCheck()
+// ----------------------------------------------------------------------------
+//
+CCmPDCoverageCheck::~CCmPDCoverageCheck()
+    {
+    OstTraceFunctionEntry0( DUP1_CCMPDCOVERAGECHECK_CCMPDCOVERAGECHECK_ENTRY );
+
+    Cancel();
+
+    iService.Close();
+    iPhone.Close();
+    iServer.Close();
+
+    OstTraceFunctionExit0( DUP1_CCMPDCOVERAGECHECK_CCMPDCOVERAGECHECK_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPDCoverageCheck::DoCancel
+// ----------------------------------------------------------------------------
+//
+void CCmPDCoverageCheck::DoCancel()
+    {
+    OstTraceFunctionEntry0( CCMPDCOVERAGECHECK_DOCANCEL_ENTRY );
+
+    iWait.AsyncStop();
+
+    OstTraceFunctionExit0( CCMPDCOVERAGECHECK_DOCANCEL_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPDCoverageCheck::RunL
+// ----------------------------------------------------------------------------
+//
+void CCmPDCoverageCheck::RunL()
+    {
+    OstTraceFunctionEntry0( CCMPDCOVERAGECHECK_RUNL_ENTRY );
+
+    if ( iStatus.Int() == KErrNone )
+        {
+        if ( iNwRegStatus == RPacketService::ERegisteredOnHomeNetwork ||
+             iNwRegStatus == RPacketService::ERegisteredRoaming ||
+             iNwRegStatus == RPacketService::ENotRegisteredButAvailable )
+            {
+            iCoverage = ETrue;
+            }
+        iWait.AsyncStop();
+        }
+    else
+        // something went wrong -> no coverage.
+        {
+        iWait.AsyncStop();
+        }
+
+    OstTraceFunctionExit0( CCMPDCOVERAGECHECK_RUNL_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPDCoverageCheck::IsThereCoverageL
+// ----------------------------------------------------------------------------
+//
+TBool CCmPDCoverageCheck::IsThereCoverageL()
+    {
+    OstTraceFunctionEntry0( CCMPDCOVERAGECHECK_ISTHERECOVERAGEL_ENTRY );
+
+    iCoverage = EFalse;
+
+    if ( !IsPhoneOfflineL() )
+        {
+        User::LeaveIfError( iServer.Connect() );
+
+        RTelServer::TPhoneInfo info;
+        User::LeaveIfError( iServer.GetPhoneInfo( 0, info ) );
+
+        User::LeaveIfError( iPhone.Open(iServer, info.iName ) );
+
+        User::LeaveIfError( iService.Open( iPhone ) );
+
+        iService.GetNtwkRegStatus( iStatus, iNwRegStatus );
+        SetActive();
+        iWait.Start();
+
+        User::LeaveIfError( iStatus.Int() );
+        }
+
+    OstTraceFunctionExit0( CCMPDCOVERAGECHECK_ISTHERECOVERAGEL_EXIT );
+    return iCoverage;
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPDCoverageCheck::IsPhoneOfflineL
+// ----------------------------------------------------------------------------
+//
+TBool CCmPDCoverageCheck::IsPhoneOfflineL() const
+    {
+    OstTraceFunctionEntry0( CCMPDCOVERAGECHECK_ISPHONEOFFLINEL_ENTRY );
+
+    if ( FeatureManager::FeatureSupported( KFeatureIdOfflineMode ) )
+        {
+        CRepository* repository = CRepository::NewLC( KCRUidCoreApplicationUIs );
+        TInt connAllowed( ECoreAppUIsNetworkConnectionAllowed );
+
+        repository->Get( KCoreAppUIsNetworkConnectionAllowed, connAllowed );
+        CleanupStack::PopAndDestroy( repository );
+
+        if ( !connAllowed )
+            {
+            OstTraceFunctionExit0( CCMPDCOVERAGECHECK_ISPHONEOFFLINEL_EXIT );
+            return ETrue;
+            }
+        }
+
+    OstTraceFunctionExit0( DUP1_CCMPDCOVERAGECHECK_ISPHONEOFFLINEL_EXIT );
+    return EFalse;
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::NewL
+// ----------------------------------------------------------------------------
+//
+CCmPluginPacketData* CCmPluginPacketData::NewL(
+        TCmPluginInitParam* aInitParam )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_NEWL_ENTRY );
+
+    CCmPluginPacketData* self = new( ELeave ) CCmPluginPacketData( aInitParam, ETrue );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_NEWL_EXIT );
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::~CCmPluginPacketData
+// ----------------------------------------------------------------------------
+//
+CCmPluginPacketData::~CCmPluginPacketData()
+    {
+    OstTraceFunctionEntry1( CCMPLUGINPACKETDATA_CCMPLUGINPACKETDATA_ENTRY, this );
+
+    ResetBearerRecords();
+
+    FeatureManager::UnInitializeLib();
+
+    OstTraceFunctionExit1( CCMPLUGINPACKETDATA_CCMPLUGINPACKETDATA_EXIT, this );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::CreateInstanceL
+// ----------------------------------------------------------------------------
+//
+CCmPluginBaseEng* CCmPluginPacketData::CreateInstanceL( TCmPluginInitParam& aInitParam ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_CREATEINSTANCEL_ENTRY );
+
+    CCmPluginPacketData* self = new( ELeave ) CCmPluginPacketData( &aInitParam, ETrue );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_CREATEINSTANCEL_EXIT );
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::CCmPluginPacketData
+// ----------------------------------------------------------------------------
+//
+CCmPluginPacketData::CCmPluginPacketData(
+        TCmPluginInitParam* aInitParam,
+        TBool aOutgoing )
+        :
+        CCmPluginBaseEng( aInitParam ),
+        iOutgoing( aOutgoing )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMPLUGINPACKETDATA_CCMPLUGINPACKETDATA_ENTRY );
+
+    iBearerType = KUidPacketDataBearerType;
+    iBearerRecordId = 0;
+    iBearerRecordName = NULL;
+    iPacketDataQoSRecord = NULL;
+
+    OstTraceFunctionExit0( DUP1_CCMPLUGINPACKETDATA_CCMPLUGINPACKETDATA_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::ConstructL
+// ----------------------------------------------------------------------------
+//
+void CCmPluginPacketData::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_CONSTRUCTL_ENTRY );
+
+    FeatureManager::InitializeLibL();
+    CCmPluginBaseEng::ConstructL();
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_CONSTRUCTL_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::CanHandleIapIdL()
+// ----------------------------------------------------------------------------
+//
+TBool CCmPluginPacketData::CanHandleIapIdL( TUint32 aIapId ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_CANHANDLEIAPIDL_ENTRY );
+
+    TBool retVal( EFalse );
+
+    CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord *>(
+            CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
+
+    CleanupStack::PushL( iapRecord );
+    iapRecord->SetRecordId( aIapId );
+
+    TRAPD( err, iapRecord->LoadL( iSession ));
+
+    if ( !err )
+        {
+        retVal = CanHandleIapIdL( iapRecord );
+        }
+
+    CleanupStack::PopAndDestroy( iapRecord );
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_CANHANDLEIAPIDL_EXIT );
+    return retVal;
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::CanHandleIapIdL()
+// ----------------------------------------------------------------------------
+//
+TBool CCmPluginPacketData::CanHandleIapIdL( CCDIAPRecord *aIapRecord ) const
+    {
+    OstTraceFunctionEntry0( DUP1_CCMPLUGINPACKETDATA_CANHANDLEIAPIDL_ENTRY );
+
+    TBool retVal( EFalse );
+
+    if ( (TPtrC(aIapRecord->iServiceType) == TPtrC(KCDTypeNameOutgoingWCDMA) ||
+            TPtrC(aIapRecord->iServiceType) == TPtrC(KCDTypeNameIncomingWCDMA)) &&
+            TPtrC(aIapRecord->iBearerType) == TPtrC(KCDTypeNameModemBearer) )
+        {
+        retVal = ETrue;
+        }
+
+
+    OstTraceFunctionExit0( DUP1_CCMPLUGINPACKETDATA_CANHANDLEIAPIDL_EXIT );
+    return retVal;
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::PreparePluginToLoadRecordsL()
+// ----------------------------------------------------------------------------
+//
+void CCmPluginPacketData::PreparePluginToLoadRecordsL()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::PreparePluginToUpdateRecordsL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::PreparePluginToUpdateRecordsL(
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_PREPAREPLUGINTOUPDATERECORDSL_ENTRY );
+
+    CCDIAPRecord* iapRecord =
+                static_cast<CCDIAPRecord*>( aGenRecordArray[KIapRecordIndex] );
+
+    CCDWCDMAPacketServiceRecord* serviceRecord =
+            static_cast<CCDWCDMAPacketServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
+
+    CheckIfNameModifiedL( iapRecord, serviceRecord );
+
+    CheckDNSServerAddressL( ETrue,
+            serviceRecord->iGPRSIP6NameServer1,
+            serviceRecord->iGPRSIP6NameServer2,
+            serviceRecord->iGPRSIP6DNSAddrFromServer );
+
+    CheckDNSServerAddressL( EFalse,
+            serviceRecord->iGPRSIPNameServer1,
+            serviceRecord->iGPRSIPNameServer2,
+            serviceRecord->iGPRSIPDNSAddrFromServer );
+
+    SetDaemonNameL( aGenRecordArray, aBearerSpecRecordArray );
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_PREPAREPLUGINTOUPDATERECORDSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::SetDaemonNameL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::SetDaemonNameL(
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETDAEMONNAMEL_ENTRY );
+
+    // use DHCP if we can
+    TBool ipfromSrv = GetBearerBoolAttributeL( EPacketDataIPAddrFromServer,
+                                               aGenRecordArray,
+                                               aBearerSpecRecordArray );
+    if ( ipfromSrv )
+        {
+        SetBearerStringAttributeL( ECmConfigDaemonManagerName,
+                                   KDaemonManagerName,
+                                   aGenRecordArray,
+                                   aBearerSpecRecordArray );
+        SetBearerStringAttributeL( ECmConfigDaemonName,
+                                   KConfigDaemonName,
+                                   aGenRecordArray,
+                                   aBearerSpecRecordArray );
+        }
+    else
+        {
+        if ( FeatureManager::FeatureSupported( KFeatureIdIPv6 ) )
+            {
+            SetBearerStringAttributeL( ECmConfigDaemonManagerName,
+                                       KDaemonManagerName,
+                                       aGenRecordArray,
+                                       aBearerSpecRecordArray );
+            SetBearerStringAttributeL( ECmConfigDaemonName,
+                                       KConfigDaemonName,
+                                       aGenRecordArray,
+                                       aBearerSpecRecordArray );
+            }
+        else
+            {
+            SetBearerStringAttributeL( ECmConfigDaemonManagerName,
+                                       KNullDesC(),
+                                       aGenRecordArray,
+                                       aBearerSpecRecordArray );
+            SetBearerStringAttributeL( ECmConfigDaemonName,
+                                       KNullDesC(),
+                                       aGenRecordArray,
+                                       aBearerSpecRecordArray );
+            }
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETDAEMONNAMEL_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::LoadBearerRecordsL()
+// ----------------------------------------------------------------------------
+//
+void CCmPluginPacketData::LoadBearerRecordsL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_LOADBEARERRECORDSL_ENTRY );
+
+    if ( ServiceRecord().iUmtsR99QoSAndOnTable )
+        {
+        iPacketDataQoSRecord = static_cast<CCDUmtsR99QoSAndOnTableRecord *>(
+                CCDRecordBase::RecordFactoryL( KCDTIdUmtsR99QoSAndOnTableRecord ) );
+
+        iPacketDataQoSRecord->SetRecordId( ServiceRecord().iUmtsR99QoSAndOnTable );
+        iPacketDataQoSRecord->LoadL( iSession );
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_LOADBEARERRECORDSL_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::LoadServiceRecordL()
+// ----------------------------------------------------------------------------
+//
+void CCmPluginPacketData::LoadServiceRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_LOADSERVICERECORDL_ENTRY );
+
+    if ( TPtrC( KCDTypeNameOutgoingWCDMA ) == iIapRecord->iServiceType )
+        {
+        iServiceRecord = static_cast<CCDWCDMAPacketServiceRecord *>(
+                CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) );
+        iOutgoing = ETrue;
+        }
+    else if ( TPtrC( KCDTypeNameIncomingWCDMA ) == iIapRecord->iServiceType )
+        {
+        iServiceRecord = static_cast<CCDWCDMAPacketServiceRecord *>(
+                CCDRecordBase::RecordFactoryL( KCDTIdIncomingGprsRecord ) );
+        iOutgoing = EFalse;
+        }
+    else
+        // this IAP service is not supported by this plugin.
+        {
+        User::Leave( KErrNotSupported );
+        }
+
+    iServiceRecord->SetRecordId( iIapRecord->iService );
+    TRAPD( err, iServiceRecord->LoadL( iSession ) );
+    if ( err == KErrNotFound )
+        // record not found -> create a default one
+        {
+        CreateServiceRecordL();
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_LOADSERVICERECORDL_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::ServiceRecord()
+// ----------------------------------------------------------------------------
+//
+CCDWCDMAPacketServiceRecord& CCmPluginPacketData::ServiceRecord() const
+    {
+    return *static_cast<CCDWCDMAPacketServiceRecord*>( iServiceRecord );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::CreateServiceRecordL()
+// ----------------------------------------------------------------------------
+//
+void CCmPluginPacketData::CreateServiceRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_CREATESERVICERECORDL_ENTRY );
+
+    delete iServiceRecord;
+    iServiceRecord = NULL;
+
+    if ( iOutgoing )
+        {
+        iServiceRecord = static_cast<CCDWCDMAPacketServiceRecord *>(
+                CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) );
+        }
+    else
+        {
+        iServiceRecord = static_cast<CCDWCDMAPacketServiceRecord *>(
+                CCDRecordBase::RecordFactoryL( KCDTIdIncomingGprsRecord ) );
+        }
+
+    ServiceRecord().iGPRSAPN.SetL( KNullDesC );
+    ServiceRecord().iGPRSPDPType.SetL( RPacketContext::EPdpTypeIPv4 );
+    ServiceRecord().iGPRSReqPrecedence = 0;
+    ServiceRecord().iGPRSReqDelay = 0;
+    ServiceRecord().iGPRSReqReliability = 0;
+    ServiceRecord().iGPRSReqPeakThroughput = 0;
+    ServiceRecord().iGPRSReqMeanThroughput = 0;
+    ServiceRecord().iGPRSMinPrecedence = 0;
+    ServiceRecord().iGPRSMinDelay = 0;
+    ServiceRecord().iGPRSMinReliability = 0;
+    ServiceRecord().iGPRSMinPeakThroughput = 0;
+    ServiceRecord().iGPRSMinMeanThroughput = 0;
+    ServiceRecord().iGPRSDataCompression = 0;
+    ServiceRecord().iGPRSHeaderCompression = 0;
+    ServiceRecord().iGPRSAnonymousAccess = 0;
+    ServiceRecord().iGPRSIfNetworks.SetL( KDefIspIfNetworksIPv4 );
+    ServiceRecord().iGPRSIfPromptForAuth = EFalse;
+    ServiceRecord().iGPRSIfAuthRetries = 0;
+    ServiceRecord().iGPRSIPGateway.SetL( KUnspecifiedIPv4 );
+    ServiceRecord().iGPRSIPAddrFromServer = ETrue;
+    ServiceRecord().iGPRSIPAddr.SetL( KUnspecifiedIPv4 );
+    ServiceRecord().iGPRSIPDNSAddrFromServer = ETrue;
+    ServiceRecord().iGPRSIPNameServer1.SetL( KUnspecifiedIPv4 );
+    ServiceRecord().iGPRSIPNameServer2.SetL( KUnspecifiedIPv4 );
+    ServiceRecord().iGPRSIP6DNSAddrFromServer = ETrue;
+    ServiceRecord().iGPRSIP6NameServer1.SetL( KDynamicIpv6Address );
+    ServiceRecord().iGPRSIP6NameServer2.SetL( KDynamicIpv6Address );
+    ServiceRecord().iGPRSEnableLCPExtension = EFalse;
+    ServiceRecord().iGPRSDisablePlainTextAuth = ETrue;
+    ServiceRecord().iGPRSAPType = EPacketDataBoth;
+    ServiceRecord().iGPRSQOSWarningTimeOut = TUint32(-1);
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_CREATESERVICERECORDL_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::ServiceRecordId
+// ----------------------------------------------------------------------------
+//
+TUint32 CCmPluginPacketData::ServiceRecordId() const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SERVICERECORDID_ENTRY );
+
+    return ServiceRecord().RecordId();
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::ServiceRecordIdLC
+// ----------------------------------------------------------------------------
+//
+void CCmPluginPacketData::ServiceRecordNameLC( HBufC* &aName )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SERVICERECORDNAMELC_ENTRY );
+
+    if ( iOutgoing )
+        {
+        aName = TPtrC( KCDTypeNameOutgoingWCDMA ).AllocLC();
+        }
+    else
+        {
+        aName = TPtrC( KCDTypeNameIncomingWCDMA ).AllocLC();
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SERVICERECORDNAMELC_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::BearerRecordIdL()
+// ----------------------------------------------------------------------------
+//
+void CCmPluginPacketData::BearerRecordIdL( TUint32& aRecordId )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_BEARERRECORDIDL_ENTRY );
+
+    CMDBRecordSet<CCDModemBearerRecord>* bearerRS =
+            new( ELeave ) CMDBRecordSet<CCDModemBearerRecord>( KCDTIdModemBearerRecord );
+    CleanupStack::PushL( bearerRS );
+
+    CCDModemBearerRecord* bearerRecord = static_cast<CCDModemBearerRecord *>(
+            CCDRecordBase::RecordFactoryL( KCDTIdModemBearerRecord ) );
+
+    CleanupStack::PushL( bearerRecord );
+
+    bearerRecord->iRecordName.SetL( KModemBearerPacketData );
+    bearerRS->iRecords.AppendL( bearerRecord );
+    CleanupStack::Pop( bearerRecord );
+
+    if ( bearerRS->FindL( iSession ) )
+        {
+        bearerRecord = static_cast<CCDModemBearerRecord*>( bearerRS->iRecords[0] );
+        aRecordId = bearerRecord->RecordId();
+        }
+    else
+        // bearer not found -> create dummy values
+        {
+        bearerRecord->SetRecordId( KCDNewRecordRequest );
+        bearerRecord->StoreL( iSession );
+
+        aRecordId = bearerRecord->RecordId();
+        }
+
+    CleanupStack::PopAndDestroy( bearerRS );
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_BEARERRECORDIDL_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::BearerRecordNameLC()
+// ----------------------------------------------------------------------------
+//
+void CCmPluginPacketData::BearerRecordNameLC( HBufC*& aBearerName )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_BEARERRECORDNAMELC_ENTRY );
+
+    aBearerName = TPtrC( KCDTypeNameModemBearer ).AllocLC();
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_BEARERRECORDNAMELC_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::CheckNetworkCoverageL()
+// ----------------------------------------------------------------------------
+//
+TBool CCmPluginPacketData::CheckNetworkCoverageL() const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_CHECKNETWORKCOVERAGEL_ENTRY );
+
+    TBool retVal( EFalse );
+
+#ifdef __WINS__
+    retVal = ETrue;
+#else
+    CCmPDCoverageCheck* coverage = new( ELeave ) CCmPDCoverageCheck;
+    CleanupStack::PushL( coverage );
+
+    retVal = coverage->IsThereCoverageL();
+
+    CleanupStack::PopAndDestroy( coverage );
+
+#endif  // __WINS
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_CHECKNETWORKCOVERAGEL_EXIT );
+    return retVal;
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginPacketData::SetPDPTypeL()
+// ----------------------------------------------------------------------------
+//
+void CCmPluginPacketData::SetPDPTypeL(
+        RPacketContext::TProtocolType aPdpType,
+        CCDWCDMAPacketServiceRecord* aServiceRecord )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETPDPTYPEL_ENTRY );
+
+    if ( aPdpType == RPacketContext::EPdpTypeIPv6 )
+        {
+        aServiceRecord->iGPRSPDPType = RPacketContext::EPdpTypeIPv6;
+        aServiceRecord->iGPRSIfNetworks.SetL( KDefIspIfNetworksIPv6 );
+        }
+    else if ( aPdpType == RPacketContext::EPdpTypeIPv4 )
+        {
+        aServiceRecord->iGPRSIfNetworks.SetL( KDefIspIfNetworksIPv4 );
+        aServiceRecord->iGPRSPDPType = RPacketContext::EPdpTypeIPv4;
+        }
+    else
+        {
+        User::Leave( KErrArgument );
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETPDPTYPEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::CreateBearerRecordsL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::CreateBearerRecordsL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_CREATEBEARERRECORDSL_ENTRY );
+
+    delete iPacketDataQoSRecord;
+    iPacketDataQoSRecord = NULL;
+
+    iPacketDataQoSRecord = static_cast<CCDUmtsR99QoSAndOnTableRecord *>(
+            CCDRecordBase::RecordFactoryL( KCDTIdUmtsR99QoSAndOnTableRecord ) );
+
+    iPacketDataQoSRecord->iGPRSReqTrafficClass = RPacketQoS::ETrafficClassUnspecified;
+    iPacketDataQoSRecord->iGPRSMinTrafficClass = RPacketQoS::ETrafficClassUnspecified;
+    iPacketDataQoSRecord->iGPRSReqDeliveryOrder = RPacketQoS::EDeliveryOrderUnspecified;
+    iPacketDataQoSRecord->iGPRSMinDeliveryOrder = RPacketQoS::EDeliveryOrderUnspecified;
+    iPacketDataQoSRecord->iGPRSReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified;
+    iPacketDataQoSRecord->iGPRSMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified;
+    iPacketDataQoSRecord->iGPRSReqMaxSDUSize = 0;
+    iPacketDataQoSRecord->iGPRSMinAcceptableMaxSDUSize = 0;
+    iPacketDataQoSRecord->iGPRSReqMaxUplinkRate = 0;
+    iPacketDataQoSRecord->iGPRSReqMinUplinkRate = 0;
+    iPacketDataQoSRecord->iGPRSReqMaxDownlinkRate = 0;
+    iPacketDataQoSRecord->iGPRSReqMinDownlinkRate = 0;
+    iPacketDataQoSRecord->iGPRSReqBER = RPacketQoS::EBERUnspecified;
+    iPacketDataQoSRecord->iGPRSMaxBER = RPacketQoS::EBERUnspecified;
+    iPacketDataQoSRecord->iGPRSReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified;
+    iPacketDataQoSRecord->iGPRSMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified;
+    iPacketDataQoSRecord->iGPRSReqTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified;
+    iPacketDataQoSRecord->iGPRSMinTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified;
+    iPacketDataQoSRecord->iGPRSReqTransferDelay = 0;
+    iPacketDataQoSRecord->iGPRSMaxTransferDelay = 0;
+    iPacketDataQoSRecord->iGPRSReqGuaranteedUplinkRate = 0;
+    iPacketDataQoSRecord->iGPRSMinGuaranteedUplinkRate = 0;
+    iPacketDataQoSRecord->iGPRSReqGuaranteedDownlinkRate = 0;
+    iPacketDataQoSRecord->iGPRSMinGuaranteedDownlinkRate = 0;
+    iPacketDataQoSRecord->iGPRSSignallingIndication = EFalse;
+    iPacketDataQoSRecord->iGPRS_ImCnSignallingIndication = EFalse;
+    iPacketDataQoSRecord->iGPRSSourceStatisticsDescriptor = RPacketQoS::ESourceStatisticsDescriptorUnknown;
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_CREATEBEARERRECORDSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::UpdateServiceRecordL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::UpdateServiceRecordL(
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_UPDATESERVICERECORDL_ENTRY );
+
+    // Delete the original record and create a copy from the parameter
+    delete iServiceRecord;
+    iServiceRecord = NULL;
+
+    CCDWCDMAPacketServiceRecord* serviceRecord =
+            static_cast<CCDWCDMAPacketServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
+
+    if ( iOutgoing )
+        {
+        iServiceRecord = static_cast<CCDWCDMAPacketServiceRecord *>(
+                CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) );
+        }
+    else
+        {
+        iServiceRecord = static_cast<CCDWCDMAPacketServiceRecord *>(
+                CCDRecordBase::RecordFactoryL( KCDTIdIncomingGprsRecord ) );
+        }
+
+    CCDWCDMAPacketServiceRecord* origServiceRecord =
+            static_cast<CCDWCDMAPacketServiceRecord*>( iServiceRecord );
+
+    iServiceRecord->SetElementId( serviceRecord->ElementId() );
+    iServiceRecord->iRecordName.SetL( serviceRecord->iRecordName );
+
+    if ( !serviceRecord->iServiceEnableLlmnr.IsNull() )
+        {
+        origServiceRecord->iServiceEnableLlmnr.SetL( serviceRecord->iServiceEnableLlmnr );
+        }
+
+    if ( !serviceRecord->iGPRSAPN.IsNull() )
+        {
+        origServiceRecord->iGPRSAPN.SetL( serviceRecord->iGPRSAPN );
+        }
+    if ( !serviceRecord->iGPRSPDPType.IsNull() )
+        {
+        origServiceRecord->iGPRSPDPType.SetL( serviceRecord->iGPRSPDPType );
+        }
+    if ( !serviceRecord->iGPRSPDPAddress.IsNull() )
+        {
+        origServiceRecord->iGPRSPDPAddress.SetL( serviceRecord->iGPRSPDPAddress );
+        }
+    if ( !serviceRecord->iGPRSReqPrecedence.IsNull() )
+        {
+        origServiceRecord->iGPRSReqPrecedence.SetL( serviceRecord->iGPRSReqPrecedence );
+        }
+    if ( !serviceRecord->iGPRSReqDelay.IsNull() )
+        {
+        origServiceRecord->iGPRSReqDelay.SetL( serviceRecord->iGPRSReqDelay );
+        }
+    if ( !serviceRecord->iGPRSReqReliability.IsNull() )
+        {
+        origServiceRecord->iGPRSReqReliability.SetL( serviceRecord->iGPRSReqReliability );
+        }
+    if ( !serviceRecord->iGPRSReqPeakThroughput.IsNull() )
+        {
+        origServiceRecord->iGPRSReqPeakThroughput.SetL( serviceRecord->iGPRSReqPeakThroughput );
+        }
+    if ( !serviceRecord->iGPRSReqMeanThroughput.IsNull() )
+        {
+        origServiceRecord->iGPRSReqMeanThroughput.SetL( serviceRecord->iGPRSReqMeanThroughput );
+        }
+    if ( !serviceRecord->iGPRSMinPrecedence.IsNull() )
+        {
+        origServiceRecord->iGPRSMinPrecedence.SetL( serviceRecord->iGPRSMinPrecedence );
+        }
+    if ( !serviceRecord->iGPRSMinDelay.IsNull() )
+        {
+        origServiceRecord->iGPRSMinDelay.SetL( serviceRecord->iGPRSMinDelay );
+        }
+    if ( !serviceRecord->iGPRSMinReliability.IsNull() )
+        {
+        origServiceRecord->iGPRSMinReliability.SetL( serviceRecord->iGPRSMinReliability );
+        }
+    if ( !serviceRecord->iGPRSMinPeakThroughput.IsNull() )
+        {
+        origServiceRecord->iGPRSMinPeakThroughput.SetL( serviceRecord->iGPRSMinPeakThroughput );
+        }
+    if ( !serviceRecord->iGPRSMinMeanThroughput.IsNull() )
+        {
+        origServiceRecord->iGPRSMinMeanThroughput.SetL( serviceRecord->iGPRSMinMeanThroughput );
+        }
+    if ( !serviceRecord->iGPRSDataCompression.IsNull() )
+        {
+        origServiceRecord->iGPRSDataCompression.SetL( serviceRecord->iGPRSDataCompression );
+        }
+    if ( !serviceRecord->iGPRSHeaderCompression.IsNull() )
+        {
+        origServiceRecord->iGPRSHeaderCompression.SetL( serviceRecord->iGPRSHeaderCompression );
+        }
+    if ( !serviceRecord->iGPRSUseEdge.IsNull() )
+        {
+        origServiceRecord->iGPRSUseEdge.SetL( serviceRecord->iGPRSUseEdge );
+        }
+    if ( !serviceRecord->iGPRSAnonymousAccess.IsNull() )
+        {
+        origServiceRecord->iGPRSAnonymousAccess.SetL( serviceRecord->iGPRSAnonymousAccess );
+        }
+    if ( !serviceRecord->iGPRSIfParams.IsNull() )
+        {
+        origServiceRecord->iGPRSIfParams.SetL( serviceRecord->iGPRSIfParams );
+        }
+    if ( !serviceRecord->iGPRSIfNetworks.IsNull() )
+        {
+        origServiceRecord->iGPRSIfNetworks.SetL( serviceRecord->iGPRSIfNetworks );
+        }
+    if ( !serviceRecord->iGPRSIfPromptForAuth.IsNull() )
+        {
+        origServiceRecord->iGPRSIfPromptForAuth.SetL( serviceRecord->iGPRSIfPromptForAuth );
+        }
+    if ( !serviceRecord->iGPRSIfAuthName.IsNull() )
+        {
+        origServiceRecord->iGPRSIfAuthName.SetL( serviceRecord->iGPRSIfAuthName );
+        }
+    if ( !serviceRecord->iGPRSIfAuthPass.IsNull() )
+        {
+        origServiceRecord->iGPRSIfAuthPass.SetL( serviceRecord->iGPRSIfAuthPass );
+        }
+    if ( !serviceRecord->iGPRSIfAuthRetries.IsNull() )
+        {
+        origServiceRecord->iGPRSIfAuthRetries.SetL( serviceRecord->iGPRSIfAuthRetries );
+        }
+    if ( !serviceRecord->iGPRSIPNetMask.IsNull() )
+        {
+        origServiceRecord->iGPRSIPNetMask.SetL( serviceRecord->iGPRSIPNetMask );
+        }
+    if ( !serviceRecord->iGPRSIPGateway.IsNull() )
+        {
+        origServiceRecord->iGPRSIPGateway.SetL( serviceRecord->iGPRSIPGateway );
+        }
+    if ( !serviceRecord->iGPRSIPAddrFromServer.IsNull() )
+        {
+        origServiceRecord->iGPRSIPAddrFromServer.SetL( serviceRecord->iGPRSIPAddrFromServer );
+        }
+    if ( !serviceRecord->iGPRSIPAddr.IsNull() )
+        {
+        origServiceRecord->iGPRSIPAddr.SetL( serviceRecord->iGPRSIPAddr );
+        }
+    if ( !serviceRecord->iGPRSIPDNSAddrFromServer.IsNull() )
+        {
+        origServiceRecord->iGPRSIPDNSAddrFromServer.SetL( serviceRecord->iGPRSIPDNSAddrFromServer );
+        }
+    if ( !serviceRecord->iGPRSIPNameServer1.IsNull() )
+        {
+        origServiceRecord->iGPRSIPNameServer1.SetL( serviceRecord->iGPRSIPNameServer1 );
+        }
+    if ( !serviceRecord->iGPRSIPNameServer2.IsNull() )
+        {
+        origServiceRecord->iGPRSIPNameServer2.SetL( serviceRecord->iGPRSIPNameServer2 );
+        }
+    if ( !serviceRecord->iGPRSIP6DNSAddrFromServer.IsNull() )
+        {
+        origServiceRecord->iGPRSIP6DNSAddrFromServer.SetL( serviceRecord->iGPRSIP6DNSAddrFromServer );
+        }
+    if ( !serviceRecord->iGPRSIP6NameServer1.IsNull() )
+        {
+        origServiceRecord->iGPRSIP6NameServer1.SetL( serviceRecord->iGPRSIP6NameServer1 );
+        }
+    if ( !serviceRecord->iGPRSIP6NameServer2.IsNull() )
+        {
+        origServiceRecord->iGPRSIP6NameServer2.SetL( serviceRecord->iGPRSIP6NameServer2 );
+        }
+    if ( !serviceRecord->iGPRSIPAddrLeaseValidFrom.IsNull() )
+        {
+        origServiceRecord->iGPRSIPAddrLeaseValidFrom.SetL( serviceRecord->iGPRSIPAddrLeaseValidFrom );
+        }
+    if ( !serviceRecord->iGPRSIPAddrLeaseValidTo.IsNull() )
+        {
+        origServiceRecord->iGPRSIPAddrLeaseValidTo.SetL( serviceRecord->iGPRSIPAddrLeaseValidTo );
+        }
+    if ( !serviceRecord->iGPRSConfigDaemonManagerName.IsNull() )
+        {
+        origServiceRecord->iGPRSConfigDaemonManagerName.SetL( serviceRecord->iGPRSConfigDaemonManagerName );
+        }
+    if ( !serviceRecord->iGPRSConfigDaemonName.IsNull() )
+        {
+        origServiceRecord->iGPRSConfigDaemonName.SetL( serviceRecord->iGPRSConfigDaemonName );
+        }
+    if ( !serviceRecord->iGPRSEnableLCPExtension.IsNull() )
+        {
+        origServiceRecord->iGPRSEnableLCPExtension.SetL( serviceRecord->iGPRSEnableLCPExtension );
+        }
+    if ( !serviceRecord->iGPRSDisablePlainTextAuth.IsNull() )
+        {
+        origServiceRecord->iGPRSDisablePlainTextAuth.SetL( serviceRecord->iGPRSDisablePlainTextAuth );
+        }
+    if ( !serviceRecord->iGPRSAPType.IsNull() )
+        {
+        origServiceRecord->iGPRSAPType.SetL( serviceRecord->iGPRSAPType );
+        }
+    if ( !serviceRecord->iGPRSQOSWarningTimeOut.IsNull() )
+        {
+        origServiceRecord->iGPRSQOSWarningTimeOut.SetL( serviceRecord->iGPRSQOSWarningTimeOut );
+        }
+    if ( !serviceRecord->iGPRSR5DataCompression.IsNull() )
+        {
+        origServiceRecord->iGPRSR5DataCompression.SetL( serviceRecord->iGPRSR5DataCompression );
+        }
+    if ( !serviceRecord->iGPRSR5HeaderCompression.IsNull() )
+        {
+        origServiceRecord->iGPRSR5HeaderCompression.SetL( serviceRecord->iGPRSR5HeaderCompression );
+        }
+    if ( !serviceRecord->iGPRSPacketFlowIdentifier.IsNull() )
+        {
+        origServiceRecord->iGPRSPacketFlowIdentifier.SetL( serviceRecord->iGPRSPacketFlowIdentifier );
+        }
+    if ( !serviceRecord->iGPRSUmtsGprsRelease.IsNull() )
+        {
+        origServiceRecord->iGPRSUmtsGprsRelease.SetL( serviceRecord->iGPRSUmtsGprsRelease );
+        }
+
+    if ( iPacketDataQoSRecord )
+        {
+        origServiceRecord->iUmtsR99QoSAndOnTable = iPacketDataQoSRecord->RecordId();
+        }
+
+    if ( !iServiceRecord->RecordId() )
+        {
+        iServiceRecord->SetRecordId( KCDNewRecordRequest );
+        iServiceRecord->StoreL( iSession );
+        serviceRecord->SetElementId( iServiceRecord->ElementId() );
+        }
+    else
+        {
+        iServiceRecord->ModifyL( iSession );
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_UPDATESERVICERECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::UpdateBearerRecordsL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::UpdateBearerRecordsL(
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_UPDATEBEARERRECORDSL_ENTRY );
+
+    delete iPacketDataQoSRecord;
+    iPacketDataQoSRecord = NULL;
+
+    CCDUmtsR99QoSAndOnTableRecord* packetDataQoSRecord =
+            static_cast<CCDUmtsR99QoSAndOnTableRecord*>( aBearerSpecRecordArray[KQosRecordIndex] );
+
+    iPacketDataQoSRecord = static_cast<CCDUmtsR99QoSAndOnTableRecord*>(
+            CCDRecordBase::CreateCopyRecordL( *packetDataQoSRecord ) );
+
+    iPacketDataQoSRecord->SetElementId( aBearerSpecRecordArray[KQosRecordIndex]->ElementId() );
+
+    if ( !iPacketDataQoSRecord->RecordId() )
+        {
+        iPacketDataQoSRecord->SetRecordId( KCDNewRecordRequest );
+        iPacketDataQoSRecord->StoreL( iSession );
+        packetDataQoSRecord->SetElementId( iPacketDataQoSRecord->ElementId() );
+
+        // Set service record to point to QoS record
+        ServiceRecord().iUmtsR99QoSAndOnTable = iPacketDataQoSRecord->RecordId();
+        ServiceRecord().ModifyL( iSession );
+
+        CCDWCDMAPacketServiceRecord* serviceRecord =
+                static_cast<CCDWCDMAPacketServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
+        serviceRecord->iUmtsR99QoSAndOnTable = iPacketDataQoSRecord->RecordId();
+        }
+    else
+        {
+        iPacketDataQoSRecord->ModifyL( iSession );
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_UPDATEBEARERRECORDSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::GetBearerSpecificRecordsL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::GetBearerSpecificRecordsL(
+        RPointerArray<CommsDat::CCDRecordBase>& aRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERSPECIFICRECORDSL_ENTRY );
+
+    if ( !iPacketDataQoSRecord )
+        {
+        // IAP not yet in CommDat
+        GetDefaultQosRecordL( aRecordArray );
+        }
+    else
+        {
+        CCDUmtsR99QoSAndOnTableRecord* qosRecord = static_cast<CCDUmtsR99QoSAndOnTableRecord*>(
+                CCDRecordBase::CreateCopyRecordL( *iPacketDataQoSRecord ) );
+        CleanupStack::PushL( qosRecord );
+        qosRecord->SetElementId( iPacketDataQoSRecord->ElementId() );
+        aRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( qosRecord ) );
+        CleanupStack::Pop( qosRecord );
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERSPECIFICRECORDSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::GetDefaultServiceRecordL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::GetDefaultServiceRecordL(
+        RPointerArray<CommsDat::CCDRecordBase>& aRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETDEFAULTSERVICERECORDL_ENTRY );
+
+    CCDWCDMAPacketServiceRecord* serviceRecord( NULL );
+    if ( iOutgoing )
+        {
+        serviceRecord =
+            static_cast<CCDWCDMAPacketServiceRecord*>(
+                    CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) );
+        }
+    else
+        {
+        serviceRecord =
+            static_cast<CCDWCDMAPacketServiceRecord*>(
+                    CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) );
+        }
+
+    CleanupStack::PushL( serviceRecord );
+    serviceRecord->iGPRSAPN.SetL( KNullDesC );
+    serviceRecord->iGPRSPDPType.SetL( RPacketContext::EPdpTypeIPv4 );
+    serviceRecord->iGPRSReqPrecedence = 0;
+    serviceRecord->iGPRSReqDelay = 0;
+    serviceRecord->iGPRSReqReliability = 0;
+    serviceRecord->iGPRSReqPeakThroughput = 0;
+    serviceRecord->iGPRSReqMeanThroughput = 0;
+    serviceRecord->iGPRSMinPrecedence = 0;
+    serviceRecord->iGPRSMinDelay = 0;
+    serviceRecord->iGPRSMinReliability = 0;
+    serviceRecord->iGPRSMinPeakThroughput = 0;
+    serviceRecord->iGPRSMinMeanThroughput = 0;
+    serviceRecord->iGPRSDataCompression = EFalse;
+    serviceRecord->iGPRSHeaderCompression = EFalse;
+    serviceRecord->iGPRSAnonymousAccess = EFalse;
+    serviceRecord->iGPRSIfNetworks.SetL( KDefIspIfNetworksIPv4 );
+    serviceRecord->iGPRSIfPromptForAuth = EFalse;
+    serviceRecord->iGPRSIfAuthRetries = 0;
+    serviceRecord->iGPRSIPGateway.SetL( KUnspecifiedIPv4 );
+    serviceRecord->iGPRSIPAddrFromServer = ETrue;
+    serviceRecord->iGPRSIPAddr.SetL( KUnspecifiedIPv4 );
+    serviceRecord->iGPRSIPDNSAddrFromServer = ETrue;
+    serviceRecord->iGPRSIPNameServer1.SetL( KUnspecifiedIPv4 );
+    serviceRecord->iGPRSIPNameServer2.SetL( KUnspecifiedIPv4 );
+    serviceRecord->iGPRSIP6DNSAddrFromServer = ETrue;
+    serviceRecord->iGPRSIP6NameServer1.SetL( KDynamicIpv6Address );
+    serviceRecord->iGPRSIP6NameServer2.SetL( KDynamicIpv6Address );
+    serviceRecord->iGPRSEnableLCPExtension = EFalse;
+    serviceRecord->iGPRSDisablePlainTextAuth = ETrue;
+    serviceRecord->iGPRSAPType = EPacketDataBoth;
+    serviceRecord->iGPRSQOSWarningTimeOut = TUint32(-1);
+
+    aRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( serviceRecord ) );
+    CleanupStack::Pop( serviceRecord );
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETDEFAULTSERVICERECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::GetDefaultQosRecordL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::GetDefaultQosRecordL(
+        RPointerArray<CommsDat::CCDRecordBase>& aRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETDEFAULTQOSRECORDL_ENTRY );
+
+    CCDUmtsR99QoSAndOnTableRecord* packetDataQoSRecord =
+            static_cast<CCDUmtsR99QoSAndOnTableRecord *>(
+                    CCDRecordBase::RecordFactoryL( KCDTIdUmtsR99QoSAndOnTableRecord ) );
+    CleanupStack::PushL( packetDataQoSRecord );
+
+    packetDataQoSRecord->iGPRSReqTrafficClass = RPacketQoS::ETrafficClassUnspecified;
+    packetDataQoSRecord->iGPRSMinTrafficClass = RPacketQoS::ETrafficClassUnspecified;
+    packetDataQoSRecord->iGPRSReqDeliveryOrder = RPacketQoS::EDeliveryOrderUnspecified;
+    packetDataQoSRecord->iGPRSMinDeliveryOrder = RPacketQoS::EDeliveryOrderUnspecified;
+    packetDataQoSRecord->iGPRSReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified;
+    packetDataQoSRecord->iGPRSMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified;
+    packetDataQoSRecord->iGPRSReqMaxSDUSize = 0;
+    packetDataQoSRecord->iGPRSMinAcceptableMaxSDUSize = 0;
+    packetDataQoSRecord->iGPRSReqMaxUplinkRate = 0;
+    packetDataQoSRecord->iGPRSReqMinUplinkRate = 0;
+    packetDataQoSRecord->iGPRSReqMaxDownlinkRate = 0;
+    packetDataQoSRecord->iGPRSReqMinDownlinkRate = 0;
+    packetDataQoSRecord->iGPRSReqBER = RPacketQoS::EBERUnspecified;
+    packetDataQoSRecord->iGPRSMaxBER = RPacketQoS::EBERUnspecified;
+    packetDataQoSRecord->iGPRSReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified;
+    packetDataQoSRecord->iGPRSMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified;
+    packetDataQoSRecord->iGPRSReqTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified;
+    packetDataQoSRecord->iGPRSMinTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified;
+    packetDataQoSRecord->iGPRSReqTransferDelay = 0;
+    packetDataQoSRecord->iGPRSMaxTransferDelay = 0;
+    packetDataQoSRecord->iGPRSReqGuaranteedUplinkRate = 0;
+    packetDataQoSRecord->iGPRSMinGuaranteedUplinkRate = 0;
+    packetDataQoSRecord->iGPRSReqGuaranteedDownlinkRate = 0;
+    packetDataQoSRecord->iGPRSMinGuaranteedDownlinkRate = 0;
+    packetDataQoSRecord->iGPRSSignallingIndication = EFalse;
+    packetDataQoSRecord->iGPRS_ImCnSignallingIndication = EFalse;
+    packetDataQoSRecord->iGPRSSourceStatisticsDescriptor = RPacketQoS::ESourceStatisticsDescriptorUnknown;
+
+    aRecordArray.AppendL( static_cast<CommsDat::CCDRecordBase*>( packetDataQoSRecord ) );
+    CleanupStack::Pop( packetDataQoSRecord );
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETDEFAULTQOSRECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::GetBearerIntAttributeL
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmPluginPacketData::GetBearerIntAttributeL(
+        TUint32 aAttribute,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERINTATTRIBUTEL_ENTRY );
+
+    TUint32 retVal( 0 );
+
+    CCDWCDMAPacketServiceRecord* serviceRecord =
+            static_cast<CCDWCDMAPacketServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
+
+    if ( aAttribute < ECmCommonAttributesEnd ||
+            ( aAttribute > ECmBearerCreationCommonAttributes &&
+              aAttribute < ECmBearerCreationCommonAttributesEnd ) )
+        {
+        switch ( aAttribute )
+            {
+            case ECmBearerType:
+                {
+                retVal = iBearerType;
+                }
+                break;
+            case ECmCommsDBBearerType:
+                {
+                retVal = KCommDbBearerWcdma;
+                }
+                break;
+            case ECmDefaultUiPriority:
+            case ECmDefaultPriority:
+                {
+                retVal = KDefaultPriorityPacketData;
+                }
+                break;
+            case ECmExtensionLevel:
+                {
+                retVal = KExtensionBaseLevel;
+                }
+                break;
+            case ECmInvalidAttribute:
+                {
+                retVal = 0;
+                }
+                break;
+            case ECmIFAuthRetries:
+                {
+                retVal = serviceRecord->iGPRSIfAuthRetries;
+                }
+                break;
+            default:
+                {
+                User::Leave( KErrNotFound );
+                }
+                break;
+            }
+
+        OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERINTATTRIBUTEL_EXIT );
+        return retVal;
+        }
+
+    if ( aAttribute >= EPacketDataSpecificAttributes &&
+            aAttribute < EPacketDataServiceEnableLLMNR )
+        {
+        retVal = GetServiceIntAttributeL( aAttribute, aGenRecordArray );
+        }
+    else if ( aAttribute >= EGPRSReqTrafficClass &&
+            aAttribute <= EGPRSSourceStatisticsDescriptor )
+        {
+        retVal = GetQosIntAttributeL( aAttribute, aBearerSpecRecordArray );
+        }
+    else
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    OstTraceFunctionExit0( DUP1_CCMPLUGINPACKETDATA_GETBEARERINTATTRIBUTEL_EXIT );
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::GetServiceIntAttributeL
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmPluginPacketData::GetServiceIntAttributeL( TUint32 aAttribute,
+                                                      RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETSERVICEINTATTRIBUTEL_ENTRY );
+
+    TUint32 retVal( 0 );
+
+    CCDWCDMAPacketServiceRecord* serviceRecord =
+            static_cast<CCDWCDMAPacketServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case EPacketDataPDPType:
+            {
+            retVal = serviceRecord->iGPRSPDPType;
+            }
+            break;
+
+        case EPacketDataReqPrecedence:
+            {
+            retVal = serviceRecord->iGPRSReqPrecedence;
+            }
+            break;
+
+        case EPacketDataReqDelay:
+            {
+            retVal = serviceRecord->iGPRSReqDelay;
+            }
+            break;
+
+        case EPacketDataReliability:
+            {
+            retVal = serviceRecord->iGPRSReqReliability;
+            }
+            break;
+
+        case EPacketDataPeakThroughput:
+            {
+            retVal = serviceRecord->iGPRSReqPeakThroughput;
+            }
+            break;
+
+        case EPacketDataMeanThroughput:
+            {
+            retVal = serviceRecord->iGPRSMinMeanThroughput;
+            }
+            break;
+
+        case EPacketDataMinPrecedence:
+            {
+            retVal = serviceRecord->iGPRSMinPrecedence;
+            }
+            break;
+
+        case EPacketDataMinDelay:
+            {
+            retVal = serviceRecord->iGPRSMinDelay;
+            }
+            break;
+
+        case EPacketDataMinReliability:
+            {
+            retVal = serviceRecord->iGPRSMinReliability;
+            }
+            break;
+
+        case EPacketDataMinPeakThroughput:
+            {
+            retVal = serviceRecord->iGPRSMinPeakThroughput;
+            }
+            break;
+
+        case EPacketDataMinMeanThroughput:
+            {
+            retVal = serviceRecord->iGPRSMinMeanThroughput;
+            }
+            break;
+
+        case EPacketDataIFAuthRetries:
+            {
+            retVal = serviceRecord->iGPRSIfAuthRetries;
+            }
+            break;
+
+        case EPacketDataApType:
+            {
+            retVal = serviceRecord->iGPRSAPType;
+            }
+            break;
+
+        case EPacketDataQoSWarningTimeOut:
+            {
+            retVal = serviceRecord->iGPRSQOSWarningTimeOut;
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotFound );
+            }
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETSERVICEINTATTRIBUTEL_EXIT );
+
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::GetQosIntAttributeL
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmPluginPacketData::GetQosIntAttributeL( TUint32 aAttribute,
+                                                  RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETQOSINTATTRIBUTEL_ENTRY );
+
+    TUint32 retVal( 0 );
+
+    CCDUmtsR99QoSAndOnTableRecord* qosRecord =
+            static_cast<CCDUmtsR99QoSAndOnTableRecord*>( aBearerSpecRecordArray[KQosRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case EGPRSReqTrafficClass:
+            {
+            retVal = qosRecord->iGPRSReqTrafficClass;
+            }
+            break;
+
+        case EGPRSMinTrafficClass:
+            {
+            retVal = qosRecord->iGPRSMinTrafficClass;
+            }
+            break;
+
+        case EGPRSReqDeliveryOrder:
+            {
+            retVal = qosRecord->iGPRSReqDeliveryOrder;
+            }
+            break;
+
+        case GPRSMinDeliveryOrder:
+            {
+            retVal = qosRecord->iGPRSMinDeliveryOrder;
+            }
+            break;
+        case EGPRSReqDeliverErroneousSDU:
+            {
+            retVal = qosRecord->iGPRSReqDeliverErroneousSDU;
+            }
+            break;
+        case EGPRSMinDeliverErroneousSDU:
+            {
+            retVal = qosRecord->iGPRSMinDeliverErroneousSDU;
+            }
+            break;
+        case EGPRSReqMaxSDUSize:
+            {
+            retVal = qosRecord->iGPRSReqMaxSDUSize;
+            }
+            break;
+
+        case EGPRSMinAcceptableMaxSDUSize:
+            {
+            retVal = qosRecord->iGPRSMinAcceptableMaxSDUSize;
+            }
+            break;
+
+        case EGPRSReqMaxUplinkRate:
+            {
+            retVal = qosRecord->iGPRSReqMaxUplinkRate;
+            }
+            break;
+
+        case EGPRSReqMinUplinkRate:
+            {
+            retVal = qosRecord->iGPRSReqMinUplinkRate;
+            }
+            break;
+
+        case EGPRSReqMaxDownlinkRate:
+            {
+            retVal = qosRecord->iGPRSReqMaxDownlinkRate;
+            }
+            break;
+
+        case EGPRSReqMinDownlinkRate:
+            {
+            retVal = qosRecord->iGPRSReqMinDownlinkRate;
+            }
+            break;
+
+        case EGPRSReqBER:
+            {
+            retVal = qosRecord->iGPRSReqBER;
+            }
+            break;
+
+        case EGPRSMaxBER:
+            {
+            retVal = qosRecord->iGPRSMaxBER;
+            }
+            break;
+
+        case EGPRSReqSDUErrorRatio:
+            {
+            retVal = qosRecord->iGPRSReqSDUErrorRatio;
+            }
+            break;
+
+        case EGPRSMaxSDUErrorRatio:
+            {
+            retVal = qosRecord->iGPRSMaxSDUErrorRatio;
+            }
+            break;
+
+        case EGPRSReqTrafficHandlingPriority:
+            {
+            retVal = qosRecord->iGPRSReqTrafficHandlingPriority;
+            }
+            break;
+
+        case EGPRSMinTrafficHandlingPriority:
+            {
+            retVal = qosRecord->iGPRSMinTrafficHandlingPriority;
+            }
+            break;
+
+        case EGPRSReqTransferDelay:
+            {
+            retVal = qosRecord->iGPRSReqTransferDelay;
+            }
+            break;
+
+        case EGPRSMaxTransferDelay:
+            {
+            retVal = qosRecord->iGPRSMaxTransferDelay;
+            }
+            break;
+
+        case EGPRSReqGuaranteedUplinkRate:
+            {
+            retVal = qosRecord->iGPRSReqGuaranteedUplinkRate;
+            }
+            break;
+
+        case EGPRSMinGuaranteedUplinkRate:
+            {
+            retVal = qosRecord->iGPRSMinGuaranteedUplinkRate;
+            }
+            break;
+
+        case EGPRSReqGuaranteedDownlinkRate:
+            {
+            retVal = qosRecord->iGPRSReqGuaranteedDownlinkRate;
+            }
+            break;
+
+        case EGPRSMinGuaranteedDownlinkRate:
+            {
+            retVal = qosRecord->iGPRSMinGuaranteedDownlinkRate;
+            }
+            break;
+
+        case EGPRSSourceStatisticsDescriptor:
+            {
+            retVal = qosRecord->iGPRSSourceStatisticsDescriptor;
+            }
+            break;
+
+        default:
+            {
+            User::Leave( KErrNotFound );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETQOSINTATTRIBUTEL_EXIT );
+
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::GetBearerBoolAttributeL
+// ---------------------------------------------------------------------------
+//
+TBool CCmPluginPacketData::GetBearerBoolAttributeL( TUint32 aAttribute,
+                                         RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                                         RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERBOOLATTRIBUTEL_ENTRY );
+
+    TBool retVal( EFalse );
+
+    switch( aAttribute )
+        {
+        case EPacketDataOutGoing:
+            {
+            retVal = iOutgoing;
+            }
+            break;
+        case ECmCoverage:
+            {
+#ifndef __WINS__
+            CCmPDCoverageCheck* coverage = new (ELeave) CCmPDCoverageCheck;
+            CleanupStack::PushL( coverage );
+
+            retVal = coverage->IsThereCoverageL();
+
+            CleanupStack::PopAndDestroy( coverage );
+#else
+            retVal = ETrue;
+#endif
+            }
+            break;
+        case ECmDestination:
+            {
+            retVal = EFalse;
+            }
+            break;
+        case ECmBearerHasUi:
+            {
+            retVal = ETrue;
+            }
+            break;
+        case ECmIPv6Supported:
+            {
+            retVal = FeatureManager::FeatureSupported( KFeatureIdIPv6 );
+            }
+            break;
+        case EPacketDataDataCompression:
+            {
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
+                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSDataCompression;
+            }
+            break;
+        case EPacketDataHeaderCompression:
+            {
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
+                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSHeaderCompression;
+            }
+            break;
+        case EPacketDataUseEdge:
+            {
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
+                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSUseEdge;
+            }
+            break;
+        case EPacketDataAnonymousAccess:
+            {
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
+                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSAnonymousAccess;
+            }
+            break;
+        case ECmIFPromptForAuth:
+        case EPacketDataIFPromptForAuth:
+            {
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
+                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSIfPromptForAuth;
+            }
+            break;
+        case ECmIPAddFromServer:
+        case EPacketDataIPAddrFromServer:
+            {
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
+                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSIPAddrFromServer;
+            }
+            break;
+        case ECmIPDNSAddrFromServer:
+        case EPacketDataIPDNSAddrFromServer:
+            {
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
+                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSIPDNSAddrFromServer;
+            }
+            break;
+        case ECmIP6DNSAddrFromServer:
+        case EPacketDataIPIP6DNSAddrFromServer:
+            {
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
+                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSIP6DNSAddrFromServer;
+            }
+            break;
+        case ECmEnableLPCExtension:
+        case EPacketDataEnableLcpExtension:
+            {
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
+                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSEnableLCPExtension;
+            }
+            break;
+        case EPacketDataServiceEnableLLMNR:
+            {
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
+                                ( aGenRecordArray[KServiceRecordIndex] )->iServiceEnableLlmnr;
+            }
+            break;
+        case ECmDisablePlainTextAuth:
+        case EPacketDataDisablePlainTextAuth:
+            {
+            retVal = static_cast<CCDWCDMAPacketServiceRecord*>
+                                ( aGenRecordArray[KServiceRecordIndex] )->iGPRSDisablePlainTextAuth;
+            }
+            break;
+        case EGPRSSignallingIndication:
+            {
+            retVal = static_cast<CCDUmtsR99QoSAndOnTableRecord*>
+                                ( aBearerSpecRecordArray[KQosRecordIndex] )->iGPRSSignallingIndication;
+            }
+            break;
+        case EGPRS_ImCnSignallingIndication:
+            {
+            retVal = static_cast<CCDUmtsR99QoSAndOnTableRecord*>
+                                ( aBearerSpecRecordArray[KQosRecordIndex] )->iGPRS_ImCnSignallingIndication;
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotFound );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERBOOLATTRIBUTEL_EXIT );
+
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::GetBearerStringAttributeL
+// ---------------------------------------------------------------------------
+//
+HBufC* CCmPluginPacketData::GetBearerStringAttributeL( TUint32 aAttribute,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERSTRINGATTRIBUTEL_ENTRY );
+
+    HBufC* retVal( NULL );
+    if ( ( aAttribute > EPacketDataSpecificAttributes && aAttribute < EGPRSReqTrafficClass )
+            || ( aAttribute > ECmCommonAttributesStart && aAttribute < ECmCommonAttributesEnd ) )
+        {
+        retVal = GetServiceStringAttributeL( aAttribute, aGenRecordArray );
+        }
+    else
+        {
+        User::Leave( KErrNotSupported );
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERSTRINGATTRIBUTEL_EXIT );
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::GetServiceStringAttributeL
+// ---------------------------------------------------------------------------
+//
+HBufC* CCmPluginPacketData::GetServiceStringAttributeL(
+    TUint32 aAttribute,
+    RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray)
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETSERVICESTRINGATTRIBUTEL_ENTRY );
+
+    HBufC* retVal = NULL;
+
+    CCDWCDMAPacketServiceRecord* serviceRecord =
+            static_cast<CCDWCDMAPacketServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
+    switch( aAttribute )
+        {
+        case ECmIFName:
+        case EPacketDataAPName:
+            {
+            if ( !serviceRecord->iGPRSAPN.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSAPN ).AllocL();
+                }
+            }
+            break;
+        case EPacketDataPDPAddress:
+            {
+            if ( !serviceRecord->iGPRSPDPAddress.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSPDPAddress ).AllocL();
+                }
+            }
+            break;
+        case ECmIFParams:
+        case EPacketDataIFParams:
+            {
+            if ( !serviceRecord->iGPRSIfParams.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSIfParams ).AllocL();
+                }
+            }
+            break;
+        case ECmIFNetworks:
+        case EPacketDataIFNetworks:
+            {
+            if ( !serviceRecord->iGPRSIfNetworks.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSIfNetworks ).AllocL();
+                }
+            }
+            break;
+        case ECmIFAuthName:
+        case EPacketDataIFAuthName:
+            {
+            if ( !serviceRecord->iGPRSIfAuthName.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSIfAuthName ).AllocL();
+                }
+            }
+            break;
+        case ECmIFAuthPass:
+        case EPacketDataIFAuthPass:
+            {
+            if ( !serviceRecord->iGPRSIfAuthPass.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSIfAuthPass ).AllocL();
+                }
+            }
+            break;
+        case ECmIPNetmask:
+        case EPacketDataIPNetmask:
+            {
+            if ( !serviceRecord->iGPRSIPNetMask.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSIPNetMask ).AllocL();
+                }
+            }
+            break;
+        case ECmIPGateway:
+        case EPacketDataIPGateway:
+            {
+            if ( !serviceRecord->iGPRSIPGateway.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSIPGateway ).AllocL();
+                }
+            }
+            break;
+        case ECmIPAddress:
+        case EPacketDataIPAddr:
+            {
+            if ( !serviceRecord->iGPRSIPAddr.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSIPAddr ).AllocL();
+                }
+            }
+            break;
+        case ECmIPNameServer1:
+        case EPacketDataIPNameServer1:
+            {
+            if ( !serviceRecord->iGPRSIPNameServer1.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSIPNameServer1 ).AllocL();
+                }
+            }
+            break;
+        case ECmIPNameServer2:
+        case EPacketDataIPNameServer2:
+            {
+            if ( !serviceRecord->iGPRSIPNameServer2.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSIPNameServer2 ).AllocL();
+                }
+            }
+            break;
+        case ECmIP6NameServer1:
+        case EPacketDataIPIP6NameServer1:
+            {
+            if ( !serviceRecord->iGPRSIP6NameServer1.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSIP6NameServer1 ).AllocL();
+                }
+            }
+            break;
+        case ECmIP6NameServer2:
+        case EPacketDataIPIP6NameServer2:
+            {
+            if ( !serviceRecord->iGPRSIP6NameServer2.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSIP6NameServer2 ).AllocL();
+                }
+            }
+            break;
+        case ECmIPAddrLeaseValidFrom:
+        case EPacketDataIPAddrLeaseValidFrom:
+            {
+            if ( !serviceRecord->iGPRSIPAddrLeaseValidFrom.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSIPAddrLeaseValidFrom ).AllocL();
+                }
+            }
+            break;
+        case ECmIPAddrLeaseValidTo:
+        case EPacketDataIPAddrLeaseValidTo:
+            {
+            if ( !serviceRecord->iGPRSIPAddrLeaseValidTo.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSIPAddrLeaseValidTo ).AllocL();
+                }
+            }
+            break;
+        case ECmConfigDaemonManagerName:
+        case EPacketDataConfigDaemonManagerName:
+            {
+            if ( !serviceRecord->iGPRSConfigDaemonManagerName.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSConfigDaemonManagerName ).AllocL();
+                }
+            }
+            break;
+        case ECmConfigDaemonName:
+        case EPacketDataConfigDaemonName:
+            {
+            if ( !serviceRecord->iGPRSConfigDaemonName.IsNull() )
+                {
+                retVal = TPtrC( serviceRecord->iGPRSConfigDaemonName ).AllocL();
+                }
+            }
+            break;
+
+        default:
+            {
+            User::Leave( KErrNotFound );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETSERVICESTRINGATTRIBUTEL_EXIT );
+
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::GetBearerString8AttributeL
+// ---------------------------------------------------------------------------
+//
+HBufC8* CCmPluginPacketData::GetBearerString8AttributeL( TUint32 /*aAttribute*/,
+                                              RPointerArray<CommsDat::CCDRecordBase>& /*aGenRecordArray*/,
+                                              RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERSTRING8ATTRIBUTEL_ENTRY );
+
+    User::Leave( KErrNotSupported );
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERSTRING8ATTRIBUTEL_EXIT );
+
+    return NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::SetBearerIntAttributeL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::SetBearerIntAttributeL( TUint32 aAttribute, TUint32 aValue,
+                                       RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                                       RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETBEARERINTATTRIBUTEL_ENTRY );
+
+    if ( aAttribute >= EPacketDataSpecificAttributes && aAttribute < EPacketDataServiceEnableLLMNR )
+        {
+        SetServiceIntAttributeL( aAttribute, aValue, aGenRecordArray );
+        }
+    else if ( aAttribute >= EGPRSReqTrafficClass && aAttribute <= EGPRSSourceStatisticsDescriptor )
+        {
+        SetQosIntAttributeL( aAttribute, aValue, aBearerSpecRecordArray );
+        }
+    else
+        {
+        User::Leave( KErrNotFound );
+        }
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETBEARERINTATTRIBUTEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::SetServiceIntAttributeL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::SetServiceIntAttributeL(
+        TUint32 aAttribute,
+        TUint32 aValue,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETSERVICEINTATTRIBUTEL_ENTRY );
+
+    CCDWCDMAPacketServiceRecord* serviceRecord =
+                static_cast<CCDWCDMAPacketServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case EPacketDataPDPType:
+            {
+            SetPDPTypeL( static_cast<RPacketContext::TProtocolType>( aValue ),
+                         serviceRecord );
+            }
+            break;
+
+        case EPacketDataReqPrecedence:
+            {
+            serviceRecord->iGPRSReqPrecedence.SetL( aValue );
+            }
+            break;
+
+        case EPacketDataReqDelay:
+            {
+            serviceRecord->iGPRSReqDelay.SetL( aValue );
+            }
+            break;
+
+        case EPacketDataReliability:
+            {
+            serviceRecord->iGPRSReqReliability.SetL( aValue );
+            }
+            break;
+
+        case EPacketDataPeakThroughput:
+            {
+            serviceRecord->iGPRSReqPeakThroughput.SetL( aValue );
+            }
+            break;
+
+        case EPacketDataMeanThroughput:
+            {
+            serviceRecord->iGPRSMinMeanThroughput.SetL( aValue );
+            }
+            break;
+
+        case EPacketDataMinPrecedence:
+            {
+            serviceRecord->iGPRSMinPrecedence.SetL( aValue );
+            }
+            break;
+
+        case EPacketDataMinDelay:
+            {
+            serviceRecord->iGPRSMinDelay.SetL( aValue );
+            }
+            break;
+
+        case EPacketDataMinReliability:
+            {
+            serviceRecord->iGPRSMinReliability.SetL( aValue );
+            }
+            break;
+
+        case EPacketDataMinPeakThroughput:
+            {
+            serviceRecord->iGPRSMinPeakThroughput.SetL( aValue );
+            }
+            break;
+
+        case EPacketDataMinMeanThroughput:
+            {
+            serviceRecord->iGPRSMinMeanThroughput.SetL( aValue );
+            }
+            break;
+
+        case EPacketDataIFAuthRetries:
+            {
+            serviceRecord->iGPRSIfAuthRetries.SetL( aValue );
+            }
+            break;
+
+        case EPacketDataApType:
+            {
+            serviceRecord->iGPRSAPType.SetL( aValue );
+            }
+            break;
+
+        case EPacketDataQoSWarningTimeOut:
+            {
+            serviceRecord->iGPRSQOSWarningTimeOut.SetL( aValue );
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotFound );
+            }
+        }
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETSERVICEINTATTRIBUTEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::SetQosIntAttributeL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::SetQosIntAttributeL(
+    TUint32 aAttribute,
+    TUint32 aValue,
+    RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETQOSINTATTRIBUTEL_ENTRY );
+
+    CCDUmtsR99QoSAndOnTableRecord* qosRecord =
+                static_cast<CCDUmtsR99QoSAndOnTableRecord*>( aBearerSpecRecordArray[KQosRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case EGPRSReqTrafficClass:
+            {
+            qosRecord->iGPRSReqTrafficClass.SetL( static_cast<RPacketQoS::TTrafficClass>( aValue ) );
+            }
+            break;
+
+        case EGPRSMinTrafficClass:
+            {
+            qosRecord->iGPRSMinTrafficClass.SetL( static_cast<RPacketQoS::TTrafficClass>( aValue ) );
+            }
+            break;
+
+        case EGPRSReqDeliveryOrder:
+            {
+            qosRecord->iGPRSReqDeliveryOrder.SetL( static_cast<RPacketQoS::TDeliveryOrder>( aValue ) );
+            }
+            break;
+
+        case GPRSMinDeliveryOrder:
+            {
+            qosRecord->iGPRSMinDeliveryOrder.SetL( static_cast<RPacketQoS::TDeliveryOrder>( aValue ) );
+            }
+            break;
+        case EGPRSReqDeliverErroneousSDU:
+            {
+            qosRecord->iGPRSReqDeliverErroneousSDU.SetL( static_cast<RPacketQoS::TErroneousSDUDelivery>( aValue ) );
+            }
+            break;
+        case EGPRSMinDeliverErroneousSDU:
+            {
+            qosRecord->iGPRSMinDeliverErroneousSDU.SetL( static_cast<RPacketQoS::TErroneousSDUDelivery>( aValue ) );
+            }
+            break;
+        case EGPRSReqMaxSDUSize:
+            {
+            qosRecord->iGPRSReqMaxSDUSize.SetL( aValue );
+            }
+            break;
+
+        case EGPRSMinAcceptableMaxSDUSize:
+            {
+            qosRecord->iGPRSMinAcceptableMaxSDUSize.SetL( aValue );
+            }
+            break;
+
+        case EGPRSReqMaxUplinkRate:
+            {
+            qosRecord->iGPRSReqMaxUplinkRate.SetL( aValue );
+            }
+            break;
+
+        case EGPRSReqMinUplinkRate:
+            {
+            qosRecord->iGPRSReqMinUplinkRate.SetL( aValue );
+            }
+            break;
+
+        case EGPRSReqMaxDownlinkRate:
+            {
+            qosRecord->iGPRSReqMaxDownlinkRate.SetL( aValue );
+            }
+            break;
+
+        case EGPRSReqMinDownlinkRate:
+            {
+            qosRecord->iGPRSReqMinDownlinkRate.SetL( aValue );
+            }
+            break;
+
+        case EGPRSReqBER:
+            {
+            qosRecord->iGPRSReqBER.SetL( static_cast<RPacketQoS::TBitErrorRatio>( aValue ) );
+            }
+            break;
+
+        case EGPRSMaxBER:
+            {
+            qosRecord->iGPRSMaxBER.SetL( static_cast<RPacketQoS::TBitErrorRatio>( aValue ) );
+            }
+            break;
+
+        case EGPRSReqSDUErrorRatio:
+            {
+            qosRecord->iGPRSReqSDUErrorRatio.SetL( static_cast<RPacketQoS::TSDUErrorRatio>( aValue ) );
+            }
+            break;
+
+        case EGPRSMaxSDUErrorRatio:
+            {
+            qosRecord->iGPRSMaxSDUErrorRatio.SetL( static_cast<RPacketQoS::TSDUErrorRatio>( aValue ) );
+            }
+            break;
+
+        case EGPRSReqTrafficHandlingPriority:
+            {
+            qosRecord->iGPRSReqTrafficHandlingPriority.SetL( static_cast<RPacketQoS::TTrafficHandlingPriority>( aValue ) );
+            }
+            break;
+
+        case EGPRSMinTrafficHandlingPriority:
+            {
+            qosRecord->iGPRSMinTrafficHandlingPriority.SetL( static_cast<RPacketQoS::TTrafficHandlingPriority>( aValue ) );
+            }
+            break;
+
+        case EGPRSReqTransferDelay:
+            {
+            qosRecord->iGPRSReqTransferDelay.SetL( aValue );
+            }
+            break;
+
+        case EGPRSMaxTransferDelay:
+            {
+            qosRecord->iGPRSMaxTransferDelay.SetL( aValue );
+            }
+            break;
+
+        case EGPRSReqGuaranteedUplinkRate:
+            {
+            qosRecord->iGPRSReqGuaranteedUplinkRate.SetL( aValue );
+            }
+            break;
+
+        case EGPRSMinGuaranteedUplinkRate:
+            {
+            qosRecord->iGPRSMinGuaranteedUplinkRate.SetL( aValue );
+            }
+            break;
+
+        case EGPRSReqGuaranteedDownlinkRate:
+            {
+            qosRecord->iGPRSReqGuaranteedDownlinkRate.SetL( aValue );
+            }
+            break;
+
+        case EGPRSMinGuaranteedDownlinkRate:
+            {
+            qosRecord->iGPRSMinGuaranteedDownlinkRate.SetL( aValue );
+            }
+            break;
+
+        case EGPRSSourceStatisticsDescriptor:
+            {
+            qosRecord->iGPRSSourceStatisticsDescriptor.SetL( static_cast<RPacketQoS::TSourceStatisticsDescriptor>( aValue ) );
+            }
+            break;
+
+        default:
+            {
+            User::Leave( KErrNotFound );
+            }
+            break;
+        }
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETQOSINTATTRIBUTEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::SetBearerBoolAttributeL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::SetBearerBoolAttributeL( TUint32 aAttribute, TBool aValue,
+                                        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                                        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETBEARERBOOLATTRIBUTEL_ENTRY );
+
+    CCDWCDMAPacketServiceRecord* serviceRecord =
+                    static_cast<CCDWCDMAPacketServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
+
+    switch( aAttribute )
+        {
+        case EPacketDataOutGoing:
+            {
+            iOutgoing = aValue;
+            }
+            break;
+        case EPacketDataDataCompression:
+            {
+            serviceRecord->iGPRSDataCompression.SetL( aValue );
+            }
+            break;
+        case EPacketDataHeaderCompression:
+            {
+            serviceRecord->iGPRSHeaderCompression.SetL( aValue );
+            }
+            break;
+        case EPacketDataUseEdge:
+            {
+            serviceRecord->iGPRSUseEdge.SetL( aValue );
+            }
+            break;
+        case EPacketDataAnonymousAccess:
+            {
+            serviceRecord->iGPRSAnonymousAccess.SetL( aValue );
+            }
+            break;
+        case ECmIFPromptForAuth:
+        case EPacketDataIFPromptForAuth:
+            {
+            serviceRecord->iGPRSIfPromptForAuth.SetL( aValue );
+            }
+            break;
+        case ECmIPAddFromServer:
+        case EPacketDataIPAddrFromServer:
+            {
+            serviceRecord->iGPRSIPAddrFromServer.SetL( aValue );
+            }
+            break;
+        case ECmIPDNSAddrFromServer:
+        case EPacketDataIPDNSAddrFromServer:
+            {
+            serviceRecord->iGPRSIPDNSAddrFromServer.SetL( aValue );
+            }
+            break;
+        case ECmIP6DNSAddrFromServer:
+        case EPacketDataIPIP6DNSAddrFromServer:
+            {
+            serviceRecord->iGPRSIP6DNSAddrFromServer.SetL( aValue );
+            }
+            break;
+        case ECmEnableLPCExtension:
+        case EPacketDataEnableLcpExtension:
+            {
+            serviceRecord->iGPRSEnableLCPExtension.SetL( aValue );
+            }
+            break;
+        case ECmDisablePlainTextAuth:
+        case EPacketDataDisablePlainTextAuth:
+            {
+            serviceRecord->iGPRSDisablePlainTextAuth.SetL( aValue );
+            }
+            break;
+        case EGPRSSignallingIndication:
+            {
+            static_cast<CCDUmtsR99QoSAndOnTableRecord*>
+                 ( aBearerSpecRecordArray[KQosRecordIndex] )->iGPRSSignallingIndication.SetL( aValue );
+            }
+            break;
+        case EGPRS_ImCnSignallingIndication:
+            {
+            static_cast<CCDUmtsR99QoSAndOnTableRecord*>
+                 ( aBearerSpecRecordArray[KQosRecordIndex] )->iGPRS_ImCnSignallingIndication.SetL( aValue );
+            }
+            break;
+        case EPacketDataServiceEnableLLMNR:
+            {
+            serviceRecord->iServiceEnableLlmnr.SetL( aValue );
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotFound );
+            }
+            break;
+        }
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETBEARERBOOLATTRIBUTEL_EXIT );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::SetBearerStringAttributeL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::SetBearerStringAttributeL(
+        TUint32 aAttribute,
+        const TDesC16& aValue,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETBEARERSTRINGATTRIBUTEL_ENTRY );
+
+    CCDWCDMAPacketServiceRecord* serviceRecord =
+            static_cast<CCDWCDMAPacketServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case EPacketDataAPName:
+            {
+            serviceRecord->iGPRSAPN.SetL( aValue );
+            }
+            break;
+
+        case EPacketDataPDPAddress:
+            {
+            serviceRecord->iGPRSPDPAddress.SetL( aValue );
+            }
+            break;
+
+        case ECmIFParams:
+        case EPacketDataIFParams:
+            {
+            serviceRecord->iGPRSIfParams.SetL( aValue );
+            }
+            break;
+
+        case ECmIFNetworks:
+        case EPacketDataIFNetworks:
+            {
+            serviceRecord->iGPRSIfNetworks.SetL( aValue );
+            }
+            break;
+
+        case ECmIFAuthName:
+        case EPacketDataIFAuthName:
+            {
+            serviceRecord->iGPRSIfAuthName.SetL( aValue );
+            }
+            break;
+
+        case ECmIFAuthPass:
+        case EPacketDataIFAuthPass:
+            {
+            serviceRecord->iGPRSIfAuthPass.SetL( aValue );
+            }
+            break;
+
+        case ECmIPNetmask:
+        case EPacketDataIPNetmask:
+            {
+            serviceRecord->iGPRSIPNetMask.SetL( aValue );
+            }
+            break;
+
+        case ECmIPGateway:
+        case EPacketDataIPGateway:
+            {
+            serviceRecord->iGPRSIPGateway.SetL( aValue );
+            }
+            break;
+
+        case ECmIPAddress:
+        case EPacketDataIPAddr:
+            {
+            if ( ( aValue.Compare( KUnspecifiedIPv4 ) == 0 ) ||
+                    ( aValue.Compare( KNullDesC ) == 0 ) )
+                {
+                // If unspecified or NULL address is set dynamic
+                // IP must be enabled.
+                SetBearerBoolAttributeL( ECmIPAddFromServer,
+                                         ETrue,
+                                         aGenRecordArray,
+                                         aBearerSpecRecordArray );
+                }
+            else
+                {
+                // If valid address is set dynamic IP is disabled.
+                SetBearerBoolAttributeL( ECmIPAddFromServer,
+                                         EFalse,
+                                         aGenRecordArray,
+                                         aBearerSpecRecordArray );
+                }
+            serviceRecord->iGPRSIPAddr.SetL( aValue );
+            }
+            break;
+
+        case ECmIPNameServer1:
+        case EPacketDataIPNameServer1:
+            {
+            serviceRecord->iGPRSIPNameServer1.SetL( aValue );
+            }
+            break;
+
+        case ECmIPNameServer2:
+        case EPacketDataIPNameServer2:
+            {
+            serviceRecord->iGPRSIPNameServer2.SetL( aValue );
+            }
+            break;
+
+        case ECmIP6NameServer1:
+        case EPacketDataIPIP6NameServer1:
+            {
+            serviceRecord->iGPRSIP6NameServer1.SetL( aValue );
+            }
+            break;
+
+        case ECmIP6NameServer2:
+        case EPacketDataIPIP6NameServer2:
+            {
+            serviceRecord->iGPRSIP6NameServer2.SetL( aValue );
+            }
+            break;
+
+        case ECmIPAddrLeaseValidFrom:
+        case EPacketDataIPAddrLeaseValidFrom:
+            {
+            serviceRecord->iGPRSIPAddrLeaseValidFrom.SetL( aValue );
+            }
+            break;
+
+        case ECmIPAddrLeaseValidTo:
+        case EPacketDataIPAddrLeaseValidTo:
+            {
+            serviceRecord->iGPRSIPAddrLeaseValidTo.SetL( aValue );
+            }
+            break;
+
+        case ECmConfigDaemonManagerName:
+        case EPacketDataConfigDaemonManagerName:
+            {
+            serviceRecord->iGPRSConfigDaemonManagerName.SetL( aValue );
+            }
+            break;
+
+        case ECmConfigDaemonName:
+        case EPacketDataConfigDaemonName:
+            {
+            serviceRecord->iGPRSConfigDaemonName.SetL( aValue );
+            }
+            break;
+
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETBEARERSTRINGATTRIBUTEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::SetBearerString8AttributeL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::SetBearerString8AttributeL( TUint32 /*aAttribute*/, const TDesC8& /*aValue*/,
+                                           RPointerArray<CommsDat::CCDRecordBase>& /*aGenRecordArray*/,
+                                           RPointerArray<CommsDat::CCDRecordBase>& /*aBearerSpecRecordArray*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETBEARERSTRING8ATTRIBUTEL_ENTRY );
+
+    User::Leave( KErrNotSupported );
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_SETBEARERSTRING8ATTRIBUTEL_EXIT );
+
+    return;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::GetBearerInfoIntL
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmPluginPacketData::GetBearerInfoIntL( TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERINFOINTL_ENTRY );
+
+    TUint32 retVal( 0 );
+    switch( aAttribute )
+        {
+        case ECmBearerType:
+            {
+            retVal = iBearerType;
+            }
+            break;
+        case ECmCommsDBBearerType:
+            {
+            retVal = KCommDbBearerWcdma;
+            }
+            break;
+
+        case ECmDefaultUiPriority:
+        case ECmDefaultPriority:
+            {
+            retVal = KDefaultPriorityPacketData;
+            }
+            break;
+        case ECmExtensionLevel:
+            {
+            retVal = KExtensionBaseLevel;
+            }
+            break;
+
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERINFOINTL_EXIT );
+
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::GetBearerInfoBoolL
+// ---------------------------------------------------------------------------
+//
+TBool CCmPluginPacketData::GetBearerInfoBoolL( TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERINFOBOOLL_ENTRY );
+
+    TBool retVal( EFalse );
+    switch( aAttribute )
+        {
+        case ECmCoverage:
+            {
+#ifndef __WINS__
+            CCmPDCoverageCheck* coverage = new (ELeave) CCmPDCoverageCheck;
+            CleanupStack::PushL( coverage );
+
+            retVal = coverage->IsThereCoverageL();
+
+            CleanupStack::PopAndDestroy( coverage );
+#else
+            retVal = ETrue;
+#endif
+            }
+            break;
+        case ECmDestination:
+            {
+            retVal = EFalse;
+            }
+            break;
+        case ECmBearerHasUi:
+            {
+            retVal = EFalse;
+            }
+            break;
+        case ECmIPv6Supported:
+            {
+            retVal = FeatureManager::FeatureSupported( KFeatureIdIPv6 );
+            }
+            break;
+        case ECmVirtual:
+            {
+            retVal = EFalse;
+            }
+            break;
+
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+        break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERINFOBOOLL_EXIT );
+
+    return retVal;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::GetBearerInfoStringL
+// ---------------------------------------------------------------------------
+//
+HBufC* CCmPluginPacketData::GetBearerInfoStringL( TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERINFOSTRINGL_ENTRY );
+
+    HBufC* retVal( NULL );
+    switch( aAttribute )
+        {
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+        break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERINFOSTRINGL_EXIT );
+
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::GetBearerInfoString8L
+// ---------------------------------------------------------------------------
+//
+HBufC8* CCmPluginPacketData::GetBearerInfoString8L( TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERINFOSTRING8L_ENTRY );
+
+    HBufC8* retVal( NULL );
+    switch( aAttribute )
+        {
+        default:
+            {
+
+            User::Leave( KErrNotSupported );
+            }
+        break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERINFOSTRING8L_EXIT );
+
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::PrepareToCopyDataL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::PrepareToCopyDataL( CCmPluginBaseEng* aCopyInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_PREPARETOCOPYDATAL_ENTRY );
+
+    CCmPluginPacketData* plugin = static_cast<CCmPluginPacketData*>( aCopyInstance );
+
+    plugin->iOutgoing = iOutgoing;
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_PREPARETOCOPYDATAL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::CopyServiceRecordL
+// ---------------------------------------------------------------------------
+//
+CommsDat::CCDRecordBase* CCmPluginPacketData::CopyServiceRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_COPYSERVICERECORDL_ENTRY );
+
+    __ASSERT_ALWAYS( iServiceRecord != NULL, User::Leave( KErrNotFound ));
+
+    CCDWCDMAPacketServiceRecord* origServiceRecord =
+            static_cast<CCDWCDMAPacketServiceRecord*>( iServiceRecord );
+
+    // New service record
+    CCDWCDMAPacketServiceRecord* serviceRecord = NULL;
+    if ( iOutgoing )
+        {
+        serviceRecord = static_cast<CCDWCDMAPacketServiceRecord *>(
+                CCDRecordBase::RecordFactoryL( KCDTIdOutgoingGprsRecord ) );
+        }
+    else
+        {
+        serviceRecord = static_cast<CCDWCDMAPacketServiceRecord *>(
+                CCDRecordBase::RecordFactoryL( KCDTIdIncomingGprsRecord ) );
+        }
+
+    CleanupStack::PushL( serviceRecord );
+
+    serviceRecord->iRecordName.SetL( origServiceRecord->iRecordName );
+
+    if ( !origServiceRecord->iServiceEnableLlmnr.IsNull() )
+        {
+        serviceRecord->iServiceEnableLlmnr.SetL( origServiceRecord->iServiceEnableLlmnr );
+        }
+
+    if ( !origServiceRecord->iGPRSAPN.IsNull() )
+        {
+        serviceRecord->iGPRSAPN.SetL( origServiceRecord->iGPRSAPN );
+        }
+    if ( !origServiceRecord->iGPRSPDPType.IsNull() )
+        {
+        serviceRecord->iGPRSPDPType.SetL( origServiceRecord->iGPRSPDPType );
+        }
+    if ( !origServiceRecord->iGPRSPDPAddress.IsNull() )
+        {
+        serviceRecord->iGPRSPDPAddress.SetL( origServiceRecord->iGPRSPDPAddress );
+        }
+    if ( !origServiceRecord->iGPRSReqPrecedence.IsNull() )
+        {
+        serviceRecord->iGPRSReqPrecedence.SetL( origServiceRecord->iGPRSReqPrecedence );
+        }
+    if ( !origServiceRecord->iGPRSReqDelay.IsNull() )
+        {
+        serviceRecord->iGPRSReqDelay.SetL( origServiceRecord->iGPRSReqDelay );
+        }
+    if ( !origServiceRecord->iGPRSReqReliability.IsNull() )
+        {
+        serviceRecord->iGPRSReqReliability.SetL( origServiceRecord->iGPRSReqReliability );
+        }
+    if ( !origServiceRecord->iGPRSReqPeakThroughput.IsNull() )
+        {
+        serviceRecord->iGPRSReqPeakThroughput.SetL( origServiceRecord->iGPRSReqPeakThroughput );
+        }
+    if ( !origServiceRecord->iGPRSReqMeanThroughput.IsNull() )
+        {
+        serviceRecord->iGPRSReqMeanThroughput.SetL( origServiceRecord->iGPRSReqMeanThroughput );
+        }
+    if ( !origServiceRecord->iGPRSMinPrecedence.IsNull() )
+        {
+        serviceRecord->iGPRSMinPrecedence.SetL( origServiceRecord->iGPRSMinPrecedence );
+        }
+    if ( !origServiceRecord->iGPRSMinDelay.IsNull() )
+        {
+        serviceRecord->iGPRSMinDelay.SetL( origServiceRecord->iGPRSMinDelay );
+        }
+    if ( !origServiceRecord->iGPRSMinReliability.IsNull() )
+        {
+        serviceRecord->iGPRSMinReliability.SetL( origServiceRecord->iGPRSMinReliability );
+        }
+    if ( !origServiceRecord->iGPRSMinPeakThroughput.IsNull() )
+        {
+        serviceRecord->iGPRSMinPeakThroughput.SetL( origServiceRecord->iGPRSMinPeakThroughput );
+        }
+    if ( !origServiceRecord->iGPRSMinMeanThroughput.IsNull() )
+        {
+        serviceRecord->iGPRSMinMeanThroughput.SetL( origServiceRecord->iGPRSMinMeanThroughput );
+        }
+    if ( !origServiceRecord->iGPRSDataCompression.IsNull() )
+        {
+        serviceRecord->iGPRSDataCompression.SetL( origServiceRecord->iGPRSDataCompression );
+        }
+    if ( !origServiceRecord->iGPRSHeaderCompression.IsNull() )
+        {
+        serviceRecord->iGPRSHeaderCompression.SetL( origServiceRecord->iGPRSHeaderCompression );
+        }
+    if ( !origServiceRecord->iGPRSUseEdge.IsNull() )
+        {
+        serviceRecord->iGPRSUseEdge.SetL( origServiceRecord->iGPRSUseEdge );
+        }
+    if ( !origServiceRecord->iGPRSAnonymousAccess.IsNull() )
+        {
+        serviceRecord->iGPRSAnonymousAccess.SetL( origServiceRecord->iGPRSAnonymousAccess );
+        }
+    if ( !origServiceRecord->iGPRSIfParams.IsNull() )
+        {
+        serviceRecord->iGPRSIfParams.SetL( origServiceRecord->iGPRSIfParams );
+        }
+    if ( !origServiceRecord->iGPRSIfNetworks.IsNull() )
+        {
+        serviceRecord->iGPRSIfNetworks.SetL( origServiceRecord->iGPRSIfNetworks );
+        }
+    if ( !origServiceRecord->iGPRSIfPromptForAuth.IsNull() )
+        {
+        serviceRecord->iGPRSIfPromptForAuth.SetL( origServiceRecord->iGPRSIfPromptForAuth );
+        }
+    if ( !origServiceRecord->iGPRSIfAuthName.IsNull() )
+        {
+        serviceRecord->iGPRSIfAuthName.SetL( origServiceRecord->iGPRSIfAuthName );
+        }
+    if ( !origServiceRecord->iGPRSIfAuthPass.IsNull() )
+        {
+        serviceRecord->iGPRSIfAuthPass.SetL( origServiceRecord->iGPRSIfAuthPass );
+        }
+    if ( !origServiceRecord->iGPRSIfAuthRetries.IsNull() )
+        {
+        serviceRecord->iGPRSIfAuthRetries.SetL( origServiceRecord->iGPRSIfAuthRetries );
+        }
+    if ( !origServiceRecord->iGPRSIPNetMask.IsNull() )
+        {
+        serviceRecord->iGPRSIPNetMask.SetL( origServiceRecord->iGPRSIPNetMask );
+        }
+    if ( !origServiceRecord->iGPRSIPGateway.IsNull() )
+        {
+        serviceRecord->iGPRSIPGateway.SetL( origServiceRecord->iGPRSIPGateway );
+        }
+    if ( !origServiceRecord->iGPRSIPAddrFromServer.IsNull() )
+        {
+        serviceRecord->iGPRSIPAddrFromServer.SetL( origServiceRecord->iGPRSIPAddrFromServer );
+        }
+    if ( !origServiceRecord->iGPRSIPAddr.IsNull() )
+        {
+        serviceRecord->iGPRSIPAddr.SetL( origServiceRecord->iGPRSIPAddr );
+        }
+    if ( !origServiceRecord->iGPRSIPDNSAddrFromServer.IsNull() )
+        {
+        serviceRecord->iGPRSIPDNSAddrFromServer.SetL( origServiceRecord->iGPRSIPDNSAddrFromServer );
+        }
+    if ( !origServiceRecord->iGPRSIPNameServer1.IsNull() )
+        {
+        serviceRecord->iGPRSIPNameServer1.SetL( origServiceRecord->iGPRSIPNameServer1 );
+        }
+    if ( !origServiceRecord->iGPRSIPNameServer2.IsNull() )
+        {
+        serviceRecord->iGPRSIPNameServer2.SetL( origServiceRecord->iGPRSIPNameServer2 );
+        }
+    if ( !origServiceRecord->iGPRSIP6DNSAddrFromServer.IsNull() )
+        {
+        serviceRecord->iGPRSIP6DNSAddrFromServer.SetL( origServiceRecord->iGPRSIP6DNSAddrFromServer );
+        }
+    if ( !origServiceRecord->iGPRSIP6NameServer1.IsNull() )
+        {
+        serviceRecord->iGPRSIP6NameServer1.SetL( origServiceRecord->iGPRSIP6NameServer1 );
+        }
+    if ( !origServiceRecord->iGPRSIP6NameServer2.IsNull() )
+        {
+        serviceRecord->iGPRSIP6NameServer2.SetL( origServiceRecord->iGPRSIP6NameServer2 );
+        }
+    if ( !origServiceRecord->iGPRSIPAddrLeaseValidFrom.IsNull() )
+        {
+        serviceRecord->iGPRSIPAddrLeaseValidFrom.SetL( origServiceRecord->iGPRSIPAddrLeaseValidFrom );
+        }
+    if ( !origServiceRecord->iGPRSIPAddrLeaseValidTo.IsNull() )
+        {
+        serviceRecord->iGPRSIPAddrLeaseValidTo.SetL( origServiceRecord->iGPRSIPAddrLeaseValidTo );
+        }
+    if ( !origServiceRecord->iGPRSConfigDaemonManagerName.IsNull() )
+        {
+        serviceRecord->iGPRSConfigDaemonManagerName.SetL( origServiceRecord->iGPRSConfigDaemonManagerName );
+        }
+    if ( !origServiceRecord->iGPRSConfigDaemonName.IsNull() )
+        {
+        serviceRecord->iGPRSConfigDaemonName.SetL( origServiceRecord->iGPRSConfigDaemonName );
+        }
+    if ( !origServiceRecord->iGPRSEnableLCPExtension.IsNull() )
+        {
+        serviceRecord->iGPRSEnableLCPExtension.SetL( origServiceRecord->iGPRSEnableLCPExtension );
+        }
+    if ( !origServiceRecord->iGPRSDisablePlainTextAuth.IsNull() )
+        {
+        serviceRecord->iGPRSDisablePlainTextAuth.SetL( origServiceRecord->iGPRSDisablePlainTextAuth );
+        }
+    if ( !origServiceRecord->iGPRSAPType.IsNull() )
+        {
+        serviceRecord->iGPRSAPType.SetL( origServiceRecord->iGPRSAPType );
+        }
+    if ( !origServiceRecord->iGPRSQOSWarningTimeOut.IsNull() )
+        {
+        serviceRecord->iGPRSQOSWarningTimeOut.SetL( origServiceRecord->iGPRSQOSWarningTimeOut );
+        }
+    if ( !origServiceRecord->iUmtsR99QoSAndOnTable.IsNull() )
+        {
+        serviceRecord->iUmtsR99QoSAndOnTable.SetL( origServiceRecord->iUmtsR99QoSAndOnTable );
+        }
+    if ( !origServiceRecord->iGPRSR5DataCompression.IsNull() )
+        {
+        serviceRecord->iGPRSR5DataCompression.SetL( origServiceRecord->iGPRSR5DataCompression );
+        }
+    if ( !origServiceRecord->iGPRSR5HeaderCompression.IsNull() )
+        {
+        serviceRecord->iGPRSR5HeaderCompression.SetL( origServiceRecord->iGPRSR5HeaderCompression );
+        }
+    if ( !origServiceRecord->iGPRSPacketFlowIdentifier.IsNull() )
+        {
+        serviceRecord->iGPRSPacketFlowIdentifier.SetL( origServiceRecord->iGPRSPacketFlowIdentifier );
+        }
+    if ( !origServiceRecord->iGPRSUmtsGprsRelease.IsNull() )
+        {
+        serviceRecord->iGPRSUmtsGprsRelease.SetL( origServiceRecord->iGPRSUmtsGprsRelease );
+        }
+
+    CleanupStack::Pop( serviceRecord );
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_COPYSERVICERECORDL_EXIT );
+    return serviceRecord;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::ResetBearerRecords
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::ResetBearerRecords()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_RESETBEARERRECORDS_ENTRY );
+
+    delete iPacketDataQoSRecord;
+    iPacketDataQoSRecord = NULL;
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_RESETBEARERRECORDS_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::DeleteBearerRecordsL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::DeleteBearerRecordsL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_DELETEBEARERRECORDSL_ENTRY );
+
+    if ( !TPtrC(iPacketDataQoSRecord->iRecordName).CompareF( KDefaultQosDataRecordName ) ||
+            !TPtrC(iPacketDataQoSRecord->iRecordName).CompareF( KDefaultQosDataRecordNamewithSpace ) )
+        {
+        OstTraceFunctionExit0( CCMPLUGINPACKETDATA_DELETEBEARERRECORDSL_EXIT );
+        return;
+        }
+
+    iPacketDataQoSRecord->DeleteL( iSession );
+    iPacketDataQoSRecord = NULL;
+
+    OstTraceFunctionExit0( DUP1_CCMPLUGINPACKETDATA_DELETEBEARERRECORDSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::CopyBearerRecordsL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::CopyBearerRecordsL( CCmPluginBaseEng* aCopyInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_COPYBEARERRECORDSL_ENTRY );
+
+    CCmPluginPacketData* plugin = static_cast<CCmPluginPacketData*>( aCopyInstance );
+
+    plugin->iPacketDataQoSRecord =
+        static_cast<CCDUmtsR99QoSAndOnTableRecord*>(
+                CCDRecordBase::CreateCopyRecordL( *iPacketDataQoSRecord ) );
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_COPYBEARERRECORDSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::GetBearerTableIdsToBeObserved
+// ---------------------------------------------------------------------------
+//
+void CCmPluginPacketData::GetBearerTableIdsToBeObservedL(
+        RArray<TUint32>& aTableIdArray ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETBEARERTABLEIDSTOBEOBSERVEDL_ENTRY );
+
+    aTableIdArray.AppendL( KCDTIdOutgoingGprsRecord );
+    aTableIdArray.AppendL( KCDTIdUmtsR99QoSAndOnTableRecord );
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERTABLEIDSTOBEOBSERVEDL_EXIT );
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/src/cmpluginpacketdataproxy.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*        Implementation of packet data Plugin proxy table
+*
+*/
+
+
+#include <e32std.h>
+#include <ecom/ImplementationProxy.h>
+
+#include "cmpluginpacketdata.h"
+
+// Exported proxy for instantiation method resolution
+// Define the interface UIDs
+const TImplementationProxy ImplementationTable[] =
+    {
+    IMPLEMENTATION_PROXY_ENTRY( KUidPacketDataBearerType, CCmPluginPacketData::NewL)
+    };
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+
+    return ImplementationTable;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/traces/OstTraceDefinitions.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+// #define OST_TRACE_COMPILER_IN_USE
+#include <opensystemtrace.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/traces/fixed_id.definitions	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,69 @@
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_FLOW=0x7
+[TRACE]TRACE_FLOW[0x7]_CCMPDCOVERAGECHECK_CCMPDCOVERAGECHECK_ENTRY=0x2
+[TRACE]TRACE_FLOW[0x7]_CCMPDCOVERAGECHECK_CCMPDCOVERAGECHECK_EXIT=0x3
+[TRACE]TRACE_FLOW[0x7]_CCMPDCOVERAGECHECK_DOCANCEL_ENTRY=0x6
+[TRACE]TRACE_FLOW[0x7]_CCMPDCOVERAGECHECK_DOCANCEL_EXIT=0x7
+[TRACE]TRACE_FLOW[0x7]_CCMPDCOVERAGECHECK_ISTHERECOVERAGEL_ENTRY=0xa
+[TRACE]TRACE_FLOW[0x7]_CCMPDCOVERAGECHECK_ISTHERECOVERAGEL_EXIT=0xb
+[TRACE]TRACE_FLOW[0x7]_CCMPDCOVERAGECHECK_RUNL_ENTRY=0x8
+[TRACE]TRACE_FLOW[0x7]_CCMPDCOVERAGECHECK_RUNL_EXIT=0x9
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_ADDITIONALRESET_ENTRY=0x35
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_ADDITIONALRESET_EXIT=0x36
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_BEARERRECORDIDLC_ENTRY=0x2f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_BEARERRECORDIDLC_EXIT=0x30
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_CANHANDLEIAPIDL_ENTRY=0x24
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_CANHANDLEIAPIDL_EXIT=0x25
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_CCMPLUGINPACKETDATA_ENTRY=0xe
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_CCMPLUGINPACKETDATA_EXIT=0xf
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_CHECKNETWORKCOVERAGEL_ENTRY=0x31
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_CHECKNETWORKCOVERAGEL_EXIT=0x32
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_CONSTRUCTL_ENTRY=0x14
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_CONSTRUCTL_EXIT=0x15
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_CREATEADDITIONALRECORDSL_ENTRY=0x3b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_CREATEADDITIONALRECORDSL_EXIT=0x3c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_CREATEINSTANCEL_ENTRY=0x10
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_CREATEINSTANCEL_EXIT=0x11
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_CREATENEWSERVICERECORDL_ENTRY=0x2b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_CREATENEWSERVICERECORDL_EXIT=0x2c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_DELETEADDITIONALRECORDSL_ENTRY=0x3d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_DELETEADDITIONALRECORDSL_EXIT=0x3e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_GETBOOLATTRIBUTEL_ENTRY=0x18
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_GETBOOLATTRIBUTEL_EXIT=0x19
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_GETINTATTRIBUTEL_ENTRY=0x16
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_GETINTATTRIBUTEL_EXIT=0x17
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_GETSTRINGATTRIBUTEL_ENTRY=0x1a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_GETSTRINGATTRIBUTEL_EXIT=0x1b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_LOADADDITIONALRECORDSL_ENTRY=0x40
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_LOADADDITIONALRECORDSL_EXIT=0x41
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_LOADSERVICESETTINGL_ENTRY=0x28
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_LOADSERVICESETTINGL_EXIT=0x29
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_NEWL_ENTRY=0xc
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_NEWL_EXIT=0xd
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_PREPARETOCOPYDATAL_ENTRY=0x37
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_PREPARETOCOPYDATAL_EXIT=0x38
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_PREPARETOUPDATERECORDSL_ENTRY=0x22
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_PREPARETOUPDATERECORDSL_EXIT=0x23
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_SERVICERECORDIDLC_ENTRY=0x2d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_SERVICERECORDIDLC_EXIT=0x2e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_SERVICERECORD_ENTRY=0x2a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_SETBOOLATTRIBUTEL_ENTRY=0x1e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_SETBOOLATTRIBUTEL_EXIT=0x1f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_SETDAEMONNAMEL_ENTRY=0x39
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_SETDAEMONNAMEL_EXIT=0x3a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_SETINTATTRIBUTEL_ENTRY=0x1c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_SETINTATTRIBUTEL_EXIT=0x1d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_SETPDPTYPEL_ENTRY=0x33
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_SETPDPTYPEL_EXIT=0x34
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_SETSTRINGATTRIBUTEL_ENTRY=0x20
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_SETSTRINGATTRIBUTEL_EXIT=0x21
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_UPDATEADDITIONALRECORDSL_ENTRY=0x42
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINPACKETDATA_UPDATEADDITIONALRECORDSL_EXIT=0x43
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPDCOVERAGECHECK_CCMPDCOVERAGECHECK_ENTRY=0x4
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPDCOVERAGECHECK_CCMPDCOVERAGECHECK_EXIT=0x5
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINPACKETDATA_CANHANDLEIAPIDL_ENTRY=0x26
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINPACKETDATA_CANHANDLEIAPIDL_EXIT=0x27
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINPACKETDATA_CCMPLUGINPACKETDATA_ENTRY=0x12
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINPACKETDATA_CCMPLUGINPACKETDATA_EXIT=0x13
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINPACKETDATA_DELETEADDITIONALRECORDSL_EXIT=0x3f
+[TRACE]TRACE_FLOW[0x7]__SETPDPTYPEL_EXIT=0x1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginwlan/data/10281BB2.rss	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 2009-2010 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: 
+*     WLAN PlugIn's resource file
+*     
+*
+*/
+
+#include "ecom/RegistryInfo.rh"
+
+// Because attribute enums had to be added to namespace CMManager
+// it's not possible to included cmpluginwlandef.h
+// Thus bearer type id had to be redefine here.
+#define KUidWlanBearerType  0x10281BB1
+
+RESOURCE REGISTRY_INFO theInfo
+    {
+    dll_uid = 0x10281BB2;
+    interfaces = 
+        {
+        INTERFACE_INFO
+            {
+            interface_uid = 0x10207377; // = KCMPluginInterfaceUid
+            implementations = 
+                {
+                IMPLEMENTATION_INFO
+                    {
+                    implementation_uid = KUidWlanBearerType;
+                    version_no = 1;
+                    display_name = "Wlan";
+                    default_data = "Wlan";
+                    opaque_data = "";
+                    }
+                };
+            }
+        };
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginwlan/group/bld.inf	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2009-2010 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:
+*      Build information for the WLAN plugin.
+*
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+// export iby files
+../Rom/cmmpluginwlan.iby   CORE_MW_LAYER_IBY_EXPORT_PATH(cmmpluginwlan.iby)
+
+
+PRJ_MMPFILES
+cmpluginwlan.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginwlan/group/cmpluginwlan.mmp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2009-2010 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:
+*      Project specification for LAN Plugin.
+*
+*
+*/
+
+#include <data_caging_paths.hrh>
+#include <platform_paths.hrh>
+
+TARGET      cmpluginwlan.dll
+UID         0x10009D8D 0x10281BB2
+
+TARGETTYPE      PLUGIN
+
+CAPABILITY      CAP_ECOM_PLUGIN
+VENDORID        VID_DEFAULT
+
+SOURCEPATH  ../src
+
+SOURCE      cmpluginwlanproxy.cpp
+SOURCE      cmpluginwlan.cpp
+SOURCE      cmwlancoveragecheck.cpp
+
+SOURCEPATH  ../data
+
+START RESOURCE 10281BB2.rss
+TARGET cmpluginwlan.rsc
+END
+
+// Component specific internal headers
+USERINCLUDE     ../inc
+USERINCLUDE     ../traces
+
+// ADO specific internal headers
+SYSTEMINCLUDE   ../../../../../inc
+
+//Macro to /epoc32 headers
+MW_LAYER_SYSTEMINCLUDE
+
+LIBRARY     euser.lib
+LIBRARY     ecom.lib
+LIBRARY     commsdat.lib
+LIBRARY     cmmanagerdatabase.lib
+LIBRARY     featmgr.lib
+LIBRARY     cmmpluginbase.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginwlan/inc/cmpluginwlan.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,403 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*       Declaration of WLAN interface implementation
+*       for WLAN plugin
+*
+*/
+
+
+#ifndef WLAN_PLUGIN_H
+#define WLAN_PLUGIN_H
+
+#include <commsdat_partner.h>
+#include <cmpluginbaseeng.h>
+#include <cmpluginwlandef.h>
+
+class CCDWlanServiceRecord;
+
+
+/**
+*  CCmPluginWlan defines the functionality of wlan bearer support.
+*  Most of the API is inherited from CCmPluginBaseEng class.
+*/
+NONSHARABLE_CLASS( CCmPluginWlan ) : public CCmPluginBaseEng
+    {
+
+    public: // Constructors and destructor
+        /**
+         * Two phased constructor.
+         * @return Returns the Wlan plugin object.
+         */
+        static CCmPluginWlan* NewL( TCmPluginInitParam* aInitParam );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CCmPluginWlan();
+
+    public: // From CCmPluginBaseEng
+        /**
+         * Creates a new instance of Wlan bearer plugin. The instance
+         * created represents a bearer, not a connection method.
+         * @param aInitParam Initialization data.
+         * @return Returns CCmPluginBaseEng type pointer which represents pure
+         * bearer instance for the cmm server.
+         */
+
+        virtual CCmPluginBaseEng* CreateInstanceL(
+                TCmPluginInitParam& aInitParam ) const;
+
+        /**
+         * Following GetBearerInfoXXXL methods return the values of the
+         * requested attributes. These values are Wlan specific
+         * so they don't vary between Wlan Connection Methods.
+         * @param aAttribute An attribute identifier.
+         * @return Returns the value requested. If not found leaves with
+         * KErrNotFound error code.
+         */
+
+        virtual TUint32 GetBearerInfoIntL( TUint32 aAttribute ) const;
+
+        virtual TBool GetBearerInfoBoolL( TUint32 aAttribute ) const;
+
+        virtual HBufC* GetBearerInfoStringL( TUint32 aAttribute ) const;
+
+        virtual HBufC8* GetBearerInfoString8L( TUint32 aAttribute ) const;
+
+        /**
+         * Checks if the plug-in can handle the Connection Method identified
+         * with parameter aIapId.
+         * @param aIapId IAPId of the Connection Method to be checked.
+         * @return ETrue if plug-in can handle the IAP, otherwise EFalse.
+         */
+        TBool CanHandleIapIdL( TUint32 aIapId ) const;
+
+        /**
+        * Checks if the plug-in can handle the given IAP record.
+        * @param aIapRecord IAP record to be checked
+        * @return ETrue if plug-in can handle the IAP, otherwise EFalse.
+        */
+        TBool CanHandleIapIdL( CommsDat::CCDIAPRecord *aIapRecord ) const;
+
+    public: // From CCmPluginBaseEng concerning a Connection Method
+        /**
+         * Before generic side starts to request plugins to load records
+         * it calls this to give a possibility make some preparations
+         * if needed.
+         */
+        virtual void PreparePluginToLoadRecordsL();
+
+        /**
+         * Before generic side starts to request plugins to update records
+         * it calls this to give a possibility make some preparations
+         * if needed.
+         * @param aGenRecordArray An array of generic records to be updated.
+         * @param aBearerSpecRecordArray An array of bearer specific records
+         * to be updated.
+         */
+        virtual void PreparePluginToUpdateRecordsL(
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+         * Creates the CCDLANServiceRecord and CCDWlanServiceRecord type service
+         * records.
+         */
+        virtual void CreateServiceRecordL();
+
+        /**
+         * Loads the service record(which is in wlan case LAN service type).
+         * Service record pointer is stored to plugins generic side
+         * implementation(CCmPluginBaseEng).
+         */
+        void LoadServiceRecordL();
+
+        /**
+         * Returns the service record id of this Connection Method.
+         * @return Returns the id of the service record id of this Connection Method.
+         */
+        virtual TUint32 ServiceRecordId() const;
+
+        /**
+        * Returns the service record name of the Connection Method.
+        * @param aServiceName Name of the service record which CM's iap record
+        * points to.
+        */
+        virtual void ServiceRecordNameLC( HBufC* &aServiceName );
+
+        /**
+         * Writes the service record data to CommsDat.
+         * @param aGenRecordArray An array containing pointers to service
+         * record of the Connection Method.
+         * @param aBearerSpecRecordArray An array containing pointers to bearer
+         * specific records of the Connection Method.
+         */
+        virtual void UpdateServiceRecordL(
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+         * Loads Wlan specific records of the Connection Method.
+         */
+        virtual void LoadBearerRecordsL();
+
+        /**
+         * Returns the bearer record id of the Connection Method.
+         * @param aRecordId Id of the bearer record this CM's iap record
+         * points to.
+         */
+        virtual void BearerRecordIdL( TUint32& aRecordId );
+
+        /**
+         * Returns the bearer record name of the Connection Method.
+         * @param aBearerName Name of the bearer record this CM's iap record
+         * points to.
+         */
+        virtual void BearerRecordNameLC( HBufC*& aBearerName );
+
+        /**
+         * Writes Wlan specific record data to CommsDat.
+         * @param aGenRecordArray An array containing pointer to service
+         * record of the Connection Method.
+         * @param aBearerSpecRecordArray An array containing pointers to bearer
+         * specific records to be written.
+         */
+        virtual void UpdateBearerRecordsL(
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+        * Deletes Wlan specific records of the Connection Method.
+        */
+        void DeleteBearerRecordsL();
+
+        /**
+         * Releases the memory reserved by the Wlan specific records
+         * of the Connection Method.
+         */
+        virtual void ResetBearerRecords();
+
+        /**
+         * Creates a copy of Wlan specific records and adds them to
+         * aRecordArray.
+         * @param aRecordArray Pointer array where to add bearer specific
+         * records.
+         */
+        virtual void GetBearerSpecificRecordsL(
+                RPointerArray<CommsDat::CCDRecordBase>& aRecordArray );
+
+        /**
+         * Following GetBearerXXXXAttribute methods get only the
+         * fields in records in pointer arrays(parameters).
+         * @param aAttribute Identifier of the requested value.
+         * @param aGenRecordArray An array containing pointers to generic
+         *      records of the Connection Method.
+         * @param aBearerSpecRecordArray An array containing pointers to bearer
+         *      specific records of the Connection Method. aAttribute
+         *      parameter should identify one field(integer, boolean string)
+         *      in one of these records.
+         * @return Returns the requested value. In error case leaves with
+         *      system-wide error code.
+         */
+
+        virtual TUint32 GetBearerIntAttributeL(
+                TUint32 aAttribute,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual TBool GetBearerBoolAttributeL(
+                TUint32 aAttribute,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual HBufC* GetBearerStringAttributeL(
+                TUint32 aAttribute,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual HBufC8* GetBearerString8AttributeL(
+                TUint32 aAttribute,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+         * Following SetBearerXXXXAttribute methods set only the
+         * fields in records in pointer arrays(parameters). They are not
+         * allowed to update the original records in plugins.
+         * @param aAttribute Identifier of the field to set.
+         * @param aValue The value to set.
+         * @param aGenRecordArray An array containing pointers to generic
+         * records of the Connection Method.
+         * @param aBearerSpecRecordArray An array containing pointers to bearer
+         * specific records of the Connection Method. aAttribute
+         * parameter should identify one field(integer, boolean string)
+         * in one of these records.
+         * @return None.
+         */
+
+        virtual void SetBearerIntAttributeL(
+                TUint32 aAttribute, TUint32 aValue,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual void SetBearerBoolAttributeL(
+                TUint32 aAttribute, TBool aValue,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual void SetBearerStringAttributeL(
+                TUint32 aAttribute, const TDesC16& aValue,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        virtual void SetBearerString8AttributeL(
+                TUint32 aAttribute, const TDesC8& aValue,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+         * Bearer is requested by the server if it uses CommsDat tables which
+         * should be observed for possible changes to be able to keep the
+         * data in memory in up to date.
+         * @param aTableIdArray A reference to an array where to add those
+         * table ids.
+         */
+        virtual void GetBearerTableIdsToBeObservedL(
+                RArray<TUint32>& aTableIdArray ) const;
+
+    private: // construction
+        /**
+        * Constructor.
+        */
+        CCmPluginWlan( TCmPluginInitParam* aInitParam );
+
+        /**
+        * Second phase constructor. Leaves on failure.
+        */
+        void ConstructL();
+
+    private: // from base class
+
+        /**
+        * From CCmPluginBaseEng
+        * Creates the WLAN service record used by this WLAN
+        */
+        void CreateWlanServiceRecordL();
+
+    private: // new functions
+
+        /**
+        * Checks if there are any wlan networks awailable.
+        * @return Returns ETrue if any wlan networks found. Otherwise
+        * returns EFalse.
+        */
+        TBool CheckNetworkCoverageL() const;
+
+        /**
+         * Sets the daemon name for the Connection Method.
+         * @param aGenRecordArray An array containing pointers to generic
+         * records of the Connection Method.
+         * @param aBearerSpecRecordArray An array containing pointers to bearer
+         * specific records of the Connection Method.
+         */
+        void SetDaemonNameL(
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray );
+
+        /**
+         * Returns a reference to service record of the Connection Method.
+         * @return Returns a reference to service record of the Connection
+         * Method.
+         */
+        CommsDat::CCDLANServiceRecord& ServiceRecord() const;
+
+        /**
+         * Makes needed preparations before copying records.
+         * @param aCopyInstance Instance of the plugin where to copy.
+         */
+        virtual void PrepareToCopyDataL( CCmPluginBaseEng* aCopyInstance );
+
+        /**
+         * Copies the LAN service record.
+         * @return Returns a pointer to service record created.
+         */
+        CommsDat::CCDRecordBase* CopyServiceRecordL();
+
+        /**
+         * Copies the Wlan service record.
+         * @param aSourceRecord A record where to copy from.
+         * @param aDestRecord A record where to copy to.
+         */
+        void CopyWlanServiceRecordL( CCDWlanServiceRecord* aSourceRecord,
+                                     CCDWlanServiceRecord* aDestRecord);
+
+        /**
+         * Copies the bearer specific records to copy instance.
+         * @param aCopyInstance Instance of the plugin where to copy.
+         */
+        virtual void CopyBearerRecordsL( CCmPluginBaseEng* aCopyInstance );
+
+        /**
+         * Adds Wlan service record with default values to record array.
+         * @param aRecordArray The array where to add the record.
+         */
+        void GetDefaultWlanServiceRecordL(
+                RPointerArray<CommsDat::CCDRecordBase>& aRecordArray );
+
+        /**
+         * Checks if the given attributes are in the correct range.
+         * @param aAttribute Identifies the attribute to be checked.
+         * @param aValue A value to be checked.
+         */
+        void CheckSecurityAttributeValidityL( const TUint32 aAttribute,
+                                              const TUint32 aValue );
+
+        /**
+         * Convert a 8-bit string in ascii format to hex format. Ownership of
+         * new string is transfered.
+         */
+        HBufC8* ConvertAsciiToHexL( const TDesC8& aSource );
+
+        /**
+         * Convert a 8-bit string in hex format to ascii format. Ownership of
+         * new string is transfered.
+         */
+        HBufC8* ConvertHexToAsciiL( const TDesC8& aSource );
+
+        /**
+         * Translates a hex char (0-1, a-f, A-F) to its 10-base numerical
+         * value (0-15).
+         */
+        TUint8 ConvertHexCharToNumberL( const TUint8 aHexChar );
+
+    private: // Data
+
+        /**
+         * WLan service record.
+         */
+        CCDWlanServiceRecord* iWlanServiceRecord;
+
+        /**
+         * WLAN table id.
+         */
+        CommsDat::TMDBElementId iWlanTableId;
+
+        /**
+         * Boolean to save the WAPI support info.
+         */
+        TBool iWAPISupported;
+    };
+
+#endif // WLAN_PLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginwlan/inc/cmwlancoveragecheck.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,75 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*        Declaration of WLAN Coverage Check class
+*
+*/
+
+#ifndef CMWLANCOVERAGECHECK_H
+#define CMWLANCOVERAGECHECK_H
+
+// INCLUDES
+#include <e32base.h>
+#include <cmpluginwlandef.h>
+
+using namespace CMManager;
+
+/**
+ *  WLAN Coverage Check
+ *
+ *  ?more_complete_description
+ *
+ *  @since S60 3.2
+ */
+class CCmWlanCoverageCheck : public CActive
+    {
+    enum EWlanCoverageState
+        {
+        EServiceStatus,
+        EScanning,
+        EDone,
+        };
+
+    public:
+
+        CCmWlanCoverageCheck();
+        ~CCmWlanCoverageCheck();
+
+        TBool GetCoverageL();
+
+        /**
+        * Returns whether the passed ssid and length results in a hidden or
+        * a non-hidden ssid.
+        *
+        * @since S60 3.2
+        * @param aSsidLength The length of the ssid
+        * @param aSsid The ssid
+        * @return ETrue if the ssid is hidden.
+        */
+        TBool IsHiddenSsid( TUint aSsidLength, const TUint8* aSsid ) const;
+
+    protected:  // from CActive
+
+        virtual void DoCancel();
+        virtual void RunL();
+
+    private:
+
+        TUint32                 iProgState;
+        TBool                   iCoverage;
+        CActiveSchedulerWait    iWait;
+    };
+
+
+#endif // CMWLANCOVERAGECHECK_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginwlan/rom/cmmpluginwlan.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2009-2010 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:
+* cmpluginwlan.dll to ROM.
+*
+*/
+#ifndef CMMPLUGINWLAN_IBY__
+#define CMMPLUGINWLAN_IBY__
+
+ECOM_PLUGIN(cmpluginwlan.dll,10281BB2.rsc)
+
+
+#endif // CMMPLUGINWLAN_IBY__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginwlan/src/cmpluginwlan.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,2432 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*        Implementation of WLAN Plugin interface implementation
+*        for WLAN Bearer
+*
+*/
+
+
+#include <ecom/ecom.h>      // For REComSession
+#include <wlancontainer.h>
+#include <wlanmgmtcommon.h>
+#include <cmpluginwlandef.h>
+#include <cmcommonconstants.h>
+#include <featmgr.h>
+
+#include "cmpluginwlan.h"
+#include "cmwlancoveragecheck.h"
+#include "cmmanagerdef.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmpluginwlanTraces.h"
+#endif
+
+using namespace CMManager;
+
+enum TWlanWepKeyFormat
+    {
+    EWlanWepKeyFormatAscii = 0,
+    EWlanWepKeyFormatHex
+    };
+
+// default values for fields...
+// CONSTANTS
+_LIT( KEmpty, "");
+
+const TBool KDefIpAddrFromServer = ETrue;
+const TBool KDefIpDnsAddrFromServer = ETrue;
+const TBool KDefIp6DnsAddrFromServer = ETrue;
+
+const TInt KWlanServiceRecordIndex = 0;
+
+const TUint32 KDefaultPriorityWLan = 0;
+
+const TInt KWlanLastSocketActivityTimeout = -1;
+const TInt KWlanLastSessionClosedTimeout = 1;
+const TInt KWlanLastSocketClosedTimeout = -1;
+
+/// Modem bearer names for WLAN connection methods
+_LIT( KModemBearerWLAN, "WLANBearer" );
+
+_LIT( KWlanBearerName, "WLANBearer" );
+_LIT( KWlanBearerAgent, "wlanagt.agt" );
+_LIT( KWlanBearerNif, "wlannif" );
+
+_LIT( KWlanLDDName, "not used" );
+_LIT( KWlanPDDName, "not used" );
+
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::NewL
+// --------------------------------------------------------------------------
+//
+CCmPluginWlan* CCmPluginWlan::NewL( TCmPluginInitParam* aInitParam )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_NEWL_ENTRY );
+
+    CCmPluginWlan* self = new( ELeave ) CCmPluginWlan( aInitParam );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_NEWL_EXIT );
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::~CCmPluginWlan
+// --------------------------------------------------------------------------
+//
+CCmPluginWlan::~CCmPluginWlan()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_CCMPLUGINWLAN_ENTRY );
+
+    ResetBearerRecords();
+    FeatureManager::UnInitializeLib();
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_CCMPLUGINWLAN_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::CreateInstanceL
+// --------------------------------------------------------------------------
+//
+CCmPluginBaseEng* CCmPluginWlan::CreateInstanceL( TCmPluginInitParam& aInitParam ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_CREATEINSTANCEL_ENTRY );
+
+    CCmPluginWlan* self = new( ELeave ) CCmPluginWlan( &aInitParam );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_CREATEINSTANCEL_EXIT );
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::CCmPluginWlan
+// --------------------------------------------------------------------------
+//
+CCmPluginWlan::CCmPluginWlan( TCmPluginInitParam* aInitParam )
+        :
+        CCmPluginBaseEng( aInitParam )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMPLUGINWLAN_CCMPLUGINWLAN_ENTRY );
+
+    iBearerType = KUidWlanBearerType;
+    iWlanServiceRecord = NULL;
+    iWlanTableId = 0;
+    iWAPISupported = EFalse;
+
+    OstTraceFunctionExit0( DUP1_CCMPLUGINWLAN_CCMPLUGINWLAN_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::ConstructL
+// --------------------------------------------------------------------------
+//
+void CCmPluginWlan::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_CONSTRUCTL_ENTRY );
+
+    FeatureManager::InitializeLibL();
+
+    if ( ! FeatureManager::FeatureSupported( KFeatureIdProtocolWlan ) )
+        {
+        FeatureManager::UnInitializeLib();
+
+        User::Leave( KErrNotSupported );
+        }
+
+    CCmPluginBaseEng::ConstructL();
+
+    // get WLAN table id
+    TRAP_IGNORE( iWlanTableId = CCDWlanServiceRecord::TableIdL( iSession ) );
+
+    if ( !iWlanTableId )
+        {
+        iWlanTableId = CCDWlanServiceRecord::CreateTableL( iSession );
+
+        TMDBElementId tableId = 0;
+
+        TRAP_IGNORE( tableId = CCDWlanDeviceSettingsRecord::TableIdL( iSession ) );
+        if ( !tableId )
+            {
+            CCDWlanDeviceSettingsRecord::CreateTableL( iSession );
+            }
+
+        TRAP_IGNORE( tableId = CCDWLANSecSSIDTable::TableIdL( iSession ) );
+        if ( !tableId )
+            {
+            CCDWLANSecSSIDTable::CreateTableL( iSession );
+            }
+
+        TRAP_IGNORE( tableId = CCDDestNWTable::TableIdL( iSession ) );
+        if ( !tableId )
+            {
+            CCDDestNWTable::CreateTableL( iSession );
+            }
+        }
+
+    iWAPISupported = FeatureManager::FeatureSupported( KFeatureIdFfWlanWapi );
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_CONSTRUCTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::ServiceRecord()
+// ---------------------------------------------------------------------------
+//
+CCDLANServiceRecord& CCmPluginWlan::ServiceRecord() const
+    {
+    return *static_cast<CCDLANServiceRecord*>( iServiceRecord );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::ServiceRecordId
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmPluginWlan::ServiceRecordId() const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_SERVICERECORDID_ENTRY );
+
+    return ServiceRecord().RecordId();
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::ServiceRecordIdLC
+// ---------------------------------------------------------------------------
+//
+void CCmPluginWlan::ServiceRecordNameLC( HBufC* &aName )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_SERVICERECORDNAMELC_ENTRY );
+
+    aName = TPtrC( KCDTypeNameLANService ).AllocLC();
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_SERVICERECORDNAMELC_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::BearerRecordIdL()
+// ---------------------------------------------------------------------------
+//
+void CCmPluginWlan::BearerRecordIdL( TUint32& aRecordId )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_BEARERRECORDIDL_ENTRY );
+
+    CCDLANBearerRecord* lanBearerRecord = static_cast<CCDLANBearerRecord*>
+                        (CCDRecordBase::RecordFactoryL( KCDTIdLANBearerRecord ));
+    CleanupStack::PushL( lanBearerRecord );
+
+    lanBearerRecord->iRecordName.SetL( TPtrC( KModemBearerWLAN ) );
+    if ( !lanBearerRecord->FindL( iSession ) )
+        { // bearer not found -> create dummy values
+        lanBearerRecord->SetRecordId( KCDNewRecordRequest );
+        lanBearerRecord->iBearerAgent = KWlanBearerAgent;
+        lanBearerRecord->iRecordName = KWlanBearerName;
+        lanBearerRecord->iLanBearerNifName = KWlanBearerNif;
+        lanBearerRecord->iLanBearerLddName = KWlanLDDName;
+        lanBearerRecord->iLanBearerPddName = KWlanPDDName;
+        lanBearerRecord->iLastSocketActivityTimeout =
+                                        (TUint32)KWlanLastSocketActivityTimeout;
+        lanBearerRecord->iLastSessionClosedTimeout =
+                                        (TUint32)KWlanLastSessionClosedTimeout;
+        lanBearerRecord->iLastSocketClosedTimeout =
+                                        (TUint32)KWlanLastSocketClosedTimeout;
+
+        lanBearerRecord->StoreL( iSession );
+        }
+
+    aRecordId = lanBearerRecord->RecordId();
+
+    CleanupStack::PopAndDestroy( lanBearerRecord );
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_BEARERRECORDIDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::BearerRecordNameLC()
+// ---------------------------------------------------------------------------
+//
+void CCmPluginWlan::BearerRecordNameLC( HBufC* &aBearerName )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_BEARERRECORDNAMELC_ENTRY );
+
+    aBearerName = TPtrC( KCDTypeNameLANBearer ).AllocLC();
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_BEARERRECORDNAMELC_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::GetBearerIntAttributeL
+// --------------------------------------------------------------------------
+//
+TUint32 CCmPluginWlan::GetBearerIntAttributeL(
+        TUint32 aAttribute,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_GETBEARERINTATTRIBUTEL_ENTRY );
+
+    TUint32 retVal( 0 );
+
+    CCDLANServiceRecord* serviceRecord =
+            static_cast<CCDLANServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] );
+
+    CCDWlanServiceRecord* wlanServiceRecord =
+            static_cast<CCDWlanServiceRecord*>(
+                    aBearerSpecRecordArray[KWlanServiceRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case ECmInvalidAttribute:
+            {
+            retVal = 0;
+            }
+            break;
+        case ECmExtensionLevel:
+            {
+            // This is extension from LAN plugin
+            retVal = KExtensionBaseLevel + 1;
+            }
+            break;
+        case ECmCommsDBBearerType:
+            {
+            retVal = KCommDbBearerWLAN;
+            }
+            break;
+        case ECmDefaultUiPriority:
+            {
+            retVal = KDefaultPriorityWLan;
+            }
+            break;
+        case ECmDefaultPriority:
+            {
+            retVal = KDefaultPriorityWLan;
+            }
+            break;
+        case EWlanServiceId:
+            {
+            retVal = wlanServiceRecord->iWlanServiceId;
+            }
+            break;
+        case EWlanConnectionMode:
+            {
+            retVal = wlanServiceRecord->iWlanConnMode;
+            }
+            break;
+        case EWlanSecurityMode:
+            {
+            retVal = wlanServiceRecord->iWlanSecMode;
+            }
+            break;
+        case EWlanAuthenticationMode:
+            {
+            retVal = wlanServiceRecord->iWlanAuthMode;
+            }
+            break;
+        case EWlanChannelID:
+            {
+            retVal = wlanServiceRecord->iWlanChannelID;
+            }
+            break;
+        case EWlanServiceExtensionTableRecordId:
+            {
+            retVal = serviceRecord->iServiceExtensionTableRecordId;
+            }
+            break;
+        case EWlanWepKeyIndex:
+            {
+            retVal = wlanServiceRecord->iWlanWepIndex;
+            }
+            break;
+        case EWlanWapiPskFormat:
+            {
+            retVal = wlanServiceRecord->iWlanFormatKey1;
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_GETBEARERINTATTRIBUTEL_EXIT );
+    return retVal;
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::GetBearerBoolAttributeL
+// --------------------------------------------------------------------------
+//
+TBool CCmPluginWlan::GetBearerBoolAttributeL(
+        TUint32 aAttribute,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_GETBEARERBOOLATTRIBUTEL_ENTRY );
+
+    TBool retVal( EFalse );
+
+    CCDWlanServiceRecord* wlanServiceRecord =
+            static_cast<CCDWlanServiceRecord*>(
+                    aBearerSpecRecordArray[KWlanServiceRecordIndex] );
+
+    CCDLANServiceRecord* serviceRecord =
+            static_cast<CCDLANServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case ECmCoverage:
+            {
+#ifndef __WINS__
+            retVal = CheckNetworkCoverageL();
+#else
+            retVal = ETrue;
+#endif
+            }
+            break;
+        case ECmDestination:
+            {
+            retVal = EFalse;
+            }
+            break;
+        case ECmBearerHasUi:
+            {
+            retVal = ETrue;
+            }
+            break;
+        case ECmIPv6Supported:
+            {
+            retVal = FeatureManager::FeatureSupported( KFeatureIdIPv6 );
+            }
+            break;
+        case EWlanScanSSID:
+            {
+            retVal = wlanServiceRecord->iWlanScanSSID;
+            }
+            break;
+        case EWlanAllowSSIDRoaming:
+            {
+            retVal = wlanServiceRecord->iWlanAllowSSIDRoaming;
+            }
+            break;
+        case ECmIPAddFromServer:
+        case EWlanIpAddrFromServer:
+            {
+            retVal = serviceRecord->iIpAddrFromServer;
+            }
+            break;
+        case ECmIPDNSAddrFromServer:
+        case EWlanIpDNSAddrFromServer:
+            {
+            retVal = serviceRecord->iIpDnsAddrFromServer;
+            }
+            break;
+        case ECmIP6DNSAddrFromServer:
+        case EWlanIp6DNSAddrFromServer:
+            {
+            retVal = serviceRecord->iIp6DnsAddrFromServer;
+            }
+            break;
+        case EWlanEnableWpaPsk:
+            {
+            retVal = static_cast<TBool>( wlanServiceRecord->iWlanEnableWpaPsk );
+            }
+            break;
+        case EWlan802_1xAllowUnencrypted:
+            {
+            retVal = static_cast<TBool>( wlanServiceRecord->iWlanWpaKeyLength );
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            break;
+            }
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_GETBEARERBOOLATTRIBUTEL_EXIT );
+    return retVal;
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::GetBearerStringAttributeL
+// --------------------------------------------------------------------------
+//
+HBufC* CCmPluginWlan::GetBearerStringAttributeL(
+        TUint32 aAttribute,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_GETBEARERSTRINGATTRIBUTEL_ENTRY );
+
+    HBufC* retVal = NULL;
+
+    CCDWlanServiceRecord* wlanServiceRecord =
+            static_cast<CCDWlanServiceRecord*>(
+                    aBearerSpecRecordArray[KWlanServiceRecordIndex] );
+
+    CCDLANServiceRecord* serviceRecord =
+            static_cast<CCDLANServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case ECmIFNetworks:
+        case EWlanIfNetworks:
+            {
+            if ( !serviceRecord->iIfNetworks.IsNull() )
+                {
+                retVal = ( serviceRecord->iIfNetworks.GetL() ).AllocL();
+                }
+            }
+            break;
+        case ECmIPNetmask:
+        case EWlanIpNetMask:
+            {
+            if ( !serviceRecord->iIpNetmask.IsNull() )
+                {
+                retVal = ( serviceRecord->iIpNetmask.GetL() ).AllocL();
+                }
+            }
+            break;
+        case ECmIPGateway:
+        case EWlanIpGateway:
+            {
+            if ( !serviceRecord->iIpGateway.IsNull() )
+                {
+                retVal = ( serviceRecord->iIpGateway.GetL() ).AllocL();
+                }
+            }
+            break;
+        case ECmIPAddress:
+        case EWlanIpAddr:
+            {
+            if ( !serviceRecord->iIpAddr.IsNull() )
+                {
+                retVal = ( serviceRecord->iIpAddr.GetL() ).AllocL();
+                }
+            }
+            break;
+        case ECmIPNameServer1:
+        case EWlanIpNameServer1:
+            {
+            if ( !serviceRecord->iIpNameServer1.IsNull() )
+                {
+                retVal = ( serviceRecord->iIpNameServer1.GetL() ).AllocL();
+                }
+            }
+            break;
+        case ECmIPNameServer2:
+        case EWlanIpNameServer2:
+            {
+            if ( !serviceRecord->iIpNameServer2.IsNull() )
+                {
+                retVal = ( serviceRecord->iIpNameServer2.GetL() ).AllocL();
+                }
+            }
+            break;
+        case ECmIP6NameServer1:
+        case EWlanIp6NameServer1:
+            {
+            if ( !serviceRecord->iIp6NameServer1.IsNull() )
+                {
+                retVal = ( serviceRecord->iIp6NameServer1.GetL() ).AllocL();
+                }
+            }
+            break;
+        case ECmIP6NameServer2:
+        case EWlanIp6NameServer2:
+            {
+            if ( !serviceRecord->iIp6NameServer2.IsNull() )
+                {
+                retVal = ( serviceRecord->iIp6NameServer2.GetL() ).AllocL();
+                }
+            }
+            break;
+        case ECmIPAddrLeaseValidFrom:
+        case EWlanIpAddrLeaseValidFrom:
+            {
+            if ( !serviceRecord->iIpAddrLeaseValidFrom.IsNull() )
+                {
+                retVal = ( serviceRecord->iIpAddrLeaseValidFrom.GetL() ).AllocL();
+                }
+            }
+            break;
+        case ECmIPAddrLeaseValidTo:
+        case EWlanIpAddrLeaseValidTo:
+            {
+            if ( !serviceRecord->iIpAddrLeaseValidTo.IsNull() )
+                {
+                retVal = ( serviceRecord->iIpAddrLeaseValidTo.GetL() ).AllocL();
+                }
+            }
+            break;
+        case ECmConfigDaemonManagerName:
+        case EWlanConfigDaemonManagerName:
+            {
+            if ( !serviceRecord->iConfigDaemonManagerName.IsNull() )
+                {
+                retVal = ( serviceRecord->iConfigDaemonManagerName.GetL() ).AllocL();
+                }
+            }
+            break;
+        case ECmConfigDaemonName:
+        case EWlanConfigDaemonName:
+            {
+            if ( !serviceRecord->iConfigDaemonName.IsNull() )
+                {
+                retVal = ( serviceRecord->iConfigDaemonName.GetL() ).AllocL();
+                }
+            }
+            break;
+        case EWlanServiceExtensionTableName:
+            {
+            if ( !serviceRecord->iServiceExtensionTableName.IsNull() )
+                {
+                retVal = ( serviceRecord->iServiceExtensionTableName.GetL() ).AllocL();
+                }
+            }
+            break;
+        case EWlanSSID:
+            {
+            if ( !wlanServiceRecord->iWLanSSID.IsNull() )
+                {
+                retVal = ( wlanServiceRecord->iWLanSSID.GetL() ).AllocL();
+                }
+            }
+            break;
+        case EWlanUsedSSID:
+            {
+            if ( !wlanServiceRecord->iWLanUsedSSID.IsNull() )
+                {
+                retVal = ( wlanServiceRecord->iWLanUsedSSID.GetL() ).AllocL();
+                }
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_GETBEARERSTRINGATTRIBUTEL_EXIT );
+    return retVal;
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::GetBearerString8AttributeL
+// --------------------------------------------------------------------------
+//
+HBufC8* CCmPluginWlan::GetBearerString8AttributeL(
+        TUint32 aAttribute,
+        RPointerArray<CommsDat::CCDRecordBase>& /*aGenRecordArray*/,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_GETBEARERSTRING8ATTRIBUTEL_ENTRY );
+
+    HBufC8* retVal( NULL );
+
+    CCDWlanServiceRecord* wlanServiceRecord =
+            static_cast<CCDWlanServiceRecord*>(
+                    aBearerSpecRecordArray[KWlanServiceRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case EWlanWpaPreSharedKey:
+            {
+            if ( !wlanServiceRecord->iWLanWpaPreSharedKey.IsNull() )
+                {
+                retVal = ( wlanServiceRecord->iWLanWpaPreSharedKey.GetL() ).AllocL();
+                }
+            }
+            break;
+        case EWlanWepKey1InHex:
+            {
+            if ( !wlanServiceRecord->iWlanFormatKey1.IsNull() &&
+                    !wlanServiceRecord->iWLanWepKey1.IsNull() )
+                {
+                if ( wlanServiceRecord->iWlanFormatKey1 == EWlanWepKeyFormatAscii )
+                    {
+                    // Format is ascii.
+                    retVal = ConvertAsciiToHexL( wlanServiceRecord->iWLanWepKey1.GetL() );
+                    }
+                else
+                    {
+                    // Format is hex.
+                    retVal = ( wlanServiceRecord->iWLanWepKey1.GetL() ).AllocL();
+                    }
+                }
+            }
+            break;
+        case EWlanWepKey2InHex:
+            {
+            if ( !wlanServiceRecord->iWlanFormatKey2.IsNull() &&
+                    !wlanServiceRecord->iWLanWepKey2.IsNull() )
+                {
+                if ( wlanServiceRecord->iWlanFormatKey2 == EWlanWepKeyFormatAscii )
+                    {
+                    // Format is ascii.
+                    retVal = ConvertAsciiToHexL( wlanServiceRecord->iWLanWepKey2.GetL() );
+                    }
+                else
+                    {
+                    // Format is hex.
+                    retVal = ( wlanServiceRecord->iWLanWepKey2.GetL() ).AllocL();
+                    }
+                }
+            }
+            break;
+        case EWlanWepKey3InHex:
+            {
+            if ( !wlanServiceRecord->iWlanFormatKey3.IsNull() &&
+                    !wlanServiceRecord->iWLanWepKey3.IsNull() )
+                {
+                if ( wlanServiceRecord->iWlanFormatKey3 == EWlanWepKeyFormatAscii )
+                    {
+                    // Format is ascii.
+                    retVal = ConvertAsciiToHexL( wlanServiceRecord->iWLanWepKey3.GetL() );
+                    }
+                else
+                    {
+                    // Format is hex.
+                    retVal = ( wlanServiceRecord->iWLanWepKey3.GetL() ).AllocL();
+                    }
+                }
+            }
+            break;
+        case EWlanWepKey4InHex:
+            {
+            if ( !wlanServiceRecord->iWlanFormatKey4.IsNull() &&
+                    !wlanServiceRecord->iWLanWepKey4.IsNull() )
+                {
+                if ( wlanServiceRecord->iWlanFormatKey4 == EWlanWepKeyFormatAscii )
+                    {
+                    // Format is ascii.
+                    retVal = ConvertAsciiToHexL( wlanServiceRecord->iWLanWepKey4.GetL() );
+                    }
+                else
+                    {
+                    // Format is hex.
+                    retVal = ( wlanServiceRecord->iWLanWepKey4.GetL() ).AllocL();
+                    }
+                }
+            }
+            break;
+        case EWlanWepKey1InAscii:
+            {
+            if ( !wlanServiceRecord->iWlanFormatKey1.IsNull() &&
+                    !wlanServiceRecord->iWLanWepKey1.IsNull() )
+                {
+                if ( wlanServiceRecord->iWlanFormatKey1 == EWlanWepKeyFormatAscii )
+                    {
+                    // Format is ascii.
+                    retVal = ( wlanServiceRecord->iWLanWepKey1.GetL() ).AllocL();
+                    }
+                else
+                    {
+                    // Format is hex.
+                    retVal = ConvertHexToAsciiL( wlanServiceRecord->iWLanWepKey1.GetL() );
+                    }
+                }
+            }
+            break;
+        case EWlanWepKey2InAscii:
+            {
+            if ( !wlanServiceRecord->iWlanFormatKey2.IsNull() &&
+                    !wlanServiceRecord->iWLanWepKey2.IsNull() )
+                {
+                if ( wlanServiceRecord->iWlanFormatKey2 == EWlanWepKeyFormatAscii )
+                    {
+                    // Format is ascii.
+                    retVal = ( wlanServiceRecord->iWLanWepKey2.GetL() ).AllocL();
+                    }
+                else
+                    {
+                    // Format is hex.
+                    retVal = ConvertHexToAsciiL( wlanServiceRecord->iWLanWepKey2.GetL() );
+                    }
+                }
+            }
+            break;
+        case EWlanWepKey3InAscii:
+            {
+            if ( !wlanServiceRecord->iWlanFormatKey3.IsNull() &&
+                    !wlanServiceRecord->iWLanWepKey3.IsNull() )
+                {
+                if ( wlanServiceRecord->iWlanFormatKey3 == EWlanWepKeyFormatAscii )
+                    {
+                    // Format is ascii.
+                    retVal = ( wlanServiceRecord->iWLanWepKey3.GetL() ).AllocL();
+                    }
+                else
+                    {
+                    // Format is hex.
+                    retVal = ConvertHexToAsciiL( wlanServiceRecord->iWLanWepKey3.GetL() );
+                    }
+                }
+            }
+            break;
+        case EWlanWepKey4InAscii:
+            {
+            if ( !wlanServiceRecord->iWlanFormatKey4.IsNull() &&
+                    !wlanServiceRecord->iWLanWepKey4.IsNull() )
+                {
+                if ( wlanServiceRecord->iWlanFormatKey4 == EWlanWepKeyFormatAscii )
+                    {
+                    // Format is ascii.
+                    retVal = ( wlanServiceRecord->iWLanWepKey4.GetL() ).AllocL();
+                    }
+                else
+                    {
+                    // Format is hex.
+                    retVal = ConvertHexToAsciiL( wlanServiceRecord->iWLanWepKey4.GetL() );
+                    }
+                }
+            }
+            break;
+        case EWlanWapiPsk:
+            {
+            if ( !wlanServiceRecord->iWLanWpaPreSharedKey.IsNull() )
+                {
+                retVal = ( wlanServiceRecord->iWLanWpaPreSharedKey.GetL() ).AllocL();
+                }
+            }
+            break;
+
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_GETBEARERSTRING8ATTRIBUTEL_EXIT );
+    return retVal;
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::SetBearerIntAttributeL
+// --------------------------------------------------------------------------
+//
+void CCmPluginWlan::SetBearerIntAttributeL(
+        TUint32 aAttribute,
+        TUint32 aValue,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_SETBEARERINTATTRIBUTEL_ENTRY );
+
+    CCDLANServiceRecord* serviceRecord =
+            static_cast<CCDLANServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] );
+
+    CCDWlanServiceRecord* wlanServiceRecord =
+            static_cast<CCDWlanServiceRecord*>(
+                    aBearerSpecRecordArray[KWlanServiceRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case ECmExtensionLevel:
+        case ECmCommsDBBearerType:
+        case ECmDefaultUiPriority:
+        case ECmDefaultPriority:
+            {
+            User::Leave( KErrArgument );
+            }
+            break;
+        case EWlanServiceId:
+            {
+            wlanServiceRecord->iWlanServiceId.SetL( aValue );
+            }
+            break;
+        case EWlanConnectionMode:
+            {
+            wlanServiceRecord->iWlanConnMode.SetL( aValue );
+            }
+            break;
+        case EWlanSecurityMode:
+            {
+            CheckSecurityAttributeValidityL( aAttribute, aValue );
+            wlanServiceRecord->iWlanSecMode.SetL( aValue );
+            // When setting security mode, also reset authentication mode to open.
+            wlanServiceRecord->iWlanAuthMode.SetL( CMManager::EWlanAuthModeOpen );
+            if ( aValue == EWlanSecMode802_1x )
+                {
+                // By default, do not allow unencrypted mode for 802.1x (Korea).
+                wlanServiceRecord->iWlanWpaKeyLength.SetL( 0 );
+                }
+            }
+            break;
+        case EWlanAuthenticationMode:
+            {
+            CheckSecurityAttributeValidityL( aAttribute, aValue );
+            wlanServiceRecord->iWlanAuthMode.SetL( aValue );
+            }
+            break;
+        case EWlanChannelID:
+            {
+            wlanServiceRecord->iWlanChannelID.SetL( aValue );
+            }
+            break;
+        case EWlanServiceExtensionTableRecordId:
+            {
+            serviceRecord->iServiceExtensionTableRecordId.SetL( aValue );
+            }
+            break;
+        case EWlanWepKeyIndex:
+            {
+            CheckSecurityAttributeValidityL( aAttribute, aValue );
+            wlanServiceRecord->iWlanWepIndex.SetL( aValue );
+            }
+            break;
+        case EWlanWapiPskFormat:
+            {
+            CheckSecurityAttributeValidityL( aAttribute, aValue );
+            wlanServiceRecord->iWlanFormatKey1.SetL( aValue );
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_SETBEARERINTATTRIBUTEL_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::SetBearerBoolAttributeL
+// --------------------------------------------------------------------------
+//
+void CCmPluginWlan::SetBearerBoolAttributeL(
+        TUint32 aAttribute,
+        TBool aValue,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_SETBEARERBOOLATTRIBUTEL_ENTRY );
+
+    CCDWlanServiceRecord* wlanServiceRecord =
+            static_cast<CCDWlanServiceRecord*>(
+                    aBearerSpecRecordArray[KWlanServiceRecordIndex] );
+
+    CCDLANServiceRecord* serviceRecord =
+            static_cast<CCDLANServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case EWlanScanSSID:
+            {
+            wlanServiceRecord->iWlanScanSSID.SetL( aValue );
+            }
+            break;
+        case EWlanAllowSSIDRoaming:
+            {
+            wlanServiceRecord->iWlanAllowSSIDRoaming.SetL( aValue );
+            }
+            break;
+        case ECmIPAddFromServer:
+        case EWlanIpAddrFromServer:
+            {
+            serviceRecord->iIpAddrFromServer.SetL( aValue );
+            }
+            break;
+        case ECmIPDNSAddrFromServer:
+        case EWlanIpDNSAddrFromServer:
+            {
+            serviceRecord->iIpDnsAddrFromServer.SetL( aValue );
+            }
+            break;
+        case ECmIP6DNSAddrFromServer:
+        case EWlanIp6DNSAddrFromServer:
+            {
+            serviceRecord->iIp6DnsAddrFromServer.SetL( aValue );
+            }
+            break;
+        case EWlanEnableWpaPsk:
+            {
+            wlanServiceRecord->iWlanEnableWpaPsk.SetL( static_cast<TUint>( aValue ) );
+            }
+            break;
+        case EWlan802_1xAllowUnencrypted:
+            {
+            wlanServiceRecord->iWlanWpaKeyLength.SetL( static_cast<TUint>( aValue ) );
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_SETBEARERBOOLATTRIBUTEL_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::SetBearerStringAttributeL
+// --------------------------------------------------------------------------
+//
+void CCmPluginWlan::SetBearerStringAttributeL(
+        TUint32 aAttribute,
+        const TDesC16& aValue,
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_SETBEARERSTRINGATTRIBUTEL_ENTRY );
+
+    CCDWlanServiceRecord* wlanServiceRecord =
+            static_cast<CCDWlanServiceRecord*>(
+                    aBearerSpecRecordArray[KWlanServiceRecordIndex] );
+
+    CCDLANServiceRecord* serviceRecord =
+            static_cast<CCDLANServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case ECmIFNetworks:
+        case EWlanIfNetworks:
+            {
+            serviceRecord->iIfNetworks.SetL( aValue );
+            }
+            break;
+        case ECmIPNetmask:
+        case EWlanIpNetMask:
+            {
+            serviceRecord->iIpNetmask.SetL( aValue );
+            }
+            break;
+        case ECmIPGateway:
+        case EWlanIpGateway:
+            {
+            serviceRecord->iIpGateway.SetL( aValue );
+            }
+            break;
+        case ECmIPAddress:
+        case EWlanIpAddr:
+            {
+            if ( ( aValue.Compare( KUnspecifiedIPv4 ) == 0 ) ||
+                    ( aValue.Compare( KNullDesC ) == 0 ) )
+                {
+                // If unspecified or NULL address is set dynamic
+                // IP must be enabled.
+                SetBearerBoolAttributeL( EWlanIpAddrFromServer,
+                                         ETrue,
+                                         aGenRecordArray,
+                                         aBearerSpecRecordArray );
+                }
+            else
+                {
+                // If valid address is set dynamic IP is disabled.
+                SetBearerBoolAttributeL( EWlanIpAddrFromServer,
+                                         EFalse,
+                                         aGenRecordArray,
+                                         aBearerSpecRecordArray );
+                }
+            serviceRecord->iIpAddr.SetL( aValue );
+            }
+            break;
+        case ECmIPNameServer1:
+        case EWlanIpNameServer1:
+            {
+            serviceRecord->iIpNameServer1.SetL( aValue );
+            }
+            break;
+        case ECmIPNameServer2:
+        case EWlanIpNameServer2:
+            {
+            serviceRecord->iIpNameServer2.SetL( aValue );
+            }
+            break;
+        case ECmIP6NameServer1:
+        case EWlanIp6NameServer1:
+            {
+            serviceRecord->iIp6NameServer1.SetL( aValue );
+            }
+            break;
+        case ECmIP6NameServer2:
+        case EWlanIp6NameServer2:
+            {
+            serviceRecord->iIp6NameServer2.SetL( aValue );
+            }
+            break;
+        case ECmIPAddrLeaseValidFrom:
+        case EWlanIpAddrLeaseValidFrom:
+            {
+            serviceRecord->iIpAddrLeaseValidFrom.SetL( aValue );
+            }
+            break;
+        case ECmIPAddrLeaseValidTo:
+        case EWlanIpAddrLeaseValidTo:
+            {
+            serviceRecord->iIpAddrLeaseValidTo.SetL( aValue );
+            }
+            break;
+        case ECmConfigDaemonManagerName:
+        case EWlanConfigDaemonManagerName:
+            {
+            serviceRecord->iConfigDaemonManagerName.SetL( aValue );
+            }
+            break;
+        case ECmConfigDaemonName:
+        case EWlanConfigDaemonName:
+            {
+            serviceRecord->iConfigDaemonName.SetL( aValue );
+            }
+            break;
+        case EWlanServiceExtensionTableName:
+            {
+            serviceRecord->iServiceExtensionTableName.SetL( aValue );
+            }
+            break;
+        case EWlanSSID:
+            {
+            wlanServiceRecord->iWLanSSID.SetL( aValue );
+            }
+            break;
+        case EWlanUsedSSID:
+            {
+            wlanServiceRecord->iWLanUsedSSID.SetL( aValue );
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_SETBEARERSTRINGATTRIBUTEL_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::SetBearerString8AttributeL
+// --------------------------------------------------------------------------
+//
+void CCmPluginWlan::SetBearerString8AttributeL(
+        TUint32 aAttribute,
+        const TDesC8& aValue,
+        RPointerArray<CommsDat::CCDRecordBase>& /*aGenRecordArray*/,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_SETBEARERSTRING8ATTRIBUTEL_ENTRY );
+
+    CCDWlanServiceRecord* wlanServiceRecord =
+            static_cast<CCDWlanServiceRecord*>(
+                    aBearerSpecRecordArray[KWlanServiceRecordIndex] );
+
+    switch ( aAttribute )
+        {
+        case EWlanWpaPreSharedKey:
+            {
+            wlanServiceRecord->iWLanWpaPreSharedKey.SetL( aValue );
+            wlanServiceRecord->iWlanWpaKeyLength.SetL( static_cast<TUint>( aValue.Length() ) );
+            }
+            break;
+        case EWlanWepKey1InHex:
+            {
+            wlanServiceRecord->iWLanWepKey1.SetL( aValue );
+            wlanServiceRecord->iWlanFormatKey1.SetL( EWlanWepKeyFormatHex );
+            }
+            break;
+        case EWlanWepKey2InHex:
+            {
+            wlanServiceRecord->iWLanWepKey2.SetL( aValue );
+            wlanServiceRecord->iWlanFormatKey2.SetL( EWlanWepKeyFormatHex );
+            }
+            break;
+        case EWlanWepKey3InHex:
+            {
+            wlanServiceRecord->iWLanWepKey3.SetL( aValue );
+            wlanServiceRecord->iWlanFormatKey3.SetL( EWlanWepKeyFormatHex );
+            }
+            break;
+        case EWlanWepKey4InHex:
+            {
+            wlanServiceRecord->iWLanWepKey4.SetL( aValue );
+            wlanServiceRecord->iWlanFormatKey4.SetL( EWlanWepKeyFormatHex );
+            }
+            break;
+        case EWlanWepKey1InAscii:
+            {
+            HBufC8* valueInHex = ConvertAsciiToHexL( aValue );
+            CleanupStack::PushL( valueInHex );
+            wlanServiceRecord->iWLanWepKey1.SetL( *valueInHex );
+            wlanServiceRecord->iWlanFormatKey1.SetL( EWlanWepKeyFormatHex );
+            CleanupStack::PopAndDestroy( valueInHex );
+            }
+            break;
+        case EWlanWepKey2InAscii:
+            {
+            HBufC8* valueInHex = ConvertAsciiToHexL( aValue );
+            CleanupStack::PushL( valueInHex );
+            wlanServiceRecord->iWLanWepKey2.SetL( *valueInHex );
+            wlanServiceRecord->iWlanFormatKey2.SetL( EWlanWepKeyFormatHex );
+            CleanupStack::PopAndDestroy( valueInHex );
+            }
+            break;
+        case EWlanWepKey3InAscii:
+            {
+            HBufC8* valueInHex = ConvertAsciiToHexL( aValue );
+            CleanupStack::PushL( valueInHex );
+            wlanServiceRecord->iWLanWepKey3.SetL( *valueInHex );
+            wlanServiceRecord->iWlanFormatKey3.SetL( EWlanWepKeyFormatHex );
+            CleanupStack::PopAndDestroy( valueInHex );
+            }
+            break;
+        case EWlanWepKey4InAscii:
+            {
+            HBufC8* valueInHex = ConvertAsciiToHexL( aValue );
+            CleanupStack::PushL( valueInHex );
+            wlanServiceRecord->iWLanWepKey4.SetL( *valueInHex );
+            wlanServiceRecord->iWlanFormatKey4.SetL( EWlanWepKeyFormatHex );
+            CleanupStack::PopAndDestroy( valueInHex );
+            }
+            break;
+        case EWlanWapiPsk:
+            {
+            wlanServiceRecord->iWLanWpaPreSharedKey.SetL( aValue );
+            }
+            break;
+
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_SETBEARERSTRING8ATTRIBUTEL_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::CanHandleIapIdL
+// --------------------------------------------------------------------------
+//
+TBool CCmPluginWlan::CanHandleIapIdL( TUint32 aIapId ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_CANHANDLEIAPIDL_ENTRY );
+
+    TBool retVal( EFalse );
+
+    CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord *>
+                        ( CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord) );
+
+    CleanupStack::PushL( iapRecord );
+    iapRecord->SetRecordId( aIapId );
+
+    TRAPD( err, iapRecord->LoadL( iSession ) );
+
+    if ( !err )
+        {
+        retVal = CanHandleIapIdL( iapRecord );
+        }
+
+    CleanupStack::PopAndDestroy( iapRecord );
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_CANHANDLEIAPIDL_EXIT );
+    return retVal;
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::CanHandleIapIdL
+// --------------------------------------------------------------------------
+//
+TBool CCmPluginWlan::CanHandleIapIdL( CCDIAPRecord *aIapRecord ) const
+    {
+    OstTraceFunctionEntry0( DUP1_CCMPLUGINWLAN_CANHANDLEIAPIDL_ENTRY );
+
+    TBool retVal( EFalse );
+
+    if ( (TPtrC(aIapRecord->iServiceType) == TPtrC(KCDTypeNameLANService) ) &&
+            TPtrC(aIapRecord->iBearerType) == TPtrC(KCDTypeNameLANBearer) )
+        {
+        // Check if there is a WLAN record with an iServiceId == iIapRecord->iService.
+        CCDWlanServiceRecord* tmprec = new( ELeave ) CCDWlanServiceRecord ( iWlanTableId );
+        CleanupStack::PushL( tmprec );
+
+        TInt service = aIapRecord->iService;
+
+        tmprec->iWlanServiceId.SetL( (TUint32)service );
+        if ( tmprec->FindL( iSession ) )
+            {
+            // we found at least one WLAN using this IAP,
+            retVal = ETrue;
+            }
+
+        CleanupStack::PopAndDestroy(tmprec);
+        }
+
+    OstTraceFunctionExit0( DUP1_CCMPLUGINWLAN_CANHANDLEIAPIDL_EXIT );
+    return retVal;
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::DeleteBearerRecordsL
+// --------------------------------------------------------------------------
+//
+void CCmPluginWlan::DeleteBearerRecordsL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_DELETEBEARERRECORDSL_ENTRY );
+
+    // as base class deletes service record, in this case LAN,
+    // only WLAN related stuff needs to be deleted
+    iWlanServiceRecord->DeleteL( iSession );
+    iWlanServiceRecord = NULL;
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_DELETEBEARERRECORDSL_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::LoadServiceRecordL
+// --------------------------------------------------------------------------
+//
+void CCmPluginWlan::LoadServiceRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_LOADSERVICERECORDL_ENTRY );
+
+    if ( TPtrC( KCDTypeNameLANService ) == iIapRecord->iServiceType )
+        {
+        iServiceRecord = static_cast<CCDLANServiceRecord *>
+                    ( CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord ) );
+
+        ServiceRecord().SetRecordId( iIapRecord->iService );
+        ServiceRecord().LoadL( iSession );
+        }
+    else
+        // this IAP service is not supported by this plugin.
+        {
+        User::Leave( KErrNotSupported );
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_LOADSERVICERECORDL_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::LoadBearerRecordsL
+// --------------------------------------------------------------------------
+//
+void CCmPluginWlan::LoadBearerRecordsL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_LOADBEARERRECORDSL_ENTRY );
+
+    if ( !iWlanServiceRecord )
+        {
+        iWlanServiceRecord = new( ELeave ) CCDWlanServiceRecord ( iWlanTableId );
+        }
+    iWlanServiceRecord->SetRecordId( 0 );
+
+    iWlanServiceRecord->iWlanServiceId.SetL( ( TUint32 )( iIapRecord->iService ) );
+
+    if ( iWlanServiceRecord->FindL( iSession ) )
+        {
+        iWlanServiceRecord->LoadL( iSession );
+        }
+    else
+        {
+        // not found -> error
+        User::Leave( KErrNotFound );
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_LOADBEARERRECORDSL_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::CreateServiceRecordL
+// --------------------------------------------------------------------------
+//
+void CCmPluginWlan::CreateServiceRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_CREATESERVICERECORDL_ENTRY );
+
+    delete iServiceRecord;
+    iServiceRecord = NULL;
+
+    iServiceRecord = static_cast<CCDLANServiceRecord*>
+                (CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord ) );
+
+    CCDLANServiceRecord* lanServiceRecord = static_cast<CCDLANServiceRecord *>( iServiceRecord );
+
+
+    if ( FeatureManager::FeatureSupported( KFeatureIdIPv6 ) )
+        {
+        lanServiceRecord->iIfNetworks.SetL( KDefIspIfNetworksIPv4IPv6 );
+        }
+    else
+        {
+        lanServiceRecord->iIfNetworks.SetL( KDefIspIfNetworksIPv4 );
+        }
+
+    lanServiceRecord->iIpGateway.SetL( KUnspecifiedIPv4 );
+    lanServiceRecord->iIpAddrFromServer.SetL( KDefIpAddrFromServer );
+
+    lanServiceRecord->iIpAddr.SetL( KUnspecifiedIPv4 );
+
+    lanServiceRecord->iIpDnsAddrFromServer.SetL( KDefIpDnsAddrFromServer );
+
+    lanServiceRecord->iIpNameServer1.SetL( KUnspecifiedIPv4 );
+    lanServiceRecord->iIpNameServer2.SetL( KUnspecifiedIPv4 );
+    lanServiceRecord->iIp6DnsAddrFromServer.SetL( KDefIp6DnsAddrFromServer );
+    lanServiceRecord->iIp6NameServer1.SetL( KDynamicIpv6Address );
+    lanServiceRecord->iIp6NameServer2.SetL( KDynamicIpv6Address );
+
+    if ( KDefIpAddrFromServer )
+        {
+        lanServiceRecord->iConfigDaemonManagerName.SetL( KDaemonManagerName );
+        lanServiceRecord->iConfigDaemonName.SetL( KConfigDaemonName );
+        }
+    else
+        {
+        lanServiceRecord->iConfigDaemonManagerName.SetL( KEmpty );
+        lanServiceRecord->iConfigDaemonName.SetL( KEmpty );
+        }
+
+    // create WLAN service record
+    CreateWlanServiceRecordL();
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_CREATESERVICERECORDL_EXIT );
+    }
+
+// --------------------------------------------------------------------------
+// CCmPluginWlan::CreateWlanServiceRecordL
+// --------------------------------------------------------------------------
+//
+void CCmPluginWlan::CreateWlanServiceRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_CREATEWLANSERVICERECORDL_ENTRY );
+
+    delete iWlanServiceRecord;
+
+    iWlanServiceRecord = NULL;
+
+    iWlanServiceRecord = new( ELeave ) CCDWlanServiceRecord ( iWlanTableId );
+    iWlanServiceRecord->SetRecordId( KCDNewRecordRequest );
+
+    iWlanServiceRecord->iRecordName.SetL( iIapRecord->iRecordName );
+    iWlanServiceRecord->iWlanConnMode.SetL( CMManager::EInfra );
+    iWlanServiceRecord->iWlanSecMode.SetL( CMManager::EWlanSecModeOpen );
+    iWlanServiceRecord->iWlanScanSSID.SetL( EFalse );
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_CREATEWLANSERVICERECORDL_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginWlan::PreparePluginToUpdateRecordsL()
+// ----------------------------------------------------------------------------
+//
+void CCmPluginWlan::PreparePluginToLoadRecordsL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_PREPAREPLUGINTOLOADRECORDSL_ENTRY );
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_PREPAREPLUGINTOLOADRECORDSL_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginWlan::PreparePluginToUpdateRecordsL()
+// ----------------------------------------------------------------------------
+//
+void CCmPluginWlan::PreparePluginToUpdateRecordsL(
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_PREPAREPLUGINTOUPDATERECORDSL_ENTRY );
+
+    CCDWlanServiceRecord* wlanServiceRecord =
+            static_cast<CCDWlanServiceRecord*>(
+                    aBearerSpecRecordArray[KWlanServiceRecordIndex] );
+
+    CCDIAPRecord* iapRecord =
+            static_cast<CCDIAPRecord*>(
+                    aGenRecordArray[KIapRecordIndex] );
+
+    CheckIfNameModifiedL( iapRecord, wlanServiceRecord );
+    wlanServiceRecord->iWlanServiceId.SetL( iapRecord->iService );
+
+    CCDLANServiceRecord* serviceRecord =
+            static_cast<CCDLANServiceRecord*>(
+                    aGenRecordArray[KServiceRecordIndex] );
+
+    CheckIfNameModifiedL( iapRecord, serviceRecord );
+
+    CheckDNSServerAddressL( ETrue,
+                            serviceRecord->iIp6NameServer1,
+                            serviceRecord->iIp6NameServer2,
+                            serviceRecord->iIp6DnsAddrFromServer );
+
+    CheckDNSServerAddressL( EFalse,
+                            serviceRecord->iIpNameServer1,
+                            serviceRecord->iIpNameServer2,
+                            serviceRecord->iIpDnsAddrFromServer );
+
+    SetDaemonNameL( aGenRecordArray, aBearerSpecRecordArray );
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_PREPAREPLUGINTOUPDATERECORDSL_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginWlan::UpdateServiceRecordL()
+// ----------------------------------------------------------------------------
+//
+void CCmPluginWlan::UpdateServiceRecordL(
+    RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+    RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_UPDATESERVICERECORDL_ENTRY );
+
+    // Delete the original record and create a copy from the parameter
+    delete iServiceRecord;
+    iServiceRecord = NULL;
+
+    iServiceRecord = static_cast<CCDLANServiceRecord*>
+                    (CCDRecordBase::RecordFactoryL( KCDTIdLANServiceRecord ) );
+
+    // LAN Service copy does not work so we have to copy it manually
+
+    CCDLANServiceRecord* lanServiceRecordTo =
+            static_cast<CCDLANServiceRecord *>(
+                    iServiceRecord );
+
+    CCDLANServiceRecord* lanServiceRecordFrom =
+            static_cast<CCDLANServiceRecord *>(
+                    aGenRecordArray[KServiceRecordIndex] );
+
+    if ( !lanServiceRecordFrom->iRecordName.IsNull() )
+        {
+        lanServiceRecordTo->iRecordName.SetL( lanServiceRecordFrom->iRecordName );
+        }
+    if ( !lanServiceRecordFrom->iIfNetworks.IsNull() )
+        {
+        lanServiceRecordTo->iIfNetworks.SetL( lanServiceRecordFrom->iIfNetworks );
+        }
+    if ( !lanServiceRecordFrom->iIpGateway.IsNull() )
+        {
+        lanServiceRecordTo->iIpGateway.SetL( lanServiceRecordFrom->iIpGateway );
+        }
+    if ( !lanServiceRecordFrom->iIpAddrFromServer.IsNull() )
+        {
+        lanServiceRecordTo->iIpAddrFromServer.SetL( lanServiceRecordFrom->iIpAddrFromServer );
+        }
+    if ( !lanServiceRecordFrom->iIpAddr.IsNull() )
+        {
+        lanServiceRecordTo->iIpAddr.SetL( lanServiceRecordFrom->iIpAddr );
+        }
+    if ( !lanServiceRecordFrom->iIpDnsAddrFromServer.IsNull() )
+        {
+        lanServiceRecordTo->iIpDnsAddrFromServer.SetL( lanServiceRecordFrom->iIpDnsAddrFromServer );
+        }
+    if ( !lanServiceRecordFrom->iIpNameServer1.IsNull() )
+        {
+        lanServiceRecordTo->iIpNameServer1.SetL( lanServiceRecordFrom->iIpNameServer1 );
+        }
+    if ( !lanServiceRecordFrom->iIpNameServer2.IsNull() )
+        {
+        lanServiceRecordTo->iIpNameServer2.SetL( lanServiceRecordFrom->iIpNameServer2 );
+        }
+    if ( !lanServiceRecordFrom->iIp6DnsAddrFromServer.IsNull() )
+        {
+        lanServiceRecordTo->iIp6DnsAddrFromServer.SetL( lanServiceRecordFrom->iIp6DnsAddrFromServer );
+        }
+    if ( !lanServiceRecordFrom->iIp6NameServer1.IsNull() )
+        {
+        lanServiceRecordTo->iIp6NameServer1.SetL( lanServiceRecordFrom->iIp6NameServer1 );
+        }
+    if ( !lanServiceRecordFrom->iIp6NameServer2.IsNull() )
+        {
+        lanServiceRecordTo->iIp6NameServer2.SetL( lanServiceRecordFrom->iIp6NameServer2 );
+        }
+    if ( !lanServiceRecordFrom->iConfigDaemonManagerName.IsNull() )
+        {
+        lanServiceRecordTo->iConfigDaemonManagerName.SetL( lanServiceRecordFrom->iConfigDaemonManagerName );
+        }
+    if ( !lanServiceRecordFrom->iConfigDaemonName.IsNull() )
+        {
+        lanServiceRecordTo->iConfigDaemonName.SetL( lanServiceRecordFrom->iConfigDaemonName );
+        }
+
+    lanServiceRecordTo->SetElementId( lanServiceRecordFrom->ElementId() );
+    // this is shared between wlan iaps so it cannot be hidden or protected
+    lanServiceRecordTo->ClearAttributes( ECDHidden );
+    lanServiceRecordTo->ClearAttributes( ECDProtectedWrite );
+
+    if ( !ServiceRecord().RecordId() )
+        {
+        ServiceRecord().SetRecordId( KCDNewRecordRequest );
+        ServiceRecord().StoreL( iSession );
+
+        // Update needed values to record tables too( lanservice and wlanservice )
+        lanServiceRecordFrom->SetElementId( ServiceRecord().ElementId() );
+        CCDWlanServiceRecord* wlanServiceRecord =
+                static_cast<CCDWlanServiceRecord *>(
+                        aBearerSpecRecordArray[KWlanServiceRecordIndex] );
+        wlanServiceRecord->iWlanServiceId.SetL( ServiceRecord().RecordId() );
+        }
+    else
+        {
+        ServiceRecord().ModifyL( iSession );
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_UPDATESERVICERECORDL_EXIT );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginWlan::UpdateBearerRecordsL()
+// ----------------------------------------------------------------------------
+//
+void CCmPluginWlan::UpdateBearerRecordsL(
+        RPointerArray<CommsDat::CCDRecordBase>& /*aGenRecordArray*/,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_UPDATEBEARERRECORDSL_ENTRY );
+
+    delete iWlanServiceRecord;
+    iWlanServiceRecord = NULL;
+
+    CCDWlanServiceRecord* wlanServiceRecord =
+            static_cast<CCDWlanServiceRecord*>(
+                    aBearerSpecRecordArray[KWlanServiceRecordIndex] );
+
+    iWlanServiceRecord = new( ELeave ) CCDWlanServiceRecord ( iWlanTableId );
+
+    iWlanServiceRecord->SetElementId( wlanServiceRecord->ElementId() );
+    iWlanServiceRecord->iRecordName.SetL( wlanServiceRecord->iRecordName );
+
+    iWlanServiceRecord->iWlanServiceId.SetL( wlanServiceRecord->iWlanServiceId );
+    iWlanServiceRecord->iWlanConnMode.SetL( wlanServiceRecord->iWlanConnMode );
+    if ( !wlanServiceRecord->iWLanSSID.IsNull() )
+        {
+        iWlanServiceRecord->iWLanSSID.SetL( wlanServiceRecord->iWLanSSID );
+        }
+    if ( !wlanServiceRecord->iWLanUsedSSID.IsNull() )
+        {
+        iWlanServiceRecord->iWLanUsedSSID.SetL( wlanServiceRecord->iWLanUsedSSID );
+        }
+    if ( !wlanServiceRecord->iWLanWepKey1.IsNull() )
+        {
+        iWlanServiceRecord->iWLanWepKey1.SetL( wlanServiceRecord->iWLanWepKey1 );
+        }
+    if ( !wlanServiceRecord->iWLanWepKey2.IsNull() )
+        {
+        iWlanServiceRecord->iWLanWepKey2.SetL( wlanServiceRecord->iWLanWepKey2 );
+        }
+    if ( !wlanServiceRecord->iWLanWepKey3.IsNull() )
+        {
+        iWlanServiceRecord->iWLanWepKey3.SetL( wlanServiceRecord->iWLanWepKey3 );
+        }
+    if ( !wlanServiceRecord->iWLanWepKey4.IsNull() )
+        {
+        iWlanServiceRecord->iWLanWepKey4.SetL( wlanServiceRecord->iWLanWepKey4 );
+        }
+    if ( !wlanServiceRecord->iWlanWepIndex.IsNull() )
+        {
+        iWlanServiceRecord->iWlanWepIndex.SetL( wlanServiceRecord->iWlanWepIndex );
+        }
+    if ( !wlanServiceRecord->iWlanSecMode.IsNull() )
+        {
+        iWlanServiceRecord->iWlanSecMode.SetL( wlanServiceRecord->iWlanSecMode );
+        }
+    if ( !wlanServiceRecord->iWlanAuthMode.IsNull() )
+        {
+        iWlanServiceRecord->iWlanAuthMode.SetL( wlanServiceRecord->iWlanAuthMode );
+        }
+    if ( !wlanServiceRecord->iWlanEnableWpaPsk.IsNull() )
+        {
+        iWlanServiceRecord->iWlanEnableWpaPsk.SetL( wlanServiceRecord->iWlanEnableWpaPsk );
+        }
+    if ( !wlanServiceRecord->iWLanWpaPreSharedKey.IsNull() )
+        {
+        iWlanServiceRecord->iWLanWpaPreSharedKey.SetL( wlanServiceRecord->iWLanWpaPreSharedKey );
+        }
+    if ( !wlanServiceRecord->iWlanWpaKeyLength.IsNull() )
+        {
+        iWlanServiceRecord->iWlanWpaKeyLength.SetL( wlanServiceRecord->iWlanWpaKeyLength );
+        }
+    if ( !wlanServiceRecord->iWLanEaps.IsNull() )
+        {
+        iWlanServiceRecord->iWLanEaps.SetL( wlanServiceRecord->iWLanEaps );
+        }
+    if ( !wlanServiceRecord->iWlanScanSSID.IsNull() )
+        {
+        iWlanServiceRecord->iWlanScanSSID.SetL( wlanServiceRecord->iWlanScanSSID );
+        }
+    if ( !wlanServiceRecord->iWlanChannelID.IsNull() )
+        {
+        iWlanServiceRecord->iWlanChannelID.SetL( wlanServiceRecord->iWlanChannelID );
+        }
+    if ( !wlanServiceRecord->iWlanFormatKey1.IsNull() )
+        {
+        iWlanServiceRecord->iWlanFormatKey1.SetL( wlanServiceRecord->iWlanFormatKey1 );
+        }
+    if ( !wlanServiceRecord->iWlanFormatKey2.IsNull() )
+        {
+        iWlanServiceRecord->iWlanFormatKey2.SetL( wlanServiceRecord->iWlanFormatKey2 );
+        }
+    if ( !wlanServiceRecord->iWlanFormatKey3.IsNull() )
+        {
+        iWlanServiceRecord->iWlanFormatKey3.SetL( wlanServiceRecord->iWlanFormatKey3 );
+        }
+    if ( !wlanServiceRecord->iWlanFormatKey4.IsNull() )
+        {
+        iWlanServiceRecord->iWlanFormatKey4.SetL( wlanServiceRecord->iWlanFormatKey4 );
+        }
+    if ( !wlanServiceRecord->iWlanAllowSSIDRoaming.IsNull() )
+        {
+        iWlanServiceRecord->iWlanAllowSSIDRoaming.SetL( wlanServiceRecord->iWlanAllowSSIDRoaming );
+        }
+    if ( !wlanServiceRecord->iWLanEnabledEaps.IsNull() )
+        {
+        iWlanServiceRecord->iWLanEnabledEaps.SetL( wlanServiceRecord->iWLanEnabledEaps );
+        }
+    if ( !wlanServiceRecord->iWLanDisabledEaps.IsNull() )
+        {
+        iWlanServiceRecord->iWLanDisabledEaps.SetL( wlanServiceRecord->iWLanDisabledEaps );
+        }
+
+    if ( !iWlanServiceRecord->RecordId() )
+        {
+        iWlanServiceRecord->SetRecordId( KCDNewRecordRequest );
+        iWlanServiceRecord->StoreL( iSession );
+        wlanServiceRecord->SetElementId( iWlanServiceRecord->ElementId() );
+        }
+    else
+        {
+        iWlanServiceRecord->ModifyL( iSession );
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_UPDATEBEARERRECORDSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::GetBearerSpecificRecordsL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginWlan::GetBearerSpecificRecordsL(
+        RPointerArray<CommsDat::CCDRecordBase>& aRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_GETBEARERSPECIFICRECORDSL_ENTRY );
+
+    if ( !iWlanServiceRecord )
+        {
+        // IAP not yet in CommDat
+        GetDefaultWlanServiceRecordL( aRecordArray );
+        }
+    else
+        {
+        CCDWlanServiceRecord* wlanServiceRecord = new( ELeave ) CCDWlanServiceRecord ( iWlanTableId );
+        CleanupStack::PushL( wlanServiceRecord );
+        CopyWlanServiceRecordL( iWlanServiceRecord, wlanServiceRecord );
+        wlanServiceRecord->SetElementId( iWlanServiceRecord->ElementId() );
+        wlanServiceRecord->iWlanServiceId.SetL( iWlanServiceRecord->iWlanServiceId );
+        aRecordArray.AppendL( wlanServiceRecord );
+        CleanupStack::Pop( wlanServiceRecord );
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_GETBEARERSPECIFICRECORDSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::CopyServiceRecordL
+// ---------------------------------------------------------------------------
+//
+CommsDat::CCDRecordBase* CCmPluginWlan::CopyServiceRecordL()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_COPYSERVICERECORDL_ENTRY );
+
+    __ASSERT_DEBUG( iServiceRecord != NULL, User::Leave( KErrNotFound ));
+
+    CCDRecordBase* serviceRecord =
+            static_cast<CCDLANServiceRecord*>(
+                    CCDRecordBase::CreateCopyRecordL( *iServiceRecord ) );
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_COPYSERVICERECORDL_EXIT );
+    return serviceRecord;
+    }
+
+// ----------------------------------------------------------------------------
+// CCmPluginWlan::CheckNetworkCoverageL()
+// ----------------------------------------------------------------------------
+//
+TBool CCmPluginWlan::CheckNetworkCoverageL() const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_CHECKNETWORKCOVERAGEL_ENTRY );
+
+#ifdef __WINS__
+    OstTraceFunctionExit0( CCMPLUGINWLAN_CHECKNETWORKCOVERAGEL_EXIT );
+
+    return ETrue;
+#else
+    CCmWlanCoverageCheck* coverage = new (ELeave) CCmWlanCoverageCheck;
+    CleanupStack::PushL( coverage );
+
+    TBool retVal( EFalse );
+    retVal = coverage->GetCoverageL();
+
+    CleanupStack::PopAndDestroy( coverage );
+
+    OstTraceFunctionExit0( DUP1_CCMPLUGINWLAN_CHECKNETWORKCOVERAGEL_EXIT );
+
+    return retVal;
+#endif  // __WINS
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::SetDaemonNameL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginWlan::SetDaemonNameL(
+        RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+        RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_SETDAEMONNAMEL_ENTRY );
+
+    // we have to check first that these values has not been
+    // set(or changed) by any 3rd party sw to ensure that
+    // we don't break their settings
+    HBufC* daemonName = GetBearerStringAttributeL( ECmConfigDaemonManagerName,
+                                                   aGenRecordArray,
+                                                   aBearerSpecRecordArray );
+    if ( daemonName )
+        {
+        if ( daemonName->Compare( KDaemonManagerName ) != 0 )
+            {
+            delete daemonName;
+
+            OstTraceFunctionExit0( CCMPLUGINWLAN_SETDAEMONNAMEL_EXIT );
+
+            return;
+            }
+        delete daemonName;
+        }
+
+    // use DHCP if we can
+    TBool ipfromSrv = GetBearerBoolAttributeL( ECmIPAddFromServer,
+                                               aGenRecordArray,
+                                               aBearerSpecRecordArray );
+    if ( ipfromSrv )
+        {
+        SetBearerStringAttributeL( ECmConfigDaemonManagerName,
+                                   KDaemonManagerName,
+                                   aGenRecordArray,
+                                   aBearerSpecRecordArray );
+
+        SetBearerStringAttributeL( ECmConfigDaemonName,
+                                   KConfigDaemonName,
+                                   aGenRecordArray,
+                                   aBearerSpecRecordArray );
+
+        }
+    else
+        {
+        if ( FeatureManager::FeatureSupported( KFeatureIdIPv6 ) )
+            {
+            SetBearerStringAttributeL( ECmConfigDaemonManagerName,
+                                       KDaemonManagerName,
+                                       aGenRecordArray,
+                                       aBearerSpecRecordArray );
+
+            SetBearerStringAttributeL( ECmConfigDaemonName,
+                                       KConfigDaemonName,
+                                       aGenRecordArray,
+                                       aBearerSpecRecordArray );
+            }
+        else
+            {
+            SetBearerStringAttributeL( ECmConfigDaemonManagerName,
+                                       KNullDesC(),
+                                       aGenRecordArray,
+                                       aBearerSpecRecordArray );
+
+            SetBearerStringAttributeL( ECmConfigDaemonName,
+                                       KNullDesC(),
+                                       aGenRecordArray,
+                                       aBearerSpecRecordArray );
+            }
+        }
+
+    OstTraceFunctionExit0( DUP1_CCMPLUGINWLAN_SETDAEMONNAMEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::ResetBearerRecords
+// ---------------------------------------------------------------------------
+//
+void CCmPluginWlan::ResetBearerRecords()
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_RESETBEARERRECORDS_ENTRY );
+
+    delete iWlanServiceRecord;
+    iWlanServiceRecord = NULL;
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_RESETBEARERRECORDS_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::CopyWlanServiceRecordL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginWlan::CopyWlanServiceRecordL(
+        CCDWlanServiceRecord* aSourceRecord,
+        CCDWlanServiceRecord* aDestRecord )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_COPYWLANSERVICERECORDL_ENTRY );
+
+    if ( !( aSourceRecord && aDestRecord ) )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    aDestRecord->iRecordName.SetL( aSourceRecord->iRecordName );
+    aDestRecord->iRecordTag.SetL( aSourceRecord->iRecordTag );
+    aDestRecord->iWlanConnMode.SetL( aSourceRecord->iWlanConnMode );
+
+    if ( !aSourceRecord->iWLanSSID.IsNull() )
+        {
+        aDestRecord->iWLanSSID.SetL( aSourceRecord->iWLanSSID );
+        }
+    if ( !aSourceRecord->iWLanUsedSSID.IsNull() )
+        {
+        aDestRecord->iWLanUsedSSID.SetL( aSourceRecord->iWLanUsedSSID );
+        }
+    if ( !aSourceRecord->iWLanWepKey1.IsNull() )
+        {
+        aDestRecord->iWLanWepKey1.SetL( aSourceRecord->iWLanWepKey1 );
+        }
+    if ( !aSourceRecord->iWLanWepKey2.IsNull() )
+        {
+        aDestRecord->iWLanWepKey2.SetL( aSourceRecord->iWLanWepKey2 );
+        }
+    if ( !aSourceRecord->iWLanWepKey3.IsNull() )
+        {
+        aDestRecord->iWLanWepKey3.SetL( aSourceRecord->iWLanWepKey3 );
+        }
+    if ( !aSourceRecord->iWLanWepKey4.IsNull() )
+        {
+        aDestRecord->iWLanWepKey4.SetL( aSourceRecord->iWLanWepKey4 );
+        }
+    if ( !aSourceRecord->iWlanWepIndex.IsNull() )
+        {
+        aDestRecord->iWlanWepIndex.SetL( aSourceRecord->iWlanWepIndex );
+        }
+    if ( !aSourceRecord->iWlanSecMode.IsNull() )
+        {
+        aDestRecord->iWlanSecMode.SetL( aSourceRecord->iWlanSecMode );
+        }
+    if ( !aSourceRecord->iWlanAuthMode.IsNull() )
+        {
+        aDestRecord->iWlanAuthMode.SetL( aSourceRecord->iWlanAuthMode );
+        }
+    if ( !aSourceRecord->iWlanEnableWpaPsk.IsNull() )
+        {
+        aDestRecord->iWlanEnableWpaPsk.SetL( aSourceRecord->iWlanEnableWpaPsk );
+        }
+    if ( !aSourceRecord->iWLanWpaPreSharedKey.IsNull() )
+        {
+        aDestRecord->iWLanWpaPreSharedKey.SetL( aSourceRecord->iWLanWpaPreSharedKey );
+        }
+    if ( !aSourceRecord->iWlanWpaKeyLength.IsNull() )
+        {
+        aDestRecord->iWlanWpaKeyLength.SetL( aSourceRecord->iWlanWpaKeyLength );
+        }
+    if ( !aSourceRecord->iWLanEaps.IsNull() )
+        {
+        aDestRecord->iWLanEaps.SetL( aSourceRecord->iWLanEaps );
+        }
+    if ( !aSourceRecord->iWlanScanSSID.IsNull() )
+        {
+        aDestRecord->iWlanScanSSID.SetL( aSourceRecord->iWlanScanSSID );
+        }
+    if ( !aSourceRecord->iWlanChannelID.IsNull() )
+        {
+        aDestRecord->iWlanChannelID.SetL( aSourceRecord->iWlanChannelID );
+        }
+    if ( !aSourceRecord->iWlanFormatKey1.IsNull() )
+        {
+        aDestRecord->iWlanFormatKey1.SetL( aSourceRecord->iWlanFormatKey1 );
+        }
+    if ( !aSourceRecord->iWlanFormatKey2.IsNull() )
+        {
+        aDestRecord->iWlanFormatKey2.SetL( aSourceRecord->iWlanFormatKey2 );
+        }
+    if ( !aSourceRecord->iWlanFormatKey3.IsNull() )
+        {
+        aDestRecord->iWlanFormatKey3.SetL( aSourceRecord->iWlanFormatKey3 );
+        }
+    if ( !aSourceRecord->iWlanFormatKey4.IsNull() )
+        {
+        aDestRecord->iWlanFormatKey4.SetL( aSourceRecord->iWlanFormatKey4 );
+        }
+    if ( !aSourceRecord->iWlanAllowSSIDRoaming.IsNull() )
+        {
+        aDestRecord->iWlanAllowSSIDRoaming.SetL( aSourceRecord->iWlanAllowSSIDRoaming );
+        }
+    if ( !aSourceRecord->iWLanEnabledEaps.IsNull() )
+        {
+        aDestRecord->iWLanEnabledEaps.SetL( aSourceRecord->iWLanEnabledEaps );
+        }
+    if ( !aSourceRecord->iWLanDisabledEaps.IsNull() )
+        {
+        aDestRecord->iWLanDisabledEaps.SetL( aSourceRecord->iWLanDisabledEaps );
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_COPYWLANSERVICERECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::GetDefaultWlanServiceRecordL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginWlan::GetDefaultWlanServiceRecordL(
+        RPointerArray<CommsDat::CCDRecordBase>& aRecordArray )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_GETDEFAULTWLANSERVICERECORDL_ENTRY );
+
+    CCDWlanServiceRecord* wlanServiceRecord = new( ELeave ) CCDWlanServiceRecord ( iWlanTableId );
+    CleanupStack::PushL( wlanServiceRecord );
+
+    wlanServiceRecord->SetRecordId( KCDNewRecordRequest );
+
+    wlanServiceRecord->iRecordTag.SetL( 1 );
+    wlanServiceRecord->iRecordName.SetL( iIapRecord->iRecordName );
+    wlanServiceRecord->iWlanConnMode.SetL( CMManager::EInfra );
+    wlanServiceRecord->iWlanSecMode.SetL( CMManager::EWlanSecModeOpen );
+    wlanServiceRecord->iWlanScanSSID.SetL( EFalse );
+
+    aRecordArray.AppendL( wlanServiceRecord );
+
+    CleanupStack::Pop( wlanServiceRecord );
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_GETDEFAULTWLANSERVICERECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::GetBearerInfoIntL
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmPluginWlan::GetBearerInfoIntL( TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_GETBEARERINFOINTL_ENTRY );
+
+    TUint32 retVal( 0 );
+    switch ( aAttribute )
+        {
+        case ECmBearerType:
+            {
+            retVal = iBearerType;
+            }
+            break;
+        case ECmCommsDBBearerType:
+            {
+            retVal = KCommDbBearerWLAN;
+            }
+            break;
+        case ECmDefaultUiPriority:
+        case ECmDefaultPriority:
+            {
+            retVal = KDefaultPriorityWLan;
+            }
+            break;
+        case ECmExtensionLevel:
+            {
+            // This is extension from LAN plugin.
+            retVal = KExtensionBaseLevel + 1;
+            }
+            break;
+        case ECmSeamlessnessLevel:
+            {
+            retVal = ESeamlessnessShowprogress;
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_GETBEARERINFOINTL_EXIT );
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::GetBearerInfoBoolL
+// ---------------------------------------------------------------------------
+//
+TBool CCmPluginWlan::GetBearerInfoBoolL( TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_GETBEARERINFOBOOLL_ENTRY );
+
+    TBool retVal( EFalse );
+
+    switch ( aAttribute )
+        {
+        case ECmCoverage:
+            {
+#ifndef __WINS__
+            retVal = CheckNetworkCoverageL();
+#else
+            retVal = ETrue;
+#endif
+            }
+            break;
+        case ECmDestination:
+            {
+            retVal = EFalse;
+            }
+            break;
+        case ECmBearerHasUi:
+            {
+            retVal = EFalse;
+            }
+            break;
+        case ECmIPv6Supported:
+            {
+            retVal = FeatureManager::FeatureSupported( KFeatureIdIPv6 );
+            }
+            break;
+        case ECmVirtual:
+            {
+            retVal = EFalse;
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_GETBEARERINFOBOOLL_EXIT );
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::GetBearerInfoStringL
+// ---------------------------------------------------------------------------
+//
+HBufC* CCmPluginWlan::GetBearerInfoStringL( TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_GETBEARERINFOSTRINGL_ENTRY );
+
+    HBufC* retVal( NULL );
+    switch ( aAttribute )
+        {
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+        break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_GETBEARERINFOSTRINGL_EXIT );
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::GetBearerInfoString8L
+// ---------------------------------------------------------------------------
+//
+HBufC8* CCmPluginWlan::GetBearerInfoString8L( TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_GETBEARERINFOSTRING8L_ENTRY );
+
+    HBufC8* retVal( NULL );
+    switch ( aAttribute )
+        {
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+        break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_GETBEARERINFOSTRING8L_EXIT );
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::CheckSecurityAttributeValidityL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginWlan::CheckSecurityAttributeValidityL(
+        const TUint32 aAttribute,
+        const TUint32 aValue )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_CHECKSECURITYATTRIBUTEVALIDITYL_ENTRY );
+
+    switch ( aAttribute )
+        {
+        case CMManager::EWlanConnectionMode:
+            {
+            switch ( aValue )
+                {
+                case CMManager::EAdhoc:
+                case CMManager::EInfra:
+                    break;
+                default:
+                    User::Leave( KErrArgument );
+                    break;
+                }
+            }
+            break;
+
+        case CMManager::EWlanSecurityMode:
+            {
+            switch ( aValue )
+                {
+                case CMManager::EWlanSecModeOpen:
+                case CMManager::EWlanSecModeWep:
+                case CMManager::EWlanSecMode802_1x:
+                case CMManager::EWlanSecModeWpa:
+                case CMManager::EWlanSecModeWpa2:
+                case CMManager::EWlanSecModeWAPI:
+                    break;
+                default:
+                    User::Leave( KErrArgument );
+                    break;
+                }
+            }
+            break;
+
+        case CMManager::EWlanAuthenticationMode:
+            {
+            switch ( aValue )
+                {
+                case CMManager::EWlanAuthModeOpen:
+                case CMManager::EWlanAuthModeShared:
+                    break;
+                default:
+                    User::Leave( KErrArgument );
+                    break;
+                }
+            }
+            break;
+
+        case CMManager::EWlanEnableWpaPsk:     // Boolean
+        case CMManager::EWlanWpaPreSharedKey:  // Valid values: 0, 1, 8-64
+            break;
+
+        case CMManager::EWlanWepKey1InHex:     // Length should be 10 or 26.
+        case CMManager::EWlanWepKey2InHex:
+        case CMManager::EWlanWepKey3InHex:
+        case CMManager::EWlanWepKey4InHex:
+        case CMManager::EWlanWepKey1InAscii:   // Length should be 5 or 13.
+        case CMManager::EWlanWepKey2InAscii:
+        case CMManager::EWlanWepKey3InAscii:
+        case CMManager::EWlanWepKey4InAscii:
+            break;
+
+        case CMManager::EWlanWepKeyIndex:
+            {
+            switch ( aValue )
+                {
+                case CMManager::EWepKeyIndex1:
+                case CMManager::EWepKeyIndex2:
+                case CMManager::EWepKeyIndex3:
+                case CMManager::EWepKeyIndex4:
+                    break;
+                default:
+                    User::Leave( KErrArgument );
+                    break;
+                }
+            }
+            break;
+
+        case CMManager::EWlanWapiPsk:
+            break;
+
+        case CMManager::EWlanWapiPskFormat:
+            {
+            switch ( aValue )
+                {
+                case CMManager::EWlanWapiPskFormatAscii:
+                case CMManager::EWlanWapiPskFormatHex:
+                    break;
+                default:
+                    User::Leave( KErrArgument );
+                    break;
+                }
+            }
+            break;
+
+        case CMManager::EWlan802_1xAllowUnencrypted:   // Boolean
+            break;
+
+        default:
+            User::Leave( KErrArgument );
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_CHECKSECURITYATTRIBUTEVALIDITYL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::CopyBearerRecordsL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginWlan::CopyBearerRecordsL( CCmPluginBaseEng* aCopyInstance )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_COPYBEARERRECORDSL_ENTRY );
+
+    CCmPluginWlan* plugin = static_cast<CCmPluginWlan*>( aCopyInstance );
+    plugin->iWlanServiceRecord = new( ELeave ) CCDWlanServiceRecord ( iWlanTableId );
+
+    CopyWlanServiceRecordL( iWlanServiceRecord, plugin->iWlanServiceRecord );
+    plugin->iWAPISupported = iWAPISupported;
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_COPYBEARERRECORDSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::PrepareToCopyDataL
+// ---------------------------------------------------------------------------
+//
+void CCmPluginWlan::PrepareToCopyDataL( CCmPluginBaseEng* /*aCopyInstance*/ )
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_PREPARETOCOPYDATAL_ENTRY );
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_PREPARETOCOPYDATAL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::GetBearerTableIdsToBeObserved
+// ---------------------------------------------------------------------------
+//
+void CCmPluginWlan::GetBearerTableIdsToBeObservedL(
+        RArray<TUint32>& aTableIdArray ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINWLAN_GETBEARERTABLEIDSTOBEOBSERVEDL_ENTRY );
+
+    aTableIdArray.AppendL( KCDTIdLANServiceRecord );
+    aTableIdArray.AppendL( KCDTIdLANBearerRecord );
+    aTableIdArray.AppendL( iWlanTableId );
+
+    OstTraceFunctionExit0( CCMPLUGINWLAN_GETBEARERTABLEIDSTOBEOBSERVEDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::ConvertAsciiToHexL
+// ---------------------------------------------------------------------------
+//
+HBufC8* CCmPluginWlan::ConvertAsciiToHexL( const TDesC8& aSource )
+    {
+    // Characters used in hex-format.
+    _LIT( hex, "0123456789ABCDEF" );
+
+    // Length of ascii-format source string.
+    TInt length = aSource.Length();
+    //TInt length = aSource.Size();
+
+    if ( length <= 0 )
+        {
+        HBufC8* result = KNullDesC8().AllocL();
+        return result;
+        }
+
+    HBufC8* result = HBufC8::NewLC( length * 2 );
+    TPtr8 ptr = result->Des();
+
+    // Iterate for each character in ascii-format source string.
+    for ( TInt i = 0; i < length; i++ )
+        {
+        // Next character in ascii-format source string to be converted.
+        TText8 ch = aSource[i];
+
+        // Convert and append the higher 4 bits of the character.
+        ptr.Append( hex()[ ( ch / 16 ) & 0x0f ] );
+
+        // Convert and append the lower 4 bits of the character.
+        ptr.Append( hex()[ ch & 0x0f ] );
+        }
+
+    CleanupStack::Pop( result );
+    return result; // Ownership is transfered.
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::ConvertHexToAsciiL
+// ---------------------------------------------------------------------------
+//
+HBufC8* CCmPluginWlan::ConvertHexToAsciiL( const TDesC8& aSource )
+    {
+    // Length of hex-format source string.
+    TInt length = aSource.Length();
+
+    if ( length <= 0 )
+        {
+        HBufC8* result = KNullDesC8().AllocL();
+        return result;
+        }
+
+    HBufC8* result = HBufC8::NewLC( ( length + 1 ) / 2 );
+    TPtr8 ptr = result->Des();
+
+    TInt i( 0 );
+    TUint8 ch( 0 );
+    if ( length % 2 )
+        {
+        ch = ConvertHexCharToNumberL( aSource[i] );
+        ptr.Append( ch );
+        i++;
+        }
+    for ( ; i < length; )
+        {
+        ch = ConvertHexCharToNumberL( aSource[i] ) << 4;
+        i++;
+        ch += ConvertHexCharToNumberL( aSource[i] );
+        i++;
+        ptr.Append( ch );
+        }
+
+    CleanupStack::Pop( result );
+    return result; // Ownership is transfered.
+    }
+
+// ---------------------------------------------------------------------------
+// CCmPluginWlan::ConvertHexCharToNumberL
+// ---------------------------------------------------------------------------
+//
+TUint8 CCmPluginWlan::ConvertHexCharToNumberL( const TUint8 aHexChar )
+    {
+    TUint8 result( 0 );
+    if ( '0' <= aHexChar && aHexChar <= '9' )
+        {
+        result = aHexChar - '0';
+        }
+    else if ( 'a' <= aHexChar && aHexChar <= 'f' )
+        {
+        result = aHexChar - 'a' + 10u;
+        }
+    else if ( 'A' <= aHexChar && aHexChar <= 'F' )
+        {
+        result = aHexChar - 'A' + 10u;
+        }
+    else
+        {
+        User::Leave( KErrArgument );
+        }
+    return result;
+    }
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginwlan/src/cmpluginwlanproxy.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*        Implementation of WLan Plugin proxy table
+*
+*/
+
+#include "cmpluginwlan.h"
+#include <e32std.h>
+#include <ecom/ImplementationProxy.h>
+
+// Exported proxy for instantiation method resolution
+// Define the interface UIDs
+const TImplementationProxy ImplementationTable[] =
+    {
+    IMPLEMENTATION_PROXY_ENTRY( KUidWlanBearerType, CCmPluginWlan::NewL )
+    };
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
+    {
+    aTableCount = sizeof( ImplementationTable ) / sizeof( TImplementationProxy );
+    return ImplementationTable;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginwlan/src/cmwlancoveragecheck.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,239 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*        Implementation of WLAN Coverage Check class
+*
+*/
+
+
+#include <wlanmgmtclient.h>
+
+#include "cmwlancoveragecheck.h"
+#include "cmpluginwlan.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmwlancoveragecheckTraces.h"
+#endif
+
+
+/**
+* Management frame information element IDs.
+* needed to determine coverage
+*/
+enum T802Dot11InformationElementID
+    {
+    E802Dot11SsidIE                 = 0,
+    E802Dot11SupportedRatesIE       = 1,
+    E802Dot11FhParameterSetIE       = 2,
+    E802Dot11DsParameterSetIE       = 3,
+    E802Dot11CfParameterSetIE       = 4,
+    E802Dot11TimIE                  = 5,
+    E802Dot11IbssParameterSetIE     = 6,
+    E802Dot11CountryIE              = 7,
+    E802Dot11HoppingPatternParamIE  = 8,
+    E802Dot11HoppingPatternTableIE  = 9,
+    E802Dot11RequestIE              = 10,
+
+    E802Dot11ChallengeTextIE        = 16,
+    // Reserved for challenge text extension 17 - 31
+    E802Dot11ErpInformationIE       = 42,
+    E802Dot11ExtendedRatesIE        = 50,
+    E802Dot11AironetIE              = 133,
+    E802Dot11ApIpAddressIE          = 149,
+    E802Dot11RsnIE                  = 221
+    };
+
+
+// ======================= MEMBER FUNCTIONS =================================
+
+// ----------------------------------------------------------------------------
+// CCmWlanCoverageCheck::CCmWlanCoverageCheck()
+// ----------------------------------------------------------------------------
+//
+CCmWlanCoverageCheck::CCmWlanCoverageCheck() : CActive( EPriorityStandard )
+    {
+    OstTraceFunctionEntry1( CCMWLANCOVERAGECHECK_CCMWLANCOVERAGECHECK_ENTRY, this );
+    CActiveScheduler::Add( this );
+    OstTraceFunctionExit1( CCMWLANCOVERAGECHECK_CCMWLANCOVERAGECHECK_EXIT, this );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmWlanCoverageCheck::~CCmWlanCoverageCheck()
+// ----------------------------------------------------------------------------
+//
+CCmWlanCoverageCheck::~CCmWlanCoverageCheck()
+    {
+    OstTraceFunctionEntry1( DUP1_CCMWLANCOVERAGECHECK_CCMWLANCOVERAGECHECK_ENTRY, this );
+    Cancel();
+    OstTraceFunctionExit1( DUP1_CCMWLANCOVERAGECHECK_CCMWLANCOVERAGECHECK_EXIT, this );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmWlanCoverageCheck::DoCancel
+// ----------------------------------------------------------------------------
+//
+void CCmWlanCoverageCheck::DoCancel()
+    {
+    OstTraceFunctionEntry1( CCMWLANCOVERAGECHECK_DOCANCEL_ENTRY, this );
+    iWait.AsyncStop();
+    OstTraceFunctionExit1( CCMWLANCOVERAGECHECK_DOCANCEL_EXIT, this );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmWlanCoverageCheck::RunL
+// ----------------------------------------------------------------------------
+//
+void CCmWlanCoverageCheck::RunL()
+    {
+    OstTraceFunctionEntry1( CCMWLANCOVERAGECHECK_RUNL_ENTRY, this );
+
+    switch ( iProgState )
+        {
+        case EScanning:
+            {
+            if ( iStatus.Int() == KErrNone )
+                {
+                // The list is ready.
+                iProgState = EDone;
+                iWait.AsyncStop();
+                }
+            else
+                {
+                // Something went wrong -> no coverage.
+                iWait.AsyncStop();
+                }
+            }
+            break;
+        case EDone:
+            {
+            iWait.AsyncStop();
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrCorrupt );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit1( CCMWLANCOVERAGECHECK_RUNL_EXIT, this );
+    }
+
+// ----------------------------------------------------------------------------
+// CCmWlanCoverageCheck::GetCoverageL
+// ----------------------------------------------------------------------------
+//
+TBool CCmWlanCoverageCheck::GetCoverageL()
+    {
+    OstTraceFunctionEntry0( CCMWLANCOVERAGECHECK_GETCOVERAGEL_ENTRY );
+
+    iProgState = EServiceStatus;
+    iCoverage = EFalse;
+
+    CWlanMgmtClient* wlanMgmt = CWlanMgmtClient::NewL();
+    CleanupStack::PushL( wlanMgmt );
+
+    CWlanScanInfo* scanInfo = CWlanScanInfo::NewL();
+    CleanupStack::PushL( scanInfo );
+
+    iProgState = EScanning;
+
+    wlanMgmt->GetScanResults( iStatus, *scanInfo );
+
+    SetActive();
+    iWait.Start();
+
+    // now we have the results and might start to work on them...
+    if ( iProgState == EDone )
+        { //finished without error, work on the result...
+
+        for ( scanInfo->First(); !scanInfo->IsDone(); scanInfo->Next() )
+            {
+            TBool isHidden( EFalse );
+
+            TUint8 ieLen( 0 );
+            const TUint8* ieData;
+
+            TInt ret = scanInfo->InformationElement( E802Dot11SsidIE, ieLen,
+                                                      &ieData );
+            if ( ret == KErrNone )
+                {
+                isHidden = IsHiddenSsid( ieLen, ieData );
+                if ( !isHidden )
+                    {
+                    // WLAN awailable...stop searching.
+                    iCoverage = ETrue;
+                    break;
+                    }
+                }
+            else
+                {
+                User::Leave( ret );
+                }
+            }
+
+        CleanupStack::PopAndDestroy( 2, wlanMgmt );
+        }
+    else
+        {
+        // Clean the cleanupstack in case status is KErrNone
+        CleanupStack::PopAndDestroy( scanInfo );
+        CleanupStack::PopAndDestroy( wlanMgmt );
+
+        User::LeaveIfError( iStatus.Int() );
+        }
+
+    OstTraceFunctionExit0( CCMWLANCOVERAGECHECK_GETCOVERAGEL_EXIT );
+    return iCoverage;
+    }
+
+// ---------------------------------------------------------
+// CCmWlanCoverageCheck::IsHiddenSsid
+// ---------------------------------------------------------
+//
+TBool CCmWlanCoverageCheck::IsHiddenSsid(
+        TUint aSsidLength,
+        const TUint8* aSsid ) const
+    {
+    OstTraceFunctionEntryExt( CCMWLANCOVERAGECHECK_ISHIDDENSSID_ENTRY, this );
+
+    const TUint8 CSPACE = 0x20;
+    TBool result( EFalse );
+    TBool result2( ETrue );
+
+    if ( !aSsidLength )
+        {
+        result = ETrue;
+        }
+
+    TInt count( 0 );
+    TUint8 temp( 0x00 );
+
+    for ( TUint i( 0 ); i < aSsidLength; ++i )
+        {
+        temp = aSsid[i];
+        count += temp; // in hidden networks characters are: 0x00
+        result2 &= temp == CSPACE ;
+        }
+
+    if ( !count || result2 )
+        {
+        result = ETrue;
+        }
+
+    OstTraceFunctionExitExt( CCMWLANCOVERAGECHECK_ISHIDDENSSID_EXIT, this, result );
+    return result;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginwlan/traces/OstTraceDefinitions.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+// #define OST_TRACE_COMPILER_IN_USE
+#include <opensystemtrace.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginwlan/traces/fixed_id.definitions	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,81 @@
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_FLOW=0x7
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLANDATA_CCMPLUGINWLANDATA_ENTRY=0x3a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLANDATA_CCMPLUGINWLANDATA_EXIT=0x3b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLANDATA_CONSTRUCTL_ENTRY=0x3e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLANDATA_CONSTRUCTL_EXIT=0x3f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLANDATA_NEWLC_ENTRY=0x38
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLANDATA_NEWLC_EXIT=0x39
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_ADDITIONALRESET_ENTRY=0x29
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_ADDITIONALRESET_EXIT=0x2a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_BEARERRECORDIDLC_ENTRY=0x2b
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_BEARERRECORDIDLC_EXIT=0x2c
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_CANHANDLEIAPIDL_ENTRY=0x19
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_CANHANDLEIAPIDL_EXIT=0x1a
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_CCMPLUGINWLAN_ENTRY=0x3
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_CCMPLUGINWLAN_EXIT=0x4
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_CHECKNETWORKCOVERAGEL_ENTRY=0x31
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_CHECKNETWORKCOVERAGEL_EXIT=0x32
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_CONSTRUCTL_ENTRY=0x9
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_CONSTRUCTL_EXIT=0xa
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_COPYADDITIONALDATAL_ENTRY=0x2d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_COPYADDITIONALDATAL_EXIT=0x2e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_CREATEINSTANCEL_ENTRY=0x5
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_CREATEINSTANCEL_EXIT=0x6
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_CREATENEWSERVICERECORDL_ENTRY=0x23
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_CREATENEWSERVICERECORDL_EXIT=0x24
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_CREATEWLANSERVICERECORDL_ENTRY=0x25
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_CREATEWLANSERVICERECORDL_EXIT=0x26
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_DELETEADDITIONALRECORDSL_ENTRY=0x1d
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_DELETEADDITIONALRECORDSL_EXIT=0x1e
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_GETADDITIONALUIDS_ENTRY=0x36
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_GETADDITIONALUIDS_EXIT=0x37
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_GETBOOLATTRIBUTEL_ENTRY=0xd
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_GETBOOLATTRIBUTEL_EXIT=0xe
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_GETINTATTRIBUTEL_ENTRY=0xb
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_GETINTATTRIBUTEL_EXIT=0xc
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_GETSTRINGATTRIBUTEL_ENTRY=0xf
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_GETSTRINGATTRIBUTEL_EXIT=0x10
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_LOADADDITIONALRECORDSL_ENTRY=0x21
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_LOADADDITIONALRECORDSL_EXIT=0x22
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_LOADSERVICESETTINGL_ENTRY=0x1f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_LOADSERVICESETTINGL_EXIT=0x20
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_NEWL_ENTRY=0x1
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_NEWL_EXIT=0x2
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_PREPARETOUPDATERECORDSL_ENTRY=0x27
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_PREPARETOUPDATERECORDSL_EXIT=0x28
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_SETASCOPYOF_ENTRY=0x2f
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_SETASCOPYOF_EXIT=0x30
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_SETBOOLATTRIBUTEL_ENTRY=0x13
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_SETBOOLATTRIBUTEL_EXIT=0x14
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_SETDAEMONNAMEL_ENTRY=0x33
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_SETDAEMONNAMEL_EXIT=0x34
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_SETINTATTRIBUTEL_ENTRY=0x11
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_SETINTATTRIBUTEL_EXIT=0x12
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_SETSTRINGATTRIBUTEL_ENTRY=0x15
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_SETSTRINGATTRIBUTEL_EXIT=0x16
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_UPDATEADDITIONALRECORDSL_ENTRY=0x17
+[TRACE]TRACE_FLOW[0x7]_CCMPLUGINWLAN_UPDATEADDITIONALRECORDSL_EXIT=0x18
+[TRACE]TRACE_FLOW[0x7]_CCMWLANCOVERAGECHECK_ADDTOARRAYIFNEEDEDL=0x4c
+[TRACE]TRACE_FLOW[0x7]_CCMWLANCOVERAGECHECK_ADDTOARRAYIFNEEDEDL_EXIT=0x4d
+[TRACE]TRACE_FLOW[0x7]_CCMWLANCOVERAGECHECK_CCMWLANCOVERAGECHECK_ENTRY=0x40
+[TRACE]TRACE_FLOW[0x7]_CCMWLANCOVERAGECHECK_CCMWLANCOVERAGECHECK_EXIT=0x41
+[TRACE]TRACE_FLOW[0x7]_CCMWLANCOVERAGECHECK_DOCANCEL_ENTRY=0x44
+[TRACE]TRACE_FLOW[0x7]_CCMWLANCOVERAGECHECK_DOCANCEL_EXIT=0x45
+[TRACE]TRACE_FLOW[0x7]_CCMWLANCOVERAGECHECK_GETCOVERAGEL_ENTRY=0x48
+[TRACE]TRACE_FLOW[0x7]_CCMWLANCOVERAGECHECK_GETCOVERAGEL_EXIT=0x49
+[TRACE]TRACE_FLOW[0x7]_CCMWLANCOVERAGECHECK_ISHIDDENSSID_ENTRY=0x4a
+[TRACE]TRACE_FLOW[0x7]_CCMWLANCOVERAGECHECK_ISHIDDENSSID_EXIT=0x4b
+[TRACE]TRACE_FLOW[0x7]_CCMWLANCOVERAGECHECK_RUNL_ENTRY=0x46
+[TRACE]TRACE_FLOW[0x7]_CCMWLANCOVERAGECHECK_RUNL_EXIT=0x47
+[TRACE]TRACE_FLOW[0x7]_CCMWLANCOVERAGECHECK_SCANFORPROMPTEDSSIDL_ENTRY=0x4e
+[TRACE]TRACE_FLOW[0x7]_CCMWLANCOVERAGECHECK_SCANFORPROMPTEDSSIDL_EXIT=0x4f
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINWLANDATA_CCMPLUGINWLANDATA_ENTRY=0x3c
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINWLANDATA_CCMPLUGINWLANDATA_EXIT=0x3d
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINWLAN_CANHANDLEIAPIDL_ENTRY=0x1b
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINWLAN_CANHANDLEIAPIDL_EXIT=0x1c
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINWLAN_CCMPLUGINWLAN_ENTRY=0x7
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINWLAN_CCMPLUGINWLAN_EXIT=0x8
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMPLUGINWLAN_SETDAEMONNAMEL_EXIT=0x35
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMWLANCOVERAGECHECK_CCMWLANCOVERAGECHECK_ENTRY=0x42
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMWLANCOVERAGECHECK_CCMWLANCOVERAGECHECK_EXIT=0x43
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmplugins/group/bld.inf	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2009-2010 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:  
+*        Build information for the Plugins
+*
+*
+*/
+
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+
+PRJ_MMPFILES
+
+#include "../cmpluginpacketdata/group/bld.inf"
+#include "../cmpluginlan/group/bld.inf"
+#include "../cmpluginwlan/group/bld.inf"
+//#include "../cmpluginembdestination/group/bld.inf"
+//#include "../cmpluginvpn/group/bld.inf"
+
+// End of File
Binary file cmmanager/cmmgr/cmmserver/conf/cmmanager.confml has changed
Binary file cmmanager/cmmgr/cmmserver/conf/cmmanager_10207376.crml has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/group/bld.inf	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2009-2010 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:
+* This file provides the information required for building the module.
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+
+DEFAULT
+
+PRJ_EXPORTS
+// export iby files
+../rom/cmmserver.iby      CORE_MW_LAYER_IBY_EXPORT_PATH(cmmserver.iby)
+
+../conf/cmmanager.confml            MW_LAYER_CONFML(cmmanager.confml)
+../conf/cmmanager_10207376.crml     MW_LAYER_CRML(cmmanager_10207376.crml)
+
+
+PRJ_MMPFILES
+cmmserver.mmp
+
+PRJ_TESTMMPFILES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/group/cmmserver.mmp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,70 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Project definition file for Connection Method Manager server.
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+TARGET          cmmserver.exe
+TARGETTYPE      exe
+UID             0x1000008d 0x20016A7A
+
+CAPABILITY      NetworkControl NetworkServices ProtServ WriteDeviceData
+VENDORID        VID_DEFAULT
+
+SOURCEPATH      ../src
+SOURCE          cmmsrvstatic.cpp
+SOURCE          cmmstarter.cpp
+SOURCE          cmmsession.cpp
+SOURCE          cmmserver.cpp
+SOURCE          cmmanagerimpl.cpp
+SOURCE          cmmtransactionhandler.cpp
+SOURCE          cmmdbchangelistener.cpp
+SOURCE          cmmlistenermanager.cpp
+SOURCE          cmmdestinationinstance.cpp
+SOURCE          cmmconnmethodinstance.cpp
+SOURCE          cmmcache.cpp
+SOURCE          cmmconnmethodstruct.cpp
+SOURCE          cmmdestinationstruct.cpp
+SOURCE          cmminstancemapping.cpp
+SOURCE          cmmbearerpriority.cpp
+SOURCE          cmmbearerprioritycache.cpp
+SOURCE          cmmconnmethoditem.cpp
+SOURCE          cmmanagertextresolver.cpp
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../cmmcommon/inc
+USERINCLUDE     ../traces
+
+// ADO specific internal headers
+SYSTEMINCLUDE   ../../../../inc
+
+MW_LAYER_SYSTEMINCLUDE
+
+LIBRARY         euser.lib
+LIBRARY         efsrv.lib
+LIBRARY         cmmanagerdatabase.lib
+LIBRARY         cmmpluginbase.lib
+LIBRARY         commsdat.lib
+LIBRARY         bafl.lib
+LIBRARY         ecom.lib
+LIBRARY         featmgr.lib
+LIBRARY         centralrepository.lib
+LIBRARY         esock.lib
+LIBRARY	        hbcore.lib
+
+EPOCSTACKSIZE   0x4000
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmmanagerimpl.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,131 @@
+/*
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Implementation of connection method manager.
+*
+*/
+
+
+#ifndef CMMANAGERIMPL_H
+#define CMMANAGERIMPL_H
+
+#include <metadatabase.h>
+#include <datamobilitycommsdattypes.h>
+#include <cmmanagerdef.h>
+
+#include "cmmserverdefs.h"
+
+class CCmmTransactionHandler;
+class CCmPluginBaseEng;
+class CCmmCache;
+
+
+NONSHARABLE_CLASS( CCmManagerImpl ) : public CBase
+    {
+public:
+    /**
+     * Two phased construction.
+     */
+    static CCmManagerImpl* NewL();
+
+    /**
+     * Destructor.
+     */
+    virtual ~CCmManagerImpl();
+
+private:
+    /**
+     * Constructor.
+     */
+    CCmManagerImpl();
+
+    /**
+     * 2nd phase constructor.
+     */
+    void ConstructL();
+
+public:
+    /**
+     * Check the existence of tables we need. Creates if it is not exist, get
+     * the table id otherwise.
+     */
+    void CheckTablesL();
+
+    /**
+     * Query all of the supported bearer types.
+     *
+     * @param aArray List of all supported bearer types.
+     */
+    void SupportedBearersL( RArray<TUint32>& aArray ) const;
+
+    /**
+     * Return the requested table ID.
+     */
+    CommsDat::TMDBElementId TableId( TCmmDbRecords aRecord );
+
+    /**
+     * Get a handle to the database cache manager.
+     */
+    CCmmCache& Cache();
+
+    /**
+     * Get a handle to the database transaction handler.
+     */
+    CCmmTransactionHandler* GetTransactionHandler();
+
+    /**
+     * Get a handle to database session.
+     */
+    CommsDat::CMDBSession& Session() const;
+
+    /**
+     * Return true is WLAN is supported on phone.
+     */
+    TBool WlanSupported() const;
+
+private:
+    /**
+     * Build an array of all bearer specific plugins.
+     */
+    void BuildPluginArrayL();
+
+private:
+    // Database cache manager.
+    CCmmCache* iCache; //Owned.
+
+    // Array for bearer plugins.
+    CArrayPtrFlat<const CCmPluginBaseEng>* iPlugins; // Owned.
+
+    // Database transaction handler.
+    CCmmTransactionHandler* iTrans; //Owned.
+
+    // Destination network table ID.
+    CommsDat::TMDBElementId iSnapTableId;
+    // Global bearer type priorization table ID.
+    CommsDat::TMDBElementId iBearerPriorityTableId;
+    // Destination metadata table ID.
+    CommsDat::TMDBElementId iDestMetadataTableId;
+    // Default connection table ID.
+    CommsDat::TMDBElementId iDefConnTableId;
+
+    // Flag for feature manager initialization status.
+    TBool iIsFeatureManagerInitialised;
+
+    // True if phone supports WLAN.
+    TBool iWLanSupport;
+    };
+
+#endif // CMMANAGERIMPL_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmmanagertextresolver.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2010 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:
+* Provides functionality for text resolving
+*
+*/
+
+#ifndef CMMANAGERTEXTRESOLVER_H
+#define CMMANAGERTEXTRESOLVER_H
+
+/**
+ *  Utility class for resolving localised text.
+ */
+class CCmManagerTextResolver
+    {
+public:    
+    /**
+     * Resolves localised text from cmmanager translation file.
+     * @param aTextId Text Id from TS file
+     * @return Resolved text
+     */
+    static HBufC* ResolveTextL( const TDesC& aTextId );        
+    };
+
+#endif // CMMANAGERTEXTRESOLVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmmbearerpriority.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,85 @@
+/*
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Implementation of bearer priority structure.
+*
+*/
+
+
+#ifndef CMMBEARERPRIORITY_H_
+#define CMMBEARERPRIORITY_H_
+
+#include <e32base.h>
+
+
+NONSHARABLE_CLASS( CCmmBearerPriority ) : public CBase
+    {
+public:
+    /**
+     * Two phased constuction.
+     */
+    static CCmmBearerPriority* NewL(
+            const TDesC& aServiceType,
+            const TUint& aPriority,
+            const TUint& aUiPriority );
+
+    /**
+     * Two phased constuction.
+     */
+    static CCmmBearerPriority* NewLC(
+            const TDesC& aServiceType,
+            const TUint& aPriority,
+            const TUint& aUiPriority );
+
+    /**
+     * Destructor.
+     */
+    ~CCmmBearerPriority();
+
+private:
+    /**
+     * Constructor.
+     */
+    CCmmBearerPriority( const TUint& aPriority, const TUint& aUiPriority );
+
+    /**
+     * 2nd phase constructor.
+     */
+    void ConstructL( const TDesC& aServiceType );
+
+public:
+    /**
+     * Get the service type.
+     */
+    HBufC* ServiceType() const;
+
+    /**
+     * Get the priority.
+     */
+    TUint Priority() const;
+
+    /**
+     * Get the UI priority.
+     */
+    TUint UiPriority() const;
+
+private:
+    HBufC* iServiceType; // Owned.
+    TUint iPriority;
+    TUint iUiPriority;
+    };
+
+#endif // CMMBEARERPRIORITY_H_
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmmbearerprioritycache.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,99 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Implementation of bearer priority array cache.
+*
+*/
+
+
+#ifndef CMMBEARERPRIORITYCACHE_H_
+#define CMMBEARERPRIORITYCACHE_H_
+
+#include <e32base.h>
+#include <metadatabase.h>
+
+class CCmmBearerPriority;
+class CCmmTransactionHandler;
+
+
+NONSHARABLE_CLASS( CCmmBearerPriorityCache ) : public CBase
+    {
+public:
+    /**
+     * Two phased constuction.
+     */
+    static CCmmBearerPriorityCache* NewL(
+            CCmmTransactionHandler* aTrans,
+            CommsDat::TMDBElementId aBearerPriorityTableId );
+
+    /**
+     * Two phased constuction.
+     */
+    static CCmmBearerPriorityCache* NewLC(
+            CCmmTransactionHandler* aTrans,
+            CommsDat::TMDBElementId aBearerPriorityTableId );
+
+    /**
+     * Destructor.
+     */
+    ~CCmmBearerPriorityCache();
+
+private:
+    /**
+     * Constructor.
+     */
+    CCmmBearerPriorityCache(
+            CCmmTransactionHandler* aTrans,
+            CommsDat::TMDBElementId aBearerPriorityTableId );
+
+    /**
+     * 2nd phase constructor.
+     * Reads the bearer priorities from CommsDat and stores them to own array.
+     */
+    void ConstructL();
+
+public:
+    /**
+     * Updates the bearer priority array with the contents of aArray.
+     */
+    void UpdateL( const RPointerArray<CCmmBearerPriority>& aArray );
+
+    /**
+     * Copies the cache's contents to aArray.
+     */
+    void CopyL( RPointerArray<CCmmBearerPriority>& aArray ) const;
+
+    /**
+     * Get the priority value for a service type from the bearer priority
+     * cache.
+     */
+    TUint GetPriority( const TDesC& aServiceType ) const;
+
+private:
+    void ReadL();
+
+private:
+    // Database transaction handler.
+    CCmmTransactionHandler* iTrans; // Not owned.
+
+    // Cached contents of the bearer priority array.
+    RPointerArray<CCmmBearerPriority> iArray; // Owns contents.
+
+    // Global bearer type priorization table ID.
+    CommsDat::TMDBElementId iBearerPriorityTableId;
+    };
+
+#endif // CMMBEARERPRIORITYCACHE_H_
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmmcache.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,615 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Database cache manager.
+*
+*/
+
+
+#ifndef CMMCACHE_H_
+#define CMMCACHE_H_
+
+#include <e32base.h>
+#include <metadatabase.h>
+#include <commsdattypesv1_1.h>
+#include <cmgenconnsettings.h>
+
+#include "cmmserverdefs.h"
+#include "cmmbearerpriority.h"
+#include "cmmconnmethodstruct.h"
+#include "cmmconnmethoditem.h"
+
+// Forward declarations.
+class CCmmDestinationStruct;
+class CCmPluginBaseEng;
+class CCmmListenerManager;
+class CCmmInstanceMapping;
+
+class CCmmDestinationInstance;
+class CCmmConnMethodInstance;
+
+class CCmmTransactionHandler;
+class CCmManagerImpl;
+class CCmmBearerPriorityCache;
+
+
+/**
+ * A simple class to group a temporary ID and a database assigned valid ID
+ * together as a single structure.
+ * 
+ * Used e.g. when updating a newly received real ID to datastructures
+ * containing a certain temporary ID.
+ */
+NONSHARABLE_CLASS( TCmmIdStruct )
+    {
+public:
+    inline TCmmIdStruct() : iRealId( 0 ), iTemporaryId( 0 )
+        {
+        }
+    inline TCmmIdStruct( TUint32 aRealId, TUint32 aTemporaryId )
+            :
+            iRealId( aRealId ),
+            iTemporaryId( aTemporaryId )
+        {
+        }
+public:
+    TUint32 iRealId;
+    TUint32 iTemporaryId;
+    };
+
+
+/**
+ * The CmmCache-class oversees all database operations.
+ * 
+ * It manages the cached database data and handles all interactions between
+ * that data and the client sessions.
+ * 
+ * It provides access to the CCmmInstanceMapping-class, that keeps track of the
+ * overall structure of destinations and connection methods in the database.
+ * 
+ * It also manages the database listeners that keep track of database changes
+ * caused by outside sources.
+ */
+NONSHARABLE_CLASS( CCmmCache ) : public CBase
+    {
+public:
+    /**
+     * NewL.
+     */
+    static CCmmCache* NewL(
+            CCmManagerImpl* aCmManagerImpl,
+            CArrayPtrFlat<const CCmPluginBaseEng>* aPlugins );
+
+    /**
+     * NewLC.
+     */
+    static CCmmCache* NewLC(
+            CCmManagerImpl* aCmManagerImpl,
+            CArrayPtrFlat<const CCmPluginBaseEng>* aPlugins );
+
+    /**
+     * Destructor.
+     */
+    ~CCmmCache();
+
+private:
+    /**
+     * Constructor.
+     *
+     * @param aPlugins Reference to supported plugin array.
+     */
+    CCmmCache(
+            CCmManagerImpl* aCmManagerImpl,
+            CArrayPtrFlat<const CCmPluginBaseEng>* aPlugins );
+
+    /**
+     * Second phase constructor.
+     */
+    void ConstructL();
+
+public:
+    void OpenDestinationL(
+            CCmmDestinationInstance& aDestinationInstance,
+            const TUint32& aId );
+
+    /**
+     * Refresh the data contained in aDestinationInstance. This means reloading
+     * the data from database if necessary. After this call the contents of
+     * aDestinationInstance will reflect the current state in the database. 
+     */
+    void RefreshDestinationL(
+            CCmmDestinationInstance& aDestinationInstance );
+
+    void CreateDestinationL(
+            CCmmDestinationInstance& aDestinationInstance,
+            const TDesC& aName,
+            const TUint32& aId );
+
+    void OpenConnMethodL(
+            CCmmConnMethodInstance& aConnMethodInstance,
+            CCmmDestinationInstance* aDestinationInstance,
+            const TUint32& aId );
+
+    /**
+     * Refresh the data contained in aConnMethodInstance. This means reloading
+     * the data from database if necessary. After this call the contents of
+     * aConnMethodInstance will reflect the current state in the database. 
+     */
+    void RefreshConnMethodL(
+            CCmmConnMethodInstance& aConnMethodInstance );
+
+    void CreateConnMethodL(
+            CCmmConnMethodInstance& aConnMethodInstance,
+            CCmmDestinationInstance* aDestinationInstance,
+            const TUint32& aBearerType,
+            const TUint32& aConnMethodId );
+
+    /**
+     * Creates a copy of the given client instance (copy of the connection
+     * method to the cache). The copy is created from the commsdat data
+     * (changes not updated will not be shown in the copy).
+     * @param aNewConnMethodInstance The copy instance to be created.
+     * @param aConnMethodInstance The source instance to be copied.
+     */
+    void CreateCopyOfConnMethodL(
+            CCmmConnMethodInstance& aNewConnMethodInstance,
+            CCmmConnMethodInstance& aConnMethodInstance );
+
+    /**
+     * Re-loads a destination record if needed and copies the latest version to
+     * the session instance given as parameter.
+     */
+    void LoadDestinationRecordL(
+            CCmmDestinationInstance& aDestinationInstance,
+            TCmmDbRecords aDestRecordType );
+
+    /**
+     * Saves the modifications in aDestinationInstance into the database. Also
+     * all connection methods inside this destination are updated (including
+     * any embedded destination).
+     */
+    void UpdateDestinationL( CCmmDestinationInstance& aDestinationInstance );
+
+    /**
+     * Saves the modifications in aConnMethodInstance into database. The second
+     * attribute aTemporaryHandle must be true if the connection method
+     * instance is only a temporary one created for the duration of this update
+     * process only.
+     */
+    void UpdateConnMethodL(
+            CCmmConnMethodInstance& aConnMethodInstance,
+            TBool aTemporaryHandle );
+
+    /**
+     * Deletes the destination refered by aDestinationInstance from the
+     * database. In case other sessions have open handles to the same
+     * destination, the status is updated to deleted state, but it is not yet
+     * removed from database. (ID must be kept reserved in commsdat until all
+     * handles are closed).
+     */
+    void DeleteDestinationL(
+            CCmmDestinationInstance& aDestinationInstance,
+            TBool aForced = EFalse );
+
+    /**
+     * Deletes a connection method as part of destination update operation. It
+     * is already checked that the connection method given as parameter can be
+     * deleted and a transaction is already open.
+     */
+    void DeleteConnMethodAsPartOfDestinationUpdateL( const TUint32& aConnMethodId );
+
+    /**
+     * Deletes a connection method as part of destination delete operation. It
+     * is already checked that the connection method given as parameter can be
+     * deleted and a transaction is already open.
+     */
+    void DeleteConnMethodAsPartOfDestinationDeleteL( const TUint32& aConnMethodId );
+
+    /**
+     * Basic connection method delete. Removes a connection method from any
+     * destination it might belong to, and then deletes it.
+     */
+    void DeleteConnMethodL( CCmmConnMethodInstance& aConnMethodInstance );
+
+    TBool DestinationExistsWithId( const TUint32& aId );
+    TBool DestinationExistsWithNameL( const TDesC& aName, const TUint32& aDestinationId );
+    TBool DestinationOpenWithId( const TUint32& aId );
+    TBool NotSavedDestinationOpenWithNameL( const TDesC& aName, const TUint32& aDestinationId );
+
+    TBool ConnMethodExistsWithId( const TUint32& aConnMethodId );
+    TBool ConnMethodOpenWithId( const TUint32& aConnMethodId );
+
+    TBool DestinationExistsWithMetadataLocalizedL(
+            CCmmDestinationInstance& aDestinationInstance,
+            const TUint32& aValue );
+    TBool DestinationExistsWithMetadataPurposeL(
+            CCmmDestinationInstance& aDestinationInstance,
+            const TUint32& aValue );
+
+    void DbChangeDetected( const TUint32& aTableId );
+    void DbChangeError( const TUint32& aTableId );
+
+    void CloseDestination( CCmmDestinationInstance& aDestinationInstance );
+    void CloseConnMethod( CCmmConnMethodInstance& aConnMethodInstance );
+
+    /**
+     * Returns a reference to the CommsDat session.
+     */
+    CommsDat::CMDBSession& Session() const;
+
+    /**
+     * Finds out the bearer type and priority of the service type from given
+     * IAP record.
+     */
+    void BearerInfoFromIapRecordL(
+            CommsDat::CCDIAPRecord* aIapRecord,
+            TUint32& aBearerType,
+            TUint& aBearerPriority ) const;
+
+    /**
+     * Finds out the priority of the service type in given IAP record.
+     */
+    void BearerPriorityFromIapRecordL(
+            CommsDat::CCDIAPRecord* aIapRecord,
+            TUint& aBearerPriority ) const;
+
+    /**
+     * Finds out the bearer type of a connection method from given IAP record.
+     */
+    void BearerTypeFromIapRecordL(
+            CommsDat::CCDIAPRecord* aIapRecord,
+            TUint32& aBearerType ) const;
+
+    /**
+     * Loads and initializes a connection method instance.
+     * @param aConnMethodInstance Reference to connection method instance
+     * beeing initialized.
+     * @param aConnMethodId ID of the connection method beeing opened.
+     */
+    void OpenConnectionMethodInstanceL(
+            CCmmConnMethodInstance& aConnMethodInstance,
+            const TUint32& aConnMethodId );
+
+    /**
+     * Returns Connection Method specific integer value. CM is loaded(if not loaded already)
+     * to get the value.
+     * @param aCmId Identifier of the Connection Method.
+     * @param aAttribute The identifier of the requested value.
+     * @return Returns the requested integer value if found. Otherwise leaves with error code
+     * KErrNotFound.
+     */
+    TUint32 GetConnectionMethodInfoIntL(
+            const TUint32& aCmId,
+            const TUint32& aAttribute );
+
+    /**
+     * Returns Connection Method specific boolean value. CM is loaded(if not loaded already)
+     * to get the value.
+     * @param aCmId Identifier of the Connection Method.
+     * @param aAttribute The identifier of the requested value.
+     * @return Returns the requested boolean value if found. Otherwise leaves with error code
+     * KErrNotFound.
+     */
+    TBool GetConnectionMethodInfoBoolL(
+            const TUint32& aCmId,
+            const TUint32& aAttribute );
+
+    /**
+     * Returns Connection Method specific 16 bit string value.
+     * CM is loaded(if not loaded already) to get the value.
+     * @param aCmId Identifier of the Connection Method.
+     * @param aAttribute The identifier of the requested value.
+     * @return Returns the requested string value if found. Otherwise leaves with error code
+     * KErrNotFound.
+     */
+    HBufC* GetConnectionMethodInfoStringL(
+            const TUint32& aCmId,
+            const TUint32& aAttribute );
+
+    /**
+     * Returns Connection Method specific 8 bit string value.
+     * CM is loaded(if not loaded already) to get the value.
+     * @param aCmId Identifier of the Connection Method.
+     * @param aAttribute The identifier of the requested value.
+     * @return Returns the requested string value if found. Otherwise leaves with error code
+     * KErrNotFound.
+     */
+    HBufC8* GetConnectionMethodInfoString8L(
+            const TUint32& aCmId,
+            const TUint32& aAttribute );
+
+    /**
+     * Returns bearer specific integer value. IAP does not need to be loaded for this.
+     * @param aBearerType The type of the plugin to be asked.
+     * @param aAttribute The identifier of the requested value.
+     * @return Returns the requested integer value if found. Otherwise leaves with error code
+     * KErrNotFound.
+     */
+    TUint32 GetBearerInfoIntL(
+            const TUint32& aBearerType,
+            const TUint32& aAttribute );
+
+    /**
+     * Returns bearer specific boolean value. IAP does not need to be loaded for this.
+     * @param aBearerType The type of the plugin to be asked.
+     * @param aAttribute The identifier of the requested value.
+     * @return Returns the requested boolean value if found. Otherwise leaves with error code
+     * KErrNotFound.
+     */
+    TBool GetBearerInfoBoolL(
+            const TUint32& aBearerType,
+            const TUint32& aAttribute );
+
+    /**
+     * Returns bearer specific 16 bit string value. IAP does not need to be loaded for this.
+     * @param aBearerType The type of the plugin to be asked.
+     * @param aAttribute The identifier of the requested value.
+     * @return Returns the requested string value if found. Otherwise leaves with error code
+     * KErrNotFound.
+     */
+    HBufC* GetBearerInfoStringL(
+            const TUint32& aBearerType,
+            const TUint32& aAttribute );
+
+    /**
+     * Returns bearer specific 8 bit string value. IAP does not need to be loaded for this.
+     * @param aBearerType The type of the plugin to be asked.
+     * @param aAttribute The identifier of the requested value.
+     * @return Returns the requested string value if found. Otherwise leaves with error code
+     * KErrNotFound.
+     */
+    HBufC8* GetBearerInfoString8L(
+            const TUint32& aBearerType,
+            const TUint32& aAttribute );
+
+    /**
+     * Returns all conenction method IDs. Unsupported connection methods are
+     * included if aCheckBearerType is set to EFalse.
+     */
+    void GetAllConnMethodsL(
+            RArray<TUint32>& aConnMethodArray,
+            TBool aCheckBearerType ) const;
+
+    /**
+     * Returns the number of destinations the provided connection method
+     * belongs to.
+     */
+    TInt DestinationsContainingConnMethod( const TUint32& aConnMethodId ) const;
+
+    /**
+     * Return the EasyWLAN IAP ID, zero if not found or WLAN not supported.
+     */
+    TUint32 EasyWlanIdL() const;
+
+    /**
+     * Check if WLAN is supported on phone.
+     */
+    TBool WlanSupported() const;
+
+    /**
+     * Find out the internet destination ID. Set to 0 if not found.
+     */
+    void InternetDestinationIdL( TUint& aInternetDestinationId ) const;
+
+    /**
+     * Return the number of destinations in database.
+     */
+    TInt GetDestinationCount() const;
+
+    /**
+     * Returns all the valid Destinations
+     */
+    void GetDestinationsL( RArray<TUint32>& aDestinationArray ) const;
+
+    /**
+     * Returns all the valid connection methods under given destination.
+     */
+    void GetConnMethodsFromDestinationL(
+            const TUint32& aDestinationId,
+            RArray<TCmmConnMethodItem>& aConnMethodArray ) const;
+
+    /**
+     * Copies the bearer priority array's contents to aArray.
+     */
+    void CopyBearerPriorityArrayL( RPointerArray<CCmmBearerPriority>& aArray ) const;
+
+    /**
+     * Updates the bearer priority array with the contents of aArray.
+     */
+    void UpdateBearerPriorityArrayL( const RPointerArray<CCmmBearerPriority>& aArray );
+
+    TBool ConnMethodInOtherDestination(
+            const TUint32& aConnMethodId,
+            const TUint32& aDestinationId );
+    TUint32 NextFreeTemporaryId();
+
+    /**
+     * Read general connection settings from database.
+     */
+    void ReadGenConnSettingsL( TCmGenConnSettings& aGenConnSettings ) const;
+
+    /**
+     * Write general connection settings to database.
+     */
+    void WriteGenConnSettingsL( const TCmGenConnSettings& aGenConnSettings );
+
+    /**
+     * Enumerates connections and checks if the given connection method is
+     * connected.
+     * @param aCmId Id of the connection method to be checked.
+     * @return Returns ETrue if the CM is connected and EFalse if it's not
+     * connected.
+     */
+    TBool CheckIfCmConnected( const TUint32& aCmId ) const;
+
+    /**
+     * Enumerates connections and checks if any of the connection methods in
+     * the given destination is connected.
+     * //TODO, update comments with second parameter.
+     */
+    TBool DestinationConnectedL(
+            const TUint32 aDestinationId,
+            CCmmDestinationInstance* aDestinationInstance = NULL ) const;
+
+    /**
+     * Check from database if the given destination is an embedded destination
+     * in any other destination.
+     */
+    TBool DestinationIsEmbedded( const TUint32& aDestinationId ) const;
+
+    /**
+     * Check from database if the given destination has an embedded destination.
+     */
+    TBool DestinationHasEmbedded( const TUint32& aDestinationId ) const;
+
+    /**
+     * Check from database if the given destination is pointed to by any
+     * virtual IAP.
+     */
+    TBool DestinationPointedToByVirtualIap( const TUint32& aDestinationId ) const;
+
+    /**
+     * Check from database if the given connection method is pointed to by any
+     * virtual IAP.
+     */
+    TBool ConnMethodPointedToByVirtualIap( const TUint32& aConnMethodId ) const;
+
+    /**
+     * Check if the given connection method is the only connection method in
+     * the given destination and if a virtual IAP points to that destination.
+     */
+    TBool ConnMethodInDestinationButLocked(
+            const TUint32& aConnMethodId,
+            const TUint32& aDestinationId ) const;
+
+    /**
+     * Remove all references to the given connection method from the
+     * datamobility selection policy records. Then update instance mapping to
+     * reflect the current database state, and notify any possible client
+     * handles for the changed destinations.
+     */
+    void RemoveAllReferencesToConnMethodL(
+            CCmmConnMethodInstance& aConnMethodInstance );
+
+    /**
+     * Update the ID of a new destination from temporary ID to real ID after a
+     * successful update to database.
+     */
+    void RefreshDestinationId( const TCmmIdStruct& aIdStruct );
+
+    /**
+     * Update the ID of a new connection method from temporary ID to real ID
+     * after a successful update to database.
+     */
+    void RefreshConnMethodId( const TCmmIdStruct& aIdStruct );
+
+    /**
+     * During destination update, after updating connection methods inside the
+     * destination, the database records containing the information of what
+     * connection methods are inside the destination need to be updated with
+     * real IDs for any newly created connection methods. These real IDs are
+     * held in the temporary array iUpdatedConnMethods until successful commit
+     * to database. This method is used to find out those real IDs before that.
+     */
+    void TranslateTemporaryId( const TUint32& aTemporaryId, TUint32& aRealId ) const;
+
+    /**
+     * Check if the given connection method can have all references removed and
+     * made into an uncategorized connection method.
+     */
+    void CheckIfConnMethodReferencesCanBeRemovedL( const CCmmConnMethodInstance& aConnMethodInstance );
+
+    /**
+     * Check if the given connection method can be deleted.
+     */
+    void CheckIfConnMethodCanBeDeletedL( const CCmmConnMethodInstance& aConnMethodInstance );
+
+    /**
+     * Check if the given destination can be deleted.
+     */
+    void CheckIfDestinationCanBeDeletedL( const CCmmDestinationInstance& aDestinationInstance );
+
+    /**
+     * Return the requested table ID.
+     */
+    CommsDat::TMDBElementId TableId( TCmmDbRecords aRecord );
+
+private:
+    TInt FindDestinationFromCache( const TUint32& aId );
+    TInt FindNotSavedDestinationFromCacheL( const TDesC& aName, const TUint32& aDestinationId );
+
+    TInt FindConnMethodFromCache( const TUint32& aConnMethodId );
+
+    void ReplaceGenConnSettingsL( const TCmGenConnSettings& aGenConnSettings );
+
+    /**
+     * Opens a transaction and deletes the given connection method.
+     */
+    void DeletePluginL( CCmmConnMethodStruct& aConnMethodStruct );
+
+    /**
+     * TODO
+     */
+    void DeleteDestinationForcedL( CCmmDestinationInstance& aDestinationInstance );
+
+private:
+    // Monitors changes in the database.
+    CCmmListenerManager* iListenerManager; // Owned.
+
+    // Contains the current destination/connection method structure.
+    CCmmInstanceMapping* iInstanceMapping; // Owned.
+
+    // Array of currently opened destinations.
+    RPointerArray<CCmmDestinationStruct> iDestinationArray; // Owned.
+
+    // Array of currently opened connection methods.
+    RPointerArray<CCmmConnMethodStruct> iConnMethodArray; // Owned.
+
+    // Temporary array to hold information about connection methods that are
+    // deleted during a database transaction. This information is needed
+    // immediately when the database transaction is successfully commited.
+    RArray<TCmmIdStruct> iDeletedConnMethods; // Owned.
+
+    // Temporary arrays to hold information about connection methods that are
+    // updated during a database transaction. This information is needed
+    // immediately when the database transaction is successfully commited.
+    RArray<TCmmIdStruct> iUpdatedConnMethods; // Owned.
+    RPointerArray<CCmmConnMethodInstance> iUpdatedConnMethods2; // Does not own contents.
+
+    // Temporary arrays to hold information about destinations that are updated
+    // during a database transaction. This information is needed immediately
+    // when the database transaction is successfully commited.
+    RArray<TCmmIdStruct> iUpdatedDestinations; // Owned.
+    RPointerArray<CCmmDestinationInstance> iUpdatedDestinations2; // Does not own contents.
+
+    // Transaction handler for CommsDat operations. Created and owned by
+    // CCmManagerImpl.
+    CCmmTransactionHandler* iTrans; // Not owned.
+
+    // Pointer to bearer priority array.
+    CCmmBearerPriorityCache* iBearerPriorityCache; // Owned.
+
+    CArrayPtrFlat<const CCmPluginBaseEng>* iPlugins; // Not owned.
+
+    // Connection method manager.
+    CCmManagerImpl* iCmManagerImpl; // Not owned.
+
+    // Counter to generate new unique IDs. These are used to link new objects
+    // without valid IDs between session side and cache.
+    TUint32 iCurrentTemporaryId;
+    };
+
+#endif // CMMCACHE_H_
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmmconnmethodinstance.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,271 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Session side object representing a connection method.
+*
+*/
+
+
+#ifndef CMMCONNMETHODINSTANCE_H_
+#define CMMCONNMETHODINSTANCE_H_
+
+#include <e32base.h>
+
+#include "cmmserverdefs.h"
+
+class CCmmSession;
+class CCmmCache;
+class CCmPluginBaseEng;
+class CCmClientPluginInstance;
+class CCmmConnMethodStruct;
+class TCmmIdStruct;
+
+
+/**
+ * TODO, see DestInstance
+ */
+NONSHARABLE_CLASS( CCmmConnMethodInstance ) : public CObject
+    {
+public:
+    /**
+     * NewL.
+     */
+    static CCmmConnMethodInstance* NewL( CCmmSession* aCmmSession, CCmmCache* aCache );
+
+    /**
+     * NewLC.
+     */
+    static CCmmConnMethodInstance* NewLC( CCmmSession* aCmmSession, CCmmCache* aCache );
+
+    /**
+     * Destructor.
+     */
+    ~CCmmConnMethodInstance();
+
+private:
+    /**
+     * Constructor.
+     *
+     * @param aCache database cache.
+     */
+    CCmmConnMethodInstance( CCmmSession* aCmmSession, CCmmCache* aCache );
+
+    /**
+     * Second phase constructor.
+     */
+    void ConstructL();
+
+public:
+    /**
+     * Set the plugin base pointer.
+     */
+    void SetPlugin( CCmPluginBaseEng* aPlugin );
+
+    /**
+     * Get the plugin base pointer.
+     */
+    CCmPluginBaseEng* GetPlugin() const;
+
+    /**
+     * Get connection method ID.
+     */
+    TUint32 GetId() const;
+
+    /**
+     * Set connection method ID.
+     */
+    void SetId( const TUint32& aConnMethodId );
+
+    /**
+     * Return bearer type.
+     */
+    TUint32 GetBearerType() const;
+
+    /**
+     * Set bearer type.
+     */
+    void SetBearerType( const TUint32& aBearerType );
+
+    /**
+     * Get handle ID.
+     */
+    TInt GetHandle() const;
+
+    /**
+     * Set handle ID.
+     */
+    void SetHandle( const TInt& aHandle );
+
+    /**
+     * Get pointer to the plugin data container.
+     */
+    CCmClientPluginInstance* GetPluginDataInstance() const;
+
+    /**
+     * Return ETrue, if this connection method represents an embedded destination.
+     */
+    TBool IsEmbeddedDestination() const;
+
+    /**
+     * Save the contents of this connection method into database. The attribute
+     * aTemporaryHandle must be true if this connection instance was
+     * temporarily created for the duration of this update operation only. 
+     */
+    void UpdateL( TBool aTemporaryHandle = EFalse );
+
+    /**
+     * Copy the relevant connection method information from cache side object.
+     */
+    void CopyDataL( CCmmConnMethodStruct* aConnMethodStruct );
+
+    /**
+     * Returns integer value identified by aAttribute. Some special cases
+     * are handled in this module and the rest in plugin.
+     * @param aAttribute Parameter which specifies the requested attribute.
+     * @return Returns the value of the requested attribute if succees. Otherwise
+     * leaves with KErrArgument
+     */
+    TUint32 GetIntAttributeL( const TUint32& aAttribute );
+
+    /**
+     * Returns integer value identified by aAttribute. Some special cases
+     * are handled in this module and the rest in plugin.
+     * @param aAttribute Parameter which specifies the requested attribute.
+     * @return Returns the value of the requested attribute if succees. Otherwise
+     * leaves with KErrArgument
+     */
+    TBool GetBoolAttributeL( const TUint32& aAttribute );
+
+    /**
+     * Returns 16 bit string value identified by aAttribute.
+     * @param aAttribute Parameter which specifies the requested attribute.
+     * @return Returns the value of the requested attribute if succees. Otherwise
+     * leaves with KErrArgument
+     */
+    HBufC* GetStringAttributeL( const TUint32& aAttribute );
+
+    /**
+     * Returns 8 bit string value identified by aAttribute.
+     * @param aAttribute Parameter which specifies the requested attribute.
+     * @return Returns the value of the requested attribute if succees. Otherwise
+     * leaves with KErrArgument
+     */
+    HBufC8* GetString8AttributeL( const TUint32& aAttribute );
+
+    /**
+     * Sets the integer value identified by aAttribute.
+     * @param aAttribute Identifies the attribute to be set.
+     * @param aValue The value to be set.
+     * @return None
+     */
+    void SetIntAttributeL(
+        const TUint32& aAttribute,
+        const TUint32& aValue );
+
+    /**
+     * Sets the integer value identified by aAttribute.
+     * @param aAttribute Identifies the attribute to be set.
+     * @param aValue The value to be set.
+     * @return None
+     */
+    void SetBoolAttributeL(
+        const TUint32& aAttribute,
+        const TBool& aValue );
+
+    /**
+     * Sets the 16 bit string value identified by aAttribute.
+     * @param aAttribute Identifies the attribute to be set.
+     * @param aValue The value to be set.
+     * @return None
+     */
+    void SetStringAttributeL(
+        const TUint32& aAttribute,
+        const TDesC16& aValue );
+
+    /**
+     * Sets the 8 bit string value identified by aAttribute.
+     * @param aAttribute Identifies the attribute to be set.
+     * @param aValue The value to be set.
+     * @return None
+     */
+    void SetString8AttributeL(
+        const TUint32& aAttribute,
+        const TDesC8& aValue );
+
+    /**
+     * Gets the current status of this connection method instance.
+     */
+    TCmmConnMethodStatus GetStatus() const;
+
+    /**
+     * Sets a new status value.
+     */
+    void SetStatus( const TCmmConnMethodStatus& aStatus );
+
+    /*
+     * Called after this connection method has been updated and database
+     * transaction has completed successfully. Sets the internal state of this
+     * connection method instance to reflect the new valid state.
+     */
+    void UpdateSuccessful();
+
+    /**
+     * Called after this connection method has been deleted and database
+     * transaction has completed successfully. Sets the internal state of this
+     * connection method structure to reflect the new deleted state.
+     */
+    void DeleteSuccessful( const TUint32& aNewSecondaryId );
+
+    /**
+     * After update/delete to database, refresh temporary ID to real ID if
+     * necessary and refresh status information for any related handles for
+     * all client sessions.
+     */
+    void RefreshHandlesForAllSessions( const TCmmIdStruct& aIdStruct );
+
+    /**
+     * Removes a connection method from any open destination handle in the same
+     * session.
+     */
+    void RemoveConnMethodFromSessionDestinationHandles( const TUint32& aConnMethodId );
+
+private:
+    // Session that owns this instance.
+    CCmmSession* iCmmSession; // Not owned.
+
+    // Database cache.
+    CCmmCache* iCache; // Not owned.
+
+    // Pointer to original bearer plugin owned by cache.
+    CCmPluginBaseEng* iPlugin; // Not owned.
+
+    // Object to contain the data of this connection method instance.
+    CCmClientPluginInstance* iPluginDataInstance; // Owned.
+
+    // Connection method ID.
+    TUint32 iConnMethodId;
+
+    // Connection method bearer type.
+    TUint32 iBearerType;
+
+    // Connection method handle status.
+    TCmmConnMethodStatus iStatus;
+
+    // Subsession handle ID.
+    TInt iHandle;
+    };
+
+#endif // CMMCONNMETHODINSTANCE_H_
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmmconnmethoditem.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,71 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Class representing any kind on connection method, including embedded
+* destination. Used for priority based ordering of connection methods inside
+* destinations.
+*
+*/
+
+
+#ifndef CMMCONNMETHODITEM_H_
+#define CMMCONNMETHODITEM_H_
+
+#include <e32base.h>
+
+
+NONSHARABLE_CLASS( TCmmConnMethodItem )
+    {
+public:
+    TCmmConnMethodItem();
+
+    TCmmConnMethodItem(
+            TUint32 aId,
+            TUint32 aBearerType,
+            TUint aBearerPriority,
+            TUint aPriority );
+
+    /**
+     * A comparison function. Uses priority since items are in priority order.
+     */
+    static TInt Compare(
+            const TCmmConnMethodItem& aFirst,
+            const TCmmConnMethodItem& aSecond );
+
+    /**
+     * A comparison function to find a specific item by ID. (Items are not
+     * sorted by ID in the array.)
+     */
+    static TBool FindCompare(
+            const TUint32* aKey,
+            const TCmmConnMethodItem& aEntry );
+
+public:
+    // Connection method ID.
+    TUint32 iId;
+
+    // Connection method bearer type.
+    TUint32 iBearerType;
+
+    // Priority value of the bearer type.
+    TUint iBearerPriority;
+
+    // Priority value in the CCDDataMobilitySelectionPolicy-record. Only used
+    // for sorting purposes when building an array ofTCmmConnMethodItem-objects.
+    TUint iPriority;
+    };
+
+#endif // CMMCONNMETHODITEM_H_
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmmconnmethodstruct.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,147 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Cache side object representing a connection method.
+*
+*/
+
+
+#ifndef CMMCONNMETHODSTRUCT_H_
+#define CMMCONNMETHODSTRUCT_H_
+
+#include <e32base.h>
+
+#include "cmmserverdefs.h"
+
+class CCmmConnMethodInstance;
+class CCmPluginBaseEng;
+
+
+/**
+ * TODO
+ */
+NONSHARABLE_CLASS( CCmmConnMethodStruct ) : public CBase
+    {
+public:
+    static CCmmConnMethodStruct* NewL( const TUint32& aConnMethodId );
+    static CCmmConnMethodStruct* NewLC( const TUint32& aConnMethodId );
+    ~CCmmConnMethodStruct();
+
+private:
+    CCmmConnMethodStruct( TUint32 aConnMethodId );
+    void ConstructL();
+
+public:
+    /**
+     * Return the reference count.
+     */
+    TInt GetReferenceCounter();
+
+    /**
+     * Increase the reference counter by one.
+     */
+    void IncrementReferenceCounter();
+
+    /**
+     * Return the connection method ID.
+     */
+    TUint32 GetId() const;
+
+    /**
+     * Set the connection method ID.
+     */
+    void SetId( const TUint32& aConnMethodId );
+
+    /**
+     * Return bearer type.
+     */
+    TUint32 GetBearerType() const;
+
+    /**
+     * Gets the current status of this connection method struct.
+     */
+    TCmmConnMethodStatus GetStatus() const;
+
+    /**
+     * Sets a new status value.
+     */
+    void SetStatus( const TCmmConnMethodStatus& aStatus );
+
+    /**
+     * TODO
+     * 
+     */
+    void RefreshConnMethodInstanceL(
+            CCmmConnMethodInstance& aConnMethodInstance );
+
+    /**
+     * Decrease the reference counter by one. Return the remaining number of
+     * references.
+     */
+    TInt SessionInstanceClosed(); //TODO, rename to ConnMethodInstanceClosed ?
+
+    /**
+     * Set the connection method plugin. Updates status and sets reference
+     * counter to 1.
+     */
+    void SetPlugin(
+            CCmPluginBaseEng* aPlugin,
+            TUint32 aBearerType,
+            TCmmConnMethodStatus aStatus );
+
+    /**
+     * Returns the connection method plugin.
+     */
+    CCmPluginBaseEng* GetPlugin();
+
+    /**
+     * Called after this connection method has been updated and database
+     * transaction has completed successfully. Sets the internal state of this
+     * connection method structure to reflect the new valid state.
+     */
+    void UpdateSuccessful();
+
+    /**
+     * Called after this connection method has been deleted and database
+     * transaction has completed successfully. Sets the internal state of this
+     * connection method structure to reflect the new deleted state.
+     */
+    void DeleteSuccessful( const TUint32& aNewSecondaryId );
+
+private:
+    // The connection method plugin.
+    CCmPluginBaseEng* iConnMethodPlugin; // Owned.
+
+    // Total number of handles that the clients have to this connection method.
+    TInt iReferenceCounter;
+
+    // Connection method ID.
+    // For new connection methods, while no valid database ID is available,
+    // will be assigned a temporary ID that will have a value above
+    // above KTemporaryIdCounterStart.
+    TUint32 iConnMethodId;
+
+    // Connection method bearer type.
+    TUint32 iBearerType;
+
+    // Current status of this connection method.
+    TCmmConnMethodStatus iStatus;
+
+    //TODO
+    //TCmmRecordStatus iRecordStatus;
+    };
+
+#endif // CMMCONNMETHODSTRUCT_H_
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmmdbchangelistener.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,79 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Listens for changes in one CommsDat table through CenRep.
+*
+*/
+
+
+#ifndef CMMDBCHANGELISTENER_H_
+#define CMMDBCHANGELISTENER_H_
+
+#include <e32base.h>
+
+class CCmmListenerManager;
+class CRepository;
+
+// Stop requesting new notifications after this many consecutive errors
+const TInt KCmmCenRepErrorThreshold = 50;
+
+
+NONSHARABLE_CLASS( CCmmDbChangeListener ) : public CActive
+    {
+public:
+    static CCmmDbChangeListener* NewL(
+            CCmmListenerManager* aListenerManager,
+            TUint32 aTableId );
+
+    static CCmmDbChangeListener* NewLC(
+            CCmmListenerManager* aListenerManager,
+            TUint32 aTableId );
+
+    virtual ~CCmmDbChangeListener();
+
+private:
+    CCmmDbChangeListener(
+            CCmmListenerManager* aListenerManager,
+            TUint32 aTableId );
+
+    void ConstructL();
+
+public:
+    TUint32 GetTableId();
+    TInt Start();
+
+private: // Methods from base class
+    void DoCancel();
+    void RunL(); // Don't leave, or implement RunError() //TODO, implement RunError()
+
+private:
+    TInt RequestNotification();
+
+private:
+    // Manager object that handles all similar listeners.
+    CCmmListenerManager* iListenerManager; // Not owned
+
+    // Central Repository handle.
+    CRepository* iRepository; // Owned
+
+    // Table ID of the commsdat table to be listened.
+    TUint32 iTableId;
+
+    // Safeguard in case of CenRep errors.
+    TInt iErrorCounter;
+    };
+
+#endif // CMMDBCHANGELISTENER_H_
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmmdestinationinstance.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,338 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Session side object representing a destination.
+*
+*/
+
+
+#ifndef CMMDESTINATIONINSTANCE_H_
+#define CMMDESTINATIONINSTANCE_H_
+
+#include <e32base.h>
+#include <metadatabase.h>
+#include <cmmanagerdef.h>
+
+#include "cmmserverdefs.h"
+
+class CCmmSession;
+class CCmmCache;
+class CCmmConnMethodInstance;
+class TCmmIdStruct;
+class TCmmConnMethodItem;
+class CCDSNAPMetadataRecord;
+
+
+/**
+ * Session side object representing a destination. Keeps track of any changes
+ * the client makes before they are updated to database.
+ */
+NONSHARABLE_CLASS( CCmmDestinationInstance ) : public CObject
+    {
+public:
+    /**
+     * NewL.
+     */
+    static CCmmDestinationInstance* NewL( CCmmSession* aCmmSession, CCmmCache* aCache );
+
+    /**
+     * NewLC.
+     */
+    static CCmmDestinationInstance* NewLC( CCmmSession* aCmmSession, CCmmCache* aCache );
+
+    /**
+     * Destructor.
+     */
+    ~CCmmDestinationInstance();
+
+private:
+    /**
+     * Constructor.
+     *
+     * @param aCache CmmCache.
+     */
+    CCmmDestinationInstance( CCmmSession* aCmmSession, CCmmCache* aCache );
+
+    /**
+     * Second phase constructor.
+     */
+    void ConstructL();
+
+public:
+    void SetId( const TUint32& aId );
+    TUint32 GetId() const;
+
+    /**
+     * Sets a new status value.
+     */
+    void SetStatus( const TCmmDestinationStatus& aStatus );
+
+    /**
+     * Gets the current status of this destination instance.
+     */
+    TCmmDestinationStatus GetStatus() const;
+
+    /**
+     * Get handle ID.
+     */
+    TInt GetHandle() const;
+
+    /**
+     * Set handle ID.
+     */
+    void SetHandle( const TInt& aHandle );
+
+    /**
+     * Set the record status for all records.
+     */
+    void SetStatusForAllRecords( const TCmmRecordStatus& aStatus );
+
+    TUint32 GetElementIdL();
+    TUint32 GetRecordTagFromApRecordL();
+
+    TInt SetRecordPointer(
+            const TCmmDbRecords& aDestRecord,
+            CommsDat::CCDRecordBase* aRecordPointer );
+    TInt GetRecordPointer(
+            const TCmmDbRecords& aDestRecord,
+            CommsDat::CCDRecordBase*& aRecordPointer );
+
+    /**
+     * Save the contents of this destination into database. All connection
+     * methods including embedded destination, that the client has open handles
+     * to, are also updated.
+     */
+    void UpdateL();
+
+    TDesC& GetDestinationNameL();
+    HBufC* GetLocalisedDestinationNameL();
+    void SetDestinationNameL( const TDesC& aDestinationName );
+
+    void GetMetadataL(
+            const CMManager::TSnapMetadataField& aMetadataField,
+            TUint32& aMetadata );
+    void SetMetadataL(
+            const CMManager::TSnapMetadataField& aMetadataField,
+            const TUint32& aMetadata );
+
+    void GetProtectionL( CMManager::TProtectionLevel& aProtectionLevel );
+    void SetProtectionL( CMManager::TProtectionLevel aProtectionLevel );
+
+    /**
+     * Return true if protection level has been changed. 
+     */
+    TBool ProtectionChanged();
+
+    /**
+     * Return the previous valid protection level of this connection method
+     * instance.
+     */
+    CMManager::TProtectionLevel LastProtectionLevel();
+
+    /**
+     * Return the protection level currently set into this destination instance.
+     */
+    CMManager::TProtectionLevel CurrentProtectionLevel();
+
+    /**
+     * Adds a connection method into this destination. Returns the index in
+     * the connection method array where the connection method was added.
+     */
+    TInt AddConnMethodL(
+            const CCmmConnMethodInstance& aConnMethodInstance );
+
+    /**
+     * Adds an embedded destination into this destination. Returns the index in
+     * the connection method array where the connection method was added.
+     */
+    TInt AddEmbeddedDestinationL(
+            const CCmmDestinationInstance& aEmbeddedDestinationInstance );
+
+    /**
+     * Delete a connection method that belongs to this destination. If the
+     * connection method belongs to any other destination, it is only removed
+     * from this destination and not deleted. Does not call update.
+     */
+    void DeleteConnMethodFromDestinationL(
+            const CCmmConnMethodInstance& aConnMethodInstance );
+
+    /**
+     * Remove a connection method from this destination. If the second
+     * attribute aTestIfConnected is false, the test to check if connection
+     * method is in use is skipped. This is to avoid a duplicate check, so it
+     * should have been already tested by the caller.
+     */
+    void RemoveConnMethodFromDestinationL(
+            const CCmmConnMethodInstance& aConnMethodInstance,
+            const TBool& aTestIfConnected = ETrue );
+
+    /**
+     * Modifies the priority of a connection method inside this destination.
+     */
+    void ModifyConnMethodPriorityL(
+            const CCmmConnMethodInstance& aConnMethodInstance,
+            TUint aIndex );
+
+    /**
+     * Finds a connection method instance that belongs to the same session and
+     * matches the provided ID. Return NULL if no match is found.
+     */
+    CCmmConnMethodInstance* FindConnMethodInstanceFromSessionById(
+            const TUint32& aConnMethodId ) const;
+
+    /**
+     * Finds a destination instance that belongs to the same session and matches
+     * the provided ID. Return NULL if no match is found.
+     */
+    CCmmDestinationInstance* FindDestinationInstanceFromSessionById(
+            const TUint32& aDestinationId ) const;
+
+    /**
+     * Check from all open destination handles in the same session if the given
+     * connection method is inside any of them. The given destination is
+     * skipped.
+     */
+    TBool ConnMethodInOtherDestinationInSession(
+            const TUint32& aConnMethodId,
+            const TUint32& aDestinationId ) const;
+
+    /**
+     * Check if the given connection method is in this destination. Include
+     * embedded destinations.
+     */
+    TBool ValidConnMethodIdInDestinationIncludeEmbedded(
+            const TUint32& aConnMethodId ) const;
+
+    /**
+     * Check if the given connection method is inside this destination and if
+     * it is in a 'locked' status. A locked connection method can't be deleted
+     * nor removed from the destination. A connection method becomes locked
+     * if it is the only remaining connection method in a destination and a
+     * virtual IAP points into that destination.
+     */
+    TBool ConnMethodInDestinationButLocked( const TUint32& aConnMethodId ) const;
+
+    /**
+     * Counts how many connection methods that require priority information are
+     * currently in this destination. This excludes any virtual IAPs that point
+     * to a destination or any embedded destinations from the count. Assumes
+     * the connection method array is in order so all wildcard priority IAPs
+     * are at the end of the list.
+     */
+    TUint NumberOfConnMethodsWithPriority() const;
+
+    /**
+     * Check if this destination has an embedded destination. Checks the
+     * current (possibly unsaved) status of this destination handle, not the
+     * current status in database.
+     */
+    TBool HasEmbedded() const;
+
+    /**
+     * Check if this destination has an embedded destination with the specified
+     * ID. Checks the current (possibly unsaved) status of this destination
+     * handle, not the current status in database.
+     */
+    TBool HasEmbeddedWithId( const TUint32& aDestinationId ) const;
+
+    /**
+     * After update/delete to database, refresh temporary ID to real ID if
+     * necessary and refresh status information for any related handles for
+     * all client sessions.
+     */
+    void RefreshHandlesForAllSessions( const TCmmIdStruct& aIdStruct );
+
+    /**
+     * If the destination contains a connection method with matching temporary
+     * ID, updates the ID to real ID. This is done after the connection method
+     * has been successfully saved into the database.
+     */
+    void RefreshConnMethodId( const TCmmIdStruct& aIdStruct );
+
+    /**
+     * Called after this destination has been updated and database transaction
+     * has completed successfully. Sets the internal state of this destination
+     * instance to reflect the new valid state.
+     */
+    void UpdateSuccessful();
+
+private:
+    TBool AllMandatoryRecordsContainData() const;
+    void RefreshRecordL( TCmmDbRecords aRecordType );
+    void LoadAllRecordsL();
+    void SetMetadataInternetL( const TUint32& aMetadata );
+    void SetMetadataHighlight( const TUint32& aMetadata );
+    void SetMetadataHiddenAgentL( const TUint32& aMetadata );
+    void SetMetadataLocalizationL( const TUint32& aMetadata );
+    void SetMetadataPurposeL( const TUint32& aMetadata );
+
+    /**
+     * Checks the current metadata for this destination, and verifies there is
+     * no other conflicting destinations in the database.
+     */
+    TBool ConflictingMetadataFoundL();
+
+public:
+    // Array of connection method items that belong to this destination. Loaded
+    // and maintained in priority order.
+    RArray<TCmmConnMethodItem> iConnMethodItemArray; // Owned.
+
+    // Array of connection method IDs that should be deleted if UpdateL() is
+    // called for this destination instance.
+    RArray<TUint32> iConnMethodsToBeDeleted; // Owned.
+
+private:
+    // Session that owns this instance.
+    CCmmSession* iCmmSession; // Not owned.
+
+    // Database cache.
+    CCmmCache* iCache; // Not owned.
+
+    // The network record.
+    CommsDat::CCDNetworkRecord* iNetworkRecord; // Owned.
+
+    // The access point record.
+    CommsDat::CCDAccessPointRecord* iDestApRecord; // Owned.
+
+    // The metadata record.
+    CCDSNAPMetadataRecord* iMetadataRecord; // Owned.
+
+    // Status flags for each record.
+    TCmmRecordStatus iNetworkRecordStatus;
+    TCmmRecordStatus iDestApRecordStatus;
+    TCmmRecordStatus iMetadataRecordStatus;
+
+    // Destination handle status.
+    TCmmDestinationStatus iStatus;
+
+    // Destination ID. If real ID is not available, contains a temporary ID.
+    TUint32 iId;
+
+    // Subsession handle ID.
+    TInt iHandle;
+
+    // True if protection value has been changed. Reset to false on update.
+    TBool iProtectionChanged;
+
+    // The previous valid protection level of this connection method instance.
+    // Set correctly only if iProtectionChanged is true.
+    CMManager::TProtectionLevel iLastProtectionLevel;
+
+    // The protection level currently set into this destination instance.
+    CMManager::TProtectionLevel iCurrentProtectionLevel;
+    };
+
+#endif // CMMDESTINATIONINSTANCE_H_
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmmdestinationstruct.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,166 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Cache side object representing a destination.
+*
+*/
+
+
+#ifndef CMMDESTINATIONSTRUCT_H_
+#define CMMDESTINATIONSTRUCT_H_
+
+#include <e32base.h>
+#include <commsdattypesv1_1.h>
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <commsdattypesv1_1_partner.h>
+#include <commsdattypesv1_1_internal.h>
+#include <commsdattypeinfov1_1_internal.h>
+#endif
+
+#include "cmmserverdefs.h"
+
+class CCmmTransactionHandler;
+class CCmmDestinationInstance;
+class CCmmCache;
+class CCDSNAPMetadataRecord;
+
+
+NONSHARABLE_CLASS( CCmmDestinationStruct ) : public CBase
+    {
+public:
+    static CCmmDestinationStruct* NewL(
+            CCmmCache* aCache,
+            CCmmTransactionHandler* aTransactionHandler,
+            const TUint32& aId );
+    static CCmmDestinationStruct* NewL(
+            CCmmCache* aCache,
+            CCmmTransactionHandler* aTransactionHandler,
+            const TDesC& aName,
+            const TUint32& aId );
+
+    static CCmmDestinationStruct* NewLC(
+            CCmmCache* aCache,
+            CCmmTransactionHandler* aTransactionHandler,
+            const TUint32& aId );
+    static CCmmDestinationStruct* NewLC(
+            CCmmCache* aCache,
+            CCmmTransactionHandler* aTransactionHandler,
+            const TDesC& aName,
+            const TUint32& aId );
+
+    virtual ~CCmmDestinationStruct();
+
+private:
+    CCmmDestinationStruct( CCmmCache* aCache, CCmmTransactionHandler* aTransactionHandler );
+
+    // Opens an existing destination, based on ID.
+    void ConstructL( const TUint32& aDestinationId );
+
+    // Creates a new destination. With name and optionally also with ID.
+    void ConstructL( const TDesC& aName, const TUint32& aId );
+
+public:
+    void SetId( const TUint32& aId );
+    TUint32 GetId() const;
+
+    /**
+     * Get the destination ID from network record. To get a valid ID, this must
+     * be called only during or after a call to UpdateL().
+     */
+    TUint32 GetRealId() const;
+    TDesC& GetDestinationNameL();
+
+    /**
+     * Gets the current status of this destination struct.
+     */
+    TCmmDestinationStatus GetStatus() const;
+    TInt GetReferenceCount() const;
+
+    /**
+     * Sets a new status value.
+     */
+    void SetStatus( const TCmmDestinationStatus& aStatus );
+
+    /**
+     * Set the record status for all records.
+     */
+    void SetStatusForAllRecords( const TCmmRecordStatus& aStatus );
+
+    void CreateSessionInstanceL( //TODO, rename to CreateDestinationInstanceL ?
+            CCmmDestinationInstance& aDestinationInstance );
+    void RefreshDestinationInstanceL(
+            CCmmDestinationInstance& aDestinationInstance );
+    void LoadRecordL(
+            CCmmDestinationInstance& aDestinationInstance,
+            TCmmDbRecords aRecordType );
+    void UpdateL(
+            CCmmDestinationInstance& aDestinationInstance,
+            CCmmCache* aCache );
+    void DeleteL();
+    TInt SessionInstanceClosed(); //TODO, rename to DestinationInstanceClosed ?
+
+    /**
+     * Called after this destination has been updated and database transaction
+     * has completed successfully. Sets the internal state of this destination
+     * structure to reflect the new valid state.
+     */
+    void UpdateSuccessful();
+
+private:
+    void InitializeDestApRecordL();
+    void SetDefaultTierManagerL();
+    void SetDefaultMCprL();
+    void SetDefaultCprL();
+    void SetDefaultSCprL();
+    void SetDefaultProtocolL();
+    CommsDat::CCDRecordBase* CopyRecordL(
+            TCmmDbRecords aRecordType,
+            CommsDat::CCDRecordBase* aSource );
+
+private:
+    // Database cache.
+    CCmmCache* iCache; // Not owned.
+
+    // The transaction handler.
+    CCmmTransactionHandler* iTransactionHandler; // Not owned.
+
+    // The access point record.
+    CommsDat::CCDAccessPointRecord* iDestApRecord; // Owned.
+    // The network record.
+    CommsDat::CCDNetworkRecord* iNetworkRecord; // Owned.
+    // The metadata record.
+    CCDSNAPMetadataRecord* iMetadataRecord; // Owned.
+
+    // Record status variables.
+    TCmmRecordStatus iDestApRecordStatus;
+    TCmmRecordStatus iNetworkRecordStatus;
+    TCmmRecordStatus iMetadataRecordStatus;
+
+    // Counts number of session side objects referring to this destination.
+    TInt iReferenceCounter;
+
+    // Destination status.
+    TCmmDestinationStatus iStatus;
+
+    // Destination ID. If real ID is not available, contains a temporary ID.
+    TUint32 iId;
+
+    // Destination name for newly created destination.
+    // Only valid until destination is saved to database (status is ECmmDestinationStatusNotSaved).
+    HBufC* iName; // Owned.
+    };
+
+#endif // CMMDESTINATIONSTRUCT_H_
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmminstancemapping.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,290 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Keeps track of the general destination/connection method structure in
+* database.
+*
+*/
+
+
+#ifndef CMMINSTANCEMAPPING_H_
+#define CMMINSTANCEMAPPING_H_
+
+#include <e32base.h>
+
+#include "cmmcache.h"
+#include "cmmconnmethoditem.h"
+
+
+NONSHARABLE_CLASS( CDestination ) : public CBase
+    {
+public:
+    static CDestination* NewL();
+    static CDestination* NewLC();
+    ~CDestination();
+
+private:
+    CDestination();
+    void ConstructL();
+
+public:
+    // The destination ID.
+    TUint32 iId;
+
+    // Array of connection methods inside this destination. Includes also
+    // embedded destinations.
+    RArray<TCmmConnMethodItem> iConnMethodItemArray;
+
+    // IDs for unsupported connection methods inside this destination.
+    RArray<TUint32> iUnsupportedConnMethods;
+    };
+
+
+NONSHARABLE_CLASS( CCmmInstanceMapping ) : public CBase
+    {
+public:
+    /**
+     * NewL.
+     */
+    static CCmmInstanceMapping* NewL( CCmmCache& aCache );
+
+    /**
+     * NewLC.
+     */
+    static CCmmInstanceMapping* NewLC( CCmmCache& aCache );
+
+    /**
+     * Destructor.
+     */
+    ~CCmmInstanceMapping();
+
+private:
+    /**
+     * Constructor.
+     *
+     * @param aCache database cache object.
+     */
+    CCmmInstanceMapping( CCmmCache& aCache );
+
+    /**
+     * Second phase constructor.
+     */
+    void ConstructL();
+
+public: //TODO, sort methods, they are currently in mixed order in .cpp file.
+    /**
+     * Update the connection method and destination structures to current state.
+     */
+    void RefreshL();
+
+    /**
+     * Check if the given ID is a valid existing destination ID.
+     */
+    TBool ValidDestinationId( const TUint32& aId ) const;
+
+    /**
+     * Check if the given ID is a valid existing connection method ID.
+     */
+    TBool ValidConnMethodId( const TUint32& aId ) const;
+
+    /**
+     * Check from database if the given destination is an embedded destination
+     * in any other destination.
+     */
+    TBool DestinationIsEmbedded( const TUint32& aDestinationId ) const;
+
+    /**
+     * Check from database if the given destination has an embedded destination.
+     */
+    TBool DestinationHasEmbedded( const TUint32& aDestinationId ) const;
+
+    /**
+     * Check from database if the given destination is pointed to by any
+     * virtual IAP.
+     */
+    TBool DestinationPointedToByVirtualIap( const TUint32& aDestinationId ) const;
+
+    /**
+     * Check from database if the given connection method is pointed to by any
+     * virtual IAP.
+     */
+    TBool ConnMethodPointedToByVirtualIap( const TUint32& aConnMethodId ) const;
+
+    /**
+     * Check if the given connection method is the only connection method in
+     * the given destination and if a virtual IAP points to that destination.
+     */
+    TBool ConnMethodInDestinationButLocked(
+            const TUint32& aConnMethodId,
+            const TUint32& aDestinationId ) const;
+
+    /**
+     * Get bearer type of connection method matching given ID.
+     * Return KErrNone if ID is found, KErrNotFound if not.
+     */
+    TInt GetConnMethodBearerType( const TUint32& aConnMethodId, TUint32& bearerType ) const;
+
+    /**
+     * Returns the number of destinations the provided connection method
+     * belongs to.
+     */
+    TInt DestinationsContainingConnMethod( const TUint32& aConnMethodId ) const;
+
+    /**
+     * Returns all conenction method IDs. Unsupported connection methods are
+     * included if aCheckBearerType is set to EFalse.
+     */
+    void GetAllConnMethodsL(
+            RArray<TUint32>& aConnMethodArray,
+            TBool aCheckBearerType = ETrue ) const;
+
+    /**
+     * Returns the number of destinations.
+     */
+    TInt GetDestinationCount() const;
+
+    /**
+     * Returns all the valid destinations.
+     */
+    void GetDestinationsL( RArray<TUint32>& aDestinationArray ) const;
+
+    /**
+     * Inserts all the valid connection methods inside the given destination
+     * into the provided connection method item array. The array is reset first.
+     */
+    void GetConnMethodsFromDestinationL(
+            const TUint32& aDestinationId,
+            RArray<TCmmConnMethodItem>& aConnMethodArray ) const;
+
+    /**
+     * Returns ETrue if the provided connection method belongs to any other
+     * destination than the one given.
+     */
+    TBool ConnMethodInOtherDestination(
+            const TUint32& aConnMethodId,
+            const TUint32& aDestinationId );
+
+    /**
+     * Return the EasyWLAN IAP ID, zero if not found or WLAN not supported.
+     */
+    TUint32 EasyWlanIdL();
+
+    /**
+     * Find out the internet destination ID. ID is set to 0 if not found.
+     */
+    void InternetDestinationIdL( TUint& aInternetDestinationId );
+
+    /**
+     * Add a connection method ID to deleted list. Ignores any duplicates. Also
+     * removes the connection method from destination/connection method
+     * structures so Refresh()-call is not needed.
+     */
+    void AddConnMethodToDeletedListL( const TUint& aConnMethodId );
+
+    /**
+     * Remove a connection method ID from deleted list. Nothing happens if ID
+     * is not found from the list.
+     */
+    void RemoveConnMethodFromDeletedList( const TUint& aConnMethodId );
+
+    /**
+     * Add a destination ID to deleted list. Ignores any duplicates. Also
+     * removes the destination from destination/connection method structures
+     * so Refresh()-call is not needed.
+     */
+    void AddDestinationToDeletedListL( const TUint& aDestinationId );
+
+    /**
+     * Remove a destination ID from deleted list. Nothing happens if ID is not
+     * found from the list.
+     */
+    void RemoveDestinationFromDeletedList( const TUint& aDestinationId );
+
+    /**
+     * Remove the connection method from current destination/connection method
+     * structures. This is a lot faster than calling Refresh().
+     */
+    void RemoveConnMethod( const TUint32& aConnMethodId );
+
+    /**
+     * Remove the connection method from current destination/connection method
+     * structures. This is a lot faster than calling Refresh(). The ID of any
+     * changed destination is added to the aChangedDestinations-array.
+     */
+    void RemoveConnMethod(
+            const TUint32& aConnMethodId,
+            RArray<TUint32>& aChangedDestinations );
+
+    /**
+     * Remove the destination from current destination/connection method
+     * structures. This is a lot faster than calling Refresh().
+     */
+    void RemoveDestination( const TUint32& aDestinationId );
+
+    /**
+     * Remove the connection method from all destinations in the current
+     * destination/connection method structures. This is a lot faster than
+     * calling Refresh(). The ID of any changed destination is added to the
+     * aChangedDestinations-array.
+     */
+    void RemoveConnMethodFromDestinations(
+            const TUint32& aConnMethodId,
+            RArray<TUint32>& aChangedDestinations );
+
+private:
+    /**
+     * Reads all connection methods from database.
+     */
+    void ReadAndValidateConnMethodsL();
+
+    /**
+     * Reads all destinations and the connection methods inside them.
+     */
+    void ReadAndValidateDestinationsL();
+
+    /**
+     * Returns the reference to shared CommsDat session handle.
+     */
+    CommsDat::CMDBSession& Session() const;
+
+private:
+    // The database cache object.
+    CCmmCache& iCache;
+
+    // All supported connection methods. Does not include any embedded destinations.
+    RArray<TCmmConnMethodItem> iConnMethodItemArray;
+
+    // IDs for all unsupported connection methods.
+    RArray<TUint32> iUnsupportedConnMethods;
+
+    // All destinations.
+    RPointerArray<CDestination> iDestinations;
+
+    // Connection methods that are deleted, but not removed from database yet
+    // because some handles are still open to them and ID needs to be kept
+    // reserved. Kept in unsigned integer order.
+    RArray<TUint> iDeletedConnMethods;
+
+    // Destinations that are deleted, but not removed from database yet because
+    // some handles are still open to them and ID needs to be kept reserved.
+    // Kept in unsigned integer order.
+    RArray<TUint> iDeletedDestinations;
+
+    // EasyWLAN IAP ID, KMaxTUint32 if not known.
+    TUint32 iEasyWlanId;
+    };
+
+#endif // CMMINSTANCEMAPPING_H_
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmmlistenermanager.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Manages all CommsDat table specific CenRep listeners.
+*
+*/
+
+
+#ifndef CMMLISTENERMANAGER_H_
+#define CMMLISTENERMANAGER_H_
+
+#include <e32base.h>
+
+#include "cmmdbchangelistener.h"
+
+class CCmmCache;
+
+// Repository for CommsDat
+const TUid KCDCommsRepositoryId = { 0xCCCCCC00 };
+
+
+NONSHARABLE_CLASS( CCmmListenerManager ) : public CBase
+    {
+public:
+    /**
+     * NewL.
+     */
+    static CCmmListenerManager* NewL( CCmmCache* aCache );
+
+    /**
+     * NewLC.
+     */
+    static CCmmListenerManager* NewLC( CCmmCache* aCache );
+
+    /**
+     * Destructor.
+     */
+    ~CCmmListenerManager();
+
+private:
+    /**
+     * Constructor.
+     */
+    CCmmListenerManager( CCmmCache* aCache );
+
+    /**
+     * Second phase constructor.
+     */
+    void ConstructL();
+
+public:
+    void AddListenerL( TUint32 aIdentifier );
+    TInt RemoveListener( TUint32 aIdentifier );
+    void DbChangeDetected( TUint32 aIdentifier );
+    void DbChangeError( TUint32 aIdentifier );
+
+private:
+    // The database cache.
+    CCmmCache* iCache; // Not owned
+
+    // Array for listener active objects.
+    RPointerArray<CCmmDbChangeListener> iListeners;
+    };
+
+#endif // CMMLISTENERMANAGER_H_
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmmserver.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,199 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Connection method manager server.
+*
+*/
+
+
+#ifndef CMMSERVER_H_
+#define CMMSERVER_H_
+
+#include <e32base.h>
+
+#include "cmmserverdefs.h"
+#include "cmmanagerimpl.h"
+
+class CCmmDelayedShutdown;
+
+
+/**
+ * The main server class
+ */
+NONSHARABLE_CLASS( CCmmServer ) : public CPolicyServer
+    {
+public:
+
+    /**
+     * Two phased construction.
+     */
+    static CCmmServer* NewL();
+
+    /**
+     * Two phased construction.
+     */
+    static CCmmServer* NewLC();
+
+    /**
+     * Destroy the object and release all memory objects
+     */
+    ~CCmmServer();
+
+    /**
+     * Increments the count of the active sessions for this server
+     */
+    void IncrementSessions();
+
+    /**
+     * Decrements the count of the active sessions for this server.
+     * If no more sessions are in use the server terminates.
+     */
+    void DecrementSessions();
+
+     /**
+     * Produces object containers (needed by subsessions) with unique ids within the server.
+     * @return A object container.
+     */
+    CObjectCon* NewContainerL();
+
+    /**
+     * Removes from index and deletes the object container.
+     * @param aContainer The container to be deleted.
+     * @return A object container.
+     */
+    void RemoveContainer( CObjectCon* aContainer );
+
+    CCmManagerImpl* CmManager();
+
+    /**
+     * Check for restrictions for adding an embedded destination from destination
+     * instances of all clients.
+     * @param aDestinationId The ID of the destination where a destination is
+     * beeing embedded.
+     * @param aEmbeddedDestinationId The ID of the destination that is beeing
+     * embedded.
+     */
+    TBool EmbeddedDestinationConflictsFromAllSessions(
+            const TUint32& aDestinationId,
+            const TUint32& aEmbeddedDestinationId );
+
+    /**
+     * Notify each session about a destination/connection method that has been
+     * updated to, or deleted from, database.
+     */
+    void RefreshHandlesForAllSessions( const TUint32& aId );
+    
+    /**
+     * Custom security checking for IPCs marked with TSpecialCase::ECustomCheck.
+     * @param aMsg The IPC message from the client.
+     * @return The result of the security check (TCustomResult::EPass/TCustomResult::EFail).
+     */
+    TCustomResult CustomSecurityCheckL(
+            const RMessage2& aMsg,
+            TInt& aAction,
+            TSecurityInfo& aMissing );
+
+
+protected: // From CActive
+    /**
+     * Process any errors
+     *
+     * @param aError the leave code reported
+     */
+    TInt RunError( TInt aError );
+
+private:
+
+    /**
+     * Perform the first phase of two phase construction
+     *
+     * @param Priority for this thread
+     */
+    CCmmServer( TInt aPriority );
+
+    /**
+     * Perform the second phase construction
+     */
+    void ConstructL() ;
+
+private: // From CServer
+
+    /**
+     * Create a time server session, and return a pointer to the
+     * created object
+     *
+     * @param Version
+     *
+     * @result Pointer to the new session
+     */
+    CSession2* NewSessionL( const TVersion& aVersion, const RMessage2& aMessage ) const;
+
+private:
+    /** The number of client-server sessions */
+    TInt iSessionCount;
+
+    static const TUint iCmmRangeCount;
+    static const TInt iCmmRanges[];
+    static const TUint8 iCmmElementIndex[];
+
+    static const CPolicyServer::TPolicyElement iCmmElements[];
+    static const CPolicyServer::TPolicy iCmmPolicy;
+
+    CCmManagerImpl* iCmManager;
+
+    // Object container index
+    CObjectConIx* iContainerIndex;
+
+    // Pointer to the shutdown timer object
+    CCmmDelayedShutdown* iShutdown;
+    };
+
+/**
+* CCmmDelayedShutdown
+* Shutdown timer that closes Connection Method Manager server after a period.
+*/
+NONSHARABLE_CLASS( CCmmDelayedShutdown ) : public CActive
+    {
+public:
+    CCmmDelayedShutdown( CCmmServer* aServer );
+    void ConstructL();
+    ~CCmmDelayedShutdown();
+
+public:
+    /**
+     * Starts shutdown timer.
+     * @return KErrNone if OK, otherwise a system wide error code.
+     */
+    void Start();
+
+private:
+    /**
+     * From CActive Cancels the shutdown timer.
+     */
+    void DoCancel();
+
+    /**
+     * From CActive Shuts the server down.
+     */
+    void RunL();
+
+private: // Data
+    RTimer iTimer;
+    CCmmServer* iServer;
+    };
+
+
+#endif // CMMSERVER_H_
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmmsession.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,272 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Handles client requests.
+*
+*/
+
+
+#ifndef CMMSESSION_H_
+#define CMMSESSION_H_
+
+#include <e32base.h>
+
+#include "cmmcache.h"
+
+class CCmmServer;
+class CCmmConnMethodInstance;
+class CCmmDestinationInstance;
+
+
+/**
+ * A handler for the service requests received from clients.
+ */
+class CCmmSession : public CSession2
+    {
+public:
+    /**
+     * Creates a CVpnManagerSession object using two phase construction,
+     * and returns a pointer to the created object
+     *
+     * @param Client's thread
+     * @param The server
+     *
+     * @result Pointer to the new session
+     */
+    static CCmmSession* NewL( CCmmServer& aServer, CCmmCache& aCache );
+
+    /**
+     * Creates a CVpnManagerSession object using two phase construction,
+     * and returns a pointer to the created object
+     * (leaving a pointer to the object on the cleanup stack)
+     *
+     * @param Client's thread
+     * @param The server
+     *
+     * @result Pointer to the new session
+     */
+    static CCmmSession* NewLC( CCmmServer& aServer, CCmmCache& aCache );
+
+    /**
+     * Destroy the object and release all memory objects.
+     */
+    ~CCmmSession();
+
+public:
+    /**
+     * Service request from client.
+     *
+     * @param aMessage Message from client (containing requested operation and
+     * any relevant data).
+     */
+    void ServiceL( const RMessage2& aMessage );
+
+    /**
+     * Finds a connection method instance that belongs to this session and
+     * matches the provided ID. Return NULL if no match is found.
+     */
+    CCmmConnMethodInstance* FindConnMethodInstanceById(
+            const TUint32& aConnMethodId );
+
+    /**
+     * Finds a destination instance that belongs to this session and matches
+     * the provided handle.
+     */
+    CCmmDestinationInstance* FindDestinationInstanceByHandleL(
+            const TInt& aDestinationHandle );
+
+    /**
+     * Finds a destination instance that belongs to this session and matches
+     * the provided ID. Return NULL if no match is found.
+     */
+    CCmmDestinationInstance* FindDestinationInstanceById(
+            const TUint32& aDestinationId );
+
+    /**
+     * Check from all open destination handles in this session if the given
+     * connection method is inside any of them. The given destination is
+     * skipped.
+     */
+    TBool ConnMethodInOtherDestination(
+            const TUint32& aConnMethodId,
+            const TUint32& aDestinationId );
+
+    /**
+     * Check for restrictions for adding an embedded destination from destination
+     * instances of all clients.
+     * @param aDestinationId The ID of the destination where a destination is
+     * beeing embedded.
+     * @param aEmbeddedDestinationId The ID of the destination that is beeing
+     * embedded.
+     */
+    TBool EmbeddedDestinationConflictsFromAllSessions(
+            const TUint32& aDestinationId,
+            const TUint32& aEmbeddedDestinationId );
+
+    /**
+     * Check for restrictions for adding an embedded destination from destination
+     * instances of this session.
+     * @param aDestinationId The ID of the destination where a destination is
+     * beeing embedded.
+     * @param aEmbeddedDestinationId The ID of the destination that is beeing
+     * embedded.
+     */
+    TBool EmbeddedDestinationConflicts(
+            const TUint32& aDestinationId,
+            const TUint32& aEmbeddedDestinationId );
+
+    /**
+     * After update to database, refresh temporary ID to real ID if necessary
+     * and refresh status information for any related handles for all client
+     * sessions.
+     */
+    void RefreshHandlesForAllSessions( const TCmmIdStruct& aIdStruct );
+
+    /**
+     * Removes a connection method from any open destination handle in this
+     * session.
+     */
+    void RemoveConnMethodFromDestinationHandles(
+            const TUint32& aConnMethodId );
+
+    /**
+     * Notify this sessions destination/connection method handles about an
+     * updated/deleted destination/connection method.
+     */
+    void RefreshHandles( const TUint32& aId ) const;
+
+private:
+    /**
+     * The first phase of two phase construction.
+     *
+     * @param Client's thread
+     * @param The server
+     */
+    CCmmSession( CCmmServer& aServer, CCmmCache& aCache );
+
+    /**
+     * Destination specific service dispatcher.
+     * @param aMessage Message sent by the plugin
+     */
+    void ServiceDestinationL( const RMessage2& aMessage );
+
+    /**
+     * Connection Method specific service dispatcher.
+     * @param aMessage Message sent by the plugin
+     */
+    void ServiceConnMethodL( const RMessage2& aMessage );
+
+    /**
+     * The second phase of two phase construction.
+     */
+    void ConstructL() ;
+
+    void GetBearerInfoIntL( const RMessage2& aMessage );
+    void GetBearerInfoBoolL( const RMessage2& aMessage );
+    void GetBearerInfoStringL( const RMessage2& aMessage );
+    void GetBearerInfoString8L( const RMessage2& aMessage );
+    void GetConnMethodInfoIntL( const RMessage2& aMessage );
+    void GetConnMethodInfoBoolL( const RMessage2& aMessage );
+    void GetConnMethodInfoStringL( const RMessage2& aMessage );
+    void GetConnMethodInfoString8L( const RMessage2& aMessage );
+    void GetConnMethodArrayL( const RMessage2& aMessage );
+    void GetAllDestinationsL( const RMessage2& aMessage );
+    void GetEasyWLANIdL( const RMessage2& aMessage );
+    void GetSupportedBearersL( const RMessage2& aMessage );
+    void ReadDefaultConnectionL( const RMessage2& aMessage );
+    void ReadGenConnSettingsL( const RMessage2& aMessage );
+    void WriteGenConnSettingsL( const RMessage2& aMessage );
+    void GetBearerPriorityArrayL( const RMessage2& aMessage );
+    void UpdateBearerPriorityArrayL( const RMessage2& aMessage );
+    void CopyConnMethodL( const RMessage2& aMessage );
+    void MoveConnMethodL( const RMessage2& aMessage );
+    void RemoveConnMethodL( const RMessage2& aMessage );
+
+    void RemoveAllReferencesL( const RMessage2& aMessage );
+
+    void GetDestinationL( const RMessage2& aMessage );
+    void RefreshDestinationL( const RMessage2& aMessage );
+    void CreateDestinationWithNameL( const RMessage2& aMessage );
+    void CreateDestinationWithNameAndIdL( const RMessage2& aMessage );
+    void CloseDestination( const RMessage2& aMessage );
+    void GetConnectionMehodCountL( const RMessage2& aMessage );
+    void GetConnMethodPriorityL( const RMessage2& aMessage );
+    void GetDestinationNameL( const RMessage2& aMessage );
+    void GetDestinationIdL( const RMessage2& aMessage );
+    void GetDestinationElementIdL( const RMessage2& aMessage );
+    void GetDestinationMetadataL( const RMessage2& aMessage );
+    void GetDestinationProtectionLevelL( const RMessage2& aMessage );
+    void IsDestinationConnectedL( const RMessage2& aMessage );
+    void IsDestinationHiddenL( const RMessage2& aMessage );
+    void DestinationIsEqualL( const RMessage2& aMessage );
+
+    void DestAddConnMethodL( const RMessage2& aMessage );
+    void DestAddEmbeddedDestinationL( const RMessage2& aMessage );
+    void DestDeleteConnMethodL( const RMessage2& aMessage );
+    void DestRemoveConnMethodL( const RMessage2& aMessage );
+
+    void ModifyConnMethodPriorityL( const RMessage2& aMessage );
+    void SetDestinationNameL( const RMessage2& aMessage );
+    void SetDestinationMetadataL( const RMessage2& aMessage );
+    void SetDestinationProtectionL( const RMessage2& aMessage );
+    void SetDestinationHiddenL( const RMessage2& aMessage );
+    void UpdateDestinationL( const RMessage2& aMessage );
+    void DeleteDestinationL( const RMessage2& aMessage );
+
+    void CreateConnMethodL( const RMessage2& aMessage );
+    void UpdateConnMethodL( const RMessage2& aMessage );
+    void CloseConnMethod( const RMessage2& aMessage );
+    void DeleteConnMethodL( const RMessage2& aMessage );
+    void GetConnMethodWithIdL( const RMessage2& aMessage );
+    void RefreshConnMethodL( const RMessage2& aMessage );
+    void GetIntAttributeL( const RMessage2& aMessage );
+    void GetBoolAttributeL( const RMessage2& aMessage );
+    void GetStringAttributeL( const RMessage2& aMessage );
+    void GetString8AttributeL( const RMessage2& aMessage );
+    void SetIntAttributeL( const RMessage2& aMessage );
+    void SetBoolAttributeL( const RMessage2& aMessage );
+    void SetStringAttributeL( const RMessage2& aMessage );
+    void SetString8AttributeL( const RMessage2& aMessage );
+    void CreateConnMethodWithIdL( const RMessage2& aMessage );
+    void GetConnMethodFromDestWithIndexL( const RMessage2& aMessage );
+    void GetConnMethodFromDestWithIdL( const RMessage2& aMessage );
+    void CreateConnMethodToDestL( const RMessage2& aMessage );
+    void CreateConnMethodToDestWithIdL( const RMessage2& aMessage );
+    void CmIsEqualL( const RMessage2& aMessage );
+    void CreateCopyOfExistingL( const RMessage2& aMessage );
+    void GetEmbeddedDestinationL( const RMessage2& aMessage );
+
+private:
+    RMessage2 iMessage;
+
+    CCmmServer& iServer;
+
+    // Object container for this session (our handles)
+    CObjectCon* iDestinationContainer;
+
+    // Object index which stores objects for this session
+    CObjectIx* iDestinationObjects;
+
+    // Object container for this session (our handles)
+    CObjectCon* iConnMethodContainer;
+
+    // Object index which stores objects for this session
+    CObjectIx* iConnMethodObjects;
+
+    CCmmCache& iCache; // Not owned
+    };
+
+#endif // CMMSESSION_H_
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmmstarter.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Creates and starts the connection method manager (CMM) server.
+*
+*/
+
+
+#ifndef CMMSTARTER_H_
+#define CMMSTARTER_H_
+
+#include <e32base.h>
+
+
+NONSHARABLE_CLASS( CCmmStarter ) : public CBase
+    {
+public:
+    static CServer2* CreateAndStartServerL();
+    static TPtrC ServerName();
+    };
+
+#endif // CMMSTARTER_H_
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/inc/cmmtransactionhandler.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,96 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Implementation of transaction handler.
+*
+*/
+
+
+#ifndef CMMTRANSACTIONHANDLER_H_
+#define CMMTRANSACTIONHANDLER_H_
+
+#include <e32base.h>
+#include <metadatabase.h>
+
+
+/**
+ * Transaction handler.
+ */
+NONSHARABLE_CLASS( CCmmTransactionHandler ) : public CBase
+    {
+public:
+    /**
+     * NewL.
+     * Takes ownership of aDb.
+     */
+    static CCmmTransactionHandler* NewL( CommsDat::CMDBSession& aDb );
+
+    /**
+     * Destructor.
+     * Intentionally not virtual.
+     */
+    ~CCmmTransactionHandler();
+
+private:
+    /**
+     * Constructor.
+     */
+    CCmmTransactionHandler( CommsDat::CMDBSession& aDb );
+
+    /**
+     * Second phase constructor. Leaves on failure.
+     */
+    void ConstructL();
+
+public:
+    /**
+     * Return the CommsDat session.
+     */
+    CommsDat::CMDBSession& Session() const;
+
+    /**
+     * Opens a CommsDat transaction if it is not already open. Reference
+     * counter is inreased by one.
+     */
+    void OpenTransactionLC();
+
+    /**
+     * Decreases the reference counter by one. If it reaches zero, commits the
+     * open CommsDat transaction. If an error code is given as argument, the
+     * CommsDat transaction is rolled back instead.
+     */
+    void CommitTransactionL( TInt aError = KErrNone );
+
+    /**
+     * Performs RollbackTransactionL().
+     */
+    void Close();
+
+    /**
+     * Return the current reference count. Transaction is currently open if the
+     * count above 0.
+     */
+    TUint32 GetReferenceCount();
+
+private:
+    // CommsDat session pointer.
+    CommsDat::CMDBSession& iDb; // Owned.
+
+    // Reference counter.
+    TUint32 iRefCount;
+    };
+
+#endif // CMMTRANSACTIONHANDLER_H_
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/rom/cmmserver.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2009-2010 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: 
+* cmmserver.exe to ROM.
+*
+*/
+
+#ifndef CMMSERVER_IBY__
+#define CMMSERVER_IBY__
+
+file=ABI_DIR\BUILD_DIR\cmmserver.exe   PROGRAMS_DIR\cmmserver.exe
+
+
+#endif // CMMSERVER_IBY__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmanagerimpl.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,351 @@
+/*
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Implementation of CCmManagerImpl.
+*
+*/
+
+
+#include <cmpluginbaseeng.h>
+#include <featmgr.h>
+#include <cmpluginembdestinationdef.h> // KUidEmbeddedDestination
+
+#include "cmmanagerimpl.h"
+#include "cmmtransactionhandler.h"
+#include "cmmcache.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmanagerimplTraces.h"
+#endif
+
+const TInt KPluginGranularity = 3;
+
+
+//-----------------------------------------------------------------------------
+//  CCmManagerImpl::NewL()
+//-----------------------------------------------------------------------------
+//
+CCmManagerImpl* CCmManagerImpl::NewL()
+    {
+    OstTraceFunctionEntry0( CCMMANAGERIMPL_NEWL_ENTRY );
+
+    CCmManagerImpl* self = new( ELeave ) CCmManagerImpl();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMMANAGERIMPL_NEWL_EXIT );
+    return self;
+    }
+
+//-----------------------------------------------------------------------------
+//  CCmManagerImpl::CCmManagerImpl()
+//-----------------------------------------------------------------------------
+//
+CCmManagerImpl::~CCmManagerImpl()
+    {
+    OstTraceFunctionEntry0( DUP1_CCMMANAGERIMPL_CCMMANAGERIMPL_ENTRY );
+
+    delete iCache;
+
+    if ( iPlugins )
+        {
+        iPlugins->ResetAndDestroy();
+        delete iPlugins;
+        }
+
+    delete iTrans;
+
+    if ( iIsFeatureManagerInitialised )
+        {
+        FeatureManager::UnInitializeLib();
+        }
+
+    REComSession::FinalClose();
+
+    OstTraceFunctionExit0( DUP1_CCMMANAGERIMPL_CCMMANAGERIMPL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CCmManagerImpl::CCmManagerImpl()
+//-----------------------------------------------------------------------------
+//
+CCmManagerImpl::CCmManagerImpl()
+    {
+    OstTraceFunctionEntry0( CCMMANAGERIMPL_CCMMANAGERIMPL_ENTRY );
+
+    iCache = NULL;
+    iPlugins = NULL;
+    iTrans = NULL;
+    iSnapTableId = 0;
+    iBearerPriorityTableId = 0;
+    iDestMetadataTableId = 0;
+    iDefConnTableId = 0;
+    iIsFeatureManagerInitialised = EFalse;
+    iWLanSupport = ETrue;
+
+    OstTraceFunctionExit0( CCMMANAGERIMPL_CCMMANAGERIMPL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CCmManagerImpl::ConstructL()
+//-----------------------------------------------------------------------------
+//
+void CCmManagerImpl::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMMANAGERIMPL_CONSTRUCTL_ENTRY );
+
+    FeatureManager::InitializeLibL();
+    iIsFeatureManagerInitialised = ETrue;
+    iWLanSupport = FeatureManager::FeatureSupported( KFeatureIdProtocolWlan );
+
+    CommsDat::CMDBSession* db = CommsDat::CMDBSession::NewLC( KCDVersion1_2 );
+    iTrans = CCmmTransactionHandler::NewL( *db ); // Ownership of db transferred.
+    CleanupStack::Pop( db );
+
+    CheckTablesL();
+    BuildPluginArrayL();
+
+    iCache = CCmmCache::NewL( this, iPlugins );
+
+    OstTraceFunctionExit0( CCMMANAGERIMPL_CONSTRUCTL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmManagerImpl::CheckTablesL()
+// -----------------------------------------------------------------------------
+//
+void CCmManagerImpl::CheckTablesL()
+    {
+    OstTraceFunctionEntry0( CCMMANAGERIMPL_CHECKTABLESL_ENTRY );
+
+    TInt err( 0 );
+
+    TRAP( err, iSnapTableId = CCDDataMobilitySelectionPolicyRecord::TableIdL( iTrans->Session() ));
+    if ( err == KErrNotFound )
+        {
+        iSnapTableId = CCDDataMobilitySelectionPolicyRecord::CreateTableL( iTrans->Session() );
+        }
+    else
+        {
+        User::LeaveIfError( err );
+        }
+
+    TRAP( err, iBearerPriorityTableId =
+            CCDGlobalBearerTypePriorizationRecord::TableIdL( iTrans->Session() ) );
+    if ( err == KErrNotFound )
+        {
+        iBearerPriorityTableId =
+               CCDGlobalBearerTypePriorizationRecord::CreateTableL( iTrans->Session() );
+        }
+    else
+        {
+        User::LeaveIfError( err );
+        }
+
+    TRAP( err, iDestMetadataTableId = CCDSNAPMetadataRecord::TableIdL( iTrans->Session() ) );
+    if ( err == KErrNotFound )
+        {
+        iDestMetadataTableId = CCDSNAPMetadataRecord::CreateTableL( iTrans->Session() );
+        }
+    else
+        {
+        User::LeaveIfError( err );
+        }
+
+    TRAP( err, iDefConnTableId = CCDDefConnRecord::TableIdL( iTrans->Session() ) );
+    if ( err == KErrNotFound )
+        {
+        iDefConnTableId = CCDDefConnRecord::CreateTableL( iTrans->Session() );
+        }
+    else
+        {
+        User::LeaveIfError( err );
+        }
+
+    OstTraceFunctionExit0( CCMMANAGERIMPL_CHECKTABLESL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// Return an array containing the supported bearer types (embedded destination
+// excluded).
+//-----------------------------------------------------------------------------
+//
+void CCmManagerImpl::SupportedBearersL( RArray<TUint32>& aArray ) const
+    {
+    OstTraceFunctionEntry0( CCMMANAGERIMPL_SUPPORTEDBEARERSL_ENTRY );
+
+    aArray.Reset();
+    for ( TInt i = 0; i < iPlugins->Count(); i++ )
+        {
+        TUint32 bearerType( (*iPlugins)[i]->GetBearerInfoIntL( CMManager::ECmBearerType ) );
+        if ( KUidEmbeddedDestination != bearerType )
+            {
+            aArray.AppendL( bearerType );
+            }
+        }
+    OstTraceFunctionExit0( CCMMANAGERIMPL_SUPPORTEDBEARERSL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// Return the requested table ID.
+//-----------------------------------------------------------------------------
+//
+CommsDat::TMDBElementId CCmManagerImpl::TableId( TCmmDbRecords aRecord )
+    {
+    CommsDat::TMDBElementId tableId( 0 );
+    switch ( aRecord )
+        {
+        case ECmmDestNetworkRecord:
+            tableId = CommsDat::KCDTIdNetworkRecord;
+            break;
+        case ECmmDestApRecord:
+            tableId = CommsDat::KCDTIdAccessPointRecord;
+            break;
+        case ECmmDestMetadataRecord:
+            tableId = iDestMetadataTableId;
+            break;
+        case ECmmDbSnapRecord:
+            tableId = iSnapTableId;
+            break;
+        case ECmmDbBearerPriorityRecord:
+            tableId = iBearerPriorityTableId;
+            break;
+        case ECmmDbDefConnRecord:
+            tableId = iDefConnTableId;
+            break;
+        default:
+            break;
+        }
+    return tableId;
+    }
+
+// -----------------------------------------------------------------------------
+// Get a handle to the database cache manager.
+// -----------------------------------------------------------------------------
+//
+CCmmCache& CCmManagerImpl::Cache()
+    {
+    return *iCache;
+    }
+
+//-----------------------------------------------------------------------------
+// Get a handle to the database transaction handler.
+//-----------------------------------------------------------------------------
+//
+CCmmTransactionHandler* CCmManagerImpl::GetTransactionHandler()
+    {
+    return iTrans;
+    }
+
+//-----------------------------------------------------------------------------
+// Get a handle to database session.
+//-----------------------------------------------------------------------------
+//
+CommsDat::CMDBSession& CCmManagerImpl::Session() const
+    {
+    OstTraceFunctionEntry0( CCMMANAGERIMPL_SESSION_ENTRY );
+    return iTrans->Session();
+    }
+
+// ---------------------------------------------------------------------------
+// Return true is WLAN is supported on phone.
+// ---------------------------------------------------------------------------
+//
+TBool CCmManagerImpl::WlanSupported() const
+    {
+    OstTraceFunctionEntry0( CCMMANAGERIMPL_WLANSUPPORTED_ENTRY );
+    OstTraceFunctionExit0( CCMMANAGERIMPL_WLANSUPPORTED_EXIT );
+    return iWLanSupport;
+    }
+
+// -----------------------------------------------------------------------------
+// CCmManagerImpl::BuildPluginArrayL()
+// -----------------------------------------------------------------------------
+//
+void CCmManagerImpl::BuildPluginArrayL()
+    {
+    OstTraceFunctionEntry0( CCMMANAGERIMPL_BUILDPLUGINARRAYL_ENTRY );
+
+    iPlugins = new( ELeave ) CArrayPtrFlat<const CCmPluginBaseEng>( KPluginGranularity );
+
+    // Get a list of all the bearer types.
+    RPointerArray<CImplementationInformation> implArray;
+    CmmCleanupResetAndDestroyPushL( implArray );
+    REComSession::ListImplementationsL( TUid::Uid( KCMPluginInterfaceUid ), implArray );
+
+    CCmPluginBaseEng* plugin = NULL;
+    for ( TInt i = 0; i < implArray.Count(); i++ )
+        {
+        TCmPluginInitParam params( iTrans->Session() );
+
+        // This is the Util implementation.
+        // Trap it to be able to work even if there's a faulty plugin installed
+        // in the phone.
+        TRAPD( err, plugin = STATIC_CAST( CCmPluginBaseEng*, REComSession::CreateImplementationL(
+                ( implArray )[i]->ImplementationUid(),
+                _FOFF( CCmPluginBaseEng, iDtor_ID_Key ),
+                ( TAny* )&params ) ) );
+
+        if ( !err )
+            {
+            CleanupStack::PushL( plugin );
+
+            TBool inserted( EFalse );
+            //TODO, Implement plugin sorting by priority later.
+            /*
+            TInt defaultPriority( KDataMobilitySelectionPolicyPriorityWildCard );
+
+            // No UI priority -> wildcard
+            TRAP_IGNORE( defaultPriority = plugin->GetIntAttributeL( ECmDefaultUiPriority ) );
+
+            for ( TInt j( 0 ); j < iPlugins->Count(); ++j )
+                {
+                if ( defaultPriority > (*iPlugins)[j]->GetIntAttributeL( ECmDefaultUiPriority ) )
+                    {
+                    continue;
+                    }
+                else if ( defaultPriority == (*iPlugins)[j]->GetIntAttributeL( ECmDefaultUiPriority ) )
+                    {
+                    if ( plugin->GetIntAttributeL( ECmExtensionLevel ) >
+                        (*iPlugins)[j]->GetIntAttributeL( ECmExtensionLevel ) )
+                        {
+                        iPlugins->InsertL( j, plugin );
+                        inserted = ETrue;
+                        break;
+                        }
+                    }
+                else
+                    {
+                    iPlugins->InsertL( j, plugin );
+                    inserted = ETrue;
+                    break;
+                    }
+                }*/
+
+            if ( !inserted )
+                {
+                iPlugins->AppendL( plugin );
+                }
+            CleanupStack::Pop( plugin );
+            }
+        }
+
+    CleanupStack::PopAndDestroy( &implArray );
+
+    OstTraceFunctionExit0( CCMMANAGERIMPL_BUILDPLUGINARRAYL_EXIT );
+    }
+
+// Enf of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmanagertextresolver.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2010 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:   Provides functionality for text resolving
+*
+*/
+
+#include <hb/hbcore/hbtextresolversymbian.h>
+#include "cmmanagertextresolver.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmanagertextresolverTraces.h"
+#endif
+
+
+HBufC* CCmManagerTextResolver::ResolveTextL( const TDesC& aTextId )
+    {
+    _LIT(KCMManagerTranslationFile, "cmmanager_");
+    _LIT(KTranslationPath, "\\resource\\qt\\translations");
+    
+    TBool result = HbTextResolverSymbian::Init( KCMManagerTranslationFile,
+                                                KTranslationPath );
+    if ( result )
+        {
+        OstTrace0( TRACE_ERROR, CCMMANAGERTEXTRESOLVER_RESOLVETEXTL, "CCmManagerTextResolver::ResolveTextL" );
+        }
+    
+    return HbTextResolverSymbian::LoadL( aTextId );        
+    }
+
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmbearerpriority.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Implementation of the bearer priority array cache.
+*
+*/
+
+
+#include "cmmbearerpriority.h"
+
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmBearerPriority* CCmmBearerPriority::NewL(
+        const TDesC& aServiceType,
+        const TUint& aPriority,
+        const TUint& aUiPriority )
+    {
+    CCmmBearerPriority* self = CCmmBearerPriority::NewLC( aServiceType, aPriority, aUiPriority );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmBearerPriority* CCmmBearerPriority::NewLC(
+        const TDesC& aServiceType,
+        const TUint& aPriority,
+        const TUint& aUiPriority )
+    {
+    CCmmBearerPriority* self = new( ELeave ) CCmmBearerPriority( aPriority, aUiPriority );
+    CleanupStack::PushL( self );
+    self->ConstructL( aServiceType );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor. Note: aServiceType is not copied here because constructor
+// cannot leave.
+// ---------------------------------------------------------------------------
+//
+CCmmBearerPriority::CCmmBearerPriority(
+        const TUint& aPriority,
+        const TUint& aUiPriority )
+        :
+        iPriority( aPriority ),
+        iUiPriority( aUiPriority )
+    {
+    iServiceType = NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// 2nd phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CCmmBearerPriority::ConstructL( const TDesC& aServiceType )
+    {
+    iServiceType = aServiceType.AllocL();
+    }
+
+// ---------------------------------------------------------------------------
+// Get the service type.
+// ---------------------------------------------------------------------------
+//
+HBufC* CCmmBearerPriority::ServiceType() const
+    {
+    return iServiceType;
+    }
+
+// ---------------------------------------------------------------------------
+// Get the priority.
+// ---------------------------------------------------------------------------
+//
+TUint CCmmBearerPriority::Priority() const
+    {
+    return iPriority;
+    }
+
+// ---------------------------------------------------------------------------
+// Get the UI priority.
+// ---------------------------------------------------------------------------
+//
+TUint CCmmBearerPriority::UiPriority() const
+    {
+    return iUiPriority;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CCmmBearerPriority::~CCmmBearerPriority()
+    {
+    delete iServiceType;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmbearerprioritycache.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,276 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Implementation of the bearer priority array cache.
+*
+*/
+
+
+#include <datamobilitycommsdattypes.h>
+#include <cmmanagerdef.h>
+
+#include "cmmbearerprioritycache.h"
+#include "cmmbearerpriority.h"
+#include "cmmtransactionhandler.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmbearerprioritycacheTraces.h"
+#endif
+
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmBearerPriorityCache* CCmmBearerPriorityCache::NewL(
+        CCmmTransactionHandler* aTrans,
+        CommsDat::TMDBElementId aBearerPriorityTableId )
+    {
+    OstTraceFunctionEntry0( CCMMBEARERPRIORITYCACHE_NEWL_ENTRY );
+
+    CCmmBearerPriorityCache* self =
+            CCmmBearerPriorityCache::NewLC( aTrans, aBearerPriorityTableId );
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMMBEARERPRIORITYCACHE_NEWL_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmBearerPriorityCache* CCmmBearerPriorityCache::NewLC(
+        CCmmTransactionHandler* aTrans,
+        CommsDat::TMDBElementId aBearerPriorityTableId )
+    {
+    OstTraceFunctionEntry0( CCMMBEARERPRIORITYCACHE_NEWLC_ENTRY );
+
+    CCmmBearerPriorityCache* self =
+            new( ELeave ) CCmmBearerPriorityCache( aTrans, aBearerPriorityTableId );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+
+    OstTraceFunctionExit0( CCMMBEARERPRIORITYCACHE_NEWLC_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CCmmBearerPriorityCache::~CCmmBearerPriorityCache()
+    {
+    OstTraceFunctionEntry0( CCMMBEARERPRIORITYCACHE_CCMMBEARERPRIORITYCACHE_ENTRY );
+    iArray.ResetAndDestroy();
+    OstTraceFunctionExit0( CCMMBEARERPRIORITYCACHE_CCMMBEARERPRIORITYCACHE_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------------------------
+//
+CCmmBearerPriorityCache::CCmmBearerPriorityCache(
+        CCmmTransactionHandler* aTrans,
+        CommsDat::TMDBElementId aBearerPriorityTableId )
+        :
+        iTrans( aTrans ),
+        iArray(),
+        iBearerPriorityTableId( aBearerPriorityTableId )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMMBEARERPRIORITYCACHE_CCMMBEARERPRIORITYCACHE_ENTRY );
+    OstTraceFunctionExit0( DUP1_CCMMBEARERPRIORITYCACHE_CCMMBEARERPRIORITYCACHE_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CCmmBearerPriorityCache::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMMBEARERPRIORITYCACHE_CONSTRUCTL_ENTRY );
+
+    // Read initial bearer priority array from commsdat.
+    ReadL();
+
+    OstTraceFunctionExit0( CCMMBEARERPRIORITYCACHE_CONSTRUCTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Updates the bearer priority array with the contents of aArray.
+// ---------------------------------------------------------------------------
+//
+void CCmmBearerPriorityCache::UpdateL( const RPointerArray<CCmmBearerPriority>& aArray )
+    {
+    OstTraceFunctionEntry0( CCMMBEARERPRIORITYCACHE_UPDATEL_ENTRY );
+
+    iTrans->OpenTransactionLC();
+
+    CommsDat::CMDBRecordSet<CCDGlobalBearerTypePriorizationRecord>* bpRS =
+            new( ELeave ) CommsDat::CMDBRecordSet<CCDGlobalBearerTypePriorizationRecord>(
+                    iBearerPriorityTableId );
+    CleanupStack::PushL( bpRS );
+
+    // Delete the old records.
+    TRAP_IGNORE( bpRS->LoadL( iTrans->Session() ) );
+    for ( TInt i = 0; i < bpRS->iRecords.Count(); i++ )
+        {
+        bpRS->iRecords[i]->DeleteL( iTrans->Session() );
+        }
+    CleanupStack::PopAndDestroy( bpRS );
+    bpRS = NULL;
+
+    iArray.ResetAndDestroy();
+
+    // Add new content.
+    const TInt count( aArray.Count() );
+    for ( TInt i = 0; i < count; i++ )
+        {
+        if ( aArray[i]->ServiceType() && aArray[i]->ServiceType()->Length() > 0 )
+            {
+            CCDGlobalBearerTypePriorizationRecord* bpRcd =
+                    new( ELeave ) CCDGlobalBearerTypePriorizationRecord(
+                            iBearerPriorityTableId );
+            CleanupStack::PushL( bpRcd );
+
+            HBufC* serviceType = aArray[i]->ServiceType()->AllocLC();
+            TUint priority = aArray[i]->Priority();
+            TUint uiPriority = aArray[i]->UiPriority();
+
+            bpRcd->SetRecordId( KCDNewRecordRequest );
+            bpRcd->iServiceType.SetL( *serviceType );
+            bpRcd->iPriority.SetL( priority );
+            bpRcd->iUIPriority.SetL( uiPriority );
+            bpRcd->StoreL( iTrans->Session() );
+
+            TPtrC tempServiceType( serviceType->Des() );
+            CCmmBearerPriority* item = CCmmBearerPriority::NewLC(
+                    tempServiceType,
+                    priority,
+                    uiPriority );
+            iArray.AppendL( item ); // Ownership transferred.
+            CleanupStack::Pop( item );
+            CleanupStack::PopAndDestroy( serviceType );
+            CleanupStack::PopAndDestroy( bpRcd );
+            }
+        }
+    iTrans->CommitTransactionL();
+
+    OstTraceFunctionExit0( CCMMBEARERPRIORITYCACHE_UPDATEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CopyL()
+// ---------------------------------------------------------------------------
+//
+void CCmmBearerPriorityCache::CopyL( RPointerArray<CCmmBearerPriority>& aArray ) const
+    {
+    OstTraceFunctionEntry0( CCMMBEARERPRIORITYCACHE_COPYL_ENTRY );
+
+    const TInt count( iArray.Count() );
+    for ( TInt i = 0; i < count; i++ )
+        {
+        if ( iArray[i]->ServiceType() )
+            {
+            TPtrC tempServiceType( iArray[i]->ServiceType()->Des() );
+            if ( tempServiceType.Length() > 0 )
+                {
+                CCmmBearerPriority* item = CCmmBearerPriority::NewLC(
+                        tempServiceType,
+                        iArray[i]->Priority(),
+                        iArray[i]->UiPriority() );
+                aArray.AppendL( item );
+                CleanupStack::Pop( item );
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMBEARERPRIORITYCACHE_COPYL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Get the priority value for a service type from the bearer priority cache.
+// ---------------------------------------------------------------------------
+//
+TUint CCmmBearerPriorityCache::GetPriority( const TDesC& aServiceType ) const
+    {
+    TUint priority = CMManager::KDataMobilitySelectionPolicyPriorityWildCard;
+
+    if ( aServiceType.Length() > 0 )
+        {
+        for ( TInt i = 0; i < iArray.Count(); i++ )
+            {
+            if ( iArray[i]->ServiceType()->Compare( aServiceType ) == 0 )
+                {
+                priority = iArray[i]->Priority();
+                break;
+                }
+            }
+        }
+
+    return priority;
+    }
+
+// ---------------------------------------------------------------------------
+// Reads the bearer priority array from CommsDat.
+// ---------------------------------------------------------------------------
+//
+void CCmmBearerPriorityCache::ReadL()
+    {
+    OstTraceFunctionEntry0( CCMMBEARERPRIORITYCACHE_READL_ENTRY );
+
+    CommsDat::CMDBRecordSet<CCDGlobalBearerTypePriorizationRecord>* bpRS =
+            new( ELeave ) CommsDat::CMDBRecordSet<CCDGlobalBearerTypePriorizationRecord>(
+                    iBearerPriorityTableId );
+    CleanupStack::PushL( bpRS );
+
+    CCDGlobalBearerTypePriorizationRecord* bpRcd =
+            new( ELeave ) CCDGlobalBearerTypePriorizationRecord(
+                    iBearerPriorityTableId );
+    CleanupStack::PushL( bpRcd );
+
+    TRAP_IGNORE( bpRS->LoadL( iTrans->Session() ) );
+
+    // Read every record and store to cache.
+    const TInt bpCount = bpRS->iRecords.Count();
+    for ( TInt i = 0; i < bpCount; i++ )
+        {
+        bpRcd->SetElementId( bpRS->iRecords[i]->ElementId() );
+        bpRcd->LoadL( iTrans->Session() );
+
+        if ( !bpRcd->iServiceType.IsNull() )
+            {
+            TPtrC serviceType( bpRcd->iServiceType );
+            TUint priority = bpRcd->iPriority;
+            TUint uiPriority = bpRcd->iUIPriority;
+
+            if ( serviceType.Length() > 0 )
+                {
+                CCmmBearerPriority* item = CCmmBearerPriority::NewLC(
+                        serviceType,
+                        priority,
+                        uiPriority );
+                iArray.AppendL( item );
+                CleanupStack::Pop( item );
+                }
+            }
+        }
+    CleanupStack::PopAndDestroy( bpRcd );
+    CleanupStack::PopAndDestroy( bpRS );
+
+    OstTraceFunctionExit0( CCMMBEARERPRIORITYCACHE_READL_EXIT );
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmcache.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,3053 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Database cache manager.
+*
+*/
+
+
+#include <e32base.h>
+#include <cmpluginbaseeng.h>
+#include <cmdefconnvalues.h>
+#include <cmpluginembdestinationdef.h>
+
+#include <es_sock.h>    // RSocketServ, RConnection
+#include <in_sock.h>    // KAfInet
+#include <es_enum.h>    // TConnectionInfo
+
+#include "cmmdestinationstruct.h"
+#include "cmmlistenermanager.h"
+#include "cmminstancemapping.h"
+
+#include "cmmcache.h"
+
+#include "cmmdestinationinstance.h"
+#include "cmmconnmethodinstance.h"
+
+#include "cmmtransactionhandler.h"
+#include "cmmanagerimpl.h"
+#include "cmmbearerprioritycache.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmcacheTraces.h"
+#endif
+
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmCache* CCmmCache::NewL(
+        CCmManagerImpl* aCmManagerImpl,
+        CArrayPtrFlat<const CCmPluginBaseEng>* aPlugins )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_NEWL_ENTRY );
+
+    CCmmCache* self = CCmmCache::NewLC( aCmManagerImpl, aPlugins );
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMMCACHE_NEWL_EXIT );
+
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmCache* CCmmCache::NewLC(
+        CCmManagerImpl* aCmManagerImpl,
+        CArrayPtrFlat<const CCmPluginBaseEng>* aPlugins )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_NEWLC_ENTRY );
+
+    CCmmCache* self = new( ELeave ) CCmmCache( aCmManagerImpl, aPlugins );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+
+    OstTraceFunctionExit0( CCMMCACHE_NEWLC_EXIT );
+
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CCmmCache::~CCmmCache()
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_CCMMCACHE_ENTRY );
+
+    delete iBearerPriorityCache;
+    delete iListenerManager;
+    delete iInstanceMapping;
+
+    iConnMethodArray.ResetAndDestroy();
+    iDestinationArray.ResetAndDestroy();
+
+    iDeletedConnMethods.Close();
+    iUpdatedConnMethods.Close();
+    iUpdatedConnMethods2.Close(); // Does not own contents.
+    iUpdatedDestinations.Close();
+    iUpdatedDestinations2.Close(); // Does not own contents.
+
+    OstTraceFunctionExit0( CCMMCACHE_CCMMCACHE_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------------------------
+//
+CCmmCache::CCmmCache(
+        CCmManagerImpl* aCmManagerImpl,
+        CArrayPtrFlat<const CCmPluginBaseEng>* aPlugins )
+        :
+        iPlugins( aPlugins ),
+        iCmManagerImpl( aCmManagerImpl )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMMCACHE_CCMMCACHE_ENTRY );
+
+    iListenerManager = NULL;
+    iInstanceMapping = NULL;
+    iTrans = NULL;
+    iBearerPriorityCache = NULL;
+    iCurrentTemporaryId = KTemporaryIdCounterStart;
+
+    OstTraceFunctionExit0( DUP1_CCMMCACHE_CCMMCACHE_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_CONSTRUCTL_ENTRY );
+
+    iTrans = iCmManagerImpl->GetTransactionHandler();
+
+    iBearerPriorityCache = CCmmBearerPriorityCache::NewL(
+            iTrans,
+            iCmManagerImpl->TableId( ECmmDbBearerPriorityRecord ) );
+    iListenerManager = CCmmListenerManager::NewL( this );
+    iInstanceMapping = CCmmInstanceMapping::NewL( *this );
+
+    OstTraceFunctionExit0( CCMMCACHE_CONSTRUCTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Opens a destination with given ID (if not already opened), then copies the
+// relevant data to the session instance. Checks that destination ID is valid.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::OpenDestinationL(
+        CCmmDestinationInstance& aDestinationInstance,
+        const TUint32& aDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_OPENDESTINATIONL_ENTRY );
+
+    if ( !iInstanceMapping->ValidDestinationId( aDestinationId ) )
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    TInt index = FindDestinationFromCache( aDestinationId );
+    if ( index == KErrNotFound )
+        {
+        // Cache does not have a handle open to this destination. A new handle
+        // needs to be created first.
+        CCmmDestinationStruct* destination = CCmmDestinationStruct::NewLC(
+                this,
+                iTrans,
+                aDestinationId );
+
+        // Now that cache has a handle on this destination, copy the relevant
+        // data to the session instance.
+        destination->CreateSessionInstanceL( aDestinationInstance );
+
+        iDestinationArray.AppendL( destination );
+        CleanupStack::Pop( destination );
+        }
+    else
+        {
+        // Cache already has a handle on this destination. Copy the relevant
+        // data to the session instance.
+        iDestinationArray[index]->CreateSessionInstanceL( aDestinationInstance );
+        }
+
+    // Add list of currently contained connection methods.
+    iInstanceMapping->GetConnMethodsFromDestinationL(
+            aDestinationId,
+            aDestinationInstance.iConnMethodItemArray );
+
+    OstTraceFunctionExit0( CCMMCACHE_OPENDESTINATIONL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Refresh the data contained in aDestinationInstance. This means reloading
+// the data from database if necessary. After this call the contents of
+// aDestinationInstance will reflect the current state in the database. 
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::RefreshDestinationL( CCmmDestinationInstance& aDestinationInstance )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_REFRESHDESTINATIONL_ENTRY );
+
+    TInt index = FindDestinationFromCache( aDestinationInstance.GetId() );
+    if ( index == KErrNotFound )
+        {
+        index = FindNotSavedDestinationFromCacheL( aDestinationInstance.GetDestinationNameL(), 0 );
+        if ( index == KErrNotFound )
+            {
+            User::Leave( KErrNotFound );
+            }
+        }
+
+    // If this destination is a newly created one that doesn't yet exist in
+    // database, just return silently.
+    if ( iDestinationArray[index]->GetStatus() == ECmmDestinationStatusNotSaved )
+        {
+        OstTraceFunctionExit0( CCMMCACHE_REFRESHDESTINATIONL_EXIT );
+        return;
+        }
+
+    iDestinationArray[index]->RefreshDestinationInstanceL( aDestinationInstance );
+
+    OstTraceFunctionExit0( DUP1_CCMMCACHE_REFRESHDESTINATIONL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Create a new destination into cache (with name and ID) and copy the data
+// into session side handle.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::CreateDestinationL(
+        CCmmDestinationInstance& aDestinationInstance,
+        const TDesC& aName,
+        const TUint32& aId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_CREATEDESTINATIONL_ENTRY );
+
+    // Create a new destination with given name.
+    CCmmDestinationStruct* destination = CCmmDestinationStruct::NewLC( this, iTrans, aName, aId );
+
+    destination->CreateSessionInstanceL( aDestinationInstance );
+
+    iDestinationArray.AppendL( destination );
+    CleanupStack::Pop( destination );
+
+    OstTraceFunctionExit0( CCMMCACHE_CREATEDESTINATIONL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Opens a connection method with given ID (if not already opened), then
+// creates and passes an instance of it to the caller.
+// If aDestinationInstance is not NULL, connection method is opened from
+// destination.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::OpenConnMethodL(
+        CCmmConnMethodInstance& aConnMethodInstance,
+        CCmmDestinationInstance* aDestinationInstance,
+        const TUint32& aConnMethodId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_OPENCONNMETHODL_ENTRY );
+
+    // Check connection method ID.
+    TBool validAttributes( EFalse );
+    if ( !aDestinationInstance )
+        {
+        // Check connection method exists in database.
+        validAttributes = iInstanceMapping->ValidConnMethodId( aConnMethodId ); // Embedded destinations not included.
+        }
+    else
+        {
+        // Check connection method is inside the destination.
+        if ( aDestinationInstance->ValidConnMethodIdInDestinationIncludeEmbedded( aConnMethodId ) )
+            {
+            // Check connection method (can be embedded destination too) exists in database.
+            if ( iInstanceMapping->ValidConnMethodId( aConnMethodId ) ||
+                    iInstanceMapping->ValidDestinationId( aConnMethodId ) )
+                {
+                validAttributes = ETrue;
+                }
+            }
+       }
+    if ( !validAttributes )
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    // Create the connection method instance.
+
+    // Check if connection method is already opened in cache.
+    TInt index = FindConnMethodFromCache( aConnMethodId );
+    if ( index != KErrNotFound )
+        {
+        // Already open in cache. Copy the connection method data to session
+        // instance.
+        aConnMethodInstance.CopyDataL( iConnMethodArray[index] ); // Will increase reference counter.
+        }
+    else
+        {
+        // Not yet open in cache, open now.
+        OpenConnectionMethodInstanceL( aConnMethodInstance, aConnMethodId );
+        }
+
+    OstTraceFunctionExit0( CCMMCACHE_OPENCONNMETHODL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Refresh the data contained in aConnMethodInstance. This means reloading the
+// data from database if necessary. After this call the contents of
+// aConnMethodInstance will reflect the current state in the database. 
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::RefreshConnMethodL( CCmmConnMethodInstance& aConnMethodInstance )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_REFRESHCONNMETHODL_ENTRY );
+
+    //TODO, what to do with embedded?
+
+    TInt index = FindConnMethodFromCache( aConnMethodInstance.GetId() );
+    if ( index == KErrNotFound )
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    // If this connection method is a newly created one that doesn't yet exist
+    // in database, just return silently.
+    if ( iConnMethodArray[index]->GetStatus() == ECmmConnMethodStatusNotSaved )
+        {
+        OstTraceFunctionExit0( CCMMCACHE_REFRESHCONNMETHODL_EXIT );
+        return;
+        }
+
+    iConnMethodArray[index]->RefreshConnMethodInstanceL( aConnMethodInstance );
+
+    OstTraceFunctionExit0( DUP1_CCMMCACHE_REFRESHCONNMETHODL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Creates a new connection method (not embedded destinations) into database
+// with the given bearer type and optionally ID, then creates and passes an
+// instance of it to the caller.
+// If destination instance is provided (not NULL), connection method is
+// created in that destination.
+// If connection method ID is provided, it's availability is verified.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::CreateConnMethodL(
+        CCmmConnMethodInstance& aConnMethodInstance,
+        CCmmDestinationInstance* aDestinationInstance,
+        const TUint32& aBearerType,
+        const TUint32& aConnMethodId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_CREATECONNMETHODL_ENTRY );
+
+    // Check that the bearer type is not embedded destination.
+    if ( aBearerType == KUidEmbeddedDestination )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TUint32 connMethodId( aConnMethodId );
+    if ( aConnMethodId )
+        {
+        // Check if a connection method with given ID exists (or is already
+        // created but not saved).
+        if ( iInstanceMapping->ValidConnMethodId( aConnMethodId ) ||
+                ConnMethodOpenWithId( aConnMethodId ) )
+            {
+            User::Leave( KErrAlreadyExists );
+            }
+        }
+    else
+        {
+        // Use a temporary ID until a real one is received from database.
+        connMethodId = NextFreeTemporaryId();
+        }
+
+
+    // Check bearer type support and create plugin instance.
+    CCmPluginBaseEng* plugin = NULL;
+    for ( TInt i = 0; i < iPlugins->Count(); i++ )
+        {
+        if ( ( *iPlugins )[i]->GetBearerInfoIntL( CMManager::ECmBearerType ) == aBearerType )
+            {
+            TCmPluginInitParam pluginParams( Session() );
+            plugin = ( *iPlugins )[i]->CreateInstanceL( pluginParams );
+            CleanupStack::PushL( plugin );
+            plugin->CreateNewL( aConnMethodId ); // Use aConnMethodId here, so ID is either a real ID or 0.
+            break;
+            }
+        }
+    if ( !plugin )
+        {
+        User::Leave( KErrArgument );
+        }
+
+
+    // Store the connection method into cache.
+    CCmmConnMethodStruct* connMethodStruct = CCmmConnMethodStruct::NewLC( connMethodId ); // Use connMethodId here, so ID is either a real ID or a temporary ID.
+    connMethodStruct->SetPlugin( plugin, aBearerType, ECmmConnMethodStatusNotSaved );
+    iConnMethodArray.AppendL( connMethodStruct );
+    CleanupStack::Pop( connMethodStruct );
+    CleanupStack::Pop( plugin ); //TODO, pop after SetPlugin()-call?
+
+    // Copy the connection method data to session instance.
+    aConnMethodInstance.CopyDataL( connMethodStruct ); // Will increase reference counter.
+
+
+    if ( aDestinationInstance )
+        {
+        // Add connection method to destination.
+        aDestinationInstance->AddConnMethodL( aConnMethodInstance );
+        }
+    OstTraceFunctionExit0( CCMMCACHE_CREATECONNMETHODL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Creates a new connection method into cache as a copy of an existing
+// connection method (exists in cache, not necessarily in database), and opens
+// a client side handle to it. The new connection method will get a new ID when
+// updated to database.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::CreateCopyOfConnMethodL(
+        CCmmConnMethodInstance& aNewConnMethodInstance,
+        CCmmConnMethodInstance& aConnMethodInstance )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_CREATECOPYOFCONNMETHODL_ENTRY );
+
+    // Check bearer type support and create plugin instance.
+    TInt index = FindConnMethodFromCache( aConnMethodInstance.GetId() );
+    if ( index == KErrNotFound )
+        {
+        User::Leave( index );
+        }
+
+    CCmPluginBaseEng* plugin = iConnMethodArray[index]->GetPlugin();
+    if ( !plugin )
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    CCmPluginBaseEng* pluginCopy = plugin->CreateCopyL( aConnMethodInstance.GetPluginDataInstance() );
+    CleanupStack::PushL( pluginCopy );
+
+    // Store the connection method into cache.
+    CCmmConnMethodStruct* connMethodStruct = CCmmConnMethodStruct::NewLC( NextFreeTemporaryId() );
+    connMethodStruct->SetPlugin( pluginCopy, aConnMethodInstance.GetBearerType(), ECmmConnMethodStatusNotSaved );
+    iConnMethodArray.AppendL( connMethodStruct );
+    CleanupStack::Pop( connMethodStruct );
+    CleanupStack::Pop( pluginCopy ); //TODO, pop after SetPlugin()-call?
+
+    // Copy the connection method data to session instance.
+    aNewConnMethodInstance.CopyDataL( connMethodStruct ); // Will increase reference counter.
+
+    OstTraceFunctionExit0( CCMMCACHE_CREATECOPYOFCONNMETHODL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Re-loads a destination record if needed and copies the latest version to
+// the session instance given as parameter.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::LoadDestinationRecordL(
+        CCmmDestinationInstance& aDestinationInstance,
+        TCmmDbRecords aDestRecordType )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_LOADDESTINATIONRECORDL_ENTRY );
+
+    TUint32 id = aDestinationInstance.GetId();
+    // If ID is not in the valid range, it means the destination is a newly
+    // created one, and doesn't yet exist in database. Thus, record data exists
+    // only in session side and can't be loaded from cache. So this is an error.
+    if ( id >= KTemporaryIdCounterStart )
+        {
+        User::Leave( KErrCorrupt );
+        }
+    TInt index = FindDestinationFromCache( id );
+    if ( index < 0 )
+        {
+        User::Leave( index );
+        }
+
+    iDestinationArray[index]->LoadRecordL( aDestinationInstance, aDestRecordType );
+
+    OstTraceFunctionExit0( CCMMCACHE_LOADDESTINATIONRECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Saves the modifications in aDestinationInstance into the database. Also all
+// connection methods inside this destination are updated (including any
+// embedded destination).
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::UpdateDestinationL( CCmmDestinationInstance& aDestinationInstance )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_UPDATEDESTINATIONL_ENTRY );
+
+    // Arrays to temporarily store information of updated destinations and
+    // connection methods. Used to update status and ID information after
+    // successful commit to database.
+    if ( iTrans->GetReferenceCount() == 0 )
+        {
+        iDeletedConnMethods.Reset();
+        iUpdatedConnMethods.Reset();
+        iUpdatedConnMethods2.Reset();
+        iUpdatedDestinations.Reset();
+        iUpdatedDestinations2.Reset();
+        }
+
+    TInt index = FindDestinationFromCache( aDestinationInstance.GetId() );
+    if ( index < 0 )
+        {
+        User::Leave( index );
+        }
+
+    iTrans->OpenTransactionLC();
+
+    // Check that the connection methods marked for deletion can be deleted.
+    for ( TInt i = 0; i < aDestinationInstance.iConnMethodsToBeDeleted.Count(); i++ )
+        {
+        TUint32 id = aDestinationInstance.iConnMethodsToBeDeleted[i];
+
+        // Remove connection method from delete list if ID is not valid or if
+        // referenced from any other destination (in database or in any other
+        // client-side destination handles).
+        if ( !iInstanceMapping->ValidConnMethodId( id ) ||
+                iInstanceMapping->ConnMethodInOtherDestination( id, aDestinationInstance.GetId() ) ||
+                aDestinationInstance.ConnMethodInOtherDestinationInSession( id, 0 ) )
+            {
+            aDestinationInstance.iConnMethodsToBeDeleted.Remove( i );
+            i--; // Adjust array index counter.
+            }
+        else if ( iInstanceMapping->ConnMethodPointedToByVirtualIap( id ) )
+            {
+            aDestinationInstance.iConnMethodsToBeDeleted.Remove( i );
+            User::Leave( KErrLocked );
+            }
+        else if ( CheckIfCmConnected( id ) )
+            {
+            User::Leave( KErrInUse );
+            }
+        }
+    // Delete connection methods marked for deletion.
+    for ( TInt i = 0; i < aDestinationInstance.iConnMethodsToBeDeleted.Count(); i++ )
+        {
+        DeleteConnMethodAsPartOfDestinationUpdateL(
+                aDestinationInstance.iConnMethodsToBeDeleted[i] );
+        }
+
+    // Update the connection methods inside this destination.
+    for ( TInt i = 0; i < aDestinationInstance.iConnMethodItemArray.Count(); i++ )
+        {
+        if ( aDestinationInstance.iConnMethodItemArray[i].iBearerType == KUidEmbeddedDestination )
+            {
+            // Embedded destination.
+
+            //TODO, Maybe check other restrictions on embedded destination.
+            // - Only one embedded destination per destination. Check.
+            // - No embedded destinations in embedded destination. Check.
+
+            TUint32 id( aDestinationInstance.iConnMethodItemArray[i].iId );
+            CCmmDestinationInstance* destinationInstance =
+                    aDestinationInstance.FindDestinationInstanceFromSessionById( id );
+
+            if ( destinationInstance )
+                {
+                // Client has a handle open to this destination, update it.
+                destinationInstance->UpdateL();
+                }
+            else
+                {
+                // TODO: Or, should we update the embedded destination if the
+                // client has an open handle to any of the embedded
+                // destinations connection methods.
+                //
+                // Skip update since client doesn't have an open handle to this
+                // destination.
+                if ( id >= KTemporaryIdCounterStart || !iInstanceMapping->ValidDestinationId( id ) )
+                    {
+                    // Remove destination item from array if:
+                    // - New destination, but client has already closed the handle for it.
+                    // - Destination ID was valid before, but it does not exist anymore.
+                    aDestinationInstance.iConnMethodItemArray.Remove( i );
+                    i--; // Adjust array index counter.
+                    }
+                }
+            }
+        else
+            {
+            TBool temporaryConnMethodInstance( EFalse );
+            TBool connMethodProtectionMustBeSet( EFalse );
+            TBool cmProtected( EFalse );
+
+            TUint32 id( aDestinationInstance.iConnMethodItemArray[i].iId );
+            CCmmConnMethodInstance* connMethodInstance =
+                    aDestinationInstance.FindConnMethodInstanceFromSessionById( id );
+
+            if ( !connMethodInstance )
+                {
+                // Remove connection method item from the array if it is a new
+                // connection method but client has already closed the handle
+                // for it, or the connection method ID was valid before but
+                // does not exist anymore.
+                if ( id >= KTemporaryIdCounterStart || !iInstanceMapping->ValidConnMethodId( id ) )
+                    {
+                    aDestinationInstance.iConnMethodItemArray.Remove( i );
+                    i--; // Adjust array index counter.
+                    continue; // Jump to next connection method.
+                    }
+                }
+
+            if ( aDestinationInstance.ProtectionChanged() )
+                {
+                // Check if the connection method protection level needs to be set.
+                switch ( aDestinationInstance.CurrentProtectionLevel() )
+                    {
+                    case CMManager::EProtLevel0:
+                    case CMManager::EProtLevel2:
+                        {
+                        if ( aDestinationInstance.LastProtectionLevel() == CMManager::EProtLevel1 ||
+                                aDestinationInstance.LastProtectionLevel() == CMManager::EProtLevel3 )
+                            {
+                            connMethodProtectionMustBeSet = ETrue;
+                            cmProtected = EFalse;
+                            }
+                        }
+                        break;
+                    case CMManager::EProtLevel1:
+                    case CMManager::EProtLevel3:
+                        {
+                        connMethodProtectionMustBeSet = ETrue;
+                        cmProtected = ETrue;
+                        }
+                        break;
+                    default:
+                        break;
+                    }
+                }
+
+            if ( connMethodProtectionMustBeSet && !connMethodInstance )
+                {
+                // Client doesn't have an open handle to this connection method,
+                // but it still needs to be updated because the destination's
+                // protection level has been changed in such a way that
+                // requires a change in all contained connection methods also.
+                temporaryConnMethodInstance = ETrue;
+                connMethodInstance = CCmmConnMethodInstance::NewLC( NULL, this );
+                OpenConnMethodL( *connMethodInstance, NULL, id );
+
+                // Read current protection level.
+                TBool current = connMethodInstance->GetBoolAttributeL( CMManager::ECmProtected );
+                if ( cmProtected == current )
+                    {
+                    // If the connection method already has the correct
+                    // protection setting, skip the unnecessary update.
+                    connMethodProtectionMustBeSet = EFalse;
+                    temporaryConnMethodInstance = EFalse;
+                    CleanupStack::PopAndDestroy( connMethodInstance );
+                    connMethodInstance = NULL;
+                    }
+                }
+
+            // Update the connection method.
+            if ( connMethodInstance )
+                {
+                if ( connMethodProtectionMustBeSet )
+                    {
+                    connMethodInstance->SetBoolAttributeL( CMManager::ECmProtected, cmProtected );
+                    }
+                connMethodInstance->UpdateL( temporaryConnMethodInstance );
+                }
+
+            // Cleanup connection method handle, if it was temporary.
+            if ( temporaryConnMethodInstance )
+                {
+                CleanupStack::PopAndDestroy( connMethodInstance );
+                }
+            connMethodInstance = NULL;
+            }
+        }
+    // All connection methods requiring update in the destination should have
+    // been updated to database now.
+
+    iDestinationArray[index]->UpdateL( aDestinationInstance, this );
+    iTrans->CommitTransactionL();
+
+    TCmmIdStruct idStruct( iDestinationArray[index]->GetRealId(), 0 );
+    if ( aDestinationInstance.GetId() >= KTemporaryIdCounterStart )
+        {
+        idStruct.iTemporaryId = aDestinationInstance.GetId();
+        }
+    iUpdatedDestinations.AppendL( idStruct );
+    iUpdatedDestinations2.AppendL( &aDestinationInstance );
+
+    // Check transaction handler reference count.
+    if ( iTrans->GetReferenceCount() == 0 )
+        {
+        // Successful commit to database. Refresh instance mapping and all
+        // necessary status information.
+        for ( TInt i = 0; i < iUpdatedConnMethods.Count(); i++ )
+            {
+            aDestinationInstance.RefreshHandlesForAllSessions( iUpdatedConnMethods[i] );
+            }
+        for ( TInt i = 0; i < iUpdatedConnMethods2.Count(); i++ )
+            {
+            iUpdatedConnMethods2[i]->UpdateSuccessful();
+
+            TInt cacheIndex = FindConnMethodFromCache( iUpdatedConnMethods2[i]->GetId() );
+            if ( cacheIndex >= 0 )
+                {
+                iConnMethodArray[cacheIndex]->UpdateSuccessful();
+                }
+            }
+        for ( TInt i = 0; i < iDeletedConnMethods.Count(); i++ )
+            {
+            TInt cacheIndex = FindConnMethodFromCache( iDeletedConnMethods[i].iRealId );
+            if ( cacheIndex >= 0 )
+                {
+                aDestinationInstance.RefreshHandlesForAllSessions( iDeletedConnMethods[i] );
+                iConnMethodArray[cacheIndex]->SetStatus( ECmmConnMethodStatusToBeDeleted );
+                iInstanceMapping->AddConnMethodToDeletedListL( iDeletedConnMethods[i].iRealId );
+                }
+            }
+        for ( TInt i = 0; i < iUpdatedDestinations.Count(); i++ )
+            {
+            aDestinationInstance.RefreshHandlesForAllSessions( iUpdatedDestinations[i] );
+            }
+        for ( TInt i = 0; i < iUpdatedDestinations2.Count(); i++ )
+            {
+            iUpdatedDestinations2[i]->UpdateSuccessful();
+
+            TInt cacheIndex = FindDestinationFromCache( iUpdatedDestinations2[i]->GetId() );
+            if ( cacheIndex >= 0 )
+                {
+                iDestinationArray[cacheIndex]->UpdateSuccessful();
+                }
+            }
+        iDeletedConnMethods.Reset();
+        iUpdatedConnMethods.Reset();
+        iUpdatedConnMethods2.Reset();
+        iUpdatedDestinations.Reset();
+        iUpdatedDestinations2.Reset();
+
+        iInstanceMapping->RefreshL();
+        }
+
+    OstTraceFunctionExit0( CCMMCACHE_UPDATEDESTINATIONL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Saves the modifications in aConnMethodInstance into database.
+// The second attribute aTemporaryHandle must be true if the connection method
+// instance is only a temporary one created for the duration of this update
+// process only.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::UpdateConnMethodL(
+        CCmmConnMethodInstance& aConnMethodInstance,
+        TBool aTemporaryHandle )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_UPDATECONNMETHODL_ENTRY );
+
+    // Find connection method from cache.
+    TUint32 connMethodId( aConnMethodInstance.GetId() );
+    TInt index = FindConnMethodFromCache( connMethodId );
+    if ( index < 0 )
+        {
+        // Should never end up here.
+        User::Leave( index );
+        }
+
+    iTrans->OpenTransactionLC();
+    iConnMethodArray[index]->GetPlugin()->UpdateL( aConnMethodInstance.GetPluginDataInstance() );
+    iTrans->CommitTransactionL();
+
+    TCmmIdStruct idStruct( aConnMethodInstance.GetPluginDataInstance()->iIapId, 0 );
+    if ( connMethodId >= KTemporaryIdCounterStart )
+        {
+        idStruct.iTemporaryId = connMethodId;
+        }
+
+    if ( iTrans->GetReferenceCount() == 0 )
+        {
+        // Writing to database is completed, refresh instance mapping and all
+        // necessary status information.
+        iInstanceMapping->RefreshL();
+        aConnMethodInstance.RefreshHandlesForAllSessions( idStruct );
+        aConnMethodInstance.UpdateSuccessful();
+        iConnMethodArray[index]->UpdateSuccessful();
+        }
+    else
+        {
+        // Update request came from destination update. Add connection method
+        // information to temporary arrays so it's status information can be
+        // updated after successful commit to database.
+        iUpdatedConnMethods.AppendL( idStruct );
+        if ( !aTemporaryHandle )
+            {
+            // A temporary handle will be destroyed after update, and so won't
+            // need any status updates after commit.
+            iUpdatedConnMethods2.AppendL( &aConnMethodInstance );
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMCACHE_UPDATECONNMETHODL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Deletes the destination refered by aDestinationInstance from the database.
+// In case other sessions have open handles to the same destination, the status
+// is updated to deleted state, but it is not yet removed from database.
+// (ID must be kept reserved in commsdat until all handles are closed). The
+// same is done for the connection methods inside this destination.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::DeleteDestinationL( CCmmDestinationInstance& aDestinationInstance, TBool aForced )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_DELETEDESTINATIONL_ENTRY );
+
+    TUint32 destinationId( aDestinationInstance.GetId() );
+
+    // Array to temporarily store deleted connection method IDs. Status
+    // information for these connection methods is updated after successful
+    // commit to database.
+    iDeletedConnMethods.Reset();
+
+    // Find destination from cache.
+    TInt index = FindDestinationFromCache( destinationId );
+    if ( index == KErrNotFound )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    // If not forced, check if the destination is already marked to be deleted.
+    if ( !aForced && iDestinationArray[index]->GetStatus() == ECmmDestinationStatusToBeDeleted )
+        {
+        OstTraceFunctionExit0( CCMMCACHE_DELETEDESTINATIONL_EXIT );
+        return;
+        }
+
+    // Check if there are any additional handles open. If yes, can't delete
+    // detination from database just yet.
+    if ( iDestinationArray[index]->GetReferenceCount() <= 1 )
+        {
+        // No other client handles open to this destination.
+
+        // Get the connection methods in this destination, and then go through
+        // them removing those that can't be deleted.
+        RArray<TCmmConnMethodItem> connMethodArray;
+        CleanupClosePushL( connMethodArray );
+        if ( !aForced )
+            {
+            iInstanceMapping->GetConnMethodsFromDestinationL( destinationId, connMethodArray );
+            }
+        else
+            {
+            for ( TInt i = 0; i < aDestinationInstance.iConnMethodItemArray.Count() ; i++ )
+                {
+                connMethodArray.AppendL( aDestinationInstance.iConnMethodItemArray[i] );
+                }
+            }
+
+        // Remove embedded destination from list if found.
+        TInt count( connMethodArray.Count() );
+        if ( count )
+            {
+            if ( connMethodArray[count - 1].iBearerType == KUidEmbeddedDestination )
+                {
+                connMethodArray.Remove( count - 1 );
+                }
+            }
+        // Remove any connection method that belongs to any other destination.
+        for ( TInt i = 0; i < connMethodArray.Count(); i++ )
+            {
+            if ( iInstanceMapping->ConnMethodInOtherDestination( connMethodArray[i].iId, destinationId ) )
+                {
+                connMethodArray.Remove( i );
+                i--;
+                }
+            }
+        // Remove any connection method that has a virtual IAP pointing to it.
+        for ( TInt i = 0; i < connMethodArray.Count(); i++ )
+            {
+            if ( iInstanceMapping->ConnMethodPointedToByVirtualIap( connMethodArray[i].iId ) )
+                {
+                connMethodArray.Remove( i );
+                i--;
+                }
+            }
+
+        iTrans->OpenTransactionLC();
+
+        // Delete each connection method inside this destination.
+        for ( TInt i = 0; i < connMethodArray.Count(); i++ )
+            {
+            DeleteConnMethodAsPartOfDestinationDeleteL( connMethodArray[i].iId );
+            }
+
+        // Delete the destination.
+        iDestinationArray[index]->DeleteL();
+
+        iTrans->CommitTransactionL();
+        CleanupStack::PopAndDestroy( &connMethodArray );
+
+        for ( TInt i = 0; i < iDeletedConnMethods.Count(); i++ )
+            {
+            TInt index = FindConnMethodFromCache( iDeletedConnMethods[i].iRealId );
+            if ( index == KErrNotFound )
+                {
+                // No handles open to this deleted connection method, so it was
+                // removed from database. Remove it from instance mapping
+                // structures. Refreshing instance mapping would do the same,
+                // but more slowly.
+                iInstanceMapping->RemoveConnMethod( iDeletedConnMethods[i].iRealId );
+                }
+            else
+                {
+                // There is at least one handle open to this deleted connection
+                // method, so it still exists in database for now. Remove it
+                // from instance mapping structures and add it to the instance
+                // mapping's deleted list, so the connection method is ignored
+                // if refreshing structures from database. Also mark the
+                // connection method handle on cache side as 'to be deleted'.
+                //
+                // If the connection method is updated from another existing
+                // handle after this, the connection method is restored as
+                // uncategorized.
+                iInstanceMapping->AddConnMethodToDeletedListL( iDeletedConnMethods[i].iRealId );
+                aDestinationInstance.RefreshHandlesForAllSessions( iDeletedConnMethods[i] );
+                iConnMethodArray[index]->SetStatus( ECmmConnMethodStatusToBeDeleted );
+                }
+            }
+        iInstanceMapping->RemoveDestination( destinationId );
+        }
+    else
+        {
+        // There are additional client handles open to this destination. Mark
+        // the destination as 'to be deleted'. When the other handles are
+        // closed and reference count goes to 0, the destination will be
+        // removed from database.
+        // If the destination is updated from another existing handle after
+        // this, the destination is restored to normal.
+        iDestinationArray[index]->SetStatus( ECmmDestinationStatusToBeDeleted );
+        iInstanceMapping->AddDestinationToDeletedListL( destinationId );
+        }
+
+    // Update status for ALL related destination handles on client side to
+    // ECmmDestinationStatusChanged.
+    TCmmIdStruct idStruct( destinationId, 0 );
+    aDestinationInstance.RefreshHandlesForAllSessions( idStruct );
+
+    iDeletedConnMethods.Reset();
+    OstTraceFunctionExit0( DUP1_CCMMCACHE_DELETEDESTINATIONL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Deletes a connection method as part of destination delete operation. It is
+// already checked that the connection method given as parameter can be deleted
+// and a transaction is already open.
+// If there are client side handles open to the connection method, the
+// connection method is marked as deleted, but the actual database removal will
+// be done after the last handle is closed. Updating a connection method marked
+// as deleted (through an already open handle) will restore it.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::DeleteConnMethodAsPartOfDestinationDeleteL( const TUint32& aConnMethodId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_DELETECONNMETHODASPARTOFDESTINATIONDELETEL_ENTRY );
+
+    // Find connection method from cache side.
+    TInt index = FindConnMethodFromCache( aConnMethodId );
+    if ( index == KErrNotFound )
+        {
+        // There is no open handles to this connection method. Open a temporary
+        // handle and delete it.
+
+        // Find out the connection method bearer type.
+        TUint32 bearerType( 0 );
+        TInt err = iInstanceMapping->GetConnMethodBearerType( aConnMethodId, bearerType );
+        if ( err || bearerType == KUidEmbeddedDestination )
+            {
+            // If this is an embedded destination, or the bearer is not
+            // supported, skip. The connection method is simply removed from
+            // destination.
+            OstTraceFunctionExit0( CCMMCACHE_DELETECONNMETHODASPARTOFDESTINATIONDELETEL_EXIT );
+            return;
+            }
+
+        // Check bearer type support, create plugin instance and delete the
+        // connection method.
+        CCmPluginBaseEng* plugin = NULL;
+        for ( TInt i = 0; i < iPlugins->Count(); i++ )
+            {
+            if ( ( *iPlugins )[i]->GetBearerInfoIntL( CMManager::ECmBearerType ) == bearerType )
+                {
+                TCmPluginInitParam pluginParams( Session() );
+                plugin = ( *iPlugins )[i]->CreateInstanceL( pluginParams );
+                CleanupStack::PushL( plugin );
+
+                // Transaction is already open.
+                plugin->LoadL( aConnMethodId );
+                plugin->DeleteL();
+
+                CleanupStack::Pop( plugin );
+                break;
+                }
+            }
+        if ( !plugin )
+            {
+            // Skip, if bearer is unsupported. Connection method is simply
+            // removed from destination.
+            OstTraceFunctionExit0( DUP1_CCMMCACHE_DELETECONNMETHODASPARTOFDESTINATIONDELETEL_EXIT );
+            return;
+            }
+        delete plugin;
+        plugin = NULL;
+        }
+    else
+        {
+        // If the connection method is already open in cache side, we can't
+        // delete it from database just yet. It will only be marked as 'to be
+        // deleted' after a successful commit. When the other handles are
+        // closed and reference count goes to 0, the connection method will be
+        // removed from database.
+
+        // Check destination status in cache.
+        switch ( iConnMethodArray[index]->GetStatus() )
+            {
+            case ECmmConnMethodStatusNotSaved:
+                {
+                // The connection methods that are deleted with the destination
+                // are retrieved through instance mapping, so there can't be
+                // any newly created unsaved connection methods among them.
+                User::Leave( KErrCorrupt );
+                }
+                break;
+            case ECmmConnMethodStatusValid:
+                // Proceed.
+                break;
+            case ECmmConnMethodStatusToBeDeleted:
+                // Connection method has already been deleted.
+                return;
+            case ECmmConnMethodStatusChanged:
+            default:
+                {
+                ASSERT( 0 ); // Error, illegal status.
+                User::Leave( KErrCorrupt );
+                }
+                break;
+            }
+        }
+
+    // Add connection method ID to temporary array so it's status information
+    // can be updated after successful commit to database.
+    TCmmIdStruct idStruct( aConnMethodId, 0 );
+    iDeletedConnMethods.AppendL( idStruct );
+
+    OstTraceFunctionExit0( DUP2_CCMMCACHE_DELETECONNMETHODASPARTOFDESTINATIONDELETEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Deletes a connection method as part of destination update operation. It is
+// already checked that the connection method given as parameter can be deleted
+// and a transaction is already open.
+// If there are client side handles open to the connection method, the
+// connection method is marked as deleted, but the actual database removal will
+// be done after the last handle is closed. Updating a connection method marked
+// as deleted (through an already open handle) will restore it.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::DeleteConnMethodAsPartOfDestinationUpdateL(
+        const TUint32& aConnMethodId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_DELETECONNMETHODASPARTOFDESTINATIONUPDATEL_ENTRY );
+
+    // Find connection method from cache side. If not found, open a temporary handle.
+    TInt index = FindConnMethodFromCache( aConnMethodId );
+    if ( index == KErrNotFound )
+        {
+        // There are no open handles to this connection method. Open a
+        // temporary handle and delete it.
+
+        // Find out the connection method bearer type.
+        TUint32 bearerType( 0 );
+        TInt err = iInstanceMapping->GetConnMethodBearerType( aConnMethodId, bearerType );
+        if ( err || bearerType == KUidEmbeddedDestination )
+            {
+            // If this is an embedded destination, or the bearer is not
+            // supported, skip. The connection method is simply removed from
+            // destination.
+            OstTraceFunctionExit0( CCMMCACHE_DELETECONNMETHODASPARTOFDESTINATIONUPDATEL_EXIT );
+            return;
+            }
+
+        // Check bearer type support, create plugin instance and delete the connection method.
+        CCmPluginBaseEng* plugin = NULL;
+        for ( TInt i = 0; i < iPlugins->Count(); i++ )
+            {
+            if ( ( *iPlugins )[i]->GetBearerInfoIntL( CMManager::ECmBearerType ) == bearerType )
+                {
+                TCmPluginInitParam pluginParams( Session() );
+                plugin = ( *iPlugins )[i]->CreateInstanceL( pluginParams );
+                CleanupStack::PushL( plugin );
+                iTrans->OpenTransactionLC();
+
+                plugin->LoadL( aConnMethodId );
+                plugin->DeleteL();
+
+                iTrans->CommitTransactionL();
+                CleanupStack::Pop( plugin );
+                break;
+                }
+            }
+        if ( !plugin )
+            {
+            // Skip, if bearer is unsupported. Connection method is simply
+            // removed from destination.
+            OstTraceFunctionExit0( DUP1_CCMMCACHE_DELETECONNMETHODASPARTOFDESTINATIONUPDATEL_EXIT );
+            return;
+            }
+        delete plugin;
+        plugin = NULL;
+
+        // Destination update will refresh instance mapping anyway at the end,
+        // so no need to add this connection method to the temporary
+        // iDeletedConnMethods-array here.
+        }
+    else
+        {
+        // There is one or more open handles to this connection method. We
+        // can't delete it from database just yet. It will only be marked as
+        // 'to be deleted' after a successful commit. When the other handles
+        // are closed and reference count goes to 0, the connection method will
+        // be removed from database.
+
+        // Check connection method status.
+        switch ( iConnMethodArray[index]->GetStatus() )
+            {
+            case ECmmConnMethodStatusNotSaved:
+                {
+                // Destination update will not attempt to delete any non-valid
+                // connection methods.
+                User::Leave( KErrCorrupt );
+                }
+                break;
+            case ECmmConnMethodStatusValid:
+                // Proceed.
+                break;
+            case ECmmConnMethodStatusToBeDeleted:
+                // Connection method has already been deleted.
+                return;
+            case ECmmConnMethodStatusChanged:
+            default:
+                {
+                ASSERT( 0 ); // Error, illegal status.
+                User::Leave( KErrCorrupt );
+                }
+                break;
+            }
+        // Add connection method ID to temporary array so it's status
+        // information can be updated after successful commit to database.
+        TCmmIdStruct idStruct( aConnMethodId, 0 );
+        iDeletedConnMethods.AppendL( idStruct );
+        }
+
+    OstTraceFunctionExit0( DUP2_CCMMCACHE_DELETECONNMETHODASPARTOFDESTINATIONUPDATEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Basic connection method delete. Removes a connection method from any
+// destination it might belong to, and then deletes it.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::DeleteConnMethodL( CCmmConnMethodInstance& aConnMethodInstance )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMMCACHE_DELETECONNMETHODL_ENTRY );
+
+    TUint32 cmId = aConnMethodInstance.GetId();
+
+    // Find connection method from cache.
+    TInt index = FindConnMethodFromCache( cmId );
+    if ( index == KErrNotFound )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    // Check if the connection method is already deleted.
+    if ( iConnMethodArray[index]->GetStatus() == ECmmConnMethodStatusToBeDeleted )
+        {
+        OstTraceFunctionExit0( DUP1_CCMMCACHE_DELETECONNMETHODL_EXIT );
+        return;
+        }
+
+    // Check if there are any additional handles open. If yes, can't delete
+    // connection method from database just yet.
+    if ( iConnMethodArray[index]->GetReferenceCounter() <= 1 )
+        {
+        // No other client handles open to this connection method.
+
+        // Remove connection method from any destination in database and then delete it.
+        iTrans->OpenTransactionLC();
+        RemoveAllReferencesToConnMethodL( aConnMethodInstance );
+        iConnMethodArray[index]->GetPlugin()->DeleteL();
+        iTrans->CommitTransactionL();
+
+        // Update instance mapping to reflect the current database state, and
+        // notify any possible client handles for the changed destinations.
+        RArray<TUint32> changedDestinations;
+        iInstanceMapping->RemoveConnMethod( cmId, changedDestinations );
+        for ( TInt i = 0; i < changedDestinations.Count(); i++ )
+            {
+            TCmmIdStruct idStruct( changedDestinations[i], 0 );
+            aConnMethodInstance.RefreshHandlesForAllSessions( idStruct );
+            }
+        changedDestinations.Close();
+
+        // Set status for cache and client handles.
+        TUint32 newSecondaryId( NextFreeTemporaryId() );
+        aConnMethodInstance.DeleteSuccessful( newSecondaryId );
+        iConnMethodArray[index]->DeleteSuccessful( newSecondaryId );
+        }
+    else
+        {
+        // There are additional client handles open to this connection method.
+        // Mark the connection method as 'to be deleted' and remove it from any
+        // destinations in database. When the other handles are closed and
+        // reference count goes to 0, the connection method will be removed
+        // from database.
+        RemoveAllReferencesToConnMethodL( aConnMethodInstance );
+        iInstanceMapping->AddConnMethodToDeletedListL( cmId );
+        TCmmIdStruct idStruct( cmId, 0 );
+        aConnMethodInstance.RefreshHandlesForAllSessions( idStruct );
+        iConnMethodArray[index]->SetStatus( ECmmConnMethodStatusToBeDeleted );
+        }
+
+    OstTraceFunctionExit0( DUP2_CCMMCACHE_DELETECONNMETHODL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Check if the given ID belongs to a valid existing destination. Attribute
+// aId needs to be in the current valid range (0x1001 - 0x10FF atm).
+// ---------------------------------------------------------------------------
+//
+TBool CCmmCache::DestinationExistsWithId( const TUint32& aId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_DESTINATIONEXISTSWITHID_ENTRY );
+
+    TBool exists = iInstanceMapping->ValidDestinationId( aId );
+
+    OstTraceFunctionExit0( CCMMCACHE_DESTINATIONEXISTSWITHID_EXIT );
+    return exists;
+    }
+
+// ---------------------------------------------------------------------------
+// Check if the given name belongs to an existing destination.
+// If a destination ID is given, that destination is skipped.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmCache::DestinationExistsWithNameL( const TDesC& aName, const TUint32& aDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_DESTINATIONEXISTSWITHNAMEL_ENTRY );
+
+    TBool found( EFalse );
+
+    // Check AccessPoint-table.
+    CommsDat::CCDAccessPointRecord* destApRecord = static_cast<CommsDat::CCDAccessPointRecord*>(
+            CommsDat::CCDRecordBase::RecordFactoryL( CommsDat::KCDTIdAccessPointRecord ) );
+    CleanupStack::PushL( destApRecord );
+    destApRecord->iRecordName.SetL( aName );
+    if ( destApRecord->FindL( iTrans->Session() ) ) // Names should be unique.
+        {
+        if ( aDestinationId )
+            {
+            // Check the ID is different.
+            destApRecord->LoadL( iTrans->Session() );
+            if ( aDestinationId != destApRecord->iRecordTag )
+                {
+                found = ETrue;
+                }
+            }
+        else
+            {
+            found = ETrue;
+            }
+        }
+    CleanupStack::PopAndDestroy( destApRecord );
+
+    // Check also DataMobilitySelectionPolicy-table.
+    if ( !found )
+        {
+        CCDDataMobilitySelectionPolicyRecord* snapRecord =
+                new( ELeave ) CCDDataMobilitySelectionPolicyRecord(
+                        iCmManagerImpl->TableId( ECmmDbSnapRecord ) );
+        CleanupStack::PushL( snapRecord );
+        snapRecord->iRecordName.SetL( aName );
+        if ( snapRecord->FindL( iTrans->Session() ) ) // Names should be unique.
+            {
+            if ( aDestinationId )
+                {
+                // Check the ID is different.
+                snapRecord->LoadL( iTrans->Session() );
+                if ( aDestinationId != snapRecord->iSNAP )
+                    {
+                    found = ETrue;
+                    }
+                }
+            else
+                {
+                found = ETrue;
+                }
+            }
+        CleanupStack::PopAndDestroy( snapRecord );
+        }
+
+    OstTraceFunctionExit0( CCMMCACHE_DESTINATIONEXISTSWITHNAMEL_EXIT );
+
+    return found;
+    }
+
+// ---------------------------------------------------------------------------
+// Check if the given ID belongs to a destination that the cache has an open
+// handle on. This will include any destinations created by any client, that
+// are not yet saved to database.
+// With this check, we can prevent two clients from creating a new destination
+// with the same ID (The UpdateL() operation would fail for one of them anyway).
+// ---------------------------------------------------------------------------
+//
+TBool CCmmCache::DestinationOpenWithId( const TUint32& aId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_DESTINATIONOPENWITHID_ENTRY );
+
+    TBool result( EFalse );
+    TInt index = FindDestinationFromCache( aId );
+    if ( index != KErrNotFound )
+        {
+        result = ETrue;
+        }
+    OstTraceFunctionExit0( CCMMCACHE_DESTINATIONOPENWITHID_EXIT );
+
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// Check if the given name belongs to any new unsaved destinations in the
+// cache. This includes any destinations created byany client, that are not
+// yet saved to database.
+// If a destination ID is provided, the search will exclude the relevant
+// destination.
+// With this check, we can prevent two clients from creating a new destination
+// with the same name (The UpdateL() operation would fail for one of them
+// anyway).
+// ---------------------------------------------------------------------------
+//
+TBool CCmmCache::NotSavedDestinationOpenWithNameL(
+        const TDesC& aName,
+        const TUint32& aDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_NOTSAVEDDESTINATIONOPENWITHNAMEL_ENTRY );
+
+    TBool res( EFalse );
+    TInt index = FindNotSavedDestinationFromCacheL( aName, aDestinationId );
+    if ( index != KErrNotFound )
+        {
+        res = ETrue;
+        }
+    OstTraceFunctionExit0( CCMMCACHE_NOTSAVEDDESTINATIONOPENWITHNAMEL_EXIT );
+
+    return res;
+    }
+
+// ---------------------------------------------------------------------------
+// Check if the given ID belongs to a valid existing connection method.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmCache::ConnMethodExistsWithId( const TUint32& aConnMethodId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_CONNMETHODEXISTSWITHID_ENTRY );
+
+    TBool exists = iInstanceMapping->ValidConnMethodId( aConnMethodId );
+
+    OstTraceFunctionExit0( CCMMCACHE_CONNMETHODEXISTSWITHID_EXIT );
+
+    return exists;
+    }
+
+// ---------------------------------------------------------------------------
+// Check if the given ID belongs to a connection method that the cache has an
+// open handle on. This will include any connection methods created by any
+// client, that are not yet saved to database.
+// With this check, we can prevent two clients from creating a new connection
+// method with the same ID (The UpdateL() operation would fail for one of them
+// anyway).
+// ---------------------------------------------------------------------------
+//
+TBool CCmmCache::ConnMethodOpenWithId( const TUint32& aConnMethodId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_CONNMETHODOPENWITHID_ENTRY );
+
+    TBool result( EFalse );
+    TInt index = FindConnMethodFromCache( aConnMethodId );
+    if ( index != KErrNotFound )
+        {
+        result = ETrue;
+        }
+    OstTraceFunctionExit0( CCMMCACHE_CONNMETHODOPENWITHID_EXIT );
+
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// Checks if there are any destinations with metadata localization
+// (ESnapMetadataDestinationIsLocalised) set to aValue. Also checks the
+// relevant metadata purpose (ESnapMetadataPurpose) values.
+// The destination connected to parameter aDestinationInstance is skipped.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmCache::DestinationExistsWithMetadataLocalizedL(
+        CCmmDestinationInstance& aDestinationInstance,
+        const TUint32& aValue )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_DESTINATIONEXISTSWITHMETADATALOCALIZEDL_ENTRY );
+
+    TBool result( EFalse );
+
+    if ( aValue != CMManager::ENotLocalisedDest )
+        {
+        // Check there is no destination in database that already has the same
+        // localization metadata value. Also checks metadata purpose.
+        CommsDat::CMDBRecordSet<CCDSNAPMetadataRecord>* metaSet =
+                new( ELeave )CommsDat::CMDBRecordSet<CCDSNAPMetadataRecord>(
+                        iCmManagerImpl->TableId( ECmmDestMetadataRecord ) );
+        CleanupStack::PushL( metaSet );
+        TRAP_IGNORE( metaSet->LoadL( iTrans->Session() ) );
+        for ( TInt i = 0; i < metaSet->iRecords.Count(); i++ )
+            {
+            TInt id = ( ( CCDSNAPMetadataRecord* )metaSet->iRecords[i] )->iSNAP;
+            TUint32 metadata = ( ( CCDSNAPMetadataRecord* )metaSet->iRecords[i] )->iMetadata;
+            TUint32 localizationValue =
+                    ( metadata & CMManager::ESnapMetadataDestinationIsLocalised ) >> 4;
+            TUint32 purposeValue = ( metadata & CMManager::ESnapMetadataPurpose ) >> 8;
+
+            if ( aDestinationInstance.GetId() != id )
+                {
+                if ( aValue == localizationValue )
+                    {
+                    result = ETrue;
+                    }
+                switch ( aValue )
+                    {
+                    case CMManager::ELocalisedDestInternet:
+                        {
+                        if ( purposeValue == CMManager::ESnapPurposeInternet ||
+                                ( metadata & CMManager::ESnapMetadataInternet ) )
+                            {
+                            result = ETrue;
+                            }
+                        }
+                        break;
+                    case CMManager::ELocalisedDestWap:
+                        {
+                        if ( purposeValue == CMManager::ESnapPurposeOperator )
+                            {
+                            result = ETrue;
+                            }
+                        }
+                        break;
+                    case CMManager::ELocalisedDestMMS:
+                        {
+                        if ( purposeValue == CMManager::ESnapPurposeMMS )
+                            {
+                            result = ETrue;
+                            }
+                        }
+                        break;
+                    case CMManager::ELocalisedDestIntranet:
+                        {
+                        if ( purposeValue == CMManager::ESnapPurposeIntranet )
+                            {
+                            result = ETrue;
+                            }
+                        }
+                        break;
+                    default:
+                        break;
+                    }
+                }
+            }
+        CleanupStack::PopAndDestroy( metaSet );
+        }
+    OstTraceFunctionExit0( CCMMCACHE_DESTINATIONEXISTSWITHMETADATALOCALIZEDL_EXIT );
+
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// Checks if there are any destinations with metadata purpose
+// (ESnapMetadataPurpose) set to aValue. Also checks the relevant metadata
+// localization (ESnapMetadataDestinationIsLocalised) values.
+// The destination connected to parameter aDestinationInstance is skipped.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmCache::DestinationExistsWithMetadataPurposeL(
+        CCmmDestinationInstance& aDestinationInstance,
+        const TUint32& aValue )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_DESTINATIONEXISTSWITHMETADATAPURPOSEL_ENTRY );
+
+    TBool result( EFalse );
+
+    if ( aValue != CMManager::ESnapPurposeUnknown )
+        {
+        // Check there is no destination in database that already has the same
+        // metadata purpose value. Also checks localization metadata.
+        CommsDat::CMDBRecordSet<CCDSNAPMetadataRecord>* metaSet =
+                new( ELeave )CommsDat::CMDBRecordSet<CCDSNAPMetadataRecord>(
+                        iCmManagerImpl->TableId( ECmmDestMetadataRecord ) );
+        CleanupStack::PushL( metaSet );
+        TRAP_IGNORE( metaSet->LoadL( iTrans->Session() ) );
+        for ( TInt i = 0; i < metaSet->iRecords.Count(); i++ )
+            {
+            TInt id = ( ( CCDSNAPMetadataRecord* )metaSet->iRecords[i] )->iSNAP;
+            TUint32 metadata = ( ( CCDSNAPMetadataRecord* )metaSet->iRecords[i] )->iMetadata;
+            TUint32 localizationValue =
+                    ( metadata & CMManager::ESnapMetadataDestinationIsLocalised ) >> 4;
+            TUint32 purposeValue = ( metadata & CMManager::ESnapMetadataPurpose ) >> 8;
+
+            if ( aDestinationInstance.GetId() != id )
+                {
+                if ( aValue == purposeValue )
+                    {
+                    result = ETrue;
+                    }
+                switch ( aValue )
+                    {
+                    case CMManager::ESnapPurposeInternet:
+                        {
+                        if ( localizationValue == CMManager::ELocalisedDestInternet ||
+                                ( metadata & CMManager::ESnapMetadataInternet ) )
+                            {
+                            result = ETrue;
+                            }
+                        }
+                        break;
+                    case CMManager::ESnapPurposeOperator:
+                        {
+                        if ( localizationValue == CMManager::ELocalisedDestWap )
+                            {
+                            result = ETrue;
+                            }
+                        }
+                        break;
+                    case CMManager::ESnapPurposeMMS:
+                        {
+                        if ( localizationValue == CMManager::ELocalisedDestMMS )
+                            {
+                            result = ETrue;
+                            }
+                        }
+                        break;
+                    case CMManager::ESnapPurposeIntranet:
+                        {
+                        if ( localizationValue == CMManager::ELocalisedDestIntranet )
+                            {
+                            result = ETrue;
+                            }
+                        }
+                        break;
+                    default:
+                        break;
+                    }
+                }
+            }
+        CleanupStack::PopAndDestroy( metaSet );
+        }
+    OstTraceFunctionExit0( CCMMCACHE_DESTINATIONEXISTSWITHMETADATAPURPOSEL_EXIT );
+
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// Tells the cache that a database table has changed. If the SNAP/IAP structure
+// has possibly changed, the cache will refresh that information immediately.
+// For other database tables, the tables are flagged and will be refreshed when
+// needed.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::DbChangeDetected( const TUint32& aTableId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_DBCHANGEDETECTED_ENTRY );
+
+    (void)aTableId; //TODO
+    // Flag the table as: currently not up-to-date
+    OstTraceFunctionExit0( CCMMCACHE_DBCHANGEDETECTED_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Tells the cache that an error has occured with a database listener. Any
+// reads to this table need go through the database, since cache can't know if
+// it has up-to-date information.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::DbChangeError( const TUint32& aTableId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_DBCHANGEERROR_ENTRY );
+
+    (void)aTableId; //TODO
+    // Flag the table as: permanently not up-to-date
+    OstTraceFunctionExit0( CCMMCACHE_DBCHANGEERROR_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Tells the cache that a hadle to a destination was closed. The cache will
+// decrement the related reference counter and perform any cleanup if necessary.
+// This should be called automatically from the destructor of
+// CCmmDestinationInstance-class.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::CloseDestination( CCmmDestinationInstance& aDestinationInstance )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_CLOSEDESTINATION_ENTRY );
+
+    TInt index = FindDestinationFromCache( aDestinationInstance.GetId() );
+
+    if ( index >= 0 )
+        {
+        TInt remainingSessionInstances = iDestinationArray[index]->SessionInstanceClosed();
+        if ( remainingSessionInstances <= 0)
+            {
+            // If status is 'to be deleted', then the last handle keeping this
+            // destination 'alive' was closed and it can now be deleted from
+            // database.
+            if ( iDestinationArray[index]->GetStatus() == ECmmDestinationStatusToBeDeleted )
+                {
+                // Delete the destination unless an active connection is using
+                // one of it's connection methods.
+                TRAP_IGNORE( DeleteDestinationForcedL( aDestinationInstance ) );
+                        //{
+                        //if ( !DestinationConnectedL( aDestinationInstance.GetId() ) ) DeleteDestinationL( aDestinationInstance, ETrue );
+                        //} ); //TODO, make helper function
+
+                // Destination is now removed from database. Tell instance
+                // mapping to stop ignoring the related ID.
+                iInstanceMapping->RemoveDestinationFromDeletedList( aDestinationInstance.GetId() );
+                }
+
+            // No more references, no client has an open handle to this, delete it.
+            delete iDestinationArray[index];
+            iDestinationArray.Remove( index );
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMCACHE_CLOSEDESTINATION_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Tells the cache that a hadle to a connection method was closed. The cache
+// will decrement the related reference counter and perform any cleanup if
+// necessary.
+// This should be called automatically from the destructor of
+// CCmmConnMethodInstance-class.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::CloseConnMethod( CCmmConnMethodInstance& aConnMethodInstance )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_CLOSECONNMETHOD_ENTRY );
+
+    TInt index = FindConnMethodFromCache( aConnMethodInstance.GetId() );
+
+    if ( index >= 0 )
+        {
+        TInt remainingSessionInstances = iConnMethodArray[index]->SessionInstanceClosed();
+        if ( remainingSessionInstances <= 0 )
+            {
+            // If status is 'to be deleted', then the last handle keeping this
+            // connection method 'alive' was closed and it can now be deleted
+            // from database.
+            if ( iConnMethodArray[index]->GetStatus() == ECmmConnMethodStatusToBeDeleted )
+                {
+                // Can't remove a connection method that is in use.
+                if ( !CheckIfCmConnected( aConnMethodInstance.GetId() ) )
+                    {
+                    // Can't leave here.
+                    TRAP_IGNORE( DeletePluginL( *( iConnMethodArray[index] ) ) );
+                    }
+
+                // Connection method is now removed from database. Tell
+                // instance mapping to stop ignoring the related ID.
+                iInstanceMapping->RemoveConnMethodFromDeletedList( aConnMethodInstance.GetId() );
+                }
+
+            // No more references, no client has an open handle to this, delete it.
+            delete iConnMethodArray[index];
+            iConnMethodArray.Remove( index );
+            }
+        }
+    OstTraceFunctionExit0( CCMMCACHE_CLOSECONNMETHOD_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// Returns a reference to the CommsDat session.
+//-----------------------------------------------------------------------------
+//
+CommsDat::CMDBSession& CCmmCache::Session() const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_SESSION_ENTRY );
+
+    return iTrans->Session();
+    }
+
+//-----------------------------------------------------------------------------
+// Finds out the bearer type and priority of the service type from given IAP
+// record.
+//-----------------------------------------------------------------------------
+//
+void CCmmCache::BearerInfoFromIapRecordL(
+        CommsDat::CCDIAPRecord* aIapRecord,
+        TUint32& aBearerType,
+        TUint& aBearerPriority ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_BEARERINFOFROMIAPRECORDL_ENTRY );
+
+    // Load the IAP record from IAP table. This is an optimization that plugins
+    // doesn't have to do it every time the CanHandleIapIdL() is called.
+    aIapRecord->LoadL( Session() );
+    BearerPriorityFromIapRecordL( aIapRecord, aBearerPriority );
+    BearerTypeFromIapRecordL( aIapRecord, aBearerType );
+
+    OstTraceFunctionExit0( CCMMCACHE_BEARERINFOFROMIAPRECORDL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// Finds out the priority of the service type in given IAP record.
+//-----------------------------------------------------------------------------
+//
+void CCmmCache::BearerPriorityFromIapRecordL(
+        CommsDat::CCDIAPRecord* aIapRecord,
+        TUint& aBearerPriority ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_BEARERPRIORITYFROMIAPRECORDL_ENTRY );
+
+    aBearerPriority = CMManager::KDataMobilitySelectionPolicyPriorityWildCard;
+    if ( !aIapRecord->iServiceType.IsNull() )
+        {
+        aBearerPriority = iBearerPriorityCache->GetPriority( aIapRecord->iServiceType.GetL() );
+        }
+
+    OstTraceFunctionExit0( CCMMCACHE_BEARERPRIORITYFROMIAPRECORDL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// Finds out the bearer type of a connection method from given IAP record.
+//-----------------------------------------------------------------------------
+//
+void CCmmCache::BearerTypeFromIapRecordL(
+        CommsDat::CCDIAPRecord* aIapRecord,
+        TUint32& aBearerType ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_BEARERTYPEFROMIAPRECORDL_ENTRY );
+
+    TInt err( KErrNone );
+    TUint32 extLevel( 0 );
+    TBool canHandle( EFalse );
+
+    TInt foundIndex( KErrNotFound );
+
+    // Check which bearer handles the given IAP ID.
+    for ( TInt i = 0; i < iPlugins->Count(); i++ )
+        {
+        TRAP( err, canHandle = (*iPlugins)[i]->CanHandleIapIdL( aIapRecord ) ); //TODO, check leave, trap needed?
+        if ( !err && canHandle )
+            {
+            TUint32 thisExtLevel = (*iPlugins)[i]->GetBearerInfoIntL( ECmExtensionLevel );
+            if ( extLevel < thisExtLevel )
+                {
+                extLevel = thisExtLevel;
+                foundIndex = i;
+                }
+            }
+        }
+    if ( foundIndex == KErrNotFound )
+        {
+        // No supporting plugin found.
+        User::Leave( KErrNotSupported );
+        }
+    aBearerType = (*iPlugins)[foundIndex]->GetBearerInfoIntL( CMManager::ECmBearerType );
+
+    OstTraceFunctionExit0( CCMMCACHE_BEARERTYPEFROMIAPRECORDL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// Returns all conenction method IDs. Unsupported connection methods are
+// included if aCheckBearerType is set to EFalse.
+//-----------------------------------------------------------------------------
+//
+void CCmmCache::GetAllConnMethodsL(
+        RArray<TUint32>& aConnMethodArray,
+        TBool aCheckBearerType ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_GETALLCONNMETHODSL_ENTRY );
+
+    iInstanceMapping->GetAllConnMethodsL( aConnMethodArray, aCheckBearerType );
+
+    OstTraceFunctionExit0( CCMMCACHE_GETALLCONNMETHODSL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// Returns the number of destinations the provided connection method belongs to.
+//-----------------------------------------------------------------------------
+//
+TInt CCmmCache::DestinationsContainingConnMethod( const TUint32& aConnMethodId ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_CONNMETHODREFERENCECOUNT_ENTRY );
+
+    TInt count = iInstanceMapping->DestinationsContainingConnMethod( aConnMethodId );
+
+    OstTraceFunctionExit0( CCMMCACHE_CONNMETHODREFERENCECOUNT_EXIT );
+    return count;
+    }
+
+//-----------------------------------------------------------------------------
+// Return the EasyWLAN IAP ID, zero if not found or WLAN not supported.
+//-----------------------------------------------------------------------------
+//
+TUint32 CCmmCache::EasyWlanIdL() const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_EASYWLANIDL_ENTRY );
+
+    TUint32 easyWlanId = iInstanceMapping->EasyWlanIdL();
+
+    OstTraceFunctionExit0( CCMMCACHE_EASYWLANIDL_EXIT );
+    return easyWlanId;
+    }
+
+//-----------------------------------------------------------------------------
+// Check if WLAN is supported on phone.
+//-----------------------------------------------------------------------------
+//
+TBool CCmmCache::WlanSupported() const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_WLANSUPPORTED_ENTRY );
+
+    TBool supported = iCmManagerImpl->WlanSupported();
+
+    OstTraceFunctionExit0( CCMMCACHE_WLANSUPPORTED_EXIT );
+    return supported;
+    }
+
+//-----------------------------------------------------------------------------
+// Find out the internet destination ID. Set to 0 if not found.
+//-----------------------------------------------------------------------------
+//
+void CCmmCache::InternetDestinationIdL( TUint& aInternetDestinationId ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_INTERNETDESTINATIONIDL_ENTRY );
+
+    iInstanceMapping->InternetDestinationIdL( aInternetDestinationId );
+
+    OstTraceFunctionExit0( CCMMCACHE_INTERNETDESTINATIONIDL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// Return the number of destinations in database.
+//-----------------------------------------------------------------------------
+//
+TInt CCmmCache::GetDestinationCount() const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_GETDESTINATIONCOUNT_ENTRY );
+
+    TInt count = iInstanceMapping->GetDestinationCount();
+
+    OstTraceFunctionExit0( CCMMCACHE_GETDESTINATIONCOUNT_EXIT );
+    return count;
+    }
+
+//-----------------------------------------------------------------------------
+// Return an array containing all destination IDs.
+//-----------------------------------------------------------------------------
+//
+void CCmmCache::GetDestinationsL( RArray<TUint32>& aDestinationArray ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_GETDESTINATIONSL_ENTRY );
+
+    iInstanceMapping->GetDestinationsL( aDestinationArray );
+
+    OstTraceFunctionExit0( CCMMCACHE_GETDESTINATIONSL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// Returns all the valid connection methods under given destination.
+//-----------------------------------------------------------------------------
+//
+void CCmmCache::GetConnMethodsFromDestinationL(
+        const TUint32& aDestinationId,
+        RArray<TCmmConnMethodItem>& aConnMethodArray ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_GETCONNMETHODSFROMDESTINATIONL_ENTRY );
+
+    iInstanceMapping->GetConnMethodsFromDestinationL(
+            aDestinationId, aConnMethodArray );
+
+    OstTraceFunctionExit0( CCMMCACHE_GETCONNMETHODSFROMDESTINATIONL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// Copies the bearer priority array's contents to aArray.
+//-----------------------------------------------------------------------------
+//
+void CCmmCache::CopyBearerPriorityArrayL( RPointerArray<CCmmBearerPriority>& aArray ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_COPYBEARERPRIORITYARRAYL_ENTRY );
+
+    iBearerPriorityCache->CopyL( aArray );
+
+    OstTraceFunctionExit0( CCMMCACHE_COPYBEARERPRIORITYARRAYL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// Updates the bearer priority array with the contents of aArray.
+//-----------------------------------------------------------------------------
+//
+void CCmmCache::UpdateBearerPriorityArrayL( const RPointerArray<CCmmBearerPriority>& aArray )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_UPDATEBEARERPRIORITYARRAYL_ENTRY );
+
+    iBearerPriorityCache->UpdateL( aArray );
+
+    OstTraceFunctionExit0( CCMMCACHE_UPDATEBEARERPRIORITYARRAYL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// Check from database if the given connection method belongs to any other
+// destination than the one provided.
+//-----------------------------------------------------------------------------
+//
+TBool CCmmCache::ConnMethodInOtherDestination(
+        const TUint32& aConnMethodId,
+        const TUint32& aDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_CONNMETHODINOTHERDESTINATION_ENTRY );
+
+    TBool cmInOtherDestination = iInstanceMapping->
+            ConnMethodInOtherDestination( aConnMethodId, aDestinationId );
+
+    OstTraceFunctionExit0( CCMMCACHE_CONNMETHODINOTHERDESTINATION_EXIT );
+    return cmInOtherDestination;
+    }
+
+//-----------------------------------------------------------------------------
+// Get the next free temporary ID.
+//-----------------------------------------------------------------------------
+//
+TUint32 CCmmCache::NextFreeTemporaryId()
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_NEXTFREETEMPORARYID_ENTRY );
+
+    // Zero is not a valid ID.
+    if ( iCurrentTemporaryId == KMaxTUint32 )
+        {
+        //TODO, add flag to indicate a rollover has occured. after that need to check if temp ID is free before giving it out.
+
+        iCurrentTemporaryId = KTemporaryIdCounterStart;
+        }
+
+    iCurrentTemporaryId++;
+
+    OstTraceFunctionExit0( CCMMCACHE_NEXTFREETEMPORARYID_EXIT );
+    return iCurrentTemporaryId;
+    }
+
+//-----------------------------------------------------------------------------
+// Find an open destination matching the give ID from cache.
+// Returns either a valid array index or KErrNotFound.
+//-----------------------------------------------------------------------------
+//
+TInt CCmmCache::FindDestinationFromCache( const TUint32& aId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_FINDDESTINATIONFROMCACHE_ENTRY );
+
+    TInt result( KErrNotFound );
+
+    // Skip if ID is 0.
+    if ( aId )
+        {
+        for ( TInt i = 0; i < iDestinationArray.Count(); i++ )
+            {
+            if ( aId == iDestinationArray[i]->GetId() )
+                {
+                result = i;
+                break;
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMCACHE_FINDDESTINATIONFROMCACHE_EXIT );
+    return result;
+    }
+
+//-----------------------------------------------------------------------------
+// Find an open destination matching the given name from cache. If a destination
+// ID is provided, the search will exclude the relevant destination.
+// Returns either a valid array index or KErrNotFound.
+//-----------------------------------------------------------------------------
+//
+TInt CCmmCache::FindNotSavedDestinationFromCacheL( const TDesC& aName, const TUint32& aDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_FINDNOTSAVEDDESTINATIONFROMCACHEL_ENTRY );
+
+    TInt result( KErrNotFound );
+
+    // Go through destination array.
+    for ( TInt i = 0; i < iDestinationArray.Count(); i++ )
+        {
+        // Only check new destinations that are not yet in database.
+        if ( iDestinationArray[i]->GetStatus() == ECmmDestinationStatusNotSaved )
+            {
+            if ( aDestinationId )
+                {
+                if ( aDestinationId != iDestinationArray[i]->GetId() )
+                    {
+                    if ( !aName.Compare( iDestinationArray[i]->GetDestinationNameL() ) )
+                        {
+                        result = i;
+                        break;
+                        }
+                    }
+                }
+            else
+                {
+                if ( !aName.Compare( iDestinationArray[i]->GetDestinationNameL() ) )
+                    {
+                    result = i;
+                    break;
+                    }
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMCACHE_FINDNOTSAVEDDESTINATIONFROMCACHEL_EXIT );
+    return result;
+    }
+
+//-----------------------------------------------------------------------------
+// Find an open connection method matching the given ID from cache.
+// Returns either a valid array index or KErrNotFound.
+//-----------------------------------------------------------------------------
+//
+TInt CCmmCache::FindConnMethodFromCache( const TUint32& aConnMethodId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_FINDCONNMETHODFROMCACHE_ENTRY );
+
+    TInt result( KErrNotFound );
+
+    // Skip if ID is 0.
+    if ( aConnMethodId )
+        {
+        for ( TInt i = 0; i < iConnMethodArray.Count(); i++ )
+            {
+            if ( aConnMethodId == iConnMethodArray[i]->GetId() )
+                {
+                result = i;
+                break;
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMCACHE_FINDCONNMETHODFROMCACHE_EXIT );
+    return result;
+    }
+
+//-----------------------------------------------------------------------------
+// Loads and initializes a connection method instance.
+//-----------------------------------------------------------------------------
+//
+void CCmmCache::OpenConnectionMethodInstanceL(
+        CCmmConnMethodInstance& aConnMethodInstance,
+        const TUint32& aConnMethodId )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_OPENCONNECTIONMETHODINSTANCEL_ENTRY );
+
+    // Find out the connection method bearer type.
+    TUint32 bearerType( 0 );
+    User::LeaveIfError( iInstanceMapping->GetConnMethodBearerType( aConnMethodId, bearerType ) );
+
+    // Check bearer type support and create plugin instance.
+    CCmPluginBaseEng* plugin = NULL;
+    for ( TInt i = 0; i < iPlugins->Count(); i++ )
+        {
+        if ( ( *iPlugins )[i]->GetBearerInfoIntL( CMManager::ECmBearerType ) == bearerType )
+            {
+            TCmPluginInitParam pluginParams( Session() );
+            plugin = ( *iPlugins )[i]->CreateInstanceL( pluginParams );
+            CleanupStack::PushL( plugin );
+            plugin->LoadL( aConnMethodId );
+            break;
+            }
+        }
+    if ( !plugin )
+        {
+        User::Leave( KErrNotSupported );
+        }
+
+    // Store the connection method into cache.
+    CCmmConnMethodStruct* connMethodStruct = CCmmConnMethodStruct::NewLC( aConnMethodId );
+    connMethodStruct->SetPlugin( plugin, bearerType, ECmmConnMethodStatusValid );
+    iConnMethodArray.AppendL( connMethodStruct );
+    CleanupStack::Pop( connMethodStruct );
+    CleanupStack::Pop( plugin ); //TODO, pop after SetPlugin()-call?
+
+    // Copy the connection method data to session instance.
+    aConnMethodInstance.CopyDataL( connMethodStruct ); // Will increase reference counter.
+
+    OstTraceFunctionExit0( CCMMCACHE_OPENCONNECTIONMETHODINSTANCEL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// CCmmCache::GetConnectionMethodInfoIntL
+//-----------------------------------------------------------------------------
+//
+TUint32 CCmmCache::GetConnectionMethodInfoIntL(
+        const TUint32& aCmId,
+        const TUint32& aAttribute )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_GETCONNECTIONMETHODINFOINTL_ENTRY );
+
+    TUint32 retVal( 0 );
+
+    CCmmConnMethodInstance* cmInstance = CCmmConnMethodInstance::NewLC( NULL, this );
+
+    // Check if connection method is already opened in cache.
+    TInt index = FindConnMethodFromCache( aCmId );
+    if ( index != KErrNotFound )
+        {
+        // Already open in cache. Copy the connection method to session instance.
+        cmInstance->CopyDataL( iConnMethodArray[index] ); // Will increase reference counter.
+        }
+    else
+        {
+        OpenConnectionMethodInstanceL( *cmInstance, aCmId );
+        }
+
+    retVal = cmInstance->GetIntAttributeL( aAttribute );
+
+    CloseConnMethod( *cmInstance );
+    CleanupStack::PopAndDestroy( cmInstance );
+
+    OstTraceFunctionExit0( CCMMCACHE_GETCONNECTIONMETHODINFOINTL_EXIT );
+    return retVal;
+    }
+
+//-----------------------------------------------------------------------------
+// CCmmCache::GetConnectionMethodInfoBoolL
+//-----------------------------------------------------------------------------
+//
+TBool CCmmCache::GetConnectionMethodInfoBoolL(
+        const TUint32& aCmId,
+        const TUint32& aAttribute )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_GETCONNECTIONMETHODINFOBOOLL_ENTRY );
+
+    TBool retVal( EFalse );
+
+    CCmmConnMethodInstance* cmInstance = CCmmConnMethodInstance::NewLC( NULL, this );
+
+    // Check if connection method is already opened in cache.
+    TInt index = FindConnMethodFromCache( aCmId );
+    if ( index != KErrNotFound )
+        {
+        // Already open in cache. Copy the connection method to session instance.
+        cmInstance->CopyDataL( iConnMethodArray[index] ); // Will increase reference counter.
+        }
+    else
+        {
+        OpenConnectionMethodInstanceL( *cmInstance, aCmId );
+        }
+
+    retVal = cmInstance->GetBoolAttributeL( aAttribute );
+
+    CloseConnMethod( *cmInstance );
+    CleanupStack::PopAndDestroy( cmInstance );
+
+    OstTraceFunctionExit0( CCMMCACHE_GETCONNECTIONMETHODINFOBOOLL_EXIT );
+    return retVal;
+    }
+
+//-----------------------------------------------------------------------------
+// CCmmCache::GetConnectionMethodInfoStringL
+//-----------------------------------------------------------------------------
+//
+HBufC* CCmmCache::GetConnectionMethodInfoStringL(
+        const TUint32& aCmId,
+        const TUint32& aAttribute )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_GETCONNECTIONMETHODINFOSTRINGL_ENTRY );
+
+    HBufC* retVal( NULL );
+
+    CCmmConnMethodInstance* cmInstance = CCmmConnMethodInstance::NewLC( NULL, this );
+
+    // Check if connection method is already opened in cache.
+    TInt index = FindConnMethodFromCache( aCmId );
+    if ( index != KErrNotFound )
+        {
+        // Already open in cache. Copy the connection method to session instance.
+        cmInstance->CopyDataL( iConnMethodArray[index] ); // Will increase reference counter.
+        }
+    else
+        {
+        OpenConnectionMethodInstanceL( *cmInstance, aCmId );
+        }
+
+    retVal = cmInstance->GetStringAttributeL( aAttribute );
+
+    CloseConnMethod( *cmInstance );
+    CleanupStack::PopAndDestroy( cmInstance );
+
+    OstTraceFunctionExit0( CCMMCACHE_GETCONNECTIONMETHODINFOSTRINGL_EXIT );
+    return retVal;
+    }
+
+//-----------------------------------------------------------------------------
+// CCmmCache::GetConnectionMethodInfoString8L
+//-----------------------------------------------------------------------------
+//
+HBufC8* CCmmCache::GetConnectionMethodInfoString8L(
+        const TUint32& aCmId,
+        const TUint32& aAttribute )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_GETCONNECTIONMETHODINFOSTRING8L_ENTRY );
+
+    HBufC8* retVal( NULL );
+
+    CCmmConnMethodInstance* cmInstance = CCmmConnMethodInstance::NewLC( NULL, this );
+
+    // Check if connection method is already opened in cache.
+    TInt index = FindConnMethodFromCache( aCmId );
+    if ( index != KErrNotFound )
+        {
+        // Already open in cache. Copy the connection method to session instance.
+        cmInstance->CopyDataL( iConnMethodArray[index] ); // Will increase reference counter.
+        }
+    else
+        {
+        OpenConnectionMethodInstanceL( *cmInstance, aCmId );
+        }
+
+    retVal = cmInstance->GetString8AttributeL( aAttribute );
+
+    CloseConnMethod( *cmInstance );
+    CleanupStack::PopAndDestroy( cmInstance );
+
+    OstTraceFunctionExit0( CCMMCACHE_GETCONNECTIONMETHODINFOSTRING8L_EXIT );
+    return retVal;
+    }
+
+
+//-----------------------------------------------------------------------------
+// CCmmCache::GetBearerInfoIntL
+//-----------------------------------------------------------------------------
+//
+TUint32 CCmmCache::GetBearerInfoIntL(
+        const TUint32& aBearerType,
+        const TUint32& aAttribute )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_GETBEARERINFOINTL_ENTRY );
+
+    TUint32 retVal( 0 );
+    TBool found( EFalse );
+
+    for ( TInt i = 0; i < iPlugins->Count(); i++ )
+        {
+        if ( ( *iPlugins )[i]->GetBearerInfoIntL( CMManager::ECmBearerType ) == aBearerType )
+            {
+            found = ETrue;
+            retVal = ( *iPlugins )[i]->GetBearerInfoIntL( aAttribute );
+            break;
+            }
+        }
+    if ( !found )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    OstTraceFunctionExit0( CCMMCACHE_GETBEARERINFOINTL_EXIT );
+    return retVal;
+    }
+
+//-----------------------------------------------------------------------------
+// CCmmCache::GetBearerInfoBoolL
+//-----------------------------------------------------------------------------
+//
+TBool CCmmCache::GetBearerInfoBoolL(
+        const TUint32& aBearerType,
+        const TUint32& aAttribute )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_GETBEARERINFOBOOLL_ENTRY );
+
+    TBool retVal( EFalse );
+    TBool found( EFalse );
+
+    for ( TInt i = 0; i < iPlugins->Count(); i++ )
+        {
+        if ( ( *iPlugins )[i]->GetBearerInfoIntL( CMManager::ECmBearerType ) == aBearerType )
+            {
+            found = ETrue;
+            retVal = ( *iPlugins )[i]->GetBearerInfoBoolL( aAttribute );
+            break;
+            }
+        }
+    if ( !found )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    OstTraceFunctionExit0( CCMMCACHE_GETBEARERINFOBOOLL_EXIT );
+    return retVal;
+    }
+
+//-----------------------------------------------------------------------------
+// CCmmCache::GetBearerInfoStringL
+//-----------------------------------------------------------------------------
+//
+HBufC* CCmmCache::GetBearerInfoStringL(
+        const TUint32& aBearerType,
+        const TUint32& aAttribute )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_GETBEARERINFOSTRINGL_ENTRY );
+
+    HBufC* retVal( NULL );
+    TBool found( EFalse );
+
+    for ( TInt i = 0; i < iPlugins->Count(); i++ )
+        {
+        if ( ( *iPlugins )[i]->GetBearerInfoIntL( CMManager::ECmBearerType ) == aBearerType )
+            {
+            found = ETrue;
+            retVal = ( *iPlugins )[i]->GetBearerInfoStringL( aAttribute );
+            break;
+            }
+        }
+    if ( !found )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    OstTraceFunctionExit0( CCMMCACHE_GETBEARERINFOSTRINGL_EXIT );
+    return retVal;
+    }
+
+//-----------------------------------------------------------------------------
+// CCmmCache::GetBearerInfoString8L
+//-----------------------------------------------------------------------------
+//
+HBufC8* CCmmCache::GetBearerInfoString8L(
+        const TUint32& aBearerType,
+        const TUint32& aAttribute )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_GETBEARERINFOSTRING8L_ENTRY );
+
+    HBufC8* retVal( NULL );
+    TBool found( EFalse );
+
+    for ( TInt i = 0; i < iPlugins->Count(); i++ )
+        {
+        if ( ( *iPlugins )[i]->GetBearerInfoIntL( CMManager::ECmBearerType ) == aBearerType )
+            {
+            found = ETrue;
+            retVal = ( *iPlugins )[i]->GetBearerInfoString8L( aAttribute );
+            break;
+            }
+        }
+    if ( !found )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    OstTraceFunctionExit0( CCMMCACHE_GETBEARERINFOSTRING8L_EXIT );
+    return retVal;
+    }
+
+//-----------------------------------------------------------------------------
+// Read general connection settings from database.
+//-----------------------------------------------------------------------------
+//
+void CCmmCache::ReadGenConnSettingsL( TCmGenConnSettings& aGenConnSettings ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_READGENCONNSETTINGSL_ENTRY );
+
+    CommsDat::CMDBRecordSet<CCDDefConnRecord>* defConnRecordSet =
+            new( ELeave ) CommsDat::CMDBRecordSet<CCDDefConnRecord>(
+                    iCmManagerImpl->TableId( ECmmDbDefConnRecord ) );
+    CleanupStack::PushL( defConnRecordSet );
+
+    CCDDefConnRecord* defConnRecord =
+            new( ELeave ) CCDDefConnRecord(
+                    iCmManagerImpl->TableId( ECmmDbDefConnRecord ) );
+    CleanupStack::PushL( defConnRecord );
+
+    TRAP_IGNORE( defConnRecordSet->LoadL( Session() ) );
+    if ( defConnRecordSet->iRecords.Count() > 0 )
+        {
+        defConnRecord->SetElementId( defConnRecordSet->iRecords[0]->ElementId() );
+        defConnRecord->LoadL( Session() );
+
+        aGenConnSettings.iUsageOfWlan =
+                TCmUsageOfWlan( ( TInt )defConnRecord->iUsageOfWlan );
+        aGenConnSettings.iCellularDataUsageHome =
+                TCmCellularDataUsage( ( TInt )defConnRecord->iCellularDataUsageHome );
+        aGenConnSettings.iCellularDataUsageVisitor =
+                TCmCellularDataUsage( ( TInt )defConnRecord->iCellularDataUsageVisitor );
+        }
+    else
+        {
+        iTrans->OpenTransactionLC();
+
+        TUint defConnType( 0 );
+        TUint internetSnapId( 0 );
+        iInstanceMapping->InternetDestinationIdL( internetSnapId );
+        if ( internetSnapId )
+            {
+            defConnType = ECmDefConnDestination;
+            }
+
+        aGenConnSettings.iUsageOfWlan = ECmUsageOfWlanKnown;
+        aGenConnSettings.iCellularDataUsageHome = ECmCellularDataUsageAutomatic;
+        aGenConnSettings.iCellularDataUsageVisitor = ECmCellularDataUsageConfirm;
+
+        defConnRecord->SetRecordId( KCDNewRecordRequest );
+        defConnRecord->iDefConnType = defConnType;
+        defConnRecord->iDefConnUid = internetSnapId;
+        defConnRecord->iUsageOfWlan = ( TUint )aGenConnSettings.iUsageOfWlan;
+        defConnRecord->iCellularDataUsageHome = ( TUint )aGenConnSettings.iCellularDataUsageHome;
+        defConnRecord->iCellularDataUsageVisitor = ( TUint )aGenConnSettings.iCellularDataUsageVisitor;
+        defConnRecord->StoreL( Session() );
+
+        iTrans->CommitTransactionL();
+        }
+
+    CleanupStack::PopAndDestroy( defConnRecord );
+    CleanupStack::PopAndDestroy( defConnRecordSet );
+
+    OstTraceFunctionExit0( CCMMCACHE_READGENCONNSETTINGSL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+// Write general connection settings to database.
+//-----------------------------------------------------------------------------
+//
+void CCmmCache::WriteGenConnSettingsL( const TCmGenConnSettings& aGenConnSettings )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_WRITEGENCONNSETTINGSL_ENTRY );
+
+    iTrans->OpenTransactionLC();
+
+    ReplaceGenConnSettingsL( aGenConnSettings );
+
+    iTrans->CommitTransactionL();
+
+    OstTraceFunctionExit0( CCMMCACHE_WRITEGENCONNSETTINGSL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CCmmCache::ReplaceGenConnSettingsL()
+//-----------------------------------------------------------------------------
+//
+void CCmmCache::ReplaceGenConnSettingsL( const TCmGenConnSettings& aGenConnSettings )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_REPLACEGENCONNSETTINGSL_ENTRY );
+    TBool oldRecordExists( EFalse );
+
+    CommsDat::CMDBRecordSet<CCDDefConnRecord>* defConnRecordSet =
+            new( ELeave ) CommsDat::CMDBRecordSet<CCDDefConnRecord>(
+                    iCmManagerImpl->TableId( ECmmDbDefConnRecord ) );
+    CleanupStack::PushL( defConnRecordSet );
+
+    CCDDefConnRecord* defConnRecord =
+            new( ELeave ) CCDDefConnRecord(
+                    iCmManagerImpl->TableId( ECmmDbDefConnRecord ) );
+    CleanupStack::PushL( defConnRecord );
+
+    TRAPD( err, defConnRecordSet->LoadL( Session() ) );
+    if ( err == KErrNone )
+        {
+        defConnRecord->SetElementId( defConnRecordSet->iRecords[0]->ElementId() );
+        defConnRecord->LoadL( Session() );
+        oldRecordExists = ETrue;
+        }
+    else if ( err == KErrNotFound )
+        {
+        defConnRecord->SetRecordId( KCDNewRecordRequest );
+        }
+    else
+        {
+        User::Leave( err );
+        }
+
+    defConnRecord->iUsageOfWlan = ( TUint )aGenConnSettings.iUsageOfWlan;
+    defConnRecord->iCellularDataUsageHome = ( TUint )aGenConnSettings.iCellularDataUsageHome;
+    defConnRecord->iCellularDataUsageVisitor = ( TUint )aGenConnSettings.iCellularDataUsageVisitor;
+
+    if ( oldRecordExists )
+        {
+        defConnRecord->ModifyL( Session() );
+        }
+    else
+        {
+        defConnRecord->StoreL( Session() );
+        }
+
+    CleanupStack::PopAndDestroy( defConnRecord );
+    CleanupStack::PopAndDestroy( defConnRecordSet );
+
+    OstTraceFunctionExit0( CCMMCACHE_REPLACEGENCONNSETTINGSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Opens a transaction and deletes the given connection method.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::DeletePluginL( CCmmConnMethodStruct& aConnMethodStruct )
+    {
+    iTrans->OpenTransactionLC();
+    aConnMethodStruct.GetPlugin()->DeleteL();
+    iTrans->CommitTransactionL();
+    }
+
+// ---------------------------------------------------------------------------
+// Enumerates connections and checks if the given connection method is
+// connected.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmCache::CheckIfCmConnected( const TUint32& aCmId ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_CHECKIFCMCONNECTED_ENTRY );
+
+    TBool result( EFalse );
+    RSocketServ ss;
+    RConnection connection;
+    TUint connectionCount( 0 );
+
+    if ( ss.Connect() == KErrNone )
+        {
+        if ( connection.Open( ss, KAfInet ) == KErrNone )
+            {
+            if ( connection.EnumerateConnections( connectionCount ) == KErrNone )
+                {
+                TPckgBuf<TConnectionInfo> connInfo;
+
+                for ( TInt i = 1; i <= connectionCount; i++ )
+                    {
+                    connection.GetConnectionInfo( i, connInfo );
+
+                    if ( connInfo().iIapId == aCmId )
+                        {
+                        result = ETrue;
+                        break;
+                        }
+                    }
+
+                }
+            connection.Close();
+            }
+        ss.Close();
+        }
+
+    OstTraceFunctionExit0( CCMMCACHE_CHECKIFCMCONNECTED_EXIT );
+
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// Enumerates connections and checks if any of the connection methods in the
+// given destination is connected.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmCache::DestinationConnectedL(
+        const TUint32 aDestinationId,
+        CCmmDestinationInstance* aDestinationInstance ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_DESTINATIONCONNECTEDL_ENTRY );
+
+    TBool result( EFalse );
+    RSocketServ ss;
+    RConnection connection;
+    TUint connectionCount( 0 );
+
+    if ( ss.Connect() == KErrNone )
+        {
+        if ( connection.Open( ss, KAfInet ) == KErrNone )
+            {
+            if ( connection.EnumerateConnections( connectionCount ) == KErrNone )
+                {
+                RArray<TCmmConnMethodItem> connMethodArray;
+                CleanupClosePushL( connMethodArray );
+
+                // If destination instance provided, take the destination's
+                // connection methods from there. Otherwise get the connection
+                // methods from instance mapping. (If the destination is marked
+                // to be deleted, instance mapping won't have information about
+                // it.)
+                if ( aDestinationInstance )
+                    {
+                    for ( TInt i = 0; i < aDestinationInstance->iConnMethodItemArray.Count(); i++ )
+                        {
+                        connMethodArray.AppendL( aDestinationInstance->iConnMethodItemArray[i] );
+                        }
+                    }
+                else
+                    {
+                    iInstanceMapping->GetConnMethodsFromDestinationL( aDestinationId, connMethodArray );
+                    }
+
+                // Iterate through all connections.
+                TPckgBuf<TConnectionInfo> connInfo;
+                for ( TUint i = 1; i <= connectionCount; i++ )
+                    {
+                    connection.GetConnectionInfo( i, connInfo );
+
+                    // Iterate through all connection methods in destinations.
+                    for ( TInt j = 0; j < connMethodArray.Count(); j++ )
+                        {
+                        if ( connInfo().iIapId == connMethodArray[j].iId )
+                            {
+                            result = ETrue;
+                            break;
+                            }
+                        }
+                    if ( result )
+                        {
+                        break;
+                        }
+                    }
+
+                CleanupStack::PopAndDestroy( &connMethodArray );
+                }
+            connection.Close();
+            }
+        ss.Close();
+        }
+
+    OstTraceFunctionExit0( CCMMCACHE_DESTINATIONCONNECTEDL_EXIT );
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// Check from database if the given destination is an embedded destination in
+// any other destination.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmCache::DestinationIsEmbedded( const TUint32& aDestinationId ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_DESTINATIONISEMBEDDED_ENTRY );
+
+    TBool isEmbedded = iInstanceMapping->DestinationIsEmbedded( aDestinationId );
+
+    OstTraceFunctionExit0( CCMMCACHE_DESTINATIONISEMBEDDED_EXIT );
+
+    return isEmbedded;
+    }
+
+// ---------------------------------------------------------------------------
+// Check from database if the given destination has an embedded destination.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmCache::DestinationHasEmbedded( const TUint32& aDestinationId ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_DESTINATIONHASEMBEDDED_ENTRY );
+
+    TBool hasEmbedded = iInstanceMapping->DestinationHasEmbedded( aDestinationId );
+
+    OstTraceFunctionExit0( CCMMCACHE_DESTINATIONHASEMBEDDED_EXIT );
+
+    return hasEmbedded;
+    }
+
+// ---------------------------------------------------------------------------
+// Check from database if the given destination is pointed to by any virtual
+// IAP.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmCache::DestinationPointedToByVirtualIap( const TUint32& aDestinationId ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_DESTINATIONPOINTEDTOBYVIRTUALIAP_ENTRY );
+
+    TBool pointedByVirtual =
+            iInstanceMapping->DestinationPointedToByVirtualIap( aDestinationId );
+
+    OstTraceFunctionExit0( CCMMCACHE_DESTINATIONPOINTEDTOBYVIRTUALIAP_EXIT );
+
+    return pointedByVirtual;
+    }
+
+// ---------------------------------------------------------------------------
+// Check from database if the given connection method is pointed to by any
+// virtual IAP.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmCache::ConnMethodPointedToByVirtualIap( const TUint32& aConnMethodId ) const
+    {
+
+    TBool pointedByVirtual =
+            iInstanceMapping->ConnMethodPointedToByVirtualIap( aConnMethodId );
+
+    return pointedByVirtual;
+    }
+
+// ---------------------------------------------------------------------------
+// Check if the given connection method is the only connection method in the
+// given destination and if a virtual IAP points to that destination.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmCache::ConnMethodInDestinationButLocked(
+        const TUint32& aConnMethodId, const TUint32& aDestinationId ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_CONNMETHODINDESTINATIONBUTLOCKED_ENTRY );
+
+    TBool inAndlocked = iInstanceMapping->
+            ConnMethodInDestinationButLocked( aConnMethodId, aDestinationId );
+
+    OstTraceFunctionExit0( CCMMCACHE_CONNMETHODINDESTINATIONBUTLOCKED_EXIT );
+
+    return inAndlocked;
+    }
+
+// ---------------------------------------------------------------------------
+// Remove all references to the given connection method from the datamobility
+// selection policy records. Then update instance mapping to reflect the
+// current database state, and notify any possible client handles for the
+// changed destinations. Also removes the connection method from any
+// destination handles the client has open.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::RemoveAllReferencesToConnMethodL(
+        CCmmConnMethodInstance& aConnMethodInstance )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_REMOVEALLREFERENCESTOCONNMETHODL_ENTRY );
+
+    TUint32 connMethodId( aConnMethodInstance.GetId() );
+
+    iTrans->OpenTransactionLC();
+
+    // Create DataMobilitySelectionPolicy-record set.
+    CommsDat::CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>* snapRecordSet =
+            new( ELeave ) CommsDat::CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>(
+                    iCmManagerImpl->TableId( ECmmDbSnapRecord ) );
+    CleanupStack::PushL( snapRecordSet );
+
+    // Create a DataMobilitySelectionPolicy-record.
+    CCDDataMobilitySelectionPolicyRecord* snapRecord =
+            new( ELeave ) CCDDataMobilitySelectionPolicyRecord(
+                    iCmManagerImpl->TableId( ECmmDbSnapRecord ) );
+    CleanupStack::PushL( snapRecord );
+
+    TRAP_IGNORE( snapRecordSet->LoadL( iTrans->Session() ) );
+
+    // Read IAP ID from each record and delete any that match the connection
+    // method we are removing all references for.
+    TUint32 connMethodIdInRecord( 0 );
+    TInt snapRecordCount( snapRecordSet->iRecords.Count() );
+    for ( TInt i = 0; i < snapRecordCount; i++ )
+        {
+        snapRecord->SetElementId( snapRecordSet->iRecords[i]->ElementId() );
+        snapRecord->LoadL( iTrans->Session() );
+
+        connMethodIdInRecord = ( snapRecord->iIAP & KCDMaskShowRecordId ) >> 8;
+        if ( connMethodIdInRecord == connMethodId )
+            {
+            snapRecord->DeleteL( iTrans->Session() );
+            }
+        }
+    CleanupStack::PopAndDestroy( snapRecord );
+    CleanupStack::PopAndDestroy( snapRecordSet );
+
+    iTrans->CommitTransactionL();
+
+    // Reference count will be zero if this method call is not part of some
+    // bigger operation (e.g. connection method delete).
+    if ( iTrans->GetReferenceCount() == 0 )
+        {
+        // Update instance mapping to reflect the current database state, and
+        // notify any possible client handles for the changed destinations.
+        RArray<TUint32> changedDestinations;
+        iInstanceMapping->RemoveConnMethodFromDestinations( connMethodId, changedDestinations );
+        for ( TInt i = 0; i < changedDestinations.Count(); i++ )
+            {
+            TCmmIdStruct idStruct( changedDestinations[i], 0 );
+            aConnMethodInstance.RefreshHandlesForAllSessions( idStruct );
+            }
+        changedDestinations.Close();
+
+        // Remove the connection method from any destination handles the client
+        // has open.
+        aConnMethodInstance.RemoveConnMethodFromSessionDestinationHandles( connMethodId );
+        }
+
+    OstTraceFunctionExit0( CCMMCACHE_REMOVEALLREFERENCESTOCONNMETHODL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Update the ID of a new destination from temporary ID to real ID after a
+// successful update to database.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::RefreshDestinationId( const TCmmIdStruct& aIdStruct )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_REFRESHDESTINATIONID_ENTRY );
+
+    // Iterate destinations in cache and update the ID if match found.
+    for ( TInt i = 0; i < iDestinationArray.Count(); i++ )
+        {
+        if ( iDestinationArray[i]->GetId() == aIdStruct.iTemporaryId )
+            {
+            iDestinationArray[i]->SetId( aIdStruct.iRealId );
+            break;
+            }
+        }
+    OstTraceFunctionExit0( CCMMCACHE_REFRESHDESTINATIONID_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Update the ID of a new connection method from temporary ID to real ID after
+// a successful update to database.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::RefreshConnMethodId( const TCmmIdStruct& aIdStruct )
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_REFRESHCONNMETHODID_ENTRY );
+
+    // Iterate connection methods in cache and update the ID if match found.
+    for ( TInt i = 0; i < iConnMethodArray.Count(); i++ )
+        {
+        if ( iConnMethodArray[i]->GetId() == aIdStruct.iTemporaryId )
+            {
+            iConnMethodArray[i]->SetId( aIdStruct.iRealId );
+            break; // Can only be 1 match.
+            }
+        }
+    OstTraceFunctionExit0( CCMMCACHE_REFRESHCONNMETHODID_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// During destination update, after updating connection methods inside the
+// destination, the database records containing the information of what
+// connection methods are inside the destination need to be updated with real
+// IDs for any newly created connection methods. These real IDs are held in the
+// temporary array iUpdatedConnMethods until successful commit to database.
+// This method is used to find out those real IDs before that.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::TranslateTemporaryId( const TUint32& aTemporaryId, TUint32& aRealId ) const
+    {
+    OstTraceFunctionEntry0( CCMMCACHE_TRANSLATETEMPORARYID_ENTRY );
+
+    aRealId = 0;
+
+    for ( TInt i = 0; i < iUpdatedConnMethods.Count(); i++ )
+        {
+        if ( iUpdatedConnMethods[i].iTemporaryId == aTemporaryId )
+            {
+            aRealId = iUpdatedConnMethods[i].iRealId;
+            break;
+            }
+        }
+    if ( !aRealId )
+        {
+        ASSERT( 0 );
+        }
+    OstTraceFunctionExit0( CCMMCACHE_TRANSLATETEMPORARYID_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Check if the given connection method can have all references removed and
+// made into an uncategorized connection method.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::CheckIfConnMethodReferencesCanBeRemovedL(
+        const CCmmConnMethodInstance& aConnMethodInstance )
+    {
+    TUint32 connMethodId( aConnMethodInstance.GetId() );
+
+    // Check that connection method exists in database.
+    if ( !iInstanceMapping->ValidConnMethodId( connMethodId ) )
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    // Can't remove an embedded destination this way.
+    if ( aConnMethodInstance.IsEmbeddedDestination() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    //TODO, what if protected?
+
+    // Iterate all destinations in database and check if possible reference can
+    // be removed.
+    RArray<TUint32> dbDestinations;
+    CleanupClosePushL( dbDestinations );
+    iInstanceMapping->GetDestinationsL( dbDestinations );
+    for ( TInt i = 0; i < dbDestinations.Count(); i++ )
+        {
+        if ( iInstanceMapping->ConnMethodInDestinationButLocked( connMethodId, dbDestinations[i] ) )
+            {
+            User::Leave( KErrLocked );
+            }
+        }
+    CleanupStack::PopAndDestroy( &dbDestinations );
+
+    // Can't remove a connection method that is in use.
+    if ( CheckIfCmConnected( connMethodId ) )
+        {
+        User::Leave( KErrInUse );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// Check if the given connection method can be deleted.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::CheckIfConnMethodCanBeDeletedL(
+        const CCmmConnMethodInstance& aConnMethodInstance )
+    {
+    TUint32 connMethodId( aConnMethodInstance.GetId() );
+
+    // Find connection method from cache.
+    TInt index = FindConnMethodFromCache( connMethodId );
+    if ( index == KErrNotFound )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    // Check connection method status at cache side.
+    switch ( iConnMethodArray[index]->GetStatus() )
+        {
+        case ECmmConnMethodStatusNotSaved:
+            {
+            // Connection method is not in database, nothing to delete.
+            User::Leave( KErrNotFound );
+            }
+            break;
+        case ECmmConnMethodStatusValid:
+            // Proceed.
+            break;
+        case ECmmConnMethodStatusToBeDeleted:
+            // Connection method has already been deleted.
+            return;
+        case ECmmConnMethodStatusChanged:
+        default:
+            {
+            ASSERT( 0 ); // Error, illegal status.
+            User::Leave( KErrCorrupt );
+            }
+            break;
+        }
+
+    // Removing all references is part of deleting a connection method. Check
+    // if can do that.
+    CheckIfConnMethodReferencesCanBeRemovedL( aConnMethodInstance );
+
+    // Check that no virtual IAP points to this connection method.
+    if ( iInstanceMapping->ConnMethodPointedToByVirtualIap( connMethodId ) )
+        {
+        User::Leave( KErrLocked );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// Check if the given destination can be deleted.
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::CheckIfDestinationCanBeDeletedL(
+        const CCmmDestinationInstance& aDestinationInstance )
+    {
+    TUint32 destinationId( aDestinationInstance.GetId() );
+
+    // Find destination from cache.
+    TInt index = FindDestinationFromCache( destinationId );
+    if ( index == KErrNotFound )
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    // Check destination status in cache.
+    switch ( iDestinationArray[index]->GetStatus() )
+        {
+        case ECmmDestinationStatusNotSaved:
+            {
+            User::Leave( KErrNotFound );
+            }
+            break;
+        case ECmmDestinationStatusValid:
+            // Proceed.
+            break;
+        case ECmmDestinationStatusToBeDeleted:
+            // Destination has already been deleted.
+            return;
+        case ECmmDestinationStatusChanged:
+        default:
+            {
+            ASSERT( 0 ); // Error, illegal status.
+            User::Leave( KErrCorrupt );
+            }
+            break;
+        }
+
+    // Check destination exists in database.
+    if ( !iInstanceMapping->ValidDestinationId( destinationId ) )
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    // Check if any virtual IAP points to this destination. Don't check session side.
+    if ( iInstanceMapping->DestinationPointedToByVirtualIap( destinationId ) )
+        {
+        User::Leave( KErrLocked );
+        }
+
+    // Check if any of the connection methods in this destination are currently in use.
+    if ( DestinationConnectedL( destinationId ) )
+        {
+        User::Leave( KErrInUse );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// Return the requested table ID.
+// ---------------------------------------------------------------------------
+//
+CommsDat::TMDBElementId CCmmCache::TableId( TCmmDbRecords aRecord )
+    {
+    return iCmManagerImpl->TableId( aRecord );
+    }
+
+// ---------------------------------------------------------------------------
+// TODO
+// ---------------------------------------------------------------------------
+//
+void CCmmCache::DeleteDestinationForcedL( CCmmDestinationInstance& aDestinationInstance ) //TODO, OST
+    {
+    //TODO
+    if ( !DestinationConnectedL( 0, &aDestinationInstance ) )
+    //if ( !DestinationConnectedL( aDestinationInstance.GetId() ) ) //TODO
+        {
+        DeleteDestinationL( aDestinationInstance, ETrue );
+        }
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmconnmethodinstance.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,584 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Session side object representing a connection method.
+*
+*/
+
+
+#include <cmpluginbaseeng.h>
+#include <cmconnectionmethoddef.h>
+#include <cmpluginembdestinationdef.h>
+
+#include "cmmconnmethodinstance.h"
+#include "cmmsession.h"
+#include "cmmcache.h"
+#include "cmmconnmethodstruct.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmconnmethodinstanceTraces.h"
+#endif
+
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmConnMethodInstance* CCmmConnMethodInstance::NewL( CCmmSession* aCmmSession, CCmmCache* aCache )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_NEWL_ENTRY );
+
+    CCmmConnMethodInstance* self = CCmmConnMethodInstance::NewLC( aCmmSession, aCache );
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_NEWL_EXIT );
+
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmConnMethodInstance* CCmmConnMethodInstance::NewLC( CCmmSession* aCmmSession, CCmmCache* aCache )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_NEWLC_ENTRY );
+
+    CCmmConnMethodInstance* self = new( ELeave ) CCmmConnMethodInstance( aCmmSession, aCache );
+    CleanupClosePushL( *self );
+    self->ConstructL();
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_NEWLC_EXIT );
+
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CCmmConnMethodInstance::~CCmmConnMethodInstance()
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_CCMMCONNMETHODINSTANCE_ENTRY );
+
+    // Tell cache this handle is beeing closed. Cache will update own bookkeeping.
+    if ( iCache )
+        {
+        iCache->CloseConnMethod( *this );
+        }
+
+    delete iPluginDataInstance;
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_CCMMCONNMETHODINSTANCE_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------------------------
+//
+CCmmConnMethodInstance::CCmmConnMethodInstance( CCmmSession* aCmmSession, CCmmCache* aCache )
+        :
+        iCmmSession( aCmmSession ),
+        iCache( aCache )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMMCONNMETHODINSTANCE_CCMMCONNMETHODINSTANCE_ENTRY );
+
+    iPlugin = NULL;
+    iPluginDataInstance = NULL;
+    iConnMethodId = 0;
+    iBearerType = 0;
+    iStatus = ECmmConnMethodStatusChanged;
+    iHandle = 0;
+
+    OstTraceFunctionExit0( DUP1_CCMMCONNMETHODINSTANCE_CCMMCONNMETHODINSTANCE_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodInstance::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_CONSTRUCTL_ENTRY );
+
+    iPluginDataInstance = CCmClientPluginInstance::NewL();
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_CONSTRUCTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Set the plugin base pointer.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodInstance::SetPlugin( CCmPluginBaseEng* aPlugin )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_SETPLUGIN_ENTRY );
+
+    iPlugin = aPlugin;
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_SETPLUGIN_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Get the plugin base pointer.
+// ---------------------------------------------------------------------------
+//
+CCmPluginBaseEng* CCmmConnMethodInstance::GetPlugin() const
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_GETPLUGIN_ENTRY );
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_GETPLUGIN_EXIT );
+    return iPlugin;
+    }
+
+// ---------------------------------------------------------------------------
+// Get pointer to the plugin data container.
+// ---------------------------------------------------------------------------
+//
+CCmClientPluginInstance* CCmmConnMethodInstance::GetPluginDataInstance() const
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_GETPLUGINDATAINSTANCE_ENTRY );
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_GETPLUGINDATAINSTANCE_EXIT );
+    return iPluginDataInstance;
+    }
+
+// ---------------------------------------------------------------------------
+// Get connection method ID.
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmmConnMethodInstance::GetId() const
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_GETID_ENTRY );
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_GETID_EXIT );
+
+    return iConnMethodId;
+    }
+
+// ---------------------------------------------------------------------------
+// Set connection method ID.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodInstance::SetId( const TUint32& aConnMethodId )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_SETID_ENTRY );
+
+    iConnMethodId = aConnMethodId;
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_SETID_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Return bearer type.
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmmConnMethodInstance::GetBearerType() const
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_GETBEARERTYPE_ENTRY );
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_GETBEARERTYPE_EXIT );
+
+    return iBearerType;
+    }
+
+// ---------------------------------------------------------------------------
+// Get bearer type.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodInstance::SetBearerType( const TUint32& aBearerType )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_SETBEARERTYPE_ENTRY );
+
+    iBearerType = aBearerType;
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_SETBEARERTYPE_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Get handle ID.
+// ---------------------------------------------------------------------------
+//
+TInt CCmmConnMethodInstance::GetHandle() const
+    {
+    return iHandle;
+    }
+
+// ---------------------------------------------------------------------------
+// Set handle ID.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodInstance::SetHandle( const TInt& aHandle )
+    {
+    iHandle = aHandle;
+    }
+
+// ---------------------------------------------------------------------------
+// Return ETrue, if this connection method represents an embedded destination.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmConnMethodInstance::IsEmbeddedDestination() const
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_ISEMBEDDEDDESTINATION_ENTRY );
+
+    TBool result( EFalse );
+    if ( iBearerType == KUidEmbeddedDestination )
+        {
+        result = ETrue;
+        }
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_ISEMBEDDEDDESTINATION_EXIT );
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// Save the contents of this connection method into database. The attribute
+// aTemporaryHandle must be true if this connection instance was temporarily
+// created for the duration of this update operation only. 
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodInstance::UpdateL( TBool aTemporaryHandle )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_UPDATEL_ENTRY );
+
+    if ( iCache )
+        {
+        iCache->UpdateConnMethodL( *this, aTemporaryHandle );
+        }
+    else
+        {
+        User::Leave( KErrBadHandle );
+        }
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_UPDATEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Copy the relevant connection method information from cache side object.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodInstance::CopyDataL( CCmmConnMethodStruct* aConnMethodStruct )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_COPYDATAL_ENTRY );
+
+    if ( !aConnMethodStruct )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
+    iConnMethodId = aConnMethodStruct->GetId();
+    iBearerType = aConnMethodStruct->GetBearerType();
+
+    iPlugin = aConnMethodStruct->GetPlugin();
+    if ( !iPlugin )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
+    iPlugin->GetPluginDataL( iPluginDataInstance ); //TODO, check deletes for iPluginDataInstance
+    aConnMethodStruct->IncrementReferenceCounter();
+
+    switch ( aConnMethodStruct->GetStatus() )
+        {
+        case ECmmConnMethodStatusNotSaved:
+        case ECmmConnMethodStatusToBeDeleted:
+            {
+            iStatus = ECmmConnMethodStatusChanged;
+            }
+            break;
+        case ECmmConnMethodStatusValid:
+            {
+            iStatus = ECmmConnMethodStatusValid;
+            }
+            break;
+        case ECmmConnMethodStatusChanged:
+        default:
+            User::Leave( KErrCorrupt );  // Error, invalid status.
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_COPYDATAL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Refresh the relevant connection method data in cache side object to be in
+// synch with database and copy that data back to this session side connection
+// method object.
+// ---------------------------------------------------------------------------
+//
+//TODO, cleanup
+/*
+void CCmmConnMethodInstance::RefreshDataL( CCmmConnMethodStruct* aConnMethodStruct ) //TODO, remove
+    {
+
+    //TODO
+    //if ( !aConnMethodStruct )
+        //{
+        //User::Leave( KErrCorrupt );
+        //}
+    if ( !iPlugin )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
+    switch ( aConnMethodStruct->GetStatus() )
+        {
+        case ECmmConnMethodStatusValid:
+        case ECmmConnMethodStatusToBeDeleted:
+            {
+            //TODO, add record status check later and only call Reload() if necessary. TCmmRecordStatus
+            //if ( !aConnMethodStruct->UpToDate() )
+            //    {
+                iPlugin->ReLoadL();
+            //    }
+            iPlugin->GetPluginDataL( iPluginDataInstance );
+            }
+            break;
+        case ECmmConnMethodStatusNotSaved: // This is checked before.
+        case ECmmConnMethodStatusChanged:
+        default:
+            User::Leave( KErrCorrupt );  // Error, invalid status.
+            break;
+        }
+
+    // Internal state need to be set to the same state as after a successfull update.
+    UpdateSuccessful();
+
+    }*/
+
+// ---------------------------------------------------------------------------
+// CCmmConnMethodInstance::GetIntAttributeL
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmmConnMethodInstance::GetIntAttributeL( const TUint32& aAttribute )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_GETINTATTRIBUTEL_ENTRY );
+
+    __ASSERT_DEBUG( iPlugin != NULL, User::Leave( KErrNotFound ) );
+
+    return iPlugin->GetIntAttributeL( aAttribute, iPluginDataInstance );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmmConnMethodInstance::GetBoolAttributeL
+// ---------------------------------------------------------------------------
+//
+TBool CCmmConnMethodInstance::GetBoolAttributeL( const TUint32& aAttribute )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_GETBOOLATTRIBUTEL_ENTRY );
+
+    __ASSERT_DEBUG( iPlugin != NULL, User::Leave( KErrNotFound ) );
+
+    TBool retVal( EFalse );
+
+    switch ( aAttribute )
+        {
+        case CMManager::ECmConnected:
+            {
+            if ( GetId() > 0 )
+                {
+                if ( iCache )
+                    {
+                    retVal = iCache->CheckIfCmConnected( GetId() );
+                    }
+                }
+            }
+            break;
+        case CMManager::ECmIsLinked:
+            {
+            //TODO
+            }
+            break;
+        default:
+            {
+            retVal = iPlugin->GetBoolAttributeL( aAttribute, iPluginDataInstance );
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_GETBOOLATTRIBUTEL_EXIT );
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CCmmConnMethodInstance::GetStringAttributeL
+// ---------------------------------------------------------------------------
+//
+HBufC* CCmmConnMethodInstance::GetStringAttributeL( const TUint32& aAttribute )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_GETSTRINGATTRIBUTEL_ENTRY );
+
+    __ASSERT_DEBUG( iPlugin != NULL, User::Leave( KErrNotFound ) );
+
+    return iPlugin->GetStringAttributeL( aAttribute, iPluginDataInstance );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmmConnMethodInstance::GetString8AttributeL
+// ---------------------------------------------------------------------------
+//
+HBufC8* CCmmConnMethodInstance::GetString8AttributeL( const TUint32& aAttribute )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_GETSTRING8ATTRIBUTEL_ENTRY );
+
+    __ASSERT_DEBUG( iPlugin != NULL, User::Leave( KErrNotFound ) );
+
+    return iPlugin->GetString8AttributeL( aAttribute, iPluginDataInstance );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmmConnMethodInstance::SetIntAttributeL
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodInstance::SetIntAttributeL(
+        const TUint32& aAttribute,
+        const TUint32& aValue )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_SETINTATTRIBUTEL_ENTRY );
+
+    __ASSERT_DEBUG( iPlugin != NULL, User::Leave( KErrNotFound ) );
+
+    iPlugin->SetIntAttributeL( aAttribute, aValue, iPluginDataInstance );
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_SETINTATTRIBUTEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmmConnMethodInstance::SetBoolAttributeL
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodInstance::SetBoolAttributeL(
+        const TUint32& aAttribute,
+        const TBool& aValue )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_SETBOOLATTRIBUTEL_ENTRY );
+
+    __ASSERT_DEBUG( iPlugin != NULL, User::Leave( KErrNotFound ) );
+
+    iPlugin->SetBoolAttributeL( aAttribute, aValue, iPluginDataInstance );
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_SETBOOLATTRIBUTEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmmConnMethodInstance::SetStringAttributeL
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodInstance::SetStringAttributeL(
+        const TUint32& aAttribute,
+        const TDesC16& aValue )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_SETSTRINGATTRIBUTEL_ENTRY );
+
+    __ASSERT_DEBUG( iPlugin != NULL, User::Leave( KErrNotFound ) );
+
+    iPlugin->SetStringAttributeL( aAttribute, aValue, iPluginDataInstance );
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_SETSTRINGATTRIBUTEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// CCmmConnMethodInstance::SetString8AttributeL
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodInstance::SetString8AttributeL(
+        const TUint32& aAttribute,
+        const TDesC8& aValue )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_SETSTRING8ATTRIBUTEL_ENTRY );
+
+    __ASSERT_DEBUG( iPlugin != NULL, User::Leave( KErrNotFound ) );
+
+    iPlugin->SetString8AttributeL( aAttribute, aValue, iPluginDataInstance );
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_SETSTRING8ATTRIBUTEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Gets the current status of this connection method instance.
+// ---------------------------------------------------------------------------
+//
+TCmmConnMethodStatus CCmmConnMethodInstance::GetStatus() const
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_GETSTATUS_ENTRY );
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_GETSTATUS_EXIT );
+    return iStatus;
+    }
+
+// ---------------------------------------------------------------------------
+// Sets a new status value.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodInstance::SetStatus( const TCmmConnMethodStatus& aStatus )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_SETSTATUS_ENTRY );
+
+    iStatus = aStatus;
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_SETSTATUS_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Called after this connection method has been updated and database
+// transaction has completed successfully. Sets the internal state of this
+// connection method instance to reflect the new valid state.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodInstance::UpdateSuccessful()
+    {
+    SetStatus( ECmmConnMethodStatusValid );
+    }
+
+// ---------------------------------------------------------------------------
+// Called after this connection method has been deleted and database
+// transaction has completed successfully. Sets the internal state of this
+// connection method structure to reflect the new deleted state.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodInstance::DeleteSuccessful( const TUint32& aNewSecondaryId )
+    {
+    SetStatus( ECmmConnMethodStatusChanged );
+    SetId( aNewSecondaryId );
+    }
+
+// ---------------------------------------------------------------------------
+// After update/delete to database, refresh temporary ID to real ID if
+// necessary and refresh status information for any related handles for
+// all client sessions.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodInstance::RefreshHandlesForAllSessions(
+        const TCmmIdStruct& aIdStruct )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODINSTANCE_REFRESHHANDLESFORALLSESSIONS_ENTRY );
+
+    if ( iCmmSession )
+        {
+        iCmmSession->RefreshHandlesForAllSessions( aIdStruct );
+        }
+
+    OstTraceFunctionExit0( CCMMCONNMETHODINSTANCE_REFRESHHANDLESFORALLSESSIONS_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Removes a connection method from any open destination handle in the same
+// session.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodInstance::RemoveConnMethodFromSessionDestinationHandles(
+        const TUint32& aConnMethodId )
+    {
+    if ( iCmmSession )
+        {
+        iCmmSession->RemoveConnMethodFromDestinationHandles( aConnMethodId );
+        }
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmconnmethoditem.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,84 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Class representing any kind on connection method, including embedded
+* destination. Used for priority based ordering of connection methods inside
+* destinations.
+*
+*/
+
+
+#include "cmmconnmethoditem.h"
+
+
+// ---------------------------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------------------------
+//
+TCmmConnMethodItem::TCmmConnMethodItem()
+    {
+    iId = 0;
+    iBearerType = 0;
+    iBearerPriority = 0;
+    iPriority = 0;
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------------------------
+//
+TCmmConnMethodItem::TCmmConnMethodItem(
+        TUint32 aId,
+        TUint32 aBearerType,
+        TUint aBearerPriority,
+        TUint aPriority )
+        :
+        iId( aId ),
+        iBearerType( aBearerType ),
+        iBearerPriority( aBearerPriority ),
+        iPriority( aPriority )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// A comparison function. Uses priority since items are in priority order.
+// ---------------------------------------------------------------------------
+//
+TInt TCmmConnMethodItem::Compare(
+        const TCmmConnMethodItem& aFirst,
+        const TCmmConnMethodItem& aSecond )
+    {
+    // Zero if match, negative if first is smaller, positive otherwise.
+    return ( TInt )aFirst.iPriority - ( TInt )aSecond.iPriority;
+    }
+
+// ---------------------------------------------------------------------------
+// A comparison function to find a specific item by ID.
+// (Items are not sorted by ID in the array.)
+// ---------------------------------------------------------------------------
+//
+TBool TCmmConnMethodItem::FindCompare(
+        const TUint32* aKey,
+        const TCmmConnMethodItem& aEntry )
+    {
+    // True if match, false otherwise.
+    TBool result( EFalse );
+    if ( *aKey == aEntry.iId )
+        {
+        result = ETrue;
+        }
+    return result;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmconnmethodstruct.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,315 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Cache side object representing a connection method.
+*
+*/
+
+
+#include <e32base.h>
+#include <cmpluginbaseeng.h>
+
+#include "cmmconnmethodstruct.h"
+#include "cmmconnmethodinstance.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmconnmethodstructTraces.h"
+#endif
+
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmConnMethodStruct* CCmmConnMethodStruct::NewL(
+        const TUint32& aConnMethodId )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODSTRUCT_NEWL_ENTRY );
+
+    CCmmConnMethodStruct* self = CCmmConnMethodStruct::NewLC( aConnMethodId );
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMMCONNMETHODSTRUCT_NEWL_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmConnMethodStruct* CCmmConnMethodStruct::NewLC(
+        const TUint32& aConnMethodId )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODSTRUCT_NEWLC_ENTRY );
+
+    CCmmConnMethodStruct* self = new( ELeave ) CCmmConnMethodStruct( aConnMethodId );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+
+    OstTraceFunctionExit0( CCMMCONNMETHODSTRUCT_NEWLC_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CCmmConnMethodStruct::~CCmmConnMethodStruct()
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODSTRUCT_CCMMCONNMETHODSTRUCT_ENTRY );
+
+    if ( iConnMethodPlugin )
+        {
+        delete iConnMethodPlugin;
+        iConnMethodPlugin = NULL;
+        }
+
+    OstTraceFunctionExit0( CCMMCONNMETHODSTRUCT_CCMMCONNMETHODSTRUCT_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------------------------
+//
+CCmmConnMethodStruct::CCmmConnMethodStruct( TUint32 aConnMethodId )
+        :
+        iConnMethodId( aConnMethodId )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMMCONNMETHODSTRUCT_CCMMCONNMETHODSTRUCT_ENTRY );
+
+    iConnMethodPlugin = NULL;
+    iBearerType = 0;
+    iStatus = ECmmConnMethodStatusNotSaved;
+    iReferenceCounter = 0;
+
+    OstTraceFunctionExit0( DUP1_CCMMCONNMETHODSTRUCT_CCMMCONNMETHODSTRUCT_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodStruct::ConstructL()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// Return the reference count.
+// ---------------------------------------------------------------------------
+//
+TInt CCmmConnMethodStruct::GetReferenceCounter()
+    {
+    return iReferenceCounter;
+    }
+
+// ---------------------------------------------------------------------------
+// Increase the reference counter by one.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodStruct::IncrementReferenceCounter()
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODSTRUCT_INCREMENTREFERENCECOUNTER_ENTRY );
+    iReferenceCounter++;
+    OstTraceFunctionExit0( CCMMCONNMETHODSTRUCT_INCREMENTREFERENCECOUNTER_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Return the connection method ID.
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmmConnMethodStruct::GetId() const
+    {
+    return iConnMethodId;
+    }
+
+// ---------------------------------------------------------------------------
+// Set the connection method ID.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodStruct::SetId( const TUint32& aConnMethodId )
+    {
+    iConnMethodId = aConnMethodId;
+    }
+
+// ---------------------------------------------------------------------------
+// Return bearer type.
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmmConnMethodStruct::GetBearerType() const
+    {
+    return iBearerType;
+    }
+
+// ---------------------------------------------------------------------------
+// Gets the current status of this connection method struct.
+// ---------------------------------------------------------------------------
+//
+TCmmConnMethodStatus CCmmConnMethodStruct::GetStatus() const
+    {
+    return iStatus;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Sets a new status value.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodStruct::SetStatus( const TCmmConnMethodStatus& aStatus )
+    {
+    iStatus = aStatus;
+    }
+
+// ---------------------------------------------------------------------------
+// TODO
+//
+// Refresh the relevant connection method data in cache side object to be in
+// synch with database and copy that data back to this session side connection
+// method object.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodStruct::RefreshConnMethodInstanceL(
+        CCmmConnMethodInstance& aConnMethodInstance )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODSTRUCT_REFRESHCONNMETHODINSTANCEL_ENTRY );
+
+    if ( !iConnMethodPlugin )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
+    switch ( iStatus )
+        {
+        case ECmmConnMethodStatusValid:
+        case ECmmConnMethodStatusToBeDeleted:
+            {
+            //TODO, add record status check later and only call Reload() if necessary. TCmmRecordStatus
+            //if ( !aConnMethodStruct->UpToDate() )
+            //    {
+                iConnMethodPlugin->ReLoadL();
+            //    }
+            iConnMethodPlugin->GetPluginDataL( aConnMethodInstance.GetPluginDataInstance() );
+            }
+            break;
+        case ECmmConnMethodStatusNotSaved: // This is checked before.
+        case ECmmConnMethodStatusChanged:
+        default:
+            User::Leave( KErrCorrupt );  // Error, invalid status.
+            break;
+        }
+
+    // Internal state need to be set to the same state as after a successfull update.
+    aConnMethodInstance.UpdateSuccessful();
+
+    OstTraceFunctionExit0( CCMMCONNMETHODSTRUCT_REFRESHCONNMETHODINSTANCEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Decrease the reference counter by one. Return the remaining number of
+// references.
+// ---------------------------------------------------------------------------
+//
+TInt CCmmConnMethodStruct::SessionInstanceClosed()
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODSTRUCT_SESSIONINSTANCECLOSED_ENTRY );
+
+    iReferenceCounter--;
+    if ( iReferenceCounter < 0 )
+        {
+        ASSERT( 0 );
+        iReferenceCounter = 0;
+        }
+
+    OstTraceFunctionExit0( CCMMCONNMETHODSTRUCT_SESSIONINSTANCECLOSED_EXIT );
+    return iReferenceCounter;
+    }
+
+// ---------------------------------------------------------------------------
+// Set the connection method plugin. Updates status and sets reference
+// counter to 1.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodStruct::SetPlugin(
+        CCmPluginBaseEng* aPlugin,
+        TUint32 aBearerType,
+        TCmmConnMethodStatus aStatus )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODSTRUCT_SETPLUGIN_ENTRY );
+
+    // Only check reference counter, it is incremented by session side instance
+    // when data is copied into it.
+    if ( iReferenceCounter != 0 )
+        {
+        ASSERT( 0 ); // Error.
+        }
+
+    iConnMethodPlugin = aPlugin;
+    iBearerType = aBearerType;
+
+    switch ( aStatus ) //TODO, add missing status
+        {
+        // Fallthrough intended
+        case ECmmConnMethodStatusNotSaved:
+        case ECmmConnMethodStatusValid:
+            iStatus = aStatus;
+            break;
+        case ECmmConnMethodStatusChanged:
+        default:
+            iStatus = ECmmConnMethodStatusChanged;
+            ASSERT( 0 ); // Error, invalid status.
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMMCONNMETHODSTRUCT_SETPLUGIN_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Returns the connection method plugin.
+// ---------------------------------------------------------------------------
+//
+CCmPluginBaseEng* CCmmConnMethodStruct::GetPlugin()
+    {
+    return iConnMethodPlugin;
+    }
+
+// ---------------------------------------------------------------------------
+// Called after this connection method has been deleted and database
+// transaction has completed successfully. Sets the internal state of this
+// connection method structure to reflect the new deleted state.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodStruct::DeleteSuccessful( const TUint32& aNewSecondaryId )
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODSTRUCT_DELETESUCCESSFUL_ENTRY );
+
+    iConnMethodId = aNewSecondaryId;
+    iStatus = ( ECmmConnMethodStatusNotSaved );
+
+    OstTraceFunctionExit0( CCMMCONNMETHODSTRUCT_DELETESUCCESSFUL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Called after this connection method has been updated and database
+// transaction has completed successfully. Sets the internal state of this
+// connection method structure to reflect the new valid state.
+// ---------------------------------------------------------------------------
+//
+void CCmmConnMethodStruct::UpdateSuccessful()
+    {
+    OstTraceFunctionEntry0( CCMMCONNMETHODSTRUCT_UPDATESUCCESSFUL_ENTRY );
+    iStatus = ECmmConnMethodStatusValid;
+    OstTraceFunctionExit0( CCMMCONNMETHODSTRUCT_UPDATESUCCESSFUL_EXIT );
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmdbchangelistener.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,220 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Listens for changes in one CommsDat table through CenRep.
+*
+*/
+
+
+#include <commsdat.h>
+#include <centralrepository.h>
+
+#include "cmmdbchangelistener.h"
+#include "cmmlistenermanager.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmdbchangelistenerTraces.h"
+#endif
+
+
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmDbChangeListener* CCmmDbChangeListener::NewL(
+        CCmmListenerManager* aListenerManager,
+        TUint32 aTableId )
+    {
+    OstTraceFunctionEntry0( CCMMDBCHANGELISTENER_NEWL_ENTRY );
+
+    CCmmDbChangeListener* self = CCmmDbChangeListener::NewLC( aListenerManager, aTableId );
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMMDBCHANGELISTENER_NEWL_EXIT );
+
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmDbChangeListener* CCmmDbChangeListener::NewLC(
+        CCmmListenerManager* aListenerManager,
+        TUint32 aTableId )
+    {
+    OstTraceFunctionEntry0( CCMMDBCHANGELISTENER_NEWLC_ENTRY );
+
+    CCmmDbChangeListener* self = new( ELeave ) CCmmDbChangeListener( aListenerManager, aTableId );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+
+    OstTraceFunctionExit0( CCMMDBCHANGELISTENER_NEWLC_EXIT );
+
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// Cancels any active requests.
+// ---------------------------------------------------------------------------
+//
+CCmmDbChangeListener::~CCmmDbChangeListener()
+    {
+    OstTraceFunctionEntry0( CCMMDBCHANGELISTENER_CCMMDBCHANGELISTENER_ENTRY );
+
+    // Cancel outstanding request, if exists
+    Cancel();
+    delete iRepository;
+
+    OstTraceFunctionExit0( CCMMDBCHANGELISTENER_CCMMDBCHANGELISTENER_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------------------------
+//
+CCmmDbChangeListener::CCmmDbChangeListener(
+        CCmmListenerManager* aListenerManager,
+        TUint32 aTableId )
+        :
+        CActive( 0 ),
+        iListenerManager( aListenerManager ),
+        iTableId( aTableId )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMMDBCHANGELISTENER_CCMMDBCHANGELISTENER_ENTRY );
+
+    iRepository = NULL;
+    iErrorCounter = 0;
+
+    OstTraceFunctionExit0( DUP1_CCMMDBCHANGELISTENER_CCMMDBCHANGELISTENER_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CCmmDbChangeListener::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMMDBCHANGELISTENER_CONSTRUCTL_ENTRY );
+
+    iRepository = CRepository::NewL( KCDCommsRepositoryId );
+    CActiveScheduler::Add( this );
+    // Not started yet.
+    OstTraceFunctionExit0( CCMMDBCHANGELISTENER_CONSTRUCTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Get the database table ID that this listener is monitoring.
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmmDbChangeListener::GetTableId()
+    {
+    OstTraceFunctionEntry0( CCMMDBCHANGELISTENER_GETTABLEID_ENTRY );
+    OstTraceFunctionExit0( CCMMDBCHANGELISTENER_GETTABLEID_EXIT );
+
+    return iTableId;
+    }
+
+// ---------------------------------------------------------------------------
+// Start the listener if not yet started.
+// ---------------------------------------------------------------------------
+//
+TInt CCmmDbChangeListener::Start()
+    {
+    OstTraceFunctionEntry0( CCMMDBCHANGELISTENER_START_ENTRY );
+
+    TInt err( KErrNone );
+    if ( !IsActive() )
+        {
+        err = RequestNotification();
+        }
+    OstTraceFunctionExit0( CCMMDBCHANGELISTENER_START_EXIT );
+
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cancels an outstanding request.
+// ---------------------------------------------------------------------------
+//
+void CCmmDbChangeListener::DoCancel()
+    {
+    OstTraceFunctionEntry0( CCMMDBCHANGELISTENER_DOCANCEL_ENTRY );
+
+    iRepository->NotifyCancel( iTableId, KCDMaskShowRecordType );
+
+    OstTraceFunctionExit0( CCMMDBCHANGELISTENER_DOCANCEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Handles the asynchronous request completion event.
+// ---------------------------------------------------------------------------
+//
+void CCmmDbChangeListener::RunL()
+    {
+    OstTraceFunctionEntry0( CCMMDBCHANGELISTENER_RUNL_ENTRY );
+
+    // Don't leave, or implement RunError()
+    if ( iStatus.Int() < KErrNone )
+        {
+        // Error: iStatus.Int()
+        iErrorCounter++;
+        if ( iErrorCounter > KCmmCenRepErrorThreshold )
+            {
+            // Too many errors
+            iListenerManager->DbChangeError( iTableId );
+            OstTraceFunctionExit0( CCMMDBCHANGELISTENER_RUNL_EXIT );
+            return;
+            }
+        }
+    else
+        {
+        iErrorCounter = 0;
+        }
+
+    TInt err = RequestNotification(); // Start to listen for next change.
+
+    // React to current change notification
+    iListenerManager->DbChangeDetected( iTableId );
+
+    if ( err )
+        {
+        iListenerManager->DbChangeError( iTableId );
+        }
+    OstTraceFunctionExit0( DUP1_CCMMDBCHANGELISTENER_RUNL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Initiates an asynchronous request to be notified of any change in the
+// monitored database table.
+// ---------------------------------------------------------------------------
+//
+TInt CCmmDbChangeListener::RequestNotification()
+    {
+    OstTraceFunctionEntry0( CCMMDBCHANGELISTENER_REQUESTNOTIFICATION_ENTRY );
+
+    TInt err( KErrNone );
+    err = iRepository->NotifyRequest( iTableId, KCDMaskShowRecordType, iStatus );
+    if ( !err )
+        {
+        SetActive();
+        }
+    OstTraceFunctionExit0( CCMMDBCHANGELISTENER_REQUESTNOTIFICATION_EXIT );
+
+    return err;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmdestinationinstance.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,1683 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Session side object representing a destination.
+*
+*/
+
+
+#include <cmpluginbaseeng.h>
+#include <datamobilitycommsdattypes.h>
+#include <cmpluginembdestinationdef.h>
+
+#include "cmmdestinationinstance.h"
+#include "cmmsession.h"
+#include "cmmcache.h"
+#include "cmmconnmethodinstance.h"
+#include "cmmconnmethoditem.h"
+#include "cmmanagertextresolver.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmdestinationinstanceTraces.h"
+#endif
+
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmDestinationInstance* CCmmDestinationInstance::NewL( CCmmSession* aCmmSession, CCmmCache* aCache )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_NEWL_ENTRY );
+
+    CCmmDestinationInstance* self = CCmmDestinationInstance::NewLC( aCmmSession, aCache );
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_NEWL_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmDestinationInstance* CCmmDestinationInstance::NewLC( CCmmSession* aCmmSession, CCmmCache* aCache )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_NEWLC_ENTRY );
+
+    CCmmDestinationInstance* self = new( ELeave ) CCmmDestinationInstance( aCmmSession, aCache );
+    CleanupClosePushL( *self );
+    self->ConstructL();
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_NEWLC_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CCmmDestinationInstance::~CCmmDestinationInstance()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_CCMMDESTINATIONINSTANCE_ENTRY );
+
+    // Tell cache this handle is beeing closed. Cache will update it's own
+    // bookkeeping accordingly.
+    if ( iCache )
+        {
+        iCache->CloseDestination( *this );
+        }
+    delete iNetworkRecord;
+    delete iDestApRecord;
+    delete iMetadataRecord;
+
+    iConnMethodItemArray.Close();
+    iConnMethodsToBeDeleted.Close();
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_CCMMDESTINATIONINSTANCE_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------------------------
+//
+CCmmDestinationInstance::CCmmDestinationInstance(
+        CCmmSession* aCmmSession,
+        CCmmCache* aCache )
+        :
+        iCmmSession( aCmmSession ),
+        iCache( aCache )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMMDESTINATIONINSTANCE_CCMMDESTINATIONINSTANCE_ENTRY );
+
+    iNetworkRecord = NULL;
+    iDestApRecord = NULL;
+    iMetadataRecord = NULL;
+
+    iNetworkRecordStatus = ECmmRecordStatusBlank;
+    iDestApRecordStatus = ECmmRecordStatusBlank;
+    iMetadataRecordStatus = ECmmRecordStatusBlank;
+
+    iStatus = ECmmDestinationStatusChanged;
+    iId = 0;
+    iHandle = 0;
+
+    iProtectionChanged = EFalse;
+    iLastProtectionLevel = CMManager::EProtLevel0;
+    iCurrentProtectionLevel = CMManager::EProtLevel0;
+
+    OstTraceFunctionExit0( DUP1_CCMMDESTINATIONINSTANCE_CCMMDESTINATIONINSTANCE_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_CONSTRUCTL_ENTRY );
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_CONSTRUCTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Set the destination ID.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::SetId( const TUint32& aId )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_SETID_ENTRY );
+
+    iId = aId;
+
+    // If this is the real ID (not the temporary ID of a new unsaved destination),
+    // write it also into network record.
+    if ( aId > KCmmDestIdIntervalMin && aId < KCmmDestIdIntervalMax )
+        {
+        iNetworkRecord->SetRecordId( aId - KCmDefaultDestinationAPTagId );
+        iDestApRecord->iRecordTag = aId;
+        iDestApRecord->iCustomSelectionPolicy = ( aId - KCmDefaultDestinationAPTagId );
+        iMetadataRecord->iSNAP = aId;
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_SETID_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Get the destination ID.
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmmDestinationInstance::GetId() const
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_GETID_ENTRY );
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_GETID_EXIT );
+    return iId;
+    }
+
+// ---------------------------------------------------------------------------
+// Set the current status of this destination.
+// ECmmDestinationStatusValid: Contents in sync with database.
+// ECmmDestinationStatusChanged: Contents differ from database contents.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::SetStatus( const TCmmDestinationStatus& aStatus )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_SETSTATUS_ENTRY );
+
+    switch ( aStatus )
+        {
+        // Fallthrough intended
+        case ECmmDestinationStatusValid:
+        case ECmmDestinationStatusChanged:
+            iStatus = aStatus;
+            break;
+        default:
+            ASSERT(0); // Error, invalid status.
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_SETSTATUS_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Gets the current status of this destination instance.
+// ---------------------------------------------------------------------------
+//
+TCmmDestinationStatus CCmmDestinationInstance::GetStatus() const
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_GETSTATUS_ENTRY );
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_GETSTATUS_EXIT );
+    return iStatus;
+    }
+
+// ---------------------------------------------------------------------------
+// Get handle ID.
+// ---------------------------------------------------------------------------
+//
+TInt CCmmDestinationInstance::GetHandle() const
+    {
+    return iHandle;
+    }
+
+// ---------------------------------------------------------------------------
+// Set handle ID.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::SetHandle( const TInt& aHandle )
+    {
+    iHandle = aHandle;
+    }
+
+// ---------------------------------------------------------------------------
+// Set the record status for all records.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::SetStatusForAllRecords( const TCmmRecordStatus& aStatus )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_SETSTATUSFORALLRECORDS_ENTRY );
+
+    iDestApRecordStatus = aStatus;
+    iNetworkRecordStatus = aStatus;
+    iMetadataRecordStatus = aStatus;
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_SETSTATUSFORALLRECORDS_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Get the destination element ID.
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmmDestinationInstance::GetElementIdL()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_GETELEMENTIDL_ENTRY );
+
+    RefreshRecordL( ECmmDestNetworkRecord );
+
+    if ( !iNetworkRecord )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_GETELEMENTIDL_EXIT );
+    return iNetworkRecord->ElementId() & KCDMaskShowField;
+    }
+
+// ---------------------------------------------------------------------------
+// Get the destination access point record's record tag (destination ID).
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmmDestinationInstance::GetRecordTagFromApRecordL()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_GETRECORDTAGFROMAPRECORDL_ENTRY );
+
+    RefreshRecordL( ECmmDestApRecord );
+
+    if ( !iDestApRecord )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_GETRECORDTAGFROMAPRECORDL_EXIT );
+    return iDestApRecord->iRecordTag;
+    }
+
+// ---------------------------------------------------------------------------
+// Sets a record pointer to the one given as parameter, Ownership is
+// transfered. Also deletes the previous pointer and sets the record status
+// to 'ECmmRecordStatusLoaded'.
+// ---------------------------------------------------------------------------
+//
+TInt CCmmDestinationInstance::SetRecordPointer(
+        const TCmmDbRecords& aDestRecord,
+        CommsDat::CCDRecordBase* aRecordPointer )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_SETRECORDPOINTER_ENTRY );
+
+    TInt ret( KErrNone );
+    switch ( aDestRecord )
+        {
+        case ECmmDestNetworkRecord:
+            {
+            delete iNetworkRecord;
+            iNetworkRecord = static_cast<CommsDat::CCDNetworkRecord*>( aRecordPointer );
+            iNetworkRecordStatus = ECmmRecordStatusLoaded;
+            }
+            break;
+        case ECmmDestApRecord:
+            {
+            delete iDestApRecord;
+            iDestApRecord = static_cast<CommsDat::CCDAccessPointRecord*>( aRecordPointer );
+            iDestApRecordStatus = ECmmRecordStatusLoaded;
+            }
+            break;
+        case ECmmDestMetadataRecord:
+            {
+            delete iMetadataRecord;
+            iMetadataRecord = static_cast<CCDSNAPMetadataRecord*>( aRecordPointer );
+            iMetadataRecordStatus = ECmmRecordStatusLoaded;
+            }
+            break;
+        default:
+            {
+            ret = KErrNotFound;
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_SETRECORDPOINTER_EXIT );
+    return ret;
+    }
+
+// ---------------------------------------------------------------------------
+// Gets a reference to the requested record pointer.
+// ---------------------------------------------------------------------------
+//
+TInt CCmmDestinationInstance::GetRecordPointer(
+        const TCmmDbRecords& aDestRecord,
+        CommsDat::CCDRecordBase*& aRecordPointer )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_GETRECORDPOINTER_ENTRY );
+
+    TInt ret( KErrNone );
+    aRecordPointer = NULL;
+    switch ( aDestRecord )
+        {
+        case ECmmDestNetworkRecord:
+            {
+            aRecordPointer = static_cast<CommsDat::CCDRecordBase*>( iNetworkRecord );
+            }
+            break;
+        case ECmmDestApRecord:
+            {
+            aRecordPointer = static_cast<CommsDat::CCDRecordBase*>( iDestApRecord );
+            }
+            break;
+        case ECmmDestMetadataRecord:
+            {
+            aRecordPointer = static_cast<CommsDat::CCDRecordBase*>( iMetadataRecord );
+            }
+            break;
+        default:
+            {
+            ASSERT( 0 );
+            ret = KErrNotFound;
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_GETRECORDPOINTER_EXIT );
+    return ret;
+    }
+
+// ---------------------------------------------------------------------------
+// Save the contents of this destination into database. All connection methods
+// including embedded destination, that the client has open handles to, are
+// also updated.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::UpdateL()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_UPDATEL_ENTRY );
+
+    if ( AllMandatoryRecordsContainData() )
+        {
+        // Check for metadata conflicts.
+        if ( ConflictingMetadataFoundL() )
+            {
+            OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_UPDATEL_EXIT );
+
+            User::Leave( KErrAlreadyExists );
+            }
+
+        // Check that the destination name is still valid and not in use already.
+        if ( iCache->DestinationExistsWithNameL( iNetworkRecord->iRecordName.GetL(), iId ) )
+            {
+            OstTraceFunctionExit0( DUP1_CCMMDESTINATIONINSTANCE_UPDATEL_EXIT );
+
+            User::Leave( KErrAlreadyExists );
+            }
+
+        iCache->UpdateDestinationL( *this );
+        }
+    else
+        {
+        User::Leave( KErrCorrupt );
+        }
+
+    OstTraceFunctionExit0( DUP2_CCMMDESTINATIONINSTANCE_UPDATEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Get the destination name.
+// ---------------------------------------------------------------------------
+//
+TDesC& CCmmDestinationInstance::GetDestinationNameL()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_GETDESTINATIONNAMEL_ENTRY );
+
+    RefreshRecordL( ECmmDestNetworkRecord );
+
+    if ( !iNetworkRecord )
+        {
+        OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_GETDESTINATIONNAMEL_EXIT );
+
+        User::Leave( KErrCorrupt );
+        }
+
+    OstTraceFunctionExit0( DUP1_CCMMDESTINATIONINSTANCE_GETDESTINATIONNAMEL_EXIT );
+    return iNetworkRecord->iRecordName.GetL();
+    }
+
+// ---------------------------------------------------------------------------
+// Get the localised destination name.
+// ---------------------------------------------------------------------------
+//
+HBufC* CCmmDestinationInstance::GetLocalisedDestinationNameL()
+    {
+    RefreshRecordL( ECmmDestNetworkRecord );
+
+    if ( !iNetworkRecord )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
+    TUint32 purpose( 0 );
+    GetMetadataL( CMManager::ESnapMetadataPurpose, purpose );
+    HBufC* resolvedText( NULL );
+    TBool isLocalised( EFalse );
+    switch ( purpose )
+        {
+        case CMManager::ESnapPurposeInternet:
+            {
+            _LIT( KDestinationTextId, "txt_occ_dblist_internet");
+            resolvedText = CCmManagerTextResolver::ResolveTextL( KDestinationTextId );
+            isLocalised = ETrue;
+            }
+            break;
+        case CMManager::ESnapPurposeOperator:
+            {
+            _LIT( KDestinationTextId, "txt_occ_dblist_operator_services");
+            resolvedText = CCmManagerTextResolver::ResolveTextL( KDestinationTextId );
+            isLocalised = ETrue;
+            }
+            break;
+        case CMManager::ESnapPurposeIntranet:
+            {
+            _LIT( KDestinationTextId, "txt_occ_dblist_intranet");
+            resolvedText = CCmManagerTextResolver::ResolveTextL( KDestinationTextId );
+            isLocalised = ETrue;
+            }
+            break;
+        default:
+            break;
+        }
+
+    // Not Internet, operator or intranet...or something went wrong 
+    if ( !isLocalised || ( isLocalised && !resolvedText ) )
+        {
+        resolvedText = ( iNetworkRecord->iRecordName.GetL() ).AllocL();
+        }
+    
+    return resolvedText;
+    }
+
+// ---------------------------------------------------------------------------
+// Set the destination name.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::SetDestinationNameL( const TDesC& aDestinationName )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_SETDESTINATIONNAMEL_ENTRY );
+
+    //TODO, capability check depending on destination protection level, or if it is internet destination. Internet destination should be protected always?
+
+    // Write action, load all records.
+    LoadAllRecordsL();
+
+    iNetworkRecord->iRecordName.SetL( aDestinationName );
+    iDestApRecord->iRecordName.SetL( aDestinationName );
+
+    iNetworkRecordStatus = ECmmRecordStatusModified;
+    iDestApRecordStatus = ECmmRecordStatusModified;
+    iStatus = ECmmDestinationStatusChanged;
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_SETDESTINATIONNAMEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Get metadata of specified type.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::GetMetadataL(
+        const CMManager::TSnapMetadataField& aMetadataField,
+        TUint32& aMetadata )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_GETMETADATAL_ENTRY );
+
+    RefreshRecordL( ECmmDestMetadataRecord );
+
+    if ( !iMetadataRecord )
+        {
+        OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_GETMETADATAL_EXIT );
+
+        User::Leave( KErrCorrupt );
+        }
+
+    switch ( aMetadataField )
+        {
+        case CMManager::ESnapMetadataInternet:
+            aMetadata = ( TUint32 )( iMetadataRecord->iMetadata ) & CMManager::ESnapMetadataInternet;
+            break;
+        case CMManager::ESnapMetadataHighlight:
+            aMetadata = ( TUint32 )( iMetadataRecord->iMetadata ) & CMManager::ESnapMetadataHighlight;
+            break;
+        case CMManager::ESnapMetadataHiddenAgent:
+            aMetadata = ( TUint32 )( iMetadataRecord->iMetadata ) & CMManager::ESnapMetadataHiddenAgent;
+            break;
+        case CMManager::ESnapMetadataDestinationIsLocalised:
+            aMetadata = ( ( TUint32 )( iMetadataRecord->iMetadata ) & CMManager::ESnapMetadataDestinationIsLocalised ) >> 4;
+            break;
+        case CMManager::ESnapMetadataPurpose:
+            aMetadata = ( ( TUint32 )( iMetadataRecord->iMetadata ) & CMManager::ESnapMetadataPurpose ) >> 8;
+            break;
+        default:
+            User::Leave( KErrArgument );
+            break;
+        }
+
+    OstTraceFunctionExit0( DUP1_CCMMDESTINATIONINSTANCE_GETMETADATAL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Set metadata of specified type.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::SetMetadataL(
+        const CMManager::TSnapMetadataField& aMetadataField,
+        const TUint32& aMetadata )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_SETMETADATAL_ENTRY );
+
+    // Write action, load all records.
+    LoadAllRecordsL();
+
+    switch ( aMetadataField )
+        {
+        case CMManager::ESnapMetadataInternet:
+            SetMetadataInternetL( aMetadata );
+            break;
+        case CMManager::ESnapMetadataHighlight:
+            SetMetadataHighlight( aMetadata );
+            break;
+        case CMManager::ESnapMetadataHiddenAgent:
+            SetMetadataHiddenAgentL( aMetadata );
+            break;
+        case CMManager::ESnapMetadataDestinationIsLocalised:
+            SetMetadataLocalizationL( aMetadata );
+            break;
+        case CMManager::ESnapMetadataPurpose:
+            SetMetadataPurposeL( aMetadata );
+            break;
+        default:
+            User::Leave( KErrArgument );
+            break;
+        }
+
+    iMetadataRecordStatus = ECmmRecordStatusModified;
+    iStatus = ECmmDestinationStatusChanged;
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_SETMETADATAL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Get destination protection level.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::GetProtectionL( CMManager::TProtectionLevel& aProtectionLevel )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_GETPROTECTIONL_ENTRY );
+
+    RefreshRecordL( ECmmDestMetadataRecord );
+
+    if ( !iMetadataRecord )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
+    TUint32 value = ( ( TUint32 )( iMetadataRecord->iMetadata ) & KDestProtectionLevelMask ) >> KBitsToShiftDestProtectionLevel;
+    switch ( value )
+        {
+        case CMManager::EProtLevel0:
+            aProtectionLevel = CMManager::EProtLevel0;
+            break;
+        case CMManager::EProtLevel1:
+            aProtectionLevel = CMManager::EProtLevel1;
+            break;
+        case CMManager::EProtLevel2:
+            aProtectionLevel = CMManager::EProtLevel2;
+            break;
+        case CMManager::EProtLevel3:
+            aProtectionLevel = CMManager::EProtLevel3;
+            break;
+        default:
+            User::Leave( KErrCorrupt );
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_GETPROTECTIONL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Set destination protection level.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::SetProtectionL(
+        CMManager::TProtectionLevel aProtectionLevel )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_SETPROTECTIONL_ENTRY );
+
+    // Write action, load all records.
+    LoadAllRecordsL();
+
+    //TODO, verify capability check is done (NetworkControl).
+
+    iCurrentProtectionLevel = aProtectionLevel;
+    if ( !iProtectionChanged )
+        {
+        GetProtectionL( iLastProtectionLevel );
+        }
+    if ( aProtectionLevel == iLastProtectionLevel )
+        {
+        iProtectionChanged = EFalse;
+        }
+    else
+        {
+        iProtectionChanged = ETrue;
+        }
+
+    // Read current metadata without protection bits.
+    TUint32 currentMetadata =
+            ( ( TUint32 )( iMetadataRecord->iMetadata ) & ( ~KDestProtectionLevelMask ) );
+    // Add new protection bits.
+    iMetadataRecord->iMetadata =
+            currentMetadata | ( aProtectionLevel << KBitsToShiftDestProtectionLevel );
+
+    iMetadataRecordStatus = ECmmRecordStatusModified;
+    iStatus = ECmmDestinationStatusChanged;
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_SETPROTECTIONL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Return true if protection level has been changed. 
+// ---------------------------------------------------------------------------
+//
+TBool CCmmDestinationInstance::ProtectionChanged()
+    {
+    return iProtectionChanged;
+    }
+
+// ---------------------------------------------------------------------------
+// Return the previous valid protection level of this connection method
+// instance.
+// ---------------------------------------------------------------------------
+//
+CMManager::TProtectionLevel CCmmDestinationInstance::LastProtectionLevel()
+    {
+    return iLastProtectionLevel;
+    }
+
+// ---------------------------------------------------------------------------
+// Return the protection level currently set into this destination instance.
+// ---------------------------------------------------------------------------
+//
+CMManager::TProtectionLevel CCmmDestinationInstance::CurrentProtectionLevel()
+    {
+    return iCurrentProtectionLevel;
+    }
+
+// ---------------------------------------------------------------------------
+// Adds a connection method into this destination. Returns the index (priority)
+// in the connection method array where the connection method was added.
+// Embedded destinations can not be added with this method, use
+// AddEmbeddedDestinationL() instead.
+// ---------------------------------------------------------------------------
+//
+TInt CCmmDestinationInstance::AddConnMethodL(
+        const CCmmConnMethodInstance& aConnMethodInstance )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_ADDCONNMETHODL_ENTRY );
+
+    TUint32 connMethodId( aConnMethodInstance.GetId() );
+    TUint32 bearerType( aConnMethodInstance.GetBearerType() );
+
+    // Check that the connection method is not an embedded destination.
+    if ( bearerType == KUidEmbeddedDestination )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    // Check that the connection method is not already inside this destination.
+    for ( TInt i = 0; i < iConnMethodItemArray.Count(); i++ )
+        {
+        if ( connMethodId == iConnMethodItemArray[i].iId )
+            {
+            User::Leave( KErrAlreadyExists );
+            }
+        }
+
+    // Remove the connection method from delete list, if found there.
+    for ( TInt i = 0; i < iConnMethodsToBeDeleted.Count(); i++ )
+        {
+        if ( connMethodId == iConnMethodsToBeDeleted[i] )
+            {
+            iConnMethodsToBeDeleted.Remove( i );
+            break;
+            }
+        }
+
+    // Get the priority value of this connection method according to bearer.
+    TUint bearerPriority( 0 );
+    iCache->BearerPriorityFromIapRecordL(
+            ( CommsDat::CCDIAPRecord* )aConnMethodInstance.GetPluginDataInstance()->iGenRecordArray[KIapRecordIndex],
+            bearerPriority );
+    TCmmConnMethodItem item( connMethodId, bearerType, bearerPriority, 0 );
+
+    // Find out the correct position for the connection method inside this
+    // destination.
+    TInt index = iConnMethodItemArray.Count();
+    for ( TInt i = index - 1; i >= 0; i-- )
+        {
+        if ( iConnMethodItemArray[i].iBearerPriority ==
+                CMManager::KDataMobilitySelectionPolicyPriorityWildCard )
+            {
+            index = i;
+            continue;
+            }
+        if ( iConnMethodItemArray[i].iBearerPriority == bearerPriority )
+            {
+            break;
+            }
+        if ( iConnMethodItemArray[i].iBearerPriority > bearerPriority )
+            {
+            index = i;
+            }
+        }
+    // Add the connection method item into this destination at the correct
+    // position (priority).
+    iConnMethodItemArray.InsertL( item, index );
+
+    SetStatus( ECmmDestinationStatusChanged );
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_ADDCONNMETHODL_EXIT );
+    return index;
+    }
+
+// ---------------------------------------------------------------------------
+// Adds an embedded destination into this destination. Returns the index in
+// the connection method array where the connection method was added.
+// ---------------------------------------------------------------------------
+//
+TInt CCmmDestinationInstance::AddEmbeddedDestinationL(
+        const CCmmDestinationInstance& aEmbeddedDestinationInstance )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_ADDEMBEDDEDDESTINATIONL_ENTRY );
+
+    TUint32 embeddedDestinationId( aEmbeddedDestinationInstance.GetId() );
+
+    // Check that not adding itself.
+    if ( embeddedDestinationId == iId )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    // Check that the embedded destination is not already an embedded
+    // destination in this destination.
+    if ( HasEmbeddedWithId( embeddedDestinationId ) )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    // A destination can not be added into a destination that is itself an
+    // embedded destination.
+    if ( iCache->DestinationIsEmbedded( iId ) )
+        {
+        User::Leave( KErrNotSupported );
+        }
+
+    // A destination can not be added into a destination that already has an
+    // embedded destination.
+    if ( HasEmbedded() || iCache->DestinationHasEmbedded( iId ) )
+        {
+        User::Leave( KErrNotSupported );
+        }
+
+    // A destination that already has an embedded destination can not be added
+    // into a destination.
+    if ( aEmbeddedDestinationInstance.HasEmbedded() ||
+            iCache->DestinationHasEmbedded( embeddedDestinationId ) )
+        {
+        User::Leave( KErrNotSupported );
+        }
+
+    // Check session side destination instances for all clients.
+    // - Check that any destination instance does not contain aDestinationId as
+    //   embedded destination.
+    // - Check that any destination instance for aEmbeddedDestinationId does
+    //   not contain an embedded destination.
+    if ( iCmmSession->EmbeddedDestinationConflictsFromAllSessions( iId, embeddedDestinationId ) )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    // Add the embedded destination at the end of the connection method item array.
+    TInt index = iConnMethodItemArray.Count();
+    TCmmConnMethodItem item(
+            embeddedDestinationId,
+            KUidEmbeddedDestination,
+            CMManager::KDataMobilitySelectionPolicyPriorityWildCard,
+            0 );
+    iConnMethodItemArray.AppendL( item );
+
+    SetStatus( ECmmDestinationStatusChanged );
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_ADDEMBEDDEDDESTINATIONL_EXIT );
+    return index;
+    }
+
+// ---------------------------------------------------------------------------
+// Delete a connection method that belongs to this destination. If the
+// connection method belongs to any other destination, it is only removed from
+// this destination and not deleted. Does not call update.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::DeleteConnMethodFromDestinationL(
+        const CCmmConnMethodInstance& aConnMethodInstance )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_DELETECONNMETHODFROMDESTINATIONL_ENTRY );
+
+    // Check that the connection method is inside this destination.
+    TUint32 connMethodId( aConnMethodInstance.GetId() );
+    TInt index( KErrNotFound );
+    for ( TInt i = 0; i < iConnMethodItemArray.Count(); i++ )
+        {
+        if ( connMethodId == iConnMethodItemArray[i].iId )
+            {
+            index = i;
+            break;
+            }
+        }
+    if ( index < 0 )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    // Check if the connection method removal is blocked by any virtual IAPs.
+    if ( ConnMethodInDestinationButLocked( connMethodId ) )
+        {
+        User::Leave( KErrLocked );
+        }
+
+    // Check if any virtual IAP points to this connection method, thus blocking
+    // the delete.
+    if ( iCache->ConnMethodPointedToByVirtualIap( connMethodId ) )
+        {
+        User::Leave( KErrLocked );
+        }
+
+    // Check that the connection method is not in use by an active connection.
+    if ( iCache->CheckIfCmConnected( connMethodId ) )
+        {
+        User::Leave( KErrInUse );
+        }
+
+    // This will also remove an embedded destination.
+    iConnMethodItemArray.Remove( index );
+    SetStatus( ECmmDestinationStatusChanged );
+
+    // If this connection method is an embedded destination, then removing it
+    // from this destination is enough. The destination is not deleted.
+    if ( aConnMethodInstance.GetBearerType() != KUidEmbeddedDestination )
+        {
+        // Add connection method to delete list only if not referenced from any
+        // other destination (in database or in any destination handles for the
+        // client currently beeing served).
+        if ( !iCache->ConnMethodInOtherDestination( connMethodId, iId ) &&
+                !iCmmSession->ConnMethodInOtherDestination( connMethodId, iId ) )
+            {
+            if ( iConnMethodsToBeDeleted.Find( connMethodId ) == KErrNotFound )
+                {
+                iConnMethodsToBeDeleted.AppendL( connMethodId );
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_DELETECONNMETHODFROMDESTINATIONL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Remove a connection method from this destination. If the second attribute
+// aTestIfConnected is false, the test to check if connection method is in use
+// is skipped. In this case this should have been already tested by the caller.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::RemoveConnMethodFromDestinationL(
+        const CCmmConnMethodInstance& aConnMethodInstance,
+        const TBool& aTestIfConnected )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_REMOVECONNMETHODFROMDESTINATIONL_ENTRY );
+
+    // Check that the connection method is inside this destination.
+    TUint32 connMethodId( aConnMethodInstance.GetId() );
+    TInt index( KErrNotFound );
+    for ( TInt i = 0; i < iConnMethodItemArray.Count(); i++ )
+        {
+        if ( connMethodId == iConnMethodItemArray[i].iId )
+            {
+            index = i;
+            break;
+            }
+        }
+    if ( index < 0 )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    // Check if the connection method removal is blocked by any virtual IAPs.
+    if ( ConnMethodInDestinationButLocked( connMethodId ) )
+        {
+        User::Leave( KErrLocked );
+        }
+
+    if ( aTestIfConnected )
+        {
+        // Check that the connection method is not in use by an active connection.
+        if ( iCache->CheckIfCmConnected( connMethodId ) )
+            {
+            User::Leave( KErrInUse );
+            }
+        }
+
+    // This will also remove an embedded destination.
+    iConnMethodItemArray.Remove( index );
+    SetStatus( ECmmDestinationStatusChanged );
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_REMOVECONNMETHODFROMDESTINATIONL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Modifies the priority of a connection method inside this destination.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::ModifyConnMethodPriorityL(
+        const CCmmConnMethodInstance& aConnMethodInstance,
+        TUint aIndex )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_MODIFYCONNMETHODPRIORITYL_ENTRY );
+
+    // Check if the connection method is in this destination. Also store the
+    // current index of the connection method.
+    TInt oldIndex( KErrNotFound );
+    for ( TInt i = 0; i < iConnMethodItemArray.Count(); i++ )
+        {
+        if ( iConnMethodItemArray[i].iId == aConnMethodInstance.GetId() )
+            {
+            oldIndex = i;
+            break;
+            }
+        }
+    if ( oldIndex < 0 )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    // If connection method is an embedded destination, just return silently.
+    if ( aConnMethodInstance.GetBearerType() == KUidEmbeddedDestination )
+        {
+        OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_MODIFYCONNMETHODPRIORITYL_EXIT );
+        return;
+        }
+
+    //TODO, if CM is virtual IAP that points into DESTINATION, just return silently.
+    //
+    //
+
+    // Check index range.
+    if ( aIndex >= iConnMethodItemArray.Count() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    // If the given index points to any wildcard priority connection method,
+    // adjust it so it points to the last priority position.
+    TUint numberOfConnMethodsWithPriority( NumberOfConnMethodsWithPriority() );
+    if ( aIndex >= numberOfConnMethodsWithPriority )
+        {
+        if ( numberOfConnMethodsWithPriority == 0 )
+            {
+            // Can't be 0, since aConnMethodInstance is not a wildcard IAP and
+            // is in the array.
+            ASSERT( 0 );
+            User::Leave( KErrCorrupt );
+            }
+        aIndex = numberOfConnMethodsWithPriority--;
+        }
+
+    // Check if the priority is changing from current.
+    if ( oldIndex == aIndex )
+        {
+        OstTraceFunctionExit0( DUP1_CCMMDESTINATIONINSTANCE_MODIFYCONNMETHODPRIORITYL_EXIT );
+        return;
+        }
+
+    // Change the location of the connection method to reflect the new priority.
+    TCmmConnMethodItem item = iConnMethodItemArray[oldIndex];
+    iConnMethodItemArray.Remove( oldIndex );
+    iConnMethodItemArray.InsertL( item, ( TInt )aIndex );
+
+    SetStatus( ECmmDestinationStatusChanged );
+
+    OstTraceFunctionExit0( DUP2_CCMMDESTINATIONINSTANCE_MODIFYCONNMETHODPRIORITYL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Finds a connection method instance that belongs to the same session and
+// matches the provided ID. Return NULL if no match is found.
+// ---------------------------------------------------------------------------
+//
+CCmmConnMethodInstance* CCmmDestinationInstance::FindConnMethodInstanceFromSessionById(
+        const TUint32& aConnMethodId ) const
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_FINDCONNMETHODINSTANCEFROMSESSIONBYID_ENTRY );
+
+    CCmmConnMethodInstance* connMethodInstance = iCmmSession->
+            FindConnMethodInstanceById( aConnMethodId );
+
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_FINDCONNMETHODINSTANCEFROMSESSIONBYID_EXIT );
+    return connMethodInstance;
+    }
+
+// ---------------------------------------------------------------------------
+// Finds a destination instance that belongs to the same session and matches
+// the provided ID. Return NULL if no match is found.
+// ---------------------------------------------------------------------------
+//
+CCmmDestinationInstance* CCmmDestinationInstance::FindDestinationInstanceFromSessionById(
+        const TUint32& aDestinationId ) const
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_FINDDESTINATIONINSTANCEFROMSESSIONBYID_ENTRY );
+
+    CCmmDestinationInstance* destInstance =
+            iCmmSession->FindDestinationInstanceById( aDestinationId );
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_FINDDESTINATIONINSTANCEFROMSESSIONBYID_EXIT );
+    return destInstance;
+    }
+
+// ---------------------------------------------------------------------------
+// Check from all open destination handles in the same session if the given
+// connection method is inside any of them. The given destination is skipped.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmDestinationInstance::ConnMethodInOtherDestinationInSession(
+        const TUint32& aConnMethodId,
+        const TUint32& aDestinationId ) const
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_CONNMETHODINOTHERDESTINATIONINSESSION_ENTRY );
+
+    TBool inOtherSession = iCmmSession->
+            ConnMethodInOtherDestination( aConnMethodId, aDestinationId );
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_CONNMETHODINOTHERDESTINATIONINSESSION_EXIT );
+    return inOtherSession;
+    }
+
+// ---------------------------------------------------------------------------
+// Check if the given connection method is in this destination. Include
+// embedded destinations.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmDestinationInstance::ValidConnMethodIdInDestinationIncludeEmbedded( const TUint32& aConnMethodId ) const
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_VALIDCONNMETHODIDINDESTINATIONINCLUDEEMBEDDED_ENTRY );
+
+    TBool validity( EFalse );
+    if ( aConnMethodId > 0 )
+        {
+        for ( TInt i = 0; i < iConnMethodItemArray.Count(); i++ )
+            {
+            if ( iConnMethodItemArray[i].iId == aConnMethodId )
+                {
+                validity = ETrue;
+                break;
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_VALIDCONNMETHODIDINDESTINATIONINCLUDEEMBEDDED_EXIT );
+    return validity;
+    }
+
+// ---------------------------------------------------------------------------
+// Check if the given connection method is inside this destination and if it
+// is in a 'locked' status. A locked connection method can't be deleted nor
+// removed from the destination. A connection method becomes locked if it is
+// the only remaining connection method in a destination and a virtual IAP
+// points into that destination.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmDestinationInstance::ConnMethodInDestinationButLocked(
+        const TUint32& aConnMethodId ) const
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_CONNMETHODINDESTINATIONBUTLOCKED_ENTRY );
+
+    TBool result( EFalse );
+    if ( iConnMethodItemArray.Count() == 1 )
+        {
+        if ( iConnMethodItemArray[0].iId == aConnMethodId )
+            {
+            if ( iCache->DestinationPointedToByVirtualIap( iId ) )
+                {
+                result = ETrue;
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_CONNMETHODINDESTINATIONBUTLOCKED_EXIT );
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// Counts how many connection methods that require priority information are
+// currently in this destination. This excludes any virtual IAPs that point to
+// a destination or any embedded destinations from the count. Assumes the
+// connection method array is in order so all wildcard priority IAPs are at the
+// end of the list.
+// ---------------------------------------------------------------------------
+//
+TUint CCmmDestinationInstance::NumberOfConnMethodsWithPriority() const
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_NUMBEROFCONNMETHODSWITHPRIORITY_ENTRY );
+
+    TUint count( iConnMethodItemArray.Count() );
+
+    for ( TUint i = 0; i < iConnMethodItemArray.Count(); i++ )
+        {
+        //TODO, add virtual IAP pointing to SNAP check.
+        if ( iConnMethodItemArray[i].iBearerType == KUidEmbeddedDestination )
+            {
+            count = i;
+            break;
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_NUMBEROFCONNMETHODSWITHPRIORITY_EXIT );
+    return count;
+    }
+
+// ---------------------------------------------------------------------------
+// Check if this destination has an embedded destination. Checks the current
+// (possibly unsaved) status of this destination handle, not the current status
+// in database.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmDestinationInstance::HasEmbedded() const
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_HASEMBEDDED_ENTRY );
+
+    TBool result( EFalse );
+
+    // If there is an embedded destination, it will be at the very last
+    // position in the connection method item array.
+    TInt index = iConnMethodItemArray.Count() - 1;
+    if ( index >= 0 )
+        {
+        if ( iConnMethodItemArray[index].iBearerType == KUidEmbeddedDestination )
+            {
+            result = ETrue;
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_HASEMBEDDED_EXIT );
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// Check if this destination has an embedded destination with the specified ID.
+// Checks the current (possibly unsaved) status of this destination handle, not
+// the current status in database.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmDestinationInstance::HasEmbeddedWithId( const TUint32& aDestinationId ) const
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_HASEMBEDDEDWITHID_ENTRY );
+
+    TBool result( EFalse );
+
+    // If there is an embedded destination, it will be at the very last
+    // position in the connection method item array.
+    TInt index = iConnMethodItemArray.Count() - 1;
+    if ( index >= 0 )
+        {
+        // No need to check bearer, since ID will not match anyway if the last
+        // item is not an embedded destination.
+        if ( iConnMethodItemArray[index].iId == aDestinationId )
+            {
+            result = ETrue;
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_HASEMBEDDEDWITHID_EXIT );
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// After update/delete to database, refresh temporary ID to real ID if
+// necessary and refresh status information for any related handles for
+// all client sessions.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::RefreshHandlesForAllSessions( const TCmmIdStruct& aIdStruct )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_REFRESHHANDLESFORALLSESSIONS_ENTRY );
+
+    iCmmSession->RefreshHandlesForAllSessions( aIdStruct );
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_REFRESHHANDLESFORALLSESSIONS_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// If the destination contains a connection method with matching temporary ID,
+// updates the ID to real ID. This is done after the connection method has been
+// successfully saved into the database.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::RefreshConnMethodId( const TCmmIdStruct& aIdStruct )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_REFRESHCONNMETHODID_ENTRY );
+
+    for ( TInt i = 0; i < iConnMethodItemArray.Count(); i++ )
+        {
+        if ( iConnMethodItemArray[i].iId == aIdStruct.iTemporaryId )
+            {
+            iConnMethodItemArray[i].iId = aIdStruct.iRealId;
+            break;
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_REFRESHCONNMETHODID_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Called after this destination has been updated and database transaction has
+// completed successfully. Sets the internal state of this destination instance
+// to reflect the new valid state.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::UpdateSuccessful()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_UPDATESUCCESSFUL_ENTRY );
+
+    SetStatus( ECmmDestinationStatusValid );
+    SetStatusForAllRecords( ECmmRecordStatusLoaded );
+    iConnMethodsToBeDeleted.Reset();
+    iProtectionChanged = EFalse;
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_UPDATESUCCESSFUL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Checks if all mandatory records contain data and are ready to be saved into
+// database.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmDestinationInstance::AllMandatoryRecordsContainData() const
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_ALLMANDATORYRECORDSCONTAINDATA_ENTRY );
+
+    TBool result( ETrue );
+
+    if ( iNetworkRecordStatus != ECmmRecordStatusLoaded &&
+            iNetworkRecordStatus != ECmmRecordStatusExpired &&
+            iNetworkRecordStatus != ECmmRecordStatusModified )
+        {
+        result = EFalse;
+        }
+    if ( iDestApRecordStatus != ECmmRecordStatusLoaded &&
+            iDestApRecordStatus != ECmmRecordStatusExpired &&
+            iDestApRecordStatus != ECmmRecordStatusModified )
+        {
+        result = EFalse;
+        }
+    if ( iMetadataRecordStatus != ECmmRecordStatusLoaded &&
+            iMetadataRecordStatus != ECmmRecordStatusExpired &&
+            iMetadataRecordStatus != ECmmRecordStatusModified )
+        {
+        result = EFalse;
+        }
+    if ( !iNetworkRecord || !iDestApRecord || !iMetadataRecord )
+        {
+        result = EFalse;
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_ALLMANDATORYRECORDSCONTAINDATA_EXIT );
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// Loads a certain type of record from database if it is not up-to-date.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::RefreshRecordL( TCmmDbRecords aRecordType )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_REFRESHRECORDL_ENTRY );
+
+    TCmmRecordStatus status( ECmmRecordStatusBlank );
+    switch ( aRecordType )
+        {
+        case ECmmDestNetworkRecord:
+            status = iNetworkRecordStatus;
+            break;
+        case ECmmDestApRecord:
+            status = iDestApRecordStatus;
+            break;
+        case ECmmDestMetadataRecord:
+            status = iMetadataRecordStatus;
+            break;
+        default:
+            User::Leave( KErrCorrupt ); // Error, unknown type.
+            break;
+        }
+
+    switch ( status )
+        {
+        // Fallthrough intended
+        case ECmmRecordStatusBlank:
+        case ECmmRecordStatusExpired:
+            iCache->LoadDestinationRecordL( *this, aRecordType );
+            break;
+        case ECmmRecordStatusLoaded:
+        case ECmmRecordStatusModified:
+            // Record is up-to-date.
+            break;
+        case ECmmRecordStatusUnsaved:
+        default:
+            User::Leave( KErrCorrupt ); // Error, unknown status.
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_REFRESHRECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Loads all records from database that are not up-to-date.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::LoadAllRecordsL()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_LOADALLRECORDSL_ENTRY );
+
+    RefreshRecordL( ECmmDestNetworkRecord );
+    RefreshRecordL( ECmmDestApRecord );
+    RefreshRecordL( ECmmDestMetadataRecord );
+
+    if ( !iNetworkRecord || !iDestApRecord || !iMetadataRecord )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_LOADALLRECORDSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Set metadata of type ESnapMetadataInternet.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::SetMetadataInternetL( const TUint32& aMetadata )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_SETMETADATAINTERNETL_ENTRY );
+
+    if ( aMetadata )
+        {
+        if ( iCache->DestinationExistsWithMetadataLocalizedL( *this, CMManager::ELocalisedDestInternet ) )
+            {
+            User::Leave( KErrAlreadyExists );
+            }
+        // Clear ESnapMetadataHiddenAgent-bit.
+        TUint32 value = iMetadataRecord->iMetadata & ( ~CMManager::ESnapMetadataHiddenAgent );
+
+        // Set old ESnapMetadataInternet-bit.
+        value = value | CMManager::ESnapMetadataInternet;
+
+        // Clear ESnapMetadataDestinationIsLocalised-bits.
+        value = value & ( ~CMManager::ESnapMetadataDestinationIsLocalised );
+        // Set ELocalisedDestInternet-value.
+        iMetadataRecord->iMetadata = value | ( CMManager::ELocalisedDestInternet << 4 );
+        value = value | ( CMManager::ELocalisedDestInternet << 4 );
+
+        // Clear ESnapMetadataPurpose-bits.
+        value = value & ( ~CMManager::ESnapMetadataPurpose );
+        // Set ESnapPurposeInternet-value.
+        iMetadataRecord->iMetadata = value | ( CMManager::ESnapPurposeInternet << 8 );
+        }
+    else
+        {
+        // Clear old ESnapMetadataInternet-bit, ESnapMetadataDestinationIsLocalised-bits and CMManager::ESnapMetadataPurpose-bits.
+        TUint32 temp = ~( CMManager::ESnapMetadataInternet | CMManager::ESnapMetadataDestinationIsLocalised | CMManager::ESnapMetadataPurpose );
+        iMetadataRecord->iMetadata = iMetadataRecord->iMetadata & temp;
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_SETMETADATAINTERNETL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Set metadata of type ESnapMetadataHighlight.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::SetMetadataHighlight( const TUint32& aMetadata )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_SETMETADATAHIGHLIGHTL_ENTRY );
+
+    // TODO: Old CmManager does not perform any duplicate checks when setting highlight.
+    // Now with single click this is not used anymore anyway. So I suggest we don't add any checks here.
+    if ( aMetadata )
+        {
+        // Set ESnapMetadataHighlight-bit.
+        iMetadataRecord->iMetadata = iMetadataRecord->iMetadata | CMManager::ESnapMetadataHighlight;
+        }
+    else
+        {
+        // Clear ESnapMetadataHighlight-bit.
+        iMetadataRecord->iMetadata = iMetadataRecord->iMetadata & ( ~CMManager::ESnapMetadataHighlight );
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_SETMETADATAHIGHLIGHTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Set metadata of type ESnapMetadataHiddenAgent.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::SetMetadataHiddenAgentL( const TUint32& aMetadata )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_SETMETADATAHIDDENAGENTL_ENTRY );
+
+    if ( aMetadata )
+        {
+        TUint32 metadataInternet(    iMetadataRecord->iMetadata & CMManager::ESnapMetadataInternet                      );
+        TUint32 metadataLocalized( ( iMetadataRecord->iMetadata & CMManager::ESnapMetadataDestinationIsLocalised ) >> 4 );
+        TUint32 metadataPurpose(   ( iMetadataRecord->iMetadata & CMManager::ESnapMetadataPurpose                ) >> 8 );
+        if ( metadataInternet ||
+                ( metadataLocalized == CMManager::ELocalisedDestInternet ) ||
+                ( metadataPurpose == CMManager::ESnapPurposeInternet ) )
+            {
+            // Not allowed to set ESnapMetadataHiddenAgent if destination is localized or has purpose set.
+            User::Leave( KErrArgument );
+            }
+        // Set ESnapMetadataHiddenAgent-bit.
+        iMetadataRecord->iMetadata = iMetadataRecord->iMetadata | CMManager::ESnapMetadataHiddenAgent;
+        }
+    else
+        {
+        // Clear ESnapMetadataHiddenAgent-bit.
+        iMetadataRecord->iMetadata = iMetadataRecord->iMetadata & ( ~CMManager::ESnapMetadataHiddenAgent );
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_SETMETADATAHIDDENAGENTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Set metadata of type ESnapMetadataDestinationIsLocalised.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::SetMetadataLocalizationL( const TUint32& aMetadata )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_SETMETADATALOCALIZATIONL_ENTRY );
+
+    // Check that aMetadata is within valid range.
+    if ( aMetadata > CMManager::ELocalisedDestIntranet )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TUint32 temp = ~( CMManager::ESnapMetadataInternet | CMManager::ESnapMetadataDestinationIsLocalised | CMManager::ESnapMetadataPurpose );
+    if ( aMetadata == CMManager::ENotLocalisedDest )
+        {
+        // Clear old ESnapMetadataInternet-bit, ESnapMetadataDestinationIsLocalised-bits and ESnapMetadataPurpose-bits.
+        iMetadataRecord->iMetadata = iMetadataRecord->iMetadata & temp;
+        }
+    else
+        {
+        if ( iCache->DestinationExistsWithMetadataLocalizedL( *this, aMetadata ) )
+            {
+            User::Leave( KErrAlreadyExists );
+            }
+
+        // Clear old ESnapMetadataInternet-bit, ESnapMetadataDestinationIsLocalised-bits and ESnapMetadataPurpose-bits.
+        TUint32 value = iMetadataRecord->iMetadata & temp;
+        switch ( aMetadata )
+            {
+            case CMManager::ELocalisedDestInternet:
+                {
+                // Clear ESnapMetadataHiddenAgent-bit.
+                value = value & ( ~CMManager::ESnapMetadataHiddenAgent );
+                // Set old ESnapMetadataInternet-bit.
+                value = value | CMManager::ESnapMetadataInternet;
+                // Set ESnapPurposeInternet-value.
+                value = value | ( CMManager::ESnapPurposeInternet << 8 );
+                }
+                break;
+            case CMManager::ELocalisedDestWap:
+                {
+                // Set ESnapPurposeOperator-value.
+                value = value | ( CMManager::ESnapPurposeOperator << 8 );
+                }
+                break;
+            case CMManager::ELocalisedDestMMS:
+                {
+                // Set ESnapMetadataHiddenAgent-bit.
+                value = value | CMManager::ESnapMetadataHiddenAgent;
+                // Set ESnapPurposeMMS-value.
+                value = value | ( CMManager::ESnapPurposeMMS << 8 );
+                }
+                break;
+            case CMManager::ELocalisedDestIntranet:
+                {
+                // Set ESnapPurposeIntranet-value.
+                value = value | ( CMManager::ESnapPurposeIntranet << 8 );
+                }
+                break;
+            default:
+                User::Leave( KErrArgument );
+                break;
+            }
+        // Set ESnapMetadataDestinationIsLocalised-value.
+        iMetadataRecord->iMetadata = value | ( aMetadata << 4 );
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_SETMETADATALOCALIZATIONL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Set metadata of type ESnapMetadataPurpose.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationInstance::SetMetadataPurposeL( const TUint32& aMetadata )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_SETMETADATAPURPOSEL_ENTRY );
+
+    // Check that aMetadata is within valid range.
+    if ( aMetadata > CMManager::ESnapPurposeIntranet )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TUint32 temp = ~( CMManager::ESnapMetadataInternet | CMManager::ESnapMetadataDestinationIsLocalised | CMManager::ESnapMetadataPurpose );
+    if ( aMetadata == CMManager::ESnapPurposeUnknown )
+        {
+        // Clear old ESnapMetadataInternet-bit, ESnapMetadataDestinationIsLocalised-bits and ESnapMetadataPurpose-bits.
+        iMetadataRecord->iMetadata = iMetadataRecord->iMetadata & temp;
+        }
+    else
+        {
+        if ( iCache->DestinationExistsWithMetadataPurposeL( *this, aMetadata ) )
+            {
+            User::Leave( KErrAlreadyExists );
+            }
+
+        // Clear old ESnapMetadataInternet-bit, ESnapMetadataDestinationIsLocalised-bits and ESnapMetadataPurpose-bits.
+        TUint32 value = iMetadataRecord->iMetadata & temp;
+
+        switch ( aMetadata )
+            {
+            case CMManager::ESnapPurposeInternet:
+                {
+                // Clear ESnapMetadataHiddenAgent-bit.
+                value = value & ( ~CMManager::ESnapMetadataHiddenAgent );
+                // Set old ESnapMetadataInternet-bit.
+                value = value | CMManager::ESnapMetadataInternet;
+                // Set ELocalisedDestInternet-value.
+                value = value | ( CMManager::ELocalisedDestInternet << 4 );
+                }
+                break;
+            case CMManager::ESnapPurposeOperator:
+                {
+                // Set ELocalisedDestWap-value.
+                value = value | ( CMManager::ELocalisedDestWap << 4 );
+                }
+                break;
+            case CMManager::ESnapPurposeMMS:
+                {
+                // Set ESnapMetadataHiddenAgent-bit.
+                value = value | CMManager::ESnapMetadataHiddenAgent;
+                // Set ELocalisedDestMMS-value.
+                value = value | ( CMManager::ELocalisedDestMMS << 4 );
+                }
+                break;
+            case CMManager::ESnapPurposeIntranet:
+                {
+                // Set ELocalisedDestIntranet-value.
+                value = value | ( CMManager::ELocalisedDestIntranet << 4 );
+                }
+                break;
+            default:
+                User::Leave( KErrArgument );
+                break;
+            }
+        // Set ESnapMetadataPurpose-value.
+        iMetadataRecord->iMetadata = value | ( aMetadata << 8 );
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_SETMETADATAPURPOSEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Checks the current metadata for this destination, and verifies there is no
+// other conflicting destinations in the database.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmDestinationInstance::ConflictingMetadataFoundL()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONINSTANCE_CONFLICTINGMETADATAFOUNDL_ENTRY );
+
+    TBool result( EFalse );
+    TUint32 metadataInternet(    iMetadataRecord->iMetadata & CMManager::ESnapMetadataInternet                      );
+    TUint32 metadataLocalized( ( iMetadataRecord->iMetadata & CMManager::ESnapMetadataDestinationIsLocalised ) >> 4 );
+    TUint32 metadataPurpose(   ( iMetadataRecord->iMetadata & CMManager::ESnapMetadataPurpose                ) >> 8 );
+
+    if ( metadataPurpose )
+        {
+        // Some metadata is set, need to check conflicts in database.
+        switch ( metadataPurpose )
+            {
+            // Fallthrough intended.
+            case CMManager::ESnapPurposeInternet:
+            case CMManager::ESnapPurposeOperator:
+            case CMManager::ESnapPurposeMMS:
+            case CMManager::ESnapPurposeIntranet:
+                result = iCache->DestinationExistsWithMetadataPurposeL( *this, metadataPurpose );
+                break;
+            default:
+                User::Leave( KErrCorrupt ); // Invalid metadata.
+                break;
+            }
+        }
+    else if ( metadataLocalized )
+        {
+        // Error, metadataPurpose was not set. Continue anyway.
+        switch ( metadataLocalized )
+            {
+            // Fallthrough intended.
+            case CMManager::ELocalisedDestInternet:
+            case CMManager::ELocalisedDestWap:
+            case CMManager::ELocalisedDestMMS:
+            case CMManager::ELocalisedDestIntranet:
+                result = iCache->DestinationExistsWithMetadataLocalizedL( *this, metadataLocalized );
+                break;
+            default:
+                User::Leave( KErrCorrupt ); // Invalid metadata.
+                break;
+            }
+        }
+    else if ( metadataInternet )
+        {
+        // Error, metadataPurpose and metadataLocalized was not set. Continue anyway.
+        result = iCache->DestinationExistsWithMetadataLocalizedL( *this, CMManager::ELocalisedDestInternet );
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONINSTANCE_CONFLICTINGMETADATAFOUNDL_EXIT );
+    return result;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmdestinationstruct.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,1336 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Cache side object representing a destination.
+*
+*/
+
+
+#include <datamobilitycommsdattypes.h>
+#include <cmpluginembdestinationdef.h>
+#include <in_sock.h> // KAfInet
+
+#include "cmmdestinationstruct.h"
+#include "cmmtransactionhandler.h"
+#include "cmmdestinationinstance.h"
+#include "cmmcache.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmdestinationstructTraces.h"
+#endif
+
+const TUint KDefaultTierManagerTagId = KAfInet;
+
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// Opens a destination from database based on ID.
+// ---------------------------------------------------------------------------
+//
+CCmmDestinationStruct* CCmmDestinationStruct::NewL(
+        CCmmCache* aCache,
+        CCmmTransactionHandler* aTransactionHandler,
+        const TUint32& aDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_NEWL_ENTRY );
+
+    CCmmDestinationStruct* self = CCmmDestinationStruct::NewLC( aCache, aTransactionHandler, aDestinationId );
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_NEWL_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// Creates a new destination with name and ID (optional).
+// If ID is 0, a free ID will be used when destination is saved to database.
+// ---------------------------------------------------------------------------
+//
+CCmmDestinationStruct* CCmmDestinationStruct::NewL(
+        CCmmCache* aCache,
+        CCmmTransactionHandler* aTransactionHandler,
+        const TDesC& aName,
+        const TUint32& aDestinationId )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMMDESTINATIONSTRUCT_NEWL_ENTRY );
+
+    CCmmDestinationStruct* self = CCmmDestinationStruct::NewLC( aCache, aTransactionHandler, aName, aDestinationId );
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( DUP1_CCMMDESTINATIONSTRUCT_NEWL_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// Opens a destination from database based on ID.
+// ---------------------------------------------------------------------------
+//
+CCmmDestinationStruct* CCmmDestinationStruct::NewLC(
+        CCmmCache* aCache,
+        CCmmTransactionHandler* aTransactionHandler,
+        const TUint32& aDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_NEWLC_ENTRY );
+
+    CCmmDestinationStruct* self = new( ELeave ) CCmmDestinationStruct( aCache, aTransactionHandler );
+    CleanupStack::PushL( self );
+    self->ConstructL( aDestinationId );
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_NEWLC_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// Creates a new destination with name and ID (optional).
+// If ID is 0, a free ID will be used when destination is saved to database.
+// ---------------------------------------------------------------------------
+//
+CCmmDestinationStruct* CCmmDestinationStruct::NewLC(
+        CCmmCache* aCache,
+        CCmmTransactionHandler* aTransactionHandler,
+        const TDesC& aName,
+        const TUint32& aDestinationId )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMMDESTINATIONSTRUCT_NEWLC_ENTRY );
+
+    CCmmDestinationStruct* self = new( ELeave ) CCmmDestinationStruct( aCache, aTransactionHandler );
+    CleanupStack::PushL( self );
+    self->ConstructL( aName, aDestinationId );
+
+    OstTraceFunctionExit0( DUP1_CCMMDESTINATIONSTRUCT_NEWLC_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// Cancels any active requests.
+// ---------------------------------------------------------------------------
+//
+CCmmDestinationStruct::~CCmmDestinationStruct()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_CCMMDESTINATIONSTRUCT_ENTRY );
+
+    if ( iReferenceCounter != 0 )
+        {
+        ASSERT(0); // Error.
+        }
+    delete iNetworkRecord;
+    delete iDestApRecord;
+    delete iMetadataRecord;
+    delete iName;
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_CCMMDESTINATIONSTRUCT_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------------------------
+//
+CCmmDestinationStruct::CCmmDestinationStruct(
+        CCmmCache* aCache,
+        CCmmTransactionHandler* aTransactionHandler )
+        :
+        iCache( aCache ),
+        iTransactionHandler( aTransactionHandler )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMMDESTINATIONSTRUCT_CCMMDESTINATIONSTRUCT_ENTRY );
+
+    iDestApRecord = NULL;
+    iNetworkRecord = NULL;
+    iMetadataRecord = NULL;
+    iDestApRecordStatus = ECmmRecordStatusBlank;
+    iNetworkRecordStatus = ECmmRecordStatusBlank;
+    iMetadataRecordStatus = ECmmRecordStatusBlank;
+    iReferenceCounter = 0;
+    iStatus = ECmmDestinationStatusNotSaved;
+    iId = 0;
+    iName = NULL;
+
+    OstTraceFunctionExit0( DUP1_CCMMDESTINATIONSTRUCT_CCMMDESTINATIONSTRUCT_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor.
+// Opens an existing destination based on ID.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationStruct::ConstructL( const TUint32& aDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_CONSTRUCTL_ENTRY );
+
+    // Check ID is in valid range.
+    if ( aDestinationId <= KCmDefaultDestinationAPTagId || aDestinationId >= KCmMaxDestinationAPTagId )
+        {
+        User::Leave( KErrArgument );
+        }
+    iId = aDestinationId;
+
+    iDestApRecord = static_cast<CommsDat::CCDAccessPointRecord*>(
+            CommsDat::CCDRecordBase::RecordFactoryL( CommsDat::KCDTIdAccessPointRecord ) );
+    iNetworkRecord = static_cast<CommsDat::CCDNetworkRecord*>(
+            CommsDat::CCDRecordBase::RecordFactoryL( CommsDat::KCDTIdNetworkRecord ) );
+    iMetadataRecord = new( ELeave ) CCDSNAPMetadataRecord(
+            iCache->TableId( ECmmDestMetadataRecord ) );
+
+    // Load access point record.
+    iDestApRecord->iRecordTag = iId;
+    if ( iDestApRecord->FindL( iTransactionHandler->Session() ) )
+        {
+        iDestApRecord->LoadL( iTransactionHandler->Session() );
+        }
+    else
+        {
+        User::Leave( KErrNotFound );
+        }
+    iDestApRecordStatus = ECmmRecordStatusLoaded;
+
+    // Load network record.
+    iNetworkRecord->SetRecordId( iDestApRecord->iCustomSelectionPolicy );
+    iNetworkRecord->LoadL( iTransactionHandler->Session() );
+    iNetworkRecordStatus = ECmmRecordStatusLoaded;
+
+    // Load metadata record.
+    iMetadataRecord->iSNAP = iId;
+    if ( !iMetadataRecord->FindL( iTransactionHandler->Session() ) )
+        {
+        // Not found -> fill in with default values.
+        iMetadataRecord->iSNAP = iId;
+        iMetadataRecord->iMetadata = 0;
+        iMetadataRecord->iIcon = 0;
+        iMetadataRecord->SetRecordId( KCDNewRecordRequest );
+        iMetadataRecordStatus = ECmmRecordStatusUnsaved;
+        }
+    else
+        {
+        iMetadataRecord->LoadL( iTransactionHandler->Session() );
+        iMetadataRecordStatus = ECmmRecordStatusLoaded;
+        }
+
+    SetStatus( ECmmDestinationStatusValid );
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_CONSTRUCTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor.
+// Creates a new destination. With name and optionally also with ID.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationStruct::ConstructL( const TDesC& aName, const TUint32& aDestinationId )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMMDESTINATIONSTRUCT_CONSTRUCTL_ENTRY );
+
+    SetStatus( ECmmDestinationStatusNotSaved );
+    iId = aDestinationId;
+    iName = aName.AllocL();
+
+    iDestApRecord = static_cast<CommsDat::CCDAccessPointRecord*>(
+            CommsDat::CCDRecordBase::RecordFactoryL( CommsDat::KCDTIdAccessPointRecord ) );
+    iNetworkRecord = static_cast<CommsDat::CCDNetworkRecord*>(
+            CommsDat::CCDRecordBase::RecordFactoryL( CommsDat::KCDTIdNetworkRecord ) );
+    iMetadataRecord = new( ELeave ) CCDSNAPMetadataRecord(
+            iCache->TableId( ECmmDestMetadataRecord ) );
+
+    if ( aDestinationId >= KTemporaryIdCounterStart )
+        {
+        // Get a real ID from database during UpdateL().
+        iNetworkRecord->SetRecordId( KCDNewRecordRequest );
+        iDestApRecord->iRecordTag = 0;
+        iDestApRecord->iCustomSelectionPolicy = 0;
+        // Access Point record tag ID and custom selection policy value need to
+        // be set during UpdateL(), when network record's record ID is known.
+        // Also metadata record SNAP ID needs to be set.
+        iMetadataRecord->iSNAP = 0;
+        }
+    else
+        {
+        // Client provided an actual ID.
+        iNetworkRecord->SetRecordId( aDestinationId - KCmDefaultDestinationAPTagId );
+        iDestApRecord->iRecordTag = aDestinationId;
+        iDestApRecord->iCustomSelectionPolicy = ( aDestinationId - KCmDefaultDestinationAPTagId );
+        iMetadataRecord->iSNAP = aDestinationId;
+        }
+    iDestApRecord->SetRecordId( KCDNewRecordRequest );
+
+    iMetadataRecord->iMetadata = 0;
+    iMetadataRecord->SetRecordId( KCDNewRecordRequest );
+
+    iNetworkRecord->iRecordName.SetL( aName );
+    iDestApRecord->iRecordName.SetL( aName );
+
+    InitializeDestApRecordL();
+
+    iDestApRecordStatus = ECmmRecordStatusUnsaved;
+    iNetworkRecordStatus = ECmmRecordStatusUnsaved;
+    iMetadataRecordStatus = ECmmRecordStatusUnsaved;
+
+    OstTraceFunctionExit0( DUP1_CCMMDESTINATIONSTRUCT_CONSTRUCTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Set the destination ID.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationStruct::SetId( const TUint32& aId )
+    {
+    iId = aId;
+    }
+
+// ---------------------------------------------------------------------------
+// Get the destination ID.
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmmDestinationStruct::GetId() const
+    {
+    return iId;
+    }
+
+// ---------------------------------------------------------------------------
+// Get the destination ID from network record. To get a valid ID, this must be
+// called only during or after a call to UpdateL().
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmmDestinationStruct::GetRealId() const
+    {
+    TUint32 id( iId );
+    if ( iNetworkRecord )
+        {
+        id = ( TUint32 )iNetworkRecord->RecordId() + KCmDefaultDestinationAPTagId;
+        }
+    return id;
+    }
+
+// ---------------------------------------------------------------------------
+// Get the destination name.
+// ---------------------------------------------------------------------------
+//
+TDesC& CCmmDestinationStruct::GetDestinationNameL()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_GETDESTINATIONNAMEL_ENTRY );
+
+    // No network record exists if destination has not been saved yet.
+    if ( iStatus == ECmmDestinationStatusNotSaved && iName )
+        {
+        OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_GETDESTINATIONNAMEL_EXIT );
+        return *iName;
+        }
+
+    if ( iNetworkRecord )
+        {
+        return iNetworkRecord->iRecordName.GetL();
+        }
+
+    User::Leave( KErrCorrupt );
+
+    OstTraceFunctionExit0( DUP1_CCMMDESTINATIONSTRUCT_GETDESTINATIONNAMEL_EXIT );
+    return *iName;
+    }
+
+// ---------------------------------------------------------------------------
+// Gets the current status of this destination struct.
+// ---------------------------------------------------------------------------
+//
+TCmmDestinationStatus CCmmDestinationStruct::GetStatus() const
+    {
+    return iStatus;
+    }
+
+// ---------------------------------------------------------------------------
+// Get the current reference count.
+// ---------------------------------------------------------------------------
+//
+TInt CCmmDestinationStruct::GetReferenceCount() const
+    {
+    return iReferenceCounter;
+    }
+
+// ---------------------------------------------------------------------------
+// Set the current status of this destination.
+// ECmmDestinationStatusValid: Destination exists in database.
+// ECmmDestinationStatusNotSaved: Destination does NOT exist in database yet.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationStruct::SetStatus( const TCmmDestinationStatus& aStatus )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_SETSTATUS_ENTRY );
+
+    switch ( aStatus )
+        {
+        case ECmmDestinationStatusValid:
+            {
+            if ( iStatus == ECmmDestinationStatusNotSaved )
+                {
+                delete iName;
+                iName = NULL;
+                }
+            }
+            // Fallthrough intended.
+        case ECmmDestinationStatusNotSaved:
+        case ECmmDestinationStatusToBeDeleted:
+            {
+            // Set the status.
+            iStatus = aStatus;
+            }
+            break;
+        default:
+            ASSERT( 0 ); // Error, invalid status.
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_SETSTATUS_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Set the record status for all records.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationStruct::SetStatusForAllRecords( const TCmmRecordStatus& aStatus )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_SETSTATUSFORALLRECORDS_ENTRY );
+
+    iDestApRecordStatus = aStatus;
+    iNetworkRecordStatus = aStatus;
+    iMetadataRecordStatus = aStatus;
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_SETSTATUSFORALLRECORDS_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Copies the data for this destination to a session instance and increments
+// the reference counter by one.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationStruct::CreateSessionInstanceL(
+        CCmmDestinationInstance& aDestinationInstance )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_CREATESESSIONINSTANCEL_ENTRY );
+
+    // This should work according to status. If status is valid, this
+    // destination exists in commsdat, and other sessions can also open a handle
+    // to it. Make copies of the records to give to session instance.
+    //
+    // If the status is unsaved, then this is a new destination that hasn't
+    // been saved to commsdat yet. Thus no other session can open a handle to it
+    // until it is saved with a call to UpdateL().
+    // For a non-valid destination, to save memory, transfer the ownership of
+    // record pointers straight to the session and mark the cache pointers as
+    // NULL. When update is called, copy the records into the cache also.
+    //
+
+    switch ( iStatus ) //TODO, add missing status values
+        {
+        case ECmmDestinationStatusNotSaved:
+            {
+            // Transfer ownership of table records to session. Mark local pointers to NULL.
+
+            aDestinationInstance.SetRecordPointer( ECmmDestApRecord, iDestApRecord ); // iDestApRecord ownership is transfered.
+            aDestinationInstance.SetRecordPointer( ECmmDestNetworkRecord, iNetworkRecord ); // iNetworkRecord ownership is transfered.
+            aDestinationInstance.SetRecordPointer( ECmmDestMetadataRecord, iMetadataRecord ); // iMetadataRecord ownership is transfered.
+            iDestApRecord = NULL;
+            iNetworkRecord = NULL;
+            iMetadataRecord = NULL;
+            iDestApRecordStatus = ECmmRecordStatusBlank;
+            iNetworkRecordStatus = ECmmRecordStatusBlank;
+            iMetadataRecordStatus = ECmmRecordStatusBlank;
+
+            aDestinationInstance.SetId( iId );
+            aDestinationInstance.SetStatus( ECmmDestinationStatusChanged );
+            }
+            break;
+        case ECmmDestinationStatusValid:
+            {
+            // Reload table records if needed, make copies and transfer those to session.
+            LoadRecordL( aDestinationInstance, ECmmDestApRecord );
+            LoadRecordL( aDestinationInstance, ECmmDestNetworkRecord );
+            LoadRecordL( aDestinationInstance, ECmmDestMetadataRecord );
+
+            aDestinationInstance.SetId( iId );
+            aDestinationInstance.SetStatus( ECmmDestinationStatusValid );
+            }
+            break;
+        default:
+            User::Leave( KErrCorrupt ); // Invalid status.
+            break;
+        }
+
+    // A session handle has been made, increment reference counter.
+    iReferenceCounter++;
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_CREATESESSIONINSTANCEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// TODO
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationStruct::RefreshDestinationInstanceL(
+        CCmmDestinationInstance& aDestinationInstance )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_REFRESHSESSIONINSTANCEL_ENTRY );
+
+    switch ( iStatus )
+        {
+        case ECmmDestinationStatusValid:
+        case ECmmDestinationStatusToBeDeleted:
+            {
+            // Reload table records if needed, make copies and transfer those to session.
+            LoadRecordL( aDestinationInstance, ECmmDestApRecord );
+            LoadRecordL( aDestinationInstance, ECmmDestNetworkRecord );
+            LoadRecordL( aDestinationInstance, ECmmDestMetadataRecord );
+            }
+            break;
+        case ECmmDestinationStatusNotSaved: // This was checked before.
+        case ECmmDestinationStatusChanged:
+        default:
+            User::Leave( KErrCorrupt ); // Invalid status.
+            break;
+        }
+
+    // Add list of currently contained connection methods.
+    iCache->GetConnMethodsFromDestinationL(
+            aDestinationInstance.GetId(),
+            aDestinationInstance.iConnMethodItemArray );
+
+    // Internal state need to be set to the same state as after a successfull update.
+    aDestinationInstance.UpdateSuccessful();
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_REFRESHSESSIONINSTANCEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Re-loads a destination record if needed and copies the latest version to
+// the session instance given as parameter.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationStruct::LoadRecordL(
+        CCmmDestinationInstance& aDestinationInstance,
+        TCmmDbRecords aRecordType )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_LOADRECORDL_ENTRY );
+
+    if ( iStatus != ECmmDestinationStatusValid && iStatus != ECmmDestinationStatusToBeDeleted )
+        {
+        // Destination must exist in database to be able to load any records.
+        User::Leave( KErrCorrupt );
+        }
+
+    // Record status:            Action:
+    //
+    // ECmmRecordStatusBlank     Error
+    // ECmmRecordStatusLoaded    Skip load, already loaded
+    // ECmmRecordStatusExpired   Load record from database
+    // ECmmRecordStatusModified  Error, session side only status
+    // ECmmRecordStatusUnsaved   Skip load, not in database
+
+    CommsDat::CCDRecordBase* aRecordPointer;
+
+    switch ( aRecordType )
+        {
+        case ECmmDestNetworkRecord:
+            {
+            if ( iNetworkRecordStatus == ECmmRecordStatusExpired )
+                {
+                iNetworkRecord->LoadL( iTransactionHandler->Session() );
+                iNetworkRecordStatus = ECmmRecordStatusLoaded;
+                }
+            else if ( iNetworkRecordStatus == ECmmRecordStatusBlank ||
+                    iNetworkRecordStatus == ECmmRecordStatusModified )
+                {
+                User::Leave( KErrCorrupt );
+                }
+            aRecordPointer = CopyRecordL(
+                    ECmmDestNetworkRecord,
+                    static_cast<CommsDat::CCDRecordBase*>( iNetworkRecord ) );
+            aDestinationInstance.SetRecordPointer(
+                    ECmmDestNetworkRecord,
+                    aRecordPointer ); // Ownership is transfered.
+            }
+            break;
+        case ECmmDestApRecord:
+            {
+            if ( iDestApRecordStatus == ECmmRecordStatusExpired )
+                {
+                iDestApRecord->LoadL( iTransactionHandler->Session() );
+                iDestApRecordStatus = ECmmRecordStatusLoaded;
+                }
+            aRecordPointer = CopyRecordL(
+                    ECmmDestApRecord,
+                    static_cast<CommsDat::CCDRecordBase*>( iDestApRecord ) );
+            aDestinationInstance.SetRecordPointer(
+                    ECmmDestApRecord,
+                    aRecordPointer ); // Ownership is transfered.
+            }
+            break;
+        case ECmmDestMetadataRecord:
+            {
+            if ( iMetadataRecordStatus == ECmmRecordStatusExpired )
+                {
+                iMetadataRecord->LoadL( iTransactionHandler->Session() );
+                iMetadataRecordStatus = ECmmRecordStatusLoaded;
+                }
+            aRecordPointer = CopyRecordL(
+                    ECmmDestMetadataRecord,
+                    static_cast<CommsDat::CCDRecordBase*>( iMetadataRecord ) );
+            aDestinationInstance.SetRecordPointer(
+                    ECmmDestMetadataRecord,
+                    aRecordPointer ); // Ownership is transfered.
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrArgument );
+            }
+            break;
+        }
+    aRecordPointer = NULL;
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_LOADRECORDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Save the contents of a session side destination handle into database.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationStruct::UpdateL(
+        CCmmDestinationInstance& aDestinationInstance,
+        CCmmCache* aCache )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_UPDATEL_ENTRY );
+
+    // Structure:
+    // - Use ModifyL() or StoreL() according to own status (new destination or
+    //   changes to existing one).
+    //
+    // - Update (store/modify) records to database using client copies.
+    // - Free local record tables.
+    // - Copy record tables from client instance into cache.
+    // - Update DataMobilitySelectionPolicy-records.
+    //
+
+    TInt id( iId );
+    switch ( aDestinationInstance.GetStatus() )
+        {
+        case ECmmDestinationStatusValid:
+            {
+            if ( iStatus != ECmmDestinationStatusValid ) //TODO, how will external db changes affect this?
+                {
+                // Error, a 'valid'-status on session side implies a 'valid'-status on cache side.
+                User::Leave( KErrCorrupt );
+                }
+            }
+            // Fallthrough intended.
+        case ECmmDestinationStatusChanged:
+            {
+            CommsDat::CCDRecordBase* recordPointer;
+
+            // Get pointers to destination records in client instance.
+            aDestinationInstance.GetRecordPointer( ECmmDestApRecord, recordPointer );
+            CommsDat::CCDAccessPointRecord* instanceDestApRecord =
+                    static_cast<CommsDat::CCDAccessPointRecord*>( recordPointer );
+            aDestinationInstance.GetRecordPointer( ECmmDestNetworkRecord, recordPointer );
+            CommsDat::CCDNetworkRecord* instanceNetworkRecord =
+                    static_cast<CommsDat::CCDNetworkRecord*>( recordPointer );
+            aDestinationInstance.GetRecordPointer( ECmmDestMetadataRecord, recordPointer );
+            CCDSNAPMetadataRecord* instanceMetadataRecord =
+                    static_cast<CCDSNAPMetadataRecord*>( recordPointer );
+
+            recordPointer = NULL;
+
+            switch ( iStatus )
+                {
+                case ECmmDestinationStatusNotSaved:
+                    {
+                    // This is a new destination that doesn't exist in database yet.
+
+                    // Store network record first, the record ID is needed for
+                    // destination access point record.
+                    // Record ID for network record is set during construction.
+
+                    //TODO, Check method call from old CmManager:
+                    //TODO, SetAttribute( iData->iNetworkRecord, ECDProtectedWrite, ProtectionLevel() == EProtLevel1 );
+                    instanceNetworkRecord->StoreL( iTransactionHandler->Session() );
+
+                    // If ID is out of valid range, it means this destination was created
+                    // without a specific ID. It is a temporary ID and can now be replaced
+                    // with the real database ID. This also enables this destination to be
+                    // opened by other clients.
+                    // Record ID from network record must be used as real ID.
+                    if ( iId >= KTemporaryIdCounterStart )
+                        {
+                        id = instanceNetworkRecord->RecordId() + KCmDefaultDestinationAPTagId;
+                        instanceDestApRecord->iRecordTag = id;
+                        instanceDestApRecord->iCustomSelectionPolicy = ( id - KCmDefaultDestinationAPTagId );
+                        instanceMetadataRecord->iSNAP = id;
+                        }
+                    instanceDestApRecord->StoreL( iTransactionHandler->Session() );
+                    instanceMetadataRecord->StoreL( iTransactionHandler->Session() );
+                    }
+                    break;
+
+                case ECmmDestinationStatusValid:
+                case ECmmDestinationStatusToBeDeleted:
+                    {
+                    // This destination already exists in database and is beeing modified.
+
+                    //TODO, Check method call from old CmManager:
+                    //TODO, SetAttribute( iData->iNetworkRecord, ECDProtectedWrite, ProtectionLevel() == EProtLevel1 );
+                    instanceNetworkRecord->ModifyL( iTransactionHandler->Session() );
+                    instanceDestApRecord->ModifyL( iTransactionHandler->Session() );
+                    if ( iMetadataRecordStatus == ECmmRecordStatusUnsaved )
+                        {
+                        instanceMetadataRecord->StoreL( iTransactionHandler->Session() );
+                        }
+                    else
+                        {
+                        instanceMetadataRecord->ModifyL( iTransactionHandler->Session() );
+                        }
+                    }
+                    break;
+                case ECmmDestinationStatusChanged:
+                default:
+                    User::Leave( KErrCorrupt ); // Error, invalid status.
+                    break;
+                }
+
+            // Copy destination records from client instance into cache.
+            delete iDestApRecord;
+            delete iNetworkRecord;
+            delete iMetadataRecord;
+            iDestApRecord = NULL;
+            iNetworkRecord = NULL;
+            iMetadataRecord = NULL;
+            iDestApRecordStatus = ECmmRecordStatusBlank;
+            iNetworkRecordStatus = ECmmRecordStatusBlank;
+            iMetadataRecordStatus = ECmmRecordStatusBlank;
+            iDestApRecord = static_cast<CommsDat::CCDAccessPointRecord*>( CopyRecordL( ECmmDestApRecord, instanceDestApRecord ) );
+            iNetworkRecord = static_cast<CommsDat::CCDNetworkRecord*>( CopyRecordL( ECmmDestNetworkRecord, instanceNetworkRecord ) );
+            iMetadataRecord = static_cast<CCDSNAPMetadataRecord*>( CopyRecordL( ECmmDestMetadataRecord, instanceMetadataRecord ) );
+
+            instanceDestApRecord = NULL;
+            instanceNetworkRecord = NULL;
+            instanceMetadataRecord = NULL;
+
+
+
+            // Write DataMobilitySelectionPolicy-records into database.
+            TInt neededRecordCount( aDestinationInstance.iConnMethodItemArray.Count() ); // +1 for destination itself.
+            TInt existingRecordCount( 0 );
+
+            // Create DataMobilitySelectionPolicy-record set.
+            CommsDat::CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>* snapRecordSet =
+                    new( ELeave ) CommsDat::CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>(
+                            iCache->TableId( ECmmDbSnapRecord ) );
+            CleanupStack::PushL( snapRecordSet );
+
+            // Create a DataMobilitySelectionPolicy-record to prime the set.
+            CCDDataMobilitySelectionPolicyRecord* snapRecordPrime =
+                    new( ELeave ) CCDDataMobilitySelectionPolicyRecord(
+                            iCache->TableId( ECmmDbSnapRecord ) );
+            CleanupStack::PushL( snapRecordPrime );
+
+            snapRecordPrime->iSNAP = id;
+            snapRecordSet->iRecords.AppendL( snapRecordPrime );
+            CleanupStack::Pop( snapRecordPrime ); // Ownership moved.
+
+            // Find matching DataMobilitySelectionPolicy-records.
+            if ( snapRecordSet->FindL( iTransactionHandler->Session() ) )
+                {
+                existingRecordCount = snapRecordSet->iRecords.Count();
+                }
+
+            CCDDataMobilitySelectionPolicyRecord* snapRecord1 =
+                    new( ELeave ) CCDDataMobilitySelectionPolicyRecord(
+                            iCache->TableId( ECmmDbSnapRecord ) );
+            CleanupStack::PushL( snapRecord1 );
+
+            // Current index in snapRecordSet.
+            TInt index( 0 );
+
+            // Initial record for destination itself.
+            snapRecord1->iSNAP = id;
+            snapRecord1->iRecordName.SetL( iNetworkRecord->iRecordName.GetL() );
+            if ( existingRecordCount > index )
+                {
+                snapRecord1->SetElementId( snapRecordSet->iRecords[index]->ElementId() );
+                snapRecord1->iEmbeddedSNAP = 0;
+                snapRecord1->iIAP = 0;
+                snapRecord1->iPriority = 0;
+                snapRecord1->ModifyL( iTransactionHandler->Session() );
+                index++;
+                }
+            else
+                {
+                snapRecord1->SetRecordId( KCDNewRecordRequest );
+                snapRecord1->StoreL( iTransactionHandler->Session() );
+                }
+            CleanupStack::PopAndDestroy( snapRecord1 );
+
+            // Records for destination contents.
+            for ( TInt i = 0; i < neededRecordCount; i++ )
+                {
+                // Weird stuff starts to happen in commsdat side if we try to
+                // reuse a snap-record, so create new record for each entry.
+                CCDDataMobilitySelectionPolicyRecord* snapRecord2 =
+                        new( ELeave ) CCDDataMobilitySelectionPolicyRecord(
+                                iCache->TableId( ECmmDbSnapRecord ) );
+                CleanupStack::PushL( snapRecord2 );
+
+                snapRecord2->iSNAP = id;
+                snapRecord2->iRecordName.SetL( iNetworkRecord->iRecordName.GetL() );
+
+                // If the connection method was added to destination while
+                // still having a temporary ID, update the ID to real ID.
+                TUint32 connMethodRealId( aDestinationInstance.iConnMethodItemArray[i].iId );
+                if ( connMethodRealId >= KTemporaryIdCounterStart )
+                    {
+                    aCache->TranslateTemporaryId(
+                            aDestinationInstance.iConnMethodItemArray[i].iId,
+                            connMethodRealId );
+                    }
+
+                //TODO, if protection level is 1 (dest AND CMs), set ECDProtectedWrite. See oldimplementation.
+
+                if ( aDestinationInstance.iConnMethodItemArray[i].iBearerType == KUidEmbeddedDestination )
+                    {
+                    // Embedded destination.
+                    snapRecord2->iEmbeddedSNAP = ( TInt )connMethodRealId;
+                    snapRecord2->iIAP = 0;
+                    snapRecord2->iPriority =
+                            CMManager::KDataMobilitySelectionPolicyPriorityWildCard;
+                    aDestinationInstance.iConnMethodItemArray[i].iPriority =
+                            CMManager::KDataMobilitySelectionPolicyPriorityWildCard; // Update this just in case.
+                    }
+                else
+                    {
+                    // Normal connection method.
+                    snapRecord2->iEmbeddedSNAP = 0;
+                    snapRecord2->iIAP = ( KCDMaskShowField & CommsDat::KCDTIdIAPRecord ) | ( connMethodRealId << 8 );
+                    snapRecord2->iPriority = i + 1; // Priority values start from 1.
+                    aDestinationInstance.iConnMethodItemArray[i].iPriority = i + 1; // Update this just in case.
+                    }
+
+                if ( existingRecordCount > index )
+                    {
+                    // An old record can be reused.
+                    snapRecord2->SetElementId( snapRecordSet->iRecords[index]->ElementId() );
+                    snapRecord2->ModifyL( iTransactionHandler->Session() );
+                    index++;
+                    }
+                else
+                    {
+                    // A new record must be created.
+                    snapRecord2->SetRecordId( KCDNewRecordRequest );
+                    snapRecord2->StoreL( iTransactionHandler->Session() );
+                    }
+                CleanupStack::PopAndDestroy( snapRecord2 );
+                }
+
+            // Delete any extra records.
+            while ( existingRecordCount > index )
+                {
+                CCDDataMobilitySelectionPolicyRecord* snapRecord3 =
+                        new( ELeave ) CCDDataMobilitySelectionPolicyRecord(
+                                iCache->TableId( ECmmDbSnapRecord ) );
+                CleanupStack::PushL( snapRecord3 );
+                snapRecord3->SetElementId( snapRecordSet->iRecords[index]->ElementId() );
+                snapRecord3->DeleteL( iTransactionHandler->Session() );
+                CleanupStack::PopAndDestroy( snapRecord3 );
+                index++;
+                }
+
+
+            CleanupStack::PopAndDestroy( snapRecordSet );
+            }
+            break;
+        case ECmmDestinationStatusNotSaved:
+        case ECmmDestinationStatusToBeDeleted:
+        default:
+            User::Leave( KErrCorrupt ); // Error, invalid status.
+            break;
+        }
+
+    // Do not update destination status or record status values yet. Cache
+    // will set them after successfully commiting transaction to database.
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_UPDATEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Delete all database records of this destination. Also removes any records
+// making this destination an embedded destination in another destination.
+// ---------------------------------------------------------------------------
+//
+void CCmmDestinationStruct::DeleteL()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_DELETEL_ENTRY );
+
+    // Check general status.
+    /*switch ( iStatus ) //TODO, already done? yes, cleanup
+        {
+        case ECmmDestinationStatusNotSaved:
+            {
+            // Doesn'texist in database.
+            User::Leave( KErrNotFound );
+            }
+            break;
+        case ECmmDestinationStatusValid:
+            // Proceed.
+            break;
+        case ECmmDestinationStatusToBeDeleted:
+            {
+            // Already deleted, nothing to do.
+            return;
+            }
+        case ECmmDestinationStatusChanged:
+        default:
+            ASSERT( 0 ); // Error, invalid argument.
+            User::Leave( KErrCorrupt );
+            break;
+        }*/
+
+    // Check status for records.
+    switch ( iNetworkRecordStatus )
+        {
+        case ECmmRecordStatusLoaded:
+        case ECmmRecordStatusExpired:
+            {
+            iNetworkRecord->DeleteL( iTransactionHandler->Session() );
+            }
+            break;
+        case ECmmRecordStatusUnsaved:
+            // Skip.
+            break;
+        case ECmmRecordStatusBlank:
+        case ECmmRecordStatusModified:
+        default:
+            ASSERT( 0 ); // Error, invalid status.
+            User::Leave( KErrCorrupt );
+            break;
+        }
+    switch ( iDestApRecordStatus )
+        {
+        case ECmmRecordStatusLoaded:
+        case ECmmRecordStatusExpired:
+            {
+            iDestApRecord->DeleteL( iTransactionHandler->Session() );
+            }
+            break;
+        case ECmmRecordStatusUnsaved:
+            // Skip.
+            break;
+        case ECmmRecordStatusBlank:
+        case ECmmRecordStatusModified:
+        default:
+            ASSERT( 0 ); // Error, invalid status.
+            User::Leave( KErrCorrupt );
+            break;
+        }
+    switch ( iMetadataRecordStatus )
+        {
+        case ECmmRecordStatusLoaded:
+        case ECmmRecordStatusExpired:
+            {
+            iMetadataRecord->DeleteL( iTransactionHandler->Session() );
+            }
+            break;
+        case ECmmRecordStatusUnsaved:
+            // Skip.
+            break;
+        case ECmmRecordStatusBlank:
+        case ECmmRecordStatusModified:
+        default:
+            ASSERT( 0 ); // Error, invalid status.
+            User::Leave( KErrCorrupt );
+            break;
+        }
+
+    // Delete all datamobility selection policy records related to this destination.
+
+    // Create DataMobilitySelectionPolicy-record set.
+    CommsDat::CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>* snapRecordSet =
+            new( ELeave ) CommsDat::CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>(
+                    iCache->TableId( ECmmDbSnapRecord ) );
+    CleanupStack::PushL( snapRecordSet );
+
+    // Create a DataMobilitySelectionPolicy-record.
+    CCDDataMobilitySelectionPolicyRecord* snapRecord =
+            new( ELeave ) CCDDataMobilitySelectionPolicyRecord(
+                    iCache->TableId( ECmmDbSnapRecord ) );
+    CleanupStack::PushL( snapRecord );
+
+    TRAP_IGNORE( snapRecordSet->LoadL( iTransactionHandler->Session() ) );
+
+    // Loop through all datamobility selection policy records.
+    TInt snapRecordCount( snapRecordSet->iRecords.Count() );
+    for ( TInt i = 0; i < snapRecordCount; i++ )
+        {
+        snapRecord->SetElementId( snapRecordSet->iRecords[i]->ElementId() );
+        snapRecord->LoadL( iTransactionHandler->Session() );
+
+        TInt snap = snapRecord->iSNAP;
+        TInt embeddedSnap = snapRecord->iEmbeddedSNAP;
+        if ( snap == iId || embeddedSnap == iId )
+            {
+            snapRecord->DeleteL( iTransactionHandler->Session() );
+            }
+        }
+    CleanupStack::PopAndDestroy( snapRecord );
+    CleanupStack::PopAndDestroy( snapRecordSet );
+
+    OstTraceFunctionExit0( DUP1_CCMMDESTINATIONSTRUCT_DELETEL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// This should be called when a client session closes a destination handle.
+// Reference counter is decremented by one and the remaining number of
+// references is returned.
+// ---------------------------------------------------------------------------
+//
+TInt CCmmDestinationStruct::SessionInstanceClosed()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_SESSIONINSTANCECLOSED_ENTRY );
+
+    iReferenceCounter--;
+    if ( iReferenceCounter < 0 )
+        {
+        // Error, reference counter shouldn't be able to go negative.
+        ASSERT( 0 );
+        iReferenceCounter = 0;
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_SESSIONINSTANCECLOSED_EXIT );
+    return iReferenceCounter;
+    }
+
+// -----------------------------------------------------------------------------
+// Called after this destination has been updated and database transaction has
+// completed successfully. Sets the internal state of this destination
+// structure to reflect the new valid state.
+// -----------------------------------------------------------------------------
+//
+void CCmmDestinationStruct::UpdateSuccessful()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_UPDATESUCCESSFUL_ENTRY );
+
+    SetStatus( ECmmDestinationStatusValid );
+    SetStatusForAllRecords( ECmmRecordStatusLoaded );
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_UPDATESUCCESSFUL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmDestinationStruct::InitializeDestApRecordL
+// Set default values to a new destination access point record.
+// -----------------------------------------------------------------------------
+//
+void CCmmDestinationStruct::InitializeDestApRecordL()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_INITIALIZEDESTAPRECORDL_ENTRY );
+
+    SetDefaultTierManagerL();
+    SetDefaultMCprL();
+    SetDefaultCprL();
+    SetDefaultSCprL();
+    SetDefaultProtocolL();
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_INITIALIZEDESTAPRECORDL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmDestinationStruct::SetDefaultTierManagerL
+// Sets the default tier manager to destination access point record.
+// -----------------------------------------------------------------------------
+void CCmmDestinationStruct::SetDefaultTierManagerL()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_SETDEFAULTTIERMANAGERL_ENTRY );
+
+    CommsDat::CCDTierRecord* tierRecord =
+            static_cast<CommsDat::CCDTierRecord*>(
+                    CommsDat::CCDRecordBase::RecordFactoryL( CommsDat::KCDTIdTierRecord ) );
+    CleanupStack::PushL( tierRecord );
+
+    tierRecord->iRecordTag = KDefaultTierManagerTagId;
+
+    if ( tierRecord->FindL( iTransactionHandler->Session() ) )
+        {
+        iDestApRecord->iTier = tierRecord->ElementId();
+        }
+    else
+        {
+        User::Leave( KErrNotFound );
+        }
+    CleanupStack::PopAndDestroy( tierRecord );
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_SETDEFAULTTIERMANAGERL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmDestinationStruct::SetDefaultMCprL
+// Sets the default MCpr to destination access point record.
+// -----------------------------------------------------------------------------
+void CCmmDestinationStruct::SetDefaultMCprL()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_SETDEFAULTMCPRL_ENTRY );
+
+    CommsDat::CCDMCprRecord* mcprRecord =
+            static_cast<CommsDat::CCDMCprRecord*>(
+                    CommsDat::CCDRecordBase::RecordFactoryL( CommsDat::KCDTIdMCprRecord ) );
+    CleanupStack::PushL( mcprRecord );
+
+    mcprRecord->SetRecordId( 1 );
+
+    mcprRecord->LoadL( iTransactionHandler->Session() );
+    iDestApRecord->iMCpr = mcprRecord->ElementId();
+    CleanupStack::PopAndDestroy( mcprRecord );
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_SETDEFAULTMCPRL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmDestinationStruct::SetDefaultCprL
+// Sets the default Cpr to destination access point record.
+// -----------------------------------------------------------------------------
+void CCmmDestinationStruct::SetDefaultCprL()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_SETDEFAULTCPRL_ENTRY );
+
+    CommsDat::CCDCprRecord* cprRecord =
+            static_cast<CommsDat::CCDCprRecord*>(
+                    CommsDat::CCDRecordBase::RecordFactoryL( CommsDat::KCDTIdCprRecord ) );
+    CleanupStack::PushL( cprRecord );
+
+    cprRecord->SetRecordId( 1 );
+
+    cprRecord->LoadL( iTransactionHandler->Session() );
+    iDestApRecord->iCpr = cprRecord->ElementId();
+    CleanupStack::PopAndDestroy( cprRecord );
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_SETDEFAULTCPRL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmDestinationStruct::SetDefaultSCprL
+// Sets the default SCpr to destination access point record.
+// -----------------------------------------------------------------------------
+void CCmmDestinationStruct::SetDefaultSCprL()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_SETDEFAULTSCPRL_ENTRY );
+
+    CommsDat::CCDSCprRecord* scprRecord =
+            static_cast<CommsDat::CCDSCprRecord*>(
+                    CommsDat::CCDRecordBase::RecordFactoryL( CommsDat::KCDTIdSCprRecord ) );
+    CleanupStack::PushL( scprRecord );
+
+    scprRecord->SetRecordId( 1 );
+
+    scprRecord->LoadL( iTransactionHandler->Session() );
+    iDestApRecord->iSCpr = scprRecord->ElementId();
+    CleanupStack::PopAndDestroy( scprRecord );
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_SETDEFAULTSCPRL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmDestinationStruct::SetDefaultProtocolL
+// Sets the default protocol to destination access point record.
+// -----------------------------------------------------------------------------
+void CCmmDestinationStruct::SetDefaultProtocolL()
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_SETDEFAULTPROTOCOLL_ENTRY );
+
+    CommsDat::CCDProtocolRecord* protocolRecord =
+            static_cast<CommsDat::CCDProtocolRecord*>(
+                    CommsDat::CCDRecordBase::RecordFactoryL( CommsDat::KCDTIdProtocolRecord ) );
+    CleanupStack::PushL( protocolRecord );
+
+    protocolRecord->SetRecordId( 1 );
+
+    protocolRecord->LoadL( iTransactionHandler->Session() );
+    iDestApRecord->iProtocol = protocolRecord->ElementId();
+    CleanupStack::PopAndDestroy( protocolRecord );
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_SETDEFAULTPROTOCOLL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Creates a copy of a record of the given type.
+// -----------------------------------------------------------------------------
+CommsDat::CCDRecordBase* CCmmDestinationStruct::CopyRecordL(
+        TCmmDbRecords aRecordType,
+        CommsDat::CCDRecordBase* aSource )
+    {
+    OstTraceFunctionEntry0( CCMMDESTINATIONSTRUCT_COPYRECORDL_ENTRY );
+
+    CommsDat::CCDRecordBase* target = NULL;
+
+    switch ( aRecordType )
+        {
+        case ECmmDestNetworkRecord:
+            {
+            // Network record.
+
+            CommsDat::CCDNetworkRecord* source =
+                    static_cast<CommsDat::CCDNetworkRecord*>( aSource );
+            CommsDat::CCDNetworkRecord* networkRecord =
+                    static_cast<CommsDat::CCDNetworkRecord*>(
+                            CommsDat::CCDRecordBase::RecordFactoryL(
+                                    CommsDat::KCDTIdNetworkRecord ) );
+            CleanupStack::PushL( networkRecord );
+
+            if ( !source->iRecordTag.IsNull() )
+                {
+                networkRecord->iRecordTag.SetL( source->iRecordTag );
+                }
+            if ( !source->iRecordName.IsNull() )
+                {
+                networkRecord->iRecordName.SetL( source->iRecordName );
+                }
+            if ( !source->iHostName.IsNull() )
+                {
+                networkRecord->iHostName.SetL( source->iHostName );
+                }
+            networkRecord->SetElementId( source->ElementId() );
+
+            CleanupStack::Pop( networkRecord );
+            target = static_cast<CommsDat::CCDRecordBase*>( networkRecord );
+            }
+            break;
+        case ECmmDestApRecord:
+            {
+            // Access point record.
+
+            CommsDat::CCDAccessPointRecord* source =
+                    static_cast<CommsDat::CCDAccessPointRecord*>( aSource );
+            CommsDat::CCDAccessPointRecord* destApRecord =
+                    static_cast<CommsDat::CCDAccessPointRecord*>(
+                            CommsDat::CCDRecordBase::RecordFactoryL(
+                                    CommsDat::KCDTIdAccessPointRecord ) );
+            CleanupStack::PushL( destApRecord );
+
+            if ( !source->iRecordTag.IsNull() )
+                {
+                destApRecord->iRecordTag.SetL( source->iRecordTag );
+                }
+            if ( !source->iRecordName.IsNull() )
+                {
+                destApRecord->iRecordName.SetL( source->iRecordName );
+                }
+            if ( !source->iAccessPointGID.IsNull() )
+                {
+                destApRecord->iAccessPointGID.SetL( source->iAccessPointGID );
+                }
+            if ( !source->iSelectionPolicy.IsNull() )
+                {
+                destApRecord->iSelectionPolicy.SetL( source->iSelectionPolicy );
+                }
+
+            if ( !source->iTier.IsNull() )
+                {
+                destApRecord->iTier.SetL( source->iTier );
+                }
+            if ( !source->iMCpr.IsNull() )
+                {
+                destApRecord->iMCpr.SetL( source->iMCpr );
+                }
+            if ( !source->iCpr.IsNull() )
+                {
+                destApRecord->iCpr.SetL( source->iCpr );
+                }
+            if ( !source->iSCpr.IsNull() )
+                {
+                destApRecord->iSCpr.SetL( source->iSCpr );
+                }
+            if ( !source->iProtocol.IsNull() )
+                {
+                destApRecord->iProtocol.SetL( source->iProtocol );
+                }
+            if ( !source->iCprConfig.IsNull() )
+                {
+                destApRecord->iCprConfig.SetL( source->iCprConfig );
+                }
+            if ( !source->iAppSID.IsNull() )
+                {
+                destApRecord->iAppSID.SetL( source->iAppSID );
+                }
+            if ( !source->iConfigAPIdList.IsNull() )
+                {
+                destApRecord->iConfigAPIdList.SetL( source->iConfigAPIdList );
+                }
+            if ( !source->iCustomSelectionPolicy.IsNull() )
+                {
+                destApRecord->iCustomSelectionPolicy.SetL( source->iCustomSelectionPolicy );
+                }
+            if ( !source->iPriority.IsNull() )
+                {
+                destApRecord->iPriority.SetL( source->iPriority );
+                }
+
+            destApRecord->SetElementId( aSource->ElementId() );
+
+            CleanupStack::Pop( destApRecord );
+            target = static_cast<CommsDat::CCDRecordBase*>( destApRecord );
+            }
+            break;
+        case ECmmDestMetadataRecord:
+            {
+            // Metadata record.
+            CCDSNAPMetadataRecord* source =
+                    static_cast<CCDSNAPMetadataRecord*>( aSource );
+            CCDSNAPMetadataRecord* metadataRecord =
+                    new( ELeave ) CCDSNAPMetadataRecord(
+                            iCache->TableId( ECmmDestMetadataRecord ) );
+            CleanupStack::PushL( metadataRecord );
+
+            if ( !source->iRecordTag.IsNull() )
+                {
+                metadataRecord->iRecordTag.SetL( source->iRecordTag );
+                }
+            if ( !source->iRecordName.IsNull() )
+                {
+                metadataRecord->iRecordName.SetL( source->iRecordName );
+                }
+            if ( !source->iSNAP.IsNull() )
+                {
+                metadataRecord->iSNAP.SetL( source->iSNAP );
+                }
+            if ( !source->iMetadata.IsNull() )
+                {
+                metadataRecord->iMetadata.SetL( source->iMetadata );
+                }
+            if ( !source->iIcon.IsNull() )
+                {
+                metadataRecord->iIcon.SetL( source->iIcon );
+                }
+            metadataRecord->SetElementId( source->ElementId() );
+
+            CleanupStack::Pop( metadataRecord );
+            target = static_cast<CommsDat::CCDRecordBase*>( metadataRecord );
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrArgument );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMMDESTINATIONSTRUCT_COPYRECORDL_EXIT );
+    return target;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmminstancemapping.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,1162 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Keeps track of the general destination/connection method structure in
+* database.
+*
+*/
+
+
+#include <metadatabase.h>
+#include <commsdattypesv1_1.h>
+#include <datamobilitycommsdattypes.h>
+#include <cmpluginembdestinationdef.h>
+#include <wlancontainer.h>
+
+#include "cmminstancemapping.h"
+#include "cmpluginbaseeng.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmminstancemappingTraces.h"
+#endif
+
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CDestination* CDestination::NewL()
+    {
+    OstTraceFunctionEntry0( CDESTINATION_NEWL_ENTRY );
+
+    CDestination* self = CDestination::NewLC();
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CDESTINATION_NEWL_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CDestination* CDestination::NewLC()
+    {
+    OstTraceFunctionEntry0( CDESTINATION_NEWLC_ENTRY );
+
+    CDestination* self = new( ELeave ) CDestination();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+
+    OstTraceFunctionExit0( CDESTINATION_NEWLC_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CDestination::~CDestination()
+    {
+    OstTraceFunctionEntry0( CDESTINATION_CDESTINATION_ENTRY );
+
+    iConnMethodItemArray.Close();
+    iUnsupportedConnMethods.Close();
+
+    OstTraceFunctionExit0( CDESTINATION_CDESTINATION_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------------------------
+//
+CDestination::CDestination()
+    {
+    OstTraceFunctionEntry0( DUP1_CDESTINATION_CDESTINATION_ENTRY );
+
+    iId = 0;
+
+    OstTraceFunctionExit0( DUP1_CDESTINATION_CDESTINATION_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CDestination::ConstructL()
+    {
+    OstTraceFunctionEntry0( CDESTINATION_CONSTRUCTL_ENTRY );
+    OstTraceFunctionExit0( CDESTINATION_CONSTRUCTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmInstanceMapping* CCmmInstanceMapping::NewL( CCmmCache& aCache )
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_NEWL_ENTRY );
+
+    CCmmInstanceMapping* self = CCmmInstanceMapping::NewLC( aCache );
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_NEWL_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmInstanceMapping* CCmmInstanceMapping::NewLC( CCmmCache& aCache )
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_NEWLC_ENTRY );
+
+    CCmmInstanceMapping* self = new( ELeave ) CCmmInstanceMapping( aCache );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_NEWLC_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CCmmInstanceMapping::~CCmmInstanceMapping()
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_CCMMINSTANCEMAPPING_ENTRY );
+
+    iConnMethodItemArray.Close();
+    iUnsupportedConnMethods.Close();
+    iDestinations.ResetAndDestroy();
+    iDeletedConnMethods.Close();
+    iDeletedDestinations.Close();
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_CCMMINSTANCEMAPPING_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------------------------
+//
+CCmmInstanceMapping::CCmmInstanceMapping( CCmmCache& aCache ) : iCache( aCache )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMMINSTANCEMAPPING_CCMMINSTANCEMAPPING_ENTRY );
+    iEasyWlanId = 0;
+    OstTraceFunctionExit0( DUP1_CCMMINSTANCEMAPPING_CCMMINSTANCEMAPPING_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CCmmInstanceMapping::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_CONSTRUCTL_ENTRY );
+
+    // Read connection methods from database and find the supported ones.
+    ReadAndValidateConnMethodsL();
+    // Read destinations from database.
+    ReadAndValidateDestinationsL();
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_CONSTRUCTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Resets arrays and reads CMs and Connection Methods
+// ---------------------------------------------------------------------------
+//
+void CCmmInstanceMapping::RefreshL()
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_REFRESHL_ENTRY );
+
+    ReadAndValidateConnMethodsL();
+    ReadAndValidateDestinationsL();
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_REFRESHL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Check if the given ID is a valid existing destination ID.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmInstanceMapping::ValidDestinationId( const TUint32& aId ) const
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_VALIDDESTINATIONID_ENTRY );
+
+    TBool validity( EFalse );
+
+    if ( aId > 0 )
+        {
+        for ( TInt i = 0; i < iDestinations.Count(); i++ )
+            {
+            if ( iDestinations[i]->iId == aId )
+                {
+                validity = ETrue;
+                break;
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_VALIDDESTINATIONID_EXIT );
+    return validity;
+    }
+
+// ---------------------------------------------------------------------------
+// Check if the given ID is a valid existing connection method ID.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmInstanceMapping::ValidConnMethodId( const TUint32& aId ) const
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_VALIDCONNMETHODID_ENTRY );
+
+    TBool validity( EFalse );
+
+    if ( aId > 0 )
+        {
+        for ( TInt i = 0; i < iConnMethodItemArray.Count(); i++ )
+            {
+            if ( iConnMethodItemArray[i].iId == aId )
+                {
+                validity = ETrue;
+                break;
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_VALIDCONNMETHODID_EXIT );
+    return validity;
+    }
+
+// ---------------------------------------------------------------------------
+// Check from database if the given destination is an embedded destination in
+// any other destination.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmInstanceMapping::DestinationIsEmbedded( const TUint32& aDestinationId ) const
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_DESTINATIONISEMBEDDED_ENTRY );
+
+    TBool result( EFalse );
+    TInt index( 0 );
+
+    // Iterate through all destinations.
+    for ( TInt i = 0; i < iDestinations.Count(); i++ )
+        {
+        // An embedded destination is always at the very last position in
+        // the connection method item array.
+        index = iDestinations[i]->iConnMethodItemArray.Count() - 1;
+        if ( index >= 0 )
+            {
+            // We can skip bearer type check. If the last item isn't an
+            // embedded destination, the ID will not match anyway.
+            if ( iDestinations[i]->iConnMethodItemArray[index].iId == aDestinationId )
+                {
+                result = ETrue;
+                break;
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_DESTINATIONISEMBEDDED_EXIT );
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// Check from database if the given destination has an embedded destination.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmInstanceMapping::DestinationHasEmbedded( const TUint32& aDestinationId ) const
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_DESTINATIONHASEMBEDDED_ENTRY );
+
+    TBool result( EFalse );
+
+    for ( TInt i = 0; i < iDestinations.Count(); i++ )
+        {
+        // Find the correct destination.
+        if ( iDestinations[i]->iId == aDestinationId )
+            {
+            // An embedded destination is always at the very last position in
+            // the connection method item array.
+            TInt index = iDestinations[i]->iConnMethodItemArray.Count() - 1;
+            if ( index >= 0 )
+                {
+                if ( iDestinations[i]->iConnMethodItemArray[index].iBearerType == KUidEmbeddedDestination )
+                    {
+                    result = ETrue;
+                    }
+                }
+            break;
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_DESTINATIONHASEMBEDDED_EXIT );
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// Check from database if the given destination is pointed to by any virtual
+// IAP.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmInstanceMapping::DestinationPointedToByVirtualIap(
+        const TUint32& /*aDestinationId*/ ) const
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_DESTINATIONPOINTEDTOBYVIRTUALIAP_ENTRY );
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_DESTINATIONPOINTEDTOBYVIRTUALIAP_EXIT );
+
+    return EFalse; //TODO, virtual IAPs are not yet supported.
+    }
+
+// ---------------------------------------------------------------------------
+// Check from database if the given connection method is pointed to by any
+// virtual IAP.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmInstanceMapping::ConnMethodPointedToByVirtualIap(
+        const TUint32& /*aConnMethodId*/ ) const
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_CONNMETHODPOINTEDTOBYVIRTUALIAP_ENTRY );
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_CONNMETHODPOINTEDTOBYVIRTUALIAP_EXIT );
+
+    return EFalse; //TODO, virtual IAPs are not yet supported.
+    }
+
+// ---------------------------------------------------------------------------
+// Check if the given connection method is the only connection method in the
+// given destination and if a virtual IAP points to that destination.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmInstanceMapping::ConnMethodInDestinationButLocked(
+        const TUint32& /*aConnMethodId*/,
+        const TUint32& /*aDestinationId*/ ) const
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_CONNMETHODINDESTINATIONBUTLOCKED_ENTRY );
+
+    // - Find correct destination.
+    // - Check if it only has 1 CM.
+    // - Check if the CM is the one given.
+    // - Call DestinationPointedToByVirtualIap( aDestinationId ).
+    //
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_CONNMETHODINDESTINATIONBUTLOCKED_EXIT );
+
+    return EFalse; //TODO, virtual IAPs are not yet supported.
+    }
+
+// ---------------------------------------------------------------------------
+// Get bearer type of connection method matching given ID.
+// Return KErrNone if ID is found, KErrNotFound if not.
+// ---------------------------------------------------------------------------
+//
+TInt CCmmInstanceMapping::GetConnMethodBearerType(
+        const TUint32& aConnMethodId,
+        TUint32& bearerType ) const
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_GETCONNMETHODBEARERTYPE_ENTRY );
+
+    TInt result( KErrNotFound );
+
+    for ( TInt i = 0; i < iConnMethodItemArray.Count(); i++ )
+        {
+        if ( iConnMethodItemArray[i].iId == aConnMethodId )
+            {
+            bearerType = iConnMethodItemArray[i].iBearerType;
+            result = KErrNone;
+            break;
+            }
+        }
+    if ( result == KErrNotFound )
+        {
+        // Embedded destinations are not in connection method array, need check from ID range.
+        if ( aConnMethodId > KCmmDestIdIntervalMin && aConnMethodId < KCmmDestIdIntervalMax )
+            {
+            bearerType = KUidEmbeddedDestination;
+            result = KErrNone;
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_GETCONNMETHODBEARERTYPE_EXIT );
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// Returns the number of destinations the provided connection method belongs
+// to. Zero is returned if the connection method belongs to no destination
+// (legacy IAP) or does not exist.
+// ---------------------------------------------------------------------------
+//
+TInt CCmmInstanceMapping::DestinationsContainingConnMethod(
+        const TUint32& aConnMethodId ) const
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_CONNMETHODREFERENCECOUNT_ENTRY );
+
+    TInt referenceCount( 0 );
+    TInt count( 0 );
+
+    // Go through each destination.
+    for ( TInt i = 0; i < iDestinations.Count(); i++ )
+        {
+        TBool foundInThisDestination( EFalse );
+
+        // Loop through all connection methods in this destination.
+        count = iDestinations[i]->iConnMethodItemArray.Count();
+        for ( TInt j = 0; j < count; j++ )
+            {
+            if ( iDestinations[i]->iConnMethodItemArray[j].iId == aConnMethodId )
+                {
+                foundInThisDestination = ETrue;
+                referenceCount++;
+                break;
+                }
+            }
+
+        // Check unsupported connection methods also.
+        if ( !foundInThisDestination )
+            {
+            count = iDestinations[i]->iUnsupportedConnMethods.Count();
+            for ( TInt j = 0; j < count; j++ )
+                {
+                if ( iDestinations[i]->iUnsupportedConnMethods[j] == aConnMethodId )
+                    {
+                    referenceCount++;
+                    break;
+                    }
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_CONNMETHODREFERENCECOUNT_EXIT );
+    return referenceCount;
+    }
+
+// ---------------------------------------------------------------------------
+// Get database session.
+// ---------------------------------------------------------------------------
+//
+CommsDat::CMDBSession& CCmmInstanceMapping::Session() const
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_SESSION_ENTRY );
+
+    return iCache.Session();
+    }
+
+// ---------------------------------------------------------------------------
+// Discovers all connection methods from database. Unsupported connection
+// methods are kept separately.
+// ---------------------------------------------------------------------------
+//
+void CCmmInstanceMapping::ReadAndValidateConnMethodsL()
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_READANDVALIDATECONNMETHODSL_ENTRY );
+
+    CMDBRecordSet<CCDIAPRecord>* iapRecordSet =
+            new( ELeave ) CMDBRecordSet<CCDIAPRecord>( KCDTIdIAPRecord );
+    CleanupStack::PushL( iapRecordSet );
+
+    CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>( CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
+    CleanupStack::PushL( iapRecord );
+
+    TRAP_IGNORE( iapRecordSet->LoadL( Session() ) );
+
+    //TODO, check from commsdat dump if all high-range IDs are available, or was some records
+    //TODO  used up by something. will this possibly affect cm/destination creation with predef ID? (Keijo)
+
+    iConnMethodItemArray.Reset();
+    iUnsupportedConnMethods.Reset();
+
+    TInt iapRecordCount( iapRecordSet->iRecords.Count() );
+    TInt err( KErrNone );
+    TUint32 bearerType( 0 );
+    TUint bearerPriority( CMManager::KDataMobilitySelectionPolicyPriorityWildCard );
+
+    for ( TInt i = 0; i < iapRecordCount; i++ )
+        {
+        TUint32 connMethodId( iapRecordSet->iRecords[i]->RecordId() );
+
+        // Check the connection method is not on the deleted list waiting to be deleted from database.
+        TInt indexInDeletedList = iDeletedConnMethods.FindInOrder( ( TUint )connMethodId );
+        if ( indexInDeletedList == KErrNotFound )
+            {
+            // Check the bearer type of the iap. Leaves if iap is unsupported.
+            iapRecord->SetRecordId( connMethodId );
+            TRAP( err, iCache.BearerInfoFromIapRecordL( iapRecord, bearerType, bearerPriority ) ); //TODO
+            if ( !err )
+                {
+                TCmmConnMethodItem item( connMethodId, bearerType, bearerPriority, 0 );
+                iConnMethodItemArray.Append( item ); // Ignore errors.
+                }
+            else if ( err == KErrNotSupported )
+                {
+                iUnsupportedConnMethods.Append( connMethodId ); // Ignore errors.
+                }
+            else if ( err == KErrNoMemory )
+                {
+                User::Leave( err ); //TODO, check what this will cause.
+                }
+            }
+        }
+
+    CleanupStack::PopAndDestroy( iapRecord );
+    CleanupStack::PopAndDestroy( iapRecordSet );
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_READANDVALIDATECONNMETHODSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Discovers all destinations and the connection methods inside them.
+// Unsupported connection methods are kept separately.
+// ---------------------------------------------------------------------------
+//
+void CCmmInstanceMapping::ReadAndValidateDestinationsL()
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_READANDVALIDATEDESTINATIONSL_ENTRY );
+
+    // Make 2 loops, first add destinations and then connection methods / embedded destinations.
+    iDestinations.ResetAndDestroy();
+
+    // Explicitly build a TLinearOrder<class>. Used as parameter to RArray::InsertInOrder().
+    TLinearOrder<TCmmConnMethodItem> connMethodItemOrderingLogic( TCmmConnMethodItem::Compare );
+
+    CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>* snapRecordSet =
+            new( ELeave ) CMDBRecordSet<CCDDataMobilitySelectionPolicyRecord>(
+                    iCache.TableId( ECmmDbSnapRecord ) );
+    CleanupStack::PushL( snapRecordSet );
+
+    CCDDataMobilitySelectionPolicyRecord* snapRecord =
+            new( ELeave ) CCDDataMobilitySelectionPolicyRecord(
+                    iCache.TableId( ECmmDbSnapRecord ) );
+    CleanupStack::PushL( snapRecord );
+
+    TRAP_IGNORE( snapRecordSet->LoadL( Session() ) );
+
+    // Read snap ID, connection method ID and embedded destination ID.
+    const TInt snapRecordCount( snapRecordSet->iRecords.Count() );
+    for ( TInt i = 0; i < snapRecordCount; i++ )
+        {
+        snapRecord->SetElementId( snapRecordSet->iRecords[i]->ElementId() );
+        snapRecord->LoadL( Session() );
+
+        TUint32 destinationId = (TUint32)( snapRecord->iSNAP );
+        TInt indexInDeletedList = iDeletedDestinations.FindInOrder( ( TUint )destinationId );
+        if ( indexInDeletedList == KErrNotFound )
+            {
+            TUint32 connMethodId = ( snapRecord->iIAP & KCDMaskShowRecordId ) >> 8;
+            TUint32 embeddedDestinationId = (TUint32)( snapRecord->iEmbeddedSNAP );
+
+            // If connMethodId and embeddedDestinationId are 0 this is a destination.
+            if ( connMethodId == 0 && embeddedDestinationId == 0 )
+                {
+                TBool destAlreadyExists( EFalse );
+                for ( TInt j = 0; j < iDestinations.Count(); j++ )
+                    {
+                    if ( destinationId == iDestinations[j]->iId )
+                        {
+                        destAlreadyExists = ETrue;
+                        break;
+                        }
+                    }
+
+                if ( !destAlreadyExists )
+                    {
+                    CDestination* dest = CDestination::NewL();
+                    dest->iId = destinationId;
+                    iDestinations.Append( dest );
+                    }
+                }
+            }
+        }
+
+    // Read snap ID, connection method ID and embedded destination ID.
+    for ( TInt i = 0; i < snapRecordCount; i++ )
+        {
+        snapRecord->SetElementId( snapRecordSet->iRecords[i]->ElementId() );
+        snapRecord->LoadL( Session() );
+
+        TUint32 destinationId = (TUint32)( snapRecord->iSNAP );
+        TUint32 connMethodId = ( snapRecord->iIAP & KCDMaskShowRecordId ) >> 8;
+        TUint32 embeddedDestinationId = (TUint32)( snapRecord->iEmbeddedSNAP );
+
+        // If connMethodId or embeddedDestinationId differs from 0 this is a connection method object.
+        if ( connMethodId > 0 || embeddedDestinationId > 0 )
+            {
+            // Find destination.
+            CDestination* destination( NULL );
+            for ( TInt j = 0; j < iDestinations.Count(); j++ )
+                {
+                if ( destinationId == iDestinations[j]->iId )
+                    {
+                    destination = iDestinations[j];
+                    break;
+                    }
+                }
+
+            if ( destination )
+                {
+                if ( connMethodId )
+                    {
+                    // Connection method, not embedded destination.
+                    TBool found( EFalse );
+                    TCmmConnMethodItem item;
+
+                    // Find connection method.
+                    for ( TInt j = 0; j < iConnMethodItemArray.Count(); j++ )
+                        {
+                        if ( iConnMethodItemArray[j].iId == connMethodId )
+                            {
+                            item = iConnMethodItemArray[j];
+                            found = ETrue;
+                            break;
+                            }
+                        }
+                    if ( found )
+                        {
+                        // Make sure no duplicate entries are allowed. Any
+                        // duplicate would imply a corrupted CommsDat.
+                        TInt index = destination->iConnMethodItemArray.Find<TUint32>(
+                                connMethodId,
+                                TCmmConnMethodItem::FindCompare );
+                        if ( index == KErrNotFound )
+                            {
+                            item.iPriority = snapRecord->iPriority;
+                            destination->iConnMethodItemArray.InsertInOrderAllowRepeats( //TODO, if prio is 256, bearer type used? embeded should always be last.
+                                    item,
+                                    connMethodItemOrderingLogic ); // Ignore errors.
+                            }
+                        }
+                    else
+                        {
+                        // Check if the connection method is unsupported instead.
+                        for ( TInt j = 0; j < iUnsupportedConnMethods.Count(); j++ )
+                            {
+                            if ( iUnsupportedConnMethods[j] == connMethodId )
+                                {
+                                found = ETrue;
+                                break;
+                                }
+                            }
+                        if ( found )
+                            {
+                            destination->iUnsupportedConnMethods.Append( connMethodId ); // Ignore errors. //TODO, allow repeats?
+                            }
+                        }
+                    }
+
+                else
+                    {
+                    // Embedded destination, not IAP.
+                    // Prevent destinations from embedding themselves.
+                    if ( embeddedDestinationId != destinationId )
+                        {
+                        // Check embedded destination ID is valid.
+                        TBool found( EFalse );
+                        for ( TInt j = 0; j < iDestinations.Count(); j++ )
+                            {
+                            if ( embeddedDestinationId == iDestinations[j]->iId )
+                                {
+                                found = ETrue;
+                                break;
+                                }
+                            }
+                        if ( found )
+                            {
+                            TCmmConnMethodItem item(
+                                    embeddedDestinationId,
+                                    KUidEmbeddedDestination,
+                                    CMManager::KDataMobilitySelectionPolicyPriorityWildCard,
+                                    CMManager::KDataMobilitySelectionPolicyPriorityWildCard );
+                            destination->iConnMethodItemArray.InsertInOrderAllowRepeats(
+                                    item,
+                                    connMethodItemOrderingLogic );
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    CleanupStack::PopAndDestroy( snapRecord );
+    CleanupStack::PopAndDestroy( snapRecordSet );
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_READANDVALIDATEDESTINATIONSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Returns all conenction method IDs. Unsupported connection methods are
+// included if aCheckBearerType is set to EFalse.
+// ---------------------------------------------------------------------------
+//
+void CCmmInstanceMapping::GetAllConnMethodsL(
+        RArray<TUint32>& aConnMethodArray,
+        TBool aCheckBearerType ) const
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_GETCONNMETHODSL_ENTRY );
+
+    TInt connMethodCount = iConnMethodItemArray.Count();
+    aConnMethodArray.Reset();
+
+    if ( aCheckBearerType )
+        {
+        aConnMethodArray.ReserveL( connMethodCount );
+        }
+    else
+        {
+        aConnMethodArray.ReserveL( connMethodCount + iUnsupportedConnMethods.Count() );
+        }
+
+    for ( TInt i = 0; i < connMethodCount; i++ )
+        {
+        aConnMethodArray.AppendL( iConnMethodItemArray[i].iId );
+        }
+    if ( !aCheckBearerType )
+        {
+        // Include unsupported connection methods also.
+        for ( TInt i = 0; i < iUnsupportedConnMethods.Count(); i++ )
+            {
+            aConnMethodArray.AppendL( iUnsupportedConnMethods[i] );
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_GETCONNMETHODSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Return the number of destinations in database.
+// ---------------------------------------------------------------------------
+//
+TInt CCmmInstanceMapping::GetDestinationCount() const
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_GETDESTINATIONCOUNT_ENTRY );
+
+    return iDestinations.Count();
+    }
+
+// ---------------------------------------------------------------------------
+// Return an array containing all destination IDs.
+// ---------------------------------------------------------------------------
+//
+void CCmmInstanceMapping::GetDestinationsL( RArray<TUint32>& aDestinationArray ) const
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_GETDESTINATIONSL_ENTRY );
+
+    aDestinationArray.Reset();
+    aDestinationArray.ReserveL( iDestinations.Count() ); // Re-allocates only if more is needed.
+
+    for ( TInt i = 0; i < iDestinations.Count(); i++ )
+        {
+        aDestinationArray.AppendL( iDestinations[i]->iId );
+        }
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_GETDESTINATIONSL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Inserts all the valid connection methods inside the given destination into
+// the provided connection method item array. The array is reset first.
+// ---------------------------------------------------------------------------
+//
+void CCmmInstanceMapping::GetConnMethodsFromDestinationL(
+        const TUint32& aDestinationId,
+        RArray<TCmmConnMethodItem>& aConnMethodArray ) const
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_GETCONNMETHODSFROMDESTINATIONL_ENTRY );
+
+    TBool destinationFound( EFalse );
+
+    for ( TInt i = 0; i < iDestinations.Count(); i++ )
+        {
+        if ( iDestinations[i]->iId == aDestinationId )
+            {
+            destinationFound = ETrue;
+            aConnMethodArray.Reset();
+            aConnMethodArray.ReserveL( iDestinations[i]->iConnMethodItemArray.Count() );
+
+            for ( TInt j = 0; j < iDestinations[i]->iConnMethodItemArray.Count(); j++ )
+                {
+                aConnMethodArray.AppendL( iDestinations[i]->iConnMethodItemArray[j] );
+                }
+            break;
+            }
+        }
+    if ( !destinationFound )
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_GETCONNMETHODSFROMDESTINATIONL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Check if the given connection method belongs to any other destination than
+// the one provided.
+// ---------------------------------------------------------------------------
+//
+TBool CCmmInstanceMapping::ConnMethodInOtherDestination(
+        const TUint32& aConnMethodId,
+        const TUint32& aDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_CONNMETHODINOTHERDESTINATION_ENTRY );
+
+    // Loop through all destinations.
+    for ( TInt i = 0; i < iDestinations.Count(); i++ )
+        {
+        // Skip the specified destination.
+        if ( iDestinations[i]->iId != aDestinationId )
+            {
+            // Loop through all connection methods in the current destination.
+            for ( TInt j = 0; j < iDestinations[i]->iConnMethodItemArray.Count(); j++ )
+                {
+                if ( iDestinations[i]->iConnMethodItemArray[j].iId == aConnMethodId )
+                    {
+                    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_CONNMETHODINOTHERDESTINATION_EXIT );
+                    return ETrue;
+                    }
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( DUP1_CCMMINSTANCEMAPPING_CONNMETHODINOTHERDESTINATION_EXIT );
+    return EFalse;
+    }
+
+// ---------------------------------------------------------------------------
+// Return the EasyWLAN IAP ID, zero if not found or WLAN not supported.
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmmInstanceMapping::EasyWlanIdL()
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_EASYWLANIDL_ENTRY );
+
+    iEasyWlanId = 0;
+
+    // Check WLAN support.
+    if ( iCache.WlanSupported() )
+        {
+        CMDBRecordSet<CCDIAPRecord>* iapRecordSet =
+                new( ELeave ) CMDBRecordSet<CCDIAPRecord>( KCDTIdIAPRecord );
+        CleanupStack::PushL( iapRecordSet );
+        TRAP_IGNORE( iapRecordSet->LoadL( Session() ) );
+
+        TInt iapRecordCount( iapRecordSet->iRecords.Count() );
+        for ( TInt i = 0; i < iapRecordCount; i++ )
+            {
+            CCDIAPRecord* iapRecord = ( CCDIAPRecord* )iapRecordSet->iRecords[i];
+
+            if ( TPtrC( iapRecord->iServiceType ) == TPtrC( KCDTypeNameLANService ) &&
+                    TPtrC( iapRecord->iBearerType ) == TPtrC( KCDTypeNameLANBearer ) )
+                {
+                TUint32 serviceId = iapRecord->iService;
+
+                CCDWlanServiceRecord* wlanServ =
+                        new( ELeave ) CCDWlanServiceRecord(
+                                CCDWlanServiceRecord::TableIdL( Session() ) );
+                CleanupStack::PushL( wlanServ );
+
+                wlanServ->iWlanServiceId.SetL( serviceId );
+                if ( wlanServ->FindL( Session() ) )
+                    {
+                    wlanServ->LoadL( Session() );
+                    // Only EasyWLAN IAP has NULL in SSID field.
+                    if ( wlanServ->iWLanSSID.IsNull() ||
+                            !( TPtrC( wlanServ->iWLanSSID ).Compare( KNullDesC ) ) )
+                        {
+                        iEasyWlanId = iapRecord->RecordId();
+                        }
+                    }
+                CleanupStack::PopAndDestroy( wlanServ );
+                }
+            if ( iEasyWlanId != 0 )
+                {
+                break;
+                }
+            }
+        CleanupStack::PopAndDestroy( iapRecordSet );
+        }
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_EASYWLANIDL_EXIT );
+    return iEasyWlanId;
+    }
+
+// ---------------------------------------------------------------------------
+// Find out the internet destination ID. ID is set to 0 if not found.
+// ---------------------------------------------------------------------------
+//
+void CCmmInstanceMapping::InternetDestinationIdL( TUint& aInternetDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_INTERNETDESTINATIONIDL_ENTRY );
+
+    // Set to zero in case the destination is not found.
+    aInternetDestinationId = 0;
+
+    CommsDat::CMDBRecordSet<CCDSNAPMetadataRecord>* metaSet =
+            new( ELeave )CommsDat::CMDBRecordSet<CCDSNAPMetadataRecord>(
+                    iCache.TableId( ECmmDestMetadataRecord ) );
+    CleanupStack::PushL( metaSet );
+
+    TRAP_IGNORE( metaSet->LoadL( Session() ) );
+
+    CCDSNAPMetadataRecord* metadataRecord =
+            new( ELeave ) CCDSNAPMetadataRecord(
+                    iCache.TableId( ECmmDestMetadataRecord ) );
+    CleanupStack::PushL( metadataRecord );
+
+    for ( TInt i = 0; i < metaSet->iRecords.Count(); i++ )
+        {
+        metadataRecord->SetRecordId( metaSet->iRecords[i]->RecordId() );
+        metadataRecord->LoadL( Session() );
+
+        TUint32 metadata = metadataRecord->iMetadata;
+
+        TUint32 internet = metadata & CMManager::ESnapMetadataInternet;
+        TUint32 localizationValue = ( metadata & CMManager::ESnapMetadataDestinationIsLocalised ) >> 4;
+        TUint32 purposeValue = ( metadata & CMManager::ESnapMetadataPurpose ) >> 8;
+
+        // The first record that has a matching value in any of the 3 metadata
+        // fields will be taken as the internet snap.
+        if ( internet ||
+                ( localizationValue == CMManager::ELocalisedDestInternet ) ||
+                ( purposeValue == CMManager::ESnapPurposeInternet ) )
+            {
+            TInt id = metadataRecord->iSNAP;
+            if ( ValidDestinationId( ( TUint32 )id ) )
+                {
+                aInternetDestinationId = ( TUint )id;
+                break;
+                }
+            }
+        }
+    CleanupStack::PopAndDestroy( metadataRecord );
+    CleanupStack::PopAndDestroy( metaSet );
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_INTERNETDESTINATIONIDL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Add a connection method ID to deleted list. Ignores any duplicates. Also
+// removes the connection method from destination/connection method structures
+// so Refresh()-call is not needed. Use this method if the connection method
+// has not been removed from database yet.
+// ---------------------------------------------------------------------------
+//
+void CCmmInstanceMapping::AddConnMethodToDeletedListL( const TUint& aConnMethodId )
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_ADDCONNMETHODTODELETEDLISTL_ENTRY );
+
+    iDeletedConnMethods.InsertInOrderL( aConnMethodId );
+
+    // Remove the connection method from current destination/connection method structures.
+    RemoveConnMethod( aConnMethodId );
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_ADDCONNMETHODTODELETEDLISTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Remove a connection method ID from deleted list. Nothing happens if ID is
+// not found from the list.
+// ---------------------------------------------------------------------------
+//
+void CCmmInstanceMapping::RemoveConnMethodFromDeletedList( const TUint& aConnMethodId )
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_REMOVECONNMETHODFROMDELETEDLIST_ENTRY );
+
+    TInt index = iDeletedConnMethods.FindInOrder( aConnMethodId );
+    if ( index != KErrNotFound )
+        {
+        iDeletedConnMethods.Remove( index );
+        }
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_REMOVECONNMETHODFROMDELETEDLIST_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Add a destination ID to deleted list. Ignores any duplicates. Also removes
+// the destination from destination/connection method structures so
+// Refresh()-call is not needed. Use this method if the connection method has
+// not been removed from database yet.
+// ---------------------------------------------------------------------------
+//
+void CCmmInstanceMapping::AddDestinationToDeletedListL( const TUint& aDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_ADDDESTINATIONTODELETEDLISTL_ENTRY );
+
+    iDeletedDestinations.InsertInOrderL( aDestinationId );
+
+    // Remove the destination from current destination/connection method structures.
+    RemoveDestination( aDestinationId );
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_ADDDESTINATIONTODELETEDLISTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Remove a destination ID from deleted list. Nothing happens if ID is not
+// found from the list.
+// ---------------------------------------------------------------------------
+//
+void CCmmInstanceMapping::RemoveDestinationFromDeletedList( const TUint& aDestinationId ) //TODO, check removal is called in all necessary places.
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_REMOVEDESTINATIONFROMDELETEDLIST_ENTRY );
+
+    TInt index = iDeletedDestinations.FindInOrder( aDestinationId );
+    if ( index != KErrNotFound )
+        {
+        iDeletedDestinations.Remove( index );
+        }
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_REMOVEDESTINATIONFROMDELETEDLIST_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Remove the connection method from current destination/connection method
+// structures. This is a lot faster than calling Refresh(). Use this method if
+// the connection method has been removed from database.
+// ---------------------------------------------------------------------------
+//
+void CCmmInstanceMapping::RemoveConnMethod( const TUint32& aConnMethodId ) //TODO, check where this is used and if it would be better to use version with array instead?
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_REMOVECONNMETHOD_ENTRY );
+
+    // Remove from list of connection methods.
+    for ( TInt i = 0; i < iConnMethodItemArray.Count(); i++ )
+        {
+        if ( iConnMethodItemArray[i].iId == aConnMethodId )
+            {
+            iConnMethodItemArray.Remove( i );
+            break;
+            }
+        }
+
+    // Remove connection method from all destinations.
+    for ( TInt i = 0; i < iDestinations.Count(); i++ )
+        {
+        for ( TInt j = 0; j < iDestinations[i]->iConnMethodItemArray.Count(); j++ )
+            {
+            if ( iDestinations[i]->iConnMethodItemArray[j].iId == aConnMethodId )
+                {
+                iDestinations[i]->iConnMethodItemArray.Remove( j );
+                break;
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_REMOVECONNMETHOD_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Remove the connection method from current destination/connection method
+// structures. This is a lot faster than calling Refresh(). Use this method if
+// the connection method has been removed from database.
+// ---------------------------------------------------------------------------
+//
+void CCmmInstanceMapping::RemoveConnMethod(
+        const TUint32& aConnMethodId,
+        RArray<TUint32>& aChangedDestinations )
+    {
+
+    // Remove from list of connection methods.
+    for ( TInt i = 0; i < iConnMethodItemArray.Count(); i++ )
+        {
+        if ( iConnMethodItemArray[i].iId == aConnMethodId )
+            {
+            iConnMethodItemArray.Remove( i );
+            break;
+            }
+        }
+
+    // Remove connection method from all destinations.
+    for ( TInt i = 0; i < iDestinations.Count(); i++ )
+        {
+        for ( TInt j = 0; j < iDestinations[i]->iConnMethodItemArray.Count(); j++ )
+            {
+            if ( iDestinations[i]->iConnMethodItemArray[j].iId == aConnMethodId )
+                {
+                iDestinations[i]->iConnMethodItemArray.Remove( j );
+                // Add ID of changed destination into array. Ignore any error.
+                aChangedDestinations.Append( iDestinations[i]->iId );
+                break;
+                }
+            }
+        }
+
+    }
+
+// ---------------------------------------------------------------------------
+// Remove the destination from current destination/connection method
+// structures. This is a lot faster than calling Refresh(). Use this method if
+// the connection method has been removed from database.
+// ---------------------------------------------------------------------------
+//
+void CCmmInstanceMapping::RemoveDestination( const TUint32& aDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_REMOVEDESTINATION_ENTRY );
+
+    for ( TInt i = 0; i < iDestinations.Count(); i++ )
+        {
+        if ( iDestinations[i]->iId == aDestinationId )
+            {
+            delete iDestinations[i];
+            iDestinations.Remove( i );
+            i--;
+            }
+        else
+            {
+            // Check also if the destination is an embedded destination
+            // anywhere, and remove that reference too.
+            TInt cmCount( iDestinations[i]->iConnMethodItemArray.Count() );
+            if ( cmCount )
+                {
+                if ( iDestinations[i]->iConnMethodItemArray[cmCount - 1].iId == aDestinationId )
+                    {
+                    iDestinations[i]->iConnMethodItemArray.Remove( cmCount - 1 );
+                    }
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_REMOVEDESTINATION_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Remove the connection method from all destinations in the current
+// destination/connection method structures. This is a lot faster than calling
+// Refresh(). The ID of any changed destination is added to the
+// aChangedDestinations-array.
+// ---------------------------------------------------------------------------
+//
+void CCmmInstanceMapping::RemoveConnMethodFromDestinations(
+        const TUint32& aConnMethodId,
+        RArray<TUint32>& aChangedDestinations )
+    {
+    OstTraceFunctionEntry0( CCMMINSTANCEMAPPING_REMOVECONNMETHODFROMDESTINATIONS_ENTRY );
+
+    // Remove given connection method from all destinations.
+    for ( TInt i = 0; i < iDestinations.Count(); i++ )
+        {
+        for ( TInt j = 0; j < iDestinations[i]->iConnMethodItemArray.Count(); j++ )
+            {
+            if ( iDestinations[i]->iConnMethodItemArray[j].iId == aConnMethodId )
+                {
+                iDestinations[i]->iConnMethodItemArray.Remove( j );
+                // Add ID of changed destination into array. Ignore any error.
+                aChangedDestinations.Append( iDestinations[i]->iId );
+                break;
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMINSTANCEMAPPING_REMOVECONNMETHODFROMDESTINATIONS_EXIT );
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmlistenermanager.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,183 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Manages all CommsDat table specific CenRep listeners.
+*
+*/
+
+
+#include "cmmcache.h"
+#include "cmmlistenermanager.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmlistenermanagerTraces.h"
+#endif
+
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmListenerManager* CCmmListenerManager::NewL( CCmmCache* aCache )
+    {
+    OstTraceFunctionEntry0( CCMMLISTENERMANAGER_NEWL_ENTRY );
+
+    CCmmListenerManager* self = CCmmListenerManager::NewLC( aCache );
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMMLISTENERMANAGER_NEWL_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Two phased construction.
+// ---------------------------------------------------------------------------
+//
+CCmmListenerManager* CCmmListenerManager::NewLC( CCmmCache* aCache )
+    {
+    OstTraceFunctionEntry0( CCMMLISTENERMANAGER_NEWLC_ENTRY );
+
+    CCmmListenerManager* self = new( ELeave ) CCmmListenerManager( aCache );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+
+    OstTraceFunctionExit0( CCMMLISTENERMANAGER_NEWLC_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CCmmListenerManager::~CCmmListenerManager()
+    {
+    OstTraceFunctionEntry0( CCMMLISTENERMANAGER_CCMMLISTENERMANAGER_ENTRY );
+
+    // The destructor of each listener will cancel their own active request.
+    iListeners.ResetAndDestroy();
+
+    OstTraceFunctionExit0( CCMMLISTENERMANAGER_CCMMLISTENERMANAGER_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------------------------
+//
+CCmmListenerManager::CCmmListenerManager( CCmmCache* aCache ) : iCache( aCache )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMMLISTENERMANAGER_CCMMLISTENERMANAGER_ENTRY );
+    OstTraceFunctionExit0( DUP1_CCMMLISTENERMANAGER_CCMMLISTENERMANAGER_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CCmmListenerManager::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMMLISTENERMANAGER_CONSTRUCTL_ENTRY );
+
+    // Create the basic set of listeners, start them if necessary and store them in iListeners-array.
+
+    OstTraceFunctionExit0( CCMMLISTENERMANAGER_CONSTRUCTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Adds a new listener to monitor for changes in the given database table.
+// ---------------------------------------------------------------------------
+//
+void CCmmListenerManager::AddListenerL( TUint32 aIdentifier )
+    {
+    OstTraceFunctionEntry0( CCMMLISTENERMANAGER_ADDLISTENERL_ENTRY );
+
+    TBool duplicateFound( EFalse );
+    for ( TInt i = 0; i < iListeners.Count(); i++ )
+        {
+        if ( iListeners[i]->GetTableId() == aIdentifier )
+            {
+            duplicateFound = ETrue;
+            break;
+            }
+        }
+
+    if ( !duplicateFound )
+        {
+        CCmmDbChangeListener* dbChangeListener = CCmmDbChangeListener::NewLC( this, aIdentifier );
+        iListeners.AppendL( dbChangeListener );
+        CleanupStack::Pop( dbChangeListener );
+        TInt err = dbChangeListener->Start();
+        if ( err )
+            {
+            iCache->DbChangeError( aIdentifier );
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMLISTENERMANAGER_ADDLISTENERL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Stops and deletes the listener monitoring the given database table.
+// ---------------------------------------------------------------------------
+//
+TInt CCmmListenerManager::RemoveListener( TUint32 aIdentifier )
+    {
+    OstTraceFunctionEntry0( CCMMLISTENERMANAGER_REMOVELISTENER_ENTRY );
+
+    TInt res( KErrNotFound );
+    for ( TInt i = 0; i < iListeners.Count(); i++ )
+        {
+        if ( iListeners[i]->GetTableId() == aIdentifier )
+            {
+            delete iListeners[i];
+            iListeners.Remove( i );
+            res = KErrNone;
+            break;
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMLISTENERMANAGER_REMOVELISTENER_EXIT );
+    return res;
+    }
+
+// ---------------------------------------------------------------------------
+// Tells the listener manager that a change has been detected in the given
+// database table.
+// ---------------------------------------------------------------------------
+//
+void CCmmListenerManager::DbChangeDetected( TUint32 aIdentifier )
+    {
+    OstTraceFunctionEntry0( CCMMLISTENERMANAGER_DBCHANGEDETECTED_ENTRY );
+
+    iCache->DbChangeDetected( aIdentifier );
+
+    OstTraceFunctionExit0( CCMMLISTENERMANAGER_DBCHANGEDETECTED_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Tells the listener manager that an error has been encountered while
+// listening the given database table. Change notifications will not be working
+// for this database table.
+// ---------------------------------------------------------------------------
+//
+void CCmmListenerManager::DbChangeError( TUint32 aIdentifier )
+    {
+    OstTraceFunctionEntry0( CCMMLISTENERMANAGER_DBCHANGEERROR_ENTRY );
+
+    iCache->DbChangeError( aIdentifier );
+
+    OstTraceFunctionExit0( CCMMLISTENERMANAGER_DBCHANGEERROR_EXIT );
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmserver.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,580 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Connection method manager server.
+*
+*/
+
+
+#include <cmconnectionmethoddef.h>
+#include <cmpluginpacketdatadef.h>
+#include <cmpluginwlandef.h>
+
+#include "cmmserver.h"
+#include "cmmsession.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmserverTraces.h"
+#endif
+
+
+const TUint CCmmServer::iCmmRangeCount = 12;
+
+const TInt CCmmServer::iCmmRanges[iCmmRangeCount] =
+    {
+    0,      //   0-10
+    11,     //  11-14
+    15,     //  15-21
+    22,     //  22-99
+    100,    // 100-112
+    113,    // 113-126
+    127,    // 127-199
+    200,    // 200-205
+    206,    // 206-210
+    211,    // 211-214
+    215,    // 215-220
+    221     // 221-KMaxInt
+    };
+
+const TUint8 CCmmServer::iCmmElementIndex[iCmmRangeCount] =
+    {
+    CPolicyServer::EAlwaysPass,     // 0-10
+    CPolicyServer::ECustomCheck,    // 11-14
+    CPolicyServer::ECustomCheck,    // 15-21
+    CPolicyServer::ENotSupported,   // 22-99
+    CPolicyServer::EAlwaysPass,     // 100-112
+    CPolicyServer::ECustomCheck,    // 113-126
+    CPolicyServer::ENotSupported,   // 127-199
+    CPolicyServer::EAlwaysPass,     // 200-205
+    CPolicyServer::ECustomCheck,    // 206-210
+    CPolicyServer::ECustomCheck,    // 211-214
+    CPolicyServer::ECustomCheck,    // 215-220
+    CPolicyServer::ENotSupported    // 221->
+    };
+
+const CPolicyServer::TPolicyElement CCmmServer::iCmmElements[] =
+    {
+    {_INIT_SECURITY_POLICY_C1(ECapabilityReadDeviceData), CPolicyServer::EFailClient},
+    {_INIT_SECURITY_POLICY_C1(ECapabilityWriteDeviceData), CPolicyServer::EFailClient},
+    {_INIT_SECURITY_POLICY_C2(ECapabilityReadDeviceData, ECapabilityWriteDeviceData), 
+            CPolicyServer::EFailClient},
+    {_INIT_SECURITY_POLICY_C1(ECapabilityNetworkControl), CPolicyServer::EFailClient},
+    };
+
+const CPolicyServer::TPolicy CCmmServer::iCmmPolicy = //TODO, check comments
+    {
+    CPolicyServer::EAlwaysPass, // Specifies all connect attempts should pass
+    iCmmRangeCount,     // Count of ranges
+    iCmmRanges,         // 0-999, 1000-1008, 1009...
+    iCmmElementIndex,   // Only range 1000-1008 are checked
+    iCmmElements        // The list of policy elements
+    };
+
+
+// -----------------------------------------------------------------------------
+// CCmmServer::CustomSecurityCheckL
+// Implements custom security checking for IPCs marked with
+// TSpecialCase::ECustomCheck.
+// -----------------------------------------------------------------------------
+//
+CPolicyServer::TCustomResult CCmmServer::CustomSecurityCheckL(
+        const RMessage2& aMessage,
+        TInt& /*aAction*/,
+        TSecurityInfo& /*aMissing*/ )
+    {
+    switch ( aMessage.Function() )
+        {
+        // ***********  2nd range: 11-14 *************
+        case ECmmGetConnMethodInfoInt:
+        case ECmmGetConnMethodInfoBool:
+        case ECmmGetConnMethodInfoString:
+        case ECmmGetConnMethodInfoString8:
+        // ***********  10th range: 211-214 *************
+        case ECMGetIntAttribute:
+        case ECMGetBoolAttribute:
+        case ECMGetStringAttribute:
+        case ECMGetString8Attribute:
+            {
+            switch ( aMessage.Int0() )
+                {
+                // Private userdata has to be checked.
+                // WPA:
+                case CMManager::EWlanEnableWpaPsk:
+                case CMManager::EWlanWpaPreSharedKey:
+                // WEP:
+                case CMManager::EWlanWepKey1InHex:
+                case CMManager::EWlanWepKey2InHex:
+                case CMManager::EWlanWepKey3InHex:
+                case CMManager::EWlanWepKey4InHex:
+                case CMManager::EWlanWepKey1InAscii:
+                case CMManager::EWlanWepKey2InAscii:
+                case CMManager::EWlanWepKey3InAscii:
+                case CMManager::EWlanWepKey4InAscii:
+                case CMManager::EWlanWepKeyIndex:
+                // WAPI:
+                case CMManager::EWlanWapiPsk:
+                case CMManager::EWlanWapiPskFormat:
+                // 802.1x:
+                case CMManager::EWlan802_1xAllowUnencrypted: //TODO, should this be here?
+                // Authentication:
+                case CMManager::ECmIFAuthName:
+                case CMManager::EPacketDataIFAuthName:
+                case CMManager::ECmIFAuthPass:
+                case CMManager::EPacketDataIFAuthPass:
+                    {
+                    // ECapabilityReadDeviceData
+                    return ( iCmmElements[0].iPolicy.CheckPolicy( aMessage ) ) ?
+                        EPass : EFail;
+                    }
+                default:
+                    // By default reading does not need any capabilities
+                    return EPass;
+                }
+            }
+        // ***********  3rd range: 15-21 *************
+        case ECmmUpdateBearerPriorityArray:
+        case ECmmWriteDefaultConnection:
+        case ECmmWriteGeneralConnectionSettings:
+            {
+            // ECapabilityWriteDeviceData is needed for writing
+            return ( iCmmElements[1].iPolicy.CheckPolicy( aMessage ) ) ?
+                EPass : EFail;
+            }
+        case ECmmCopyConnMethod:
+        case ECmmMoveConnMethod:
+        case ECmmRemoveConnMethod:
+        case ECmmRemoveAllReferences:
+            {
+            // At this phase capability is not checked because of
+            // it's too heavy operation...
+            // At later phase the protection of the target destination
+            // and/or connection method is checked.
+            return EPass;
+            }
+        // ***********  6th range: 113-126 *************
+        case EDestCreateDestinationWithName:
+        case EDestCreateDestinationWithNameAndId:
+            {
+            // ECapabilityWriteDeviceData is needed for writing
+            return ( iCmmElements[1].iPolicy.CheckPolicy( aMessage ) ) ?
+                EPass : EFail;
+            }
+        case EDestIsConnected:
+        case EDestAddConnMethod:
+        case EDestAddEmbeddedDestination:
+        case EDestDeleteConnMethod:
+        case EDestRemoveConnMethod:
+        case EDestModifyPriority:
+        case EDestSetName:
+        case EDestSetMetadata:
+        case EDestSetProtection:
+        case EDestSetHidden:
+        case EDestUpdate:
+        case EDestDelete:
+            {
+            // At this phase capability is not checked because of
+            // it's too heavy operation...
+            // At Session phase the protection of the destination and/or
+            // connection method is checked. If destination/connection method
+            // is protected ECapabilityNetworkControl is required from a
+            // client.
+            return EPass;
+            }
+        // ***********  9th range: 206-210 *************
+        case ECMCreateConnMethod:
+        case ECMCreateConnMethodWithId:
+            {
+            // ECapabilityWriteDeviceData is needed for writing
+            return ( iCmmElements[1].iPolicy.CheckPolicy( aMessage ) ) ?
+                EPass : EFail;
+            }
+        case ECMCreateConnMethodToDest:
+        case ECMCreateConnMethodToDestWithId:
+        case ECMCreateCopyOfExisting:
+            {
+            // At this phase capability is not checked because of
+            // it's too heavy operation...
+            // At Session phase the protection of the destination and/or
+            // connection method is checked.
+            return EPass;
+            }
+        // ***********  11th range: 215-220 *************
+        case ECMSetIntAttribute:
+        case ECMSetBoolAttribute:
+        case ECMSetStringAttribute:
+        case ECMSetString8Attribute:
+            {
+            switch ( aMessage.Int0() )
+                {
+                // WPA:
+                case CMManager::EWlanEnableWpaPsk:
+                case CMManager::EWlanWpaPreSharedKey:
+                // WEP:
+                case CMManager::EWlanWepKey1InHex:
+                case CMManager::EWlanWepKey2InHex:
+                case CMManager::EWlanWepKey3InHex:
+                case CMManager::EWlanWepKey4InHex:
+                case CMManager::EWlanWepKey1InAscii:
+                case CMManager::EWlanWepKey2InAscii:
+                case CMManager::EWlanWepKey3InAscii:
+                case CMManager::EWlanWepKey4InAscii:
+                case CMManager::EWlanWepKeyIndex:
+                // WAPI:
+                case CMManager::EWlanWapiPsk:
+                case CMManager::EWlanWapiPskFormat:
+                // 802.1x:
+                case CMManager::EWlan802_1xAllowUnencrypted: //TODO, should this be here?
+                // Authentication:
+                case CMManager::ECmIFAuthName:
+                case CMManager::EPacketDataIFAuthName:
+                case CMManager::ECmIFAuthPass:
+                case CMManager::EPacketDataIFAuthPass:
+                    {
+                    // ECapabilityReadDeviceData
+                    return ( iCmmElements[2].iPolicy.CheckPolicy( aMessage ) ) ?
+                        EPass : EFail;
+                    }
+                default:
+                    {
+                    // ECapabilityWriteDeviceData
+                    return ( iCmmElements[1].iPolicy.CheckPolicy( aMessage ) ) ?
+                        EPass : EFail;
+                    }
+                }
+            }
+        case ECMDelete:
+        case ECMUpdate:
+            {
+            // ECapabilityWriteDeviceData
+            return ( iCmmElements[1].iPolicy.CheckPolicy( aMessage ) ) ?
+                EPass : EFail;
+            }
+        default:
+            return EPass;
+        }
+    }
+
+CCmmServer::CCmmServer( TInt aPriority ) : CPolicyServer( aPriority, iCmmPolicy )
+    {
+    OstTraceFunctionEntry0( CCMMSERVER_CCMMSERVER_ENTRY );
+
+    iSessionCount = 0;
+    iCmManager = NULL;
+    iContainerIndex = NULL;
+    iShutdown = NULL;
+
+    OstTraceFunctionExit0( CCMMSERVER_CCMMSERVER_EXIT );
+    }
+
+CCmmServer::~CCmmServer()
+    {
+    OstTraceFunctionEntry0( DUP1_CCMMSERVER_CCMMSERVER_ENTRY );
+
+    delete iCmManager;
+    delete iContainerIndex;
+    delete iShutdown;
+
+    OstTraceFunctionExit0( DUP1_CCMMSERVER_CCMMSERVER_EXIT );
+    }
+
+CCmmServer* CCmmServer::NewL()
+    {
+    OstTraceFunctionEntry0( CCMMSERVER_NEWL_ENTRY );
+
+    CCmmServer* server = CCmmServer::NewLC();
+    CleanupStack::Pop( server );
+
+    OstTraceFunctionExit0( CCMMSERVER_NEWL_EXIT );
+    return server;
+    }
+
+CCmmServer* CCmmServer::NewLC()
+    {
+    OstTraceFunctionEntry0( CCMMSERVER_NEWLC_ENTRY );
+
+    CCmmServer* server = new( ELeave ) CCmmServer( EPriorityNormal );
+    CleanupStack::PushL( server );
+    server->ConstructL();
+
+    OstTraceFunctionExit0( CCMMSERVER_NEWLC_EXIT );
+    return server;
+    }
+
+void CCmmServer::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMMSERVER_CONSTRUCTL_ENTRY );
+
+    StartL( KCmmServer );
+
+    iCmManager = CCmManagerImpl::NewL();
+
+    // Create the object container index.
+    iContainerIndex = CObjectConIx::NewL();
+
+    // Construct shutdown timer.
+    iShutdown = new( ELeave ) CCmmDelayedShutdown( this );
+    iShutdown->ConstructL();
+
+    OstTraceFunctionExit0( CCMMSERVER_CONSTRUCTL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Create a new session.
+// -----------------------------------------------------------------------------
+//
+CSession2* CCmmServer::NewSessionL(
+        const TVersion& /*aVersion*/,
+        const RMessage2& /*aMessage*/ ) const
+    {
+    OstTraceFunctionEntry0( CCMMSERVER_NEWSESSIONL_ENTRY );
+
+    return CCmmSession::NewL( *const_cast<CCmmServer*>( this ), iCmManager->Cache() );
+    }
+
+// -----------------------------------------------------------------------------
+// Increments the session counter. Cancels the shutdown timer if active.
+// -----------------------------------------------------------------------------
+//
+void CCmmServer::IncrementSessions()
+    {
+    OstTraceFunctionEntry0( CCMMSERVER_INCREMENTSESSIONS_ENTRY );
+
+    iSessionCount++;
+    iShutdown->Cancel();
+
+    OstTraceFunctionExit0( CCMMSERVER_INCREMENTSESSIONS_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Decrements the session counter. Starts the shutdown counter when last
+// session closes.
+// -----------------------------------------------------------------------------
+//
+void CCmmServer::DecrementSessions()
+    {
+    OstTraceFunctionEntry0( CCMMSERVER_DECREMENTSESSIONS_ENTRY );
+
+    iSessionCount--;
+
+    // Terminate the server when there are no clients left.
+    if ( iSessionCount <= 0 )
+        {
+        if ( !iShutdown->IsActive() )
+            {
+            iShutdown->Start();
+            }
+        }
+    OstTraceFunctionExit0( CCMMSERVER_DECREMENTSESSIONS_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmServer::NewContainerL
+// -----------------------------------------------------------------------------
+//
+CObjectCon* CCmmServer::NewContainerL()
+    {
+    OstTraceFunctionEntry0( CCMMSERVER_NEWCONTAINERL_ENTRY );
+
+    return iContainerIndex->CreateL();
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmServer::RemoveContainer
+// -----------------------------------------------------------------------------
+//
+void CCmmServer::RemoveContainer( CObjectCon* aContainer )
+    {
+    OstTraceFunctionEntry0( CCMMSERVER_REMOVECONTAINER_ENTRY );
+
+    iContainerIndex->Remove( aContainer );
+
+    OstTraceFunctionExit0( CCMMSERVER_REMOVECONTAINER_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmServer::RunError
+// -----------------------------------------------------------------------------
+//
+TInt CCmmServer::RunError( TInt aError )
+    {
+    OstTraceFunctionEntry0( CCMMSERVER_RUNERROR_ENTRY );
+
+    Message().Complete( aError );
+
+    // The leave will result in an early return from CServer::RunL(),
+    // skipping the call to request another message. So we issue the
+    // request here in order to keep the server running.
+    ReStart();
+
+    OstTraceFunctionExit0( CCMMSERVER_RUNERROR_EXIT );
+
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmServer::CmManager
+// -----------------------------------------------------------------------------
+//
+CCmManagerImpl* CCmmServer::CmManager()
+    {
+    OstTraceFunctionEntry0( CCMMSERVER_CMMANAGER_ENTRY );
+
+    OstTraceFunctionExit0( CCMMSERVER_CMMANAGER_EXIT );
+
+    return iCmManager;
+    }
+
+// -----------------------------------------------------------------------------
+// Check for restrictions for adding an embedded destination from destination
+// instances of all clients.
+// - aDestinationId is the ID of the destination where a destination is beeing
+//   embedded.
+// - aEmbeddedDestinationId is the ID of the destination that is beeing
+//   embedded.
+// -----------------------------------------------------------------------------
+//
+TBool CCmmServer::EmbeddedDestinationConflictsFromAllSessions(
+        const TUint32& aDestinationId,
+        const TUint32& aEmbeddedDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMSERVER_EMBEDDEDDESTINATIONCONFLICTSFROMALLSESSIONS_ENTRY );
+
+    TBool result( EFalse );
+    CSession2* session( NULL );
+
+    // Iterate through all sessions.
+    iSessionIter.SetToFirst();
+    for ( session = iSessionIter++; session; session = iSessionIter++ )
+        {
+        CCmmSession* cmmSession = static_cast<CCmmSession*>( session );
+        if ( cmmSession->EmbeddedDestinationConflicts( aDestinationId, aEmbeddedDestinationId ) )
+            {
+            result = ETrue;
+            break;
+            }
+        }
+    OstTraceFunctionExit0( CCMMSERVER_EMBEDDEDDESTINATIONCONFLICTSFROMALLSESSIONS_EXIT );
+
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// Notify each session about a destination/connection method that has been
+// updated to, or deleted from, database.
+// ---------------------------------------------------------------------------
+//
+void CCmmServer::RefreshHandlesForAllSessions( const TUint32& aId )
+    {
+    OstTraceFunctionEntry0( CCMMSERVER_REFRESHHANDLESFORALLSESSIONS_ENTRY );
+
+    CSession2* session( NULL );
+
+    // Iterate through all sessions.
+    iSessionIter.SetToFirst();
+    for ( session = iSessionIter++; session; session = iSessionIter++ )
+        {
+        CCmmSession* cmmSession = static_cast<CCmmSession*>( session );
+        cmmSession->RefreshHandles( aId );
+        }
+    OstTraceFunctionExit0( CCMMSERVER_REFRESHHANDLESFORALLSESSIONS_EXIT );
+    }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CCmmDelayedShutdown::CCmmDelayedShutdown
+// -----------------------------------------------------------------------------
+//
+CCmmDelayedShutdown::CCmmDelayedShutdown( CCmmServer* aServer )
+        :
+        CActive( 0 ),
+        iServer( aServer )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmDelayedShutdown::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CCmmDelayedShutdown::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMMDELAYEDSHUTDOWN_CONSTRUCTL_ENTRY );
+
+    CActiveScheduler::Add( this );
+    User::LeaveIfError( iTimer.CreateLocal() );
+
+    OstTraceFunctionExit0( CCMMDELAYEDSHUTDOWN_CONSTRUCTL_EXIT );
+    }
+
+// Destructor
+CCmmDelayedShutdown::~CCmmDelayedShutdown()
+    {
+    OstTraceFunctionEntry0( CCMMDELAYEDSHUTDOWN_CCMMDELAYEDSHUTDOWN_ENTRY );
+
+    Cancel();
+    iTimer.Close();
+    iServer = NULL;
+
+    OstTraceFunctionExit0( CCMMDELAYEDSHUTDOWN_CCMMDELAYEDSHUTDOWN_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmMonDelayedShutdown::Start
+// -----------------------------------------------------------------------------
+//
+void CCmmDelayedShutdown::Start()
+    {
+    OstTraceFunctionEntry0( CCMMDELAYEDSHUTDOWN_START_ENTRY );
+
+    if ( IsActive() )
+        {
+        OstTraceFunctionExit0( CCMMDELAYEDSHUTDOWN_START_EXIT );
+
+        return;
+        }
+
+    iTimer.After( iStatus, KCmmShutdownDelay );
+    SetActive();
+
+    OstTraceFunctionExit0( DUP1_CCMMDELAYEDSHUTDOWN_START_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmMonDelayedShutdown::DoCancel
+// -----------------------------------------------------------------------------
+//
+void CCmmDelayedShutdown::DoCancel()
+    {
+    OstTraceFunctionEntry0( CCMMDELAYEDSHUTDOWN_DOCANCEL_ENTRY );
+
+    iTimer.Cancel();
+
+    OstTraceFunctionExit0( CCMMDELAYEDSHUTDOWN_DOCANCEL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmMonDelayedShutdown::RunL
+// -----------------------------------------------------------------------------
+//
+void CCmmDelayedShutdown::RunL()
+    {
+    OstTraceFunctionEntry0( CCMMDELAYEDSHUTDOWN_RUNL_ENTRY );
+
+    CActiveScheduler::Stop();
+
+    OstTraceFunctionExit0( CCMMDELAYEDSHUTDOWN_RUNL_EXIT );
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmsession.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,3064 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Handles client requests.
+*
+*/
+
+
+#include <cmconnectionmethoddef.h>
+#include <cmpluginembdestinationdef.h>
+#include <cmdefconnvalues.h>
+
+#include "cmmserver.h"
+#include "cmmserverdefs.h"
+#include "cmmsession.h"
+#include "cmmdestinationinstance.h"
+#include "cmmconnmethodinstance.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmsessionTraces.h"
+#endif
+
+
+CCmmSession* CCmmSession::NewL( CCmmServer& aServer, CCmmCache& aCache )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_NEWL_ENTRY );
+
+    CCmmSession* self = CCmmSession::NewLC( aServer, aCache );
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMMSESSION_NEWL_EXIT );
+    return self;
+    }
+
+CCmmSession* CCmmSession::NewLC( CCmmServer& aServer, CCmmCache& aCache )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_NEWLC_ENTRY );
+
+    CCmmSession* self = new( ELeave ) CCmmSession( aServer, aCache );
+    CleanupStack::PushL( self ) ;
+    self->ConstructL() ;
+
+    OstTraceFunctionExit0( CCMMSESSION_NEWLC_EXIT );
+    return self ;
+    }
+
+// -----------------------------------------------------------------------------
+// Constructor.
+// -----------------------------------------------------------------------------
+//
+CCmmSession::CCmmSession( CCmmServer& aServer, CCmmCache& aCache )
+        :
+        iServer( aServer ),
+        iCache( aCache )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_CCMMSESSION_ENTRY );
+
+    iDestinationContainer = NULL;
+    iDestinationObjects = NULL;
+    iConnMethodContainer = NULL;
+    iConnMethodObjects = NULL;
+
+    OstTraceFunctionExit0( CCMMSESSION_CCMMSESSION_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// The second phase of two phase construction.
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_CONSTRUCTL_ENTRY );
+
+    iServer.IncrementSessions();
+
+    // Create a new object index (it stores the destination objects owned by
+    // this session).
+    iDestinationObjects = CObjectIx::NewL();
+
+    // Initialize the object container using the object container index in the
+    // server (Object container provides unique ids for the objects owned by
+    // this session).
+    iDestinationContainer = iServer.NewContainerL();
+
+    // The same for connection method subsessions.
+    iConnMethodObjects = CObjectIx::NewL();
+    iConnMethodContainer = iServer.NewContainerL();
+
+    OstTraceFunctionExit0( CCMMSESSION_CONSTRUCTL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CCmmSession::~CCmmSession()
+    {
+    OstTraceFunctionEntry0( DUP1_CCMMSESSION_CCMMSESSION_ENTRY );
+
+    iServer.DecrementSessions();
+
+    delete iDestinationObjects;
+    iDestinationObjects = NULL;
+
+    if ( iDestinationContainer != 0 )
+        {
+        iServer.RemoveContainer( iDestinationContainer );
+        iDestinationContainer = NULL;
+        }
+
+    delete iConnMethodObjects;
+    iConnMethodObjects = NULL;
+
+    if ( iConnMethodContainer != 0 )
+        {
+        iServer.RemoveContainer( iConnMethodContainer );
+        iConnMethodContainer = NULL;
+        }
+    OstTraceFunctionExit0( DUP1_CCMMSESSION_CCMMSESSION_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::ServiceL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::ServiceL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_SERVICEL_ENTRY );
+
+    TInt result( KErrNone );
+    switch ( aMessage.Function() )
+        {
+        case ECmmGetBearerInfoInt:
+            {
+            GetBearerInfoIntL( aMessage );
+            }
+            break;
+        case ECmmGetBearerInfoBool:
+            {
+            GetBearerInfoBoolL( aMessage );
+            }
+            break;
+        case ECmmGetBearerInfoString:
+            {
+            GetBearerInfoStringL( aMessage );
+            }
+            break;
+        case ECmmGetBearerInfoString8:
+            {
+            GetBearerInfoString8L( aMessage );
+            }
+            break;
+        case ECmmGetConnMethodInfoInt:
+            {
+            GetConnMethodInfoIntL( aMessage );
+            }
+            break;
+        case ECmmGetConnMethodInfoBool:
+            {
+            GetConnMethodInfoBoolL( aMessage );
+            }
+            break;
+        case ECmmGetConnMethodInfoString:
+            {
+            GetConnMethodInfoStringL( aMessage );
+            }
+            break;
+        case ECmmGetConnMethodInfoString8:
+            {
+            GetConnMethodInfoString8L( aMessage );
+            }
+            break;
+        case ECmmGetConnMethodArray:
+            {
+            GetConnMethodArrayL( aMessage );
+            }
+            break;
+        case ECmmGetAllDestinations:
+            {
+            GetAllDestinationsL( aMessage );
+            }
+            break;
+        case ECmmGetEasyWlanId:
+            {
+            GetEasyWLANIdL( aMessage );
+            }
+            break;
+        case ECmmRemoveAllReferences: // CM becomes uncategorized.
+            {
+            RemoveAllReferencesL( aMessage );
+            }
+            break;
+        case ECmmGetSupportedBearers:
+            {
+            GetSupportedBearersL( aMessage );
+            }
+            break;
+        case ECmmReadDefaultConnection:
+            {
+            ReadDefaultConnectionL( aMessage );
+            }
+            break;
+        case ECmmWriteDefaultConnection:
+            {
+            // Default connection is now just internet snap.
+            result = KErrNotSupported;
+            }
+            break;
+        case ECmmReadGeneralConnectionSettings:
+            {
+            ReadGenConnSettingsL( aMessage );
+            }
+            break;
+        case ECmmWriteGeneralConnectionSettings:
+            {
+            WriteGenConnSettingsL( aMessage );
+            }
+            break;
+        case ECmmGetBearerPriorityArray:
+            {
+            GetBearerPriorityArrayL( aMessage );
+            }
+            break;
+        case ECmmUpdateBearerPriorityArray:
+            {
+            UpdateBearerPriorityArrayL( aMessage );
+            }
+            break;
+        case ECmmCopyConnMethod:
+            {
+            CopyConnMethodL( aMessage );
+            }
+            break;
+        case ECmmMoveConnMethod:
+            {
+            MoveConnMethodL( aMessage );
+            }
+            break;
+        case ECmmRemoveConnMethod:
+            {
+            RemoveConnMethodL( aMessage );
+            }
+            break;
+
+        case EDestGetDestination:
+        case EDestRefresh:
+        case EDestCreateDestinationWithName:
+        case EDestCreateDestinationWithNameAndId:
+        case EDestCloseDestination:
+        case EDestGetConnMethodCount:
+        case EDestGetConnMethodPriority:
+        case EDestGetName:
+        case EDestGetId:
+        case EDestGetElementId:
+        case EDestMetadata:
+        case EDestGetProtectionLevel:
+        case EDestIsConnected:
+        case EDestIsHidden:
+        case EDestIsEqual:
+        case EDestAddConnMethod:
+        case EDestAddEmbeddedDestination:
+        case EDestDeleteConnMethod:
+        case EDestRemoveConnMethod:
+        case EDestModifyPriority:
+        case EDestSetName:
+        case EDestSetMetadata:
+        case EDestSetProtection:
+        case EDestSetHidden:
+        case EDestUpdate:
+        case EDestDelete:
+            {
+            ServiceDestinationL( aMessage );
+            }
+            break;
+
+        case ECMGetConnMethodWithId:
+        case ECMRefresh:
+        case ECMCreateConnMethod:
+        case ECMCreateConnMethodWithId:
+        case ECMGetConnMethodFromDestWithIndex:
+        case ECMGetConnMethodFromDestWithId:
+        case ECMCreateConnMethodToDest:
+        case ECMCreateConnMethodToDestWithId:
+        case ECMCreateCopyOfExisting:
+        case ECMCloseConnMethod:
+        case ECMGetIntAttribute:
+        case ECMGetBoolAttribute:
+        case ECMGetStringAttribute:
+        case ECMGetString8Attribute:
+        case ECMIsEqual:
+        case ECMSetIntAttribute:
+        case ECMSetBoolAttribute:
+        case ECMSetStringAttribute:
+        case ECMSetString8Attribute:
+        case ECMDelete:
+        case ECMUpdate:
+        case EDestGetEmbeddedDestination:
+            {
+            ServiceConnMethodL( aMessage );
+            }
+            break;
+        default:
+            {
+            result = KErrNotSupported;
+            }
+            break;
+        }
+
+    aMessage.Complete( result );
+
+    OstTraceFunctionExit0( CCMMSESSION_SERVICEL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Finds a connection method instance that belongs to this session and matches
+// the provided ID. Return NULL if no match is found.
+// -----------------------------------------------------------------------------
+//
+CCmmConnMethodInstance* CCmmSession::FindConnMethodInstanceById(
+        const TUint32& aConnMethodId )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_FINDCONNMETHODINSTANCEBYID_ENTRY );
+
+    CCmmConnMethodInstance* wantedConnMethodInstance( NULL );
+
+    for ( TInt i = 0; i < iConnMethodObjects->Count(); i++ )
+        {
+        CCmmConnMethodInstance* connMethodInstance =
+                ( CCmmConnMethodInstance* )( ( *iConnMethodObjects )[i] );
+        if ( connMethodInstance && connMethodInstance->GetId() == aConnMethodId )
+            {
+            wantedConnMethodInstance = connMethodInstance;
+            break;
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_FINDCONNMETHODINSTANCEBYID_EXIT );
+    return wantedConnMethodInstance;
+    }
+
+// -----------------------------------------------------------------------------
+// Finds a destination instance that belongs to this session and matches
+// the provided handle.
+// -----------------------------------------------------------------------------
+//
+CCmmDestinationInstance* CCmmSession::FindDestinationInstanceByHandleL(
+        const TInt& aDestinationHandle )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_FINDDESTINATIONINSTANCEBYHANDLEL_ENTRY );
+
+    return (CCmmDestinationInstance*)iDestinationObjects->AtL( aDestinationHandle );
+    }
+
+// -----------------------------------------------------------------------------
+// Finds a destination instance that belongs to this session and matches
+// the provided ID. Return NULL if no match is found.
+// -----------------------------------------------------------------------------
+//
+CCmmDestinationInstance* CCmmSession::FindDestinationInstanceById(
+        const TUint32& aDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_FINDDESTINATIONINSTANCEBYID_ENTRY );
+
+    CCmmDestinationInstance* wantedDestinationInstance( NULL );
+
+    for ( TInt i = 0; i < iDestinationObjects->Count(); i++ )
+        {
+        CCmmDestinationInstance* destinationInstance =
+                ( CCmmDestinationInstance* )( ( *iDestinationObjects )[i] );
+        if ( destinationInstance && destinationInstance->GetId() == aDestinationId )
+            {
+            wantedDestinationInstance = destinationInstance;
+            break;
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_FINDDESTINATIONINSTANCEBYID_EXIT );
+    return wantedDestinationInstance;
+    }
+
+// -----------------------------------------------------------------------------
+// Check from all open destination handles in this session if the given
+// connection method is inside any of them. The given destination is skipped.
+// -----------------------------------------------------------------------------
+//
+TBool CCmmSession::ConnMethodInOtherDestination(
+        const TUint32& aConnMethodId,
+        const TUint32& aDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_CONNMETHODINOTHERDESTINATION_ENTRY );
+
+    for ( TInt i = 0; i < iDestinationObjects->Count(); i++ )
+        {
+        CCmmDestinationInstance* destinationInstance =
+                ( CCmmDestinationInstance* )( ( *iDestinationObjects )[i] );
+        if ( destinationInstance && destinationInstance->GetId() != aDestinationId )
+            {
+            for ( TInt j = 0; j < destinationInstance->iConnMethodItemArray.Count(); j++ )
+                {
+                if ( destinationInstance->iConnMethodItemArray[i].iId == aConnMethodId )
+                    {
+                    OstTraceFunctionExit0( CCMMSESSION_CONNMETHODINOTHERDESTINATION_EXIT );
+                    return ETrue;
+                    }
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( DUP1_CCMMSESSION_CONNMETHODINOTHERDESTINATION_EXIT );
+    return EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// Check for restrictions for adding an embedded destination from destination
+// instances of all clients.
+// - aDestinationId is the ID of the destination where a destination is beeing
+//   embedded.
+// - aEmbeddedDestinationId is the ID of the destination that is beeing
+//   embedded.
+// -----------------------------------------------------------------------------
+//
+TBool CCmmSession::EmbeddedDestinationConflictsFromAllSessions(
+        const TUint32& aDestinationId,
+        const TUint32& aEmbeddedDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_EMBEDDEDDESTINATIONCONFLICTSFROMALLSESSIONS_ENTRY );
+
+    return iServer.EmbeddedDestinationConflictsFromAllSessions( aDestinationId, aEmbeddedDestinationId );
+    }
+
+// -----------------------------------------------------------------------------
+// Check for restrictions for adding an embedded destination from destination
+// instances of this session.
+// - aDestinationId is the ID of the destination where a destination is beeing
+//   embedded.
+// - aEmbeddedDestinationId is the ID of the destination that is beeing
+//   embedded.
+//
+// - Check that any destination instance does not contain aDestinationId as
+//   embedded destination.
+// - Check that any destination instance for aEmbeddedDestinationId does not
+//   contain an embedded destination.
+// -----------------------------------------------------------------------------
+//
+TBool CCmmSession::EmbeddedDestinationConflicts(
+        const TUint32& aDestinationId,
+        const TUint32& aEmbeddedDestinationId )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_EMBEDDEDDESTINATIONCONFLICTS_ENTRY );
+
+    TBool result( EFalse );
+
+    for ( TInt i = 0; i < iDestinationObjects->Count(); i++ )
+        {
+        CCmmDestinationInstance* destinationInstance =
+                ( CCmmDestinationInstance* )( ( *iDestinationObjects )[i] );
+        if ( destinationInstance )
+            {
+            if ( destinationInstance->HasEmbeddedWithId( aDestinationId ) ||
+                    ( destinationInstance->GetId() == aEmbeddedDestinationId &&
+                            destinationInstance->HasEmbedded() ) )
+                {
+                result = ETrue;
+                break;
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_EMBEDDEDDESTINATIONCONFLICTS_EXIT );
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// After update to database, refresh temporary ID to real ID if necessary and
+// refresh status information for any related handles for all client sessions.
+// ---------------------------------------------------------------------------
+//
+void CCmmSession::RefreshHandlesForAllSessions( const TCmmIdStruct& aIdStruct )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_REFRESHHANDLESFORALLSESSIONS_ENTRY );
+
+    // If the ID structure contains a temporary ID, we need to update the
+    // temporary ID to the real ID for all relevant handles in this session and
+    // cache.
+    if ( aIdStruct.iTemporaryId )
+        {
+        // Real ID tells if this is a destination or connection method.
+
+        if ( aIdStruct.iRealId < KCmmConnMethodIdIntervalMax )
+            {
+            // Connection method. Need to iterate through all destination and
+            // connection method handles.
+
+            // Update the ID of the connection method on session side.
+            for ( TInt i = 0; i < iConnMethodObjects->Count(); i++ )
+                {
+                CCmmConnMethodInstance* connMethodInstance =
+                        ( CCmmConnMethodInstance* )( ( *iConnMethodObjects )[i] );
+                if ( connMethodInstance &&
+                        connMethodInstance->GetId() == aIdStruct.iTemporaryId )
+                    {
+                    connMethodInstance->SetId( aIdStruct.iRealId ); //TODO, need to set ID inside records?
+                    break; // Can only be 1 match.
+                    }
+                }
+            // Update the ID of the connection method in cache side also.
+            iCache.RefreshConnMethodId( aIdStruct );
+
+            // Iterate all destinations. If the connection method is in them,
+            // update the ID to real ID.
+            for ( TInt i = 0; i < iDestinationObjects->Count(); i++ )
+                {
+                CCmmDestinationInstance* destinationInstance =
+                        ( CCmmDestinationInstance* )( ( *iDestinationObjects )[i] );
+                if ( destinationInstance )
+                    {
+                    destinationInstance->RefreshConnMethodId( aIdStruct );
+                    }
+                }
+            }
+        else
+            {
+            // Destination. Need to iterate through all destination handles.
+            for ( TInt i = 0; i < iDestinationObjects->Count(); i++ )
+                {
+                CCmmDestinationInstance* destinationInstance =
+                        ( CCmmDestinationInstance* )( ( *iDestinationObjects )[i] );
+                if ( destinationInstance &&
+                        destinationInstance->GetId() == aIdStruct.iTemporaryId )
+                    {
+                    destinationInstance->SetId( aIdStruct.iRealId );
+                    break; // Can only be 1 match.
+                    }
+                }
+            // Update the ID of the destination in cache side also.
+            iCache.RefreshDestinationId( aIdStruct );
+            }
+        }
+
+    // Update status information for all related destination/connection method
+    // handles in all client sessions.
+    iServer.RefreshHandlesForAllSessions( aIdStruct.iRealId );
+
+    OstTraceFunctionExit0( CCMMSESSION_REFRESHHANDLESFORALLSESSIONS_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Removes a connection method from any open destination handle in this
+// session.
+// ---------------------------------------------------------------------------
+//
+void CCmmSession::RemoveConnMethodFromDestinationHandles(
+        const TUint32& aConnMethodId )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_REMOVECONNMETHODFROMDESTINATIONHANDLES_ENTRY );
+
+    for ( TInt i = 0; i < iDestinationObjects->Count(); i++ )
+        {
+        CCmmDestinationInstance* destinationInstance =
+                ( CCmmDestinationInstance* )( ( *iDestinationObjects )[i] );
+        if ( destinationInstance )
+            {
+            for ( TInt j = 0; j < destinationInstance->iConnMethodItemArray.Count(); j++ )
+                {
+                if ( destinationInstance->iConnMethodItemArray[j].iId == aConnMethodId )
+                    {
+                    destinationInstance->iConnMethodItemArray.Remove( j );
+                    break;
+                    }
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_REMOVECONNMETHODFROMDESTINATIONHANDLES_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Notify this session destination/connection method handles about an
+// updated/deleted destination/connection method.
+// ---------------------------------------------------------------------------
+//
+void CCmmSession::RefreshHandles( const TUint32& aId ) const
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_REFRESHHANDLES_ENTRY );
+
+    // Destination or connection method.
+    if ( aId < KCmmConnMethodIdIntervalMax )
+        {
+        // Connection method.
+        for ( TInt i = 0; i < iConnMethodObjects->Count(); i++ )
+            {
+            CCmmConnMethodInstance* connMethodInstance =
+                    ( CCmmConnMethodInstance* )( ( *iConnMethodObjects )[i] );
+            if ( connMethodInstance && connMethodInstance->GetId() == aId )
+                {
+                connMethodInstance->SetStatus( ECmmConnMethodStatusChanged );
+                }
+            }
+        }
+    else
+        {
+        // Destination.
+        for ( TInt i = 0; i < iDestinationObjects->Count(); i++ )
+            {
+            CCmmDestinationInstance* destinationInstance =
+                    ( CCmmDestinationInstance* )( ( *iDestinationObjects )[i] );
+            if ( destinationInstance && destinationInstance->GetId() == aId )
+                {
+                destinationInstance->SetStatus( ECmmDestinationStatusChanged ); //TODO, any record status need be set?
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_REFRESHHANDLES_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetBearerInfoIntL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetBearerInfoIntL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETBEARERINFOINTL_ENTRY );
+
+    TUint32 bearerType( aMessage.Int0() );
+    TUint32 attribute( aMessage.Int1() );
+
+    TUint32 result = iCache.GetBearerInfoIntL( bearerType, attribute );
+    TPckg<TUint32> resultPckg( result );
+    aMessage.WriteL( 2, resultPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_GETBEARERINFOINTL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetBearerInfoBoolL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetBearerInfoBoolL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETBEARERINFOBOOLL_ENTRY );
+
+    TUint32 bearerType( aMessage.Int0() );
+    TUint32 attribute( aMessage.Int1() );
+
+    TBool result = iCache.GetBearerInfoBoolL( bearerType, attribute );
+    TPckg<TBool> resultPckg( result );
+    aMessage.WriteL( 2, resultPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_GETBEARERINFOBOOLL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetBearerInfoStringL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetBearerInfoStringL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETBEARERINFOSTRINGL_ENTRY );
+
+    TUint32 bearerType( aMessage.Int0() );
+    TUint32 attribute( aMessage.Int1() );
+
+    HBufC* result = iCache.GetBearerInfoStringL( bearerType, attribute );
+    if ( !result )
+        {
+        OstTraceFunctionExit0( CCMMSESSION_GETBEARERINFOSTRINGL_EXIT );
+        return;
+        }
+    CleanupStack::PushL( result );
+
+    TInt bufferLen = aMessage.GetDesMaxLength( 2 );
+    if ( result && result->Length() > bufferLen )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TPtrC resultPtr = result->Des();
+    aMessage.WriteL( 2, resultPtr );
+    CleanupStack::PopAndDestroy( result );
+
+    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETBEARERINFOSTRINGL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetBearerInfoString8L
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetBearerInfoString8L( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETBEARERINFOSTRING8L_ENTRY );
+
+    TUint32 bearerType( aMessage.Int0() );
+    TUint32 attribute( aMessage.Int1() );
+
+    HBufC8* result = iCache.GetBearerInfoString8L( bearerType, attribute );
+    if ( !result )
+        {
+        OstTraceFunctionExit0( CCMMSESSION_GETBEARERINFOSTRING8L_EXIT );
+        return;
+        }
+    CleanupStack::PushL( result );
+
+    TInt bufferLen = aMessage.GetDesMaxLength( 2 );
+    if ( result && result->Length() > bufferLen )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TPtrC8 resultPtr = result->Des();
+    aMessage.WriteL( 2, resultPtr );
+    CleanupStack::PopAndDestroy( result );
+
+    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETBEARERINFOSTRING8L_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetConnMethodInfoIntL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetConnMethodInfoIntL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODINFOINTL_ENTRY );
+
+    TUint32 cmId( aMessage.Int0() );
+    TUint32 attribute( aMessage.Int1() );
+
+    TUint32 result = iCache.GetConnectionMethodInfoIntL( cmId, attribute );
+    TPckg<TUint32> resultPckg( result );
+    aMessage.WriteL( 2, resultPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_GETCONNMETHODINFOINTL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetConnMethodInfoBoolL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetConnMethodInfoBoolL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODINFOBOOLL_ENTRY );
+
+    TUint32 cmId( aMessage.Int0() );
+    TUint32 attribute( aMessage.Int1() );
+
+    TBool result = iCache.GetConnectionMethodInfoBoolL( cmId, attribute );
+    TPckg<TBool> resultPckg( result );
+    aMessage.WriteL( 2, resultPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_GETCONNMETHODINFOBOOLL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetConnMethodInfoStringL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetConnMethodInfoStringL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODINFOSTRINGL_ENTRY );
+
+    TUint32 cmId( aMessage.Int0() );
+    TUint32 attribute( aMessage.Int1() );
+
+    HBufC* result = iCache.GetConnectionMethodInfoStringL( cmId, attribute );
+    if ( !result )
+        {
+        OstTraceFunctionExit0( CCMMSESSION_GETCONNMETHODINFOSTRINGL_EXIT );
+        return;
+        }
+    CleanupStack::PushL( result );
+
+    TInt bufferLen = aMessage.GetDesMaxLength( 2 );
+    if ( result && result->Length() > bufferLen )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TPtrC resultPtr = result->Des();
+    aMessage.WriteL( 2, resultPtr );
+    CleanupStack::PopAndDestroy( result );
+
+    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETCONNMETHODINFOSTRINGL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetConnMethodInfoString8L
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetConnMethodInfoString8L( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODINFOSTRING8L_ENTRY );
+
+    TUint32 cmId( aMessage.Int0() );
+    TUint32 attribute( aMessage.Int1() );
+
+    HBufC8* result = iCache.GetConnectionMethodInfoString8L( cmId, attribute );
+    if ( !result )
+        {
+        OstTraceFunctionExit0( CCMMSESSION_GETCONNMETHODINFOSTRING8L_EXIT );
+        return;
+        }
+    CleanupStack::PushL( result );
+
+    TInt bufferLen = aMessage.GetDesMaxLength( 2 );
+    if ( result && result->Length() > bufferLen )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TPtrC8 resultPtr = result->Des();
+    aMessage.WriteL( 2, resultPtr );
+    CleanupStack::PopAndDestroy( result );
+
+    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETCONNMETHODINFOSTRING8L_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetConnMethodArrayL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetConnMethodArrayL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODARRAYL_ENTRY );
+
+    // Read attribute flags from client request.
+    TPckgBuf<TCmmIpcStructGetConnMethods> parametersPckg;
+    aMessage.ReadL( 0, parametersPckg );
+    TCmmIpcStructGetConnMethods attributes = parametersPckg();
+
+    // Create connection method ID array.
+    RArray<TUint32> cmArray;
+    CleanupClosePushL( cmArray );
+    iCache.GetAllConnMethodsL( cmArray, attributes.iCheckBearerType );
+
+    // Check if only legacy connection methods are needed.
+    if ( attributes.iLegacyOnly )
+        {
+        // Remove all referenced connection methods.
+        for ( TInt i = cmArray.Count() - 1; i >= 0; i-- )
+            {
+            if ( iCache.DestinationsContainingConnMethod( cmArray[i] ) )
+                {
+                cmArray.Remove( i );
+                }
+            }
+        }
+
+    // EasyWLAN handling.
+    if ( !attributes.iEasyWlan )
+        {
+        // If there is an EasyWLAN IAP, the ID needs to be removed from the array.
+        TUint32 easyWlanId = iCache.EasyWlanIdL();
+        if ( easyWlanId != 0 )
+            {
+            TInt index = cmArray.Find( easyWlanId );
+            if ( index != KErrNotFound )
+                {
+                cmArray.Remove( index );
+                }
+            }
+        }
+
+    // Check connection method ID count.
+    TInt connMethodCount = cmArray.Count();
+    if ( connMethodCount > aMessage.GetDesMaxLengthL( 2 ) )
+        {
+        // Client buffer is too small to contain all the informarmation. Return
+        // without any answer and the client side will ask again using a bigger
+        // buffer.
+        CleanupStack::PopAndDestroy( &cmArray );
+        return;
+        }
+
+    TPckg<TInt> countPckg( connMethodCount );
+    aMessage.WriteL( 1, countPckg );
+
+    if ( connMethodCount == 0 )
+        {
+        CleanupStack::PopAndDestroy( &cmArray );
+        return;
+        }
+
+    // Write connection method IDs to client.
+    HBufC8* idBuf = HBufC8::NewLC( connMethodCount );
+    TPtr8 bufPtr( idBuf->Des() );
+    for ( TInt i = 0; i < connMethodCount; i++ )
+        {
+        bufPtr.Append( (TUint8)( cmArray[i] & 0x000000FF ) );
+        }
+    aMessage.WriteL( 2, bufPtr );
+
+    CleanupStack::PopAndDestroy( idBuf );
+    CleanupStack::PopAndDestroy( &cmArray );
+
+    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETCONNMETHODARRAYL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetAllDestinationsL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetAllDestinationsL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETALLDESTINATIONSL_ENTRY );
+
+    TInt destCount = iCache.GetDestinationCount();
+    if ( destCount > aMessage.GetDesMaxLengthL( 1 ) )
+        {
+        // Client buffer is too small to contain all the informarmation. Return
+        // without any answer and the client side will ask again using a bigger
+        // buffer.
+        return;
+        }
+
+    // Write the destination count to client.
+    TPckg<TInt> countPckg( destCount );
+    aMessage.WriteL( 0, countPckg );
+
+    if ( destCount == 0 )
+        {
+        return;
+        }
+
+    // Get the destination IDs from database cache.
+    RArray<TUint32> destArray;
+    CleanupClosePushL( destArray );
+    iCache.GetDestinationsL( destArray );
+
+    HBufC16* idBuf = HBufC16::NewLC( destCount );
+    TPtr16 bufPtr( idBuf->Des() );
+    for ( TInt i = 0; i < destCount; i++ )
+        {
+        bufPtr.Append( destArray[i] );
+        }
+
+    // Write the destination IDs to client.
+    aMessage.WriteL( 1, bufPtr );
+
+    CleanupStack::PopAndDestroy( idBuf );
+    CleanupStack::PopAndDestroy( &destArray );
+
+    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETALLDESTINATIONSL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetEasyWLANIdL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetEasyWLANIdL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETEASYWLANIDL_ENTRY );
+
+    TUint32 id = iCache.EasyWlanIdL();
+    TPckg<TUint32> idPckg( id );
+    aMessage.WriteL( 0, idPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_GETEASYWLANIDL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetSupportedBearersL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetSupportedBearersL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETSUPPORTEDBEARERSL_ENTRY );
+
+    // Get the supported bearer types.
+    RArray<TUint32> bearerArray;
+    CleanupClosePushL( bearerArray );
+    iServer.CmManager()->SupportedBearersL( bearerArray );
+
+    // Write bearer count to client.
+    TInt bearerCount( bearerArray.Count() );
+    TInt neededBufferSize( bearerCount * sizeof( TUint32 ) );
+    TPckg<TInt> countPckg( bearerCount );
+    aMessage.WriteL( 0, countPckg );
+
+    // Check the client buffer size.
+    if ( neededBufferSize > aMessage.GetDesMaxLengthL( 1 ) || bearerCount == 0 )
+        {
+        // Client buffer is too small to contain all the information. Return
+        // with only the bearer count information and the client side will ask
+        // again using a big enough buffer.
+        CleanupStack::PopAndDestroy( &bearerArray );
+        return;
+        }
+
+    // Add the bearer types into a buffer.
+    HBufC8* bearerBuf = HBufC8::NewLC( neededBufferSize );
+    TPtr8 ptr( bearerBuf->Des() );
+    for ( TInt i = 0; i < bearerCount; i++ )
+        {
+        TUint32 a( bearerArray[i] );
+        ptr.Append( (TUint8*)&a, 4 );
+        }
+
+    // Write the bearer types to client.
+    aMessage.WriteL( 1, ptr );
+
+    CleanupStack::PopAndDestroy( bearerBuf );
+    CleanupStack::PopAndDestroy( &bearerArray );
+
+    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETSUPPORTEDBEARERSL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::ReadDefaultConnectionL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::ReadDefaultConnectionL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_READDEFAULTCONNECTIONL_ENTRY );
+
+    // Default connection is now simply the internet destination.
+    TCmDefConnValue defaultConnection;
+    defaultConnection.iType = ECmDefConnDestination;
+    defaultConnection.iId = 0;
+
+    iCache.InternetDestinationIdL( defaultConnection.iId );
+    if ( defaultConnection.iId == 0 )
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    TPckgBuf<TCmDefConnValue> dcPckgBuf( defaultConnection );
+    aMessage.WriteL( 0, dcPckgBuf );
+
+    OstTraceFunctionExit0( CCMMSESSION_READDEFAULTCONNECTIONL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::ReadGenConnSettingsL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::ReadGenConnSettingsL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_READGENCONNSETTINGSL_ENTRY );
+
+    TCmGenConnSettings genConnSettings;
+    iCache.ReadGenConnSettingsL( genConnSettings );
+
+    TPckgBuf<TCmGenConnSettings> genConnSettingsPckgBuf( genConnSettings );
+    aMessage.WriteL( 0, genConnSettingsPckgBuf );
+
+    OstTraceFunctionExit0( CCMMSESSION_READGENCONNSETTINGSL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::WriteGenConnSettingsL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::WriteGenConnSettingsL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_WRITEGENCONNSETTINGSL_ENTRY );
+
+    // Read data from client request.
+    TPckgBuf<TCmGenConnSettings> genConnSettingsPckgBuf;
+    aMessage.ReadL( 0, genConnSettingsPckgBuf );
+    TCmGenConnSettings genConnSettings = genConnSettingsPckgBuf();
+
+    iCache.WriteGenConnSettingsL( genConnSettings );
+
+    OstTraceFunctionExit0( CCMMSESSION_WRITEGENCONNSETTINGSL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetBearerPriorityArrayL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetBearerPriorityArrayL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETBEARERPRIORITYARRAYL_ENTRY );
+
+    const TInt maxLength( aMessage.GetDesMaxLengthL( 0 ) );
+    if ( maxLength < 2 )
+        {
+        // Minimum length of 2 is needed to store count and needed length.
+        User::Leave( KErrArgument );
+        }
+
+    RPointerArray<CCmmBearerPriority> bearerPriorityArray;
+    CmmCleanupResetAndDestroyPushL( bearerPriorityArray );
+
+    iCache.CopyBearerPriorityArrayL( bearerPriorityArray );
+    const TInt bearerCountInArray( bearerPriorityArray.Count() );
+    TInt bearerCount( bearerCountInArray );
+
+    TInt maxBufLen( 2 );
+    // Check the length needed for serializing.
+    for ( TInt i = 0; i < bearerCountInArray; i++ )
+        {
+        // Skip if service type is not valid.
+        if ( bearerPriorityArray[i]->ServiceType() && bearerPriorityArray[i]->ServiceType()->Length() > 0 )
+            {
+            maxBufLen += KCmmBearerPriorityHeaderLength; // Priorities and servicetype length.
+            maxBufLen += bearerPriorityArray[i]->ServiceType()->Length();
+            }
+        else
+            {
+            bearerCount--;
+            }
+        }
+
+    // If given buffer is shorter than needed, just write count and needed length.
+    if ( maxBufLen > maxLength )
+        {
+        HBufC* buffer = HBufC::NewLC( KCmmDefaultBearerPriorityArraySize );
+        TPtr bufferPtr( buffer->Des() );
+
+        bufferPtr.Append( bearerCount );
+        bufferPtr.Append( maxBufLen );
+        aMessage.WriteL( 0, bufferPtr );
+
+        CleanupStack::PopAndDestroy( buffer );
+        CleanupStack::PopAndDestroy( &bearerPriorityArray );
+        OstTraceFunctionExit0( CCMMSESSION_GETBEARERPRIORITYARRAYL_EXIT );
+        return;
+        }
+
+    // Add needed buffer + space for bearerCount and maxlength.
+    HBufC* buffer = HBufC::NewLC( maxBufLen );
+    TPtr bufferPtr( buffer->Des() );
+
+    // Write count and bufmaxLen.
+    bufferPtr.Append( bearerCount );
+    bufferPtr.Append( maxBufLen );
+
+    for ( TInt i = 0; i < bearerCountInArray; i++ )
+        {
+        // Skip if service type is not valid.
+        if ( bearerPriorityArray[i]->ServiceType() && bearerPriorityArray[i]->ServiceType()->Length() > 0 )
+            {
+            TUint32 priority = bearerPriorityArray[i]->Priority();
+            TUint32 uiPriority = bearerPriorityArray[i]->UiPriority();
+            const HBufC* serviceType = bearerPriorityArray[i]->ServiceType();
+
+            bufferPtr.Append( priority >> KBitsInTwoBytes );
+            bufferPtr.Append( priority & 0x0000FFFF );
+            bufferPtr.Append( uiPriority >> KBitsInTwoBytes );
+            bufferPtr.Append( uiPriority & 0x0000FFFF );
+
+            const TInt stringLength = serviceType->Length();
+            bufferPtr.Append( stringLength );
+            bufferPtr.Append( *serviceType );
+            }
+        }
+    aMessage.WriteL( 0, bufferPtr );
+
+    CleanupStack::PopAndDestroy( buffer );
+    CleanupStack::PopAndDestroy( &bearerPriorityArray );
+
+    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETBEARERPRIORITYARRAYL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::UpdateBearerPriorityArrayL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::UpdateBearerPriorityArrayL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_UPDATEBEARERPRIORITYARRAYL_ENTRY );
+
+    HBufC* bearerPriorityBuf = HBufC::NewLC( aMessage.GetDesMaxLengthL( 0 ) );
+    TPtr bearerPriorityBufPtr( bearerPriorityBuf->Des() );
+
+    aMessage.ReadL( 0, bearerPriorityBufPtr );
+
+    const TInt bearerCount = bearerPriorityBufPtr[0];
+    if ( ( bearerCount < 1 ) || ( aMessage.GetDesMaxLengthL( 0 ) < 2 ) )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    RPointerArray<CCmmBearerPriority> bearerPriorityArray;
+    CmmCleanupResetAndDestroyPushL( bearerPriorityArray );
+
+    TInt position( 2 ); // Start of first priority item.
+    for ( TInt i = 0; i < bearerCount; i++ )
+        {
+        TUint32 priority;
+        TUint32 uiPriority;
+        priority = bearerPriorityBufPtr[position] << KBitsInTwoBytes;
+        position++;
+        priority += bearerPriorityBufPtr[position];
+        position++;
+        uiPriority = bearerPriorityBufPtr[position] << KBitsInTwoBytes;
+        position++;
+        uiPriority += bearerPriorityBufPtr[position];
+        position++;
+        const TInt stringLength = bearerPriorityBufPtr[position];
+        position++;
+        if ( stringLength <= 0 )
+            {
+            User::Leave( KErrArgument );
+            }
+        else
+            {
+            HBufC* serviceName = HBufC::NewLC( stringLength );
+            serviceName->Des().Append( &( bearerPriorityBufPtr[position] ), stringLength );
+            position += stringLength;
+
+            TPtrC tempServiceType( serviceName->Des() );
+            CCmmBearerPriority* item = CCmmBearerPriority::NewLC( tempServiceType, priority, uiPriority );
+            bearerPriorityArray.AppendL( item );
+            CleanupStack::Pop( item );
+
+            CleanupStack::PopAndDestroy( serviceName );
+            }
+        }
+
+    // Update bearer priority array
+    iCache.UpdateBearerPriorityArrayL( bearerPriorityArray );
+
+    CleanupStack::PopAndDestroy( &bearerPriorityArray );
+    CleanupStack::PopAndDestroy( bearerPriorityBuf );
+
+    OstTraceFunctionExit0( CCMMSESSION_UPDATEBEARERPRIORITYARRAYL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Copies a connection method into a destination. If the connection method is
+// in any other destination, it becomes shared. Calls update on the target
+// destination.
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::CopyConnMethodL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_COPYCONNMETHODL_ENTRY );
+
+    CCmmDestinationInstance* destination = ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int0() );
+    CCmmConnMethodInstance* connMethod = ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int1() );
+
+    // Can't add an embedded destination this way.
+    if ( connMethod->IsEmbeddedDestination() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    //TODO, capability check, what to do if anything is protected.
+
+    // Add connection method into destination.
+    TInt index = destination->AddConnMethodL( *connMethod );
+
+    // Update destination into database.
+    destination->UpdateL();
+
+    // Write the connection method index (priority) inside the destination to client.
+    TPckg<TInt> indexPckg( index );
+    aMessage.WriteL( 2, indexPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_COPYCONNMETHODL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Moves a connection method from one destination to another. Calls update on
+// both the source and target destinations (which also updates the connection
+// method).
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::MoveConnMethodL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_MOVECONNMETHODL_ENTRY );
+
+    // Read data from client request.
+    TPckgBuf<TCmmIpcStructMoveConnMethod> attributesPckg;
+    aMessage.ReadL( 0, attributesPckg );
+    TCmmIpcStructMoveConnMethod attributes = attributesPckg();
+
+    CCmmDestinationInstance* sourceDestination =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( attributes.iSourceDestHandle );
+    CCmmDestinationInstance* targetDestination =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( attributes.iTargetDestHandle );
+    CCmmConnMethodInstance* connMethod =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( attributes.iConnMethodHandle );
+    TUint32 connMethodId( connMethod->GetId() );
+
+    // Can't add an embedded destination this way.
+    if ( connMethod->IsEmbeddedDestination() )
+        {
+        User::Leave( KErrArgument );
+        }
+    // Check if the connection method is in the source destination.
+    if ( !sourceDestination->ValidConnMethodIdInDestinationIncludeEmbedded( connMethodId ) )
+        {
+        User::Leave( KErrNotFound );
+        }
+    // Check if the connection method is already in the target destination.
+    if ( targetDestination->ValidConnMethodIdInDestinationIncludeEmbedded( connMethodId ) )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+    // Check if the connection method can be removed from the source destination.
+    if ( sourceDestination->ConnMethodInDestinationButLocked( connMethodId ) )
+        {
+        User::Leave( KErrLocked );
+        }
+    // Check that the connection method is not in use by an active connection.
+    if ( iCache.CheckIfCmConnected( connMethodId ) )
+        {
+        User::Leave( KErrInUse );
+        }
+
+    //TODO, capability checks, what to do if anything is protected.
+
+    // Add connection method into target destination and update it.
+    attributesPckg().iIndex = targetDestination->AddConnMethodL( *connMethod );
+    targetDestination->UpdateL();
+
+    // Remove connection method from source destination and update it.
+    sourceDestination->RemoveConnMethodFromDestinationL( *connMethod, EFalse ); // EFalse to not check connected state again.
+    sourceDestination->UpdateL();
+
+    // Write the index (priority) back to client.
+    aMessage.WriteL( 0, attributesPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_MOVECONNMETHODL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Remove a connection method froma destination. Does not call update on the
+// affected destination.
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::RemoveConnMethodL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_REMOVECONNMETHODL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int0() );
+    CCmmConnMethodInstance* connMethodInstance =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int1() );
+
+    //TODO, capability checks
+
+    destinationInstance->RemoveConnMethodFromDestinationL( *connMethodInstance );
+    destinationInstance->UpdateL();
+
+    OstTraceFunctionExit0( CCMMSESSION_REMOVECONNMETHODL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Removes a connection method from every destination and make it uncategorized.
+// Updates any destination that contains the connection method.
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::RemoveAllReferencesL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_REMOVEALLREFERENCESL_ENTRY );
+
+    CCmmConnMethodInstance* connMethodInstance =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int0() );
+
+    iCache.CheckIfConnMethodReferencesCanBeRemovedL( *connMethodInstance );
+    iCache.RemoveAllReferencesToConnMethodL( *connMethodInstance );
+
+    OstTraceFunctionExit0( CCMMSESSION_REMOVEALLREFERENCESL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::ServiceDestinationL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::ServiceDestinationL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_SERVICEDESTINATIONL_ENTRY );
+
+    switch ( aMessage.Function() )
+        {
+        case EDestGetDestination:
+            {
+            GetDestinationL( aMessage );
+            }
+            break;
+        case EDestRefresh:
+            {
+            RefreshDestinationL( aMessage );
+            }
+            break;
+        case EDestCreateDestinationWithName:
+            {
+            CreateDestinationWithNameL( aMessage );
+            }
+            break;
+        case EDestCreateDestinationWithNameAndId:
+            {
+            CreateDestinationWithNameAndIdL( aMessage );
+            }
+            break;
+        case EDestCloseDestination:
+            {
+            CloseDestination( aMessage );
+            }
+            break;
+        case EDestGetConnMethodCount:
+            {
+            GetConnectionMehodCountL( aMessage );
+            }
+            break;
+        case EDestGetConnMethodPriority:
+            {
+            GetConnMethodPriorityL( aMessage );
+            }
+            break;
+        case EDestGetName:
+            {
+            GetDestinationNameL( aMessage );
+            }
+            break;
+        case EDestGetId:
+            {
+            GetDestinationIdL( aMessage );
+            }
+            break;
+        case EDestGetElementId:
+            {
+            GetDestinationElementIdL( aMessage );
+            }
+            break;
+        case EDestMetadata:
+            {
+            GetDestinationMetadataL( aMessage );
+            }
+            break;
+        case EDestGetProtectionLevel:
+            {
+            GetDestinationProtectionLevelL( aMessage );
+            }
+            break;
+        case EDestIsConnected:
+            {
+            IsDestinationConnectedL( aMessage );
+            }
+            break;
+        case EDestIsHidden:
+            {
+            IsDestinationHiddenL( aMessage );
+            }
+            break;
+        case EDestIsEqual:
+            {
+            DestinationIsEqualL( aMessage );
+            }
+            break;
+        case EDestAddConnMethod:
+            {
+            DestAddConnMethodL( aMessage );
+            }
+            break;
+        case EDestAddEmbeddedDestination:
+            {
+            DestAddEmbeddedDestinationL( aMessage );
+            }
+            break;
+        case EDestDeleteConnMethod:
+            {
+            DestDeleteConnMethodL( aMessage );
+            }
+            break;
+        case EDestRemoveConnMethod:
+            {
+            DestRemoveConnMethodL( aMessage );
+            }
+            break;
+        case EDestModifyPriority:
+            {
+            ModifyConnMethodPriorityL( aMessage );
+            }
+            break;
+        case EDestSetName:
+            {
+            SetDestinationNameL( aMessage );
+            }
+            break;
+        case EDestSetMetadata:
+            {
+            SetDestinationMetadataL( aMessage );
+            }
+            break;
+        case EDestSetProtection:
+            {
+            SetDestinationProtectionL( aMessage );
+            }
+            break;
+        case EDestSetHidden:
+            {
+            SetDestinationHiddenL( aMessage );
+            }
+            break;
+        case EDestUpdate:
+            {
+            UpdateDestinationL( aMessage );
+            }
+            break;
+        case EDestDelete:
+            {
+            DeleteDestinationL( aMessage );
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+            break;
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_SERVICEDESTINATIONL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetDestinationL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetDestinationL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETDESTINATIONL_ENTRY );
+
+    // Structure:
+    // - Check arguments.
+    // - Create session instance.
+    // - Ask cache to open/create target and put data to session instance.
+    // - Create subsession and complete message.
+
+    // API side checks that ID is between 0x1000 - 0x1100, and converts if necessary.
+    TUint32 destinationId( aMessage.Int0() );
+
+    // Check that the ID is in valid range.
+    if ( destinationId <= KCmDefaultDestinationAPTagId ||
+            destinationId >= KCmMaxDestinationAPTagId )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    // Check if a destination with given ID exists.
+    if ( !iCache.DestinationExistsWithId( destinationId ) )
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    // If this session already has a destination with matching ID open, provide
+    // the client with a reference to the already opened handle.
+    CCmmDestinationInstance* destinationInstance = FindDestinationInstanceById( destinationId );
+    if ( destinationInstance )
+        {
+        TPckg<TInt> existingHandlePckg( destinationInstance->GetHandle() );
+        aMessage.WriteL( 1, existingHandlePckg );
+        User::Leave( KErrAlreadyExists );
+        }
+    destinationInstance = NULL;
+    TPckg<TInt> existingHandlePckg( 0 );
+    aMessage.WriteL( 1, existingHandlePckg );
+
+    destinationInstance = CCmmDestinationInstance::NewLC( this, &iCache );
+
+    // Cache will open a handle to the destination if not already open, and
+    // copy relevant data into this destination instance.
+    iCache.OpenDestinationL( *destinationInstance, destinationId );
+
+    iDestinationContainer->AddL( ( CObject* ) destinationInstance );
+    TInt handle = iDestinationObjects->AddL( ( CObject* ) destinationInstance );
+    destinationInstance->SetHandle( handle );
+    CleanupStack::Pop( destinationInstance );
+
+    TPckg<TInt> handlePckg( handle );
+    TInt err = aMessage.Write( 3, handlePckg );
+    if ( err )
+        {
+        // Removes from object index and destroys the object.
+        iDestinationObjects->Remove( handle );
+        User::Leave( err );
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_GETDESTINATIONL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::RefreshDestinationL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::RefreshDestinationL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_REFRESHDESTINATIONL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+
+    iCache.RefreshDestinationL( *destinationInstance );
+
+    OstTraceFunctionExit0( CCMMSESSION_REFRESHDESTINATIONL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::CreateDestinationWithNameL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::CreateDestinationWithNameL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_CREATEDESTINATIONWITHNAMEL_ENTRY );
+
+    // Structure:
+    // - Check arguments.
+    // - Create session instance.
+    // - Ask cache to open/create target and put data to session instance.
+    // - Create subsession and complete message.
+
+    // Load and check name.
+    TInt destNameLength = aMessage.GetDesLength( 0 );
+    if ( destNameLength <= 0 )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    HBufC* destinationName = HBufC::NewLC( destNameLength );
+    TPtr ptrDestinationName = destinationName->Des();
+    aMessage.ReadL( 0, ptrDestinationName );
+
+    // Check if a destination with given name exists (or is already created but not yet saved).
+    if ( iCache.DestinationExistsWithNameL( *destinationName, 0 ) ||
+            iCache.NotSavedDestinationOpenWithNameL( *destinationName, 0 ) )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    CCmmDestinationInstance* destinationInstance = CCmmDestinationInstance::NewLC( this, &iCache );
+
+    // Create a temporary ID to be used until a real one is obtained from the database.
+    TUint32 temporaryId = iCache.NextFreeTemporaryId();
+
+    // Cache will create the destination data structure and copy the relevant
+    // data to the session instance.
+    iCache.CreateDestinationL( *destinationInstance, *destinationName, temporaryId );
+
+    iDestinationContainer->AddL( ( CObject* ) destinationInstance );
+    TInt handle = iDestinationObjects->AddL( ( CObject* ) destinationInstance );
+    destinationInstance->SetHandle( handle );
+    CleanupStack::Pop( destinationInstance );
+    CleanupStack::PopAndDestroy( destinationName );
+
+    TPckg<TInt> handlePckg( handle );
+    TInt err = aMessage.Write( 3, handlePckg );
+    if ( err )
+        {
+        // Removes from object index and destroys the object.
+        iDestinationObjects->Remove( handle );
+        User::Leave( err );
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_CREATEDESTINATIONWITHNAMEL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::CreateDestinationWithNameAndIdL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::CreateDestinationWithNameAndIdL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_CREATEDESTINATIONWITHNAMEANDIDL_ENTRY );
+
+    // Structure:
+    // - Check arguments.
+    // - Create session instance.
+    // - Ask cache to open/create target and put data to session instance.
+    // - Create subsession and complete message.
+
+    // API side checks that ID is between 0x1000 - 0x1100, and converts if necessary.
+    TUint32 destinationId( (TUint32)aMessage.Int1() );
+
+    // Check that the ID is in valid range.
+    if ( destinationId <= KCmDefaultDestinationAPTagId ||
+            destinationId >= KCmMaxDestinationAPTagId )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    // Check if a destination with given ID exists (or is already created but not saved).
+    if ( iCache.DestinationExistsWithId( destinationId ) ||
+            iCache.DestinationOpenWithId( destinationId ) )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    // Load and check name.
+    TInt destNameLength = aMessage.GetDesLength( 0 );
+    if ( destNameLength <= 0 )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    HBufC* destinationName = HBufC::NewLC( destNameLength );
+
+    TPtr ptrDestinationName = destinationName->Des();
+    aMessage.ReadL( 0, ptrDestinationName );
+
+    // Check if a destination with given name exists (or is already created but not yet saved).
+    if ( iCache.DestinationExistsWithNameL( *destinationName, 0 ) ||
+            iCache.NotSavedDestinationOpenWithNameL( *destinationName, 0 ) )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    CCmmDestinationInstance* destinationInstance = CCmmDestinationInstance::NewLC( this, &iCache );
+
+    // Cache will create the destination data structure and copy the relevant
+    // data to the session instance.
+    iCache.CreateDestinationL( *destinationInstance, *destinationName, destinationId );
+
+    iDestinationContainer->AddL( ( CObject* ) destinationInstance );
+    TInt handle = iDestinationObjects->AddL( ( CObject* ) destinationInstance );
+    destinationInstance->SetHandle( handle );
+    CleanupStack::Pop( destinationInstance );
+    CleanupStack::PopAndDestroy( destinationName );
+
+    TPckg<TInt> handlePckg( handle );
+    TInt err = aMessage.Write( 3, handlePckg );
+    if ( err )
+        {
+        // Removes from object index and destroys the object.
+        iDestinationObjects->Remove( handle );
+        User::Leave( err );
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_CREATEDESTINATIONWITHNAMEANDIDL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::CloseDestinationL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::CloseDestination( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_CLOSEDESTINATION_ENTRY );
+
+    // Check first that the destination instance exists.
+    CObject* destinationObject = iDestinationObjects->At( aMessage.Int3() );
+    if ( destinationObject )
+        {
+        // Destination instance destructor will notify cache.
+        iDestinationObjects->Remove( aMessage.Int3() );
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_CLOSEDESTINATION_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Return the connection method count from the provided destination.
+// Embedded destinations are included.
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetConnectionMehodCountL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETCONNECTIONMEHODCOUNTL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+
+    TInt connMethodCount( destinationInstance->iConnMethodItemArray.Count() ); // Includes embedded destinations.
+
+    TPckg<TInt> countPckg( connMethodCount );
+    aMessage.WriteL( 0, countPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_GETCONNECTIONMEHODCOUNTL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetConnMethodPriorityL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetConnMethodPriorityL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODPRIORITYL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+
+    CCmmConnMethodInstance* connMethodInstance =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int0() );
+    TUint32 connMethodId = connMethodInstance->GetId();
+
+    TInt index( KErrNotFound );
+    for ( TInt i = 0; i < destinationInstance->iConnMethodItemArray.Count(); i++ )
+        {
+        if ( destinationInstance->iConnMethodItemArray[i].iId == connMethodId )
+            {
+            // Index in the connection method array is the connection method
+            // priority. But priority starts from 1, so adjust by +1.
+            index = i + 1;
+            break;
+            }
+        }
+
+    // Leave if given connection method is not inside this destination.
+    User::LeaveIfError( index );
+
+    // Check if the connection method is an embedded destination.
+    if ( connMethodInstance->GetBearerType() == KUidEmbeddedDestination )
+        {
+        index = CMManager::KDataMobilitySelectionPolicyPriorityWildCard;
+        }
+
+    //TODO, what if CM is virtual?
+
+    TUint priority = ( TUint )index;
+    TPckg<TUint> priorityPckg( priority );
+    aMessage.WriteL( 1, priorityPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_GETCONNMETHODPRIORITYL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetDestinationNameL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetDestinationNameL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETDESTINATIONNAMEL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+
+    HBufC* name = destinationInstance->GetLocalisedDestinationNameL();
+    CleanupStack::PushL( name );
+    TPtrC namePtr( name->Des() );
+
+    TInt bufferLen = aMessage.GetDesMaxLength( 0 );
+    if ( namePtr.Length() > bufferLen )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    aMessage.WriteL( 0, namePtr );
+
+    CleanupStack::PopAndDestroy( name );
+
+    OstTraceFunctionExit0( CCMMSESSION_GETDESTINATIONNAMEL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetDestinationIdL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetDestinationIdL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETDESTINATIONIDL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+
+    TUint32 id = destinationInstance->GetRecordTagFromApRecordL();
+    TPckg<TUint32> idPckg( id );
+    aMessage.WriteL( 0, idPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_GETDESTINATIONIDL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetDestinationElementIdL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetDestinationElementIdL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETDESTINATIONELEMENTIDL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+
+    TUint32 elementId = destinationInstance->GetElementIdL();
+    TPckg<TUint32> elementIdPckg( elementId );
+    aMessage.WriteL( 0, elementIdPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_GETDESTINATIONELEMENTIDL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetDestinationMetadataL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetDestinationMetadataL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETDESTINATIONMETADATAL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+    CMManager::TSnapMetadataField metadataField =
+            ( CMManager::TSnapMetadataField )aMessage.Int0();
+
+    TUint32 metadata( 0 );
+    destinationInstance->GetMetadataL( metadataField, metadata );
+
+    TPckg<TUint32> metadataPckg( metadata );
+    aMessage.WriteL( 1, metadataPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_GETDESTINATIONMETADATAL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetDestinationProtectionLevelL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetDestinationProtectionLevelL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETDESTINATIONPROTECTIONLEVELL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+
+    CMManager::TProtectionLevel protLevel( CMManager::EProtLevel0 );
+    destinationInstance->GetProtectionL( protLevel );
+
+    TPckg<TInt> protLevelPckg( protLevel );
+    aMessage.WriteL( 0, protLevelPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_GETDESTINATIONPROTECTIONLEVELL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::IsDestinationConnectedL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::IsDestinationConnectedL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_ISDESTINATIONCONNECTEDL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+
+    if ( !iCache.DestinationExistsWithId( destinationInstance->GetId() ) )
+        {
+        User::Leave( KErrNotFound );
+        }
+
+    TBool isConnected = iCache.DestinationConnectedL( destinationInstance->GetId() );
+    TPckg<TBool> isConnectedPckg( isConnected );
+    aMessage.WriteL( 0, isConnectedPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_ISDESTINATIONCONNECTEDL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::IsDestinationHiddenL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::IsDestinationHiddenL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_ISDESTINATIONHIDDENL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+
+    TUint32 isHiddenMetadata( 0 );
+    destinationInstance->GetMetadataL( CMManager::ESnapMetadataHiddenAgent, isHiddenMetadata );
+
+    TBool isHidden( EFalse );
+    if ( isHiddenMetadata )
+        {
+        isHidden = ETrue;
+        }
+
+    TPckg<TBool> isHiddenPckg( isHidden );
+    aMessage.WriteL( 0, isHiddenPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_ISDESTINATIONHIDDENL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Checks if the destination given as parameter is equal to this destination
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::DestinationIsEqualL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_DESTINATIONISEQUALL_ENTRY );
+
+    CCmmDestinationInstance* dest =
+        ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+
+    CCmmDestinationInstance* destToBeCompared =
+        ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int0() );
+
+    TBool equal( EFalse );
+    if ( dest->GetId() == destToBeCompared->GetId() )
+        {
+        equal = ETrue;
+        }
+
+    TPckg<TBool> equalPckg( equal );
+
+    aMessage.WriteL( 1, equalPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_DESTINATIONISEQUALL_EXIT );
+    }
+
+
+// -----------------------------------------------------------------------------
+// Adds a connection method into a destination. Does not add embedded
+// destinations.
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::DestAddConnMethodL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_DESTADDCONNMETHODL_ENTRY );
+
+    CCmmDestinationInstance* destination =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+    CCmmConnMethodInstance* connMethod =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int0() );
+
+    if ( connMethod->IsEmbeddedDestination() )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    TInt index = destination->AddConnMethodL( *connMethod );
+    TPckg<TInt> indexPckg( index );
+    aMessage.WriteL( 1, indexPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_DESTADDCONNMETHODL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Adds a destination into a destination as an embedded destination.
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::DestAddEmbeddedDestinationL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_DESTADDEMBEDDEDDESTINATIONL_ENTRY );
+
+    CCmmDestinationInstance* destination =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+    CCmmDestinationInstance* embeddedDestination =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int0() );
+
+    TInt index = destination->AddEmbeddedDestinationL( *embeddedDestination );
+    TPckg<TInt> indexPckg( index );
+    aMessage.WriteL( 1, indexPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_DESTADDEMBEDDEDDESTINATIONL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::DestDeleteConnMethodL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::DestDeleteConnMethodL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_DESTDELETECONNMETHODL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+    CCmmConnMethodInstance* connMethodInstance =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int0() );
+
+    //TODO, capability checks
+
+    destinationInstance->DeleteConnMethodFromDestinationL( *connMethodInstance );
+
+    OstTraceFunctionExit0( CCMMSESSION_DESTDELETECONNMETHODL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::DestRemoveConnMethodL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::DestRemoveConnMethodL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_DESTREMOVECONNMETHODL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+    CCmmConnMethodInstance* connMethodInstance =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int0() );
+
+    //TODO, capability checks
+
+    destinationInstance->RemoveConnMethodFromDestinationL( *connMethodInstance );
+
+    OstTraceFunctionExit0( CCMMSESSION_DESTREMOVECONNMETHODL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::ModifyConnMethodPriorityL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::ModifyConnMethodPriorityL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_MODIFYCONNMETHODPRIORITYL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+    CCmmConnMethodInstance* connMethodInstance =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int0() );
+
+    //TODO, capability checks
+
+    // Index values start from 0 (0 meaning highest priority).
+    TUint index( ( TUint )aMessage.Int1() );
+
+    destinationInstance->ModifyConnMethodPriorityL( *connMethodInstance, index );
+
+    OstTraceFunctionExit0( CCMMSESSION_MODIFYCONNMETHODPRIORITYL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::SetDestinationNameL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::SetDestinationNameL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_SETDESTINATIONNAMEL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+
+    // Load and check name.
+    TInt destNameLength = aMessage.GetDesLength( 0 );
+    if ( destNameLength <= 0 )
+        {
+        User::Leave( KErrArgument ); //TODO, check also max length?
+        }
+
+    HBufC* newName = HBufC::NewLC( destNameLength );
+    TPtr ptrNewName = newName->Des();
+    aMessage.ReadL( 0, ptrNewName );
+
+    // Check if a destination with given name exists (or is already created but not yet saved).
+    if ( iCache.DestinationExistsWithNameL( *newName, destinationInstance->GetId() ) ||
+            iCache.NotSavedDestinationOpenWithNameL( *newName, destinationInstance->GetId() ) )
+        {
+        User::Leave( KErrAlreadyExists );
+        }
+
+    destinationInstance->SetDestinationNameL( *newName );
+
+    CleanupStack::PopAndDestroy( newName );
+
+    OstTraceFunctionExit0( CCMMSESSION_SETDESTINATIONNAMEL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::SetDestinationMetadataL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::SetDestinationMetadataL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_SETDESTINATIONMETADATAL_ENTRY );
+
+    //TODO, Capability check. Protection level or Internet destination.
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+
+    CMManager::TSnapMetadataField metadataField =
+            ( CMManager::TSnapMetadataField )aMessage.Int0();
+    TUint32 metadata = aMessage.Int1();
+
+    destinationInstance->SetMetadataL( metadataField, metadata );
+
+    OstTraceFunctionExit0( CCMMSESSION_SETDESTINATIONMETADATAL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::SetDestinationProtectionL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::SetDestinationProtectionL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_SETDESTINATIONPROTECTIONL_ENTRY );
+
+    //TODO, Capability check: ECapabilityNetworkControl
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+    CMManager::TProtectionLevel protLevel =
+            ( CMManager::TProtectionLevel )aMessage.Int0();
+    destinationInstance->SetProtectionL( protLevel );
+
+    OstTraceFunctionExit0( CCMMSESSION_SETDESTINATIONPROTECTIONL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::SetDestinationHiddenL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::SetDestinationHiddenL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_SETDESTINATIONHIDDENL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+
+    TBool hidden = aMessage.Int0();
+    destinationInstance->SetMetadataL( CMManager::ESnapMetadataHiddenAgent, hidden );
+
+    OstTraceFunctionExit0( CCMMSESSION_SETDESTINATIONHIDDENL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::UpdateDestinationL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::UpdateDestinationL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_UPDATEDESTINATIONL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+    destinationInstance->UpdateL();
+
+    OstTraceFunctionExit0( CCMMSESSION_UPDATEDESTINATIONL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::DeleteDestinationL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::DeleteDestinationL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_DELETEDESTINATIONL_ENTRY );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
+
+    iCache.CheckIfDestinationCanBeDeletedL( *destinationInstance );
+    iCache.DeleteDestinationL( *destinationInstance );
+
+    // Close the destination handle. Destination instance destructor will
+    // notify cache. If the reference count for the cache side handle goes to
+    // zero, it will be deleted.
+    iDestinationObjects->Remove( aMessage.Int3() );
+
+    OstTraceFunctionExit0( CCMMSESSION_DELETEDESTINATIONL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::ServiceConnMethodL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::ServiceConnMethodL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_SERVICECONNMETHODL_ENTRY );
+
+    switch ( aMessage.Function() )
+        {
+        case ECMCreateConnMethod:
+            {
+            CreateConnMethodL( aMessage );
+            }
+            break;
+        case ECMUpdate:
+            {
+            UpdateConnMethodL( aMessage );
+            }
+            break;
+        case ECMCloseConnMethod:
+            {
+            CloseConnMethod( aMessage ); // Can't leave.
+            }
+            break;
+        case ECMDelete:
+            {
+            DeleteConnMethodL( aMessage );
+            }
+            break;
+        case ECMGetConnMethodWithId:
+            {
+            GetConnMethodWithIdL( aMessage );
+            }
+            break;
+        case ECMRefresh:
+            {
+            RefreshConnMethodL( aMessage );
+            }
+            break;
+        case ECMGetIntAttribute:
+            {
+            GetIntAttributeL( aMessage );
+            }
+            break;
+        case ECMGetBoolAttribute:
+            {
+            GetBoolAttributeL( aMessage );
+            }
+            break;
+        case ECMGetStringAttribute:
+            {
+            GetStringAttributeL( aMessage );
+            }
+            break;
+        case ECMGetString8Attribute:
+            {
+            GetString8AttributeL( aMessage );
+            }
+            break;
+        case ECMSetIntAttribute:
+            {
+            SetIntAttributeL( aMessage );
+            }
+            break;
+        case ECMSetBoolAttribute:
+            {
+            SetBoolAttributeL( aMessage );
+            }
+            break;
+        case ECMSetStringAttribute:
+            {
+            SetStringAttributeL( aMessage );
+            }
+            break;
+        case ECMSetString8Attribute:
+            {
+            SetString8AttributeL( aMessage );
+            }
+            break;
+        case ECMCreateConnMethodWithId:
+            {
+            CreateConnMethodWithIdL( aMessage );
+            }
+            break;
+        case ECMGetConnMethodFromDestWithIndex:
+            {
+            GetConnMethodFromDestWithIndexL( aMessage );
+            }
+            break;
+        case ECMGetConnMethodFromDestWithId:
+            {
+            GetConnMethodFromDestWithIdL( aMessage );
+            }
+            break;
+        case ECMCreateConnMethodToDest:
+            {
+            CreateConnMethodToDestL( aMessage );
+            }
+            break;
+        case ECMCreateConnMethodToDestWithId:
+            {
+            CreateConnMethodToDestWithIdL( aMessage );
+            }
+            break;
+        case ECMIsEqual:
+            {
+            CmIsEqualL( aMessage );
+            }
+            break;
+        case ECMCreateCopyOfExisting:
+            {
+            CreateCopyOfExistingL( aMessage );
+            }
+            break;
+        case EDestGetEmbeddedDestination:
+            {
+            GetEmbeddedDestinationL( aMessage );
+            }
+            break;
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            }
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_SERVICECONNMETHODL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Create a new connection method (not embedded destination).
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::CreateConnMethodL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_CREATECONNMETHODL_ENTRY );
+
+    TUint32 bearerType( aMessage.Int0() );
+
+    CCmmConnMethodInstance* connMethod = CCmmConnMethodInstance::NewLC( this, &iCache );
+    iCache.CreateConnMethodL( *connMethod, NULL, bearerType, 0 );
+
+    iConnMethodContainer->AddL( ( CObject* ) connMethod );
+    TInt handle = iConnMethodObjects->AddL( ( CObject* ) connMethod );
+    connMethod->SetHandle( handle );
+    CleanupStack::Pop( connMethod );
+
+    TPckg<TInt> handlePckg( handle );
+    TInt error = aMessage.Write( 3, handlePckg );
+    if ( error )
+        {
+        // Remove from object index and destroy the object.
+        iConnMethodObjects->Remove( handle );
+        User::Leave( error );
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_CREATECONNMETHODL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::ConnMethodUpdateL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::UpdateConnMethodL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_UPDATECONNMETHODL_ENTRY );
+
+    CCmmConnMethodInstance* connMethod =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
+    connMethod->UpdateL();
+
+    OstTraceFunctionExit0( CCMMSESSION_UPDATECONNMETHODL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::CloseConnMethod
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::CloseConnMethod( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_CLOSECONNMETHOD_ENTRY );
+
+    // Check first that the connection method instance exists.
+    CObject* connMethodObject = iConnMethodObjects->At( aMessage.Int3() );
+    if ( connMethodObject )
+        {
+        // Connection method instance destructor will notify cache.
+        iConnMethodObjects->Remove( aMessage.Int3() );
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_CLOSECONNMETHOD_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::ConnMethodUpdateL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::DeleteConnMethodL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_DELETECONNMETHODL_ENTRY );
+
+    CCmmConnMethodInstance* connMethodInstance =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
+
+    iCache.CheckIfConnMethodCanBeDeletedL( *connMethodInstance );
+    iCache.DeleteConnMethodL( *connMethodInstance );
+    // Ignore the boolean return value. It is always true, or the
+    // DeleteL()-call leaves.
+
+    // Close the connection method handle. Connection method instance
+    // destructor will notify cache. If the reference count for the cache side
+    // handle goes to zero, it will be deleted.
+    iConnMethodObjects->Remove( aMessage.Int3() );
+
+    OstTraceFunctionExit0( CCMMSESSION_DELETECONNMETHODL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetConnMethodWithIdL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetConnMethodWithIdL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODWITHIDL_ENTRY );
+
+    TUint32 connMethodId = aMessage.Int0();
+
+    // If this session already has a connection method with matching id open,
+    // provide the client with a reference to the already opened handle.
+    CCmmConnMethodInstance* cmInstance = FindConnMethodInstanceById( connMethodId );
+    if ( cmInstance )
+        {
+        // Also check that the connection method exists in database.
+        if ( iCache.ConnMethodExistsWithId( connMethodId ) )
+            {
+            TPckg<TInt> existingHandlePckg( cmInstance->GetHandle() );
+            aMessage.WriteL( 1, existingHandlePckg );
+            User::Leave( KErrAlreadyExists );
+            }
+        }
+    cmInstance = NULL;
+    TPckg<TInt> existingHandlePckg( 0 );
+    aMessage.WriteL( 1, existingHandlePckg );
+
+    cmInstance = CCmmConnMethodInstance::NewLC( this, &iCache );
+    // Will check if connection method ID is valid.
+    iCache.OpenConnMethodL( *cmInstance, NULL, connMethodId );
+
+    iConnMethodContainer->AddL( ( CObject* ) cmInstance );
+    TInt handle = iConnMethodObjects->AddL( ( CObject* ) cmInstance );
+    cmInstance->SetHandle( handle );
+    CleanupStack::Pop( cmInstance );
+
+    TPckg<TInt> handlePckg( handle );
+    TInt error = aMessage.Write( 3, handlePckg );
+    if ( error )
+        {
+        // Remove from object index and destroy the object.
+        iConnMethodObjects->Remove( handle );
+        User::Leave( error );
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_GETCONNMETHODWITHIDL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::RefreshConnMethodL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::RefreshConnMethodL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_REFRESHCONNMETHODL_ENTRY );
+
+    CCmmConnMethodInstance* connMethodInstance =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
+
+    iCache.RefreshConnMethodL( *connMethodInstance );
+
+    OstTraceFunctionExit0( CCMMSESSION_REFRESHCONNMETHODL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetIntAttributeL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetIntAttributeL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETINTATTRIBUTEL_ENTRY );
+
+    CCmmConnMethodInstance* cm =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
+
+    TUint32 attribute( aMessage.Int0() );
+    TUint32 value = cm->GetIntAttributeL( attribute );
+
+    TPckg<TUint32> valuePckg( value );
+    aMessage.WriteL( 1, valuePckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_GETINTATTRIBUTEL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetBoolAttributeL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetBoolAttributeL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETBOOLATTRIBUTEL_ENTRY );
+
+    CCmmConnMethodInstance* cm =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
+
+    TUint32 attribute( aMessage.Int0() );
+    TBool value = cm->GetBoolAttributeL( attribute );
+
+    TPckg<TBool> valuePckg( value );
+    aMessage.WriteL( 1, valuePckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_GETBOOLATTRIBUTEL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetStringAttributeL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetStringAttributeL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETSTRINGATTRIBUTEL_ENTRY );
+
+    CCmmConnMethodInstance* cm =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
+
+    TUint32 attribute( aMessage.Int0() );
+    HBufC* value = cm->GetStringAttributeL( attribute );
+    if ( !value )
+        {
+        OstTraceFunctionExit0( CCMMSESSION_GETSTRINGATTRIBUTEL_EXIT );
+        return;
+        }
+    CleanupStack::PushL( value );
+    TPtrC valuePtr = value->Des();
+
+    // check the buffer length of the given buffer
+    TInt bufferLen = aMessage.GetDesMaxLength( 1 );
+    if ( valuePtr.Length() > bufferLen )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    aMessage.WriteL( 1, valuePtr );
+    CleanupStack::PopAndDestroy( value );
+
+    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETSTRINGATTRIBUTEL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::GetString8AttributeL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetString8AttributeL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETSTRING8ATTRIBUTEL_ENTRY );
+
+    CCmmConnMethodInstance* cm =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
+
+    TUint32 attribute( aMessage.Int0() );
+    HBufC8* value = cm->GetString8AttributeL( attribute );
+    if ( !value )
+        {
+        OstTraceFunctionExit0( CCMMSESSION_GETSTRING8ATTRIBUTEL_EXIT );
+        return;
+        }
+    CleanupStack::PushL( value );
+    TPtrC8 valuePtr = value->Des();
+
+    // check the buffer length of the given buffer
+    TInt bufferLen = aMessage.GetDesMaxLength( 1 );
+    if ( valuePtr.Length() > bufferLen )
+        {
+        User::Leave( KErrArgument );
+        }
+
+    aMessage.WriteL( 1, valuePtr );
+    CleanupStack::PopAndDestroy( value );
+
+    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETSTRING8ATTRIBUTEL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::SetIntAttributeL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::SetIntAttributeL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_SETINTATTRIBUTEL_ENTRY );
+
+    CCmmConnMethodInstance* cm =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
+
+    TUint32 attribute( aMessage.Int0() );
+    TUint32 value( aMessage.Int1() );
+
+    cm->SetIntAttributeL( attribute, value );
+
+    OstTraceFunctionExit0( CCMMSESSION_SETINTATTRIBUTEL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::SetBoolAttributeL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::SetBoolAttributeL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_SETBOOLATTRIBUTEL_ENTRY );
+
+    CCmmConnMethodInstance* cm =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
+
+    TUint32 attribute( aMessage.Int0() );
+    TBool value( aMessage.Int1() );
+
+    cm->SetBoolAttributeL( attribute, value );
+
+    OstTraceFunctionExit0( CCMMSESSION_SETBOOLATTRIBUTEL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::SetStringAttributeL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::SetStringAttributeL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_SETSTRINGATTRIBUTEL_ENTRY );
+
+    CCmmConnMethodInstance* cm =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
+
+    TUint32 attribute( aMessage.Int0() );
+
+    HBufC* value = HBufC::NewLC( aMessage.GetDesLengthL( 1 ) );
+    TPtr valuePtr( value->Des() );
+    aMessage.ReadL( 1, valuePtr );
+
+    cm->SetStringAttributeL( attribute, valuePtr );
+
+    CleanupStack::PopAndDestroy( value );
+
+    OstTraceFunctionExit0( CCMMSESSION_SETSTRINGATTRIBUTEL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// CCmmSession::SetString8AttributeL
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::SetString8AttributeL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_SETSTRING8ATTRIBUTEL_ENTRY );
+
+    CCmmConnMethodInstance* cm =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
+
+    TUint32 attribute( aMessage.Int0() );
+
+    HBufC8* value = HBufC8::NewLC( aMessage.GetDesLengthL( 1 ) );
+    TPtr8 valuePtr( value->Des() );
+    aMessage.ReadL( 1, valuePtr );
+
+    cm->SetString8AttributeL( attribute, valuePtr );
+
+    CleanupStack::PopAndDestroy( value );
+
+    OstTraceFunctionExit0( CCMMSESSION_SETSTRING8ATTRIBUTEL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Create a new connection method (not embedded destination) with specific ID.
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::CreateConnMethodWithIdL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_CREATECONNMETHODWITHIDL_ENTRY );
+
+    TUint32 bearerType( aMessage.Int0() );
+    TUint32 connMethodId = ( aMessage.Int1() );
+
+    CCmmConnMethodInstance* connMethod =
+            CCmmConnMethodInstance::NewLC( this, &iCache );
+    // Will check if ID is available.
+    iCache.CreateConnMethodL( *connMethod, NULL, bearerType, connMethodId );
+
+    iConnMethodContainer->AddL( ( CObject* ) connMethod );
+    TInt handle = iConnMethodObjects->AddL( ( CObject* ) connMethod );
+    connMethod->SetHandle( handle );
+    CleanupStack::Pop( connMethod );
+
+    TPckg<TInt> handlePckg( handle );
+    TInt error = aMessage.Write( 3, handlePckg );
+    if ( error )
+        {
+        // Remove from object index and destroy the object.
+        iConnMethodObjects->Remove( handle );
+        User::Leave( error );
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_CREATECONNMETHODWITHIDL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Gets a Connection Method from a Destination with index number.
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetConnMethodFromDestWithIndexL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODFROMDESTWITHINDEXL_ENTRY );
+
+    TInt destinationHandle( aMessage.Int0() );
+    TInt connMethodIndex( aMessage.Int1() );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( destinationHandle );
+
+    // Check index is in range.
+    if ( connMethodIndex < 0 ||
+         connMethodIndex >= destinationInstance->iConnMethodItemArray.Count() )
+        {
+        User::Leave( KErrArgument );
+        }
+    TInt connMethodId( destinationInstance->iConnMethodItemArray[connMethodIndex].iId );
+
+    // If this session already has a connection method with matching id open
+    // and that connection method correctly belongs to the provided destination,
+    // provide the client with a reference to the already opened handle.
+    CCmmConnMethodInstance* cmInstance = FindConnMethodInstanceById( connMethodId );
+    if ( cmInstance &&
+            destinationInstance->ValidConnMethodIdInDestinationIncludeEmbedded( connMethodId ) )
+        {
+        // Also check that the connection method exists in database.
+        if ( iCache.ConnMethodExistsWithId( connMethodId ) ||
+                iCache.DestinationExistsWithId( connMethodId ) )
+            {
+            TPckg<TInt> existingHandlePckg( cmInstance->GetHandle() );
+            aMessage.WriteL( 2, existingHandlePckg );
+            User::Leave( KErrAlreadyExists );
+            }
+        }
+    cmInstance = NULL;
+    TPckg<TInt> existingHandlePckg( 0 );
+    aMessage.WriteL( 2, existingHandlePckg );
+
+    cmInstance = CCmmConnMethodInstance::NewLC( this, &iCache );
+    // Will check if connection method ID is valid.
+    iCache.OpenConnMethodL( *cmInstance, destinationInstance, connMethodId );
+
+    iConnMethodContainer->AddL( ( CObject* ) cmInstance );
+    TInt handle = iConnMethodObjects->AddL( ( CObject* ) cmInstance );
+    cmInstance->SetHandle( handle );
+    CleanupStack::Pop( cmInstance );
+
+    TPckg<TInt> handlePckg( handle );
+    TInt error = aMessage.Write( 3, handlePckg );
+    if ( error )
+        {
+        // Remove from object index and destroy the object.
+        iConnMethodObjects->Remove( handle );
+        User::Leave( error );
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_GETCONNMETHODFROMDESTWITHINDEXL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Gets a Connection Method from a Destination with Id.
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetConnMethodFromDestWithIdL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODFROMDESTWITHIDL_ENTRY );
+
+    TInt destinationHandle( aMessage.Int0() );
+    TUint32 connMethodId( aMessage.Int1() );
+
+    CCmmDestinationInstance* destinationInstance =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( destinationHandle );
+
+    // If this session already has a connection method with matching id open
+    // and that connection method correctly belongs to the provided destination,
+    // provide the client with a reference to the already opened handle.
+    CCmmConnMethodInstance* cmInstance = FindConnMethodInstanceById( connMethodId );
+    if ( cmInstance &&
+            destinationInstance->ValidConnMethodIdInDestinationIncludeEmbedded( connMethodId ) )
+        {
+        // Also check that the connection method exists in database.
+        if ( iCache.ConnMethodExistsWithId( connMethodId ) ||
+                iCache.DestinationExistsWithId( connMethodId ) )
+            {
+            TPckg<TInt> existingHandlePckg( cmInstance->GetHandle() );
+            aMessage.WriteL( 2, existingHandlePckg );
+            User::Leave( KErrAlreadyExists );
+            }
+        }
+    cmInstance = NULL;
+    TPckg<TInt> existingHandlePckg( 0 );
+    aMessage.WriteL( 2, existingHandlePckg );
+
+    cmInstance = CCmmConnMethodInstance::NewLC( this, &iCache );
+    // Will check if connection method ID is valid.
+    iCache.OpenConnMethodL( *cmInstance, destinationInstance, connMethodId );
+
+    iConnMethodContainer->AddL( ( CObject* ) cmInstance );
+    TInt handle = iConnMethodObjects->AddL( ( CObject* ) cmInstance );
+    cmInstance->SetHandle( handle );
+    CleanupStack::Pop( cmInstance );
+
+    TPckg<TInt> handlePckg( handle );
+    TInt error = aMessage.Write( 3, handlePckg );
+    if ( error )
+        {
+        // Remove from object index and destroy the object.
+        iConnMethodObjects->Remove( handle );
+        User::Leave( error );
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_GETCONNMETHODFROMDESTWITHIDL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Create a new connection method (not embedded destination) into a destination.
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::CreateConnMethodToDestL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_CREATECONNMETHODTODESTL_ENTRY );
+
+    TInt destinationHandle( aMessage.Int0() );
+    TUint32 bearerType( aMessage.Int1() );
+
+    CCmmDestinationInstance* destination =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( destinationHandle );
+
+    CCmmConnMethodInstance* connMethod = CCmmConnMethodInstance::NewLC( this, &iCache );
+    iCache.CreateConnMethodL( *connMethod, destination, bearerType, 0 );
+
+    iConnMethodContainer->AddL( ( CObject* ) connMethod );
+    TInt handle = iConnMethodObjects->AddL( ( CObject* ) connMethod );
+    connMethod->SetHandle( handle );
+    CleanupStack::Pop( connMethod );
+
+    TPckg<TInt> handlePckg( handle );
+    TInt error = aMessage.Write( 3, handlePckg );
+    if ( error )
+        {
+        // Remove from object index and destroy the object.
+        iConnMethodObjects->Remove( handle );
+        User::Leave( error );
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_CREATECONNMETHODTODESTL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Create a new connection method (not embedded destination) with specific ID
+// into a destination.
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::CreateConnMethodToDestWithIdL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_CREATECONNMETHODTODESTWITHIDL_ENTRY );
+
+    TInt destinationHandle( aMessage.Int0() );
+    TUint32 bearerType( aMessage.Int1() );
+    TUint32 connMethodId( aMessage.Int2() );
+
+    CCmmDestinationInstance* destination =
+            ( CCmmDestinationInstance* )iDestinationObjects->AtL( destinationHandle );
+
+    CCmmConnMethodInstance* connMethod =
+            CCmmConnMethodInstance::NewLC( this, &iCache );
+    // Will check if ID is available.
+    iCache.CreateConnMethodL( *connMethod, destination, bearerType, connMethodId );
+
+    iConnMethodContainer->AddL( ( CObject* ) connMethod );
+    TInt handle = iConnMethodObjects->AddL( ( CObject* ) connMethod );
+    connMethod->SetHandle( handle );
+    CleanupStack::Pop( connMethod );
+
+    TPckg<TInt> handlePckg( handle );
+    TInt error = aMessage.Write( 3, handlePckg );
+    if ( error )
+        {
+        // Remove from object index and destroy the object.
+        iConnMethodObjects->Remove( handle );
+        User::Leave( error );
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_CREATECONNMETHODTODESTWITHIDL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Checks if the CM given as parameter is equal to this CM
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::CmIsEqualL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_CMISEQUALL_ENTRY );
+
+    CCmmConnMethodInstance* cm =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
+
+    CCmmConnMethodInstance* cmToBeCompared =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int0() );
+
+    TBool equal( EFalse );
+    if ( cm->GetId() == cmToBeCompared->GetId() )
+        {
+        equal = ETrue;
+        }
+
+    TPckg<TBool> equalPckg( equal );
+    aMessage.WriteL( 1, equalPckg );
+
+    OstTraceFunctionExit0( CCMMSESSION_CMISEQUALL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Creates a copy of an existing connection method and opens a handle to it.
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::CreateCopyOfExistingL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_CREATECOPYOFEXISTINGL_ENTRY );
+
+    CCmmConnMethodInstance* sourceCm =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int0() );
+    TUint32 cmId = sourceCm->GetId();
+
+    CCmmConnMethodInstance* targetCm =
+            CCmmConnMethodInstance::NewLC( this, &iCache );
+    iCache.CreateCopyOfConnMethodL( *targetCm, *sourceCm );
+
+    iConnMethodContainer->AddL( ( CObject* ) targetCm );
+    TInt handle = iConnMethodObjects->AddL( ( CObject* ) targetCm );
+    targetCm->SetHandle( handle );
+    CleanupStack::Pop( targetCm );
+
+    TPckg<TInt> handlePckg( handle );
+    TInt error = aMessage.Write( 3, handlePckg );
+    if ( error )
+        {
+        // Remove from object index and destroy the object.
+        iConnMethodObjects->Remove( handle );
+        User::Leave( error );
+        }
+
+    OstTraceFunctionExit0( CCMMSESSION_CREATECOPYOFEXISTINGL_EXIT );
+    }
+
+// -----------------------------------------------------------------------------
+// Creates a copy of an existing connection method and opens a handle to it.
+// -----------------------------------------------------------------------------
+//
+void CCmmSession::GetEmbeddedDestinationL( const RMessage2& aMessage )
+    {
+    OstTraceFunctionEntry0( CCMMSESSION_GETEMBEDDEDDESTINATIONL_ENTRY );
+
+    CCmmConnMethodInstance* connMethodInstance =
+            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
+
+    if ( connMethodInstance->GetBearerType() != KUidEmbeddedDestination )
+        {
+        User::Leave( KErrNotSupported );
+        }
+
+    TUint32 destinationId = connMethodInstance->GetId();
+
+    // Check that the ID is in valid range.
+    if ( destinationId <= KCmDefaultDestinationAPTagId ||
+            destinationId >= KCmMaxDestinationAPTagId )
+        {
+        User::Leave( KErrCorrupt );
+        }
+
+    // If this session already has a destination with matching ID open, provide
+    // the client with a reference to the already opened handle.
+    CCmmDestinationInstance* destinationInstance = FindDestinationInstanceById( destinationId );
+    if ( destinationInstance )
+        {
+        if ( iCache.DestinationExistsWithId( destinationId ) )
+            {
+            TPckg<TInt> existingHandlePckg( destinationInstance->GetHandle() );
+            aMessage.WriteL( 1, existingHandlePckg );
+            User::Leave( KErrAlreadyExists );
+            }
+        }
+    destinationInstance = NULL;
+    TPckg<TInt> existingHandlePckg( 0 );
+    aMessage.WriteL( 1, existingHandlePckg );
+
+    destinationInstance = CCmmDestinationInstance::NewLC( this, &iCache );
+
+    // Cache will open a handle to the destination if not already open, and
+    // copy relevant data into this destination instance.
+    iCache.OpenDestinationL( *destinationInstance, destinationId ); // Checks ID is valid.
+
+    iDestinationContainer->AddL( ( CObject* ) destinationInstance );
+    TInt handle = iDestinationObjects->AddL( ( CObject* ) destinationInstance );
+    destinationInstance->SetHandle( handle );
+    CleanupStack::Pop( destinationInstance );
+
+    TPckg<TInt> handlePckg( handle );
+    TInt error = aMessage.Write( 3, handlePckg );
+    if ( error )
+        {
+        // Removes from object index and destroys the object.
+        iDestinationObjects->Remove( handle );
+        User::Leave( error );
+        }
+    OstTraceFunctionExit0( CCMMSESSION_GETEMBEDDEDDESTINATIONL_EXIT );
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmsrvstatic.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,71 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Creates and starts the server.
+*
+*/
+
+
+#include "cmmstarter.h"
+
+
+//
+// Perform all server initialisation, in particular creation of the scheduler
+// and server and then run the scheduler.
+//
+static void RunServerL()
+    {
+    // Create and install the active scheduler we need.
+    CActiveScheduler* s = new( ELeave ) CActiveScheduler;
+    CleanupStack::PushL( s );
+    CActiveScheduler::Install( s );
+
+    // Create the server.
+    CServer2* server = CCmmStarter::CreateAndStartServerL();
+    CleanupStack::PushL( server );
+
+    // Naming the server thread after server startup helps to debug panics.
+    User::LeaveIfError( RThread::RenameMe( CCmmStarter::ServerName() ) );
+
+    // Initialisation complete, now signal the client.
+    RProcess::Rendezvous( KErrNone );
+
+    // Ready to run.
+    CActiveScheduler::Start();
+
+    // Cleanup the server and scheduler.
+    CleanupStack::PopAndDestroy( server );
+    CleanupStack::PopAndDestroy( s );
+    }
+
+//
+// Server process entry-point.
+//
+TInt E32Main()
+    {
+//    __UHEAP_MARK;
+
+    CTrapCleanup* cleanup = CTrapCleanup::New();
+    TInt r = KErrNoMemory;
+    if ( cleanup )
+        {
+        TRAP( r, RunServerL() );
+        delete cleanup;
+        }
+
+//    __UHEAP_MARKEND;
+    return r;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmstarter.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Creates and starts Connection Method Manager server.
+*
+*/
+
+
+#include "cmmstarter.h"
+#include "cmmserverdefs.h"
+#include "cmmserver.h"
+
+
+CServer2* CCmmStarter::CreateAndStartServerL()
+    {
+    return CCmmServer::NewL();
+    }
+
+TPtrC CCmmStarter::ServerName()
+    {
+    return KCmmServer().Mid( 0 );
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/src/cmmtransactionhandler.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,201 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Common transaction handler of framework and plugins.
+*
+*/
+
+
+#include "cmmtransactionhandler.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmtransactionhandlerTraces.h"
+#endif
+
+const TUint32 KMaxOpenTransAttempts = 10;
+const TUint32 KRetryAfter = 100000;
+
+
+// ---------------------------------------------------------------------------
+// NewL.
+// ---------------------------------------------------------------------------
+//
+CCmmTransactionHandler* CCmmTransactionHandler::NewL( CommsDat::CMDBSession& aDb )
+    {
+    OstTraceFunctionEntry0( CCMTRANSACTIONHANDLER_NEWL_ENTRY );
+
+    CCmmTransactionHandler* self = new( ELeave ) CCmmTransactionHandler( aDb );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    OstTraceFunctionExit0( CCMTRANSACTIONHANDLER_NEWL_EXIT );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CCmmTransactionHandler::~CCmmTransactionHandler()
+    {
+    OstTraceFunctionEntry0( CCMTRANSACTIONHANDLER_CCMTRANSACTIONHANDLER_ENTRY );
+    delete &iDb;
+    OstTraceFunctionExit0( CCMTRANSACTIONHANDLER_CCMTRANSACTIONHANDLER_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------------------------
+//
+CCmmTransactionHandler::CCmmTransactionHandler( CommsDat::CMDBSession& aDb ) : iDb( aDb )
+    {
+    OstTraceFunctionEntry0( DUP1_CCMTRANSACTIONHANDLER_CCMTRANSACTIONHANDLER_ENTRY );
+    iRefCount = 0;
+    OstTraceFunctionExit0( DUP1_CCMTRANSACTIONHANDLER_CCMTRANSACTIONHANDLER_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor.
+// ---------------------------------------------------------------------------
+//
+void CCmmTransactionHandler::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCMTRANSACTIONHANDLER_CONSTRUCTL_ENTRY );
+    iDb.SetAttributeMask( CommsDat::ECDHidden | CommsDat::ECDProtectedWrite );
+    OstTraceFunctionExit0( CCMTRANSACTIONHANDLER_CONSTRUCTL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Return the CommsDat session.
+// ---------------------------------------------------------------------------
+//
+CommsDat::CMDBSession& CCmmTransactionHandler::Session() const
+    {
+    return iDb;
+    }
+
+// ---------------------------------------------------------------------------
+// Opens a CommsDat transaction if it is not already open. Reference counter
+// is inreased by one.
+// ---------------------------------------------------------------------------
+//
+void CCmmTransactionHandler::OpenTransactionLC()
+    {
+    OstTraceFunctionEntry0( CCMTRANSACTIONHANDLER_OPENTRANSACTIONLC_ENTRY );
+
+    iRefCount++;
+    CleanupClosePushL( *this );
+
+    if ( !iDb.IsInTransaction() )
+        {
+        TInt err( KErrNone );
+        TUint32 attempts( KMaxOpenTransAttempts );
+
+        do
+            {
+            TRAP( err, iDb.OpenTransactionL() );
+            if ( err )
+                {
+                User::After( KRetryAfter );
+                }
+            } while ( err && attempts-- );
+        User::LeaveIfError( err );
+        }
+
+    OstTraceFunctionExit0( CCMTRANSACTIONHANDLER_OPENTRANSACTIONLC_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Decreases the reference counter by one. If it reaches zero, commits the open
+// CommsDat transaction. If an error code is given as argument, the CommsDat
+// transaction is rolled back instead.
+// ---------------------------------------------------------------------------
+//
+void CCmmTransactionHandler::CommitTransactionL( TInt aError )
+    {
+    OstTraceFunctionEntry0( CCMTRANSACTIONHANDLER_COMMITTRANSACTIONL_ENTRY );
+
+    iRefCount--;
+    CleanupStack::Pop( this );
+
+    if ( !iRefCount )
+        {
+        if ( aError )
+            {
+            iDb.RollbackTransactionL();
+            }
+        else
+            {
+            iDb.CommitTransactionL();
+            }
+        }
+
+    OstTraceFunctionExit0( CCMTRANSACTIONHANDLER_COMMITTRANSACTIONL_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Performs RollbackTransactionL().
+// Pay attention to CleanupStack if calling this. The transaction handler
+// needs to be popped from CleanupStack manually.
+// ---------------------------------------------------------------------------
+//
+void CCmmTransactionHandler::Close()
+    {
+    OstTraceFunctionEntry0( CCMTRANSACTIONHANDLER_CLOSE_ENTRY );
+
+    if ( iRefCount == 0 )
+        {
+        // No active transaction, do nothing.
+        OstTraceFunctionExit0( DUP1_CCMTRANSACTIONHANDLER_CLOSE_EXIT );
+        return;
+        }
+
+    if ( !iDb.IsInTransaction() )
+        {
+        // Sometimes CommsDat closes the transaction on its own decision w/o any
+        // notification or reason. E.g. when you try to delete a non-existing
+        // record, it leaves with KErrNotFound, but rolls back the transaction.
+        iRefCount = 0;
+        }
+    else
+        {
+        iRefCount--;
+
+        if ( !iRefCount )
+            {
+            if ( iDb.IsInTransaction() )
+                {
+                TRAP_IGNORE( iDb.RollbackTransactionL() );
+                }
+            }
+        }
+
+    OstTraceFunctionExit0( DUP2_CCMTRANSACTIONHANDLER_CLOSE_EXIT );
+    }
+
+// ---------------------------------------------------------------------------
+// Return the current reference count. Transaction is currently open if the
+// count above 0.
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmmTransactionHandler::GetReferenceCount()
+    {
+    OstTraceFunctionEntry0( CCMTRANSACTIONHANDLER_GETREFERENCECOUNT_ENTRY );
+    OstTraceFunctionExit0( CCMTRANSACTIONHANDLER_GETREFERENCECOUNT_EXIT );
+    return iRefCount;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/traces/OstTraceDefinitions.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+// #define OST_TRACE_COMPILER_IN_USE
+#include <opensystemtrace.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmserver/traces/fixed_id.definitions	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,501 @@
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_FLOW=0x7
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ADDRESOURCEFILEL_ENTRY=0x99
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ADDRESOURCEFILEL_EXIT=0x9a
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ALLIAPSL_ENTRY=0xe2
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ALLIAPSL_EXIT=0xe3
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ALLOCREADL_ENTRY=0xa2
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ALLOCREADL_EXIT=0xa3
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_BEARERPRIORITYARRAYL_ENTRY=0x8f
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_BEARERPRIORITYARRAYL_EXIT=0x90
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_BUILDPLUGINARRAYL_ENTRY=0xcb
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_BUILDPLUGINARRAYL_EXIT=0xcc
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CCMMANAGERIMPL_ENTRY=0x87
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CCMMANAGERIMPL_EXIT=0x88
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CHECKTABLESL_ENTRY=0x8b
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CHECKTABLESL_EXIT=0x8c
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CLEANUPGLOBALPRIORITYARRAY_ENTRY=0x97
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CLEANUPGLOBALPRIORITYARRAY_EXIT=0x98
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_COMMITTRANSACTIONL_ENTRY=0xa8
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_COMMITTRANSACTIONL_EXIT=0xa9
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CONSTRUCTL_ENTRY=0xa4
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CONSTRUCTL_EXIT=0xa5
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_COPYBEARERPRIORITYARRAYL_ENTRY=0x91
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_COPYBEARERPRIORITYARRAYL_EXIT=0x92
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CREATEBEARERPRIORITYARRAYL_ENTRY=0x8d
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CREATEBEARERPRIORITYARRAYL_EXIT=0x8e
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_EASYWLANIDL_ENTRY=0xe0
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_EASYWLANIDL_EXIT=0xe1
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_FEATURESUPPORTED_ENTRY=0xdb
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_FINDRESOURCEFILE_ENTRY=0x9f
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_FINDRESOURCEFILE_EXIT=0xa0
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETBEARERINFOBOOLL_ENTRY=0xcf
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETBEARERINFOBOOLL_EXIT=0xd0
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETBEARERINFOINTL_ENTRY=0xcd
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETBEARERINFOINTL_EXIT=0xce
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETBEARERINFOSTRING8L_ENTRY=0xd3
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETBEARERINFOSTRING8L_EXIT=0xd4
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETBEARERINFOSTRINGL_ENTRY=0xd1
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETBEARERINFOSTRINGL_EXIT=0xd2
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETCONNECTIONMETHODINFOBOOLL_ENTRY=0xd6
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETCONNECTIONMETHODINFOBOOLL_EXIT=0xd7
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETCONNECTIONMETHODINFOINTL_ENTRY=0xd5
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETCONNECTIONMETHODINFOSTRING8L_ENTRY=0xd9
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETCONNECTIONMETHODINFOSTRINGL_ENTRY=0xd8
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETINTERNETDESTINATIONIDL_EXIT=0xfd
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GLOBALBEARERPRIORITY_ENTRY=0x95
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GLOBALBEARERPRIORITY_EXIT=0x96
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_HANDLEDEFCONNDELETEDL_ENTRY=0xe8
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_HANDLEDEFCONNDELETEDL_EXIT=0xe9
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ISEASYWLANL_ENTRY=0xdc
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ISEASYWLANL_EXIT=0xdd
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ISMEMORYLOW_ENTRY=0xf4
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ISMEMORYLOW_EXIT=0xf5
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_NEWL_ENTRY=0x85
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_NEWL_EXIT=0x86
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_OPENTRANSACTIONLC_ENTRY=0xa6
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_OPENTRANSACTIONLC_EXIT=0xa7
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_READDEFCONNL_ENTRY=0xee
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_READDEFCONNL_EXIT=0xef
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_READDEFCONNWOTRANSL_ENTRY=0xea
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_READDEFCONNWOTRANSL_EXIT=0xeb
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_REMOVERESOURCEFILE_ENTRY=0x9c
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_REMOVERESOURCEFILE_EXIT=0x9d
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_REPLACEDEFCONNRECORDL_ENTRY=0xf0
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_REPLACEDEFCONNRECORDL_EXIT=0xf1
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ROLLBACKTRANSACTION_ENTRY=0xaa
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ROLLBACKTRANSACTION_EXIT=0xab
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_SESSION_ENTRY=0xda
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_UPDATEBEARERPRIORITYARRAYL_ENTRY=0x93
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_UPDATEBEARERPRIORITYARRAYL_EXIT=0x94
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_WRITEDEFCONNL_ENTRY=0xf2
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_WRITEDEFCONNL_EXIT=0xf3
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_WRITEDEFCONNWOTRANSL_ENTRY=0xec
+[TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_WRITEDEFCONNWOTRANSL_EXIT=0xed
+[TRACE]TRACE_FLOW[0x7]_CCMMDELAYEDSHUTDOWN_CCMMDELAYEDSHUTDOWN_ENTRY=0x78
+[TRACE]TRACE_FLOW[0x7]_CCMMDELAYEDSHUTDOWN_CCMMDELAYEDSHUTDOWN_EXIT=0x79
+[TRACE]TRACE_FLOW[0x7]_CCMMDELAYEDSHUTDOWN_CONSTRUCTL_ENTRY=0x7a
+[TRACE]TRACE_FLOW[0x7]_CCMMDELAYEDSHUTDOWN_CONSTRUCTL_EXIT=0x7b
+[TRACE]TRACE_FLOW[0x7]_CCMMDELAYEDSHUTDOWN_DOCANCEL_ENTRY=0x81
+[TRACE]TRACE_FLOW[0x7]_CCMMDELAYEDSHUTDOWN_DOCANCEL_EXIT=0x82
+[TRACE]TRACE_FLOW[0x7]_CCMMDELAYEDSHUTDOWN_RUNL_ENTRY=0x83
+[TRACE]TRACE_FLOW[0x7]_CCMMDELAYEDSHUTDOWN_RUNL_EXIT=0x84
+[TRACE]TRACE_FLOW[0x7]_CCMMDELAYEDSHUTDOWN_START_ENTRY=0x7e
+[TRACE]TRACE_FLOW[0x7]_CCMMDELAYEDSHUTDOWN_START_EXIT=0x7f
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_CCMMINSTANCEMAPPING_ENTRY=0x1da
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_CCMMINSTANCEMAPPING_EXIT=0x1db
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_CONSTRUCTL_ENTRY=0x1dc
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_CONSTRUCTL_EXIT=0x1dd
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_GETCONNMETHODSL_ENTRY=0x1ed
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_GETCONNMETHODSL_EXIT=0x1ee
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_GETDESTINATIONSL_ENTRY=0x1ef
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_GETDESTINATIONSL_EXIT=0x1f0
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_NEWLC_ENTRY=0x1d8
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_NEWLC_EXIT=0x1d9
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_NEWL_ENTRY=0x1d6
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_NEWL_EXIT=0x1d7
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_READANDVALIDATECONNMETHODSL_ENTRY=0x1e5
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_READANDVALIDATECONNMETHODSL_EXIT=0x1e6
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_READANDVALIDATEDESTINATIONSL_ENTRY=0x1e7
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_READANDVALIDATEDESTINATIONSL_EXIT=0x1e8
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_REFRESHL_ENTRY=0x1de
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_REFRESHL_EXIT=0x1df
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_SESSION_ENTRY=0x1e4
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_VALIDCONNMETHODID_ENTRY=0x1e2
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_VALIDCONNMETHODID_EXIT=0x1e3
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_VALIDDESTINATIONID_ENTRY=0x1e0
+[TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_VALIDDESTINATIONID_EXIT=0x1e1
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_CCMMSERVER_ENTRY=0x61
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_CCMMSERVER_EXIT=0x62
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_CMMANAGER_ENTRY=0x76
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_CMMANAGER_EXIT=0x77
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_CONSTRUCTL_ENTRY=0x69
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_CONSTRUCTL_EXIT=0x6a
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_INCREMENTSESSIONS_ENTRY=0x6c
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_INCREMENTSESSIONS_EXIT=0x6d
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_NEWCONTAINERL_ENTRY=0x71
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_NEWLC_ENTRY=0x67
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_NEWLC_EXIT=0x68
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_NEWL_ENTRY=0x65
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_NEWL_EXIT=0x66
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_NEWSESSIONL_ENTRY=0x6b
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_REMOVECONTAINER_ENTRY=0x72
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_REMOVECONTAINER_EXIT=0x73
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_RUNERROR_ENTRY=0x74
+[TRACE]TRACE_FLOW[0x7]_CCMMSERVER_RUNERROR_EXIT=0x75
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CCMMSESSION_ENTRY=0x5
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CCMMSESSION_EXIT=0x6
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CLOSECONNMETHOD_ENTRY=0x5d
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CLOSECONNMETHOD_EXIT=0x5e
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CLOSEDESTINATION_ENTRY=0x35
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CLOSEDESTINATION_EXIT=0x36
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CONSTRUCTL_ENTRY=0x7
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CONSTRUCTL_EXIT=0x8
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CREATECONNMETHODL_ENTRY=0x59
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CREATECONNMETHODL_EXIT=0x5a
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CREATEDESTINATIONWITHNAMEANDIDL_ENTRY=0x2e
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CREATEDESTINATIONWITHNAMEANDIDL_EXIT=0x2f
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CREATEDESTINATIONWITHNAMEL_ENTRY=0x2c
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CREATEDESTINATIONWITHNAMEL_EXIT=0x2d
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_DELETECONNMETHODL_ENTRY=0x5f
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_DELETECONNMETHODL_EXIT=0x60
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_DESTINATIONDELETEL_ENTRY=0x55
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_DESTINATIONDELETEL_EXIT=0x56
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_DESTINATIONUPDATEL_ENTRY=0x53
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_DESTINATIONUPDATEL_EXIT=0x54
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETALLDESTINATIONSL_ENTRY=0x20
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETBEARERINFOBOOLL_ENTRY=0xf
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETBEARERINFOBOOLL_EXIT=0x10
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETBEARERINFOINTL_ENTRY=0xd
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETBEARERINFOINTL_EXIT=0xe
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETBEARERINFOSTRING8L_ENTRY=0x13
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETBEARERINFOSTRING8L_EXIT=0x14
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETBEARERINFOSTRINGL_ENTRY=0x11
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETBEARERINFOSTRINGL_EXIT=0x12
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETCONNECTIONMEHODCOUNTL_ENTRY=0x37
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETCONNECTIONMEHODCOUNTL_EXIT=0x38
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETCONNMETHODARRAYL_ENTRY=0x1d
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETCONNMETHODINFOBOOLL_ENTRY=0x17
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETCONNMETHODINFOBOOLL_EXIT=0x18
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETCONNMETHODINFOINTL_ENTRY=0x15
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETCONNMETHODINFOINTL_EXIT=0x16
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETCONNMETHODINFOSTRING8L_ENTRY=0x1b
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETCONNMETHODINFOSTRING8L_EXIT=0x1c
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETCONNMETHODINFOSTRINGL_ENTRY=0x19
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETCONNMETHODINFOSTRINGL_EXIT=0x1a
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETCONNMETHODPRIORITYL_ENTRY=0x39
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETCONNMETHODPRIORITYL_EXIT=0x3a
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETDESTINATIONELEMENTIDL_ENTRY=0x3f
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETDESTINATIONELEMENTIDL_EXIT=0x40
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETDESTINATIONIDL_ENTRY=0x3d
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETDESTINATIONIDL_EXIT=0x3e
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETDESTINATIONL_ENTRY=0x2a
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETDESTINATIONL_EXIT=0x2b
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETDESTINATIONMETADATAL_ENTRY=0x41
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETDESTINATIONMETADATAL_EXIT=0x42
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETDESTINATIONNAMEL_ENTRY=0x3b
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETDESTINATIONNAMEL_EXIT=0x3c
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETDESTINATIONPROTECTIONLEVELL_ENTRY=0x43
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETDESTINATIONPROTECTIONLEVELL_EXIT=0x44
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETEASYWLANIDL_ENTRY=0x23
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETEASYWLANIDL_EXIT=0x24
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETSUPPORTEDBEARERSL_ENTRY=0x25
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_ISDESTINATIONCONNECTEDL_ENTRY=0x45
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_ISDESTINATIONCONNECTEDL_EXIT=0x46
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_ISDESTINATIONHIDDENL_ENTRY=0x47
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_ISDESTINATIONHIDDENL_EXIT=0x48
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_MODIFYCMPRIORITYL_ENTRY=0x49
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_MODIFYCMPRIORITYL_EXIT=0x4a
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_NEWLC_ENTRY=0x3
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_NEWLC_EXIT=0x4
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_NEWL_ENTRY=0x1
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_NEWL_EXIT=0x2
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_SERVICECONNMETHODL_ENTRY=0x57
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_SERVICECONNMETHODL_EXIT=0x58
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_SERVICEDESTINATIONL_ENTRY=0x28
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_SERVICEDESTINATIONL_EXIT=0x29
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_SERVICEL_ENTRY=0xb
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_SERVICEL_EXIT=0xc
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_SETDESTINATIONHIDDENL_ENTRY=0x51
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_SETDESTINATIONHIDDENL_EXIT=0x52
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_SETDESTINATIONMETADATAL_ENTRY=0x4d
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_SETDESTINATIONMETADATAL_EXIT=0x4e
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_SETDESTINATIONNAMEL_ENTRY=0x4b
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_SETDESTINATIONNAMEL_EXIT=0x4c
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_SETDESTINATIONPROTECTIONL_ENTRY=0x4f
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_SETDESTINATIONPROTECTIONL_EXIT=0x50
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_UPDATECONNMETHODL_ENTRY=0x5b
+[TRACE]TRACE_FLOW[0x7]_CCMMSESSION_UPDATECONNMETHODL_EXIT=0x5c
+[TRACE]TRACE_FLOW[0x7]_CCMTRANSACTIONHANDLER_CLOSE_ENTRY=0x117
+[TRACE]TRACE_FLOW[0x7]_CCMTRANSACTIONHANDLER_CLOSE_EXIT=0x118
+[TRACE]TRACE_FLOW[0x7]_CCMTRANSACTIONHANDLER_COMMITTRANSACTIONL_ENTRY=0x115
+[TRACE]TRACE_FLOW[0x7]_CCMTRANSACTIONHANDLER_COMMITTRANSACTIONL_EXIT=0x116
+[TRACE]TRACE_FLOW[0x7]_CCMTRANSACTIONHANDLER_CONSTRUCTL_ENTRY=0x10f
+[TRACE]TRACE_FLOW[0x7]_CCMTRANSACTIONHANDLER_CONSTRUCTL_EXIT=0x110
+[TRACE]TRACE_FLOW[0x7]_CCMTRANSACTIONHANDLER_NEWL_ENTRY=0x10c
+[TRACE]TRACE_FLOW[0x7]_CCMTRANSACTIONHANDLER_NEWL_EXIT=0x10d
+[TRACE]TRACE_FLOW[0x7]_CCMTRANSACTIONHANDLER_OPENTRANSACTIONLC_ENTRY=0x113
+[TRACE]TRACE_FLOW[0x7]_CCMTRANSACTIONHANDLER_OPENTRANSACTIONLC_EXIT=0x114
+[TRACE]TRACE_FLOW[0x7]_CDESTINATION_CDESTINATION_ENTRY=0x1d2
+[TRACE]TRACE_FLOW[0x7]_CDESTINATION_CDESTINATION_EXIT=0x1d3
+[TRACE]TRACE_FLOW[0x7]_CDESTINATION_CONSTRUCTL_ENTRY=0x1d4
+[TRACE]TRACE_FLOW[0x7]_CDESTINATION_CONSTRUCTL_EXIT=0x1d5
+[TRACE]TRACE_FLOW[0x7]_CDESTINATION_NEWLC_ENTRY=0x1d0
+[TRACE]TRACE_FLOW[0x7]_CDESTINATION_NEWLC_EXIT=0x1d1
+[TRACE]TRACE_FLOW[0x7]_CDESTINATION_NEWL_ENTRY=0x1ce
+[TRACE]TRACE_FLOW[0x7]_CDESTINATION_NEWL_EXIT=0x1cf
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMMANAGERIMPL_ADDRESOURCEFILEL_EXIT=0x9b
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMMANAGERIMPL_CCMMANAGERIMPL_ENTRY=0x89
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMMANAGERIMPL_CCMMANAGERIMPL_EXIT=0x8a
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMMANAGERIMPL_FINDRESOURCEFILE_EXIT=0xa1
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMMANAGERIMPL_ISEASYWLANL_EXIT=0xde
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMMANAGERIMPL_REMOVERESOURCEFILE_EXIT=0x9e
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMMDELAYEDSHUTDOWN_CCMMDELAYEDSHUTDOWN_ENTRY=0x7c
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMMDELAYEDSHUTDOWN_CCMMDELAYEDSHUTDOWN_EXIT=0x7d
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMMDELAYEDSHUTDOWN_START_EXIT=0x80
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMMSERVER_CCMMSERVER_ENTRY=0x63
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMMSERVER_CCMMSERVER_EXIT=0x64
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMMSESSION_CCMMSESSION_ENTRY=0x9
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMMSESSION_CCMMSESSION_EXIT=0xa
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMMSESSION_GETALLDESTINATIONSL_EXIT=0x22
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMMSESSION_GETCONNMETHODARRAYL_EXIT=0x1f
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMMSESSION_GETSUPPORTEDBEARERSL_EXIT=0x27
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMTRANSACTIONHANDLER_CCMTRANSACTIONHANDLER_ENTRY=0x111
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMTRANSACTIONHANDLER_CCMTRANSACTIONHANDLER_EXIT=0x112
+[TRACE]TRACE_FLOW[0x7]_DUP1_CCMTRANSACTIONHANDLER_CLOSE_EXIT=0x119
+[TRACE]TRACE_FLOW[0x7]_DUP2_CCMMANAGERIMPL_ISEASYWLANL_EXIT=0xdf
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_BEARERRECORDIDLC_ENTRY=0x1bc
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_BEARERRECORDIDLC_EXIT=0x1bd
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_CANHANDLEIAPIDL_ENTRY=0x1b6
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_CANHANDLEIAPIDL_EXIT=0x1b7
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_CCMCONNECTIONMETHODINFO_ENTRY=0x1a0
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_CCMCONNECTIONMETHODINFO_EXIT=0x1a1
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_CONSTRUCTL_ENTRY=0x1a2
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_CONSTRUCTL_EXIT=0x1a3
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_COPYADDITIONALDATAL_ENTRY=0x1c2
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_COPYADDITIONALDATAL_EXIT=0x1c3
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_CREATECOPYL_ENTRY=0x1c6
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_CREATECOPYL_EXIT=0x1c7
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_CREATEINSTANCEL_ENTRY=0x1c4
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_CREATEINSTANCEL_EXIT=0x1c5
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_CREATENEWSERVICERECORDL_ENTRY=0x1be
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_CREATENEWSERVICERECORDL_EXIT=0x1bf
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_GETCONNECTIONINFOBOOLL_ENTRY=0x1ac
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_GETCONNECTIONINFOBOOLL_EXIT=0x1ad
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_GETCONNECTIONINFOINTL_ENTRY=0x1aa
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_GETCONNECTIONINFOINTL_EXIT=0x1ab
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_GETCONNECTIONINFOSTRING8L_ENTRY=0x1b0
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_GETCONNECTIONINFOSTRING8L_EXIT=0x1b1
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_GETCONNECTIONINFOSTRINGL_ENTRY=0x1ae
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_GETCONNECTIONINFOSTRINGL_EXIT=0x1af
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_INITIALIZEWITHUIL_ENTRY=0x1b4
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_INITIALIZEWITHUIL_EXIT=0x1b5
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_NEWLC_ENTRY=0x1a6
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_NEWLC_EXIT=0x1a7
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_NEWL_ENTRY=0x1a4
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_NEWL_EXIT=0x1a5
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_RESETANDLOADL_ENTRY=0x1c0
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_RESETANDLOADL_EXIT=0x1c1
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_RESETIFINMEMORY_ENTRY=0x1c8
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_RESETIFINMEMORY_EXIT=0x1c9
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_RUNSETTINGSL_ENTRY=0x1b2
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_RUNSETTINGSL_EXIT=0x1b3
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_SERVICERECORDIDLC_ENTRY=0x1ba
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMCONNECTIONMETHODINFO_SERVICERECORDIDLC_EXIT=0x1bb
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONDATA_CCMDESTINATIONDATA=0x125
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONDATA_CMMGR_ENTRY=0x18c
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONDATA_CMMGR_EXIT=0x18d
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONDATA_CONNECTIONMETHODCOUNT_ENTRY=0x141
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONDATA_CONNECTIONMETHODCOUNT_EXIT=0x142
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONDATA_IDISVALID_ENTRY=0x188
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONDATA_IDISVALID_EXIT=0x189
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONDATA_ISHIDDEN_ENTRY=0x170
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONDATA_ISHIDDEN_EXIT=0x171
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONDATA_METADATAL_ENTRY=0x16b
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONDATA_METADATAL_EXIT=0x16c
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONDATA_PROTECTIONLEVEL_ENTRY=0x147
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONDATA_RESETANDDESTROYARRAY_ENTRY=0x176
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONDATA_RESETANDDESTROYARRAY_EXIT=0x177
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_ADDTOARRAYL_ENTRY=0x144
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_ADDTOARRAYL_EXIT=0x145
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CCMDESTINATIONIMPL=0x124
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CHECKIFDESTINATIONIDEXISTSL_ENTRY=0x130
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CHECKIFDESTINATIONIDEXISTSL_EXIT=0x131
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CHECKIFDESTINATIONNAMEEXISTL_ENTRY=0x132
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CHECKIFDESTINATIONNAMEEXISTL_EXIT=0x133
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CHECKIFEMBEDDEDL_ENTRY=0x151
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CHECKIFEMBEDDEDL_EXIT=0x152
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CHECKIFINTERNETEXISTSL_ENTRY=0x17f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CHECKIFINTERNETEXISTSL_EXIT=0x180
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CHECKIFLOCALISEDDESTEXISTL_ENTRY=0x190
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CHECKIFLOCALISEDDESTEXISTL_EXIT=0x191
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CHECKIFNAMEMODIFIEDL_ENTRY=0x17a
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CHECKIFNAMEMODIFIEDL_EXIT=0x17b
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CHECKIFPURPOSEEXISTL_ENTRY=0x192
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CHECKIFPURPOSEEXISTL_EXIT=0x193
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CLEANUPEMBEDDEDL_ENTRY=0x165
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CLEANUPEMBEDDEDL_EXIT=0x166
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CLEANUPSNAPMETADATATABLEL_ENTRY=0x167
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CLEANUPSNAPMETADATATABLEL_EXIT=0x168
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CMMGR_ENTRY=0x18e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CMMGR_EXIT=0x18f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_COMMITTRANSACTIONL_ENTRY=0x139
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_COMMITTRANSACTIONL_EXIT=0x13a
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CONNECTIONMETHODCOUNT_ENTRY=0x143
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CONSTRUCTL_ENTRY=0x12a
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CONSTRUCTL_EXIT=0x12b
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_CREATEDESTINATIONAPTAGIDL_ENTRY=0x157
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_DELETEIAPRECORDSL_ENTRY=0x178
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_DELETEIAPRECORDSL_EXIT=0x179
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_DELETELD_ENTRY=0x14d
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_DELETELD_EXIT=0x14e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_DELETERELATEDRECORDSL_ENTRY=0x14f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_DELETERELATEDRECORDSL_EXIT=0x150
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_GETDATA_ENTRY=0x184
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_GETDATA_EXIT=0x185
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_GETDESTINATIONAPTAGID_ENTRY=0x158
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_IDISVALID_ENTRY=0x18a
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_IDISVALID_EXIT=0x18b
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_INITIALIZEDESTAPRECORDL_ENTRY=0x194
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_INITIALIZEDESTAPRECORDL_EXIT=0x195
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_ISCONNECTEDL_ENTRY=0x17d
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_ISCONNECTEDL_EXIT=0x17e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_ISHIDDEN_ENTRY=0x173
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_LOADDESTAPRECORDL_ENTRY=0x163
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_LOADDESTAPRECORDL_EXIT=0x164
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_LOADNETWORKRECORDL_ENTRY=0x161
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_LOADNETWORKRECORDL_EXIT=0x162
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_LOADSNAPMETADATATABLEL_ENTRY=0x15f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_LOADSNAPMETADATATABLEL_EXIT=0x160
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_METADATAL=0x16d
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_NAMELC_ENTRY=0x13d
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_NAMELC_EXIT=0x13e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_NEWLC_ENTRY=0x122
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_NEWLC_EXIT=0x123
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_NEWL_ENTRY=0x11a
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_NEWL_EXIT=0x11b
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_OPENTRANSACTIONLC_ENTRY=0x137
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_OPENTRANSACTIONLC_EXIT=0x138
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_PROTECTIONLEVELL_ENTRY=0x181
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_PROTECTIONLEVELL_EXIT=0x182
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_PROTECTIONLEVEL_ENTRY=0x148
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_ROLLBACKTRANSACTION_ENTRY=0x13b
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_ROLLBACKTRANSACTION_EXIT=0x13c
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SESSION_ENTRY=0x136
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETATTRIBUTE_ENTRY=0x159
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETATTRIBUTE_EXIT=0x15a
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETDATA_ENTRY=0x186
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETDATA_EXIT=0x187
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETDEFAULTCPRL_ENTRY=0x19a
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETDEFAULTCPRL_EXIT=0x19b
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETDEFAULTMCPRL_ENTRY=0x198
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETDEFAULTMCPRL_EXIT=0x199
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETDEFAULTPROTOCOLL_ENTRY=0x19e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETDEFAULTPROTOCOLL_EXIT=0x19f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETDEFAULTSCPRL_ENTRY=0x19c
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETDEFAULTSCPRL_EXIT=0x19d
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETDEFAULTTIERMANAGERL_ENTRY=0x196
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETDEFAULTTIERMANAGERL_EXIT=0x197
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETHIDDENL_ENTRY=0x174
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETHIDDENL_EXIT=0x175
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETIDL_ENTRY=0x12e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETIDL_EXIT=0x12f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETMETADATAL=0x16e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETMETADATAL_EXIT=0x16f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETNAMEL_ENTRY=0x13f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETNAMEL_EXIT=0x140
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETPROTECTIONL_ENTRY=0x149
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SETPROTECTIONL_EXIT=0x14a
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SORTRECORDSBYPRIORITY_ENTRY=0x169
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_SORTRECORDSBYPRIORITY_EXIT=0x16a
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_UPDATEDESTAPRECORDL_ENTRY=0x155
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_UPDATEDESTAPRECORDL_EXIT=0x156
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_UPDATEL_ENTRY=0x14b
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_UPDATEL_EXIT=0x14c
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_UPDATENETWORKRECORDL_ENTRY=0x153
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_UPDATENETWORKRECORDL_EXIT=0x154
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_UPDATESNAPMETADATATABLEL_ENTRY=0x15d
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_UPDATESNAPMETADATATABLEL_EXIT=0x15e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_UPDATESNAPTABLEL_ENTRY=0x15b
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMDESTINATIONIMPL_UPDATESNAPTABLEL_EXIT=0x15c
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ALLDESTINATIONSL_ENTRY=0xc2
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ALLDESTINATIONSL_EXIT=0xc3
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ALLSNAPRECORDSL_ENTRY=0xe4
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ALLSNAPRECORDSL_EXIT=0xe5
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_BEARERTYPEFROMCMIDL_ENTRY=0xbe
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_BEARERTYPEFROMCMIDL_EXIT=0xbf
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_BEARERTYPEFROMIAPRECORDL_ENTRY=0xc0
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_BEARERTYPEFROMIAPRECORDL_EXIT=0xc1
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CONNECTIONMETHODL_ENTRY=0xb7
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CONNECTIONMETHODL_EXIT=0xb8
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CONNMETHODUPDATED_ENTRY=0x105
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CONNMETHODUPDATED_EXIT=0x106
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CREATECONNECTIONMETHODL_ENTRY=0xae
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CREATECONNECTIONMETHODL_EXIT=0xb0
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CREATECONNMETHODL_ENTRY=0xff
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CREATEDESTINATIONL_ENTRY=0xac
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CREATESNAPRECORDL_ENTRY=0xf8
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_CREATESNAPRECORDL_EXIT=0xf9
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_DESTINATIONL_ENTRY=0xc4
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_DESTINATIONPROTECTIONLEVELL_ENTRY=0x107
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_DOCREATECONNECTIONMETHODL_ENTRY=0xb1
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_DOCREATECONNECTIONMETHODL_EXIT=0xb2
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_DOFINDCONNMETHL_ENTRY=0xbb
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_DOFINDCONNMETHL_EXIT=0xbc
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_DOFINDCONNMETHODL_ENTRY=0xb9
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_DOFINDCONNMETHODL_EXIT=0xba
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETALLDESTINATIONSL_ENTRY=0x10a
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETALLDESTINATIONSL_EXIT=0x10b
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETCONNECTIONMETHODL_ENTRY=0xb5
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETCONNECTIONMETHODL_EXIT=0xb6
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETCONNECTIONMETHODOBJECTL_ENTRY=0xb3
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETCONNECTIONMETHODOBJECTL_EXIT=0xb4
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETCONNMETHODL_ENTRY=0xfe
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETDEFCONNL_ENTRY=0x101
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETDEFCONNL_EXIT=0x102
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_GETINTERNETDESTINATIONIDL_ENTRY=0xfc
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_HASUNPROTECTEDDESTINATIONSL_ENTRY=0xc9
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_HASUNPROTECTEDDESTINATIONSL_EXIT=0xca
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_IAPLINKEDL_ENTRY=0x100
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ISDESTINATIONCONNECTEDL_ENTRY=0x109
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ISDESTINATIONHIDDENL_ENTRY=0x108
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ISIAPLINKEDL_ENTRY=0xe6
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_ISIAPLINKEDL_EXIT=0xe7
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_NUMOFCONNMETHODREFERENCESL_ENTRY=0xc7
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_NUMOFCONNMETHODREFERENCESL_EXIT=0xc8
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_NUMOFCONNMETHODREFSL_ENTRY=0x103
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_NUMOFCONNMETHODREFSL_EXIT=0x104
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_PARENTDESTINATIONL_ENTRY=0xfa
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_PARENTDESTINATIONL_EXIT=0xfb
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_SNAPRECORDL_ENTRY=0xf6
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_SNAPRECORDL_EXIT=0xf7
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_SUPPORTEDBEARERSL_ENTRY=0xc5
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMANAGERIMPL_SUPPORTEDBEARERSL_EXIT=0xc6
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_ADDTODESTINATIONSCONNMETHODARRAYL_ENTRY=0x1e9
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMINSTANCEMAPPING_ADDTODESTINATIONSCONNMETHODARRAYL_EXIT=0x1ea
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMSERVER_DECREMENTSESSIONS_ENTRY=0x6e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMSERVER_DECREMENTSESSIONS_EXIT=0x6f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CHECKIFDESTINATIONEXISTSL_ENTRY=0x32
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CHECKIFDESTINATIONEXISTSL_EXIT=0x33
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CONVERTDESTIDIFNEEDED_ENTRY=0x30
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMSESSION_CONVERTDESTIDIFNEEDED_EXIT=0x31
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETALLDESTINATIONSL_EXIT=0x21
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETCONNMETHODARRAYL_EXIT=0x1e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMMSESSION_GETSUPPORTEDBEARERSL_EXIT=0x26
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCMTRANSACTIONHANDLER_CCMTRANSACTIONHANDLER=0x10e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCONNMETHOD_CCONNMETHOD_ENTRY=0x1ca
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_CCONNMETHOD_CCONNMETHOD_EXIT=0x1cb
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCCMDESTINATIONIMPL_NEWL_ENTRY=0x11c
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMCONNECTIONMETHODINFO_CANHANDLEIAPIDL_ENTRY=0x1b8
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMCONNECTIONMETHODINFO_CANHANDLEIAPIDL_EXIT=0x1b9
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMCONNECTIONMETHODINFO_CCMCONNECTIONMETHODINFO_ENTRY=0x1a8
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMCONNECTIONMETHODINFO_CCMCONNECTIONMETHODINFO_EXIT=0x1a9
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMDESTINATIONDATA_CCMDESTINATIONDATA_ENTRY=0x126
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMDESTINATIONDATA_CCMDESTINATIONDATA_EXIT=0x127
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMDESTINATIONDATA_ISHIDDEN_EXIT=0x172
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMDESTINATIONIMPL_ADDTOARRAYL_EXIT=0x146
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMDESTINATIONIMPL_CCMDESTINATIONIMPL_ENTRY=0x128
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMDESTINATIONIMPL_CCMDESTINATIONIMPL_EXIT=0x129
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMDESTINATIONIMPL_CHECKIFNAMEMODIFIEDL_EXIT=0x17c
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMDESTINATIONIMPL_CONSTRUCTL_ENTRY=0x12c
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMDESTINATIONIMPL_CONSTRUCTL_EXIT=0x12d
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMDESTINATIONIMPL_NEWL_EXIT=0x11d
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMMANAGERIMPL_CREATECONNECTIONMETHODL_ENTRY=0xaf
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMMANAGERIMPL_CREATEDESTINATIONL_ENTRY=0xad
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMMANAGERIMPL_DOFINDCONNMETHL_EXIT=0xbd
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMMINSTANCEMAPPING_ADDTODESTINATIONSCONNMETHODARRAYL_EXIT=0x1eb
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMMINSTANCEMAPPING_GETCONNMETHODSL_ENTRY=0x1f1
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMMINSTANCEMAPPING_GETCONNMETHODSL_EXIT=0x1f2
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMMSERVER_DECREMENTSESSIONS_EXIT=0x70
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCMMSESSION_CHECKIFDESTINATIONEXISTSL_EXIT=0x34
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCONNMETHOD_CCONNMETHOD_ENTRY=0x1cc
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP1_CCONNMETHOD_CCONNMETHOD_EXIT=0x1cd
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP2_CCMDESTINATIONIMPL_CONSTRUCTL_ENTRY=0x134
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP2_CCMDESTINATIONIMPL_CONSTRUCTL_EXIT=0x135
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP2_CCMDESTINATIONIMPL_NEWL_ENTRY=0x11e
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP2_CCMDESTINATIONIMPL_NEWL_EXIT=0x11f
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP2_CCMDESTINATIONIMPL_PROTECTIONLEVEL_ENTRY=0x183
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP2_CCMMINSTANCEMAPPING_ADDTODESTINATIONSCONNMETHODARRAYL_EXIT=0x1ec
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP3_CCMDESTINATIONIMPL_NEWL_ENTRY=0x120
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x7]_DUP3_CCMDESTINATIONIMPL_NEWL_EXIT=0x121
+[[OBSOLETE]][TRACE]TRACE_NORMAL[0x3]_CCMMINSTANCEMAPPING_READANDVALIDATEDESTINATIONSL=0x1
--- a/cmmanager/cmmgr/database/rom/cmmanagerdatabase.iby	Fri Apr 16 15:21:37 2010 +0300
+++ b/cmmanager/cmmgr/database/rom/cmmanagerdatabase.iby	Mon May 03 12:53:07 2010 +0300
@@ -14,13 +14,12 @@
 * Description:
 *
 */
-#ifndef __CMMANAGERDATABASE_IBY__
-#define __CMMANAGERDATABASE_IBY__
 
+#ifndef CMMANAGERDATABASE_IBY__
+#define CMMANAGERDATABASE_IBY__
 
 file=ABI_DIR\BUILD_DIR\cmmanagerdatabase.dll     SHARED_LIB_DIR\cmmanagerdatabase.dll
 
 
+#endif // CMMANAGERDATABASE_IBY__
 
-#endif // __CMMANAGERDATABASE_IBY__
-
--- a/cmmanager/cmmgr/database/src/cmmanagertableformats.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/cmmanager/cmmgr/database/src/cmmanagertableformats.cpp	Mon May 03 12:53:07 2010 +0300
@@ -97,8 +97,8 @@
 	X_REGISTER_ATTRIBUTE( CCDDefConnRecord,   iDefConnType,         TMDBNum )
 	X_REGISTER_ATTRIBUTE( CCDDefConnRecord,   iDefConnUid,          TMDBNum )
 	X_REGISTER_ATTRIBUTE( CCDDefConnRecord,   iUsageOfWlan,      TMDBNum )
-        X_REGISTER_ATTRIBUTE( CCDDefConnRecord,   iCellularDataUsageHome,  TMDBNum )
-        X_REGISTER_ATTRIBUTE( CCDDefConnRecord,   iCellularDataUsageVisitor,  TMDBNum )
+    X_REGISTER_ATTRIBUTE( CCDDefConnRecord,   iCellularDataUsageHome,  TMDBNum )
+    X_REGISTER_ATTRIBUTE( CCDDefConnRecord,   iCellularDataUsageVisitor,  TMDBNum )
     X_REGISTER_ATTRIBUTE( CCDRecordBase,      iRecordTag,           TMDBNum )
 	X_REGISTER_ATTRIBUTE( CCDRecordBase,      iRecordName,          TMDBText )
 END_ATTRIBUTE_TABLE()
--- a/cmmanager/cmmgr/group/bld.inf	Fri Apr 16 15:21:37 2010 +0300
+++ b/cmmanager/cmmgr/group/bld.inf	Mon May 03 12:53:07 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006-2010 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"
@@ -11,7 +11,8 @@
 *
 * Contributors:
 *
-* Description:  Build information for the Connection Method Manager
+* Description:
+* Build information for the Connection Method Manager.
 *
 */
 
@@ -22,26 +23,13 @@
 DEFAULT
 
 PRJ_EXPORTS
-// export iby files
-../Rom/CmManager.iby				CORE_MW_LAYER_IBY_EXPORT_PATH(CmManager.iby)
-../Rom/CmManagerResources.iby			LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(CmManagerResources.iby)
-
-../Rom/cmpluginembdestination.iby		CORE_MW_LAYER_IBY_EXPORT_PATH(cmpluginembdestination.iby)
-../Rom/cmpluginembdestinationresources.iby	LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(cmpluginembdestinationresources.iby)
-
-../Rom/cmpluginpacketdata.iby			CORE_MW_LAYER_IBY_EXPORT_PATH(cmpluginpacketdata.iby)
-../Rom/cmpluginpacketdataresources.iby		LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(cmpluginpacketdataresources.iby)
-
-../Rom/cmpluginvpn.iby				CORE_MW_LAYER_IBY_EXPORT_PATH(cmpluginvpn.iby)
-../Rom/cmpluginvpnresources.iby			LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(cmpluginvpnresources.iby)
-
-../Rom/cmpluginwlan.iby				CORE_MW_LAYER_IBY_EXPORT_PATH(cmpluginwlan.iby)
-../Rom/cmpluginwlanresources.iby		LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(cmpluginwlanresources.iby)
-
 
 PRJ_MMPFILES
-// None
+#include "../database/group/bld.inf"
+#include "../cmmapi/group/bld.inf"
+#include "../cmmpluginbase/group/bld.inf"
+#include "../cmmserver/group/bld.inf"
+#include "../cmmplugins/group/bld.inf"
 
-#include "../database/group/bld.inf"
-#include "../Framework/Group/bld.inf"
-#include "../Plugins/Group/bld.inf"
+PRJ_TESTMMPFILES
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/bwins/connection_settings_shimu.def	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,42 @@
+EXPORTS
+	?setString8Attribute@CmConnectionMethodShim@@QAEXW4ConnectionMethodAttribute@CMManagerShim@@VQString@@@Z @ 1 NONAME ; void CmConnectionMethodShim::setString8Attribute(enum CMManagerShim::ConnectionMethodAttribute, class QString)
+	?getString8Attribute@CmConnectionMethodShim@@QBE?AVQString@@W4ConnectionMethodAttribute@CMManagerShim@@@Z @ 2 NONAME ; class QString CmConnectionMethodShim::getString8Attribute(enum CMManagerShim::ConnectionMethodAttribute) const
+	?connectionMethodCount@CmDestinationShim@@QBEHXZ @ 3 NONAME ; int CmDestinationShim::connectionMethodCount(void) const
+	?modifyPriority@CmDestinationShim@@QAEXPAVCmConnectionMethodShim@@H@Z @ 4 NONAME ; void CmDestinationShim::modifyPriority(class CmConnectionMethodShim *, int)
+	?setBoolAttribute@CmConnectionMethodShim@@QAEXW4ConnectionMethodAttribute@CMManagerShim@@_N@Z @ 5 NONAME ; void CmConnectionMethodShim::setBoolAttribute(enum CMManagerShim::ConnectionMethodAttribute, bool)
+	?createConnectionMethod@CmManagerShim@@QAEPAVCmConnectionMethodShim@@I@Z @ 6 NONAME ; class CmConnectionMethodShim * CmManagerShim::createConnectionMethod(unsigned int)
+	?getIntAttribute@CmConnectionMethodShim@@QBEIW4ConnectionMethodAttribute@CMManagerShim@@@Z @ 7 NONAME ; unsigned int CmConnectionMethodShim::getIntAttribute(enum CMManagerShim::ConnectionMethodAttribute) const
+	?isHidden@CmDestinationShim@@QBE_NXZ @ 8 NONAME ; bool CmDestinationShim::isHidden(void) const
+	?setIntAttribute@CmConnectionMethodShim@@QAEXW4ConnectionMethodAttribute@CMManagerShim@@I@Z @ 9 NONAME ; void CmConnectionMethodShim::setIntAttribute(enum CMManagerShim::ConnectionMethodAttribute, unsigned int)
+	?update@CmDestinationShim@@QAEXXZ @ 10 NONAME ; void CmDestinationShim::update(void)
+	?setStringAttribute@CmConnectionMethodShim@@QAEXW4ConnectionMethodAttribute@CMManagerShim@@VQString@@@Z @ 11 NONAME ; void CmConnectionMethodShim::setStringAttribute(enum CMManagerShim::ConnectionMethodAttribute, class QString)
+	??0CmConnectionMethodShim@@QAE@AAVRCmConnectionMethod@@@Z @ 12 NONAME ; CmConnectionMethodShim::CmConnectionMethodShim(class RCmConnectionMethod &)
+	?deleteDestination@CmDestinationShim@@QAEXXZ @ 13 NONAME ; void CmDestinationShim::deleteDestination(void)
+	?metadata@CmDestinationShim@@QBEIW4SnapMetadataField@CMManagerShim@@@Z @ 14 NONAME ; unsigned int CmDestinationShim::metadata(enum CMManagerShim::SnapMetadataField) const
+	?destination@CmManagerShim@@QBEPAVCmDestinationShim@@I@Z @ 15 NONAME ; class CmDestinationShim * CmManagerShim::destination(unsigned int) const
+	?getBoolAttribute@CmConnectionMethodShim@@QBE_NW4ConnectionMethodAttribute@CMManagerShim@@@Z @ 16 NONAME ; bool CmConnectionMethodShim::getBoolAttribute(enum CMManagerShim::ConnectionMethodAttribute) const
+	?connectionMethod@CmManagerShim@@QBEPAVCmConnectionMethodShim@@I@Z @ 17 NONAME ; class CmConnectionMethodShim * CmManagerShim::connectionMethod(unsigned int) const
+	?connectionMethod@CmManagerShim@@QBEXAAV?$QList@I@@_N@Z @ 18 NONAME ; void CmManagerShim::connectionMethod(class QList<unsigned int> &, bool) const
+	?update@CmConnectionMethodShim@@QAEXXZ @ 19 NONAME ; void CmConnectionMethodShim::update(void)
+	?name@CmDestinationShim@@QBE?AVQString@@XZ @ 20 NONAME ; class QString CmDestinationShim::name(void) const
+	?allDestinations@CmManagerShim@@QBEXAAV?$QList@I@@@Z @ 21 NONAME ; void CmManagerShim::allDestinations(class QList<unsigned int> &) const
+	??1CmManagerShim@@QAE@XZ @ 22 NONAME ; CmManagerShim::~CmManagerShim(void)
+	?protectionLevel@CmDestinationShim@@QBE?AW4CmmProtectionLevel@CMManagerShim@@XZ @ 23 NONAME ; enum CMManagerShim::CmmProtectionLevel CmDestinationShim::protectionLevel(void) const
+	?getStringAttribute@CmConnectionMethodShim@@QBE?AVQString@@W4ConnectionMethodAttribute@CMManagerShim@@@Z @ 24 NONAME ; class QString CmConnectionMethodShim::getStringAttribute(enum CMManagerShim::ConnectionMethodAttribute) const
+	?id@CmDestinationShim@@QBEIXZ @ 25 NONAME ; unsigned int CmDestinationShim::id(void) const
+	??0CmManagerShim@@QAE@XZ @ 26 NONAME ; CmManagerShim::CmManagerShim(void)
+	??1CmConnectionMethodShim@@QAE@XZ @ 27 NONAME ; CmConnectionMethodShim::~CmConnectionMethodShim(void)
+	?connectionMethodByID@CmDestinationShim@@QBEPAVCmConnectionMethodShim@@I@Z @ 28 NONAME ; class CmConnectionMethodShim * CmDestinationShim::connectionMethodByID(unsigned int) const
+	??0CmDestinationShim@@QAE@AAVRCmDestination@@@Z @ 29 NONAME ; CmDestinationShim::CmDestinationShim(class RCmDestination &)
+	?connectionMethod@CmDestinationShim@@QBEPAVCmConnectionMethodShim@@H@Z @ 30 NONAME ; class CmConnectionMethodShim * CmDestinationShim::connectionMethod(int) const
+	?addConnectionMethod@CmDestinationShim@@QAEHPAVCmConnectionMethodShim@@@Z @ 31 NONAME ; int CmDestinationShim::addConnectionMethod(class CmConnectionMethodShim *)
+	?deleteConnectionMethod@CmDestinationShim@@QAEXPAVCmConnectionMethodShim@@@Z @ 32 NONAME ; void CmDestinationShim::deleteConnectionMethod(class CmConnectionMethodShim *)
+	?deleteConnectionMethod@CmConnectionMethodShim@@QAE_NXZ @ 33 NONAME ; bool CmConnectionMethodShim::deleteConnectionMethod(void)
+	?priority@CmDestinationShim@@QBEIPAVCmConnectionMethodShim@@@Z @ 34 NONAME ; unsigned int CmDestinationShim::priority(class CmConnectionMethodShim *) const
+	?setName@CmDestinationShim@@QAEXVQString@@@Z @ 35 NONAME ; void CmDestinationShim::setName(class QString)
+	??1CmDestinationShim@@QAE@XZ @ 36 NONAME ; CmDestinationShim::~CmDestinationShim(void)
+	?removeConnectionMethod@CmDestinationShim@@QAEXPAVCmConnectionMethodShim@@@Z @ 37 NONAME ; void CmDestinationShim::removeConnectionMethod(class CmConnectionMethodShim *)
+	?createDestination@CmManagerShim@@QAEPAVCmDestinationShim@@VQString@@@Z @ 38 NONAME ; class CmDestinationShim * CmManagerShim::createDestination(class QString)
+	?refresh@CmConnectionMethodShim@@QAEXXZ @ 39 NONAME ; void CmConnectionMethodShim::refresh(void)
+	?refresh@CmDestinationShim@@QAEXXZ @ 40 NONAME ; void CmDestinationShim::refresh(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/connection_settings_shim.pro	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,72 @@
+#
+# Copyright (c) 2010 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:
+# Connection Settings Shim project file.
+#
+
+TEMPLATE = lib
+TARGET = connection_settings_shim
+TARGET.CAPABILITY = ALL -TCB
+
+#BUILD_DLL macro is used to define export macro
+DEFINES += BUILD_CONNECTIONSETTINGSSHIMDLL_DLL
+DEPENDPATH += .
+
+# Temporary solution to fix tracecompiler
+# When tracecompiler is fixed, this can be removed
+symbian: {
+    MMP_RULES += "USERINCLUDE traces"
+}
+
+#Store generated files to their own directory
+MOC_DIR = build
+RCC_DIR = build
+
+symbian*::LIBS += -lcmmanager
+
+# Sources
+HEADERS += \
+    ../../ipcm_plat/connection_settings_shim_api/inc/cmconnectionmethod_shim.h \
+    inc/cmconnectionmethod_shim_s60_p.h \
+    ../../ipcm_plat/connection_settings_shim_api/inc/cmdestination_shim.h \
+    inc/cmdestination_shim_s60_p.h \
+    ../../ipcm_plat/connection_settings_shim_api/inc/cmmanager_shim.h \
+    inc/cmmanager_shim_s60_p.h \
+    ../../ipcm_plat/connection_settings_shim_api/inc/cmmanagerdefines_shim.h \
+    traces/OstTraceDefinitions.h
+    
+SOURCES += \
+    src/cmconnectionmethod_shim.cpp \
+    src/cmconnectionmethod_shim_s60.cpp \
+    src/cmdestination_shim.cpp \
+    src/cmdestination_shim_s60.cpp \
+    src/cmmanager_shim.cpp \
+    src/cmmanager_shim_s60.cpp
+
+# Temporary export directory definition
+# This can be removed when the default has changed to "." from ".."
+mmpRuleDeffile = \
+    "$${LITERAL_HASH}ifdef WINSCW" \
+    "DEFFILE ./bwins/connection_settings_shim.def" \
+    "$${LITERAL_HASH}else" \
+    "DEFFILE ./eabi/connection_settings_shim.def" \
+    "$${LITERAL_HASH}endif"
+ 
+symbian:
+{ 
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.UID3 = 0x2002E6D1
+    MMP_RULES += mmpRuleDeffile
+    BLD_INF_RULES.prj_exports += "rom/connection_settings_shim.iby CORE_MW_LAYER_IBY_EXPORT_PATH(connection_settings_shim.iby)"
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/eabi/connection_settings_shimu.def	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,48 @@
+EXPORTS
+	_ZN13CmManagerShim17createDestinationE7QString @ 1 NONAME
+	_ZN13CmManagerShim22createConnectionMethodEj @ 2 NONAME
+	_ZN13CmManagerShimC1Ev @ 3 NONAME
+	_ZN13CmManagerShimC2Ev @ 4 NONAME
+	_ZN13CmManagerShimD1Ev @ 5 NONAME
+	_ZN13CmManagerShimD2Ev @ 6 NONAME
+	_ZN17CmDestinationShim14modifyPriorityEP22CmConnectionMethodShimi @ 7 NONAME
+	_ZN17CmDestinationShim17deleteDestinationEv @ 8 NONAME
+	_ZN17CmDestinationShim19addConnectionMethodEP22CmConnectionMethodShim @ 9 NONAME
+	_ZN17CmDestinationShim22deleteConnectionMethodEP22CmConnectionMethodShim @ 10 NONAME
+	_ZN17CmDestinationShim22removeConnectionMethodEP22CmConnectionMethodShim @ 11 NONAME
+	_ZN17CmDestinationShim6updateEv @ 12 NONAME
+	_ZN17CmDestinationShim7setNameE7QString @ 13 NONAME
+	_ZN17CmDestinationShimC1ER14RCmDestination @ 14 NONAME
+	_ZN17CmDestinationShimC2ER14RCmDestination @ 15 NONAME
+	_ZN17CmDestinationShimD1Ev @ 16 NONAME
+	_ZN17CmDestinationShimD2Ev @ 17 NONAME
+	_ZN22CmConnectionMethodShim15setIntAttributeEN13CMManagerShim25ConnectionMethodAttributeEj @ 18 NONAME
+	_ZN22CmConnectionMethodShim16setBoolAttributeEN13CMManagerShim25ConnectionMethodAttributeEb @ 19 NONAME
+	_ZN22CmConnectionMethodShim18setStringAttributeEN13CMManagerShim25ConnectionMethodAttributeE7QString @ 20 NONAME
+	_ZN22CmConnectionMethodShim19setString8AttributeEN13CMManagerShim25ConnectionMethodAttributeE7QString @ 21 NONAME
+	_ZN22CmConnectionMethodShim22deleteConnectionMethodEv @ 22 NONAME
+	_ZN22CmConnectionMethodShim6updateEv @ 23 NONAME
+	_ZN22CmConnectionMethodShimC1ER19RCmConnectionMethod @ 24 NONAME
+	_ZN22CmConnectionMethodShimC2ER19RCmConnectionMethod @ 25 NONAME
+	_ZN22CmConnectionMethodShimD1Ev @ 26 NONAME
+	_ZN22CmConnectionMethodShimD2Ev @ 27 NONAME
+	_ZNK13CmManagerShim11destinationEj @ 28 NONAME
+	_ZNK13CmManagerShim15allDestinationsER5QListIjE @ 29 NONAME
+	_ZNK13CmManagerShim16connectionMethodER5QListIjEb @ 30 NONAME
+	_ZNK13CmManagerShim16connectionMethodEj @ 31 NONAME
+	_ZNK17CmDestinationShim15protectionLevelEv @ 32 NONAME
+	_ZNK17CmDestinationShim16connectionMethodEi @ 33 NONAME
+	_ZNK17CmDestinationShim20connectionMethodByIDEj @ 34 NONAME
+	_ZNK17CmDestinationShim21connectionMethodCountEv @ 35 NONAME
+	_ZNK17CmDestinationShim2idEv @ 36 NONAME
+	_ZNK17CmDestinationShim4nameEv @ 37 NONAME
+	_ZNK17CmDestinationShim8isHiddenEv @ 38 NONAME
+	_ZNK17CmDestinationShim8metadataEN13CMManagerShim17SnapMetadataFieldE @ 39 NONAME
+	_ZNK17CmDestinationShim8priorityEP22CmConnectionMethodShim @ 40 NONAME
+	_ZNK22CmConnectionMethodShim15getIntAttributeEN13CMManagerShim25ConnectionMethodAttributeE @ 41 NONAME
+	_ZNK22CmConnectionMethodShim16getBoolAttributeEN13CMManagerShim25ConnectionMethodAttributeE @ 42 NONAME
+	_ZNK22CmConnectionMethodShim18getStringAttributeEN13CMManagerShim25ConnectionMethodAttributeE @ 43 NONAME
+	_ZNK22CmConnectionMethodShim19getString8AttributeEN13CMManagerShim25ConnectionMethodAttributeE @ 44 NONAME
+	_ZN17CmDestinationShim7refreshEv @ 45 NONAME
+	_ZN22CmConnectionMethodShim7refreshEv @ 46 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/inc/cmconnectionmethod_shim_s60_p.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2010 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:  
+ * Private implementation of Wrapper for CM Manager Symbian interface.
+ */
+
+#ifndef CMCONNECTIONMETHOD_SHIM_S60_P_H
+#define CMCONNECTIONMETHOD_SHIM_S60_P_H
+
+// System includes
+
+#include <QString>
+#include <cmconnectionmethod.h>
+#include <cmmanagerdefines_shim.h>
+
+// User includes
+
+// Forward declarations
+
+// External data types
+
+// Constants
+
+// Class declaration
+class CmConnectionMethodShimPrivate
+{
+
+public:
+    
+    // Data types
+
+    CmConnectionMethodShimPrivate(RCmConnectionMethod &cm);
+
+    ~CmConnectionMethodShimPrivate();
+    
+    uint GetIntAttribute(
+        CMManagerShim::ConnectionMethodAttribute attribute) const;
+
+    bool GetBoolAttribute(
+        CMManagerShim::ConnectionMethodAttribute attribute) const;
+
+    QString GetStringAttribute(
+        CMManagerShim::ConnectionMethodAttribute attribute) const;
+    
+    QString GetString8Attribute(
+        CMManagerShim::ConnectionMethodAttribute attribute) const;
+    
+    void SetIntAttribute(
+        CMManagerShim::ConnectionMethodAttribute attribute,
+        uint value);
+
+    void SetBoolAttribute(
+        CMManagerShim::ConnectionMethodAttribute attribute,
+        bool value);
+
+    void SetStringAttribute(
+        CMManagerShim::ConnectionMethodAttribute attribute, 
+        QString value);
+
+    void SetString8Attribute(
+        CMManagerShim::ConnectionMethodAttribute attribute, 
+        QString value);
+    
+    bool DeleteConnectionMethod();
+
+    void Update();
+    
+    void Refresh();
+    
+protected:
+
+private:
+
+    Q_DISABLE_COPY(CmConnectionMethodShimPrivate)
+
+    void GetStringAttributeL(
+        CMManagerShim::ConnectionMethodAttribute attribute,
+        QString &value) const;
+   
+    void GetString8AttributeL(
+        CMManagerShim::ConnectionMethodAttribute attribute,
+        QString &value) const;
+   
+    void SetIntAttributeL(
+        CMManagerShim::ConnectionMethodAttribute attribute,
+        uint value);
+
+    void SetBoolAttributeL(
+        CMManagerShim::ConnectionMethodAttribute attribute,
+        bool value);
+
+    void SetStringAttributeL(
+        CMManagerShim::ConnectionMethodAttribute attribute, 
+        QString value);
+   
+    void SetString8AttributeL(
+        CMManagerShim::ConnectionMethodAttribute attribute, 
+        QString value);
+    
+    void TraceIfError(TInt error) const;
+    
+private: // data    
+    
+    RCmConnectionMethod iCm;  //!< CmManager Connection Method instance
+    
+    // Friend classes
+
+    /*
+     * CmDestinationShimPrivate::AddConnectionMethodL needs direct access
+     * to Connection Methods it is adding to the Destination.
+     */
+    friend class CmDestinationShimPrivate;
+};
+
+#endif // CMCONNECTIONMETHOD_SHIM_S60_P_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/inc/cmdestination_shim_s60_p.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2010 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:  
+ * Private implementation of Wrapper for CM Manager Symbian interface.
+ */
+
+#ifndef CMDESTINATION_SHIM_P_H
+#define CMDESTINATION_SHIM_P_H
+
+// System includes
+
+#include <QString>
+#include <cmmanagerdefines_shim.h>
+
+// User includes
+
+// Forward declarations
+
+class RCmDestination;
+class CmConnectionMethodShim;
+
+// External data types
+
+// Constants
+
+// Class declaration
+
+class CmDestinationShimPrivate
+{
+
+public:
+
+    // Data types
+
+    CmDestinationShimPrivate(RCmDestination &destination);
+
+    ~CmDestinationShimPrivate();
+    
+    int ConnectionMethodCount() const;
+           
+    CmConnectionMethodShim *ConnectionMethod(int index) const;
+           
+    CmConnectionMethodShim *ConnectionMethodByID(uint cmId) const;
+
+    uint Priority(CmConnectionMethodShim *cmItem) const;
+           
+    QString Name() const;
+           
+    uint Id() const;
+
+    uint Metadata(CMManagerShim::SnapMetadataField metadataField) const;
+
+    CMManagerShim::CmmProtectionLevel ProtectionLevel() const;
+           
+    bool IsHidden() const;
+           
+    int AddConnectionMethod(CmConnectionMethodShim *cm);            
+       
+    void DeleteConnectionMethod(CmConnectionMethodShim *cm);
+       
+    void RemoveConnectionMethod(CmConnectionMethodShim *cm);
+    
+    void ModifyPriority(CmConnectionMethodShim *cm, int index);
+    
+    void SetName(QString name);
+    
+    void Update();               
+    
+    void Refresh();
+    
+    void DeleteDestination();
+    
+protected:
+
+private:
+                 
+    Q_DISABLE_COPY(CmDestinationShimPrivate)
+
+    void PriorityL(CmConnectionMethodShim *cmShim, uint &priority) const;
+    
+    void NameL(QString &name) const;
+           
+    void AddConnectionMethodL(CmConnectionMethodShim *cm, int &index);            
+       
+    void DeleteConnectionMethodL(CmConnectionMethodShim *cm);
+       
+    void RemoveConnectionMethodL(CmConnectionMethodShim *cm);
+             
+    void ModifyPriorityL(CmConnectionMethodShim *cm, int index);
+           
+    void SetNameL(QString name);
+              
+    CMManagerShim::CmmProtectionLevel mapCmmProtectionLevel( 
+        CMManager::TProtectionLevel protectionlvl) const;
+    
+    void TraceIfError(TInt error) const;
+    
+private: // data
+        
+    RCmDestination iDestination;  //!< CmManager Destination instance
+    
+    // Friend classes
+    
+};
+
+#endif // CMDESTINATION_SHIM_P_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/inc/cmmanager_shim_s60_p.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2010 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:  
+ * Private implementation of Wrapper for CM Manager Symbian interface.
+ */
+
+#ifndef CMMANAGER_SHIM_S60_P_H
+#define CMMANAGER_SHIM_S60_P_H
+
+// System includes
+
+#include <QString>
+#include <cmmanager.h>
+
+// User includes
+
+// Forward declarations
+
+class CmConnectionMethodShim;
+class CmDestinationShim;
+
+// External data types
+
+// Constants
+
+// Class declaration
+
+class CmManagerShimPrivate
+{
+
+public: 
+
+    // Data types
+
+    CmManagerShimPrivate();
+
+    ~CmManagerShimPrivate();
+    
+    CmDestinationShim *CreateDestination(QString name);
+    
+    CmConnectionMethodShim *CreateConnectionMethod(uint bearerType);
+
+    CmConnectionMethodShim* ConnectionMethod(uint connectionMethodId) const;
+    
+    void ConnectionMethod(
+        QList<uint> &cmArray,
+        bool legacyOnly) const;
+    
+    CmDestinationShim *Destination(uint destinationId) const;
+            
+    void AllDestinations(QList<uint> &destArray) const;
+    
+protected:
+
+private:
+
+    Q_DISABLE_COPY(CmManagerShimPrivate)
+
+    void ConnectionMethodL(
+        QList<uint> &cmArray,
+        bool legacyOnly) const;
+    
+    void AllDestinationsL(QList<uint> &destArray) const;
+
+    void TraceIfError(TInt error) const;
+
+private: // data
+    
+    RCmManager iCmManager;  //!< Cm Manager instance
+
+    // Friend classes
+};
+
+#endif // CMMANAGER_SHIM_S60_P_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/rom/connection_settings_shim.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2010 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:
+ * 
+ */
+
+#ifndef CONNECTION_SETTINGS_SHIM_IBY
+#define CONNECTION_SETTINGS_SHIM_IBY
+
+file=ABI_DIR\BUILD_DIR\connection_settings_shim.dll SHARED_LIB_DIR\connection_settings_shim.dll
+
+#endif // CONNECTION_SETTINGS_SHIM_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/src/cmconnectionmethod_shim.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2010 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:  
+ * Wrapper for CM Manager Symbian interface.
+ */
+
+// System includes
+
+#include <cmconnectionmethod.h>
+#include <cmconnectionmethod_shim.h>
+
+// User includes
+
+#include "cmconnectionmethod_shim_s60_p.h"
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+CmConnectionMethodShim::CmConnectionMethodShim(
+    RCmConnectionMethod &cm)
+{
+    d_ptr = new CmConnectionMethodShimPrivate(cm);
+}
+
+CmConnectionMethodShim::~CmConnectionMethodShim()
+{
+    delete d_ptr;
+}
+   
+uint CmConnectionMethodShim::getIntAttribute( 
+    CMManagerShim::ConnectionMethodAttribute attribute) const
+{
+    return d_ptr->GetIntAttribute(attribute);
+}
+
+bool CmConnectionMethodShim::getBoolAttribute( 
+    CMManagerShim::ConnectionMethodAttribute attribute) const
+{
+    return d_ptr->GetBoolAttribute(attribute);
+}
+
+QString CmConnectionMethodShim::getStringAttribute( 
+    CMManagerShim::ConnectionMethodAttribute attribute) const
+{
+    return d_ptr->GetStringAttribute(attribute);
+}
+
+QString CmConnectionMethodShim::getString8Attribute( 
+    CMManagerShim::ConnectionMethodAttribute attribute) const
+{
+    return d_ptr->GetString8Attribute(attribute);
+}
+
+void CmConnectionMethodShim::setIntAttribute(
+    CMManagerShim::ConnectionMethodAttribute attribute,
+    uint value)    
+{
+    d_ptr->SetIntAttribute(attribute, value); 
+}
+
+void CmConnectionMethodShim::setBoolAttribute(
+    CMManagerShim::ConnectionMethodAttribute attribute,
+    bool value)    
+{
+    d_ptr->SetBoolAttribute(attribute, value);
+}
+
+void CmConnectionMethodShim::setStringAttribute(
+    CMManagerShim::ConnectionMethodAttribute attribute, 
+    QString value)    
+{
+    d_ptr->SetStringAttribute(attribute, value);
+}
+
+void CmConnectionMethodShim::setString8Attribute(
+    CMManagerShim::ConnectionMethodAttribute attribute, 
+    QString value)    
+{
+    d_ptr->SetString8Attribute(attribute, value);
+}
+
+bool CmConnectionMethodShim::deleteConnectionMethod()
+{
+    return d_ptr->DeleteConnectionMethod();
+}
+    
+void CmConnectionMethodShim::update()
+{
+    d_ptr->Update();
+}
+
+void CmConnectionMethodShim::refresh()
+{
+    d_ptr->Refresh();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/src/cmconnectionmethod_shim_s60.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,285 @@
+/*
+ * Copyright (c) 2010 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:  
+ * Private implementation of Wrapper for CM Manager Symbian interface.
+ */
+
+// System includes
+
+#include <utf.h>
+
+// User includes
+
+#include "cmconnectionmethod_shim_s60_p.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmconnectionmethod_shim_s60Traces.h"
+#endif
+
+
+/*!
+    \class CmConnectionMethodShimPrivate
+    \brief Private implementation class for CM Manager Connection Method Shim.
+
+    Wrapper for CM Manager Symbian interface. Symbian leaves are converted to
+    standard C++ exceptions.
+    
+    Wrapper functions are identical to those in CmConnectionMethodShim class,
+    so refer to cmconnectionmethod_shim.h for descriptions. Private functions
+    in this class are just leaving versions of the same wrapper functions.
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+ *  Constructor.
+ *  
+ *  @param[in] cm CM Manager connection method object.
+ */
+
+CmConnectionMethodShimPrivate::CmConnectionMethodShimPrivate(
+    RCmConnectionMethod &cm) :
+    iCm(cm)
+{
+    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_CMCONNECTIONMETHODSHIMPRIVATE_ENTRY);
+    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_CMCONNECTIONMETHODSHIMPRIVATE_EXIT);
+}
+
+/*!
+ *  Destructor.
+ */
+
+CmConnectionMethodShimPrivate::~CmConnectionMethodShimPrivate()
+{
+    OstTraceFunctionEntry0(DUP1_CMCONNECTIONMETHODSHIMPRIVATE_CMCONNECTIONMETHODSHIMPRIVATE_ENTRY);
+    
+    iCm.Close();
+
+    OstTraceFunctionExit0(DUP1_CMCONNECTIONMETHODSHIMPRIVATE_CMCONNECTIONMETHODSHIMPRIVATE_EXIT);
+}
+   
+uint CmConnectionMethodShimPrivate::GetIntAttribute( 
+    CMManagerShim::ConnectionMethodAttribute attribute) const
+{
+    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_GETINTATTRIBUTE_ENTRY);
+    
+    uint value = 0;
+    TRAPD(error, value = iCm.GetIntAttributeL(attribute));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_GETINTATTRIBUTE_EXIT);
+    return value;
+}
+
+bool CmConnectionMethodShimPrivate::GetBoolAttribute( 
+    CMManagerShim::ConnectionMethodAttribute attribute) const
+{
+    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_GETBOOLATTRIBUTE_ENTRY);
+    
+    bool value = false;
+    TRAPD(error, value = iCm.GetBoolAttributeL(attribute));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_GETBOOLATTRIBUTE_EXIT);
+    return value;
+}
+
+QString CmConnectionMethodShimPrivate::GetStringAttribute( 
+    CMManagerShim::ConnectionMethodAttribute attribute) const
+{
+    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_GETSTRINGATTRIBUTE_ENTRY);
+    
+    QString value;
+    TRAPD(error, GetStringAttributeL(attribute, value));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_GETSTRINGATTRIBUTE_EXIT);
+    return value;
+}
+
+QString CmConnectionMethodShimPrivate::GetString8Attribute( 
+    CMManagerShim::ConnectionMethodAttribute attribute) const
+{
+    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_GETSTRING8ATTRIBUTE_ENTRY);
+    
+    QString value;
+    TRAPD(error, GetString8AttributeL(attribute, value));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_GETSTRING8ATTRIBUTE_EXIT);
+    return value;
+}
+
+void CmConnectionMethodShimPrivate::SetIntAttribute( 
+    CMManagerShim::ConnectionMethodAttribute attribute,
+    uint value)
+{
+    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_SETINTATTRIBUTE_ENTRY);
+    
+    TRAPD(error, SetIntAttributeL(attribute, value));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_SETINTATTRIBUTE_EXIT);
+}
+
+void CmConnectionMethodShimPrivate::SetBoolAttribute( 
+    CMManagerShim::ConnectionMethodAttribute attribute,
+    bool value)
+{
+    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_SETBOOLATTRIBUTE_ENTRY);
+    
+    TRAPD(error, SetBoolAttributeL(attribute, value));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_SETBOOLATTRIBUTE_EXIT);
+}
+
+void CmConnectionMethodShimPrivate::SetStringAttribute( 
+    CMManagerShim::ConnectionMethodAttribute attribute,
+    QString value)
+{
+    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_SETSTRINGATTRIBUTE_ENTRY);
+    
+    TRAPD(error, SetStringAttributeL(attribute, value));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+
+    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_SETSTRINGATTRIBUTE_EXIT);
+}
+
+void CmConnectionMethodShimPrivate::SetString8Attribute( 
+    CMManagerShim::ConnectionMethodAttribute attribute,
+    QString value)
+{
+    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_SETSTRING8ATTRIBUTE_ENTRY);
+    
+    TRAPD(error, SetString8AttributeL(attribute, value));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_SETSTRING8ATTRIBUTE_EXIT);
+}
+
+bool CmConnectionMethodShimPrivate::DeleteConnectionMethod()
+{
+    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_DELETECONNECTIONMETHOD_ENTRY);
+    
+    bool value = false;
+    TRAPD(error, value = iCm.DeleteL());
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_DELETECONNECTIONMETHOD_EXIT);
+    return value;
+}
+     
+void CmConnectionMethodShimPrivate::Update()
+{
+    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_UPDATE_ENTRY);
+    
+    TRAPD(error, iCm.UpdateL());
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+
+    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_UPDATE_EXIT);
+}
+
+void CmConnectionMethodShimPrivate::Refresh()
+{
+    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_REFRESH_ENTRY);
+    
+    TRAPD(error, iCm.RefreshL());
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_REFRESH_EXIT);
+}
+
+void CmConnectionMethodShimPrivate::GetStringAttributeL( 
+    CMManagerShim::ConnectionMethodAttribute attribute,
+    QString &value) const
+{
+    HBufC* buf = iCm.GetStringAttributeL(attribute);
+    value = QString::fromUtf16(buf->Ptr(), buf->Length());
+    delete buf;
+}
+
+void CmConnectionMethodShimPrivate::GetString8AttributeL( 
+    CMManagerShim::ConnectionMethodAttribute attribute,
+    QString &value) const
+{
+    HBufC8* buf = iCm.GetString8AttributeL(attribute);
+    value = QString::fromLatin1((const char*)buf->Ptr(), buf->Length());
+    delete buf;
+}
+
+void CmConnectionMethodShimPrivate::SetIntAttributeL( 
+    CMManagerShim::ConnectionMethodAttribute attribute,
+    uint value)
+{
+    iCm.SetIntAttributeL(attribute, value);
+}
+
+void CmConnectionMethodShimPrivate::SetBoolAttributeL( 
+    CMManagerShim::ConnectionMethodAttribute attribute,
+    bool value)
+{
+    iCm.SetBoolAttributeL(attribute, value);
+}
+
+void CmConnectionMethodShimPrivate::SetStringAttributeL(
+    CMManagerShim::ConnectionMethodAttribute attribute,
+    QString value)
+{
+    TPtrC16 valuePtr(reinterpret_cast<const TUint16*>(value.utf16()));
+    iCm.SetStringAttributeL(attribute, valuePtr);
+}
+
+void CmConnectionMethodShimPrivate::SetString8AttributeL(
+    CMManagerShim::ConnectionMethodAttribute attribute,
+    QString value)
+{
+    QByteArray tempValue = value.toLatin1();
+    TPtrC8 valuePtr(reinterpret_cast<const unsigned char*>(tempValue.data()));
+    iCm.SetString8AttributeL(attribute, valuePtr);
+}
+
+/*!
+ * Traces given error code if it is not KErrNone. 
+ * 
+ * @param[in] error Symbian error code.
+ */
+
+void CmConnectionMethodShimPrivate::TraceIfError(TInt error) const
+{
+    if (error != KErrNone) {
+        OstTrace1(
+            TRACE_WARNING,
+            CMCONNECTIONMETHODSHIMPRIVATE_TRACEIFERROR,
+            "CmConnectionMethodShimPrivate::TraceIfError;Error code=%d",
+            error);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/src/cmdestination_shim.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) 2010 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:  
+ * Wrapper for CM Manager Symbian interface.
+ */
+
+// System includes
+
+#include <cmdestination.h>
+#include <cmconnectionmethod.h>
+#include <cmdestination_shim.h>
+
+// User includes
+
+#include "cmdestination_shim_s60_p.h"
+#include "cmconnectionmethod_shim_s60_p.h"
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+CmDestinationShim::CmDestinationShim(RCmDestination &destination)
+{
+    d_ptr = new CmDestinationShimPrivate(destination);
+}
+
+CmDestinationShim::~CmDestinationShim()
+{
+    delete d_ptr;
+}
+                 
+int CmDestinationShim::connectionMethodCount() const
+{
+    return d_ptr->ConnectionMethodCount();
+}
+                
+CmConnectionMethodShim *CmDestinationShim::connectionMethod(int index) const
+{
+    return d_ptr->ConnectionMethod(index);
+}
+           
+CmConnectionMethodShim *CmDestinationShim::connectionMethodByID(
+    uint cmId) const
+{    
+    return d_ptr->ConnectionMethodByID(cmId);
+}
+
+uint CmDestinationShim::priority(CmConnectionMethodShim *cmItem) const
+{
+    return d_ptr->Priority(cmItem);
+}
+               
+QString CmDestinationShim::name() const
+{    
+    return d_ptr->Name();
+}
+                             
+uint CmDestinationShim::id() const
+{
+    return d_ptr->Id();
+}
+
+uint CmDestinationShim::metadata(
+    CMManagerShim::SnapMetadataField metadataField) const
+{
+    return d_ptr->Metadata(metadataField);
+}
+
+CMManagerShim::CmmProtectionLevel CmDestinationShim::protectionLevel() const
+{
+    return d_ptr->ProtectionLevel();
+}
+           
+bool CmDestinationShim::isHidden() const
+{
+    return d_ptr->IsHidden();
+}
+           
+int CmDestinationShim::addConnectionMethod(CmConnectionMethodShim *cm)
+{
+    return d_ptr->AddConnectionMethod(cm);
+}
+
+void CmDestinationShim::deleteConnectionMethod(CmConnectionMethodShim *cm)
+{
+    d_ptr->DeleteConnectionMethod(cm);
+}
+       
+void CmDestinationShim::removeConnectionMethod(CmConnectionMethodShim *cm)
+{
+    d_ptr->RemoveConnectionMethod(cm);
+}
+             
+void CmDestinationShim::modifyPriority(CmConnectionMethodShim *cm, int index)
+{
+    d_ptr->ModifyPriority(cm, index);
+}
+           
+void CmDestinationShim::setName(QString name)
+{
+    d_ptr->SetName(name);
+}
+              
+void CmDestinationShim::update()
+{
+    d_ptr->Update();
+}
+
+void CmDestinationShim::refresh()
+{
+    d_ptr->Refresh();
+}
+
+void CmDestinationShim::deleteDestination()
+{
+    d_ptr->DeleteDestination();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/src/cmdestination_shim_s60.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,409 @@
+/*
+ * Copyright (c) 2010 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:  
+ * Private implementation of Wrapper for CM Manager Symbian interface.
+ */
+
+// System includes
+
+#include <cmdestination.h>
+#include <cmmanager.h>
+#include <cmconnectionmethod.h>
+#include <cmdestination_shim.h>
+#include <cmconnectionmethod_shim.h>
+
+// User includes
+
+#include "cmdestination_shim_s60_p.h"
+#include "cmconnectionmethod_shim_s60_p.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmdestination_shim_s60Traces.h"
+#endif
+
+
+/*!
+    \class CmDestinationShimPrivate
+    \brief Private implementation class for CM Manager Destination Shim.
+
+    Wrapper for CM Manager Symbian interface. Symbian leaves are converted to
+    standard C++ exceptions.
+    
+    Wrapper functions are identical to those in CmDestinationShim class, so
+    refer to cmdestination_shim.h for descriptions. Private functions in this
+    class are just leaving versions of the same wrapper functions.
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+ *  Constructor.
+ *  
+ *  @param[in] destination CM Manager destination object.
+ */
+
+CmDestinationShimPrivate::CmDestinationShimPrivate(
+    RCmDestination &destination) :
+    iDestination(destination)
+{
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_CMDESTINATIONSHIMPRIVATE_ENTRY);
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_CMDESTINATIONSHIMPRIVATE_EXIT);
+}
+
+/*!
+ *  Destructor.
+ */
+
+CmDestinationShimPrivate::~CmDestinationShimPrivate()
+{
+    OstTraceFunctionEntry0(DUP1_CMDESTINATIONSHIMPRIVATE_CMDESTINATIONSHIMPRIVATE_ENTRY);
+    
+    iDestination.Close();
+
+    OstTraceFunctionExit0(DUP1_CMDESTINATIONSHIMPRIVATE_CMDESTINATIONSHIMPRIVATE_EXIT);
+}
+                 
+int CmDestinationShimPrivate::ConnectionMethodCount() const
+{
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_CONNECTIONMETHODCOUNT_ENTRY);
+    
+    int count = iDestination.ConnectionMethodCount();
+    
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_CONNECTIONMETHODCOUNT_EXIT);
+    return count;
+}
+
+CmConnectionMethodShim *CmDestinationShimPrivate::ConnectionMethod(
+    int index) const
+{
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_CONNECTIONMETHOD_ENTRY);
+    
+    RCmConnectionMethod cm;
+    TRAPD(error, cm = iDestination.ConnectionMethodL(index));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_CONNECTIONMETHOD_EXIT);
+    return new CmConnectionMethodShim(cm);
+}
+
+CmConnectionMethodShim *CmDestinationShimPrivate::ConnectionMethodByID(
+    uint cmId) const
+{    
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_CONNECTIONMETHODBYID_ENTRY);
+    
+    RCmConnectionMethod cm;
+    TRAPD(error, cm = iDestination.ConnectionMethodByIDL(cmId));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_CONNECTIONMETHODBYID_EXIT);
+    return new CmConnectionMethodShim(cm);
+}
+
+uint CmDestinationShimPrivate::Priority(CmConnectionMethodShim *cmItem) const
+{
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_PRIORITY_ENTRY);
+    
+    uint priority;
+    TRAPD(error, PriorityL(cmItem, priority));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_PRIORITY_EXIT);
+    return priority;
+}
+
+QString CmDestinationShimPrivate::Name() const
+{    
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_NAME_ENTRY);
+    
+    QString name;
+    TRAPD(error, NameL(name));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_NAME_EXIT);
+    return name;
+}
+
+uint CmDestinationShimPrivate::Id() const
+{
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_ID_ENTRY);
+    
+    uint id = iDestination.Id();
+    
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_ID_EXIT);
+    return id;
+}
+
+uint CmDestinationShimPrivate::Metadata(
+    CMManagerShim::SnapMetadataField metadataField) const
+{
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_METADATA_ENTRY);
+    
+    uint metadata = 0;
+    TRAPD(
+        error,
+        metadata = iDestination.MetadataL((CMManager::TSnapMetadataField)metadataField));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_METADATA_EXIT);
+    return metadata;
+}
+
+CMManagerShim::CmmProtectionLevel CmDestinationShimPrivate::ProtectionLevel() const
+{
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_PROTECTIONLEVEL_ENTRY);
+    
+    CMManager::TProtectionLevel protectionlvl = CMManager::EProtLevel3;
+    TRAPD(error, protectionlvl = iDestination.ProtectionLevel());
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_PROTECTIONLEVEL_EXIT);
+    return mapCmmProtectionLevel(protectionlvl);
+}
+
+bool CmDestinationShimPrivate::IsHidden() const
+{
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_ISHIDDEN_ENTRY);
+    
+    bool hidden = iDestination.IsHidden(); 
+    
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_ISHIDDEN_EXIT);
+    return hidden;
+}
+
+int CmDestinationShimPrivate::AddConnectionMethod(
+    CmConnectionMethodShim *cm)
+{
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_ADDCONNECTIONMETHOD_ENTRY);
+    
+    int index;
+    TRAPD(error, AddConnectionMethodL(cm, index));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_ADDCONNECTIONMETHOD_EXIT);
+    return index;
+}
+
+void CmDestinationShimPrivate::DeleteConnectionMethod(
+    CmConnectionMethodShim *cm)
+{
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_DELETECONNECTIONMETHOD_ENTRY);
+    
+    TRAPD(error, DeleteConnectionMethodL(cm));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_DELETECONNECTIONMETHOD_EXIT);
+}
+
+void CmDestinationShimPrivate::RemoveConnectionMethod(
+    CmConnectionMethodShim *cm)
+{
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_REMOVECONNECTIONMETHOD_ENTRY);
+    
+    TRAPD(error, RemoveConnectionMethodL(cm));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_REMOVECONNECTIONMETHOD_EXIT);
+}
+
+void CmDestinationShimPrivate::ModifyPriority(
+    CmConnectionMethodShim *cm,
+    int index)
+{
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_MODIFYPRIORITY_ENTRY);
+    
+    TRAPD(error, ModifyPriorityL(cm, index));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_MODIFYPRIORITY_EXIT);
+}
+
+void CmDestinationShimPrivate::SetName(QString name)
+{
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_SETNAME_ENTRY);
+    
+    TRAPD(error, SetNameL(name));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_SETNAME_EXIT);
+}
+
+void CmDestinationShimPrivate::Update()
+{
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_UPDATE_ENTRY);
+    
+    TRAPD(error, iDestination.UpdateL());
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_UPDATE_EXIT);
+}
+
+void CmDestinationShimPrivate::Refresh()
+{
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_REFRESH_ENTRY);
+    
+    TRAPD(error, iDestination.RefreshL());
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_REFRESH_EXIT);
+}
+
+void CmDestinationShimPrivate::DeleteDestination()
+{
+    OstTraceFunctionEntry0(CMDESTINATIONSHIMPRIVATE_DELETEDESTINATION_ENTRY);
+    
+    TRAPD(error, iDestination.DeleteLD());
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+
+    OstTraceFunctionExit0(CMDESTINATIONSHIMPRIVATE_DELETEDESTINATION_EXIT);
+}
+
+void CmDestinationShimPrivate::PriorityL(
+    CmConnectionMethodShim *cmShim,
+    uint &priority) const
+{
+    RCmConnectionMethod cm;
+    cm = iDestination.ConnectionMethodByIDL(
+        cmShim->getIntAttribute(CMManagerShim::CmId));
+    priority = iDestination.PriorityL(cm);
+}
+    
+void CmDestinationShimPrivate::NameL(QString &name) const
+{
+    HBufC* iapName;
+    iapName = iDestination.NameLC();
+    name = QString::fromUtf16(iapName->Ptr(), iapName->Length());
+    CleanupStack::PopAndDestroy(); // iapName
+}
+           
+void CmDestinationShimPrivate::AddConnectionMethodL(
+    CmConnectionMethodShim *cmShim,
+    int &index)
+{
+    index = iDestination.AddConnectionMethodL(cmShim->d_ptr->iCm);
+    iDestination.UpdateL();
+}
+       
+void CmDestinationShimPrivate::DeleteConnectionMethodL(
+    CmConnectionMethodShim *cmShim)
+{
+    RCmConnectionMethod cm;
+    cm = iDestination.ConnectionMethodByIDL(
+        cmShim->getIntAttribute(CMManagerShim::CmId));
+    iDestination.DeleteConnectionMethodL(cm);
+    iDestination.UpdateL();
+}
+       
+void CmDestinationShimPrivate::RemoveConnectionMethodL(
+    CmConnectionMethodShim *cmShim)
+{
+    RCmConnectionMethod cm;
+    cm = iDestination.ConnectionMethodByIDL(
+        cmShim->getIntAttribute(CMManagerShim::CmId));
+    iDestination.RemoveConnectionMethodL(cm);
+    iDestination.UpdateL();
+}
+             
+void CmDestinationShimPrivate::ModifyPriorityL(
+    CmConnectionMethodShim *cmShim,
+    int index)
+{
+    RCmConnectionMethod cm;
+    cm = iDestination.ConnectionMethodByIDL(
+        cmShim->getIntAttribute(CMManagerShim::CmId));
+    iDestination.ModifyPriorityL(cm, index);
+    iDestination.UpdateL();
+}
+           
+void CmDestinationShimPrivate::SetNameL(QString name)
+{
+    TPtrC16 namePtr(reinterpret_cast<const TUint16*>(name.utf16()));
+    iDestination.SetNameL(namePtr);
+    iDestination.UpdateL();
+}
+
+/*!
+ * Maps CM Manager protection levels to those defined by the shim.
+ * 
+ * @param[in] protectionlvl CM Manager protection level.
+ * @return CM Manager Shim protection level.
+ */
+
+CMManagerShim::CmmProtectionLevel CmDestinationShimPrivate::mapCmmProtectionLevel( 
+    CMManager::TProtectionLevel protectionlvl) const
+{
+    CMManagerShim::CmmProtectionLevel retval = CMManagerShim::ProtLevel3;
+    
+    switch (protectionlvl) {
+    case CMManager::EProtLevel0:
+        retval = CMManagerShim::ProtLevel0;
+        break;
+        
+    case CMManager::EProtLevel1:
+        retval = CMManagerShim::ProtLevel1;
+        break;
+        
+    case CMManager::EProtLevel2:
+        retval = CMManagerShim::ProtLevel2;
+        break;
+        
+    case CMManager::EProtLevel3:
+        retval = CMManagerShim::ProtLevel3;
+        break;
+
+#ifndef QT_NO_DEBUG
+    default:
+        Q_ASSERT( 0 );
+        break;
+#endif            
+    }
+    
+    return retval;
+}
+
+/*!
+ * Traces given error code if it is not KErrNone. 
+ * 
+ * @param[in] error Symbian error code.
+ */
+
+void CmDestinationShimPrivate::TraceIfError(TInt error) const
+{
+    if (error != KErrNone) {
+        OstTrace1(
+            TRACE_WARNING,
+            CMDESTINATIONSHIMPRIVATE_TRACEIFERROR,
+            "CmDestinationShimPrivate::TraceIfError;Error code=%d",
+            error);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/src/cmmanager_shim.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2010 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:  
+ * Wrapper for CM Manager Symbian interface.
+ */
+
+// System includes
+
+#include <e32base.h>
+#include <cmdestination.h>
+#include <cmmanager_shim.h>
+#include <cmconnectionmethod_shim.h>
+#include <cmdestination_shim.h>
+
+// User includes
+
+#include "cmmanager_shim_s60_p.h"
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+CmManagerShim::CmManagerShim()
+{
+    d_ptr = new CmManagerShimPrivate();
+}
+
+CmManagerShim::~CmManagerShim()
+{
+    delete d_ptr;
+}
+
+CmDestinationShim *CmManagerShim::createDestination(QString name)
+{
+    return d_ptr->CreateDestination(name);
+}
+    
+CmConnectionMethodShim *CmManagerShim::createConnectionMethod(uint bearerType)
+{
+    return d_ptr->CreateConnectionMethod(bearerType);
+}
+    
+CmConnectionMethodShim *CmManagerShim::connectionMethod(
+    uint connectionMethodId) const
+{
+    return d_ptr->ConnectionMethod(connectionMethodId);
+}
+    
+void CmManagerShim::connectionMethod(
+    QList<uint> &cmArray,
+    bool legacyOnly) const
+{
+    return d_ptr->ConnectionMethod(
+        cmArray,
+        legacyOnly);
+}
+
+CmDestinationShim *CmManagerShim::destination(uint destinationId) const
+{
+    return d_ptr->Destination(destinationId);
+}
+            
+void CmManagerShim::allDestinations(QList<uint> &destArray) const
+{
+    return d_ptr->AllDestinations(destArray);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/src/cmmanager_shim_s60.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,213 @@
+/*
+ * Copyright (c) 2010 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:  
+ * Private implementation of Wrapper for CM Manager Symbian interface.
+ */
+
+// System includes
+
+#include <QList>
+#include <e32base.h>
+#include <cmdestination.h>
+#include <cmdestination_shim.h>
+#include <cmconnectionmethod_shim.h>
+
+// User includes
+
+#include "cmmanager_shim_s60_p.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmanager_shim_s60Traces.h"
+#endif
+
+
+/*!
+    \class CmManagerShimPrivate
+    \brief Private implementation class for CM Manager Shim.
+
+    Wrapper for CM Manager Symbian interface. Symbian leaves are converted to
+    standard C++ exceptions.
+    
+    Wrapper functions are identical to those in CmManagerShim class, so
+    refer to cmdestination_shim.h for descriptions. Private functions in this
+    class are just leaving versions of the same wrapper functions.
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+ *   Constructor.
+ */
+
+CmManagerShimPrivate::CmManagerShimPrivate()
+{
+    OstTraceFunctionEntry0(CMMANAGERSHIMPRIVATE_CMMANAGERSHIMPRIVATE_ENTRY);
+    
+    TRAPD(error, iCmManager.OpenL());
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+
+    OstTraceFunctionExit0(CMMANAGERSHIMPRIVATE_CMMANAGERSHIMPRIVATE_EXIT);
+}
+
+/*!
+ *   Destructor.
+ */
+
+CmManagerShimPrivate::~CmManagerShimPrivate()
+{
+    OstTraceFunctionEntry0(DUP1_CMMANAGERSHIMPRIVATE_CMMANAGERSHIMPRIVATE_ENTRY);
+    
+    iCmManager.Close();
+    
+    OstTraceFunctionExit0(DUP1_CMMANAGERSHIMPRIVATE_CMMANAGERSHIMPRIVATE_EXIT);
+}
+
+CmDestinationShim *CmManagerShimPrivate::CreateDestination(QString name)
+{
+    OstTraceFunctionEntry0(CMMANAGERSHIMPRIVATE_CREATEDESTINATION_ENTRY);
+    
+    RCmDestination dest;
+    TRAPD(
+        error,
+        TPtrC16 namePtr(reinterpret_cast<const TUint16*>(name.utf16()));
+        dest = iCmManager.CreateDestinationL(namePtr);
+        dest.UpdateL());
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMMANAGERSHIMPRIVATE_CREATEDESTINATION_EXIT);
+    return new CmDestinationShim(dest);
+}
+    
+CmConnectionMethodShim *CmManagerShimPrivate::CreateConnectionMethod(
+    uint bearerType)
+{
+    OstTraceFunctionEntry0(CMMANAGERSHIMPRIVATE_CREATECONNECTIONMETHOD_ENTRY);
+    
+    RCmConnectionMethod connectionMethod;
+    TRAPD(error, connectionMethod = iCmManager.CreateConnectionMethodL(bearerType));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMMANAGERSHIMPRIVATE_CREATECONNECTIONMETHOD_EXIT);
+    return new CmConnectionMethodShim(connectionMethod);
+}
+
+CmConnectionMethodShim *CmManagerShimPrivate::ConnectionMethod(
+    uint connectionMethodId) const
+{
+    OstTraceFunctionEntry0(CMMANAGERSHIMPRIVATE_CONNECTIONMETHOD_ENTRY);
+    
+    RCmConnectionMethod connectionMethod;
+    TRAPD(error, connectionMethod = iCmManager.ConnectionMethodL(connectionMethodId));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+    
+    OstTraceFunctionExit0(CMMANAGERSHIMPRIVATE_CONNECTIONMETHOD_EXIT);
+    return new CmConnectionMethodShim(connectionMethod);
+}
+    
+void CmManagerShimPrivate::ConnectionMethod(
+    QList<uint> &cmArray,
+    bool legacyOnly) const
+{
+    OstTraceFunctionEntry0(DUP1_CMMANAGERSHIMPRIVATE_CONNECTIONMETHOD_ENTRY);
+    
+    TRAPD(error, ConnectionMethodL(cmArray, legacyOnly));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+
+    OstTraceFunctionExit0(DUP1_CMMANAGERSHIMPRIVATE_CONNECTIONMETHOD_EXIT);
+}
+    
+CmDestinationShim *CmManagerShimPrivate::Destination(
+    uint destinationId) const
+{
+    OstTraceFunctionEntry0(CMMANAGERSHIMPRIVATE_DESTINATION_ENTRY);
+    
+    RCmDestination dest;
+    TRAPD(error, dest = iCmManager.DestinationL(destinationId));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+
+    OstTraceFunctionExit0(CMMANAGERSHIMPRIVATE_DESTINATION_EXIT);
+    return new CmDestinationShim(dest);
+}
+            
+void CmManagerShimPrivate::AllDestinations(QList<uint> &destArray) const
+{
+    OstTraceFunctionEntry0(CMMANAGERSHIMPRIVATE_ALLDESTINATIONS_ENTRY);
+    
+    TRAPD(error, AllDestinationsL(destArray));
+    TraceIfError(error);
+    qt_symbian_throwIfError(error);
+
+    OstTraceFunctionExit0(CMMANAGERSHIMPRIVATE_ALLDESTINATIONS_EXIT);
+}
+
+void CmManagerShimPrivate::ConnectionMethodL(
+    QList<uint> &cmArray,
+    bool legacyOnly) const
+{
+    RArray<TUint32> array;
+    iCmManager.ConnectionMethodL(
+        array,
+        true, // Check bearer type
+        legacyOnly,
+        false); // No Easy WLAN
+    for (TInt i = 0; i < array.Count(); i++) {
+        cmArray.append(array[i]);
+    }
+    // Free memory
+    array.Reset();
+}
+    
+void CmManagerShimPrivate::AllDestinationsL(QList<uint> &destArray) const
+{
+    destArray.clear();
+    RArray<TUint32> destinationIdArray;
+
+    destinationIdArray.Reset();
+    iCmManager.AllDestinationsL(destinationIdArray);
+
+    for (TInt i = 0; i < destinationIdArray.Count(); i++) {
+        destArray.append(destinationIdArray[i]);
+    }
+    // Free memory
+    destinationIdArray.Reset();
+}
+
+/*!
+ * Traces given error code if it is not KErrNone. 
+ * 
+ * @param[in] error Symbian error code.
+ */
+
+void CmManagerShimPrivate::TraceIfError(TInt error) const
+{
+    if (error != KErrNone) {
+        OstTrace1(
+            TRACE_WARNING,
+            CMMANAGERSHIMPRIVATE_TRACEIFERROR,
+            "CmManagerShimPrivate::TraceIfError;Error code=%d",
+            error);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/traces/OstTraceDefinitions.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2010 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:
+ * OST trace definition header.
+ */
+
+#ifndef OSTTRACEDEFINITIONS_H
+#define OSTTRACEDEFINITIONS_H
+#include <opensystemtrace.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/tsrc/ut/testcmmgrshim.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,1104 @@
+/*
+* Copyright (c) 2010 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:
+* CM Application Settings UI unit testing.
+*/
+
+#include <QList>
+#include <QString>
+
+#include <HbApplication>
+#include <HbMainWindow>
+#include <HbView>
+#include <HbLabel>
+
+#include <QtTest/QtTest>
+
+#include "cmdestination_shim.h"
+#include "cmconnectionmethod_shim.h"
+
+#include "testcmmgrshim.h"
+
+// -----------------------------------------------------------------------------
+// STATIC TEST DATA
+// -----------------------------------------------------------------------------
+
+// -----------------------------------------------------------------------------
+// TEST MACROES
+// -----------------------------------------------------------------------------
+
+// Test macro for verifying an exception throwing code block
+#define TEST_CATCH_AND_VERIFY(code, error) \
+    { \
+    int error_code; \
+    QT_TRYCATCH_ERROR(error_code, code); \
+    QCOMPARE(error_code, error); \
+    }
+
+// -----------------------------------------------------------------------------
+// FRAMEWORK FUNCTIONS
+// -----------------------------------------------------------------------------
+
+/**
+ * Test main function. Runs all test cases.
+ */
+int main(int argc, char *argv[])
+{
+    Q_UNUSED(argc);
+    
+    char *pass[3];  
+    pass[0] = argv[0];
+    pass[1] = "-o"; 
+    pass[2] = "c:\\data\\TestCmMgrShim.txt";
+ 
+    TestCmMgrShim tc;
+    int res = QTest::qExec(&tc, 3, pass);
+ 
+    return res;
+}
+
+/**
+ * This function is be called before the first test case is executed.
+ */
+void TestCmMgrShim::initTestCase()
+{
+}
+
+/**
+ * This function is be called after the last test case was executed.
+ */
+void TestCmMgrShim::cleanupTestCase()
+{
+}
+
+/**
+ * This function is be called before each test case is executed.
+ */
+void TestCmMgrShim::init()
+{
+    // Initialize the CmManagerShim object
+    mCmManagerShim = new CmManagerShim;
+}
+
+/**
+ * This function is be called after each test case is executed.
+ */
+void TestCmMgrShim::cleanup()
+{
+    // There should be no destinations
+    QList<uint> destinations;
+    mCmManagerShim->allDestinations(destinations);
+    int destinationCount = destinations.count(); 
+    
+    // Delete the destinations if there were any
+    deleteDestinations();
+
+    // There should be no connection methods
+    QList<uint> connMethods;
+    mCmManagerShim->connectionMethod(connMethods, false);
+    int connMethodCount = connMethods.count(); 
+    
+    // Delete the connection methods if there were any
+    deleteConnectionMethods();
+
+    // Validate after the deletions are done
+    QCOMPARE(destinationCount, 0);
+    QCOMPARE(connMethodCount, 0);
+
+    delete mCmManagerShim;
+}
+
+// -----------------------------------------------------------------------------
+// TEST CASES
+// -----------------------------------------------------------------------------
+
+/**
+ * Test case for testing initial state.
+ * -Reads AND DELETES all destinations and connection methods.
+ * -Verifies that there are no destinations and connection methods.
+ */
+void TestCmMgrShim::tcResetSettings()
+{
+    // Read all destinations
+    QList<uint> destinations;
+    mCmManagerShim->allDestinations(destinations);
+    
+    // Delete the destinations
+    for (int i=0; i < destinations.count(); i++) {
+        CmDestinationShim *dest = mCmManagerShim->destination(destinations[i]);
+        dest->deleteDestination();
+        
+        // Update should leave
+        TEST_CATCH_AND_VERIFY(
+            dest->update(),
+            KErrBadHandle);
+        
+        delete dest;
+    }
+    
+    // Check that there no longer are any destinations
+    mCmManagerShim->allDestinations(destinations);
+    QCOMPARE(destinations.count(), 0);
+    
+    // Read all connection methods
+    QList<uint> connMethods;
+    mCmManagerShim->connectionMethod(connMethods, false);
+    
+    // Remove possible uncategorized connection methods
+    for (int i=0; i < connMethods.count(); i++){
+        CmConnectionMethodShim *cm = 
+            mCmManagerShim->connectionMethod(connMethods[i]);
+        QVERIFY(cm != NULL);
+        bool ok = cm->deleteConnectionMethod();
+        QVERIFY(ok == true);
+        delete cm;
+    }
+    
+    // Check that tere is no longer any connection methods
+    mCmManagerShim->connectionMethod(connMethods, false);
+    QCOMPARE(connMethods.count(), 0);
+    
+    // Try reading a Connection Method with an erroneous ID
+    TEST_CATCH_AND_VERIFY(
+        mCmManagerShim->connectionMethod(0),
+        KErrArgument);
+    
+    // Try reading a non-existent Connection Method
+    TEST_CATCH_AND_VERIFY(
+        mCmManagerShim->connectionMethod(1),
+        KErrNotFound);
+}
+
+/**
+ * Test case for testing basic legacy WLAN connection method handling.
+ * -Creates a legacy WLAN connection method (i.e. does not belong to
+ *  any destination).
+ * -Deletes the connection method. 
+ */
+void TestCmMgrShim::tcLegacyConnMethodWlan()
+{
+    // Create the connection method
+    CmConnectionMethodShim *cm = mCmManagerShim->createConnectionMethod(
+        CMManagerShim::BearerTypeWlan);
+    QVERIFY(cm != NULL);
+    
+    // Update to CommsDat
+    cm->update();
+    
+    // Check bearer type
+    int bearer = cm->getIntAttribute(CMManagerShim::CmBearerType);
+    QCOMPARE(bearer, (int)CMManagerShim::BearerTypeWlan);
+    
+    // Check ID
+    int id = cm->getIntAttribute(CMManagerShim::CmId);
+    QCOMPARE(id, 1);
+    
+    // Delete the connection method reference
+    delete cm;
+    
+    // Refetch the connection method
+    cm = mCmManagerShim->connectionMethod(id);
+    QVERIFY(cm != NULL);
+    
+    // Delete the connection method
+    cm->deleteConnectionMethod();
+    
+    // Check that double deletion throws an exception
+    TEST_CATCH_AND_VERIFY(
+        cm->deleteConnectionMethod(),
+        KErrBadHandle);
+    
+    delete cm;
+}
+
+/**
+ * Test case for testing basic legacy GPRS connection method handling.
+ * -Creates a legacy GPRS connection method (i.e. does not belong to
+ *  any destination).
+ * -Deletes the connection method. 
+ */
+void TestCmMgrShim::tcLegacyConnMethodGprs()
+{
+    // Create the connection method
+    CmConnectionMethodShim *cm = mCmManagerShim->createConnectionMethod(
+        CMManagerShim::BearerTypePacketData);
+    QVERIFY(cm != NULL);
+    
+    // Update to CommsDat
+    cm->update();
+    
+    // Check ID
+    int id = cm->getIntAttribute(CMManagerShim::CmId);
+    QCOMPARE(id, 1);
+    
+    // Check bearer type
+    int bearer = cm->getIntAttribute(CMManagerShim::CmBearerType);
+    QCOMPARE(bearer, (int)CMManagerShim::BearerTypePacketData);
+    
+    // Delete the connection method reference
+    delete cm;
+    
+    // Refetch the connection method
+    cm = mCmManagerShim->connectionMethod(id);
+    QVERIFY(cm != NULL);
+    
+    // Delete the connection method
+    cm->deleteConnectionMethod();
+    delete cm;
+}
+
+/**
+ * Basic error case testing for CmManagerShim.
+ * All test call should throw an exception since they are invalid.
+ */
+void TestCmMgrShim::tcCmManagerBasicFails()
+{
+    // Try creating a destination with an invalid name
+    CmDestinationShim *dest = 0;
+    TEST_CATCH_AND_VERIFY(
+        dest = mCmManagerShim->createDestination(QString("")),
+        KErrArgument);
+    QVERIFY(dest == NULL);
+    
+    // Try creating a connection method with an invalid bearer type
+    CmConnectionMethodShim *cm = 0;
+    TEST_CATCH_AND_VERIFY(
+        cm = mCmManagerShim->createConnectionMethod(0),
+        KErrArgument);
+    QVERIFY(cm == NULL);
+    
+    // Try fetching a connection method with an invalid ID
+    cm = 0;
+    TEST_CATCH_AND_VERIFY(
+        cm = mCmManagerShim->connectionMethod(42),
+        KErrNotFound);
+    QVERIFY(cm == NULL);
+    
+    // Try fetching a destination with an invalid ID
+    dest = 0;
+    TEST_CATCH_AND_VERIFY(
+        dest = mCmManagerShim->destination(42),
+        KErrArgument);
+    QVERIFY(dest == NULL);
+}
+
+/**
+ * Test case for testing basic destination handling
+ * -Create a destination
+ * -Validate the default destination content
+ * -Delete the destination
+ */
+void TestCmMgrShim::tcBasicDestination()
+{
+    // Create a new destination
+    CmDestinationShim *dest;
+    dest = mCmManagerShim->createDestination("TestDestination");
+    QVERIFY(dest != NULL);
+    
+    // Update to CommsDat
+    dest->update();
+    
+    // Check the name
+    QString name(dest->name());
+    QCOMPARE(name, QString("TestDestination"));
+
+    // Check ID
+    uint destinationId = dest->id();
+    QVERIFY(destinationId >= 4000);
+    
+    // Check protection level default value
+    CMManagerShim::CmmProtectionLevel prot = dest->protectionLevel();
+    QCOMPARE(prot, CMManagerShim::ProtLevel0);
+    
+    // Check hidden flag default value
+    bool isHidden = dest->isHidden(); 
+    QCOMPARE(isHidden, false);
+    
+    // Check destination content
+    int connMethodCount = dest->connectionMethodCount();
+    QCOMPARE(connMethodCount, 0);
+    
+    // Delete the destination
+    dest->deleteDestination();
+
+    // Check that double deletion throws an exception
+    TEST_CATCH_AND_VERIFY(
+        dest->deleteDestination(),
+        KErrBadHandle);
+
+    delete dest;
+}
+
+/**
+ * Test case for testing basic modifications for a destination.
+ * -Create a destination
+ * -Add a GPRS connection method to it.
+ * -Add a WLAN connection method to it.
+ * -Delete the GPRS connection method.
+ * -Delete the Destination (and thus also the WLAN connection method).
+ */
+void TestCmMgrShim::tcDestinationModify()
+{
+    // Create a new destination
+    CmDestinationShim *dest;
+    dest = mCmManagerShim->createDestination("TestDestination");
+    QVERIFY(dest != NULL);
+    uint destId = dest->id();
+    QVERIFY(destId >= 4000);
+    
+    // Check destination initial content
+    int connMethodCount = dest->connectionMethodCount();
+    QCOMPARE(connMethodCount, 0);
+    
+    // Create a GPRS connection method
+    CmConnectionMethodShim *cm = mCmManagerShim->createConnectionMethod(
+        CMManagerShim::BearerTypePacketData);
+    QVERIFY(cm != NULL);
+
+    // Update to CommsDat
+    cm->update();
+    
+    // Add the connection method to the destination
+    int index = dest->addConnectionMethod(cm);
+    QCOMPARE(index, 0);
+
+    // Update to CommsDat
+    dest->update();
+    
+    // Create a WLAN connection method
+    CmConnectionMethodShim *cmWlan = mCmManagerShim->createConnectionMethod(
+        CMManagerShim::BearerTypeWlan);
+    QVERIFY(cmWlan != NULL);
+
+    // Update to CommsDat
+    cmWlan->update();
+
+    // Add the connection method to the destination
+    index = dest->addConnectionMethod(cmWlan);
+    QCOMPARE(index, 0);
+
+    // Update to CommsDat
+    dest->update();
+    
+    // Delete the WLAN connection method reference
+    delete cmWlan;
+    cmWlan = 0;
+    
+    // Delete the GPRS connection method
+    dest->deleteConnectionMethod(cm);
+    delete cm;
+    cm = 0;
+    
+    // Update to CommsDat
+    dest->update();
+    
+    // Verify the delete
+    connMethodCount = dest->connectionMethodCount();
+    QCOMPARE(connMethodCount, 1);
+    
+    // Delete the whole destination including the remaining WLAN conn method.
+    dest->deleteDestination();
+    delete dest;
+    
+    // Check that the destination is gone
+    dest = NULL;
+    TEST_CATCH_AND_VERIFY(
+        dest = mCmManagerShim->destination(destId),
+        KErrNotFound);
+    QCOMPARE(dest, (CmDestinationShim *)0);
+}
+
+/**
+ * Test case for adding and reading boolean attribute for a connection method.
+ * -Creates a legacy WLAN connection method (i.e. does not belong to
+ *  any destination).
+ * -Sets a boolean attribute.
+ * -Gets the boolean attribute.
+ * -Deletes the connection method. 
+ */
+void TestCmMgrShim::tcConnMethodSetBoolAttribute()
+{
+    // Create the connection method
+    CmConnectionMethodShim *cm = mCmManagerShim->createConnectionMethod(
+        CMManagerShim::BearerTypeWlan);
+    QVERIFY(cm != NULL);
+    
+    // Update to CommsDat
+    cm->update();
+    
+    // Set bool attribute value
+    cm->setBoolAttribute(CMManagerShim::CmProxyUsageEnabled, true);
+        
+    // Update to CommsDat
+    cm->update();
+     
+    // Get bool attribute value
+    bool testBool = false;
+    testBool = cm->getBoolAttribute(CMManagerShim::CmProxyUsageEnabled);
+    QCOMPARE(testBool, true);
+        
+    // Delete the connection method
+    cm->deleteConnectionMethod();
+    delete cm;
+}
+
+/**
+ * Test case for adding and reading integer attribute for a connection method.
+ * -Creates a legacy WLAN connection method (i.e. does not belong to
+ *  any destination).
+ * -Sets an int attribute.
+ * -Gets the int attribute.
+ * -Deletes the connection method. 
+ */
+void TestCmMgrShim::tcConnMethodSetIntAttribute()
+{
+    // Create the connection method
+    CmConnectionMethodShim *cm = mCmManagerShim->createConnectionMethod(
+        CMManagerShim::BearerTypeWlan);
+    QVERIFY(cm != NULL);
+    
+    // Update to CommsDat
+    cm->update();
+    
+    // Set int attribute value
+    uint testInt = 99;
+    cm->setIntAttribute(CMManagerShim::CmProxyPortNumber, testInt);
+    
+    // Update to CommsDat
+    cm->update();
+     
+    // Get int attribute value
+    uint resultInt = cm->getIntAttribute(CMManagerShim::CmProxyPortNumber);
+    QCOMPARE(resultInt, testInt);    
+    
+    // Delete the connection method
+    cm->deleteConnectionMethod();
+    delete cm;
+}
+
+/**
+ * Test case for adding and reading string attributes for a connection method.
+ * -Creates a legacy WLAN connection method (i.e. does not belong to
+ *  any destination).
+ * -Sets a string attribute.
+ * -Gets the string attribute.
+ * -Deletes the connection method. 
+ */
+void TestCmMgrShim::tcConnMethodSetStringAttribute()
+{
+    // Create the connection method
+    CmConnectionMethodShim *cm = mCmManagerShim->createConnectionMethod(
+        CMManagerShim::BearerTypeWlan);
+    QVERIFY(cm != NULL);
+    
+    // Update to CommsDat
+    cm->update();
+
+    // Set string attribute value
+    QString testString("TestProxyServerName");
+    cm->setStringAttribute(CMManagerShim::CmProxyServerName, testString);
+
+    // Set string8 attribute value
+    QString testString2("key12");
+    cm->setString8Attribute(CMManagerShim::WlanWepKey1InAscii, testString2);
+    
+    // Update to CommsDat
+    cm->update();
+     
+    // Check string attribute value
+    QString resultString = cm->getStringAttribute(CMManagerShim::CmProxyServerName);
+    QCOMPARE(resultString, testString);
+
+    // Check string8 attribute value
+    resultString = cm->getString8Attribute(CMManagerShim::WlanWepKey1InAscii);
+    QCOMPARE(resultString, testString2);
+
+    // Delete the connection method
+    cm->deleteConnectionMethod();
+    delete cm;
+}
+
+/**
+ * Test case for testing attribute reads using a wrong attribute type.
+ * All test reads in this case should fail to an exception.
+ */
+void TestCmMgrShim::tcConnMethodWrongTypeAttributeRead()
+{
+    // Create the connection method
+    CmConnectionMethodShim *cm = mCmManagerShim->createConnectionMethod(
+        CMManagerShim::BearerTypeWlan);
+    QVERIFY(cm != NULL);
+    
+    // Update to CommsDat
+    cm->update();
+
+    // Try reading name erroneously as an int attribute
+    uint intResult = 0;
+    TEST_CATCH_AND_VERIFY(
+        intResult = cm->getIntAttribute(CMManagerShim::CmName),
+        KErrNotSupported);
+    QCOMPARE(intResult, (uint)0);
+    
+    // Try reading name erroneously as a bool attribute
+    bool boolResult = false;
+    TEST_CATCH_AND_VERIFY(
+        boolResult = cm->getBoolAttribute(CMManagerShim::CmName),
+        KErrNotSupported);
+    QCOMPARE(boolResult, false);
+    
+    // Try reading ID erroneously as a string attribute
+    QString stringResult;
+    TEST_CATCH_AND_VERIFY(
+        stringResult = cm->getStringAttribute(CMManagerShim::CmId),
+        KErrNotSupported);
+    QCOMPARE(stringResult, QString(""));
+    
+    // Try reading ID erroneously as a string 8 attribute
+    stringResult = "";
+    TEST_CATCH_AND_VERIFY(
+        stringResult = cm->getString8Attribute(CMManagerShim::CmId),
+        KErrNotSupported);
+    QCOMPARE(stringResult, QString(""));
+    
+    // Delete the connection method
+    cm->deleteConnectionMethod();
+    delete cm;
+}
+
+/**
+ * Test case for testing attribute reads using a wrong attribute type.
+ * All test reads in this case should fail to an exception.
+ */
+void TestCmMgrShim::tcConnMethodWrongTypeAttributeWrite()
+{
+    // Create the connection method
+    CmConnectionMethodShim *cm = mCmManagerShim->createConnectionMethod(
+        CMManagerShim::BearerTypeWlan);
+    QVERIFY(cm != NULL);
+    
+    // Update to CommsDat
+    cm->update();
+
+    // Try writing name erroneously as an int attribute
+    TEST_CATCH_AND_VERIFY(
+        cm->setIntAttribute(CMManagerShim::CmName, 0),
+        KErrNotSupported);
+    
+    // Try writing name erroneously as a bool attribute
+    TEST_CATCH_AND_VERIFY(
+        cm->setBoolAttribute(CMManagerShim::CmName, false),
+        KErrNotSupported);
+    
+    // Try writing ID erroneously as a string attribute
+    TEST_CATCH_AND_VERIFY(
+        cm->setStringAttribute(CMManagerShim::CmId, QString("dada")),
+        KErrNotSupported);
+    
+    // Try reading ID erroneously as a string 8 attribute
+    TEST_CATCH_AND_VERIFY(
+        cm->setString8Attribute(CMManagerShim::CmId, QString("dada")),
+        KErrNotSupported);
+    
+    // Delete the connection method
+    cm->deleteConnectionMethod();
+    delete cm;
+}
+
+/**
+ * Test case for testing connection method refreshing.  
+ * -Create a connection method
+ * -Read the name of the connection method
+ * -Change the name, but don't update CommsDat
+ * -Refsesh connection method
+ * -Check that the name is the original one
+ * -Delete the connection method
+ */
+void TestCmMgrShim::tcConnectionMethodRefresh()
+{
+    // Create the connection method
+    CmConnectionMethodShim *cm = mCmManagerShim->createConnectionMethod(
+        CMManagerShim::BearerTypeWlan);
+    QVERIFY(cm != NULL);
+        
+    // Update to CommsDat
+    cm->update();
+
+    // Check ID
+    int id = cm->getIntAttribute(CMManagerShim::CmId);
+    QCOMPARE(id, 1);
+        
+    // Check the default name
+    QString name = cm->getStringAttribute(CMManagerShim::CmName);
+    QCOMPARE(name, QString("Connection Method"));
+        
+    // Change name
+    cm->setStringAttribute(CMManagerShim::CmName, "WlanBlaaBlaa");
+    // Do not update CommsDat
+
+    // Check the changed name
+    QString newName = cm->getStringAttribute(CMManagerShim::CmName);
+    QCOMPARE(newName, QString("WlanBlaaBlaa"));
+
+    // Refresh connection method
+    cm->refresh();
+
+    // Delete the connection method reference
+    delete cm;
+
+    // Refetch the connection method
+    cm = mCmManagerShim->connectionMethod(id);
+    QVERIFY(cm != NULL);        
+
+    // Check that the bearer name in database is the original one
+    newName = cm->getStringAttribute(CMManagerShim::CmName);
+    QCOMPARE(newName, name);
+        
+    // Delete the connection method
+    cm->deleteConnectionMethod();
+    delete cm;
+}
+
+/**
+ * Test case for testing reading destination's connection methods.
+ * -Create a destination
+ * -Add a GPRS connection method to it.
+ * -Add a WLAN connection method to it.
+ * -Read number of connection methods.
+ * -Read connection method by index.
+ * -Read connection method by unknown index.
+ * -Read connection method by id.
+ * -Read connection method by unknown id.
+ * -Delete the Destination (and connection methods).
+ */
+void TestCmMgrShim::tcDestinationReadConnectionMethods()
+{
+    // Create a new destination
+    CmDestinationShim *dest;
+    dest = mCmManagerShim->createDestination("TestDestination");
+    QVERIFY(dest != NULL);
+    uint destId = dest->id();
+    QVERIFY(destId >= 4000);
+    
+    // Check destination initial content
+    int connMethodCount = dest->connectionMethodCount();
+    QCOMPARE(connMethodCount, 0);
+    
+    // Create a GPRS connection method
+    CmConnectionMethodShim *cmGprs = mCmManagerShim->createConnectionMethod(
+        CMManagerShim::BearerTypePacketData);
+    QVERIFY(cmGprs != NULL);
+    // Update to CommsDat
+    cmGprs->update();
+    
+    // Add the connection method to the destination
+    int index = dest->addConnectionMethod(cmGprs);
+    QCOMPARE(index, 0);
+    // Update to CommsDat
+    dest->update();
+    
+    delete cmGprs;
+    cmGprs = 0;
+    
+    // Create a WLAN connection method
+    CmConnectionMethodShim *cmWlan = mCmManagerShim->createConnectionMethod(
+        CMManagerShim::BearerTypeWlan);
+    QVERIFY(cmWlan != NULL);
+    // Update to CommsDat
+    cmWlan->update();
+
+    // Add the connection method to the destination
+    index = dest->addConnectionMethod(cmWlan);
+    QCOMPARE(index, 0);
+    // Update to CommsDat
+    dest->update();
+
+    
+    // Check number of destination's connection methods
+    connMethodCount = dest->connectionMethodCount();
+    QCOMPARE(connMethodCount, 2);
+
+    // Read connection method by index.
+    CmConnectionMethodShim *cm = dest->connectionMethod(1);
+    QVERIFY(cm != NULL);
+    
+    // Try to read connection method by unknown index.
+    TEST_CATCH_AND_VERIFY(
+            dest->connectionMethod(2),
+            KErrArgument);
+    
+    // Read connection method by id.
+    uint id = cmWlan->getIntAttribute(CMManagerShim::CmId);
+    cm = dest->connectionMethodByID(id);
+    QVERIFY(cm != NULL);
+    
+    delete cmWlan;
+    cmWlan = 0;
+    
+    delete cm;
+    cm = 0;
+    
+    // Try to read connection method by unknown id.    
+    TEST_CATCH_AND_VERIFY(
+        dest->connectionMethodByID(100),
+        KErrNotFound);
+   
+    // Delete the destination (and connection methods).
+    dest->deleteDestination();
+    delete dest;
+}
+
+/**
+ * Test case for testing removing connection method from single destination.
+ * -Create 2 destinations
+ * -Add a WLAN connection method to both.
+ * -Remove the WLAN connection method from the first destination.
+ * -Remove the WLAN connection method from the other destination.
+ * -Delete the Destinations.
+ * -Delete connection method.
+ */
+void TestCmMgrShim::tcDestinationRemoveConnectionMethod()
+{
+    // Create a new destination
+    CmDestinationShim *dest1;
+    dest1 = mCmManagerShim->createDestination("TestDestination1");
+    QVERIFY(dest1 != NULL);
+    uint destId1 = dest1->id();
+    QVERIFY(destId1 >= 4000);
+
+    // Create another destination
+    CmDestinationShim *dest2;
+    dest2 = mCmManagerShim->createDestination("TestDestination2");
+    QVERIFY(dest2 != NULL);
+    uint destId2 = dest2->id();
+    QVERIFY(destId2 >= 4000);
+    
+    // Check destinations initial content
+    int connMethodCount = dest1->connectionMethodCount();
+    QCOMPARE(connMethodCount, 0);
+    connMethodCount = dest2->connectionMethodCount();
+    QCOMPARE(connMethodCount, 0);
+    
+    // Create a WLAN connection method
+    CmConnectionMethodShim *cmWlan = mCmManagerShim->createConnectionMethod(
+        CMManagerShim::BearerTypeWlan);
+    QVERIFY(cmWlan != NULL);
+    // Update to CommsDat
+    cmWlan->update();
+    
+    uint cmWlanId = cmWlan->getIntAttribute(CMManagerShim::CmId);
+    QCOMPARE(cmWlanId, (uint)1);
+
+    // Add the connection method to the destination 1
+    int index = dest1->addConnectionMethod(cmWlan);
+    QCOMPARE(index, 0);
+    // Update to CommsDat
+    dest1->update();
+
+    // Add the connection method to the destination 2
+    index = dest2->addConnectionMethod(cmWlan);
+    QCOMPARE(index, 0);
+    // Update to CommsDat
+    dest2->update();
+        
+    // Remove the WLAN connection method from destination 1
+    dest1->removeConnectionMethod(cmWlan);
+    // Update to CommsDat
+    dest1->update();
+    
+    // Verify the delete
+    connMethodCount = dest1->connectionMethodCount();
+    QCOMPARE(connMethodCount, 0);
+    
+    // Check that WLAN connection method still exists for destination 2
+    connMethodCount = dest2->connectionMethodCount();
+    QCOMPARE(connMethodCount, 1);
+
+    // Remove the WLAN connection method from destination 2
+    dest2->removeConnectionMethod(cmWlan);
+    // Update to CommsDat
+    dest2->update();
+    
+    // Verify the delete
+    connMethodCount = dest2->connectionMethodCount();
+    QCOMPARE(connMethodCount, 0);
+
+    // Delete destinations
+    dest1->deleteDestination();
+    delete dest1;
+    dest2->deleteDestination();
+    delete dest2;
+    
+    // Check that WLAN connection method still exists
+    delete cmWlan;
+    cmWlan = mCmManagerShim->connectionMethod(cmWlanId);
+    QVERIFY(cmWlan != NULL);
+    
+    // Remove WLAN connection method.
+    cmWlan->deleteConnectionMethod();
+    delete cmWlan;
+}
+
+/**
+ * Test case for testing destination's cm priority reading and changing. 
+ * -Create a destination
+ * -Add a GPRS connection method to it.
+ * -Add a WLAN connection method to it.
+ * -Read priority values of the connection methods
+ * -Change the priority values
+ * -Read the changed priority values
+ * -Try to change the priority value to unsupported value
+ * -Delete the destination (and connection methods)
+ */
+void TestCmMgrShim::tcDestinationPriority()
+{
+    // Create a new destination
+    CmDestinationShim *dest;
+    dest = mCmManagerShim->createDestination("TestDestination");
+    QVERIFY(dest != NULL);
+    uint destId = dest->id();
+    QVERIFY(destId >= 4000);
+      
+    // Create a GPRS connection method
+    CmConnectionMethodShim *cmGprs = mCmManagerShim->createConnectionMethod(
+        CMManagerShim::BearerTypePacketData);
+    QVERIFY(cmGprs != NULL);
+    // Update to CommsDat
+    cmGprs->update();
+    
+    // Add the connection method to the destination
+    int index = dest->addConnectionMethod(cmGprs);
+    QCOMPARE(index, 0);
+    // Update to CommsDat
+    dest->update();
+    
+    // Create a WLAN connection method
+    CmConnectionMethodShim *cmWlan = mCmManagerShim->createConnectionMethod(
+        CMManagerShim::BearerTypeWlan);
+    QVERIFY(cmWlan != NULL);
+    // Update to CommsDat
+    cmWlan->update();
+
+    // Add the connection method to the destination
+    index = dest->addConnectionMethod(cmWlan);
+    QCOMPARE(index, 0);
+    // Update to CommsDat
+    dest->update();
+        
+    // Get the priority of connection methods
+    int priority = dest->priority(cmWlan);
+    QCOMPARE(priority, 1);
+    priority = dest->priority(cmGprs);
+    QCOMPARE(priority, 2);
+    
+    // Modify the priority of GPRS connection method
+    dest->modifyPriority(cmGprs, 0);
+    dest->modifyPriority(cmWlan, 1);
+    // Update to CommsDat
+    dest->update();
+    
+    // Check the priorities
+    priority = dest->priority(cmGprs);
+    QCOMPARE(priority, 1);
+    priority = dest->priority(cmWlan);
+    QCOMPARE(priority, 2);
+
+    // Try to modify the priority to forbidden value  
+    TEST_CATCH_AND_VERIFY(
+        dest->modifyPriority(cmGprs, 2),
+        KErrArgument);
+
+    // Delete the whole destination including the remaining WLAN conn method.
+    dest->deleteDestination();
+    
+    delete dest;
+    delete cmGprs;
+    delete cmWlan;
+}
+
+/**
+ * Test case for testing miscellaneous methods for destination. 
+ * -Create a destination
+ * -Change the name of the destination
+ * -Check if the destination is hidden
+ * -Check if destination is "internet" with metadata.
+ * -Delete the destination
+ */
+void TestCmMgrShim::tcDestinationMisc()
+{
+    // Create a new destination
+    CmDestinationShim *dest;
+    dest = mCmManagerShim->createDestination("TestDestination");
+    QVERIFY(dest != NULL);
+    uint destId = dest->id();
+    QVERIFY(destId >= 4000);
+          
+    // Change the name of the destination
+    dest->setName("NewName");
+    // Update to CommsDat
+    dest->update();
+    
+    // Check the name
+    QString name(dest->name());
+    QCOMPARE(name, QString("NewName"));
+
+    // Check if destination is hidden
+    bool hidden = dest->isHidden();
+    QCOMPARE(hidden, false);
+    
+    // Check "internet" metadata field
+    uint metadata = dest->metadata(CMManagerShim::SnapMetadataInternet);
+    QCOMPARE(metadata, (uint)false);
+    
+    // Delete the destination
+    dest->deleteDestination();
+    delete dest;
+}
+
+/**
+ * Test case for testing destination refreshing method.  
+ * -Create a destination
+ * -Add a GPRS connection method, but don't update CommsDat
+ * -Change the name of the destination, but don't update CommsDat
+ * -Refresh destination
+ * -Check that the changes are not valid anymore
+ * -Delete the destination
+ * -Delete the connection method
+ */
+void TestCmMgrShim::tcDestinationRefresh()
+{
+    // Create a new destination
+    CmDestinationShim *dest;
+    dest = mCmManagerShim->createDestination("TestDestination");
+    QVERIFY(dest != NULL);
+    uint destId = dest->id();
+    QVERIFY(destId >= 4000);
+    dest->update();
+
+    // Create a GPRS connection method
+    CmConnectionMethodShim *cmGprs = mCmManagerShim->createConnectionMethod(
+        CMManagerShim::BearerTypePacketData);
+    QVERIFY(cmGprs != NULL);
+    // Update to CommsDat
+    cmGprs->update();
+    
+    // Add the connection method to the destination
+    int index = dest->addConnectionMethod(cmGprs);
+    QCOMPARE(index, 0);
+    // Don't update CommsDat
+    
+    // Change the name of the destination
+    dest->setName("NewName");
+    // Don't update to CommsDat
+
+    // Refresh destination
+    dest->refresh();
+    
+    // Delete the destination reference
+    delete dest;
+    
+    // Refetch the destination
+    dest = mCmManagerShim->destination(destId);
+    QVERIFY(dest != NULL);
+    
+    // Check the name that it is the original one
+    QString name(dest->name());
+    QCOMPARE(name, QString("TestDestination"));
+
+    // Check destination content
+    int connMethodCount = dest->connectionMethodCount();
+    QCOMPARE(connMethodCount, 0);
+    
+    // Delete the destination
+    dest->deleteDestination();
+    delete dest;
+
+    // Delete connection method
+    bool ok = cmGprs->deleteConnectionMethod();
+    delete cmGprs;
+    QCOMPARE(ok, true);
+}
+
+/**
+ * Test case for testing data reads using a invalid input data.
+ * All test reads in this case should fail to an exception.
+ */
+void TestCmMgrShim::tcDestinationInvalidParams()
+{
+    // Create a new destination
+    CmDestinationShim *dest;
+    dest = mCmManagerShim->createDestination("TestDestination");
+    QVERIFY(dest != NULL);
+    
+    // Update to CommsDat
+    dest->update();
+
+    // Try reading with an invalid connection method index
+    CmConnectionMethodShim *cm = 0;
+    TEST_CATCH_AND_VERIFY(
+        dest->connectionMethod(42),
+        KErrArgument);
+    QVERIFY(cm == 0);
+    
+    // Try reading with an invalid connection method ID
+    cm = 0;
+    TEST_CATCH_AND_VERIFY(
+        dest->connectionMethodByID(42),
+        KErrNotFound);
+    QVERIFY(cm == 0);
+    
+    // Delete the destination
+    dest->deleteDestination();
+    delete dest;
+}
+
+// -----------------------------------------------------------------------------
+// SUB TEST CASES
+// -----------------------------------------------------------------------------
+
+/**
+ * Case for deleting all destinations.
+ */
+void TestCmMgrShim::deleteDestinations()
+{
+    // Read all destinations
+    QList<uint> destinations;
+    mCmManagerShim->allDestinations(destinations);
+    
+    // Delete the destinations
+    for (int i=0; i < destinations.count(); i++) {
+        CmDestinationShim *dest = mCmManagerShim->destination(destinations[i]);
+        dest->deleteDestination();
+        delete dest;
+    }
+}
+
+/**
+ * Case for deleting all connection methods.
+ */
+void TestCmMgrShim::deleteConnectionMethods()
+{
+    // Read all connection methods
+    QList<uint> connMethods;
+    mCmManagerShim->connectionMethod(connMethods, false);
+    
+    // Remove all connection methods
+    for (int i=0; i < connMethods.count(); i++){
+        CmConnectionMethodShim *cm = 
+            mCmManagerShim->connectionMethod(connMethods[i]);
+        QVERIFY(cm != NULL);
+        bool ok = cm->deleteConnectionMethod();
+        QVERIFY(ok == true);
+        delete cm;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/tsrc/ut/testcmmgrshim.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2010 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:
+* Header for Connection Settings Shim Unit Test program.
+*/
+
+#include <QtTest/QtTest>
+
+#include <cmmanager_shim.h>
+
+class HbMainWindow;
+
+class TestCmMgrShim : public QObject
+{
+    Q_OBJECT
+
+    public slots:
+        // Test framework functions
+        void initTestCase();
+        void cleanupTestCase();
+        void init();
+        void cleanup();
+
+    private slots:
+        // Test cases
+        void tcResetSettings();
+        void tcLegacyConnMethodWlan();
+        void tcLegacyConnMethodGprs();
+        void tcCmManagerBasicFails();
+        void tcBasicDestination();
+        void tcDestinationModify();
+        void tcConnMethodSetBoolAttribute();
+        void tcConnMethodSetIntAttribute();
+        void tcConnMethodSetStringAttribute();
+        void tcConnMethodWrongTypeAttributeRead();
+        void tcConnMethodWrongTypeAttributeWrite();
+        void tcConnectionMethodRefresh();
+        void tcDestinationReadConnectionMethods();
+        void tcDestinationRemoveConnectionMethod();
+        void tcDestinationPriority();
+        void tcDestinationMisc();
+        void tcDestinationRefresh();
+        void tcDestinationInvalidParams();
+        
+    private:
+        // Sub test cases
+        void deleteDestinations();
+        void deleteConnectionMethods();
+
+    private:
+        // Test data
+        CmManagerShim *mCmManagerShim;
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/tsrc/ut/testcmmgrshim.pro	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,36 @@
+#
+# Copyright (c) 2010 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:
+# Project file for Connection Settings Shim Unit Tests.
+
+TEMPLATE = app
+
+TARGET = testcmmgrshim
+
+CONFIG += hb qtestlib
+
+INCLUDEPATH += .
+DEPENDPATH += .
+
+HEADERS += \
+    testcmmgrshim.h
+SOURCES += \
+    testcmmgrshim.cpp
+
+LIBS += -lconnection_settings_shim
+
+symbian: {
+    SYMBIAN_PLATFORMS = WINSCW ARMV5
+    TARGET.CAPABILITY = ALL -TCB
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/connection_settings_shim/tsrc/ut/tools/cmmgrshim_ctc.bat	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,79 @@
+::
+:: Copyright (c) 2010 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:
+:: Script for running Connection Settings Shim test cases with CTC analysis.
+
+@echo off
+
+::-----------------------------------------------------------------------------
+:: Set the local variables
+::-----------------------------------------------------------------------------
+
+:: Connection Settings Shim base directory
+set cmmgrshim_dir=..\..\..
+pushd %cmmgrshim_dir%
+
+:: CTC instrumentation excludes
+set ctc_excludes=-C EXCLUDE=* -C NO_EXCLUDE=src\*.cpp
+
+::-----------------------------------------------------------------------------
+:: Remove old coverage data
+::-----------------------------------------------------------------------------
+
+echo Cleaning up...
+del MON.* ctcerr.txt profile.txt
+rd /s /q CTCHTML
+echo ...done
+
+::-----------------------------------------------------------------------------
+:: Build & instrument code
+::-----------------------------------------------------------------------------
+
+echo Building code and instrumenting..
+call del MON.* ctcerr.txt profile.txt
+call make distclean
+call qmake
+call ctcwrap -i d -2comp %ctc_excludes% sbs -c winscw_udeb
+echo ...done
+
+::-----------------------------------------------------------------------------
+:: Build test code
+::-----------------------------------------------------------------------------
+
+echo Building test code...
+call cd tsrc\ut
+call make distclean
+call qmake
+call sbs -c winscw_udeb
+echo ...done
+
+::-----------------------------------------------------------------------------
+:: Execute the tests
+::-----------------------------------------------------------------------------
+
+echo Running tests..
+cd ..\..
+call \epoc32\release\winscw\udeb\testcmmgrshim.exe
+echo ...done
+
+::-----------------------------------------------------------------------------
+:: Create coverage results
+::-----------------------------------------------------------------------------
+
+echo Creating results...
+call ctcpost -p profile.txt
+call ctc2html -i profile.txt
+echo ...done
+
+popd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpdestinationplugin/cpdestinationplugin.pro	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,61 @@
+# Copyright (c) 2010 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:
+#
+
+TEMPLATE = lib
+TARGET = cpdestinationplugin
+DEPENDPATH += .
+INCLUDEPATH += . 
+CONFIG += hb plugin
+CONFIG += debug
+MOC_DIR = moc
+OBJECTS_DIR = obj
+RCC_DIR = rcc
+LIBS += -lcpframework \
+        -lconnection_settings_shim
+symbian*::LIBS += -lcmmanager
+RESOURCES = res/cpdestinationplugin.qrc
+
+# Sources
+HEADERS += inc/cpiapitem.h \
+    inc/cpdestinationplugin.h \
+    inc/cpdestinationgroup.h \
+    inc/cpadddestinationentryitemdata.h \
+    inc/cpdestinationentryitem.h \
+    traces/OstTraceDefinitions.h
+SOURCES += src/cpiapitem.cpp \
+    src/cpadddestinationentryitemdata.cpp \
+    src/cpdestinationentryitem.cpp \
+    src/cpdestinationplugin.cpp \
+    src/cpdestinationgroup.cpp
+
+TRANSLATIONS = cpdestinationplugin.ts
+
+symbian:
+{ 
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.UID3 = 0x2002BC90
+    TARGET.CAPABILITY = CAP_GENERAL_DLL
+     
+    deploy.path = C:
+    qtplugins.path = /resource/qt/plugins/controlpanel
+    qtplugins.sources += qmakepluginstubs/cpdestinationplugin.qtplugin
+    
+    for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin $$deploy.path$$qtplugins.path/$$basename(qtplugin)"
+    BLD_INF_RULES.prj_exports += "rom/cpdestinationplugin.iby CORE_MW_LAYER_IBY_EXPORT_PATH(cpdestinationplugin.iby)"
+    BLD_INF_RULES.prj_exports += "rom/cpdestinationplugin_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(cpdestinationplugin_resources.iby)"
+}
+
+plugin.sources = cpdestinationplugin.dll
+plugin.path = /resource/qt/plugins/controlpanel
+DEPLOYMENT += plugin
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpdestinationplugin/inc/cpadddestinationentryitemdata.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2010 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:  
+ *  Data item for representing "Add Destination" button in UI.
+ */
+
+#ifndef CPADDDESTINATIONENTRYITEMDATA_H
+#define CPADDDESTINATIONENTRYITEMDATA_H
+
+// System includes
+#include <cpsettingformentryitemdata.h>
+
+// User includes
+
+// Forward declarations
+class CpDestinationGroup;
+class CmManagerShim;
+class HbInputDialog;
+class HbAction;
+
+// External data types
+
+// Constants
+
+// Class declaration
+class CpAddDestinationEntryItemData : public CpSettingFormEntryItemData
+{
+	Q_OBJECT
+public:
+	explicit CpAddDestinationEntryItemData( 
+	    CpItemDataHelper &itemDataHelper, 
+	    CpDestinationGroup *parent = 0);
+	
+	virtual ~CpAddDestinationEntryItemData();
+	
+signals:
+
+public slots:
+    void setNewDestinationName();
+
+protected:
+
+protected slots:
+	
+private:
+	virtual CpBaseSettingView *createSettingView() const;
+	bool isDestinationNameValid(const QString dest, CmManagerShim *cmm) const;
+	void showErrorNote();
+    
+private slots:
+
+    void onLaunchView();
+	
+private: // data
+	
+    //! Parent object
+	CpDestinationGroup *mParent;
+	//! New Destination name query dialog
+	HbInputDialog      *mDialog;
+	//! New Destination name query's OK action
+	HbAction           *mOkAction;
+	
+	//! Maximun length for destination name
+	static const int DestinationNameMaxLength = 30;
+	
+};
+
+#endif //CPADDDESTINATIONENTRYITEMDATA_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpdestinationplugin/inc/cpdestinationentryitem.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,120 @@
+/*
+* Copyright (c) 2010 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:  
+* This items represents one Destination in UI.
+*
+*/
+
+#ifndef CPDESTINATIONENTRYITEM_H
+#define CPDESTINATIONENTRYITEM_H
+
+// System includes
+#include <QSharedPointer>
+#include <cpsettingformentryitemdata.h>
+#include <cmmanagerdefines_shim.h>
+
+// User includes
+
+// Forward declarations
+class QString;
+class HbMenu;
+class HbView;
+class HbListWidget;
+class HbListWidgetItem;
+class HbMainWindow;
+class HbAction;
+class HbInputDialog;
+class CpItemDataHelper;
+class CpIapItem;
+class CmConnectionMethodShim;
+class CmManagerShim;
+
+// External data types
+
+// Constants
+
+// Class declaration
+class CpDestinationEntryItemData : public CpSettingFormEntryItemData
+{
+    Q_OBJECT
+public:
+    explicit CpDestinationEntryItemData(CpItemDataHelper &itemDataHelper);
+    virtual ~CpDestinationEntryItemData();
+    
+    int destinationId();
+    void setDestinationId( int destId );
+    QString destinationName();
+    void setDestinationName(const QString destinationName);
+    
+signals:
+    void destChanged();
+    
+public slots:
+    void updateDestinationView();
+    void showItemMenu(QPointF position);
+    void renameDestination();
+    void confirmDestinationDelete();
+    void deleteDestination();
+    void activateArrangeMode();
+    void viewDone();
+    void viewCancel();
+    void updateIndex(HbListWidgetItem *widgetItem);
+    void saveNewDestinationName();
+    
+protected:
+    
+protected slots:
+    
+private:
+    virtual CpBaseSettingView *createSettingView() const;
+    void fetchReferencedAps(
+        QList<QSharedPointer<CmConnectionMethodShim> > &apList, const CmManagerShim *cmm) const;
+    bool isDestinationNameValid(QString &destination, const CmManagerShim *cmm);
+    void createArrangeModeView(HbView *view);
+    void constructSettingView(CpBaseSettingView *view) const;
+    HbMenu *createItemMenu(
+        CMManagerShim::CmmProtectionLevel protLvl,
+        const QPointF position);
+    void lauchNewDestinationNameQuery();
+    void showRenameError(const QString &info);
+    void showErrorNote(const QString &info);
+            
+private slots:
+    
+private: // data
+    
+    //! Helper for connecting signals to underlying widgets
+    CpItemDataHelper    *mItemDataHelper;
+    //! Unique Destination ID
+    int                 mDestinationId;
+    //! Destination Name
+    QString             mDestinationName;
+    //! List of access points contained by this object
+    QList<CpIapItem*>   *mAps;
+    //! Pointer to CmManager for commsdat operations
+    CmManagerShim       *mCmm;
+    //! Previous view when arrange mode view is shown
+    HbView              *mPreView;
+    //! List of access points for arrange mode
+    HbListWidget        *mList;
+    //! New Destination name query dialog
+    HbInputDialog      *mDialog;
+    //! New Destination name query's OK action
+    HbAction           *mOkAction;
+    
+    //! Maximun length for destination name
+    static const int DestinationNameMaxLength = 30;
+};
+
+#endif /* CPDESTINATIONENTRYITEM_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpdestinationplugin/inc/cpdestinationgroup.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,82 @@
+/*
+* Copyright (c) 2010 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:  
+*   CpDestinationGroup contains all destination UI items as well as 
+*   items for uncategorized access points and adding new destinations.
+*/
+ 
+#ifndef CPDESTINATIONGROUP_H
+#define CPDESTINATIONGROUP_H
+
+// System includes
+#include <QSharedPointer>
+#include <cpsettingformitemdata.h>
+
+// User includes
+#include "cpbearerapplugininterface.h"
+
+// Forward declarations
+class CpDestinationEntryItemData;
+class CmDestinationShim;
+class CmManagerShim;
+
+// External data types
+
+// Constants
+
+// Class declaration
+class CpDestinationGroup : public CpSettingFormItemData
+{
+    Q_OBJECT
+    
+public:
+    CpDestinationGroup(CpItemDataHelper &itemDataHelper);
+    ~CpDestinationGroup();
+    
+    void addDestination(const QString &dest, int destId);
+    void deleteDestination(int destId);
+    CpBearerApPluginInterface *findBearerPlugin(int apId);
+    
+signals:
+    
+public slots:
+    void updateDestinationInformation();
+    
+protected:
+    
+protected slots:
+        
+private: 
+    void createUncategorisedDestination();
+    void fetchDestinations(QList<QSharedPointer<CmDestinationShim> > &destinationList);
+    void loadBearerPlugins();
+	QString getDestinationAdditionalText(int iapCount);
+	
+private slots:
+
+private: // data
+
+    //! Helper for connecting signals to underlying widgets
+    CpItemDataHelper                    *mItemDataHelper;
+    //! True is uncategorised "destination" is currently shown
+    bool                                mUncategorisedShown;
+    //! Pointer to CmManager for commsdat operations
+    CmManagerShim                       *mCmManager;
+    /*! List of plugins that implement views for access points 
+     *  according to bearer type
+     */
+    QList<CpBearerApPluginInterface *>  *mBearerPlugins;
+};
+
+#endif // CPDESTINATIONGROUP_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpdestinationplugin/inc/cpdestinationplugin.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,65 @@
+/*
+* Copyright (c) 2010 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:  
+*   Control Panel plugin for showing destinations and access points
+*   settings.
+*
+*/
+
+#ifndef CPDESTINATIONPLUGIN_H
+#define CPDESTINATIONPLUGIN_H
+
+// System includes
+#include <QObject>
+#include <cpplugininterface.h>
+
+// User includes
+
+// Forward declarations
+class QTranslator;
+
+// External data types
+
+// Constants
+
+// Class declaration
+class CpDestinationPlugin : public QObject, public CpPluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(CpPluginInterface)
+    
+public:
+    CpDestinationPlugin();
+    ~CpDestinationPlugin();
+    QList<CpSettingFormItemData*> createSettingFormItemData(CpItemDataHelper &itemDataHelper) const;
+    
+signals:
+
+public slots:
+
+protected:
+
+protected slots:
+
+private:
+
+private slots:
+
+private: // data
+    //! Translator for localization
+    QTranslator *mTranslator;
+    
+};
+
+#endif // CPDESTINATIONPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpdestinationplugin/inc/cpiapitem.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,118 @@
+/*
+* Copyright (c) 2010 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:  
+*   Data item for representing access points in UI.
+*
+*/
+
+#ifndef CPIAPITEM_H
+#define CPIAPITEM_H
+
+// System includes
+#include <QObject>
+#include <QPoint>
+#include <QModelIndex>
+#include <cpsettingformentryitemdata.h>
+#include <cmmanagerdefines_shim.h>
+
+// User includes
+
+// Forward declarations
+class HbDialog;
+class HbRadioButtonList;
+class HbAction;
+class HbMenu;
+class CmManagerShim;
+class CpBearerApPluginInterface;
+
+// External data types
+
+// Constants
+
+// Class declaration
+class CpIapItem : public CpSettingFormEntryItemData
+    {
+    Q_OBJECT
+    
+public:
+    CpIapItem(
+        CpItemDataHelper &itemDataHelper, 
+        int iapId, 
+        const QString &iapName, 
+        int destId,
+        bool apProtected,
+        CpBearerApPluginInterface *bearerPlugin);
+    
+    ~CpIapItem();
+    
+    int getIapId() const;
+    
+signals:
+    void iapChanged();
+    
+public slots:
+    void showItemMenu(QPointF position);
+    void moveIap();
+    void showDeleteConfirmation();
+    void shareIap();
+    void queryDialogClosed();
+    void deleteConfirmed();
+    void updateIap(const QModelIndex index);
+
+protected:
+    
+protected slots:
+
+private:
+    virtual CpBaseSettingView *createSettingView() const;
+    void queryDestination();
+    void saveMove(int id);
+    void saveShare(int id);
+    bool isCmManagerAvailable();
+    HbMenu *createItemMenu(
+        CMManagerShim::CmmProtectionLevel protLvl,
+        const QPointF &position);
+    void showErrorNote(const QString &info);
+
+private slots:
+
+private: // data 
+    //! Unique ID for access point
+    int                         mIapId;
+    //! Access point name
+    QString                     mIapName;
+    //! ID of the destination referencing this access point
+    int                         mDestId;
+    //! Boolean showing if access point is protected.
+    bool                        mProtected;
+    //! Helper for connecting signals to underlying widgets
+    CpItemDataHelper            *mItemDataHelper;
+    //! Pointer to CmManager for commsdat operations
+    CmManagerShim               *mCmm;
+    //! Plugin that implements settings view for this access point
+    CpBearerApPluginInterface   *mBearerPlugin;
+    
+    //! Variable showing if access point move transaction is ongoing
+    bool                        mMoveOngoing;
+    //! Target destination query dialog. Used for move and share
+    HbDialog                    *mDialog;
+    //! Dialog's OK action
+    HbAction                    *mOk;
+    //! List of available destinations' IDs
+    QList<uint>                 mDestinationList;
+    //! List of available destinations
+    HbRadioButtonList           *mList;
+};
+
+#endif // CPIAPITEM_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpdestinationplugin/res/cpdestinationplugin.qrc	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,5 @@
+<RCC>
+    <qresource prefix="/docml" >
+        <file>cpdestinationplugindialogs.docml</file>
+    </qresource>
+</RCC>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpdestinationplugin/rom/cpdestinationplugin.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2010 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:
+* Destination Plugin IBY file for control panel
+*/
+
+#ifndef CPDESTINATIONPLUGIN_IBY
+#define CPDESTINATIONPLUGIN_IBY
+
+#include <data_caging_paths_for_iby.hrh>
+
+file=ABI_DIR/BUILD_DIR/cpdestinationplugin.dll SHARED_LIB_DIR/cpdestinationplugin.dll
+
+data=/epoc32/data/c/resource/qt/plugins/controlpanel/cpdestinationplugin.qtplugin resource/qt/plugins/controlpanel/cpdestinationplugin.qtplugin
+
+#endif // CPDESTINATIONPLUGIN_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpdestinationplugin/rom/cpdestinationplugin_resources.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2010 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:
+* Destination Plugin IBY file.
+*/
+
+#ifndef CPDESTINATIONPLUGIN_RESOURCES_IBY
+#define CPDESTINATIONPLUGIN_RESOURCES_IBY
+
+#include <data_caging_paths_for_iby.hrh>
+
+data=DATAZ_/QT_TRANSLATIONS_DIR/cpdestinationplugin.qm QT_TRANSLATIONS_DIR/cpdestinationplugin.qm
+
+#endif // CPDESTINATIONPLUGIN_RESOURCES_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpdestinationplugin/src/cpadddestinationentryitemdata.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,213 @@
+/*
+ * Copyright (c) 2010 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:  
+ *   Data item for representing "Add Destination" button in UI.
+ */
+
+// System includes
+#include <HbInputDialog>
+#include <HbAction>
+#include <HbMessageBox>
+#include <HbPopup>
+#include <cpitemdatahelper.h>
+#include <cmdestination_shim.h>
+#include <cmmanager_shim.h>
+
+// User includes
+#include "cpadddestinationentryitemdata.h"
+#include "cpdestinationgroup.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cpadddestinationentryitemdataTraces.h"
+#endif
+/*!
+    \class  CpAddDestinationEntryItemData
+    \brief  This class is a dummy destination. It does not contain 
+            access points but clicking it starts new destination 
+            creation process.
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+
+/*!
+            
+    Constructor.
+    
+    @param[in] itemDataHelper Helper from Control Panel for making connections.
+    @param[in] parent Parent object.
+ */
+CpAddDestinationEntryItemData::CpAddDestinationEntryItemData(CpItemDataHelper &itemDataHelper,
+                                                             CpDestinationGroup *parent)
+    : CpSettingFormEntryItemData(itemDataHelper),
+    mParent(parent),
+    mDialog(0)
+{
+    OstTraceFunctionEntry0(CPADDDESTINATIONENTRYITEMDATA_CPADDDESTINATIONENTRYITEMDATA_ENTRY);
+    // Fix connections
+    itemDataHelper.removeConnection(this,SIGNAL(pressed()),this,SLOT(onLaunchView()));
+    itemDataHelper.addConnection(this,SIGNAL(clicked()),this,SLOT(onLaunchView()));
+    OstTraceFunctionExit0(CPADDDESTINATIONENTRYITEMDATA_CPADDDESTINATIONENTRYITEMDATA_EXIT);
+}
+
+/*!
+    Destructor.
+ */
+CpAddDestinationEntryItemData::~CpAddDestinationEntryItemData()
+{
+    OstTraceFunctionEntry0(DUP1_CPADDDESTINATIONENTRYITEMDATA_CPADDDESTINATIONENTRYITEMDATA_ENTRY);
+    OstTraceFunctionExit0(DUP1_CPADDDESTINATIONENTRYITEMDATA_CPADDDESTINATIONENTRYITEMDATA_EXIT);
+}
+
+/*!
+    Inherited member from CpSettingFormEntryItemData. When this item is clicked
+    new dialog is started for creating new destination.
+ */
+void CpAddDestinationEntryItemData::onLaunchView()
+{
+    OstTraceFunctionEntry0(CPADDDESTINATIONENTRYITEMDATA_ONLAUNCHVIEW_ENTRY);
+    mDialog = new HbInputDialog();
+    mDialog->setAttribute(Qt::WA_DeleteOnClose);
+    mDialog->lineEdit()->setMaxLength(DestinationNameMaxLength);
+    mDialog->clearActions();
+    mDialog->setPromptText(hbTrId("txt_occ_dialog_destination_name"));
+    mDialog->setInputMode(HbInputDialog::TextInput);
+    mOkAction = new HbAction(hbTrId("txt_common_button_ok"));
+    bool connected = connect(mOkAction, 
+                             SIGNAL(triggered()), 
+                             this, 
+                             SLOT(setNewDestinationName()));
+    Q_ASSERT(connected);
+    HbAction *cancelAction = new HbAction(hbTrId("txt_common_button_cancel"));
+    mDialog->addAction(mOkAction);
+    mDialog->addAction(cancelAction);
+    mDialog->show();
+    OstTraceFunctionExit0(CPADDDESTINATIONENTRYITEMDATA_ONLAUNCHVIEW_EXIT);
+}
+
+/*!
+    This function is called when user selects OK from destination
+    name query popup. The given name is valited and if the name is
+    valid, new destination is created in commsdat with given name.
+    If validation fails user is promted again for destination name.
+ */
+void CpAddDestinationEntryItemData::setNewDestinationName()
+{
+    OstTraceFunctionEntry0(CPADDDESTINATIONENTRYITEMDATA_SETNEWDESTINATIONNAME_ENTRY);
+    QString destinationName = mDialog->value().toString();
+    bool destinationNameInvalid = true;
+    CmManagerShim *cmm = NULL;
+    CmDestinationShim *destination = NULL;
+    
+    try {
+        cmm = new CmManagerShim();
+        if (isDestinationNameValid(destinationName, cmm)) {
+            // Destination name OK. Create new destination.
+            destination = cmm->createDestination(destinationName);
+            destinationNameInvalid = false;
+        }
+    } catch (const std::exception&) {
+        OstTrace0( TRACE_NORMAL, DUP2_CPADDDESTINATIONENTRYITEMDATA_SETNEWDESTINATIONNAME, "CpAddDestinationEntryItemData::setNewDestinationName: exception caught" );
+        return;
+    }
+
+    if (!destinationNameInvalid) {
+        // Update view
+        if (mParent != 0) {
+            mParent->addDestination(destinationName, destination->id());
+        }                
+    } else {
+        showErrorNote();
+    }
+    delete destination;
+    delete cmm;
+    OstTraceFunctionExit0(CPADDDESTINATIONENTRYITEMDATA_SETNEWDESTINATIONNAME_EXIT);
+}
+
+/*!
+    Inherited member from CpSettingFormEntryItemData. This item does not
+    create new view because it does not need one.
+    
+    \return NULL
+ */
+CpBaseSettingView *CpAddDestinationEntryItemData::createSettingView() const
+{
+	OstTraceFunctionEntry0(CPADDDESTINATIONENTRYITEMDATA_CREATESETTINGVIEW_ENTRY);
+	OstTraceFunctionExit0(CPADDDESTINATIONENTRYITEMDATA_CREATESETTINGVIEW_EXIT);
+	return NULL;
+}
+
+/*!
+    Function for checking if the given destination name is valid. Duplicate and
+    and empty names are rejected.
+    
+    @param[in] dest Name which user has entered to be the name of the new destination.
+    @param[in] cmm Pointer to CmManagerShim for accessing data in commsdat.
+    \return true if name is valid.
+ */
+bool CpAddDestinationEntryItemData::isDestinationNameValid(const QString dest, CmManagerShim *cmm) const
+{
+    OstTraceFunctionEntry0(CPADDDESTINATIONENTRYITEMDATA_ISDESTINATIONNAMEVALID_ENTRY);
+    bool retVal = true;
+    
+    if (dest.length() > 0) {
+        QList<uint> destinationList;
+        cmm->allDestinations(destinationList);
+    
+        for (int i = 0; i < destinationList.count(); i ++) {
+            CmDestinationShim *destination = cmm->destination(destinationList[i]);
+            if (0 == dest.compare(destination->name())) {
+                retVal = false;
+                break;
+            }
+            delete destination;
+        }
+    } else {
+        retVal = false;
+    }
+    OstTraceFunctionExit0(CPADDDESTINATIONENTRYITEMDATA_ISDESTINATIONNAMEVALID_EXIT);
+    return retVal;
+}
+
+/*!
+ * Helper function for showing error note when user inputs
+ * invalid destination name.
+ */
+void CpAddDestinationEntryItemData::showErrorNote()
+{
+    OstTraceFunctionEntry0(CPADDDESTINATIONENTRYITEMDATA_SHOWERRORNOTE_ENTRY);
+    // Destination name NOK. Inform user and ask again.
+    HbMessageBox *note = new HbMessageBox(HbMessageBox::MessageTypeInformation);
+    note->clearActions();
+    note->setAttribute(Qt::WA_DeleteOnClose);
+    QString info = hbTrId("txt_occ_info_invalid_name");
+    note->setText(info);
+    note->setTimeout(HbPopup::NoTimeout);
+    HbAction *errorOk = new HbAction(hbTrId("txt_common_button_ok"));
+    bool connected = connect(
+        errorOk,
+        SIGNAL(triggered()),
+        this,
+        SLOT(onLaunchView()));
+    Q_ASSERT(connected);                        
+    note->addAction(errorOk);
+    note->show();
+    OstTraceFunctionExit0(CPADDDESTINATIONENTRYITEMDATA_SHOWERRORNOTE_EXIT);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpdestinationplugin/src/cpdestinationentryitem.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,759 @@
+/*
+* Copyright (c) 2010 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:  
+*   This items represents one Destination in UI.
+*/
+
+// System includes
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbToolBar>
+#include <HbAction>
+#include <HbDataFormViewItem>
+#include <HbMenu>
+#include <HbListDialog>
+#include <HbInputDialog>
+#include <HbMessageBox>
+#include <HbPopup>
+#include <HbListWidget>
+#include <HbListWidgetItem>
+#include <HbMainWindow>
+#include <cppluginutility.h>
+#include <cpitemdatahelper.h>
+#include <cpbasesettingview.h>
+#include <cmdestination_shim.h>
+#include <cmconnectionmethod_shim.h>
+#include <cmmanager_shim.h>
+
+// User includes
+#include "cpiapitem.h"
+#include "cpdestinationentryitem.h"
+#include "cpdestinationgroup.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cpdestinationentryitemTraces.h"
+#endif
+/*!
+    \class  CpDestinationEntryItemData
+    \brief  This class represents destination in data model. 
+            It takes care of all destination related operations.
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!         
+    Constructor.
+    
+    @param[in] itemDataHelper Helper for connecting signals and slots.
+ */
+CpDestinationEntryItemData::CpDestinationEntryItemData(CpItemDataHelper &itemDataHelper)
+    : CpSettingFormEntryItemData(itemDataHelper),
+    mDialog(0),
+    mOkAction(0)
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_CPDESTINATIONENTRYITEMDATA_ENTRY);
+    mAps = new QList<CpIapItem*>();
+    try {
+        mCmm = new CmManagerShim();
+    } catch (const std::exception&) {
+        OstTrace0(TRACE_NORMAL, CPDESTINATIONENTRYITEMDATA_CPDESTINATIONENTRYITEMDATA, "CpDestinationEntryItemData::CpDestinationEntryItemData: Exception caught");
+        mCmm = NULL;
+    }
+    mList = new HbListWidget();
+    bool connectionSuccessful = connect(
+        mList,
+        SIGNAL(released(HbListWidgetItem *)),
+        this,
+        SLOT(updateIndex(HbListWidgetItem*)));
+    Q_ASSERT(connectionSuccessful);
+    
+    // Fix connections
+    itemDataHelper.removeConnection(this,SIGNAL(pressed()),this,SLOT(onLaunchView()));
+    itemDataHelper.addConnection(this,SIGNAL(clicked()),this,SLOT(onLaunchView()));
+    itemDataHelper.addConnection(this,SIGNAL(longPress(QPointF)),this,SLOT(showItemMenu(QPointF)));
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_CPDESTINATIONENTRYITEMDATA_EXIT);
+}
+
+/*!
+    Destructor
+ */
+CpDestinationEntryItemData::~CpDestinationEntryItemData()
+{
+    OstTraceFunctionEntry0(DUP1_CPDESTINATIONENTRYITEMDATA_CPDESTINATIONENTRYITEMDATA_ENTRY);
+    delete mList;
+    delete mCmm;
+    delete mAps;
+    delete mOkAction;
+    OstTraceFunctionExit0(DUP1_CPDESTINATIONENTRYITEMDATA_CPDESTINATIONENTRYITEMDATA_EXIT);
+}
+
+/*!
+    \return unique destination ID of this item.
+ */
+int CpDestinationEntryItemData::destinationId()
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_DESTINATIONID_ENTRY);
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_DESTINATIONID_EXIT);
+    return mDestinationId;
+}
+
+/*!
+    Sets destination ID to be given integer.
+ */
+void CpDestinationEntryItemData::setDestinationId(int destId)
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_SETDESTINATIONID_ENTRY);
+    mDestinationId = destId;
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_SETDESTINATIONID_EXIT);
+}
+
+/*!
+    \return Returns destination name as QString
+ */
+QString CpDestinationEntryItemData::destinationName()
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_DESTINATIONNAME_ENTRY);
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_DESTINATIONNAME_EXIT);
+    return mDestinationName;
+}
+
+/*!
+    Sets given QString to be destination name.
+ */
+void CpDestinationEntryItemData::setDestinationName(const QString destinationName)
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_SETDESTINATIONNAME_ENTRY);
+    mDestinationName = destinationName;
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_SETDESTINATIONNAME_EXIT);
+}
+
+/*!
+    Inherited member from CpSettingFormEntryItemData. Returns view that contains
+    all access points included in this destination item.
+ */
+CpBaseSettingView *CpDestinationEntryItemData::createSettingView() const
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_CREATESETTINGVIEW_ENTRY);
+    CpBaseSettingView* view = new CpBaseSettingView();
+    constructSettingView(view);
+    
+    // Toolbar. Allow arrange if more than one AP is shown
+    if (mDestinationId != 0 && mAps->count() > 1) {
+        HbToolBar *tb = view->toolBar();
+        HbAction *arrangeAction = tb->addAction(hbTrId("txt_occ_button_arrange"));
+        bool connected = connect(
+            arrangeAction, 
+            SIGNAL(triggered()), 
+            this, 
+            SLOT(activateArrangeMode()));
+        Q_ASSERT(connected);
+    }
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_CREATESETTINGVIEW_EXIT);
+    return view;        
+}
+
+/*!
+    Worker function for createSettingView(). Adds Access points to given view.
+    
+     @param[out] view Target view where settings are constructed.
+ */
+void CpDestinationEntryItemData::constructSettingView(CpBaseSettingView *view) const
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_CONSTRUCTSETTINGVIEW_ENTRY);
+    mAps->clear();
+    CpItemDataHelper *itemDataHelper = new CpItemDataHelper();
+    HbDataForm *form = new HbDataForm();
+    HbDataFormModel *model = new HbDataFormModel;
+    form->setModel(model);
+    model->setParent(form);
+    view->setWidget(form);
+    CpPluginUtility::addCpItemPrototype(form);
+    QList<QSharedPointer<CmConnectionMethodShim> > apList;
+    // Following won't throw exception
+    fetchReferencedAps(apList, mCmm);
+    form->setHeading(text());
+
+    for (int i = 0; i < apList.count(); i++) {
+        int apId = apList[i]->getIntAttribute(CMManagerShim::CmId);
+        CpBearerApPluginInterface *bearerPlugin = 
+                static_cast<CpDestinationGroup*>(HbDataFormModelItem::parent())->findBearerPlugin(apId);
+        bool apProtected = false;
+        if (mDestinationId != 0) {
+            CmDestinationShim *destination = mCmm->destination(mDestinationId);
+            if (destination->protectionLevel() == CMManagerShim::ProtLevel3) {
+                apProtected = apList[i]->getBoolAttribute(CMManagerShim::CmProtected);
+            }
+            delete destination;
+        }
+        
+        CpIapItem *iapDataItem;
+        iapDataItem = new CpIapItem(
+            *itemDataHelper, 
+            apId, 
+            apList[i]->getStringAttribute(CMManagerShim::CmName), 
+            mDestinationId,
+            apProtected,
+            bearerPlugin);
+       
+        // Add name to item
+        iapDataItem->setContentWidgetData(
+            QString("text"), 
+            apList[i]->getStringAttribute(CMManagerShim::CmName));
+       
+        // Add priority to item if not Uncategorised "Destination"
+        if (mDestinationId  != 0) {
+            // Access Points are listed in priority order.
+            QString priority = hbTrId("txt_occ_dblist_val_priority_l1", i);
+            iapDataItem->setContentWidgetData(QString("additionalText"), priority);
+        }
+        
+        // Set item disabled if it is protected
+        if (apProtected) {
+            iapDataItem->setContentWidgetData(QString("enabled"), false);
+        }
+        
+        // Add to model
+        model->appendDataFormItem(iapDataItem);
+        
+        // Save and make connections
+        mAps->append(iapDataItem);
+        bool connected 
+            = connect(iapDataItem, SIGNAL(iapChanged()), this, SLOT(updateDestinationView()));
+        Q_ASSERT(connected);
+    }
+    
+    itemDataHelper->bindToForm(form);
+    delete itemDataHelper;
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_CONSTRUCTSETTINGVIEW_EXIT);
+}
+
+/*!
+    Rebuilds view with access points after access points have changed.
+ */
+void CpDestinationEntryItemData::updateDestinationView()
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_UPDATEDESTINATIONVIEW_ENTRY);
+    HbDataForm *form = static_cast<HbDataForm*>(model()->parent()); 
+    HbMainWindow *mainWnd = form->mainWindow();
+       
+    if (mainWnd) {
+        HbView *view = mainWnd->currentView();
+        CpBaseSettingView  *cpView = static_cast<CpBaseSettingView  *>(view);
+        constructSettingView(cpView);
+        
+        // Remove Toolbar if necessary
+        if (mDestinationId != 0 && mAps->count() <= 1) {
+            HbToolBar *tb = view->toolBar();
+            tb->clearActions();
+        }
+    }
+    OstTrace0(TRACE_NORMAL, CPDESTINATIONENTRYITEMDATA_UPDATEDESTINATIONVIEW, "CpDestinationEntryItemData::updateDestinationView: Emit destination changed");
+    emit destChanged();
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_UPDATEDESTINATIONVIEW_EXIT);
+}
+
+/*!
+    Prompts user for action after long tap. Choices for actions are "Rename" and "Delete".
+    
+    @param[in] position The item specific menu is shown in given position.
+ */
+void CpDestinationEntryItemData::showItemMenu(QPointF position)
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_SHOWITEMMENU_ENTRY);
+    if (mDestinationId != 0) {
+        CmDestinationShim *destination = NULL;
+        CMManagerShim::CmmProtectionLevel protLvl = CMManagerShim::ProtLevel1;
+        
+        try {
+            destination = mCmm->destination(mDestinationId);
+            protLvl = destination->protectionLevel();
+            delete destination;
+        } catch (const std::exception&) {
+            OstTrace0(TRACE_NORMAL, CPDESTINATIONENTRYITEMDATA_SHOWITEMMENU, "CpDestinationEntryItemData::showItemMenu: Exception caught");
+            if (destination != NULL) {
+                delete destination;
+            }
+        }
+        
+        HbMenu *menu = createItemMenu(protLvl, position);
+        menu->show();
+    }
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_SHOWITEMMENU_EXIT);
+}
+
+/*!
+    Prompts user for new destination name and makes 
+    the change in commsdat if new name is valid.
+    
+    \sa isDestinationNameValid()
+ */
+void CpDestinationEntryItemData::renameDestination()
+{    
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_RENAMEDESTINATION_ENTRY);
+    mDialog = new HbInputDialog();
+    mDialog->setAttribute(Qt::WA_DeleteOnClose);
+    mDialog->lineEdit()->setMaxLength(DestinationNameMaxLength);
+    mDialog->clearActions();
+    mDialog->setPromptText(hbTrId("txt_occ_dialog_destination_name"));
+    mDialog->setInputMode(HbInputDialog::TextInput);
+    mOkAction = new HbAction(hbTrId("txt_common_button_ok"));
+    bool connected = connect(mOkAction, 
+                             SIGNAL(triggered()), 
+                             this, 
+                             SLOT(saveNewDestinationName()));
+    Q_ASSERT(connected);
+    HbAction *cancelAction = new HbAction(hbTrId("txt_common_button_cancel"));
+    mDialog->addAction(mOkAction);
+    mDialog->addAction(cancelAction);
+    mDialog->show();
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_RENAMEDESTINATION_EXIT);
+}
+
+/*!
+    Shows confirmation query for user before deleteting destination.
+    \sa deleteDestination()
+ */
+void CpDestinationEntryItemData::confirmDestinationDelete()
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_CONFIRMDESTINATIONDELETE_ENTRY);
+    HbMessageBox *note = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
+    note->setAttribute(Qt::WA_DeleteOnClose);
+    note->setText(hbTrId("txt_occ_info_delete_snap").arg(mDestinationName));
+    note->clearActions();
+    HbAction *okAction = new HbAction(hbTrId("txt_common_button_yes"));
+    note->addAction(okAction);
+    bool connected = connect(
+        okAction, 
+        SIGNAL(triggered()), 
+        this, 
+        SLOT(deleteDestination()));
+    Q_ASSERT(connected);
+    HbAction *cancelAction = new HbAction(hbTrId("txt_common_button_no"));
+    note->addAction(cancelAction);
+    note->setTimeout(HbPopup::NoTimeout);
+    note->show();
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_CONFIRMDESTINATIONDELETE_EXIT);
+}
+
+/*!
+    Destination is deleted after user chooses "OK" from destination deletion
+    confirmation query.
+    \sa confirmDestinationDelete()
+ */
+void CpDestinationEntryItemData::deleteDestination()
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_DELETEDESTINATION_ENTRY);
+    CmDestinationShim *destination = NULL;
+    CmConnectionMethodShim *cm = NULL;
+    try {
+        destination = mCmm->destination(mDestinationId);
+        int cmCount = destination->connectionMethodCount();
+        while (cmCount > 0) {
+            cm = destination->connectionMethod(0);
+            destination->removeConnectionMethod(cm);
+            cmCount--;
+            delete cm;
+            cm = NULL;
+        }
+        destination->update();
+        destination->deleteDestination();
+        CpDestinationGroup *parent 
+            = static_cast<CpDestinationGroup *>(HbDataFormModelItem::parent());
+        parent->deleteDestination(mDestinationId);
+        delete destination;
+    } catch (const std::exception&) {
+        OstTrace0(TRACE_NORMAL, CPDESTINATIONENTRYITEMDATA_DELETEDESTINATION, "CpDestinationEntryItemData::deleteDestination: Exception caught");
+        if (destination != NULL) {
+            delete destination;
+        }
+        if (cm != NULL) {
+            delete cm;
+        }
+        showErrorNote(hbTrId("txt_occ_info_unable_to_save_setting"));
+    }
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_DELETEDESTINATION_EXIT);
+}
+
+/*!
+    Creates new view where access point priorities can 
+    be changed by dragging and dropping and shows it to user.
+ */
+void CpDestinationEntryItemData::activateArrangeMode()
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_ACTIVATEARRANGEMODE_ENTRY);
+    mList = new HbListWidget();
+    HbDataForm *form = static_cast<HbDataForm*>(model()->parent());             
+    HbMainWindow *mainWnd = form->mainWindow();
+    HbView *view = new HbView();
+    createArrangeModeView(view);
+    
+    if (mainWnd && view) {
+        mPreView = mainWnd->currentView();
+        mainWnd->addView(view);
+        mainWnd->setCurrentView(view, false);
+        HbAction *arrangeViewBackAction = new HbAction(Hb::BackAction, view);
+        bool connected = connect(
+            arrangeViewBackAction, 
+            SIGNAL(triggered()), 
+            this, 
+            SLOT(viewCancel()));
+        Q_ASSERT(connected);
+        view->setNavigationAction(arrangeViewBackAction);
+    }
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_ACTIVATEARRANGEMODE_EXIT);
+}
+
+/*!
+    This function is called when user returns from arrange mode with
+    toolbar command "Done" thus accapting the changes. New priorities
+    are saved to commsdat according to order of the items in the previous view.
+ */
+void CpDestinationEntryItemData::viewDone()
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_VIEWDONE_ENTRY);
+    try {
+        // Arrange items
+        CmDestinationShim *destination = mCmm->destination(mDestinationId);
+        for (int i = 0; i < mList->count(); i++) {
+            int apId = mList->item(i)->data(Hb::IndexFeedbackRole).toInt();
+            CmConnectionMethodShim *cm = mCmm->connectionMethod(apId);
+            destination->modifyPriority(cm,i);
+            delete cm;
+        }
+        destination->update();
+        delete destination;
+    } catch (const std::exception&) {
+        OstTrace0(TRACE_NORMAL, CPDESTINATIONENTRYITEMDATA_VIEWDONE, "CpDestinationEntryItemData::viewDone: Exception caught");
+        viewCancel();
+        showErrorNote(QString("txt_occ_info_unable_to_save_setting"));
+        OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_VIEWDONE_EXIT);
+        return;
+    }
+    
+    HbDataForm *form = static_cast<HbDataForm*>(model()->parent());
+    HbMainWindow *mainWnd = form->mainWindow();
+    HbView* view = mainWnd->currentView();
+    
+    if (mainWnd && view)  {
+        //restore previous status
+        mainWnd->removeView(view);
+        mainWnd->setCurrentView(mPreView);
+        mPreView = NULL;
+    }
+    updateDestinationView();
+    OstTraceFunctionExit0(DUP1_CPDESTINATIONENTRYITEMDATA_VIEWDONE_EXIT);
+}
+
+/*!
+    User returns from view without accepting the changes to priorities.
+ */
+void CpDestinationEntryItemData::viewCancel()
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_VIEWCANCEL_ENTRY);
+    HbDataForm *form = static_cast<HbDataForm*>(model()->parent());
+    HbMainWindow *mainWnd = form->mainWindow();
+    HbView* view = mainWnd->currentView();
+    
+    if (mainWnd && view) {
+        //restore previous status
+        mainWnd->removeView(view);
+        view->deleteLater();
+        mainWnd->setCurrentView(mPreView);
+        mPreView = NULL;
+    }
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_VIEWCANCEL_EXIT);
+}
+
+/*!
+    This function updates access points priorities shown in UI
+    when user is in arrange mode.
+    
+    @param[in] widgetItem Unused.
+    
+    \sa activateArrangeMode()
+ */
+void CpDestinationEntryItemData::updateIndex(HbListWidgetItem *widgetItem)
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_UPDATEINDEX_ENTRY);
+    Q_UNUSED(widgetItem);
+    for (int i = 0; i < mList->count(); i++) {
+        HbListWidgetItem *item = mList->item(i);
+        QString priority = hbTrId("txt_occ_dblist_val_priority_l1", i);
+        item->setSecondaryText(priority);
+    }
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_UPDATEINDEX_EXIT);
+}
+
+/*!
+    This function searches all connection methods from commsdat that are
+    connected to this destination item. Connection methods are returned in
+    apList reference parameter.
+    
+    @param[out] apList Constains list of this destination's accesspoints.
+    @param[in] cmm Pointer to CmManagerShim instance to avoid multiple session openings.
+ */
+void CpDestinationEntryItemData::fetchReferencedAps(
+    QList<QSharedPointer<CmConnectionMethodShim> > &apList, 
+    const CmManagerShim *cmm) const
+{   
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_FETCHREFERENCEDAPS_ENTRY);
+    CmDestinationShim *destination = NULL;
+    try {
+        if (mDestinationId == 0) {
+            QList<uint> apIds;
+            cmm->connectionMethod(apIds);
+            for (int i = 0; i < apIds.count(); i++) {
+                CmConnectionMethodShim *cm;
+                cm = cmm->connectionMethod(apIds.at(i));
+                apList.append(QSharedPointer<CmConnectionMethodShim>(cm));
+            }
+        } else {
+            destination = cmm->destination(mDestinationId);
+            int apCount = destination->connectionMethodCount();
+            for (int i = 0; i < apCount; i++) {
+                CmConnectionMethodShim *cm = NULL;
+                cm = destination->connectionMethod(i);
+                apList.append(QSharedPointer<CmConnectionMethodShim>(cm));
+            }
+            delete destination;
+        }
+    } catch (const std::exception&) {
+        OstTrace0(TRACE_NORMAL, CPDESTINATIONENTRYITEMDATA_FETCHREFERENCEDAPS, "CpDestinationEntryItemData::fetchReferencedAps: Exception caught");
+        if (destination != NULL) {
+            delete destination;
+        }
+    }
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_FETCHREFERENCEDAPS_EXIT);
+}
+
+/*!
+    Function for checking if the given destination name is valid. Duplicate and
+    and empty names are rejected.
+    
+    @param[out] destination Constains the destination name to be validated. If name 
+                is valid it remains unchanged. If the given name is invalid, appropriate
+                error text is set the variable.
+    @param[in] cmm Pointer to CmManagerShim instance to avoid multiple session openings.
+    
+    \return true if name is valid.
+ */
+bool CpDestinationEntryItemData::isDestinationNameValid(
+    QString &destination, 
+    const CmManagerShim *cmm)
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_ISDESTINATIONNAMEVALID_ENTRY);
+    bool retVal = true;
+    
+    if (destination.length() > 0) {
+        QList<uint> destinationList;
+        cmm->allDestinations(destinationList);
+    
+        for (int i = 0; i < destinationList.count(); i ++) {
+            CmDestinationShim *dest = cmm->destination(destinationList[i]);
+            if (0 == destination.compare(dest->name())) {
+                destination = hbTrId("txt_occ_info_name_already_in_use");
+                retVal = false;
+                break;
+            }
+            delete dest;
+        }
+    } else {
+        destination = hbTrId("txt_occ_info_invalid_name");
+        retVal = false;
+    }
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_ISDESTINATIONNAMEVALID_EXIT);
+    return retVal;
+}
+
+/*!
+    Worker function for activateArrangeMode(). Adds list of access points
+    to given view.
+    
+    @param[out] view Target view where the arrange mode is constructed.
+
+    \sa activateArrangeMode()
+ */
+void CpDestinationEntryItemData::createArrangeModeView(HbView *view)
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_CREATEARRANGEMODEVIEW_ENTRY);
+    QList<QSharedPointer<CmConnectionMethodShim> >  apList;
+    fetchReferencedAps(apList, mCmm);   
+    CmDestinationShim *destination = NULL;
+    
+    try {
+        destination = mCmm->destination(mDestinationId);
+        for (int i = 0; i < apList.count(); i++) {
+            HbListWidgetItem *item = new HbListWidgetItem();
+            item->setText(apList[i]->getStringAttribute(CMManagerShim::CmName));
+            item->setData(apList[i]->getIntAttribute(CMManagerShim::CmId), Hb::IndexFeedbackRole);
+
+            uint pri = destination->priority(apList[i].data());
+            QString priority = hbTrId("txt_occ_dblist_val_priority_l1", pri);
+            item->setSecondaryText(priority);
+        
+            mList->addItem(item);
+        }
+        mList->setArrangeMode(true);
+        view->setWidget(mList);
+                
+        // Toolbar
+        HbToolBar *tb = view->toolBar();
+        HbAction *doneAction = tb->addAction(hbTrId("txt_common_button_ok"));
+        bool connected = connect(
+            doneAction, 
+            SIGNAL(triggered()), 
+            this, 
+            SLOT(viewDone()));
+        Q_ASSERT(connected);
+        delete destination;
+    } catch (const std::exception&) {
+        OstTrace0(TRACE_NORMAL, CPDESTINATIONENTRYITEMDATA_CREATEARRANGEMODEVIEW, "CpDestinationEntryItemData::createArrangeModeView: Exception caught");
+        // return empty view
+        if (destination != NULL) {
+            delete destination;
+        }
+        while (mList->count() > 0) {
+            HbListWidgetItem *item = mList->item(0);
+            delete item;
+        }
+        mList->clear();
+    }
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_CREATEARRANGEMODEVIEW_EXIT);
+}
+
+/*!
+    Helper function for creating item specific menu.
+    
+    @param[in] protLvl Effective protection level for this
+                       access point.
+ */
+HbMenu *CpDestinationEntryItemData::createItemMenu(
+    CMManagerShim::CmmProtectionLevel protLvl,
+    const QPointF position)
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_CREATEITEMMENU_ENTRY);
+    HbMenu *menu = new HbMenu();
+    menu->setAttribute(Qt::WA_DeleteOnClose);
+    HbAction *renameDestAction = menu->addAction(hbTrId("txt_common_menu_rename_item"));
+    bool connected = 
+        connect(renameDestAction, SIGNAL(triggered()), this, SLOT(renameDestination()));
+    Q_ASSERT(connected);
+    HbAction *deleteDestAction = menu->addAction(hbTrId("txt_common_menu_delete"));
+    connected = 
+        connect(deleteDestAction, SIGNAL(triggered()), this, SLOT(confirmDestinationDelete()));
+    Q_ASSERT(connected);
+                     
+    if (protLvl == CMManagerShim::ProtLevel1
+         || protLvl == CMManagerShim::ProtLevel2 ) {
+    
+        // Disable operations for protected destinations
+        renameDestAction->setDisabled(true);
+        deleteDestAction->setDisabled(true);
+    }
+        
+    menu->setModal(true);
+    menu->setPreferredPos(position);
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_CREATEITEMMENU_EXIT);
+    return menu;
+}
+
+/*!
+    This function is called when user selects OK from destination
+    name query popup. The given name is valited and if the name is
+    valid, new destination is created in commsdat with given name.
+    If validation fails user is promted again for destination name.
+ */
+void CpDestinationEntryItemData::saveNewDestinationName()
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_SAVENEWDESTINATIONNAME_ENTRY);
+    QString destinationName = mDialog->value().toString();
+    bool destinationNameInvalid = true;
+    CmManagerShim *cmm = NULL;
+    CmDestinationShim *destination = NULL;
+    
+    try {
+        cmm = new CmManagerShim();
+        if (isDestinationNameValid(destinationName, cmm)) {
+            cmm = new CmManagerShim();
+            cmm->destination(mDestinationId)->setName(destinationName);
+            mDestinationName = destinationName;
+            destinationNameInvalid = false;
+        }
+    } catch (const std::exception&) {
+        OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_SAVENEWDESTINATIONNAME_EXIT);
+        return;
+    }
+    delete destination;
+    delete cmm;
+    
+    if (destinationNameInvalid) {   
+        // Validation function has modified destination name 
+        // to be error string
+        showRenameError(destinationName);
+    } else {
+        OstTrace0(TRACE_NORMAL, CPDESTINATIONENTRYITEMDATA_SAVENEWDESTINATIONNAME, "CpDestinationEntryItemData::saveNewDestinationName: emit destination changed");
+        emit destChanged();
+    }
+    OstTraceFunctionExit0(DUP1_CPDESTINATIONENTRYITEMDATA_SAVENEWDESTINATIONNAME_EXIT);
+}
+
+/*!
+ * Helper function for showing error note when user inputs
+ * invalid destination name.
+ */
+void CpDestinationEntryItemData::showRenameError(const QString &info)
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_SHOWRENAMEERROR_ENTRY);
+    // Destination name NOK. Inform user and ask again.
+    HbMessageBox *note = new HbMessageBox(HbMessageBox::MessageTypeInformation);
+    note->clearActions();
+    note->setAttribute(Qt::WA_DeleteOnClose);
+    note->setText(info);
+    note->setTimeout(HbPopup::NoTimeout);
+    HbAction *errorOk = new HbAction(hbTrId("txt_common_button_ok"));
+    bool connected = connect(
+        errorOk,
+        SIGNAL(triggered()),
+        this,
+        SLOT(renameDestination()));
+    Q_ASSERT(connected);                        
+    note->addAction(errorOk);
+    note->show();
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_SHOWRENAMEERROR_EXIT);
+}
+
+/*!
+    Helper function for showing error notes.
+    
+    @param[in] info Info string to be shown in note.
+ */
+void CpDestinationEntryItemData::showErrorNote(const QString &info)
+{
+    OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_SHOWERRORNOTE_ENTRY);
+    HbMessageBox *note = new HbMessageBox(HbMessageBox::MessageTypeInformation);
+    note->clearActions();
+    note->setAttribute(Qt::WA_DeleteOnClose);
+    note->setText(info);
+    note->setTimeout(HbPopup::NoTimeout);
+    HbAction *errorOk = new HbAction(hbTrId("txt_common_button_ok"));                       
+    note->addAction(errorOk);
+    note->show();    
+    OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_SHOWERRORNOTE_EXIT);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpdestinationplugin/src/cpdestinationgroup.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,345 @@
+/*
+* Copyright (c) 2010 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:  
+*   CpDestinationGroup contains all destination UI items as well as 
+*   items for uncategorized access points and adding new destinations.
+*/
+
+// System includes
+#include <QDir>
+#include <QPluginLoader>
+#include <QStringList>
+#include <HbDataform>
+#include <HbDataFormModel>
+#include <HbDataFormViewItem>
+#include <cpbasesettingview.h>
+#include <cpitemdatahelper.h>
+#include <cpsettingformentryitemdataimpl.h>
+#include <cpsettingformitemdata.h>
+#include <cmmanager_shim.h>
+#include <cmdestination_shim.h>
+#include <cmconnectionmethod_shim.h>
+#include <cmmanagerdefines_shim.h>
+
+// User includes
+#include "cpdestinationgroup.h"
+#include "cpdestinationentryitem.h"
+#include "cpadddestinationentryitemdata.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cpdestinationgroupTraces.h"
+#endif
+
+/*!
+    \class  CpDestinationGroup
+    \brief  This class contains all data items representing destinations
+    in commsdat. 
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    
+    Constructor.
+    
+    @param[in] itemDataHelper Helper for connecting signals and slots.
+ */
+CpDestinationGroup::CpDestinationGroup(CpItemDataHelper &itemDataHelper) :
+    CpSettingFormItemData(HbDataFormModelItem::GroupItem, 
+        hbTrId("txt_occ_subhead_destinations_access_points")),
+   mItemDataHelper(&itemDataHelper),
+   mUncategorisedShown(false)
+{
+    OstTraceFunctionEntry0(CPDESTINATIONGROUP_CPDESTINATIONGROUP_ENTRY);
+    mCmManager = new CmManagerShim();
+    mBearerPlugins = new QList<CpBearerApPluginInterface *>();
+    this->loadBearerPlugins();
+    
+    QList<QSharedPointer<CmDestinationShim> > destinationList;
+    fetchDestinations(destinationList);
+
+    // Create Destination list
+    for (int i = 0; i < destinationList.count(); i++) {
+        QString iapCount = 
+			getDestinationAdditionalText(destinationList.at(i)->connectionMethodCount());
+        
+        // Create new destination entry
+        CpDestinationEntryItemData *destDataItem;
+        destDataItem = new CpDestinationEntryItemData(itemDataHelper);
+        destDataItem->setContentWidgetData(QString("text"), destinationList.at(i)->name());
+        destDataItem->setContentWidgetData(QString("additionalText"),iapCount);
+        destDataItem->setDestinationId(destinationList.at(i)->id());
+        destDataItem->setDestinationName(destinationList.at(i)->name());
+        bool connected = connect(destDataItem, 
+                                 SIGNAL(destChanged()), 
+                                 this, 
+                                 SLOT(updateDestinationInformation()));
+        Q_ASSERT(connected);
+        this->appendChild(destDataItem);
+    }
+    
+    // Add "Uncategorised Iaps" button
+    createUncategorisedDestination();
+    
+    // "Add Destination" button
+    CpSettingFormEntryItemData *addDest = new CpAddDestinationEntryItemData(itemDataHelper, this);
+    addDest->setContentWidgetData(QString("text"), hbTrId("txt_occ_button_add_destination"));
+    this->appendChild(addDest);
+    OstTraceFunctionExit0(CPDESTINATIONGROUP_CPDESTINATIONGROUP_EXIT);
+}
+
+/*!
+    Destructor
+ */
+CpDestinationGroup::~CpDestinationGroup()
+{
+    OstTraceFunctionEntry0(DUP1_CPDESTINATIONGROUP_CPDESTINATIONGROUP_ENTRY);
+    delete mBearerPlugins;
+    delete mCmManager;
+    OstTraceFunctionExit0(DUP1_CPDESTINATIONGROUP_CPDESTINATIONGROUP_EXIT);
+}
+
+/*!
+    addDestination() creates new destination item to Destinations group item.
+    The new destination is shown in the UI immediately.
+ */
+void CpDestinationGroup::addDestination(const QString &dest, int destId)
+{
+    OstTraceFunctionEntry0(CPDESTINATIONGROUP_ADDDESTINATION_ENTRY);
+    QString iapCount = getDestinationAdditionalText(0);
+    
+    // Create UI item for new destination
+    CpDestinationEntryItemData *destDataItem;
+    destDataItem = new CpDestinationEntryItemData(*mItemDataHelper);
+    destDataItem->setContentWidgetData(QString("text"), dest);
+    destDataItem->setContentWidgetData(QString("additionalText"), iapCount);
+    destDataItem->setDestinationId(destId);
+    destDataItem->setDestinationName(dest);
+    connect(destDataItem, SIGNAL(destChanged()), this, SLOT(updateDestinationInformation()));
+    
+    // Use ItemDataHelper to make connections
+    QObject* form = this->model()->parent();
+    mItemDataHelper->bindToForm(static_cast<HbDataForm*>(form));
+    
+    // Insert Child to correct position
+    QList<QSharedPointer<CmDestinationShim> > destinationList;
+    fetchDestinations(destinationList);
+    insertChild(destinationList.count() - 1, destDataItem);
+    OstTraceFunctionExit0(CPDESTINATIONGROUP_ADDDESTINATION_EXIT);
+}
+
+/*!
+    Deletes destination from commsdat and removes it from UI.
+ */
+void CpDestinationGroup::deleteDestination(int destId)
+{
+    OstTraceFunctionEntry0(CPDESTINATIONGROUP_DELETEDESTINATION_ENTRY);
+    // "Add Destination" child is removed from count (childCount() -1)
+    for (int i = 0; i < this->childCount() - 1; i++) { 
+        CpDestinationEntryItemData  *destDataItem = 
+            static_cast<CpDestinationEntryItemData*>(this->childAt(i));
+
+        if (destDataItem->destinationId() == destId) {
+            int index = this->indexOf(destDataItem);
+            this->removeChild(index);
+            
+            if (!mUncategorisedShown) {
+            // Return "Uncategorised" item to UI if necessary
+            createUncategorisedDestination();
+            }
+        }
+    }
+    OstTraceFunctionExit0(CPDESTINATIONGROUP_DELETEDESTINATION_EXIT);
+}
+
+/*!
+    Finds correct access point settings implementation according to
+    access point bearer type.
+    
+    \return Returns pointer to CpBearerApPluginInterface which implements
+            access point settins.
+ */
+CpBearerApPluginInterface *CpDestinationGroup::findBearerPlugin(int apId)
+{
+    OstTraceFunctionEntry0(CPDESTINATIONGROUP_FINDBEARERPLUGIN_ENTRY);
+    CpBearerApPluginInterface *retVal = NULL;
+    try {
+        CmConnectionMethodShim *cm = mCmManager->connectionMethod(apId);
+        int apBearerType = cm->getIntAttribute(CMManagerShim::CmBearerType);
+    
+        for (int i = 0; i < mBearerPlugins->count(); i++) {
+            if (mBearerPlugins->at(i)->bearerType() == apBearerType) {
+                retVal = mBearerPlugins->at(i);
+                break;
+            }
+        }
+        delete cm;
+    }
+    catch (const std::exception&) {
+        OstTrace0(TRACE_NORMAL, CPDESTINATIONGROUP_FINDBEARERPLUGIN, "CpDestinationGroup::findBearerPlugin: Exception caught");
+        // Let return value be NULL.
+    }
+    OstTraceFunctionExit0(CPDESTINATIONGROUP_FINDBEARERPLUGIN_EXIT);
+    return retVal;
+}
+
+/*!
+    Updates all destination group items' destinations' information. 
+    (Name and access point count)
+ */
+void CpDestinationGroup::updateDestinationInformation()
+{
+	OstTraceFunctionEntry0(CPDESTINATIONGROUP_UPDATEDESTINATIONINFORMATION_ENTRY);
+	int apCount = 0;
+	// "Add Destination" child is removed from count (childCount() -1)
+    for (int i = 0; i < childCount() - 1; i++) {
+        CpDestinationEntryItemData  *destDataItem = 
+                static_cast<CpDestinationEntryItemData*>(this->childAt(i));
+        
+        if (destDataItem->destinationId() == 0) {
+            // Uncategrised Iaps
+	        QList<uint> apList;
+            mCmManager->connectionMethod(apList);
+            if (apList.count() == 0) {
+                // delete empty uncategorised IAPs destination
+                int index = this->indexOf(destDataItem);
+                this->removeChild(index);
+                mUncategorisedShown = false;
+                continue;
+            }
+            apCount = apList.count();  
+        } else {
+            CmDestinationShim *destination;
+            destination = mCmManager->destination(destDataItem->destinationId());
+            apCount = destination->connectionMethodCount();
+            delete destination;
+        }
+
+        QString iapCount = getDestinationAdditionalText(apCount);
+        destDataItem->setContentWidgetData(QString("additionalText"), iapCount);
+        destDataItem->setContentWidgetData(QString("text"), destDataItem->destinationName());
+    }
+    // Update UI
+    HbDataForm *form = static_cast<HbDataForm*>(this->model()->parent());
+    HbDataFormModel* model = static_cast<HbDataFormModel*>(this->model());
+    QModelIndex index = model->indexFromItem(this);
+    HbDataFormViewItem *viewItem = form->dataFormViewItem(index);
+    viewItem->setExpanded(false);
+    viewItem->setExpanded(true);
+    OstTraceFunctionExit0(CPDESTINATIONGROUP_UPDATEDESTINATIONINFORMATION_EXIT);
+}
+
+/*!
+    Creates item for uncategorized access points to destination group item
+    if there is any.
+ */
+void CpDestinationGroup::createUncategorisedDestination()
+{
+    OstTraceFunctionEntry0(CPDESTINATIONGROUP_CREATEUNCATEGORISEDDESTINATION_ENTRY);
+    QList<uint> apList;
+    mCmManager->connectionMethod(apList);
+    if (apList.count() > 0) {
+        // Create new destination entry
+        CpDestinationEntryItemData *destDataItem;
+        destDataItem = new CpDestinationEntryItemData(*mItemDataHelper);
+        destDataItem->setContentWidgetData(QString("text"), hbTrId("txt_occ_dblist_uncategorized"));
+        QString iapCount = getDestinationAdditionalText(apList.count());
+        destDataItem->setContentWidgetData(QString("additionalText"),iapCount);
+        destDataItem->setDestinationId(0);
+        destDataItem->setDestinationName(hbTrId("txt_occ_dblist_uncategorized"));
+        bool connected = connect(
+            destDataItem, 
+            SIGNAL(destChanged()), 
+            this, 
+            SLOT(updateDestinationInformation()));
+        Q_ASSERT(connected);
+        QList<QSharedPointer<CmDestinationShim> > destinationList;
+        fetchDestinations(destinationList);
+        
+        insertChild(destinationList.count(), destDataItem);
+        mUncategorisedShown = true;
+    }
+    OstTraceFunctionExit0(CPDESTINATIONGROUP_CREATEUNCATEGORISEDDESTINATION_EXIT);
+}
+
+/*!
+    Searches all destinations from commsdat. List of representing 
+    CmDestinationShim * items returned on completion.
+ */
+void CpDestinationGroup::fetchDestinations(
+    QList<QSharedPointer<CmDestinationShim> > &destinationList)
+{
+    OstTraceFunctionEntry0(CPDESTINATIONGROUP_FETCHDESTINATIONS_ENTRY);
+    try {
+        QList<uint> destArray;
+        mCmManager->allDestinations(destArray);
+    
+        for (int i = 0; i < destArray.count(); i++) {
+            CmDestinationShim *destination;
+            destination = mCmManager->destination(destArray[i]);
+            if (!destination->isHidden()) {
+                destinationList.append(QSharedPointer<CmDestinationShim>(destination));
+            }
+        }
+    } catch (const std::exception&) {
+        OstTrace0(TRACE_NORMAL, CPDESTINATIONGROUP_FETCHDESTINATIONS, "CpDestinationGroup::fetchDestinations: exception caught, Reading destinations");
+    }
+    OstTraceFunctionExit0(CPDESTINATIONGROUP_FETCHDESTINATIONS_EXIT);
+}
+
+/*!
+    Searches all bearer plugins from fixed location and loads them.
+    
+    \sa findBearerPlugin()
+ */
+void CpDestinationGroup::loadBearerPlugins()
+{
+    OstTraceFunctionEntry0(CPDESTINATIONGROUP_LOADBEARERPLUGINS_ENTRY);
+    // Load bearer plugins
+    QDir pluginsDir("\\resource\\qt\\plugins\\controlpanel\\bearerap");
+    foreach (QString fileName, pluginsDir.entryList(QDir::Files)) {
+        
+        QPluginLoader loader(pluginsDir.absoluteFilePath(fileName));
+        CpBearerApPluginInterface *plugin = 
+                qobject_cast<CpBearerApPluginInterface *>(loader.instance());
+        if (plugin) {
+            mBearerPlugins->append(plugin);
+        }
+    } 
+    OstTraceFunctionExit0(CPDESTINATIONGROUP_LOADBEARERPLUGINS_EXIT);
+}
+
+/*!
+    Helper function to be used in localisation.
+    
+    \return Returns correct localized QString according to access point count.
+ */
+QString CpDestinationGroup::getDestinationAdditionalText(int iapCount)
+{
+    OstTraceFunctionEntry0(CPDESTINATIONGROUP_GETDESTINATIONADDITIONALTEXT_ENTRY);
+    QString result = "";
+    if (iapCount > 0) {
+        result = hbTrId("txt_occ_dblist_internet_val_ln_access_points", iapCount);
+    } else {
+        result = hbTrId("txt_occ_dblist_internet_val_no_access_points");
+    }
+    OstTrace0(TRACE_FLOW, CPDESTINATIONGROUP_GETDESTINATIONADDITIONALTEXT_EXIT, "Exit");
+    return result;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpdestinationplugin/src/cpdestinationplugin.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,86 @@
+/*
+* Copyright (c) 2010 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:  
+*   Control Panel plugin for showing destinations and access points
+*   settings.
+*/
+
+// System includes
+#include <QApplication>
+#include <QLocale>
+#include <QTranslator>
+
+// User includes
+#include "cpdestinationplugin.h"
+#include "cpdestinationgroup.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cpdestinationpluginTraces.h"
+#endif
+/*!
+    \class  CpDestinationPlugin
+    \brief  This class is a Control Panel plugin for accessing
+            destination and access point settings.
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!         
+    Constructor.
+ */
+CpDestinationPlugin::CpDestinationPlugin()
+{
+    OstTraceFunctionEntry0(CPDESTINATIONPLUGIN_CPDESTINATIONPLUGIN_ENTRY);
+    // Install localization
+    QString lang = QLocale::system().name();
+    QString path = "z:/resource/qt/translations/";
+    mTranslator = new QTranslator(this);
+    mTranslator->load(path + "cpdestinationplugin_" + lang);
+    qApp->installTranslator(mTranslator);
+    OstTraceFunctionExit0(CPDESTINATIONPLUGIN_CPDESTINATIONPLUGIN_EXIT);
+}
+
+/*!
+    Destructor.
+ */
+CpDestinationPlugin::~CpDestinationPlugin()
+{
+    OstTraceFunctionEntry0(DUP1_CPDESTINATIONPLUGIN_CPDESTINATIONPLUGIN_ENTRY);
+    OstTraceFunctionExit0(DUP1_CPDESTINATIONPLUGIN_CPDESTINATIONPLUGIN_EXIT);
+}
+
+/*!
+    Inherited member from CpPluginInterface. 
+    
+    @param[in] itemDataHelper Helper for connecting signals and slots.
+    
+    \return Returns only one data item in QList. The item contains destination group item.
+ */
+QList<CpSettingFormItemData*> CpDestinationPlugin::createSettingFormItemData(CpItemDataHelper &itemDataHelper) const
+{
+    OstTraceFunctionEntry0(CPDESTINATIONPLUGIN_CREATESETTINGFORMITEMDATA_ENTRY);
+    QList<CpSettingFormItemData*> settingFormData;
+    settingFormData.append(new CpDestinationGroup(itemDataHelper));
+    
+    OstTraceFunctionExit0(CPDESTINATIONPLUGIN_CREATESETTINGFORMITEMDATA_EXIT);
+    return settingFormData;
+}
+
+Q_EXPORT_PLUGIN2(cpdestinationplugin, CpDestinationPlugin);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpdestinationplugin/src/cpiapitem.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,527 @@
+/*
+* Copyright (c) 2010 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:  
+*   Data item for representing access points in UI.
+*/
+
+// System includes
+#include <QObject>
+#include <HbMenu>
+#include <HbAction>
+#include <HbDocumentLoader>
+#include <HbRadioButtonList>
+#include <HbDialog>
+#include <HbMessageBox>
+#include <HbPopup>
+#include <HbLabel>
+#include <HbDataFormViewItem>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <cpbasesettingview.h>
+#include <cpsettingformitemdata.h>
+#include <cpsettingformentryitemdata.h>
+#include <cpitemdatahelper.h>
+#include <cmdestination_shim.h>
+#include <cmmanager_shim.h>
+#include <cmconnectionmethod_shim.h>
+
+// User includes
+#include "cpiapitem.h"
+#include "cpdestinationentryitem.h"
+#include "cpbearerapplugininterface.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cpiapitemTraces.h"
+#endif
+/*!
+    \class  CpIapItem
+    \brief  This class represents access point in data model. 
+            It takes care of all access point related operations.
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!         
+   Constructor.
+   
+   @param[in] itemDataHelper Helper for connecting signals and slots.
+   @param[in] iapId Unique ID if the access point this object represents.
+   @param[in] iapName Name of the access point this object represents.
+   @param[in] destId Unique ID of the destination that contains reference to 
+              the access point this object represents.
+   @param[in] bearerPlugin Pointer to the object that implements settings view
+              for this access point.
+ */
+CpIapItem::CpIapItem(
+    CpItemDataHelper &itemDataHelper,  
+    int iapId, 
+    const QString &iapName, 
+    int destId,
+    bool apProtected,
+    CpBearerApPluginInterface *bearerPlugin) :
+    CpSettingFormEntryItemData(itemDataHelper), 
+    mIapId(iapId), 
+    mIapName(iapName),
+    mDestId(destId),
+    mProtected(apProtected),
+    mBearerPlugin(bearerPlugin),
+    mMoveOngoing(false),
+    mDialog(0),
+    mList(0)
+{
+    OstTraceFunctionEntry0(CPIAPITEM_CPIAPITEM_ENTRY);
+    try {
+        mCmm = new CmManagerShim();
+    } catch (const std::exception&) {
+        OstTrace0(TRACE_NORMAL, CPIAPITEM_CPIAPITEM, "CpIapItem::CpIapItem: Exception caught");
+        mCmm = NULL;
+    }
+    
+    // Fix connections
+    itemDataHelper.removeConnection(this,SIGNAL(pressed()),this,SLOT(onLaunchView()));
+    itemDataHelper.addConnection(
+        this,
+        SIGNAL(longPress(QPointF)),
+        this,
+        SLOT(showItemMenu(QPointF)));
+    if (!apProtected) {
+        itemDataHelper.addConnection(this,SIGNAL(clicked()),this,SLOT(onLaunchView()));
+    }
+    OstTraceFunctionExit0(CPIAPITEM_CPIAPITEM_EXIT);
+}
+
+/*!
+    Destructor
+ */
+CpIapItem::~CpIapItem()
+{
+    OstTraceFunctionEntry0(DUP1_CPIAPITEM_CPIAPITEM_ENTRY);
+    delete mCmm;
+    OstTraceFunctionExit0(DUP1_CPIAPITEM_CPIAPITEM_EXIT);
+}
+
+/*!
+    \return Returns ID of this access point
+ */
+int CpIapItem::getIapId() const
+{
+    OstTraceFunctionEntry0(CPIAPITEM_GETIAPID_ENTRY);
+    OstTraceFunctionExit0(CPIAPITEM_GETIAPID_EXIT);
+    return mIapId;
+}
+
+/*!
+    Shows user the item specific menu. The menu is triggered by long pressing
+    the access point item.
+    
+    @param[in] position Preferred position for the item specific menu.
+ */
+void CpIapItem::showItemMenu(QPointF position)
+{
+    OstTraceFunctionEntry0(CPIAPITEM_SHOWITEMMENU_ENTRY);
+    if (isCmManagerAvailable()) {
+        bool settingsReadSuccessful = true;
+        CMManagerShim::CmmProtectionLevel protLvl;
+        try {      
+            if (mDestId == 0) {
+                protLvl = CMManagerShim::ProtLevel0;
+            } else {
+                CmDestinationShim *destination = mCmm->destination(mDestId);
+                protLvl = destination->protectionLevel();
+                delete destination;
+            }              
+        } 
+        catch (const std::exception&)  {
+            OstTrace0(TRACE_NORMAL, CPIAPITEM_SHOWITEMMENU, "CpIapItem::showItemMenu: Exception caught");
+            settingsReadSuccessful = false;
+        }
+        if (settingsReadSuccessful) {
+            // Settings could be read from commsdat: show menu.
+            createItemMenu(protLvl, position)->show();
+        }    
+    }
+    OstTraceFunctionExit0(CPIAPITEM_SHOWITEMMENU_EXIT);
+}
+
+/*!
+    Prompts user for destination where access point is to be 
+    added and then makes the move in commsdat.
+ */
+void CpIapItem::moveIap()
+{
+    OstTraceFunctionEntry0(CPIAPITEM_MOVEIAP_ENTRY);
+    mMoveOngoing = true;
+    queryDestination();
+    OstTraceFunctionExit0(CPIAPITEM_MOVEIAP_EXIT);
+}
+
+/*!
+    Shows confirmation query for access point deletion.
+ */
+void CpIapItem::showDeleteConfirmation()
+{
+    OstTraceFunctionEntry0(CPIAPITEM_SHOWDELETECONFIRMATION_ENTRY);
+    HbMessageBox *note = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
+    note->clearActions();
+    note->setAttribute(Qt::WA_DeleteOnClose);
+    note->setText(hbTrId("txt_occ_info_delete_access_point_1").arg(mIapName));
+    HbAction *primaryAction = new HbAction(hbTrId("txt_common_button_yes"));
+    bool connected = connect(
+        primaryAction, 
+        SIGNAL(triggered()), 
+        this, 
+        SLOT(deleteConfirmed()));
+    Q_ASSERT(connected);
+    note->addAction(primaryAction);
+    note->addAction(new HbAction(hbTrId("txt_common_button_no")));
+    note->setTimeout(HbPopup::NoTimeout);
+    note->show();
+    OstTraceFunctionExit0(CPIAPITEM_SHOWDELETECONFIRMATION_EXIT);
+}
+
+/*!
+    Prompts user for target destination and then adds access point 
+    that this object represents to the prompted destination.
+ */
+void CpIapItem::shareIap()
+{
+    OstTraceFunctionEntry0(CPIAPITEM_SHAREIAP_ENTRY);
+    mMoveOngoing = false;
+    queryDestination();
+    OstTraceFunctionExit0(CPIAPITEM_SHAREIAP_EXIT);
+}
+
+/*!
+    Completes either saving or sharing of access point by 
+    making the move in commsdat.
+ */
+void CpIapItem::queryDialogClosed()
+{
+    OstTraceFunctionEntry0(CPIAPITEM_QUERYDIALOGCLOSED_ENTRY);
+    if (mMoveOngoing) {
+        saveMove(mDestinationList[mList->selected()]);
+    } else {
+        saveShare(mDestinationList[mList->selected()]);
+    }
+    OstTraceFunctionExit0(CPIAPITEM_QUERYDIALOGCLOSED_EXIT);
+}
+
+/*!
+    Completes the deletion process by deleting access point from
+    commsdat.
+ */
+void CpIapItem::deleteConfirmed()
+{
+    OstTraceFunctionEntry0(CPIAPITEM_DELETECONFIRMED_ENTRY);
+    bool deleteSuccessful = true;
+    try  {
+        if (mDestId != 0) {
+            CmDestinationShim *destination = mCmm->destination(mDestId);
+            CmConnectionMethodShim *cm = destination->connectionMethodByID(mIapId);
+            destination->deleteConnectionMethod(cm);
+            destination->update();
+            delete destination;
+        } else {
+            CmConnectionMethodShim *cm = mCmm->connectionMethod(mIapId);
+            cm->deleteConnectionMethod();
+            delete cm;
+        }
+    } catch (const std::exception&) {
+        OstTrace0(TRACE_NORMAL, DUP1_CPIAPITEM_DELETECONFIRMED, "CpIapItem::deleteConfirmed: Exception caught");
+        deleteSuccessful = false;
+    }
+    if (deleteSuccessful) {
+        HbDataForm *form = static_cast<HbDataForm*>(model()->parent());
+        QModelIndex index = static_cast<HbDataFormModel*>(this->model())->indexFromItem(this);
+        HbDataFormViewItem *viewItem = form->dataFormViewItem(index);
+        viewItem->deleteLater();
+        OstTrace0(TRACE_NORMAL, CPIAPITEM_DELETECONFIRMED, "CpIapItem::deleteConfirmed: Emit access point changed signal");
+        emit iapChanged();
+    } else {
+        showErrorNote(hbTrId("txt_occ_info_unable_to_save_setting"));
+    }
+    OstTraceFunctionExit0(CPIAPITEM_DELETECONFIRMED_EXIT);
+}
+
+/*!
+    Updates access point item name when the item becomes visible.
+ */
+void CpIapItem::updateIap(const QModelIndex index)
+{
+    OstTrace0( TRACE_FLOW, CPIAPITEM_UPDATEIAP_ENTRY, "CpIapItem::updateIap entry" );
+    Q_UNUSED(index);
+    try {
+        CmConnectionMethodShim *cm = mCmm->connectionMethod(mIapId);
+        this->setContentWidgetData("text", cm->getStringAttribute(CMManagerShim::CmName));
+        delete cm;
+    } catch (const std::exception&) {
+        OstTrace0( TRACE_NORMAL, CPIAPITEM_UPDATEIAP, "CpIapItem::updateIap: exception caught, CM name reading failed" );
+    }
+    // Disconnect because we need to do this only after returning
+    // from accees point settings view
+    HbDataForm *form = static_cast<HbDataForm*>(model()->parent());
+    disconnect(
+        form, 
+        SIGNAL(itemShown(const QModelIndex)),
+        this, 
+        SLOT(updateIap(const QModelIndex)));
+    OstTrace0( TRACE_FLOW, DUP1_CPIAPITEM_UPDATEIAP_EXIT, "CpIapItem::updateIap exit" );
+}
+
+/*!
+    Gets access point specific view from bearer plugin.
+    
+    \return Returns settings view containing access point settings.
+ */
+CpBaseSettingView *CpIapItem::createSettingView() const
+{
+    OstTraceFunctionEntry0(CPIAPITEM_CREATESETTINGVIEW_ENTRY);
+    CpBaseSettingView *view = NULL;
+    if (mBearerPlugin != NULL) {
+        HbDataForm *form = static_cast<HbDataForm*>(model()->parent()); 
+        bool connected = connect(
+            form, 
+            SIGNAL(itemShown(const QModelIndex)),
+            this, 
+            SLOT(updateIap(const QModelIndex)));
+        Q_ASSERT(connected);
+        view = mBearerPlugin->createSettingView(mIapId);
+    }
+    OstTraceFunctionExit0(CPIAPITEM_CREATESETTINGVIEW_EXIT);
+    return view;
+}
+
+/*!
+    Prompts user for destination.
+ */
+void CpIapItem::queryDestination()
+{
+    OstTraceFunctionEntry0(CPIAPITEM_QUERYDESTINATION_ENTRY);
+    bool readingSuccessful = true;
+    QStringList destinations;
+    try {
+        mCmm->allDestinations(mDestinationList);
+        
+        for (int i = 0; i < mDestinationList.count(); i++) {
+            CmDestinationShim *destination = mCmm->destination(mDestinationList[i]);
+            if ((destination->id() != mDestId)
+                && !destination->isHidden()) {
+
+                QString dest = destination->name();
+                destinations.append(dest);
+            } else {
+                // Remove this destination from list to sync both lists
+                mDestinationList.removeAt(i);
+                i--;
+            }
+            delete destination;
+        }
+    } catch (const std::exception&) {
+        OstTrace0(TRACE_NORMAL, CPIAPITEM_QUERYDESTINATION, "CpIapItem::queryDestination: exception caught");
+        readingSuccessful = false;
+    }
+    
+    if (readingSuccessful) {
+        // Load DocML 
+        bool ok = false;
+        HbDocumentLoader *loader = new HbDocumentLoader();
+        loader->load(":/docml/cpdestinationplugindialogs.docml", &ok);
+        mDialog = qobject_cast<HbDialog *>(loader->findWidget("dialog"));
+        HbLabel *heading = qobject_cast<HbLabel *>(loader->findWidget("heading"));
+        heading->setPlainText(hbTrId("txt_occ_dialog_select_network_destination_to_be_ac"));
+        mList = qobject_cast<HbRadioButtonList *>(loader->findWidget("radioButtonList")); 
+        mList->setItems(destinations);
+        mList->setSelected(0);
+        mOk = qobject_cast<HbAction *>(loader->findObject("okAction"));
+        bool connected = connect(mOk, 
+                                 SIGNAL(triggered()), 
+                                 this, 
+                                 SLOT(queryDialogClosed()));
+        Q_ASSERT(connected);
+        mDialog->show();
+        delete loader;
+    } else {
+        OstTrace0(TRACE_NORMAL, DUP1_CPIAPITEM_QUERYDESTINATION, " CpIapItem::queryDestination: exception caught");
+        showErrorNote(hbTrId("txt_occ_info_unable_to_read_settings"));
+    }
+    OstTraceFunctionExit0(CPIAPITEM_QUERYDESTINATION_EXIT);
+}
+
+/*!
+    Shares access point to given destination.
+    
+    @param[in] id Target destination's ID
+ */
+void CpIapItem::saveShare(int id)
+{
+    OstTraceFunctionEntry0(CPIAPITEM_SAVESHARE_ENTRY);
+    try {
+        CmConnectionMethodShim *cm;
+        if (mDestId != 0) {
+            CmDestinationShim *source = mCmm->destination(mDestId);
+            cm = source->connectionMethodByID(mIapId);
+            delete source;
+        } else {
+            cm = mCmm->connectionMethod(mIapId);
+        }
+        CmDestinationShim *target = mCmm->destination(id);
+        target->addConnectionMethod(cm);
+        target->update();
+        delete cm;
+        delete target;
+        OstTrace0(TRACE_NORMAL, CPIAPITEM_SAVESHARE, "CpIapItem::saveShare: Emit access point changed signal");
+        emit iapChanged();
+    } catch (const std::exception&) {
+        OstTrace0(TRACE_NORMAL, DUP1_CPIAPITEM_SAVESHARE, "CpIapItem::saveShare: Exception caught");
+        showErrorNote(hbTrId("txt_occ_info_unable_to_read_settings"));
+    }
+    OstTraceFunctionExit0(CPIAPITEM_SAVESHARE_EXIT);
+}
+
+/*!
+    Moves access point from current destination to given destination.
+    
+    @param[in] id Target destination's ID
+ */
+void CpIapItem::saveMove(int id)
+{
+    OstTraceFunctionEntry0(CPIAPITEM_SAVEMOVE_ENTRY);
+    try {
+        // Make move in commsdat
+        CmConnectionMethodShim *cm = NULL;
+        if (mDestId != 0) {
+            CmDestinationShim *source = mCmm->destination(mDestId);
+            cm = source->connectionMethodByID(mIapId);
+            source->removeConnectionMethod(cm);
+            source->update();
+            delete source;
+        } else {
+            cm = mCmm->connectionMethod(mIapId);
+        }
+        CmDestinationShim *target = mCmm->destination(id);
+        target->addConnectionMethod(cm);
+        target->update();
+        delete target;
+        delete cm;
+    }
+    catch (const std::exception&) {
+        OstTrace0(TRACE_NORMAL, DUP1_CPIAPITEM_SAVEMOVE, "CpIapItem::saveMove: Exception caught");
+        showErrorNote(hbTrId("txt_occ_info_unable_to_save_setting"));
+    }
+    OstTrace0(TRACE_NORMAL, CPIAPITEM_SAVEMOVE, "CpIapItem::saveMove: Emit access point changed signal");
+    emit iapChanged(); 
+    OstTraceFunctionExit0(CPIAPITEM_SAVEMOVE_EXIT);
+}
+
+/*!
+    Tests if CmManagerShim has been created successfully
+    earlier. If not, it retries.
+ */
+bool CpIapItem::isCmManagerAvailable()
+{
+    OstTraceFunctionEntry0(CPIAPITEM_ISCMMANAGERAVAILABLE_ENTRY);
+    bool retval = false;
+    if (mCmm == NULL) {
+        try {
+            mCmm = new CmManagerShim();
+            retval = true;
+        }
+        catch (const std::exception&) {
+            OstTrace0(TRACE_NORMAL, CPIAPITEM_ISCMMANAGERAVAILABLE, "CpIapItem::isCmManagerAvailable: Exception caught");
+            mCmm = NULL;
+        }
+    } else {
+        retval = true;
+    }
+    OstTraceFunctionExit0(CPIAPITEM_ISCMMANAGERAVAILABLE_EXIT);
+    return retval;
+}
+
+/*!
+    Helper function for creating item specific menu.
+    
+    @param[in] protLvl Effective protection level for this
+                       access point.
+ */
+HbMenu *CpIapItem::createItemMenu(
+    CMManagerShim::CmmProtectionLevel protLvl,
+    const QPointF &position)
+{
+    OstTraceFunctionEntry0(CPIAPITEM_CREATEITEMMENU_ENTRY);
+    HbMenu* menu = new HbMenu();
+    menu->setAttribute(Qt::WA_DeleteOnClose);
+    HbAction* moveIapAction 
+        = menu->addAction(hbTrId("txt_occ_menu_move_to_other_destination"));
+    bool connected = connect(moveIapAction, SIGNAL(triggered()), this, SLOT(moveIap()));
+    Q_ASSERT(connected);
+    HbAction* deleteIapAction 
+        = menu->addAction(hbTrId("txt_common_menu_delete"));
+    connected = connect(
+        deleteIapAction, 
+        SIGNAL(triggered()), 
+        this, 
+        SLOT(showDeleteConfirmation()));
+    Q_ASSERT(connected);
+    HbAction* shareIapAction 
+        = menu->addAction(hbTrId("txt_occ_menu_share_to_other_destination"));
+    connected = connect(shareIapAction, SIGNAL(triggered()), this, SLOT(shareIap()));
+    Q_ASSERT(connected);
+       
+    if (protLvl == CMManagerShim::ProtLevel1) {
+        // Disable operations for protected destinations
+        moveIapAction->setDisabled(true);
+        deleteIapAction->setDisabled(true);
+        shareIapAction->setDisabled(true);
+    } else if (protLvl == CMManagerShim::ProtLevel3) {
+        // Disable operations for protected access points.
+        moveIapAction->setDisabled(mProtected);
+        deleteIapAction->setDisabled(mProtected);
+        shareIapAction->setDisabled(mProtected);
+    }
+    
+    // Can't share uncategorised APs
+    if (mDestId == 0)
+    {
+        shareIapAction->setDisabled(true);
+    }
+       
+    menu->setPreferredPos(position);
+    OstTraceFunctionExit0(CPIAPITEM_CREATEITEMMENU_EXIT);
+    return menu;
+}
+
+/*!
+    Helper function for showing error notes.
+    
+    @param[in] info Info string to be shown in note.
+ */
+void CpIapItem::showErrorNote(const QString &info)
+{
+    OstTraceFunctionEntry0(CPIAPITEM_SHOWERRORNOTE_ENTRY);
+    HbMessageBox *note = new HbMessageBox(HbMessageBox::MessageTypeInformation);
+    note->clearActions();
+    note->setAttribute(Qt::WA_DeleteOnClose);
+    note->setText(info);
+    note->setTimeout(HbPopup::NoTimeout);
+    HbAction *errorOk = new HbAction(hbTrId("txt_common_button_ok"));                       
+    note->addAction(errorOk);
+    note->show();    
+    OstTraceFunctionExit0(CPIAPITEM_SHOWERRORNOTE_EXIT);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpdestinationplugin/traces/OstTraceDefinitions.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2010 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:
+ * OST trace header file.
+ *
+ */
+
+#ifndef OSTTRACEDEFINITIONS_H
+#define OSTTRACEDEFINITIONS_H
+#include <opensystemtrace.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpipsettingsplugin/cpipsettingsplugin.pro	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,56 @@
+#
+# Copyright (c) 2010 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: 
+#
+
+TEMPLATE = lib
+TARGET = cpipsettingsplugin
+DEPENDPATH += .
+INCLUDEPATH += . ../inc ../../inc
+
+CONFIG += hb plugin
+
+MOC_DIR = moc
+OBJECTS_DIR = obj
+RCC_DIR = rcc
+
+LIBS += -lcpframework
+
+# Sources
+HEADERS += inc/cpipsettingsplugin.h \
+           inc/cpipsettingsview.h
+SOURCES += src/cpipsettingsplugin.cpp \
+           src/cpipsettingsview.cpp
+
+TRANSLATIONS = cpipsettingsplugin.ts
+
+symbian:
+{
+TARGET.EPOCALLOWDLLDATA = 1
+TARGET.UID3 = 0x2002BC8F
+TARGET.CAPABILITY = CAP_GENERAL_DLL
+
+deploy.path = C:
+qtplugins.path = /resource/qt/plugins/controlpanel
+qtplugins.sources += qmakepluginstubs/cpipsettingsplugin.qtplugin
+
+for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin $$deploy.path$$qtplugins.path/$$basename(qtplugin)"
+
+BLD_INF_RULES.prj_exports += "rom/cpipsettingsplugin.iby CORE_MW_LAYER_IBY_EXPORT_PATH(cpipsettingsplugin.iby)"
+BLD_INF_RULES.prj_exports += "rom/cpipsettingsplugin_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(cpipsettingsplugin_resources.iby)"
+}
+
+plugin.sources = cpipsettingsplugin.dll
+plugin.path = \resource\qt\plugins\controlpanel
+DEPLOYMENT += plugin
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpipsettingsplugin/inc/cpipsettingsplugin.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2010 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:  
+*   
+*/
+
+#ifndef	CPIPSETTINGSPLUGIN_H
+#define	CPIPSETTINGSPLUGIN_H
+
+// System includes
+#include <QObject>
+#include <cpplugininterface.h>
+
+// User includes
+
+// Forward declarations
+class QTranslator;
+
+// External data types
+
+// Constants
+
+// Class declaration
+class CpIpSettingsPlugin : public QObject, public CpPluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(CpPluginInterface)
+    
+public:
+    CpIpSettingsPlugin();
+    ~CpIpSettingsPlugin();
+    QList<CpSettingFormItemData*> createSettingFormItemData(CpItemDataHelper &itemDataHelper) const;
+    
+signals:
+
+public slots:
+
+protected:
+
+protected slots:
+
+private:
+
+private slots:
+    
+private: // data
+    QTranslator *mTranslator;
+};
+
+#endif // CPIPSETTINGSPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpipsettingsplugin/inc/cpipsettingsview.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2010 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:  
+*
+*/
+
+#ifndef CPIPSETTINGSVIEW_H
+#define CPIPSETTINGSVIEW_H
+
+// System includes
+#include <cpbasesettingview.h>
+
+// User includes
+
+// Forward declarations
+
+// External data types
+
+// Constants
+
+// Class declaration
+class CpIpSettingsView : public CpBaseSettingView
+{
+    Q_OBJECT
+    
+public:
+    CpIpSettingsView(QGraphicsItem *parent = 0);
+    ~CpIpSettingsView();
+
+signals:
+
+public slots:
+
+protected:
+
+protected slots:
+
+private:
+
+private slots:
+    
+public: // data
+    CpItemDataHelper *mItemDataHelper;
+};
+
+#endif // CPIPSETTINGSVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpipsettingsplugin/rom/cpipsettingsplugin.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef __CPIPSETTINGSPLUGIN_IBY__
+#define __CPIPSETTINGSPLUGIN_IBY__
+
+#include <bldvariant.hrh>
+#include <data_caging_paths_for_iby.hrh>
+
+file=ABI_DIR/BUILD_DIR/cpipsettingsplugin.dll SHARED_LIB_DIR/cpipsettingsplugin.dll
+
+data=/epoc32/data/c/resource/qt/plugins/controlpanel/cpipsettingsplugin.qtplugin resource/qt/plugins/controlpanel/cpipsettingsplugin.qtplugin
+
+#endif // __CPIPSETTINGSPLUGIN_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpipsettingsplugin/rom/cpipsettingsplugin_resources.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef __CPIPSETTINGSPLUGIN_RESOURCES_IBY__
+#define __CPIPSETTINGSPLUGIN_RESOURCES_IBY__
+
+#include <bldvariant.hrh>
+#include <data_caging_paths_for_iby.hrh>
+
+data=DATAZ_/QT_TRANSLATIONS_DIR/cpipsettingsplugin.qm QT_TRANSLATIONS_DIR/cpipsettingsplugin.qm
+
+#endif // __CPIPSETTINGSPLUGIN_RESOURCES_IBY__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpipsettingsplugin/src/cpipsettingsplugin.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) 2010 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:  
+*
+*/
+
+// System includes
+#include <QApplication>
+#include <QLocale>
+#include <QTranslator>
+#include <cpsettingformentryitemdataimpl.h>
+
+// User includes
+#include "cpipsettingsplugin.h"
+#include "cpipsettingsview.h"
+
+/*!
+    \class CpIpSettingsPlugin
+    \brief Class implements the "Network Settings" entry item for
+    Control Panel.
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructor.
+*/
+CpIpSettingsPlugin::CpIpSettingsPlugin()
+{
+    // Install localization
+    QString lang = QLocale::system().name();
+    QString path = "z:/resource/qt/translations/";
+    mTranslator = new QTranslator(this);
+    mTranslator->load(path + "cpipsettingsplugin_" + lang);
+    qApp->installTranslator(mTranslator);
+}
+
+/*!
+    Destructor.
+*/
+CpIpSettingsPlugin::~CpIpSettingsPlugin()
+{
+}
+
+/*!
+    Creates and returns the entry item.
+*/
+QList<CpSettingFormItemData*> CpIpSettingsPlugin::createSettingFormItemData(CpItemDataHelper &itemDataHelper) const
+{
+    QList<CpSettingFormItemData*> settingFormData;
+    settingFormData.append(new CpSettingFormEntryItemDataImpl<CpIpSettingsView>(
+        itemDataHelper,
+        hbTrId("txt_occ_dblist_network_settings"),
+        "",
+        HbIcon("qtg_large_network_settings")));
+    return settingFormData;
+}
+
+Q_EXPORT_PLUGIN2(cpipsettingsplugin, CpIpSettingsPlugin);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpipsettingsplugin/src/cpipsettingsview.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 2010 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:  
+*
+*/
+
+// System includes
+#include <QtCore>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <cpplugininterface.h>
+#include <cpsettingformitemdata.h>
+#include <cpitemdatahelper.h>
+
+// User includes
+#include "cpipsettingsview.h"
+
+/*!
+    \class CpIpSettingsView
+    \brief Class implements the "Network Settings" Control Panel view.
+*/
+
+// External function prototypes
+
+// Local constants
+static const QString ipSettingsPlugins[] = {
+    "cpwlansettingsplugin.qtplugin",
+    "cpdestinationplugin.qtplugin",
+    "cpvpnmanagementplugin.qtplugin",
+    "" // empty item terminates the list
+};
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructor.
+*/
+CpIpSettingsView::CpIpSettingsView(QGraphicsItem *parent) :
+    CpBaseSettingView(0, parent)
+{
+    HbDataForm *form = settingForm();
+    if (form) {
+        HbDataFormModelItem *modelItem;
+        CpPluginInterface *plugin = NULL;
+        QDir pluginsDir("\\resource\\qt\\plugins\\controlpanel");
+        QPluginLoader pluginLoader;
+
+        HbDataFormModel *model = new HbDataFormModel;
+
+        mItemDataHelper = new CpItemDataHelper();
+        mItemDataHelper->setParent(this);
+        
+        // Load listed child plugins
+        for (int i = 0; !ipSettingsPlugins[i].isEmpty(); i++) {
+            pluginLoader.setFileName(pluginsDir.absoluteFilePath(ipSettingsPlugins[i]));
+            plugin = qobject_cast<CpPluginInterface *>(pluginLoader.instance());
+            if (plugin) {
+                QList<CpSettingFormItemData*> formDataItemList =
+                    plugin->createSettingFormItemData(*mItemDataHelper);
+                for (int j = 0; j < formDataItemList.count(); j++) {
+                    modelItem = formDataItemList.at(j);
+                    if (modelItem) {
+                        model->appendDataFormItem(modelItem);
+                    }
+                }
+            }
+        }
+
+        form->setModel(model);
+        model->setParent(form);
+        mItemDataHelper->bindToForm(form);
+    }
+}
+
+/*!
+    Destructor.
+*/
+CpIpSettingsView::~CpIpSettingsView()
+{
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/cppacketdataapplugin.pro	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,60 @@
+#
+# Copyright (c) 2010 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: 
+# Project info file for Control Panel packet data AP plugin.
+#
+
+TEMPLATE = lib
+TARGET = cppacketdataapplugin
+DEPENDPATH += .
+INCLUDEPATH += .
+
+CONFIG += hb plugin
+
+MOC_DIR = moc
+OBJECTS_DIR = obj
+RCC_DIR = rcc
+
+LIBS += -lcpframework -lconnection_settings_shim
+
+# Sources
+HEADERS += inc/cppacketdataapplugin.h \
+           inc/cppacketdataapview.h \
+           inc/cppacketdataapadvancedview.h \
+           traces/OstTraceDefinitions.h
+SOURCES += src/cppacketdataapplugin.cpp \
+           src/cppacketdataapview.cpp \
+           src/cppacketdataapadvancedview.cpp
+
+TRANSLATIONS = cpapplugin.ts
+
+symbian:
+{
+TARGET.EPOCALLOWDLLDATA = 1
+TARGET.UID3 = 0x2002E694
+TARGET.CAPABILITY = CAP_GENERAL_DLL
+
+deploy.path = C:
+qtplugins.path = /resource/qt/plugins/controlpanel/bearerap
+qtplugins.sources += qmakepluginstubs/cppacketdataapplugin.qtplugin
+
+for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin $$deploy.path$$qtplugins.path/$$basename(qtplugin)"
+
+BLD_INF_RULES.prj_exports += "rom/cppacketdataapplugin.iby CORE_MW_LAYER_IBY_EXPORT_PATH(cppacketdataapplugin.iby)"
+BLD_INF_RULES.prj_exports += "rom/cppacketdataapplugin_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(cppacketdataapplugin_resources.iby)"
+}
+
+plugin.sources = cppacketdataapplugin.dll
+plugin.path = /resource/qt/plugins/controlpanel/bearerap
+DEPLOYMENT += plugin
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/inc/cppacketdataapadvancedview.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel packet data AP advanced settings view header file.  
+*
+*/
+
+#ifndef CPPACKETDATAAPADVANCEDVIEW_H
+#define CPPACKETDATAAPADVANCEDVIEW_H
+
+// System includes
+#include <cpbasesettingview.h>
+
+// User includes
+
+// Forward declarations
+class HbDataForm;
+class HbDataFormModel;
+class CmConnectionMethodShim;
+
+// External data types
+
+// Constants
+
+// Class declaration
+class CpPacketDataApAdvancedView : public CpBaseSettingView
+{
+    Q_OBJECT
+    
+public:
+    CpPacketDataApAdvancedView(
+        CmConnectionMethodShim *cmConnectionMethod,
+        QGraphicsItem *parent = 0);
+    ~CpPacketDataApAdvancedView();
+    
+signals:
+
+public slots:
+
+protected:
+
+protected slots:
+ 
+private:
+    void createAdvancedSettings();
+    
+private slots:
+    
+private: // data
+    //! Dataform
+    HbDataForm *mForm;
+    //! Dataform model
+    HbDataFormModel *mModel;
+    //! Connection Settings Shim connection method pointer
+    CmConnectionMethodShim *mCmConnectionMethod;
+};
+
+#endif // CPPACKETDATAAPADVANCEDVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/inc/cppacketdataapplugin.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,71 @@
+/*
+* Copyright (c) 2010 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:  
+* Control Panel packet data AP plugin header file.
+*   
+*/
+
+#ifndef	CPPACKETDATAAPPLUGIN_H
+#define	CPPACKETDATAAPPLUGIN_H
+
+// System includes
+#include <QObject>
+#include <cpbearerapplugininterface.h>
+
+// User includes
+
+// Forward declarations
+class QTranslator;
+class CmManagerShim;
+class CmConnectionMethodShim;
+
+// External data types
+
+// Constants
+
+// Class declaration
+class CpPacketDataApPlugin : public QObject, public CpBearerApPluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(CpBearerApPluginInterface)
+    
+public:
+    CpPacketDataApPlugin();
+    ~CpPacketDataApPlugin();
+    
+    uint bearerType() const;
+    CpBaseSettingView *createSettingView(uint connectionMethod);
+    
+signals:
+    
+public slots:
+
+protected:
+    
+protected slots:
+
+private:
+
+private slots:
+    
+private: // data
+    //! Translator instance
+    QTranslator *mTranslator;
+    //! CM Manager Shim instance
+    CmManagerShim *mCmManager;
+    //! CM Connection Method Shim instance
+    CmConnectionMethodShim *mCmConnectionMethod;
+};
+
+#endif // CPPACKETDATAAPPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/inc/cppacketdataapview.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,118 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel packet data AP settings view header file.  
+*
+*/
+
+#ifndef CPPACKETDATAAPVIEW_H
+#define CPPACKETDATAAPVIEW_H
+
+// System includes
+#include <QSharedPointer>
+#include <QMap>
+#include <HbMessageBox>
+#include <cpbasesettingview.h>
+
+// User includes
+
+// Forward declarations
+class HbDataForm;
+class HbDataFormModel;
+class HbDataFormModelItem;
+class HbMessageBox;
+class CmConnectionMethodShim;
+class CpPacketDataApPlugin;
+
+// External data types
+
+// Constants
+
+// Class declaration
+class CpPacketDataApView : public CpBaseSettingView
+{
+    Q_OBJECT
+    
+public:
+    CpPacketDataApView(
+        CmConnectionMethodShim *cmConnectionMethod,
+        QGraphicsItem *parent = 0);
+    ~CpPacketDataApView();
+    
+signals:
+
+public slots:
+
+protected:
+
+protected slots:
+ 
+private:
+    void createAccessPointSettingsGroup();
+    void updateAccessPointSettingsGroup();
+    void showMessageBox(
+        HbMessageBox::MessageBoxType type,
+        const QString &text);
+    bool tryUpdate();
+    void handleUpdateError();
+    
+private slots:
+    void connectionNameChanged();
+    void accessPointNameChanged();
+    void userNameChanged();
+    void promptForAuthChanged(int state);
+    void passwordChanged();
+    void authenticationChanged(int index);
+    void homepageChanged();
+    void menuActionTriggered(HbAction *action);
+    void restoreCurrentView();
+    void setEditorPreferences(const QModelIndex modelIndex);
+    
+private: // data
+    //! Dataform
+    HbDataForm *mForm;
+    //! Dataform model
+    HbDataFormModel *mModel;
+    //! "Access point settings" group
+    HbDataFormModelItem *mApSettingsGroupItem;
+    //! "Connection name" setting item
+    HbDataFormModelItem *mConnectionNameItem;
+    //! "Access point name" setting item
+    HbDataFormModelItem *mAccessPointNameItem;
+    //! "User name" setting item
+    HbDataFormModelItem *mUserNameItem;
+    //! "Prompt" setting item
+    HbDataFormModelItem *mPromptForAuthItem;
+    //! "Password" setting item
+    HbDataFormModelItem *mPasswordItem;
+    //! "Authentication" setting item
+    HbDataFormModelItem *mAuthenticationItem;
+    //! "Homepage" setting item
+    HbDataFormModelItem *mHomepageItem;
+    //! "Advanced settings" action for view menu
+    HbAction *mAdvancedSettingsAction;
+    //! Connection Settings Shim connection method pointer
+    CmConnectionMethodShim *mCmConnectionMethod;
+    //! Message box for info notes
+    QSharedPointer<HbMessageBox> mMessageBox;
+    //! Maps checkbox value to CMManagerShim::PacketDataIFPromptForAuth value
+    QMap<Qt::CheckState, bool> mPromptForAuthMap;
+    //! Maps authentication combobox index to CMManagerShim::PacketDataDisablePlainTextAuth value
+    QMap<int, bool> mAuthenticationMap;
+    
+    // Friend classes
+    friend class TestCpPacketDataApPlugin;
+};
+
+#endif // CPPACKETDATAAPVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/rom/cppacketdataapplugin.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel packet data AP plugin iby file.
+*
+*/
+
+#ifndef CPPACKETDATAAPPLUGIN_IBY
+#define CPPACKETDATAAPPLUGIN_IBY
+
+#include <data_caging_paths_for_iby.hrh>
+
+file=ABI_DIR/BUILD_DIR/cppacketdataapplugin.dll SHARED_LIB_DIR/cppacketdataapplugin.dll
+
+data=/epoc32/data/c/resource/qt/plugins/controlpanel/bearerap/cppacketdataapplugin.qtplugin resource/qt/plugins/controlpanel/bearerap/cppacketdataapplugin.qtplugin
+
+#endif // CPPACKETDATAAPPLUGIN_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/rom/cppacketdataapplugin_resources.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel packet data AP plugin resources iby file.
+*
+*/
+
+#ifndef CPPACKETDATAAPPLUGIN_RESOURCES_IBY
+#define CPPACKETDATAAPPLUGIN_RESOURCES_IBY
+
+#include <data_caging_paths_for_iby.hrh>
+
+data=DATAZ_/QT_TRANSLATIONS_DIR/cpapplugin.qm QT_TRANSLATIONS_DIR/cpapplugin.qm
+
+#endif // CPPACKETDATAAPPLUGIN_RESOURCES_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/src/cppacketdataapadvancedview.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel packet data AP advanced settings view implementation.  
+*
+*/
+
+// System includes
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <cpsettingformitemdata.h>
+#include <cmconnectionmethod_shim.h>
+
+// User includes
+#include "cppacketdataapadvancedview.h"
+
+/*!
+    \class CpPacketDataApAdvancedView
+    \brief Implements the advanced settings view for packet data bearer
+           access points.
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructor.
+*/
+CpPacketDataApAdvancedView::CpPacketDataApAdvancedView(
+    CmConnectionMethodShim *cmConnectionMethod,
+    QGraphicsItem *parent) :
+        CpBaseSettingView(0, parent),
+        mForm(0),
+        mModel(0),
+        mCmConnectionMethod(cmConnectionMethod)
+{
+    // Construct packet data AP settings UI
+    mForm = settingForm();
+    if (mForm) {
+        mModel = new HbDataFormModel(mForm);
+
+        // Add advanced settings groups
+        createAdvancedSettings();
+        
+        mForm->setModel(mModel);
+    }
+}
+
+/*!
+    Destructor.
+*/
+CpPacketDataApAdvancedView::~CpPacketDataApAdvancedView()
+{
+}
+
+/*!
+    Adds settings items to the model.
+*/
+void CpPacketDataApAdvancedView::createAdvancedSettings()
+{
+    // TODO: Implement the advanced settings view.
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/src/cppacketdataapplugin.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,122 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel packet data AP plugin implementation.  
+*
+*/
+
+// System includes
+#include <QString>
+#include <QTranslator>
+#include <QCoreApplication>
+#include <cmmanager_shim.h>
+#include <cmconnectionmethod_shim.h>
+
+// User includes
+#include "cppacketdataapplugin.h"
+#include "cppacketdataapview.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cppacketdataappluginTraces.h"
+#endif
+
+/*!
+    \class CpPacketDataApPlugin
+    \brief Implements the packet data bearer AP (access point) Control Panel
+           plugin.
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructor.
+*/
+CpPacketDataApPlugin::CpPacketDataApPlugin() :
+    mTranslator(0),
+    mCmManager(0),
+    mCmConnectionMethod(0)
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPPLUGIN_CPPACKETDATAAPPLUGIN_ENTRY);
+ 
+    // Install localization
+    QString lang = QLocale::system().name();
+    QString path = "z:/resource/qt/translations/";
+    mTranslator = new QTranslator(this);
+    mTranslator->load(path + "cpapplugin_" + lang);
+    qApp->installTranslator(mTranslator);
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPPLUGIN_CPPACKETDATAAPPLUGIN_EXIT);
+}
+
+/*!
+    Destructor.
+*/
+CpPacketDataApPlugin::~CpPacketDataApPlugin()
+{
+    OstTraceFunctionEntry0(DUP1_CPPACKETDATAAPPLUGIN_CPPACKETDATAAPPLUGIN_ENTRY);
+    
+    delete mCmConnectionMethod;
+    delete mCmManager;
+    
+    OstTraceFunctionExit0(DUP1_CPPACKETDATAAPPLUGIN_CPPACKETDATAAPPLUGIN_EXIT);
+}
+
+/*!
+    Returns the bearer type handled by the plugin.
+*/
+uint CpPacketDataApPlugin::bearerType() const
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPPLUGIN_BEARERTYPE_ENTRY);
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPPLUGIN_BEARERTYPE_EXIT);
+    return CMManagerShim::BearerTypePacketData;
+}
+
+/*!
+    Creates the packet data AP settings view.
+*/
+CpBaseSettingView *CpPacketDataApPlugin::createSettingView(
+    uint connectionMethod)
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPPLUGIN_CREATESETTINGVIEW_ENTRY);
+    
+    // Find the connection method
+    try {
+        mCmManager = new CmManagerShim();
+        mCmConnectionMethod = mCmManager->connectionMethod(connectionMethod);
+    }
+    catch (const std::exception&) {
+        // Error, don't create settings view, just return
+        OstTrace1(
+            TRACE_ERROR,
+            CPPACKETDATAAPPLUGIN_CREATESETTINGVIEW,
+            "Connection method loading failed;connectionMethod=%u",
+            connectionMethod);
+
+        OstTraceFunctionExit0(DUP1_CPPACKETDATAAPPLUGIN_CREATESETTINGVIEW_EXIT);
+        return NULL;
+    }
+
+    // Connection method found, create settings view
+    OstTraceFunctionExit0(CPPACKETDATAAPPLUGIN_CREATESETTINGVIEW_EXIT);
+    return new CpPacketDataApView(mCmConnectionMethod);
+}
+
+Q_EXPORT_PLUGIN2(cppacketdataapplugin, CpPacketDataApPlugin);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/src/cppacketdataapview.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,642 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel packet data AP settings view header file.  
+*
+*/
+
+// System includes
+#include <QString>
+#include <QStringList>
+#include <QVariant>
+#include <HbMainWindow>
+#include <HbMenu>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbDataFormViewItem>
+#include <HbLineEdit>
+#include <HbEditorInterface>
+#include <HbUrlFilter>
+#include <HbPopup>
+#include <HbMessageBox>
+#include <HbAction>
+#include <cpsettingformitemdata.h>
+#include <cmconnectionmethod_shim.h>
+
+// User includes
+#include "cppacketdataapplugin.h"
+#include "cppacketdataapview.h"
+#include "cppacketdataapadvancedview.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cppacketdataapviewTraces.h"
+#endif
+
+/*!
+    \class CpPacketDataApView
+    \brief Implements the settings view for packet data bearer access points.
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructor.
+*/
+CpPacketDataApView::CpPacketDataApView(
+    CmConnectionMethodShim *cmConnectionMethod,
+    QGraphicsItem *parent) :
+        CpBaseSettingView(0, parent),
+        mForm(0),
+        mModel(0),
+        mApSettingsGroupItem(0),
+        mConnectionNameItem(0),
+        mAccessPointNameItem(0),
+        mUserNameItem(0),
+        mPromptForAuthItem(0),
+        mPasswordItem(0),
+        mAuthenticationItem(0),
+        mHomepageItem(0),
+        mAdvancedSettingsAction(0),
+        mCmConnectionMethod(cmConnectionMethod),
+        mMessageBox(0)
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_CPPACKETDATAAPVIEW_ENTRY);
+    
+    HbMenu *menu = this->menu();
+    mAdvancedSettingsAction = menu->addAction(
+        hbTrId("txt_occ_opt_advanced_settings"));
+    bool status = connect(
+        menu,
+        SIGNAL(triggered(HbAction*)),
+        this,
+        SLOT(menuActionTriggered(HbAction*)));
+    Q_ASSERT(status);
+
+    // Construct packet data AP settings UI
+    mForm = settingForm();
+    if (mForm) {
+        mModel = new HbDataFormModel(mForm);
+
+        // Add access point settings group
+        createAccessPointSettingsGroup();
+        
+        mForm->setModel(mModel);
+        
+        status = connect(
+            mForm,
+            SIGNAL(itemShown(const QModelIndex)),
+            this,
+            SLOT(setEditorPreferences(const QModelIndex)));
+        Q_ASSERT(status);
+
+        // Expand Access point settings group
+        mForm->setExpanded(mModel->indexFromItem(mApSettingsGroupItem), true);
+    }
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_CPPACKETDATAAPVIEW_EXIT);
+}
+
+/*!
+    Destructor.
+*/
+CpPacketDataApView::~CpPacketDataApView()
+{
+    OstTraceFunctionEntry0(DUP1_CPPACKETDATAAPVIEW_CPPACKETDATAAPVIEW_ENTRY);
+    
+    OstTraceFunctionExit0(DUP1_CPPACKETDATAAPVIEW_CPPACKETDATAAPVIEW_EXIT);
+}
+
+/*!
+    Adds settings group with all settings items to the model.
+*/
+void CpPacketDataApView::createAccessPointSettingsGroup()
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_CREATEACCESSPOINTSETTINGSGROUP_ENTRY);
+    
+    // Access point settings group
+    mApSettingsGroupItem = new HbDataFormModelItem(
+        HbDataFormModelItem::GroupItem, 
+        hbTrId("txt_occ_subhead_access_point_settings"));
+    mModel->appendDataFormItem(mApSettingsGroupItem);
+    
+    // Connection name
+    mConnectionNameItem = new CpSettingFormItemData(
+        HbDataFormModelItem::TextItem,
+        hbTrId("txt_occ_setlabel_connection_name"));
+    // Connect signal and add item to group
+    mForm->addConnection(
+        mConnectionNameItem,
+        SIGNAL(editingFinished()),
+        this,
+        SLOT(connectionNameChanged()));
+    mApSettingsGroupItem->appendChild(mConnectionNameItem);
+    
+    // Access point name
+    mAccessPointNameItem = new CpSettingFormItemData(
+        HbDataFormModelItem::TextItem,
+        hbTrId("txt_occ_setlabel_access_point_name"));
+    // Connect signal and add item to group
+    mForm->addConnection(
+        mAccessPointNameItem,
+        SIGNAL(editingFinished()),
+        this,
+        SLOT(accessPointNameChanged()));
+    mApSettingsGroupItem->appendChild(mAccessPointNameItem);
+    
+    // User name
+    mUserNameItem = new CpSettingFormItemData(
+        HbDataFormModelItem::TextItem,
+        hbTrId("txt_occ_setlabel_user_name"));
+    // Connect signal and add item to group
+    mForm->addConnection(
+        mUserNameItem,
+        SIGNAL(editingFinished()),
+        this,
+        SLOT(userNameChanged()));
+    mApSettingsGroupItem->appendChild(mUserNameItem);
+    
+    // Prompt for password
+    mPromptForAuthItem = new CpSettingFormItemData(
+        HbDataFormModelItem::CheckBoxItem,
+        hbTrId("txt_occ_setlabel_password"));
+    mPromptForAuthItem->setContentWidgetData("text",
+        hbTrId("txt_occ_setlabel_password_val_prompt"));
+    // Construct map to link item values to setting values
+    mPromptForAuthMap.insert(Qt::Unchecked, false); // Do not prompt
+    mPromptForAuthMap.insert(Qt::Checked, true); // Prompt for password
+    // Connect signal and add item to group
+    mForm->addConnection(
+        mPromptForAuthItem,
+        SIGNAL(stateChanged(int)),
+        this,
+        SLOT(promptForAuthChanged(int)));
+    mApSettingsGroupItem->appendChild(mPromptForAuthItem);
+    
+    // Password
+    mPasswordItem = new CpSettingFormItemData(
+        HbDataFormModelItem::TextItem,
+        hbTrId("txt_occ_setlabel_password"));
+    mPasswordItem->setContentWidgetData("echoMode", "Password");
+    // Connect signal and add item to group
+    mForm->addConnection(
+        mPasswordItem,
+        SIGNAL(editingFinished()),
+        this,
+        SLOT(passwordChanged()));
+    mApSettingsGroupItem->appendChild(mPasswordItem);
+    
+    // Authentication
+    mAuthenticationItem = new CpSettingFormItemData(
+        HbDataFormModelItem::ComboBoxItem,
+        hbTrId("txt_occ_setlabel_authentication"));
+    // Add items to combobox
+    QStringList authenticationItems;
+    authenticationItems
+        << hbTrId("txt_occ_setlabel_authentication_val_normal")
+        << hbTrId("txt_occ_setlabel_authentication_val_secure");
+    mAuthenticationItem->setContentWidgetData("items", authenticationItems);
+    // Construct map to link item indexes to setting values
+    mAuthenticationMap.insert(0, false); // normal (plaintext allowed)
+    mAuthenticationMap.insert(1, true); // secure (plaintext disabled)
+    // Connect signal and add item to group
+    mForm->addConnection(
+        mAuthenticationItem,
+        SIGNAL(currentIndexChanged(int)),
+        this,
+        SLOT(authenticationChanged(int)));
+    mApSettingsGroupItem->appendChild(mAuthenticationItem);
+    
+    // Homepage
+    mHomepageItem = new CpSettingFormItemData(
+        HbDataFormModelItem::TextItem,
+        hbTrId("txt_occ_setlabel_homepage"));
+    // Connect signal and add item to group
+    mForm->addConnection(
+        mHomepageItem,
+        SIGNAL(editingFinished()),
+        this,
+        SLOT(homepageChanged()));
+    mApSettingsGroupItem->appendChild(mHomepageItem);
+    
+    // Read settings from CommsDat and update widgets
+    updateAccessPointSettingsGroup();
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_CREATEACCESSPOINTSETTINGSGROUP_EXIT);
+}
+
+/*!
+    Reads attribute values and updates "Access point settings" group settings.
+*/
+void CpPacketDataApView::updateAccessPointSettingsGroup()
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_UPDATEACCESSPOINTSETTINGSGROUP_ENTRY);
+
+    // Get attributes from CommsDat and set values to UI widgets
+    
+    // Connection name
+    QString connectionName = mCmConnectionMethod->getStringAttribute(
+        CMManagerShim::CmName);
+    mConnectionNameItem->setContentWidgetData("text", connectionName);
+    
+    // Access point name
+    QString accessPointName = mCmConnectionMethod->getStringAttribute(
+        CMManagerShim::PacketDataAPName);
+    mAccessPointNameItem->setContentWidgetData("text", accessPointName);
+    
+    // User name
+    QString userName = mCmConnectionMethod->getStringAttribute(
+        CMManagerShim::PacketDataIFAuthName);
+    mUserNameItem->setContentWidgetData("text", userName);
+    
+    // Prompt for password
+    bool promptForAuth = mCmConnectionMethod->getBoolAttribute(
+        CMManagerShim::PacketDataIFPromptForAuth);
+    mPromptForAuthItem->setContentWidgetData("checkState",
+        mPromptForAuthMap.key(promptForAuth));
+    if (promptForAuth) {
+        mPasswordItem->setEnabled(false);
+    } else {
+        mPasswordItem->setEnabled(true);
+    }
+    
+    // Password
+    QString password = mCmConnectionMethod->getStringAttribute(
+        CMManagerShim::PacketDataIFAuthPass);
+    mPasswordItem->setContentWidgetData("text", password);
+
+    // Authentication
+    bool disablePlainText = mCmConnectionMethod->getBoolAttribute(
+        CMManagerShim::PacketDataDisablePlainTextAuth);
+    mAuthenticationItem->setContentWidgetData("currentIndex",
+        mAuthenticationMap.key(disablePlainText));
+    
+    // Homepage
+    QString homepage = mCmConnectionMethod->getStringAttribute(
+        CMManagerShim::CmStartPage);
+    mHomepageItem->setContentWidgetData("text", homepage);
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_UPDATEACCESSPOINTSETTINGSGROUP_EXIT);
+}
+
+/*!
+    Shows message box with "OK" button using given text.
+*/
+void CpPacketDataApView::showMessageBox(
+    HbMessageBox::MessageBoxType type,
+    const QString &text)
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_SHOWMESSAGEBOX_ENTRY);
+    
+    // Create a message box
+    mMessageBox = QSharedPointer<HbMessageBox>(new HbMessageBox(type));
+    mMessageBox->setText(text);
+    mMessageBox->setModal(true);
+    mMessageBox->setTimeout(HbPopup::NoTimeout);
+    mMessageBox->open();
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_SHOWMESSAGEBOX_EXIT);
+}
+
+/*!
+    Tries to update connection method changes to CommsDat.
+    Returns "true" if success, "false" if some error happened. 
+*/
+bool CpPacketDataApView::tryUpdate()
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_TRYUPDATE_ENTRY);
+    
+    // Try update
+    try {
+        mCmConnectionMethod->update();
+    }
+    catch (const std::exception&) {
+        // Handle error
+        handleUpdateError();
+        
+        OstTraceFunctionExit0(CPPACKETDATAAPVIEW_TRYUPDATE_EXIT);
+        return false;
+    }
+
+    OstTraceFunctionExit0(DUP1_CPPACKETDATAAPVIEW_TRYUPDATE_EXIT);
+    return true;
+}
+
+/*!
+    Handles failed CommsDat update.
+ */
+void CpPacketDataApView::handleUpdateError()
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_HANDLEUPDATEERROR_ENTRY);
+    
+    // Show error note to user
+    showMessageBox(
+        HbMessageBox::MessageTypeWarning,
+        hbTrId("txt_occ_info_unable_to_save_setting"));
+    // Reload settings from CommsDat and update UI
+    try {
+        mCmConnectionMethod->refresh();
+    }
+    catch (const std::exception&) {
+        // Ignore error from refresh. Most likely this will not happen, but
+        // if it does, there isn't very much we can do.
+        OstTrace0(
+            TRACE_ERROR,
+            CPPACKETDATAAPVIEW_HANDLEUPDATEERROR,
+            "Refresh failed");
+    };
+    updateAccessPointSettingsGroup();
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_HANDLEUPDATEERROR_EXIT);
+}
+
+/*!
+    Updates connection name to CommsDat.
+*/
+void CpPacketDataApView::connectionNameChanged()
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_CONNECTIONNAMECHANGED_ENTRY);
+    
+    QString connectionName =
+        mConnectionNameItem->contentWidgetData("text").toString();
+    if (!connectionName.isEmpty()) {
+        // Update to CommsDat
+        mCmConnectionMethod->setStringAttribute(
+            CMManagerShim::CmName,
+            connectionName);
+        if (tryUpdate()) {
+            // Update successful
+            // Read name because in case the name already exists it will
+            // be made unique by CMManager
+            connectionName = mCmConnectionMethod->getStringAttribute(
+                CMManagerShim::CmName);
+            mConnectionNameItem->setContentWidgetData("text", connectionName);
+        }
+    } else {
+        // Inform user of invalid name
+        showMessageBox(
+            HbMessageBox::MessageTypeInformation,
+            hbTrId("txt_occ_info_invalid_name"));
+
+        // Empty name not allowed, revert back to old value in CommsDat
+        connectionName = mCmConnectionMethod->getStringAttribute(
+            CMManagerShim::CmName);
+        mConnectionNameItem->setContentWidgetData("text", connectionName);
+     }
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_CONNECTIONNAMECHANGED_EXIT);
+}
+
+/*!
+    Updates access point name to CommsDat.
+*/
+void CpPacketDataApView::accessPointNameChanged()
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_ACCESSPOINTNAMECHANGED_ENTRY);
+    
+    // Update to CommsDat
+    QString accessPointName =
+        mAccessPointNameItem->contentWidgetData("text").toString();
+    if (!accessPointName.isEmpty()) {
+        mCmConnectionMethod->setStringAttribute(
+            CMManagerShim::PacketDataAPName,
+            accessPointName);
+        (void)tryUpdate();
+    } else {
+        // Inform user of invalid name
+        showMessageBox(
+            HbMessageBox::MessageTypeInformation,
+            hbTrId("txt_occ_info_invalid_name"));
+    
+        // Empty name not allowed, revert back to old value in CommsDat
+        accessPointName = mCmConnectionMethod->getStringAttribute(
+            CMManagerShim::PacketDataAPName);
+        mAccessPointNameItem->setContentWidgetData("text", accessPointName);
+    }
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_ACCESSPOINTNAMECHANGED_EXIT);
+}
+
+/*!
+    Updates user name to CommsDat.
+*/
+void CpPacketDataApView::userNameChanged()
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_USERNAMECHANGED_ENTRY);
+    
+    // Update to CommsDat
+    QVariant userName = mUserNameItem->contentWidgetData("text");
+    mCmConnectionMethod->setStringAttribute(
+        CMManagerShim::PacketDataIFAuthName,
+        userName.toString());
+    (void)tryUpdate();
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_USERNAMECHANGED_EXIT);
+}
+
+/*!
+    Updates prompt for password setting to CommsDat.
+*/
+void CpPacketDataApView::promptForAuthChanged(int state)
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_PROMPTFORAUTHCHANGED_ENTRY);
+    
+    // If prompt for auth is selected, password edit should be disabled.
+    if (state == Qt::Checked) {
+        mPasswordItem->setEnabled(false);
+    } else {
+        mPasswordItem->setEnabled(true);
+    }
+    // Update to CommsDat
+    mCmConnectionMethod->setBoolAttribute(
+        CMManagerShim::PacketDataIFPromptForAuth,
+        mPromptForAuthMap.value(static_cast<Qt::CheckState>(state)));
+    (void)tryUpdate();
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_PROMPTFORAUTHCHANGED_EXIT);
+}
+
+/*!
+    Updates password to CommsDat.
+*/
+void CpPacketDataApView::passwordChanged()
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_PASSWORDCHANGED_ENTRY);
+    
+    // Update to CommsDat
+    QVariant password = mPasswordItem->contentWidgetData("text");
+    mCmConnectionMethod->setStringAttribute(
+        CMManagerShim::PacketDataIFAuthPass,
+        password.toString());
+    (void)tryUpdate();
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_PASSWORDCHANGED_EXIT);
+}
+
+/*!
+    Updates authentication setting to CommsDat.
+*/
+void CpPacketDataApView::authenticationChanged(int index)
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_AUTHENTICATIONCHANGED_ENTRY);
+    
+    // Update to CommsDat
+    mCmConnectionMethod->setBoolAttribute(
+        CMManagerShim::PacketDataDisablePlainTextAuth,
+        mAuthenticationMap.value(index));
+    (void)tryUpdate();
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_AUTHENTICATIONCHANGED_EXIT);
+}
+
+/*!
+    Updates homepage to CommsDat.
+*/
+void CpPacketDataApView::homepageChanged()
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_HOMEPAGECHANGED_ENTRY);
+    
+    // Update to CommsDat
+    QString homepage = mHomepageItem->contentWidgetData("text").toString();
+    mCmConnectionMethod->setStringAttribute(
+        CMManagerShim::CmStartPage, homepage);
+    (void)tryUpdate();
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_HOMEPAGECHANGED_EXIT);
+}
+
+/*!
+    Handles menu actions.
+*/
+void CpPacketDataApView::menuActionTriggered(HbAction *action)
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_MENUACTIONTRIGGERED_ENTRY);
+    
+    if (action == mAdvancedSettingsAction) {
+        // "Advanced settings" selected
+        HbMainWindow *mainWindow = this->mainWindow();
+
+        // Create the advanced settings view
+        HbView *newView = new CpPacketDataApAdvancedView(mCmConnectionMethod);
+        // Connect signal to return back to the previous view
+        bool status = QObject::connect(
+            newView,
+            SIGNAL(aboutToClose()),
+            this,
+            SLOT(restoreCurrentView()));
+        Q_ASSERT(status);
+
+        // Show the advanced settings view
+        mainWindow->addView(newView);
+        mainWindow->setCurrentView(newView);
+    }
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_MENUACTIONTRIGGERED_EXIT);
+}
+
+/*!
+    Deletes the current view and sets this view as the current one.
+*/
+void CpPacketDataApView::restoreCurrentView()
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_RESTORECURRENTVIEW_ENTRY);
+    
+    HbMainWindow *mainWindow = this->mainWindow();
+    
+    // Remove the previous view and delete it
+    HbView *prevView = mainWindow->currentView();
+    mainWindow->removeView(prevView);
+    prevView->deleteLater();
+    
+    // Set this view on top
+    mainWindow->setCurrentView(this);
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_RESTORECURRENTVIEW_EXIT);
+}
+
+/*!
+    Sets editor preferences for all HbLineEdit items.
+*/
+void CpPacketDataApView::setEditorPreferences(const QModelIndex modelIndex)
+{
+    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_SETEDITORPREFERENCES_ENTRY);
+    
+    HbDataFormViewItem *viewItem = mForm->dataFormViewItem(modelIndex);
+    HbDataFormModelItem *modelItem = mModel->itemFromIndex(modelIndex);
+    
+    if (modelItem == mConnectionNameItem
+        || modelItem == mAccessPointNameItem
+        || modelItem == mUserNameItem
+        || modelItem == mPasswordItem
+        || modelItem == mHomepageItem ) {
+        // HbLineEdit items, get editor and editor interface
+        HbLineEdit *edit = qobject_cast<HbLineEdit *>
+            (viewItem->dataItemContentWidget());
+        HbEditorInterface editInterface(edit);
+        
+        if (modelItem == mConnectionNameItem) {
+            // Setup editor for connection name
+            editInterface.setConstraints(HbEditorConstraintLatinAlphabetOnly);
+            edit->setInputMethodHints(Qt::ImhNoPredictiveText); 
+            edit->setMaxLength(CMManagerShim::CmNameLength);
+        } else if (modelItem == mAccessPointNameItem) {
+            // Setup editor for packet data AP name
+            editInterface.setInputMode(HbInputModeNone);
+            editInterface.setConstraints(HbEditorConstraintLatinAlphabetOnly);
+            editInterface.setLocalDigitType(HbDigitTypeNone);
+            edit->setInputMethodHints(
+                Qt::ImhNoPredictiveText
+                | Qt::ImhPreferLowercase);
+            edit->setMaxLength(CMManagerShim::PacketDataAPNameLength);
+        } else if (modelItem == mUserNameItem) {
+            // Setup editor for user name
+            editInterface.setInputMode(HbInputModeNone);
+            editInterface.setConstraints(HbEditorConstraintLatinAlphabetOnly);
+            editInterface.setEditorClass(HbInputEditorClassUsername);
+            editInterface.setLocalDigitType(HbDigitTypeNone);
+            edit->setInputMethodHints(
+                Qt::ImhNoPredictiveText
+                | Qt::ImhPreferLowercase);
+            edit->setMaxLength(CMManagerShim::PacketDataIFAuthNameLength);
+        } else if (modelItem == mPasswordItem) {
+            // Setup editor for password
+            editInterface.setInputMode(HbInputModeNone);
+            editInterface.setConstraints(HbEditorConstraintLatinAlphabetOnly);
+            editInterface.setEditorClass(HbInputEditorClassPassword);
+            editInterface.setLocalDigitType(HbDigitTypeNone);
+            edit->setInputMethodHints(
+                Qt::ImhNoPredictiveText
+                | Qt::ImhPreferLowercase);
+            edit->setMaxLength(CMManagerShim::PacketDataIFAuthPassLength);
+        } else { /* mHomepageItem */
+            // Setup editor for URL
+            editInterface.setInputMode(HbInputModeNone);
+            editInterface.setConstraints(HbEditorConstraintLatinAlphabetOnly);
+            editInterface.setFilter(HbUrlFilter::instance());
+            editInterface.setEditorClass(HbInputEditorClassUrl);
+            editInterface.setLocalDigitType(HbDigitTypeNone);
+            edit->setInputMethodHints(
+                Qt::ImhNoPredictiveText
+                | Qt::ImhPreferLowercase);
+            edit->setMaxLength(CMManagerShim::CmStartPageLength);
+        }
+    }
+    
+    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_SETEDITORPREFERENCES_EXIT);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/traces/OstTraceDefinitions.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2010 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:
+ * OST trace header file.
+ *
+ */
+
+#ifndef OSTTRACEDEFINITIONS_H
+#define OSTTRACEDEFINITIONS_H
+#include <opensystemtrace.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/tsrc/ut/hbautotest.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,835 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include "hbautotest.h"
+#include <hbmainwindow.h>
+#include <hbwidget.h>
+
+
+const qreal STEP = 4; //How many pixels to drag before sending an event
+
+//Init static members
+bool HbAutoTest::pointerPressed = false;
+QPointF HbAutoTest::pressPoint = QPointF();
+
+void HbAutoTest::mouseMove (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos, int delay)
+{
+    if (delay!=-1) {
+        QTest::qWait(delay);
+    }
+    QPointF targetPoint=QPointF();
+    if (pos==QPointF()) {
+        targetPoint = middlePointOfWidget(widget);
+    } else {
+        targetPoint = widget->mapToScene(pos);
+    }
+    if (pointerPressed) {
+        //Now we should drag an item
+        drag(window, targetPoint);
+            HbAutoTestMouseEvent me (
+            QEvent::MouseMove, 
+            targetPoint.toPoint(), 
+            window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+            Qt::NoButton, 
+            Qt::NoButton, 
+            Qt::NoModifier);
+            QSpontaneKeyEvent::setSpontaneous(&me);
+            qApp->notify((window->viewport()), &me);
+            QCoreApplication::sendPostedEvents();
+            QTest::qWait(1);
+    } else {
+            HbAutoTestMouseEvent me (
+            QEvent::MouseMove, 
+            targetPoint.toPoint(), 
+            window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+            Qt::NoButton, 
+            Qt::NoButton, 
+            Qt::NoModifier);
+            QSpontaneKeyEvent::setSpontaneous(&me);
+            qApp->notify((window->viewport()), &me);
+            QCoreApplication::sendPostedEvents();
+            QTest::qWait(1);
+
+    }
+    QTest::qWait(1);
+    QTest::qWait(1);
+}
+ 
+void HbAutoTest::mousePress (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos, int delay)
+{
+    if (delay!=-1) {
+        QTest::qWait(delay);
+    }
+    pointerPressed=true;
+    QPointF targetPoint=QPointF();
+    if (pos==QPointF()) {
+        targetPoint = middlePointOfWidget(widget);
+    } else {
+        targetPoint = widget->mapToScene(pos);
+    }
+    QCursor::setPos(window->mapToGlobal(targetPoint.toPoint()));
+
+    pressPoint=targetPoint;
+    
+    HbAutoTestMouseEvent me (
+    QEvent::MouseButtonPress, 
+    targetPoint.toPoint(), 
+    window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+    Qt::LeftButton, 
+    Qt::LeftButton, 
+    Qt::NoModifier);
+
+    QSpontaneKeyEvent::setSpontaneous(&me);
+    qApp->notify((window->viewport()), &me);
+    QCoreApplication::sendPostedEvents();
+    QCoreApplication::sendPostedEvents();
+    QTest::qWait(1);
+}
+
+void HbAutoTest::mouseRelease (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos, int delay)
+{
+    if (delay!=-1) {
+        QTest::qWait(delay);
+    }
+    pointerPressed=false;
+    QPointF targetPoint=QPointF();
+    if (pos==QPointF()) {
+        targetPoint = middlePointOfWidget(widget);
+    } else {
+        targetPoint = widget->mapToScene(pos);
+    }
+    QCursor::setPos(window->mapToGlobal(targetPoint.toPoint()));
+    pressPoint=QPointF();
+    HbAutoTestMouseEvent me (
+    QEvent::MouseButtonRelease, 
+    targetPoint.toPoint(), 
+    window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+    Qt::LeftButton, 
+    Qt::NoButton, 
+    Qt::NoModifier);
+
+    QSpontaneKeyEvent::setSpontaneous(&me);
+    qApp->notify((window->viewport()), &me);
+    QCoreApplication::sendPostedEvents();
+
+    QTest::qWait(1);
+    QTest::qWait(1);
+}
+
+void HbAutoTest::mouseClick (HbAutoTestMainWindow *window, const HbWidget *widget, QPointF pos, int delay)
+{
+    if (delay!=-1) {
+        QTest::qWait(delay);
+    }
+    QPointF targetPoint=QPointF();
+    if (pos==QPointF()) {
+        targetPoint = middlePointOfWidget(widget);
+    } else {
+        targetPoint = widget->mapToScene(pos);
+    }
+    
+    QCursor::setPos(window->mapToGlobal(targetPoint.toPoint()));
+    
+    HbAutoTestMouseEvent me (
+    QEvent::MouseButtonPress, 
+    targetPoint.toPoint(), 
+    window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+    Qt::LeftButton, 
+    Qt::LeftButton, 
+    Qt::NoModifier);
+    QSpontaneKeyEvent::setSpontaneous(&me);
+    qApp->notify((window->viewport()), &me);
+    QCoreApplication::sendPostedEvents();
+    //QTime currentTime = QTime::currentTime();
+    //qDebug() << currentTime.toString("hh:mm:ss.zzz") << ": Left button down";
+    QTest::qWait(1);
+
+    if (delay!=-1) {
+        QTest::qWait(delay);
+    }
+    HbAutoTestMouseEvent me2 (
+    QEvent::MouseButtonRelease, 
+    targetPoint.toPoint(), 
+    window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+    Qt::LeftButton, 
+    Qt::NoButton,
+    Qt::NoModifier);
+
+    QSpontaneKeyEvent::setSpontaneous(&me2);
+    qApp->notify((window->viewport()), &me2);
+    QCoreApplication::sendPostedEvents();
+    //currentTime = QTime::currentTime();
+    //qDebug() << currentTime.toString("hh:mm:ss.zzz") << ": Left button up";
+
+    QTest::qWait(1);
+    QTest::qWait(1);
+}   
+
+QPointF HbAutoTest::middlePointOfWidget( const HbWidget* widget)
+{
+    QRectF widgetRect = widget->rect();
+    QRectF widgetSceneRect = widget->mapRectToScene(widgetRect);
+    qreal middleX = ((widgetSceneRect.right() - widgetSceneRect.left())/2)+widgetSceneRect.left();
+    qreal middleY = ((widgetSceneRect.bottom() - widgetSceneRect.top())/2)+widgetSceneRect.top();  
+    return QPointF(middleX,middleY);
+}
+
+
+
+void HbAutoTest::drag(HbAutoTestMainWindow *window, QPointF targetPoint)
+{
+    qreal tempX = targetPoint.x() - pressPoint.x();
+    qreal tempY = targetPoint.y() - pressPoint.y();
+    qreal totalTrip = sqrt ((tempX * tempX) + (tempY * tempY));
+    
+    int numberOfSteps = qRound(totalTrip / STEP);
+    HbAutoTestMouseEvent me (
+        QEvent::MouseMove, 
+        targetPoint.toPoint(), 
+        window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+        Qt::NoButton , 
+        Qt::LeftButton, 
+        Qt::NoModifier);
+
+    QPointF nextPanPoint=pressPoint;
+    for (int i=1; i<numberOfSteps; i++) { //On purpose not =<
+        
+        nextPanPoint.setY (pressPoint.y()+((i / (qreal)numberOfSteps) * tempY));
+        nextPanPoint.setX (pressPoint.x()+((i / (qreal)numberOfSteps) * tempX));
+        
+        QCursor::setPos(window->mapToGlobal(nextPanPoint.toPoint()));
+
+        me =  HbAutoTestMouseEvent (QEvent::MouseMove,
+                            nextPanPoint.toPoint(), 
+                            window->viewport()->mapToGlobal(nextPanPoint.toPoint()), 
+                            Qt::NoButton, 
+                            Qt::LeftButton, 
+                            Qt::NoModifier);   
+
+        QSpontaneKeyEvent::setSpontaneous(&me);
+        qApp->notify((window->viewport()), &me);
+        QCoreApplication::sendPostedEvents();
+    }
+
+    QCursor::setPos(window->mapToGlobal(targetPoint.toPoint()));
+
+    //One more (or the only one) step to the target
+    me =  HbAutoTestMouseEvent (QEvent::MouseMove,
+                            targetPoint.toPoint(), 
+                            window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+                            Qt::NoButton, 
+                            Qt::LeftButton, 
+                            Qt::NoModifier);   
+    QSpontaneKeyEvent::setSpontaneous(&me);
+    qApp->notify((window->viewport()), &me);
+    QCoreApplication::sendPostedEvents();
+}
+
+
+void HbAutoTest::simulateEvent(QWidget *widget, bool press, int code,
+                              Qt::KeyboardModifiers modifier, QString text, bool repeat, int delay)
+    {
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        extern int Q_TESTLIB_EXPORT defaultKeyDelay();
+
+        if (delay == -1 || delay < 10) // defaultKeyDelay())
+            delay = 10; //defaultKeyDelay();
+        if(delay > 0)
+            QTest::qWait(delay);
+//        Q_UNUSED(delay);
+//        QTest::qWait(10); //TODO: Remove this and reveal above out-commented code
+
+        HbAutoTestKeyEvent a(press ? QEvent::KeyPress : QEvent::KeyRelease, code, modifier, text, repeat);
+        QSpontaneKeyEvent::setSpontaneous(&a);
+        if (!qApp->notify(widget, &a))
+            QTest::qWarn("Keyboard event not accepted by receiving widget");
+    }
+
+void HbAutoTest::sendKeyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key code,
+                             QString text, Qt::KeyboardModifiers modifier, int delay)
+    {
+        QTEST_ASSERT(qApp);
+
+        if (!widget)
+            widget = QWidget::keyboardGrabber();
+        if (!widget) {
+            if (QWidget *apw = QApplication::activePopupWidget())
+                widget = apw->focusWidget() ? apw->focusWidget() : apw;
+            else
+                widget = QApplication::focusWidget();
+        }
+        if (!widget)
+            widget = QApplication::activeWindow();
+
+        QTEST_ASSERT(widget);
+
+        if (action == QTest::Click) {
+            QPointer<QWidget> ptr(widget);
+            sendKeyEvent(QTest::Press, widget, code, text, modifier, delay);
+            if (!ptr) {
+                // if we send key-events to embedded widgets, they might be destroyed
+                // when the user presses Return
+                return;
+            }
+            sendKeyEvent(QTest::Release, widget, code, text, modifier, delay);
+            return;
+        }
+
+        bool repeat = false;
+
+        if (action == QTest::Press) {
+            if (modifier & Qt::ShiftModifier)
+                simulateEvent(widget, true, Qt::Key_Shift, 0, QString(), false, delay);
+
+            if (modifier & Qt::ControlModifier)
+                simulateEvent(widget, true, Qt::Key_Control, modifier & Qt::ShiftModifier, QString(), false, delay);
+
+            if (modifier & Qt::AltModifier)
+                simulateEvent(widget, true, Qt::Key_Alt,
+                              modifier & (Qt::ShiftModifier | Qt::ControlModifier), QString(), false, delay);
+            if (modifier & Qt::MetaModifier)
+                simulateEvent(widget, true, Qt::Key_Meta, modifier & (Qt::ShiftModifier
+                                                                      | Qt::ControlModifier | Qt::AltModifier), QString(), false, delay);
+            simulateEvent(widget, true, code, modifier, text, repeat, delay);
+        } else if (action == QTest::Release) {
+            simulateEvent(widget, false, code, modifier, text, repeat, delay);
+
+            if (modifier & Qt::MetaModifier)
+                simulateEvent(widget, false, Qt::Key_Meta, modifier, QString(), false, delay);
+            if (modifier & Qt::AltModifier)
+                simulateEvent(widget, false, Qt::Key_Alt, modifier &
+                              (Qt::ShiftModifier | Qt::ControlModifier | Qt::AltModifier), QString(), false, delay);
+
+            if (modifier & Qt::ControlModifier)
+                simulateEvent(widget, false, Qt::Key_Control,
+                              modifier & (Qt::ShiftModifier | Qt::ControlModifier), QString(), false, delay);
+
+            if (modifier & Qt::ShiftModifier)
+                simulateEvent(widget, false, Qt::Key_Shift, modifier & Qt::ShiftModifier, QString(), false, delay);
+        }
+    }
+
+void HbAutoTest::sendKeyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key code,
+                             char ascii, Qt::KeyboardModifiers modifier, int delay)
+    {
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        QString text;
+        if (ascii)
+            text = QString(QChar::fromLatin1(ascii));
+        sendKeyEvent(action, widget, code, text, modifier, delay);
+    }
+
+void HbAutoTest::keyEvent(QTest::KeyAction action, QWidget *widget, char ascii,
+                                Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        sendKeyEvent(action, widget, asciiToKey(ascii), ascii, modifier, delay); 
+     }
+     
+void HbAutoTest::keyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key key,
+                                Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        sendKeyEvent(action, widget, key, keyToAscii(key), modifier, delay); 
+     }
+
+void HbAutoTest::keyClicks(QWidget *widget, const QString &sequence,
+                                 Qt::KeyboardModifiers modifier, int delay)
+    {
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        for (int i=0; i < sequence.length(); i++)
+            keyEvent(QTest::Click, widget, sequence.at(i).toLatin1(), modifier, delay);
+    }
+
+void HbAutoTest::keyPress(QWidget *widget, char key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Press, widget, key, modifier, delay); 
+    }
+    
+void HbAutoTest::keyRelease(QWidget *widget, char key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Release, widget, key, modifier, delay); 
+    }
+    
+void HbAutoTest::keyClick(QWidget *widget, char key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Click, widget, key, modifier, delay); 
+    }
+    
+void HbAutoTest::keyPress(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Press, widget, key, modifier, delay); 
+    }
+    
+void HbAutoTest::keyRelease(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Release, widget, key, modifier, delay); }
+    
+void HbAutoTest::keyClick(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Click, widget, key, modifier, delay); 
+    }
+
+Qt::Key HbAutoTest::asciiToKey(char ascii)
+{
+    switch ((unsigned char)ascii) {
+    case 0x08: return Qt::Key_Backspace;
+    case 0x09: return Qt::Key_Tab;
+    case 0x0b: return Qt::Key_Backtab;
+    case 0x0d: return Qt::Key_Return;
+    case 0x1b: return Qt::Key_Escape;
+    case 0x20: return Qt::Key_Space;
+    case 0x21: return Qt::Key_Exclam;
+    case 0x22: return Qt::Key_QuoteDbl;
+    case 0x23: return Qt::Key_NumberSign;
+    case 0x24: return Qt::Key_Dollar;
+    case 0x25: return Qt::Key_Percent;
+    case 0x26: return Qt::Key_Ampersand;
+    case 0x27: return Qt::Key_Apostrophe;
+    case 0x28: return Qt::Key_ParenLeft;
+    case 0x29: return Qt::Key_ParenRight;
+    case 0x2a: return Qt::Key_Asterisk;
+    case 0x2b: return Qt::Key_Plus;
+    case 0x2c: return Qt::Key_Comma;
+    case 0x2d: return Qt::Key_Minus;
+    case 0x2e: return Qt::Key_Period;
+    case 0x2f: return Qt::Key_Slash;
+    case 0x30: return Qt::Key_0;
+    case 0x31: return Qt::Key_1;
+    case 0x32: return Qt::Key_2;
+    case 0x33: return Qt::Key_3;
+    case 0x34: return Qt::Key_4;
+    case 0x35: return Qt::Key_5;
+    case 0x36: return Qt::Key_6;
+    case 0x37: return Qt::Key_7;
+    case 0x38: return Qt::Key_8;
+    case 0x39: return Qt::Key_9;
+    case 0x3a: return Qt::Key_Colon;
+    case 0x3b: return Qt::Key_Semicolon;
+    case 0x3c: return Qt::Key_Less;
+    case 0x3d: return Qt::Key_Equal;
+    case 0x3e: return Qt::Key_Greater;
+    case 0x3f: return Qt::Key_Question;
+    case 0x40: return Qt::Key_At;
+    case 0x41: return Qt::Key_A;
+    case 0x42: return Qt::Key_B;
+    case 0x43: return Qt::Key_C;
+    case 0x44: return Qt::Key_D;
+    case 0x45: return Qt::Key_E;
+    case 0x46: return Qt::Key_F;
+    case 0x47: return Qt::Key_G;
+    case 0x48: return Qt::Key_H;
+    case 0x49: return Qt::Key_I;
+    case 0x4a: return Qt::Key_J;
+    case 0x4b: return Qt::Key_K;
+    case 0x4c: return Qt::Key_L;
+    case 0x4d: return Qt::Key_M;
+    case 0x4e: return Qt::Key_N;
+    case 0x4f: return Qt::Key_O;
+    case 0x50: return Qt::Key_P;
+    case 0x51: return Qt::Key_Q;
+    case 0x52: return Qt::Key_R;
+    case 0x53: return Qt::Key_S;
+    case 0x54: return Qt::Key_T;
+    case 0x55: return Qt::Key_U;
+    case 0x56: return Qt::Key_V;
+    case 0x57: return Qt::Key_W;
+    case 0x58: return Qt::Key_X;
+    case 0x59: return Qt::Key_Y;
+    case 0x5a: return Qt::Key_Z;
+    case 0x5b: return Qt::Key_BracketLeft;
+    case 0x5c: return Qt::Key_Backslash;
+    case 0x5d: return Qt::Key_BracketRight;
+    case 0x5e: return Qt::Key_AsciiCircum;
+    case 0x5f: return Qt::Key_Underscore;
+    case 0x60: return Qt::Key_QuoteLeft;
+    case 0x61: return Qt::Key_A;
+    case 0x62: return Qt::Key_B;
+    case 0x63: return Qt::Key_C;
+    case 0x64: return Qt::Key_D;
+    case 0x65: return Qt::Key_E;
+    case 0x66: return Qt::Key_F;
+    case 0x67: return Qt::Key_G;
+    case 0x68: return Qt::Key_H;
+    case 0x69: return Qt::Key_I;
+    case 0x6a: return Qt::Key_J;
+    case 0x6b: return Qt::Key_K;
+    case 0x6c: return Qt::Key_L;
+    case 0x6d: return Qt::Key_M;
+    case 0x6e: return Qt::Key_N;
+    case 0x6f: return Qt::Key_O;
+    case 0x70: return Qt::Key_P;
+    case 0x71: return Qt::Key_Q;
+    case 0x72: return Qt::Key_R;
+    case 0x73: return Qt::Key_S;
+    case 0x74: return Qt::Key_T;
+    case 0x75: return Qt::Key_U;
+    case 0x76: return Qt::Key_V;
+    case 0x77: return Qt::Key_W;
+    case 0x78: return Qt::Key_X;
+    case 0x79: return Qt::Key_Y;
+    case 0x7a: return Qt::Key_Z;
+    case 0x7b: return Qt::Key_BraceLeft;
+    case 0x7c: return Qt::Key_Bar;
+    case 0x7d: return Qt::Key_BraceRight;
+    case 0x7e: return Qt::Key_AsciiTilde;
+
+    // Latin 1 codes adapted from X: keysymdef.h,v 1.21 94/08/28 16:17:06
+    case 0xa0: return Qt::Key_nobreakspace;
+    case 0xa1: return Qt::Key_exclamdown;
+    case 0xa2: return Qt::Key_cent;
+    case 0xa3: return Qt::Key_sterling;
+    case 0xa4: return Qt::Key_currency;
+    case 0xa5: return Qt::Key_yen;
+    case 0xa6: return Qt::Key_brokenbar;
+    case 0xa7: return Qt::Key_section;
+    case 0xa8: return Qt::Key_diaeresis;
+    case 0xa9: return Qt::Key_copyright;
+    case 0xaa: return Qt::Key_ordfeminine;
+    case 0xab: return Qt::Key_guillemotleft;
+    case 0xac: return Qt::Key_notsign;
+    case 0xad: return Qt::Key_hyphen;
+    case 0xae: return Qt::Key_registered;
+    case 0xaf: return Qt::Key_macron;
+    case 0xb0: return Qt::Key_degree;
+    case 0xb1: return Qt::Key_plusminus;
+    case 0xb2: return Qt::Key_twosuperior;
+    case 0xb3: return Qt::Key_threesuperior;
+    case 0xb4: return Qt::Key_acute;
+    case 0xb5: return Qt::Key_mu;
+    case 0xb6: return Qt::Key_paragraph;
+    case 0xb7: return Qt::Key_periodcentered;
+    case 0xb8: return Qt::Key_cedilla;
+    case 0xb9: return Qt::Key_onesuperior;
+    case 0xba: return Qt::Key_masculine;
+    case 0xbb: return Qt::Key_guillemotright;
+    case 0xbc: return Qt::Key_onequarter;
+    case 0xbd: return Qt::Key_onehalf;
+    case 0xbe: return Qt::Key_threequarters;
+    case 0xbf: return Qt::Key_questiondown;
+    case 0xc0: return Qt::Key_Agrave;
+    case 0xc1: return Qt::Key_Aacute;
+    case 0xc2: return Qt::Key_Acircumflex;
+    case 0xc3: return Qt::Key_Atilde;
+    case 0xc4: return Qt::Key_Adiaeresis;
+    case 0xc5: return Qt::Key_Aring;
+    case 0xc6: return Qt::Key_AE;
+    case 0xc7: return Qt::Key_Ccedilla;
+    case 0xc8: return Qt::Key_Egrave;
+    case 0xc9: return Qt::Key_Eacute;
+    case 0xca: return Qt::Key_Ecircumflex;
+    case 0xcb: return Qt::Key_Ediaeresis;
+    case 0xcc: return Qt::Key_Igrave;
+    case 0xcd: return Qt::Key_Iacute;
+    case 0xce: return Qt::Key_Icircumflex;
+    case 0xcf: return Qt::Key_Idiaeresis;
+    case 0xd0: return Qt::Key_ETH;
+    case 0xd1: return Qt::Key_Ntilde;
+    case 0xd2: return Qt::Key_Ograve;
+    case 0xd3: return Qt::Key_Oacute;
+    case 0xd4: return Qt::Key_Ocircumflex;
+    case 0xd5: return Qt::Key_Otilde;
+    case 0xd6: return Qt::Key_Odiaeresis;
+    case 0xd7: return Qt::Key_multiply;
+    case 0xd8: return Qt::Key_Ooblique;
+    case 0xd9: return Qt::Key_Ugrave;
+    case 0xda: return Qt::Key_Uacute;
+    case 0xdb: return Qt::Key_Ucircumflex;
+    case 0xdc: return Qt::Key_Udiaeresis;
+    case 0xdd: return Qt::Key_Yacute;
+    case 0xde: return Qt::Key_THORN;
+    case 0xdf: return Qt::Key_ssharp;
+    case 0xe5: return Qt::Key_Aring;
+    case 0xe6: return Qt::Key_AE;
+    case 0xf7: return Qt::Key_division;
+    case 0xf8: return Qt::Key_Ooblique;
+    case 0xff: return Qt::Key_ydiaeresis;
+    default: QTEST_ASSERT(false); return Qt::Key(0);
+    }
+}
+
+char HbAutoTest::keyToAscii(Qt::Key key)
+{
+    switch (key) {
+    case Qt::Key_Backspace: return 0x8; //BS
+    case Qt::Key_Tab: return 0x09; // HT
+    case Qt::Key_Backtab: return 0x0b; // VT
+    case Qt::Key_Enter:
+    case Qt::Key_Return: return 0x0d; // CR
+    case Qt::Key_Escape: return 0x1b; // ESC
+    case Qt::Key_Space: return 0x20;        // 7 bit printable ASCII
+    case Qt::Key_Exclam: return 0x21;
+    case Qt::Key_QuoteDbl: return 0x22;
+    case Qt::Key_NumberSign: return 0x23;
+    case Qt::Key_Dollar: return 0x24;
+    case Qt::Key_Percent: return 0x25;
+    case Qt::Key_Ampersand: return 0x26;
+    case Qt::Key_Apostrophe: return 0x27;
+    case Qt::Key_ParenLeft: return 0x28;
+    case Qt::Key_ParenRight: return 0x29;
+    case Qt::Key_Asterisk: return 0x2a;
+    case Qt::Key_Plus: return 0x2b;
+    case Qt::Key_Comma: return 0x2c;
+    case Qt::Key_Minus: return 0x2d;
+    case Qt::Key_Period: return 0x2e;
+    case Qt::Key_Slash: return 0x2f;
+    case Qt::Key_0: return 0x30;
+    case Qt::Key_1: return 0x31;
+    case Qt::Key_2: return 0x32;
+    case Qt::Key_3: return 0x33;
+    case Qt::Key_4: return 0x34;
+    case Qt::Key_5: return 0x35;
+    case Qt::Key_6: return 0x36;
+    case Qt::Key_7: return 0x37;
+    case Qt::Key_8: return 0x38;
+    case Qt::Key_9: return 0x39;
+    case Qt::Key_Colon: return 0x3a;
+    case Qt::Key_Semicolon: return 0x3b;
+    case Qt::Key_Less: return 0x3c;
+    case Qt::Key_Equal: return 0x3d;
+    case Qt::Key_Greater: return 0x3e;
+    case Qt::Key_Question: return 0x3f;
+    case Qt::Key_At: return 0x40;
+    case Qt::Key_A: return 0x61; // 0x41 == 'A', 0x61 == 'a'
+    case Qt::Key_B: return 0x62;
+    case Qt::Key_C: return 0x63;
+    case Qt::Key_D: return 0x64;
+    case Qt::Key_E: return 0x65;
+    case Qt::Key_F: return 0x66;
+    case Qt::Key_G: return 0x67;
+    case Qt::Key_H: return 0x68;
+    case Qt::Key_I: return 0x69;
+    case Qt::Key_J: return 0x6a;
+    case Qt::Key_K: return 0x6b;
+    case Qt::Key_L: return 0x6c;
+    case Qt::Key_M: return 0x6d;
+    case Qt::Key_N: return 0x6e;
+    case Qt::Key_O: return 0x6f;
+    case Qt::Key_P: return 0x70;
+    case Qt::Key_Q: return 0x71;
+    case Qt::Key_R: return 0x72;
+    case Qt::Key_S: return 0x73;
+    case Qt::Key_T: return 0x74;
+    case Qt::Key_U: return 0x75;
+    case Qt::Key_V: return 0x76;
+    case Qt::Key_W: return 0x77;
+    case Qt::Key_X: return 0x78;
+    case Qt::Key_Y: return 0x79;
+    case Qt::Key_Z: return 0x7a;
+    case Qt::Key_BracketLeft: return 0x5b;
+    case Qt::Key_Backslash: return 0x5c;
+    case Qt::Key_BracketRight: return 0x5d;
+    case Qt::Key_AsciiCircum: return 0x5e;
+    case Qt::Key_Underscore: return 0x5f;
+    case Qt::Key_QuoteLeft: return 0x60;
+
+    case Qt::Key_BraceLeft: return 0x7b;
+    case Qt::Key_Bar: return 0x7c;
+    case Qt::Key_BraceRight: return 0x7d;
+    case Qt::Key_AsciiTilde: return 0x7e;
+
+    case Qt::Key_Delete: return 0;
+    case Qt::Key_Insert: return 0; // = 0x1006,
+    case Qt::Key_Pause: return 0; // = 0x1008,
+    case Qt::Key_Print: return 0; // = 0x1009,
+    case Qt::Key_SysReq: return 0; // = 0x100a,
+
+    case Qt::Key_Clear: return 0; // = 0x100b,
+
+    case Qt::Key_Home: return 0; // = 0x1010,        // cursor movement
+    case Qt::Key_End: return 0; // = 0x1011,
+    case Qt::Key_Left: return 0; // = 0x1012,
+    case Qt::Key_Up: return 0; // = 0x1013,
+    case Qt::Key_Right: return 0; // = 0x1014,
+    case Qt::Key_Down: return 0; // = 0x1015,
+    case Qt::Key_PageUp: return 0; // = 0x1016,
+    case Qt::Key_PageDown: return 0; // = 0x1017,
+    case Qt::Key_Shift: return 0; // = 0x1020,        // modifiers
+    case Qt::Key_Control: return 0; // = 0x1021,
+    case Qt::Key_Meta: return 0; // = 0x1022,
+    case Qt::Key_Alt: return 0; // = 0x1023,
+    case Qt::Key_CapsLock: return 0; // = 0x1024,
+    case Qt::Key_NumLock: return 0; // = 0x1025,
+    case Qt::Key_ScrollLock: return 0; // = 0x1026,
+    case Qt::Key_F1: return 0; // = 0x1030,        // function keys
+    case Qt::Key_F2: return 0; // = 0x1031,
+    case Qt::Key_F3: return 0; // = 0x1032,
+    case Qt::Key_F4: return 0; // = 0x1033,
+    case Qt::Key_F5: return 0; // = 0x1034,
+    case Qt::Key_F6: return 0; // = 0x1035,
+    case Qt::Key_F7: return 0; // = 0x1036,
+    case Qt::Key_F8: return 0; // = 0x1037,
+    case Qt::Key_F9: return 0; // = 0x1038,
+    case Qt::Key_F10: return 0; // = 0x1039,
+    case Qt::Key_F11: return 0; // = 0x103a,
+    case Qt::Key_F12: return 0; // = 0x103b,
+    case Qt::Key_F13: return 0; // = 0x103c,
+    case Qt::Key_F14: return 0; // = 0x103d,
+    case Qt::Key_F15: return 0; // = 0x103e,
+    case Qt::Key_F16: return 0; // = 0x103f,
+    case Qt::Key_F17: return 0; // = 0x1040,
+    case Qt::Key_F18: return 0; // = 0x1041,
+    case Qt::Key_F19: return 0; // = 0x1042,
+    case Qt::Key_F20: return 0; // = 0x1043,
+    case Qt::Key_F21: return 0; // = 0x1044,
+    case Qt::Key_F22: return 0; // = 0x1045,
+    case Qt::Key_F23: return 0; // = 0x1046,
+    case Qt::Key_F24: return 0; // = 0x1047,
+    case Qt::Key_F25: return 0; // = 0x1048,        // F25 .. F35 only on X11
+    case Qt::Key_F26: return 0; // = 0x1049,
+    case Qt::Key_F27: return 0; // = 0x104a,
+    case Qt::Key_F28: return 0; // = 0x104b,
+    case Qt::Key_F29: return 0; // = 0x104c,
+    case Qt::Key_F30: return 0; // = 0x104d,
+    case Qt::Key_F31: return 0; // = 0x104e,
+    case Qt::Key_F32: return 0; // = 0x104f,
+    case Qt::Key_F33: return 0; // = 0x1050,
+    case Qt::Key_F34: return 0; // = 0x1051,
+    case Qt::Key_F35: return 0; // = 0x1052,
+    case Qt::Key_Super_L: return 0; // = 0x1053,        // extra keys
+    case Qt::Key_Super_R: return 0; // = 0x1054,
+    case Qt::Key_Menu: return 0; // = 0x1055,
+    case Qt::Key_Hyper_L: return 0; // = 0x1056,
+    case Qt::Key_Hyper_R: return 0; // = 0x1057,
+    case Qt::Key_Help: return 0; // = 0x1058,
+    case Qt::Key_Direction_L: return 0; // = 0x1059,
+    case Qt::Key_Direction_R: return 0; // = 0x1060,
+
+    // Latin 1 codes adapted from X: keysymdef.h,v 1.21 94/08/28 16:17:06
+    case Qt::Key_nobreakspace: return char(0xa0);
+    case Qt::Key_exclamdown: return char(0xa1);
+    case Qt::Key_cent: return char(0xa2);
+    case Qt::Key_sterling: return char(0xa3);
+    case Qt::Key_currency: return char(0xa4);
+    case Qt::Key_yen: return char(0xa5);
+    case Qt::Key_brokenbar: return char(0xa6);
+    case Qt::Key_section: return char(0xa7);
+    case Qt::Key_diaeresis: return char(0xa8);
+    case Qt::Key_copyright: return char(0xa9);
+    case Qt::Key_ordfeminine: return char(0xaa);
+    case Qt::Key_guillemotleft: return char(0xab); // left angle quotation mar
+    case Qt::Key_notsign: return char(0xac);
+    case Qt::Key_hyphen: return char(0xad);
+    case Qt::Key_registered: return char(0xae);
+    case Qt::Key_macron: return char(0xaf);
+    case Qt::Key_degree: return char(0xb0);
+    case Qt::Key_plusminus: return char(0xb1);
+    case Qt::Key_twosuperior: return char(0xb2);
+    case Qt::Key_threesuperior: return char(0xb3);
+    case Qt::Key_acute: return char(0xb4);
+    case Qt::Key_mu: return char(0xb5);
+    case Qt::Key_paragraph: return char(0xb6);
+    case Qt::Key_periodcentered: return char(0xb7);
+    case Qt::Key_cedilla: return char(0xb8);
+    case Qt::Key_onesuperior: return char(0xb9);
+    case Qt::Key_masculine: return char(0xba);
+    case Qt::Key_guillemotright: return char(0xbb); // right angle quotation mar
+    case Qt::Key_onequarter: return char(0xbc);
+    case Qt::Key_onehalf: return char(0xbd);
+    case Qt::Key_threequarters: return char(0xbe);
+    case Qt::Key_questiondown: return char(0xbf);
+    case Qt::Key_Agrave: return char(0xc0);
+    case Qt::Key_Aacute: return char(0xc1);
+    case Qt::Key_Acircumflex: return char(0xc2);
+    case Qt::Key_Atilde: return char(0xc3);
+    case Qt::Key_Adiaeresis: return char(0xc4);
+    case Qt::Key_Aring: return char(0xe5);
+    case Qt::Key_AE: return char(0xe6);
+    case Qt::Key_Ccedilla: return char(0xc7);
+    case Qt::Key_Egrave: return char(0xc8);
+    case Qt::Key_Eacute: return char(0xc9);
+    case Qt::Key_Ecircumflex: return char(0xca);
+    case Qt::Key_Ediaeresis: return char(0xcb);
+    case Qt::Key_Igrave: return char(0xcc);
+    case Qt::Key_Iacute: return char(0xcd);
+    case Qt::Key_Icircumflex: return char(0xce);
+    case Qt::Key_Idiaeresis: return char(0xcf);
+    case Qt::Key_ETH: return char(0xd0);
+    case Qt::Key_Ntilde: return char(0xd1);
+    case Qt::Key_Ograve: return char(0xd2);
+    case Qt::Key_Oacute: return char(0xd3);
+    case Qt::Key_Ocircumflex: return char(0xd4);
+    case Qt::Key_Otilde: return char(0xd5);
+    case Qt::Key_Odiaeresis: return char(0xd6);
+    case Qt::Key_multiply: return char(0xd7);
+    case Qt::Key_Ooblique: return char(0xf8);
+    case Qt::Key_Ugrave: return char(0xd9);
+    case Qt::Key_Uacute: return char(0xda);
+    case Qt::Key_Ucircumflex: return char(0xdb);
+    case Qt::Key_Udiaeresis: return char(0xdc);
+    case Qt::Key_Yacute: return char(0xdd);
+    case Qt::Key_THORN: return char(0xde);
+    case Qt::Key_ssharp: return char(0xdf);
+    case Qt::Key_division: return char(0xf7);
+    case Qt::Key_ydiaeresis: return char(0xff);
+
+    // multimedia/internet keys - ignored by default - see QKeyEvent c'tor
+
+    case Qt::Key_Back : return 0; // = 0x1061,
+    case Qt::Key_Forward : return 0; // = 0x1062,
+    case Qt::Key_Stop : return 0; // = 0x1063,
+    case Qt::Key_Refresh : return 0; // = 0x1064,
+
+    case Qt::Key_VolumeDown: return 0; // = 0x1070,
+    case Qt::Key_VolumeMute : return 0; // = 0x1071,
+    case Qt::Key_VolumeUp: return 0; // = 0x1072,
+    case Qt::Key_BassBoost: return 0; // = 0x1073,
+    case Qt::Key_BassUp: return 0; // = 0x1074,
+    case Qt::Key_BassDown: return 0; // = 0x1075,
+    case Qt::Key_TrebleUp: return 0; // = 0x1076,
+    case Qt::Key_TrebleDown: return 0; // = 0x1077,
+
+    case Qt::Key_MediaPlay : return 0; // = 0x1080,
+    case Qt::Key_MediaStop : return 0; // = 0x1081,
+    case Qt::Key_MediaPrevious : return 0; // = 0x1082,
+    case Qt::Key_MediaNext : return 0; // = 0x1083,
+    case Qt::Key_MediaRecord: return 0; // = 0x1084,
+
+    case Qt::Key_HomePage : return 0; // = 0x1090,
+    case Qt::Key_Favorites : return 0; // = 0x1091,
+    case Qt::Key_Search : return 0; // = 0x1092,
+    case Qt::Key_Standby: return 0; // = 0x1093,
+    case Qt::Key_OpenUrl: return 0; // = 0x1094,
+
+    case Qt::Key_LaunchMail : return 0; // = 0x10a0,
+    case Qt::Key_LaunchMedia: return 0; // = 0x10a1,
+    case Qt::Key_Launch0 : return 0; // = 0x10a2,
+    case Qt::Key_Launch1 : return 0; // = 0x10a3,
+    case Qt::Key_Launch2 : return 0; // = 0x10a4,
+    case Qt::Key_Launch3 : return 0; // = 0x10a5,
+    case Qt::Key_Launch4 : return 0; // = 0x10a6,
+    case Qt::Key_Launch5 : return 0; // = 0x10a7,
+    case Qt::Key_Launch6 : return 0; // = 0x10a8,
+    case Qt::Key_Launch7 : return 0; // = 0x10a9,
+    case Qt::Key_Launch8 : return 0; // = 0x10aa,
+    case Qt::Key_Launch9 : return 0; // = 0x10ab,
+    case Qt::Key_LaunchA : return 0; // = 0x10ac,
+    case Qt::Key_LaunchB : return 0; // = 0x10ad,
+    case Qt::Key_LaunchC : return 0; // = 0x10ae,
+    case Qt::Key_LaunchD : return 0; // = 0x10af,
+    case Qt::Key_LaunchE : return 0; // = 0x10b0,
+    case Qt::Key_LaunchF : return 0; // = 0x10b1,
+
+    default: QTEST_ASSERT(false); return 0;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/tsrc/ut/hbautotest.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,279 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef HBAUTOTEST_H
+#define HBAUTOTEST_H
+
+#include <hbnamespace.h>
+#include <hbmainwindow.h>
+#include <QtTest/QtTest>
+
+class HbMainWindow;
+class HbWidget;
+class HbAutoTestMainWindow;
+class HbAutoTest;
+class HbAutoTestMouseEvent; 
+/*
+INSTRUCTIONS:
+The class HbAutoTest is meant to be used with Orbit applications auto testing instead of GUI testing APIs of QTestLib.
+
+The functions of this class is to used similarily to the related QTestLib functions.
+
+Use HbAutoTestMainWindow (defined below) instead of HbMainWindow to enble filtering.
+Filterin filters out UI events that are not sent by function defined in HbAutoTest class.
+
+*/
+
+class HbAutoTestMouseEvent : public QMouseEvent
+{
+public:
+    HbAutoTestMouseEvent(Type type, const QPoint & pos, const QPoint & globalPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers ) 
+        : QMouseEvent(type,pos,globalPos,button,buttons,modifiers){}
+};
+
+class HbAutoTestKeyEvent : public QKeyEvent
+{
+public:
+        HbAutoTestKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, const QString& text = QString(),
+              bool autorep = false, ushort count = 1 ) 
+        : QKeyEvent(type, key, modifiers, text, autorep, count){}
+};
+
+class HbAutoTest 
+{
+public:
+    
+    static void mouseMove (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos = QPointF(), int delay = -1 );
+    static void mousePress (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos = QPointF(), int delay = -1);
+    static void mouseRelease (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos = QPointF(), int delay = -1);
+    static void mouseClick (HbAutoTestMainWindow *window, const HbWidget *widget, QPointF pos = QPointF(), int delay = -1);
+   
+private:
+    static void drag(HbAutoTestMainWindow *window, QPointF targetPoint);
+    static QPointF middlePointOfWidget( const HbWidget* widget);
+
+    static bool pointerPressed;
+    static QPointF pressPoint;
+
+//Key event Part: copy-pasted from QTestLib and modified to support HbAutoTestKeyEvent to enable filtering.
+//see HbAutoTestMainWindow below.
+public:
+    
+    static Qt::Key asciiToKey(char ascii);
+    static char keyToAscii(Qt::Key key);
+
+    static void simulateEvent(QWidget *widget, bool press, int code,
+                              Qt::KeyboardModifiers modifier, QString text, bool repeat, int delay=-1);
+
+    static void sendKeyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key code,
+                             QString text, Qt::KeyboardModifiers modifier, int delay=-1);    
+
+    static void sendKeyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key code,
+                             char ascii, Qt::KeyboardModifiers modifier, int delay=-1);
+
+    static void keyEvent(QTest::KeyAction action, QWidget *widget, char ascii,
+                                Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+ 
+    static void keyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key key,
+                                Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+
+    static void keyClicks(QWidget *widget, const QString &sequence,
+                                 Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+
+    static void keyPress(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+    
+    static void keyRelease(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+    
+    static void keyClick(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+    
+    static void keyPress(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+   
+    static void keyRelease(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+
+    static void keyClick(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+};
+
+class HbTestEvent
+{
+public:
+    virtual void simulate(QWidget *w) = 0;
+    virtual HbTestEvent *clone() const = 0;
+
+    virtual ~HbTestEvent() {}
+};
+
+class HbTestKeyEvent: public HbTestEvent
+{
+public:
+    inline HbTestKeyEvent(QTest::KeyAction action, Qt::Key key, Qt::KeyboardModifiers modifiers, int delay)
+        : _action(action), _delay(delay), _modifiers(modifiers), _ascii(0), _key(key) {}
+    inline HbTestKeyEvent(QTest::KeyAction action, char ascii, Qt::KeyboardModifiers modifiers, int delay)
+        : _action(action), _delay(delay), _modifiers(modifiers),
+          _ascii(ascii), _key(Qt::Key_unknown) {}
+    inline HbTestEvent *clone() const { return new HbTestKeyEvent(*this); }
+
+    inline void simulate(QWidget *w)
+    {
+        if (_ascii == 0)
+            HbAutoTest::keyEvent(_action, w, _key, _modifiers, _delay);
+        else
+            HbAutoTest::keyEvent(_action, w, _ascii, _modifiers, _delay);
+    } 
+
+protected:
+    QTest::KeyAction _action;
+    int _delay;
+    Qt::KeyboardModifiers _modifiers;
+    char _ascii;
+    Qt::Key _key;
+};
+
+class HbTestKeyClicksEvent: public HbTestEvent
+{
+public:
+    inline HbTestKeyClicksEvent(const QString &keys, Qt::KeyboardModifiers modifiers, int delay)
+        : _keys(keys), _modifiers(modifiers), _delay(delay) {}
+    inline HbTestEvent *clone() const { return new HbTestKeyClicksEvent(*this); }
+
+    inline void simulate(QWidget *w)
+    {
+        HbAutoTest::keyClicks(w, _keys, _modifiers, _delay);
+    }
+
+private:
+    QString _keys;
+    Qt::KeyboardModifiers _modifiers;
+    int _delay;
+};
+
+class HbTestDelayEvent: public HbTestEvent
+{
+public:
+    inline HbTestDelayEvent(int msecs): _delay(msecs) {}
+    inline HbTestEvent *clone() const { return new HbTestDelayEvent(*this); }
+
+    inline void simulate(QWidget * /*w*/) { QTest::qWait(_delay); }
+
+private:
+    int _delay;
+};
+
+class HbTestEventList: public QList<HbTestEvent *>
+{
+public:
+    inline HbTestEventList() {}
+    inline HbTestEventList(const HbTestEventList &other): QList<HbTestEvent *>()
+    { for (int i = 0; i < other.count(); ++i) append(other.at(i)->clone()); }
+    inline ~HbTestEventList()
+    { clear(); }
+    inline void clear()
+    { qDeleteAll(*this); QList<HbTestEvent *>::clear(); }
+
+    inline void addKeyClick(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Click, qtKey, modifiers, msecs); }
+    inline void addKeyPress(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Press, qtKey, modifiers, msecs); }
+    inline void addKeyRelease(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Release, qtKey, modifiers, msecs); }
+    inline void addKeyEvent(QTest::KeyAction action, Qt::Key qtKey,
+                            Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { append(new HbTestKeyEvent(action, qtKey, modifiers, msecs)); }
+
+    inline void addKeyClick(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Click, ascii, modifiers, msecs); }
+    inline void addKeyPress(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Press, ascii, modifiers, msecs); }
+    inline void addKeyRelease(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Release, ascii, modifiers, msecs); }
+    inline void addKeyClicks(const QString &keys, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { append(new HbTestKeyClicksEvent(keys, modifiers, msecs)); }
+    inline void addKeyEvent(QTest::KeyAction action, char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { append(new HbTestKeyEvent(action, ascii, modifiers, msecs)); }
+
+    inline void addDelay(int msecs)
+    { append(new HbTestDelayEvent(msecs)); }
+
+    inline void simulate(QWidget *w)
+    {
+        for (int i = 0; i < count(); ++i)
+            at(i)->simulate(w);
+    }
+};
+
+class HbAutoTestMainWindow : public HbMainWindow
+{
+public:
+    HbAutoTestMainWindow() : HbMainWindow() {}
+    
+    void mousePressEvent(QMouseEvent *event)
+    {
+        qDebug(
+            "HbAutoTestMainWindow::mousePressEvent: x(%d) y(%d)",
+            event->x(),
+            event->y());
+         if ( dynamic_cast<HbAutoTestMouseEvent *>(event) ) {
+                HbMainWindow::mousePressEvent(event);
+            } else {
+                ;//Do nothing 
+         }
+    }
+
+    void mouseMoveEvent(QMouseEvent *event)
+    {
+        if ( dynamic_cast<HbAutoTestMouseEvent *>(event) ) {
+                HbMainWindow::mouseMoveEvent(event);
+            } else {
+                ;//Do nothing
+         }
+    }
+
+    void mouseReleaseEvent(QMouseEvent *event)
+    {
+         if ( dynamic_cast<HbAutoTestMouseEvent *>(event) ) {
+                HbMainWindow::mouseReleaseEvent(event);
+            } else {
+                ;//Do nothing  
+         }
+    }
+
+    void keyPressEvent(QKeyEvent *event)
+    {
+        if ( dynamic_cast<HbAutoTestKeyEvent *>(event) ) {
+                HbMainWindow::keyPressEvent(event);
+            } else {
+                ;//Do nothing  
+         }
+    }
+    void keyReleaseEvent(QKeyEvent *event)
+    {
+        if ( dynamic_cast<HbAutoTestKeyEvent *>(event) ) {
+                HbMainWindow::keyReleaseEvent(event);
+            } else {
+                ;//Do nothing  
+         }
+    }
+
+    void mouseDoubleClickEvent(QMouseEvent *event)
+    {
+        Q_UNUSED(event);
+        //Just ignore, not supported in Orbit
+    }
+};
+
+
+Q_DECLARE_METATYPE(HbTestEventList)
+#endif //HBAUTOTEST_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/tsrc/ut/testcppacketdataapplugin.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,638 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel packet data AP plugin unit testing.
+*/
+
+#include <HbApplication>
+#include <HbMainWindow>
+#include <HbView>
+#include <HbDialog>
+#include <HbRadioButtonList>
+#include <HbAction>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbDataFormModelItem>
+#include <QtTest/QtTest>
+#include <cpbearerapplugininterface.h>
+#include <cmmanager_shim.h>
+#include <cmconnectionmethod_shim.h>
+
+#include "cppacketdataapview.h"
+
+#include "hbautotest.h"
+#include "testcppacketdataapplugin.h"
+
+// -----------------------------------------------------------------------------
+// STATIC TEST DATA
+// -----------------------------------------------------------------------------
+
+// Connection method (AP) ID used for testing
+static const uint testApId = 1;
+
+static const QString pluginDir =
+    "\\resource\\qt\\plugins\\controlpanel\\bearerap";
+
+static const QString pluginName = "cppacketdataapplugin.dll";
+
+// Time to wait before continuing after an UI step
+static const int waitTime = 10;
+
+// UI coordinates
+static const QPoint sideTop(350, 60);
+static const QPoint scrollStart(350, 300);
+static const QPoint scrollStop(350, 240);
+
+static const QPoint messageBoxOkButton(170, 320);
+
+// These are measured when view is scrolled to top
+static const QPoint connectionNameLineEdit(330, 110);
+
+static const QPoint accessPointNameLineEdit(330, 190);
+
+static const QPoint userNameLineEdit(330, 265);
+
+// These are measured when view is scrolled to bottom
+static const QPoint passwordPromptCheckbox(50, 295);
+static const QPoint passwordLineEdit(330, 380);
+
+static const QPoint authenticationComboBox(175, 470);
+static const QPoint authenticationSecure(100, 420);
+static const QPoint authenticationNormal(100, 365);
+
+static const QPoint homepageLineEdit(330, 555);
+
+// -----------------------------------------------------------------------------
+// FRAMEWORK FUNCTIONS
+// -----------------------------------------------------------------------------
+
+/**
+ * Test main function. Runs all test cases.
+ */
+#ifndef TESTCMAPPLSETTINGSUI_NO_OUTPUT_REDIRECT
+int main(int argc, char *argv[])
+{
+    HbApplication app(argc, argv);
+    app.setApplicationName("TestCpPacketDataApPlugin");
+    
+    char *pass[3];  
+    pass[0] = argv[0];
+    pass[1] = "-o"; 
+    pass[2] = "c:\\data\\TestCpPacketDataApPlugin.txt";
+ 
+    TestCpPacketDataApPlugin tc;
+    int res = QTest::qExec(&tc, 3, pass);
+ 
+    return res;
+}
+#else
+QTEST_MAIN(TestCpPacketDataApPlugin)
+#endif
+
+/**
+ * This function is be called before the first test case is executed.
+ */
+void TestCpPacketDataApPlugin::initTestCase()
+{
+    mMainWindow = new HbAutoTestMainWindow;
+    //mMainWindow = new HbMainWindow;
+    mMainWindow->show();
+    
+    // Load plugin
+    QDir dir(pluginDir);
+    QPluginLoader loader(dir.absoluteFilePath(pluginName));
+    mPlugin = qobject_cast<CpBearerApPluginInterface *>(loader.instance());
+    QVERIFY(mPlugin != NULL);
+    
+    // Verify plugin bearer type
+    QVERIFY(mPlugin->bearerType() == CMManagerShim::BearerTypePacketData);
+    
+    // Create packet data settings view (connection method ID given)
+    subCreateSettingsView(testApId);
+}
+
+/**
+ * This function is be called after the last test case was executed.
+ */
+void TestCpPacketDataApPlugin::cleanupTestCase()
+{
+    delete mMainWindow;
+    mMainWindow = 0;
+}
+
+/**
+ * This function is be called before each test case is executed.
+ */
+void TestCpPacketDataApPlugin::init()
+{
+    QTest::qWait(1000);
+}
+
+/**
+ * This function is be called after each test case is executed.
+ */
+void TestCpPacketDataApPlugin::cleanup()
+{
+}
+
+// -----------------------------------------------------------------------------
+// TEST CASES
+// -----------------------------------------------------------------------------
+
+/**
+ * Tests changing of connection name.
+ */
+void TestCpPacketDataApPlugin::tcChangeConnectionName()
+{
+    QFETCH(QString, string);
+    QFETCH(QString, result);
+    
+    HbAutoTest::mouseClick(mMainWindow, mTestView, connectionNameLineEdit);
+    
+    // Erase old string
+    subClearLineEdit(CMManagerShim::CmNameLength);
+    
+    // Enter new string
+    HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+    HbAutoTest::mouseClick(mMainWindow, mTestView, sideTop);
+
+    // Verify both commsdat and UI widget
+    subVerifyString(
+        CMManagerShim::CmName,
+        mTestView->mConnectionNameItem,
+        result);
+}
+
+/**
+ * Test data for connection name change test case.
+ */
+void TestCpPacketDataApPlugin::tcChangeConnectionName_data()
+{
+    QTest::addColumn<QString>("string");
+    QTest::addColumn<QString>("result");
+    
+    QTest::newRow("maximum length")
+        << "really long name 1234567890123"
+        << "really long name 1234567890123";
+    QTest::newRow("too long")
+        << "too long name 123456789012345678901234567890"
+        << "too long name 1234567890123456";
+    QTest::newRow("basic") // last one must always fit on one line in UI
+        << "test packet AP"
+        << "test packet AP";
+}
+
+/**
+ * Tests that empty connection name is not accepted.
+ */
+void TestCpPacketDataApPlugin::tcConnectionNameEmpty()
+{
+    QString previous = 
+        mTestView->mConnectionNameItem->contentWidgetData("text").toString();
+    
+    HbAutoTest::mouseClick(mMainWindow, mTestView, connectionNameLineEdit);
+    
+    // Erase old string
+    subClearLineEdit(CMManagerShim::CmNameLength);
+    
+    HbAutoTest::mouseClick(mMainWindow, mTestView, sideTop);
+
+    QTest::qWait(100);
+    // Dismiss messagebox
+    HbAutoTest::mouseClick(mMainWindow, mTestView, messageBoxOkButton);
+    
+    // Verify both commsdat and UI widget
+    subVerifyString(
+        CMManagerShim::CmName,
+        mTestView->mConnectionNameItem,
+        previous);
+}
+
+/**
+ * Tests changing of access point name.
+ */
+void TestCpPacketDataApPlugin::tcChangeAccessPointName()
+{
+    QFETCH(QString, string);
+    QFETCH(QString, result);
+    
+    HbAutoTest::mouseClick(mMainWindow, mTestView, accessPointNameLineEdit);
+    
+    // Erase old string
+    subClearLineEdit(CMManagerShim::PacketDataAPNameLength);
+    
+    // Enter new string
+    HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+    HbAutoTest::mouseClick(mMainWindow, mTestView, sideTop);
+
+    // Verify both commsdat and UI widget
+    subVerifyString(
+        CMManagerShim::PacketDataAPName,
+        mTestView->mAccessPointNameItem,
+        result);
+}
+
+/**
+ * Test data for access point name change test case.
+ */
+void TestCpPacketDataApPlugin::tcChangeAccessPointName_data()
+{
+    QTest::addColumn<QString>("string");
+    QTest::addColumn<QString>("result");
+    
+    QTest::newRow("maximum length")
+        << "really long name 12345678901234567890123456789012345678901234567890123456789012345678901234567890123"
+        << "really long name 12345678901234567890123456789012345678901234567890123456789012345678901234567890123";
+    QTest::newRow("too long")
+        << "too long name 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345"
+        << "too long name 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456";
+    QTest::newRow("basic") // last one must always fit on one line in UI
+        << "test AP name"
+        << "test AP name";
+}
+
+/**
+ * Tests that empty access point name is not accepted.
+ */
+void TestCpPacketDataApPlugin::tcAccessPointNameEmpty()
+{
+    QString previous = 
+        mTestView->mAccessPointNameItem->contentWidgetData("text").toString();
+    
+    HbAutoTest::mouseClick(mMainWindow, mTestView, accessPointNameLineEdit);
+    
+    // Erase old string
+    subClearLineEdit(CMManagerShim::PacketDataAPNameLength);
+    
+    HbAutoTest::mouseClick(mMainWindow, mTestView, sideTop);
+
+    QTest::qWait(100);
+    // Dismiss messagebox
+    HbAutoTest::mouseClick(mMainWindow, mTestView, messageBoxOkButton);
+    
+    // Verify both commsdat and UI widget
+    subVerifyString(
+        CMManagerShim::PacketDataAPName,
+        mTestView->mAccessPointNameItem,
+        previous);
+}
+
+/**
+ * Tests changing of user name.
+ */
+void TestCpPacketDataApPlugin::tcChangeUserName()
+{
+    QFETCH(QString, string);
+    QFETCH(QString, result);
+    
+    HbAutoTest::mouseClick(mMainWindow, mTestView, userNameLineEdit);
+    
+    // Erase old string
+    subClearLineEdit(CMManagerShim::PacketDataIFAuthNameLength);
+    
+    // Enter new string
+    HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+    HbAutoTest::mouseClick(mMainWindow, mTestView, sideTop);
+
+    // Verify both commsdat and UI widget
+    subVerifyString(
+        CMManagerShim::PacketDataIFAuthName,
+        mTestView->mUserNameItem,
+        result);
+}
+
+/**
+ * Test data for user name change test case.
+ */
+void TestCpPacketDataApPlugin::tcChangeUserName_data()
+{
+    QTest::addColumn<QString>("string");
+    QTest::addColumn<QString>("result");
+
+// Long strings don't work, Orbit bug? Screen goes blank
+//    QTest::newRow("maximum length")
+//        << "really long name 123456789012345678901234567890123"
+//        << "really long name 123456789012345678901234567890123";
+//    QTest::newRow("too long")
+//        << "too long name 1234567890123456789012345678901234567890123"
+//        << "too long name 123456789012345678901234567890123456";
+    QTest::newRow("basic")
+        << "username"
+        << "username";
+    QTest::newRow("empty") // last one must always fit on one line in UI
+        << ""
+        << "";
+}
+
+/**
+ * Scrolls the tested view to the bottom.
+ */
+void TestCpPacketDataApPlugin::tcScrollToBottom()
+{
+    // Scroll to the bottom of the view
+    HbAutoTest::mousePress(mMainWindow, mTestView, scrollStart);
+    QTest::qWait(500);
+    HbAutoTest::mouseMove(mMainWindow, mTestView, scrollStop);
+    HbAutoTest::mouseRelease(mMainWindow, mTestView, scrollStop);
+}
+
+/**
+ * Tests "prompt" password checkbox.
+ */
+void TestCpPacketDataApPlugin::tcChangePromptPassword()
+{
+    // Ensure prompt for password is unchecked
+    bool prompt = subGetBool(CMManagerShim::PacketDataIFPromptForAuth);
+    if (prompt) {
+        // Disable prompt for password
+        HbAutoTest::mouseClick(
+            mMainWindow,
+            mTestView,
+            passwordPromptCheckbox);
+    }
+    
+    // Enable prompt for password and verify
+    HbAutoTest::mouseClick(mMainWindow, mTestView, passwordPromptCheckbox);
+    subVerifyBool(
+        CMManagerShim::PacketDataIFPromptForAuth,
+        true);
+    
+    // Verify that password lineedit is disabled, following steps will
+    // fail if editing is allowed
+    HbAutoTest::mouseClick(mMainWindow, mTestView, passwordLineEdit);
+    QTest::qWait(waitTime);
+
+    // Disable prompt for password and verify
+    HbAutoTest::mouseClick(mMainWindow, mTestView, passwordPromptCheckbox);
+    subVerifyBool(
+        CMManagerShim::PacketDataIFPromptForAuth,
+        false);
+}
+
+/**
+ * Tests changing of password.
+ */
+void TestCpPacketDataApPlugin::tcChangePassword()
+{
+    QFETCH(QString, string);
+    QFETCH(QString, result);
+    
+    HbAutoTest::mouseClick(mMainWindow, mTestView, passwordLineEdit);
+    
+    // Erase old string
+    subClearLineEdit(CMManagerShim::PacketDataIFAuthPassLength);
+    
+    // Enter new string
+    HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+    HbAutoTest::mouseClick(mMainWindow, mTestView, sideTop);
+
+    // Verify both commsdat and UI widget
+    subVerifyString(
+        CMManagerShim::PacketDataIFAuthPass,
+        mTestView->mPasswordItem,
+        result);
+}
+
+/**
+ * Test data for password change test case.
+ */
+void TestCpPacketDataApPlugin::tcChangePassword_data()
+{
+    QTest::addColumn<QString>("string");
+    QTest::addColumn<QString>("result");
+
+// Long strings don't work, Orbit bug? Screen goes blank
+//    QTest::newRow("maximum length")
+//        << "really long name 123456789012345678901234567890123"
+//        << "really long name 123456789012345678901234567890123";
+//    QTest::newRow("too long")
+//        << "too long name 1234567890123456789012345678901234567890123"
+//        << "too long name 123456789012345678901234567890123456";
+    QTest::newRow("basic")
+        << "password"
+        << "password";
+    QTest::newRow("empty") // last one must always fit on one line in UI
+        << ""
+        << "";
+}
+
+/**
+ * Tests changing of authentication mode.
+ */
+void TestCpPacketDataApPlugin::tcChangeAuthenticationMode()
+{
+    // Set authentication mode to secure
+    HbAutoTest::mouseClick(mMainWindow, mTestView, authenticationComboBox, 100);
+    QTest::qWait(100);
+    HbAutoTest::mouseClick(mMainWindow, mTestView, authenticationSecure, 100);
+
+    subVerifyBool(
+        CMManagerShim::PacketDataDisablePlainTextAuth,
+        true);
+    
+    // Set authentication mode to normal
+    HbAutoTest::mouseClick(mMainWindow, mTestView, authenticationComboBox, 100);
+    QTest::qWait(100);
+    HbAutoTest::mouseClick(mMainWindow, mTestView, authenticationNormal, 100);
+
+    subVerifyBool(
+        CMManagerShim::PacketDataDisablePlainTextAuth,
+        false);
+}
+
+/**
+ * Tests changing of homepage.
+ */
+void TestCpPacketDataApPlugin::tcChangeHomepage()
+{
+    QFETCH(QString, string);
+    QFETCH(QString, result);
+    
+    HbAutoTest::mouseClick(mMainWindow, mTestView, homepageLineEdit);
+    
+    // Erase old string
+    QString text = mTestView->mHomepageItem->contentWidgetData("text").toString();
+    subClearLineEdit(text.size());
+    
+    // Enter new string
+    HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+    HbAutoTest::mouseClick(mMainWindow, mTestView, sideTop);
+
+    // Verify both commsdat and UI widget
+    subVerifyString(
+        CMManagerShim::CmStartPage,
+        mTestView->mHomepageItem,
+        result);
+}
+
+/**
+ * Test data for homepage change test case.
+ */
+void TestCpPacketDataApPlugin::tcChangeHomepage_data()
+{
+    QTest::addColumn<QString>("string");
+    QTest::addColumn<QString>("result");
+  
+// Doesn't work always, view goes blank sometimes, Orbit bug?
+//    QTest::newRow("long")
+//        << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html"
+//        << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html";
+    QTest::newRow("basic") // last one should always fit on one line in UI
+        << "http://www.symbian.org/"
+        << "http://www.symbian.org/";
+    QTest::newRow("empty")
+        << ""
+        << "";
+}
+
+/**
+ * Tests advanced settings view (which is currently empty).
+ */
+void TestCpPacketDataApPlugin::tcAdvancedSettings()
+{
+    // Launch advanced settings view
+    bool status = connect(
+        this,
+        SIGNAL(menuActionTriggered(HbAction *)),
+        mTestView,
+        SLOT(menuActionTriggered(HbAction *)));
+    Q_ASSERT(status);
+    emit menuActionTriggered(mTestView->mAdvancedSettingsAction);
+
+    QTest::qWait(2000);
+    
+    // Return from advanced settings view
+    subClickWidget("HbNavigationButton");
+}
+
+// -----------------------------------------------------------------------------
+// SUB TEST CASES
+// -----------------------------------------------------------------------------
+
+/**
+ * Creates the settings view and shows it.
+ */
+void TestCpPacketDataApPlugin::subCreateSettingsView(uint connectionMethodId)
+{
+    // Create settings view
+    HbView *view = mPlugin->createSettingView(connectionMethodId);
+    QVERIFY(view != NULL);
+    
+    // Display the view
+    mMainWindow->addView(view);
+    mMainWindow->setCurrentView(view);
+    // Store pointer to settings view class
+    mTestView = static_cast<CpPacketDataApView *>(view);    
+}
+
+/**
+ * Verifies that given string is correctly stored in CommsDat and shown on UI. 
+ */
+void TestCpPacketDataApPlugin::subVerifyString(
+    CMManagerShim::ConnectionMethodAttribute attribute,
+    HbDataFormModelItem *item,
+    QString expected)
+{
+    // Read attribute value from CommsDat
+    QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
+    QScopedPointer<CmConnectionMethodShim> connectionMethod( 
+        cmManager->connectionMethod(testApId));
+    QString commsdat = connectionMethod->getStringAttribute(attribute);
+
+    QCOMPARE(commsdat, expected);
+
+    // Get value from UI widget
+    QString widget = item->contentWidgetData("text").toString();
+
+    QCOMPARE(widget, expected);
+}
+
+/**
+ * Clears a HbLineEdit.
+ */
+void TestCpPacketDataApPlugin::subClearLineEdit(
+    uint length)
+{
+    // Erase old string
+    QTest::qWait(5000); // TODO: Remove this when item specific menu doesn't pop up anymore
+
+    // Move cursor to end of string
+    //HbAutoTest::keyClick(mMainWindow, Qt::Key_End, 0, waitTime); // doesn't seem to do anything? 
+    HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
+    HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
+    HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
+    for (int i=0; i<25; i++) {
+        HbAutoTest::keyClick(mMainWindow, Qt::Key_Right, 0, waitTime);
+    }
+    for (int i=0; i<length; i++) {
+        HbAutoTest::keyClick(mMainWindow, Qt::Key_Backspace, 0, waitTime);
+    }
+}
+
+/**
+ * Gets value of a boolean attribute from CommsDat.
+ */
+bool TestCpPacketDataApPlugin::subGetBool(
+    CMManagerShim::ConnectionMethodAttribute attribute)
+{
+    QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
+    QScopedPointer<CmConnectionMethodShim> connectionMethod( 
+        cmManager->connectionMethod(testApId));
+    return connectionMethod->getBoolAttribute(attribute);
+}
+
+/**
+ * Verifies that given attribute contains expected boolean value in CommsDat. 
+ */
+void TestCpPacketDataApPlugin::subVerifyBool(
+    CMManagerShim::ConnectionMethodAttribute attribute,
+    bool expected)
+{
+    // Read attribute value from CommsDat
+    QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
+    QScopedPointer<CmConnectionMethodShim> connectionMethod( 
+        cmManager->connectionMethod(testApId));
+    bool commsdat = connectionMethod->getBoolAttribute(attribute);
+    
+    QCOMPARE(commsdat, expected);
+}
+
+/**
+ * Clicks a widget currently on UI by class name.
+ */
+void TestCpPacketDataApPlugin::subClickWidget(const QString &name)
+{
+    QList<QGraphicsItem *> itemList = mMainWindow->scene()->items();
+
+    QGraphicsItem *target = 0;
+    foreach (QGraphicsItem* item, itemList) {
+        if (item->isWidget()) {
+            QString widgetClassName(static_cast<QGraphicsWidget*>(item)->metaObject()->className());
+            //qDebug() << widgetClassName;
+            
+            if (widgetClassName == name) {
+                target = item;
+                break;
+            }
+        }
+    }
+
+    Q_ASSERT(target);
+    HbAutoTest::mouseClick(mMainWindow, static_cast<HbWidget *>(target));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/tsrc/ut/testcppacketdataapplugin.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,85 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel WLAN AP plugin unit testing.
+*/
+
+#include <QStringList>
+#include <QtTest/QtTest>
+#include <cmmanagerdefines_shim.h>
+
+class HbDialog;
+class HbMainWindow;
+class HbAutoTestMainWindow;
+class HbDataFormModelItem;
+class HbAction;
+class CpPacketDataApView;
+class CpBearerApPluginInterface;
+
+class TestCpPacketDataApPlugin : public QObject
+{
+    Q_OBJECT
+
+    signals:
+        // Test signals
+        void menuActionTriggered(HbAction *);
+    
+    public slots:
+        // Test framework functions
+        void initTestCase();
+        void cleanupTestCase();
+        void init();
+        void cleanup();
+
+    private slots:
+        // Test cases
+        void tcChangeConnectionName();
+        void tcChangeConnectionName_data();
+        void tcConnectionNameEmpty();
+        void tcChangeAccessPointName();
+        void tcChangeAccessPointName_data();
+        void tcAccessPointNameEmpty();
+        void tcChangeUserName();
+        void tcChangeUserName_data();
+        void tcScrollToBottom();
+        void tcChangePromptPassword();
+        void tcChangePassword();
+        void tcChangePassword_data();
+        void tcChangeAuthenticationMode();
+        void tcChangeHomepage();
+        void tcChangeHomepage_data();
+        void tcAdvancedSettings();
+
+    private:
+        // Sub test cases
+        void subCreateSettingsView(uint connetionMethodId);
+        void subVerifyString(
+            CMManagerShim::ConnectionMethodAttribute attribute,
+            HbDataFormModelItem *item,
+            QString expected);
+        void subClearLineEdit(uint length);
+        bool subGetBool(CMManagerShim::ConnectionMethodAttribute attribute);
+        void subVerifyBool(
+            CMManagerShim::ConnectionMethodAttribute attribute,
+            bool expected);
+        void subClickWidget(const QString &name);
+
+    private:
+        // Code references
+        CpPacketDataApView *mTestView;
+        
+        // Test data
+        HbAutoTestMainWindow *mMainWindow;
+        CpBearerApPluginInterface *mPlugin;
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/tsrc/ut/testcppacketdataapplugin.pro	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,39 @@
+#
+# Copyright (c) 2010 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:
+# Project file for Control Panel packet data AP plugin unit tests.
+
+TEMPLATE = app
+
+TARGET = testcppacketdataapplugin
+
+CONFIG += hb qtestlib
+
+INCLUDEPATH += . ../../inc
+DEPENDPATH += .
+
+HEADERS += \
+    hbautotest.h \
+    testcppacketdataapplugin.h
+SOURCES += \
+    hbautotest.cpp \
+    testcppacketdataapplugin.cpp
+
+LIBS += \
+    -lcppacketdataapplugin \
+    -lconnection_settings_shim
+
+symbian: {
+    TARGET.CAPABILITY = ALL -TCB
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/tsrc/ut/tools/commsdat_restore.bat	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,17 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem Script for restoring backup of commsdat.
+
+copy backup\cccccc00.cre \epoc32\winscw\c\private\10202be9\persists\cccccc00.cre
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/tsrc/ut/tools/commsdat_set.bat	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,19 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem Script for setting test commsdat.
+
+md backup
+copy \epoc32\winscw\c\private\10202be9\persists\cccccc00.cre backup\
+copy default.cre \epoc32\winscw\c\private\10202be9\persists\cccccc00.cre
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cppacketdataapplugin/tsrc/ut/tools/cppacketdataapplugin_ctc.bat	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,90 @@
+::
+:: Copyright (c) 2010 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:
+:: Script running Control Panel packet data AP plugin test cases with CTC
+:: analysis.
+
+@echo off
+
+:: -----------------------------------------------------------------------------
+:: Instructions
+:: -----------------------------------------------------------------------------
+:: 
+:: Remember to use the test CommsDat that can be set and restored with the
+:: helper scripts:
+:: - commsdat_set.bat
+:: - commsdat_restore.bat
+
+::-----------------------------------------------------------------------------
+:: Set the local variables
+::-----------------------------------------------------------------------------
+
+:: Control Panel packet data AP plugin base directory
+set cppacketdataapplugin_dir=..\..\..
+pushd %cppacketdataapplugin_dir%
+
+:: CTC instrumentation excludes
+set ctc_excludes=-C EXCLUDE=* -C NO_EXCLUDE=src\*.cpp
+
+
+::-----------------------------------------------------------------------------
+:: Remove old coverage data
+::-----------------------------------------------------------------------------
+
+echo Cleaning up...
+del MON.* ctcerr.txt profile.txt
+rd /s /q CTCHTML
+echo ...done
+
+::-----------------------------------------------------------------------------
+:: Build & instrument code
+::-----------------------------------------------------------------------------
+
+echo Building code and instrumenting..
+call del MON.* ctcerr.txt profile.txt
+call make distclean
+call qmake
+call ctcwrap -i d -2comp %ctc_excludes% sbs -c winscw_udeb
+echo ...done
+
+::-----------------------------------------------------------------------------
+:: Build test code
+::-----------------------------------------------------------------------------
+
+echo Building test code...
+call cd tsrc\ut
+call make distclean
+call qmake
+call sbs -c winscw_udeb
+echo ...done
+
+::-----------------------------------------------------------------------------
+:: Execute the tests
+::-----------------------------------------------------------------------------
+
+echo Running tests..
+cd ..\..
+call \epoc32\release\winscw\udeb\testcppacketdataapplugin.exe
+echo ...done
+
+::-----------------------------------------------------------------------------
+:: Create coverage results
+::-----------------------------------------------------------------------------
+
+echo Creating results...
+call ctcpost -p profile.txt
+call ctc2html -i profile.txt
+echo ...done
+
+popd
Binary file cmmanager/cppacketdataapplugin/tsrc/ut/tools/default.cre has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/cpwlanapplugin.pro	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,57 @@
+#
+# Copyright (c) 2010 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:
+# Project info file for Control Panel WLAN AP plugin. 
+#
+
+TEMPLATE = lib
+TARGET = cpwlanapplugin
+DEPENDPATH += .
+INCLUDEPATH += .
+
+CONFIG += hb plugin
+
+MOC_DIR = moc
+OBJECTS_DIR = obj
+RCC_DIR = rcc
+
+LIBS += -lcpframework -lconnection_settings_shim
+
+# Sources
+HEADERS += inc/cpwlanapplugin.h \
+           inc/cpwlanapview.h \
+           inc/cpwlanapadvancedview.h \
+           traces/OstTraceDefinitions.h
+SOURCES += src/cpwlanapplugin.cpp \
+           src/cpwlanapview.cpp \
+           src/cpwlanapadvancedview.cpp
+
+symbian:
+{
+TARGET.EPOCALLOWDLLDATA = 1
+TARGET.UID3 = 0x2002C369
+TARGET.CAPABILITY = CAP_GENERAL_DLL
+
+deploy.path = C:
+qtplugins.path = /resource/qt/plugins/controlpanel/bearerap
+qtplugins.sources += qmakepluginstubs/cpwlanapplugin.qtplugin
+
+for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin $$deploy.path$$qtplugins.path/$$basename(qtplugin)"
+
+BLD_INF_RULES.prj_exports += "rom/cpwlanapplugin.iby CORE_MW_LAYER_IBY_EXPORT_PATH(cpwlanapplugin.iby)"
+}
+
+plugin.sources = cpwlanapplugin.dll
+plugin.path = /resource/qt/plugins/controlpanel/bearerap
+DEPLOYMENT += plugin
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/inc/cpwlanapadvancedview.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel WLAN AP advanced settings view header file.
+*
+*/
+
+#ifndef CPWLANAPADVANCEDVIEW_H
+#define CPWLANAPADVANCEDVIEW_H
+
+// System includes
+#include <cpbasesettingview.h>
+
+// User includes
+
+// Forward declarations
+class HbDataForm;
+class HbDataFormModel;
+class CmConnectionMethodShim;
+
+// External data types
+
+// Constants
+
+// Class declaration
+class CpWlanApAdvancedView : public CpBaseSettingView
+{
+    Q_OBJECT
+    
+public:
+    CpWlanApAdvancedView(
+        CmConnectionMethodShim *cmConnectionMethod,
+        QGraphicsItem *parent = 0);
+    ~CpWlanApAdvancedView();
+    
+signals:
+
+public slots:
+
+protected:
+
+protected slots:
+ 
+private:
+    void createAdvancedSettings();
+    
+private slots:
+    
+private: // data
+    //! Dataform
+    HbDataForm *mForm;
+    //! Dataform model
+    HbDataFormModel *mModel;
+    //! Connection Settings Shim connection method pointer
+    CmConnectionMethodShim *mCmConnectionMethod;
+};
+
+#endif // CPWLANAPADVANCEDVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/inc/cpwlanapplugin.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,71 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel WLAN AP plugin header file.
+*   
+*/
+
+#ifndef	CPWLANAPPLUGIN_H
+#define	CPWLANAPPLUGIN_H
+
+// System includes
+#include <QObject>
+#include <cpbearerapplugininterface.h>
+
+// User includes
+
+// Forward declarations
+class QTranslator;
+class CmManagerShim;
+class CmConnectionMethodShim;
+
+// External data types
+
+// Constants
+
+// Class declaration
+class CpWlanApPlugin : public QObject, public CpBearerApPluginInterface
+{
+    Q_OBJECT
+    Q_INTERFACES(CpBearerApPluginInterface)
+    
+public:
+    CpWlanApPlugin();
+    ~CpWlanApPlugin();
+    
+    uint bearerType() const;
+    CpBaseSettingView *createSettingView(uint connectionMethod);
+    
+signals:
+    
+public slots:
+
+protected:
+    
+protected slots:
+
+private:
+
+private slots:
+    
+private: // data
+    //! Translator instance
+    QTranslator *mTranslator;
+    //! CM Manager Shim instance
+    CmManagerShim *mCmManager;
+    //! CM Connection Method Shim instance
+    CmConnectionMethodShim *mCmConnectionMethod;
+};
+
+#endif // CPWLANAPPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/inc/cpwlanapview.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,124 @@
+/*
+* Copyright (c) 2010 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:  
+* Control Panel WLAN AP settings view header file.
+*
+*/
+
+#ifndef CPWLANAPVIEW_H
+#define CPWLANAPVIEW_H
+
+// System includes
+#include <QSharedPointer>
+#include <QMap>
+#include <HbMessageBox>
+#include <cpbasesettingview.h>
+
+// User includes
+
+// Forward declarations
+class HbDataForm;
+class HbDataFormModel;
+class HbDataFormModelItem;
+class HbMessageBox;
+class CmConnectionMethodShim;
+class CpWlanApPlugin;
+class CpWlanSecurityPluginInterface;
+
+// External data types
+
+// Constants
+
+// Class declaration
+class CpWlanApView : public CpBaseSettingView
+{
+    Q_OBJECT
+    
+public:
+    CpWlanApView(
+        CmConnectionMethodShim *cmConnectionMethod,
+        QGraphicsItem *parent = 0);
+    ~CpWlanApView();
+    
+signals:
+
+public slots:
+
+protected:
+
+protected slots:
+ 
+private:
+    void createAccessPointSettingsGroup();
+    void updateAccessPointSettingsGroup();
+    void loadSecurityPlugins();
+    void updateSecurityGroup(int index);
+    void showMessageBox(
+        HbMessageBox::MessageBoxType type,
+        const QString &text);
+    bool tryUpdate();
+    void handleUpdateError();
+       
+private slots:
+    void connectionNameChanged();
+    void wlanNetworkNameChanged();
+    void networkStatusChanged(int index);
+    void networkModeChanged(int index);
+    void securityModeChanged(int index);
+    void homepageChanged();
+    void menuActionTriggered(HbAction *action);
+    void restoreCurrentView();
+    void setEditorPreferences(const QModelIndex modelIndex);
+    
+private: // data
+    //! Dataform
+    HbDataForm *mForm;
+    //! Dataform model
+    HbDataFormModel *mModel;
+    //! Control Panel item data helper for WLAN security plugins
+    CpItemDataHelper *mItemDataHelper;
+    //! "Access point settings" group
+    HbDataFormModelItem *mApSettingsGroupItem;
+    //! "Connection name" setting item
+    HbDataFormModelItem *mConnectionNameItem;
+    //! "WLAN network name" setting item
+    HbDataFormModelItem *mWlanNetworkNameItem;
+    //! "Network status" setting item
+    HbDataFormModelItem *mNetworkStatusItem;
+    //! "Network mode" setting item
+    HbDataFormModelItem *mNetworkModeItem;
+    //! "Security mode" setting item
+    HbDataFormModelItem *mSecurityModeItem;
+    //! "Homepage" setting item
+    HbDataFormModelItem *mHomepageItem;
+    //! "Security settings" group
+    HbDataFormModelItem *mSecuritySettingsGroupItem;
+    //! "Advanced settings" action for view menu
+    HbAction *mAdvancedSettingsAction;
+    //! Connection Settings Shim connection method pointer
+    CmConnectionMethodShim *mCmConnectionMethod;
+    //! Message box for info notes
+    QSharedPointer<HbMessageBox> mMessageBox;
+    //! Maps network status combobox index to CMManagerShim::WlanScanSSID value
+    QMap<int, bool> mNetworkStatusMap;
+    //! Maps network mode combobox index to CMManagerShim::WlanConnectionMode value
+    QMap<int, int> mNetworkModeMap;
+    //! Maps security mode combobox index to corresponding security plugin pointer
+    QMap<int, CpWlanSecurityPluginInterface *> mSecurityModeMap;
+    
+    // Friend classes
+    friend class TestCpWlanApPlugin;
+};
+
+#endif // CPWLANAPVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/rom/cpwlanapplugin.iby	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,33 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel WLAN AP plugin iby file.
+*
+*/
+
+#ifndef CPWLANAPPLUGIN_IBY
+#define CPWLANAPPLUGIN_IBY
+
+#include <data_caging_paths_for_iby.hrh>
+#include <bldvariant.hrh>
+
+#ifdef __PROTOCOL_WLAN
+
+file=ABI_DIR/BUILD_DIR/cpwlanapplugin.dll SHARED_LIB_DIR/cpwlanapplugin.dll
+
+data=/epoc32/data/c/resource/qt/plugins/controlpanel/bearerap/cpwlanapplugin.qtplugin resource/qt/plugins/controlpanel/bearerap/cpwlanapplugin.qtplugin
+
+#endif // __PROTOCOL_WLAN
+
+#endif // CPWLANAPPLUGIN_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/src/cpwlanapadvancedview.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel WLAN AP advanced settings view implementation.
+*
+*/
+
+// System includes
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <cmconnectionmethod_shim.h>
+#include <cpsettingformitemdata.h>
+
+// User includes
+#include "cpwlanapadvancedview.h"
+
+/*!
+    \class CpWlanApAdvancedView
+    \brief This class implements the WLAN AP Control Panel advanced
+           settings view.
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructor.
+*/
+CpWlanApAdvancedView::CpWlanApAdvancedView(
+    CmConnectionMethodShim *cmConnectionMethod,
+    QGraphicsItem *parent) :
+        CpBaseSettingView(0, parent),
+        mForm(0),
+        mModel(0),
+        mCmConnectionMethod(cmConnectionMethod)
+{
+    // Construct packet data AP settings UI
+    mForm = settingForm();
+    if (mForm) {
+        mModel = new HbDataFormModel(mForm);
+
+        // Add advanced settings groups
+        createAdvancedSettings();
+        
+        mForm->setModel(mModel);
+    }
+}
+
+/*!
+    Destructor.
+*/
+CpWlanApAdvancedView::~CpWlanApAdvancedView()
+{
+}
+
+/*!
+    Creates all advanced settings groups.
+*/
+void CpWlanApAdvancedView::createAdvancedSettings()
+{
+    // TODO: Implement the advanced settings view.
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/src/cpwlanapplugin.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,118 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel WLAN AP plugin implementation.
+*
+*/
+
+// System includes
+#include <QtCore>
+#include <cmmanager_shim.h>
+#include <cmconnectionmethod_shim.h>
+
+// User includes
+#include "cpwlanapplugin.h"
+#include "cpwlanapview.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cpwlanappluginTraces.h"
+#endif
+
+/*!
+    \class CpWlanApPlugin
+    \brief Implements the WLAN bearer AP (access point) Control Panel plugin.
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructor.
+*/
+CpWlanApPlugin::CpWlanApPlugin() :
+    mTranslator(0),
+    mCmManager(0),
+    mCmConnectionMethod(0)
+{
+    OstTraceFunctionEntry0(CPWLANAPPLUGIN_CPWLANAPPLUGIN_ENTRY);
+
+    // Install localization
+    QString lang = QLocale::system().name();
+    QString path = "z:/resource/qt/translations/";
+    mTranslator = new QTranslator(this);
+    mTranslator->load(path + "cpapplugin_" + lang);
+    qApp->installTranslator(mTranslator);
+    
+    OstTraceFunctionExit0(CPWLANAPPLUGIN_CPWLANAPPLUGIN_EXIT);
+}
+
+/*!
+    Destructor.
+*/
+CpWlanApPlugin::~CpWlanApPlugin()
+{
+    OstTraceFunctionEntry0(DUP1_CPWLANAPPLUGIN_CPWLANAPPLUGIN_ENTRY);
+    
+    delete mCmConnectionMethod;
+    delete mCmManager;
+
+    OstTraceFunctionExit0(DUP1_CPWLANAPPLUGIN_CPWLANAPPLUGIN_EXIT);
+}
+
+/*!
+    Returns the bearer type handled by the plugin.
+*/
+uint CpWlanApPlugin::bearerType() const
+{
+    OstTraceFunctionEntry0(CPWLANAPPLUGIN_BEARERTYPE_ENTRY);
+    
+    OstTraceFunctionExit0(CPWLANAPPLUGIN_BEARERTYPE_EXIT);
+    return CMManagerShim::BearerTypeWlan;
+}
+
+/*!
+    Creates the WLAN AP settings view.
+*/
+CpBaseSettingView *CpWlanApPlugin::createSettingView(uint connectionMethod)
+{
+    OstTraceFunctionEntry0(CPWLANAPPLUGIN_CREATESETTINGVIEW_ENTRY);
+
+    // Find the connection method
+    try {
+        mCmManager = new CmManagerShim();
+        mCmConnectionMethod = mCmManager->connectionMethod(connectionMethod);
+    }
+    catch (const std::exception&) {
+        // Error, don't create settings view, just return
+        OstTrace1(
+            TRACE_ERROR,
+            CPWLANAPPLUGIN_CREATESETTINGVIEW,
+            "Connection method loading failed;connectionMethod=%u",
+            connectionMethod);
+
+        OstTraceFunctionExit0(DUP1_CPWLANAPPLUGIN_CREATESETTINGVIEW_EXIT);
+        return NULL;
+    }
+    
+    // Connection method found, create settings view
+    OstTraceFunctionExit0(CPWLANAPPLUGIN_CREATESETTINGVIEW_EXIT);
+    return new CpWlanApView(mCmConnectionMethod);
+}
+
+Q_EXPORT_PLUGIN2(cpwlanapplugin, CpWlanApPlugin);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/src/cpwlanapview.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,710 @@
+/*
+* Copyright (c) 2010 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:  
+* Control Panel WLAN AP settings view implementation.
+*
+*/
+
+// System includes
+#include <QString>
+#include <QVariant>
+#include <QDir>
+#include <QPluginLoader>
+#include <HbMainWindow>
+#include <HbMenu>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbDataFormViewItem>
+#include <HbLineEdit>
+#include <HbEditorInterface>
+#include <HbUrlFilter>
+#include <HbPopup>
+#include <HbMessageBox>
+#include <HbAction>
+#include <wlanmgmtcommon.h>
+#include <cpitemdatahelper.h>
+#include <cpsettingformitemdata.h>
+#include <cmconnectionmethod_shim.h>
+#include <cpwlansecurityplugininterface.h>
+
+// User includes
+#include "cpwlanapplugin.h"
+#include "cpwlanapview.h"
+#include "cpwlanapadvancedview.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cpwlanapviewTraces.h"
+#endif
+
+/*!
+    \class CpWlanApView
+    \brief This class implements the WLAN AP Control Panel settings view.
+*/
+
+// External function prototypes
+
+// Local constants
+
+static const QString wlanSecurityPluginsDir =
+    "\\resource\\qt\\plugins\\controlpanel\\wlansecurity";
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructor.
+*/
+CpWlanApView::CpWlanApView(
+    CmConnectionMethodShim *cmConnectionMethod,
+    QGraphicsItem *parent) :
+        CpBaseSettingView(0, parent),
+        mForm(0),
+        mModel(0),
+        mItemDataHelper(0),
+        mApSettingsGroupItem(0),
+        mConnectionNameItem(0),
+        mWlanNetworkNameItem(0),
+        mNetworkStatusItem(0),
+        mNetworkModeItem(0),
+        mSecurityModeItem(0),
+        mHomepageItem(0),
+        mSecuritySettingsGroupItem(0),
+        mAdvancedSettingsAction(0),
+        mCmConnectionMethod(cmConnectionMethod),
+        mMessageBox(0)
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_CPWLANAPVIEW_ENTRY);
+    
+    // Add "Advanced settings" menu item
+    HbMenu *menu = this->menu();
+    mAdvancedSettingsAction = menu->addAction(
+        hbTrId("txt_occ_opt_advanced_settings"));
+    bool status = connect(
+        menu,
+        SIGNAL(triggered(HbAction*)),
+        this,
+        SLOT(menuActionTriggered(HbAction*)));
+    Q_ASSERT(status);
+
+    // Construct WLAN AP settings UI
+    mForm = settingForm();
+    if (mForm) {
+        mModel = new HbDataFormModel(mForm);
+
+        // The parameter given as 0 is a HbDataForm pointer, not parent
+        mItemDataHelper = new CpItemDataHelper(0);
+        mItemDataHelper->setParent(this);
+
+        // Add access point settings group
+        createAccessPointSettingsGroup();
+        
+        mItemDataHelper->bindToForm(mForm);
+        mForm->setModel(mModel);
+
+        status = connect(
+            mForm,
+            SIGNAL(itemShown(const QModelIndex)),
+            this,
+            SLOT(setEditorPreferences(const QModelIndex)));
+        Q_ASSERT(status);
+
+        // Expand access point settings group
+        mForm->setExpanded(mModel->indexFromItem(mApSettingsGroupItem), TRUE);
+        
+        // Add security settings group if necessary
+        updateSecurityGroup(
+            mSecurityModeItem->contentWidgetData("currentIndex").toInt());
+    }
+    
+    OstTraceFunctionExit0(CPWLANAPVIEW_CPWLANAPVIEW_EXIT);
+}
+
+/*!
+    Destructor.
+*/
+CpWlanApView::~CpWlanApView()
+{
+    OstTraceFunctionEntry0(DUP1_CPWLANAPVIEW_CPWLANAPVIEW_ENTRY);
+    
+    OstTraceFunctionExit0(DUP1_CPWLANAPVIEW_CPWLANAPVIEW_EXIT);
+}
+
+/*!
+    Creates the WLAN "Access point settings" group.
+*/
+void CpWlanApView::createAccessPointSettingsGroup()
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_CREATEACCESSPOINTSETTINGSGROUP_ENTRY);
+    
+    // Access point settings group
+    mApSettingsGroupItem = new HbDataFormModelItem(
+        HbDataFormModelItem::GroupItem, 
+        hbTrId("txt_occ_subhead_access_point_settings"));
+    mModel->appendDataFormItem(mApSettingsGroupItem);
+    
+    // Connection name
+    mConnectionNameItem = new CpSettingFormItemData(
+        HbDataFormModelItem::TextItem,
+        hbTrId("txt_occ_setlabel_connection_name"));
+    // Connect signal and add item to group
+    mForm->addConnection(
+        mConnectionNameItem,
+        SIGNAL(editingFinished()),
+        this,
+        SLOT(connectionNameChanged()));
+    mApSettingsGroupItem->appendChild(mConnectionNameItem);
+    
+    // WLAN network name
+    mWlanNetworkNameItem = new CpSettingFormItemData(
+        HbDataFormModelItem::TextItem,
+        hbTrId("txt_occ_setlabel_wlan_network_name"));
+    // Connect signal and add item to group
+    mForm->addConnection(
+        mWlanNetworkNameItem,
+        SIGNAL(editingFinished()),
+        this,
+        SLOT(wlanNetworkNameChanged()));
+    mApSettingsGroupItem->appendChild(mWlanNetworkNameItem);
+    
+    // Network status
+    mNetworkStatusItem = new CpSettingFormItemData(
+        HbDataFormModelItem::ComboBoxItem,
+        hbTrId("txt_occ_setlabel_network_status"));
+    // Add items to combobox
+    QStringList networkStatusItems;
+    networkStatusItems
+        << hbTrId("txt_occ_setlabel_network_status_val_public")
+        << hbTrId("txt_occ_setlabel_network_status_val_hidden");
+    mNetworkStatusItem->setContentWidgetData("items", networkStatusItems);
+    // Construct map to link item indexes to setting values
+    mNetworkStatusMap.insert(0, false); // public
+    mNetworkStatusMap.insert(1, true); // hidden
+    // Connect signal and add item to group
+    mForm->addConnection(
+        mNetworkStatusItem,
+        SIGNAL(currentIndexChanged(int)),
+        this,
+        SLOT(networkStatusChanged(int)));
+    mApSettingsGroupItem->appendChild(mNetworkStatusItem);
+    
+    // Network mode
+    mNetworkModeItem = new CpSettingFormItemData(
+        HbDataFormModelItem::ComboBoxItem,
+        hbTrId("txt_occ_setlabel_wlan_network_mode"));
+    // Add items to combobox
+    QStringList networkModeItems;
+    networkModeItems
+        << hbTrId("txt_occ_setlabel_wlan_network_mode_val_infrastruct")
+        << hbTrId("txt_occ_setlabel_wlan_network_mode_val_adhoc");
+    mNetworkModeItem->setContentWidgetData("items", networkModeItems);
+    // Construct map to link item indexes to setting values
+    mNetworkModeMap.insert(0, CMManagerShim::Infra); // infrastructure
+    mNetworkModeMap.insert(1, CMManagerShim::Adhoc); // adhoc
+    // Connect signal and add item to group
+    mForm->addConnection(
+        mNetworkModeItem,
+        SIGNAL(currentIndexChanged(int)),
+        this,
+        SLOT(networkModeChanged(int)));
+    mApSettingsGroupItem->appendChild(mNetworkModeItem);
+    
+    // Security mode
+    mSecurityModeItem = new CpSettingFormItemData(
+        HbDataFormModelItem::ComboBoxItem,
+        hbTrId("txt_occ_setlabel_wlan_security_mode"));
+    // Load WLAN security plugins and construct map
+    mSecurityModeMap.insert(0, NULL); // open mode
+    // Load all security plugins and construct map
+    loadSecurityPlugins();
+    // Add items to combobox
+    QStringList securityModeItems;
+    foreach (CpWlanSecurityPluginInterface *plugin, mSecurityModeMap) {
+        if (plugin) {
+            // Add security mode from plugin
+            securityModeItems
+                << hbTrId(plugin->securityModeTextId().toLatin1());
+        } else {
+            // Add open mode
+            securityModeItems
+                << hbTrId("txt_occ_setlabel_wlan_security_mode_val_open");
+        }
+    }
+    mSecurityModeItem->setContentWidgetData("items", securityModeItems);
+    // Connect signal and add item to group
+    mForm->addConnection(
+        mSecurityModeItem,
+        SIGNAL(currentIndexChanged(int)),
+        this,
+        SLOT(securityModeChanged(int)));
+    mApSettingsGroupItem->appendChild(mSecurityModeItem);
+    
+    // Homepage
+    mHomepageItem = new CpSettingFormItemData(
+        HbDataFormModelItem::TextItem,
+        hbTrId("txt_occ_setlabel_homepage"));
+    // Connect signal and add item to group
+    mForm->addConnection(
+        mHomepageItem,
+        SIGNAL(editingFinished()),
+        this,
+        SLOT(homepageChanged()));
+    mApSettingsGroupItem->appendChild(mHomepageItem);
+    
+    // Read settings from CommsDat and update widgets
+    updateAccessPointSettingsGroup();
+    
+    OstTraceFunctionExit0(CPWLANAPVIEW_CREATEACCESSPOINTSETTINGSGROUP_EXIT);
+}
+
+/*!
+    Reads attribute values and updates "Access point settings" group settings.
+*/
+void CpWlanApView::updateAccessPointSettingsGroup()
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_UPDATEACCESSPOINTSETTINGSGROUP_ENTRY);
+    
+    // Get attributes from CommsDat and set values to UI widgets
+    
+    // Connection name
+    QString connectionName = mCmConnectionMethod->getStringAttribute(
+        CMManagerShim::CmName);
+    mConnectionNameItem->setContentWidgetData("text", connectionName);
+    
+    // WLAN network name
+    QString networkName = mCmConnectionMethod->getStringAttribute(
+        CMManagerShim::WlanSSID);
+    mWlanNetworkNameItem->setContentWidgetData("text", networkName);
+    
+    // Network status
+    bool scanSsid = mCmConnectionMethod->getBoolAttribute(
+        CMManagerShim::WlanScanSSID);
+    mNetworkStatusItem->setContentWidgetData(
+        "currentIndex",
+        mNetworkStatusMap.key(scanSsid));
+    
+    // Network mode
+    int networkMode =  mCmConnectionMethod->getIntAttribute(
+        CMManagerShim::WlanConnectionMode);
+    mNetworkModeItem->setContentWidgetData(
+        "currentIndex",
+        mNetworkModeMap.key(networkMode));
+    
+    // Security mode
+    QVariant securityMode = mCmConnectionMethod->getIntAttribute(
+        CMManagerShim::WlanSecurityMode);
+    // Iterate through the map to find correct security plugin and set
+    // mode index
+    int securityModeIndex = 0;
+    QMapIterator<int, CpWlanSecurityPluginInterface *> i(mSecurityModeMap);
+    while (i.hasNext()) {
+        i.next();
+        if (i.value()
+            && i.value()->securityMode() == securityMode.toInt()) {
+            securityModeIndex = i.key();
+        }
+    }
+    mSecurityModeItem->setContentWidgetData("currentIndex",
+        securityModeIndex);
+    
+    // Homepage
+    QString homepage = mCmConnectionMethod->getStringAttribute(
+        CMManagerShim::CmStartPage);
+    mHomepageItem->setContentWidgetData("text", homepage);
+    
+    OstTraceFunctionExit0(CPWLANAPVIEW_UPDATEACCESSPOINTSETTINGSGROUP_EXIT);
+}
+
+/*!
+    Loads all WLAN security plugins.
+*/
+void CpWlanApView::loadSecurityPlugins()
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_LOADSECURITYPLUGINS_ENTRY);
+    
+    // Load security plugins
+    QList<CpWlanSecurityPluginInterface *> plugins;
+    QDir pluginsDir(wlanSecurityPluginsDir);
+    foreach (QString fileName, pluginsDir.entryList(QDir::Files)) {
+        QPluginLoader loader(pluginsDir.absoluteFilePath(fileName));
+        CpWlanSecurityPluginInterface *plugin = 
+            qobject_cast<CpWlanSecurityPluginInterface *>(loader.instance());
+        if (plugin) {
+            // Sort items based on the orderNumber()
+            QList<CpWlanSecurityPluginInterface *>::iterator i;
+            for (i = plugins.begin(); i != plugins.end(); ++i) {
+                if ((*i)->orderNumber() > plugin->orderNumber()) {
+                    plugins.insert(i, plugin);
+                    plugin = NULL;
+                    break;
+                }
+            }
+            if (plugin) {
+                plugins.append(plugin);
+            }
+        }
+    }
+    
+    // Add security plugins to map
+    int i;
+    i = mSecurityModeMap.size();
+    foreach (CpWlanSecurityPluginInterface *plugin, plugins) {
+        mSecurityModeMap.insert(i, plugin);
+        i++;
+    }
+    
+    OstTraceFunctionExit0(CPWLANAPVIEW_LOADSECURITYPLUGINS_EXIT);
+}
+
+/*!
+    Updates the "Security settings" group.
+*/
+void CpWlanApView::updateSecurityGroup(int index)
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_UPDATESECURITYGROUP_ENTRY);
+    
+    // Remove old security settings group
+    if (mSecuritySettingsGroupItem) {
+        mModel->removeItem(mSecuritySettingsGroupItem);
+        mSecuritySettingsGroupItem = NULL;
+    }
+
+    // Add new security settings group
+    if (index > 0) {
+        // Get correct security plugin
+        CpWlanSecurityPluginInterface *plugin = mSecurityModeMap.value(index);
+        if (plugin) {
+            // Ask plugin to create the security group
+            plugin->setReference(
+                mCmConnectionMethod,
+                mCmConnectionMethod->getIntAttribute(CMManagerShim::CmId));
+            mSecuritySettingsGroupItem = plugin->uiInstance(*mItemDataHelper);
+            if (mSecuritySettingsGroupItem) {
+                // And add it to dataform
+                mModel->appendDataFormItem(mSecuritySettingsGroupItem);
+            }
+        }
+    }
+    
+    OstTraceFunctionExit0(CPWLANAPVIEW_UPDATESECURITYGROUP_EXIT);
+}
+
+/*!
+    Shows message box with "OK" button using given text.
+*/
+void CpWlanApView::showMessageBox(
+    HbMessageBox::MessageBoxType type,
+    const QString &text)
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_SHOWMESSAGEBOX_ENTRY);
+    
+    // Create a message box
+    mMessageBox = QSharedPointer<HbMessageBox>(new HbMessageBox(type));
+    mMessageBox->setText(text);
+    mMessageBox->setModal(true);
+    mMessageBox->setTimeout(HbPopup::NoTimeout);
+    mMessageBox->open();
+    
+    OstTraceFunctionExit0(CPWLANAPVIEW_SHOWMESSAGEBOX_EXIT);
+}
+
+/*!
+    Tries to update connection method changes to CommsDat.
+    Returns "true" if success, "false" if some error happened. 
+*/
+bool CpWlanApView::tryUpdate()
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_TRYUPDATE_ENTRY);
+    
+    // Try update
+    try {
+        mCmConnectionMethod->update();
+    }
+    catch (const std::exception&) {
+        // Handle error
+        handleUpdateError();
+        
+        OstTraceFunctionExit0(CPWLANAPVIEW_TRYUPDATE_EXIT);
+        return false;
+    }
+
+    OstTraceFunctionExit0(DUP1_CPWLANAPVIEW_TRYUPDATE_EXIT);
+    return true;
+}
+
+/*!
+    Handles failed CommsDat update.
+ */
+void CpWlanApView::handleUpdateError()
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_HANDLEUPDATEERROR_ENTRY);
+    
+    // Show error note to user
+    showMessageBox(
+        HbMessageBox::MessageTypeWarning,
+        hbTrId("txt_occ_info_unable_to_save_setting"));
+    // Reload settings from CommsDat and update UI
+    try {
+        mCmConnectionMethod->refresh();
+    }
+    catch (const std::exception&) {
+        // Ignore error from refresh. Most likely this will not happen, but
+        // if it does, there isn't very much we can do.
+        OstTrace0(
+            TRACE_ERROR,
+            CPWLANAPPLUGIN_HANDLEUPDATEERROR,
+            "Refresh failed");
+    };
+    updateAccessPointSettingsGroup();
+    
+    OstTraceFunctionExit0(CPWLANAPVIEW_HANDLEUPDATEERROR_EXIT);
+}
+
+/*!
+    Stores connection name.
+*/
+void CpWlanApView::connectionNameChanged()
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_CONNECTIONNAMECHANGED_ENTRY);
+    
+    QString connectionName =
+        mConnectionNameItem->contentWidgetData("text").toString();
+    if (!connectionName.isEmpty()) {
+        // Update to CommsDat
+        mCmConnectionMethod->setStringAttribute(
+            CMManagerShim::CmName,
+            connectionName);
+        if (tryUpdate()) {
+            // Update successful
+            // Read name because in case the name already exists it will
+            // be made unique by CMManager
+            connectionName = mCmConnectionMethod->getStringAttribute(
+                CMManagerShim::CmName);
+            mConnectionNameItem->setContentWidgetData("text", connectionName);
+        }
+    } else {
+        // Inform user of invalid name
+        showMessageBox(
+            HbMessageBox::MessageTypeInformation,
+            hbTrId("txt_occ_info_invalid_name"));
+
+        // Empty name not allowed, revert back to old value
+        connectionName = mCmConnectionMethod->getStringAttribute(
+            CMManagerShim::CmName);
+        mConnectionNameItem->setContentWidgetData("text", connectionName);
+    }
+    
+    OstTraceFunctionExit0(CPWLANAPVIEW_CONNECTIONNAMECHANGED_EXIT);
+}
+
+/*!
+    Stores WLAN network name.
+*/
+void CpWlanApView::wlanNetworkNameChanged()
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_WLANNETWORKNAMECHANGED_ENTRY);
+    
+    // Update to CommsDat
+    QString wlanNetworkName =
+        mWlanNetworkNameItem->contentWidgetData("text").toString();
+    if (!wlanNetworkName.isEmpty()) {
+        mCmConnectionMethod->setStringAttribute(
+            CMManagerShim::WlanSSID,
+            wlanNetworkName);
+        (void)tryUpdate();
+    } else {
+        // Inform user of invalid name
+        showMessageBox(
+            HbMessageBox::MessageTypeInformation,
+            hbTrId("txt_occ_info_invalid_name"));
+
+        // Empty name not allowed, revert back to old value
+        wlanNetworkName = mCmConnectionMethod->getStringAttribute(
+            CMManagerShim::WlanSSID);
+        mWlanNetworkNameItem->setContentWidgetData("text", wlanNetworkName);
+    }
+    
+    OstTraceFunctionExit0(CPWLANAPVIEW_WLANNETWORKNAMECHANGED_EXIT);
+}
+
+/*!
+    Stores WLAN network status.
+*/
+void CpWlanApView::networkStatusChanged(int index)
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_NETWORKSTATUSCHANGED_ENTRY);
+    
+    // Update to CommsDat
+    mCmConnectionMethod->setBoolAttribute(CMManagerShim::WlanScanSSID,
+        mNetworkStatusMap.value(index));
+    (void)tryUpdate();
+    
+    OstTraceFunctionExit0(CPWLANAPVIEW_NETWORKSTATUSCHANGED_EXIT);
+}
+
+/*!
+    Stores WLAN network mode.
+*/
+void CpWlanApView::networkModeChanged(int index)
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_NETWORKMODECHANGED_ENTRY);
+    
+    // Update to CommsDat
+    mCmConnectionMethod->setIntAttribute(CMManagerShim::WlanConnectionMode,
+        mNetworkModeMap.value(index));
+    (void)tryUpdate();
+    
+    OstTraceFunctionExit0(CPWLANAPVIEW_NETWORKMODECHANGED_EXIT);
+}
+
+/*!
+    Stores WLAN security mode.
+*/
+void CpWlanApView::securityModeChanged(int index)
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_SECURITYMODECHANGED_ENTRY);
+    
+    // Get security plugin
+    CpWlanSecurityPluginInterface *plugin = mSecurityModeMap.value(index);
+    // Update to CommsDat
+    if (plugin) {
+        mCmConnectionMethod->setIntAttribute(CMManagerShim::WlanSecurityMode,
+            plugin->securityMode());
+    } else {
+        mCmConnectionMethod->setIntAttribute(CMManagerShim::WlanSecurityMode,
+            CMManagerShim::WlanSecModeOpen);
+    }
+    (void)tryUpdate();
+    
+    // Update UI
+    updateSecurityGroup(
+        mSecurityModeItem->contentWidgetData("currentIndex").toInt());
+    
+    OstTraceFunctionExit0(CPWLANAPVIEW_SECURITYMODECHANGED_EXIT);
+}
+
+/*!
+    Stores homepage.
+*/
+void CpWlanApView::homepageChanged()
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_HOMEPAGECHANGED_ENTRY);
+    
+    // Update to CommsDat
+    QString homepage = mHomepageItem->contentWidgetData("text").toString();
+    mCmConnectionMethod->setStringAttribute(
+        CMManagerShim::CmStartPage,
+        homepage);
+    (void)tryUpdate();
+    
+    OstTraceFunctionExit0(CPWLANAPVIEW_HOMEPAGECHANGED_EXIT);
+}
+
+/*!
+    Handles view menu actions.
+*/
+void CpWlanApView::menuActionTriggered(HbAction *action)
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_MENUACTIONTRIGGERED_ENTRY);
+    
+    if (action == mAdvancedSettingsAction) {
+        HbMainWindow *mainWindow = this->mainWindow();
+
+        // Create the advanced settings view
+        HbView *newView = new CpWlanApAdvancedView(mCmConnectionMethod);
+        // Connect signal to return back to the previous view
+        bool status = QObject::connect(
+            newView,
+            SIGNAL(aboutToClose()),
+            this,
+            SLOT(restoreCurrentView()));
+        Q_ASSERT(status);
+        
+        mainWindow->addView(newView);
+        mainWindow->setCurrentView(newView);
+    }
+    
+    OstTraceFunctionExit0(CPWLANAPVIEW_MENUACTIONTRIGGERED_EXIT);
+}
+
+/*!
+    Removes current view from main window and sets this view as the
+    current view. Used when "back" button is pressed in "Advanced settings"
+    view.
+*/
+void CpWlanApView::restoreCurrentView()
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_RESTORECURRENTVIEW_ENTRY);
+    
+    HbMainWindow *mainWindow = this->mainWindow();
+    
+    // Remove the previous view and delete it
+    HbView *prevView = mainWindow->currentView();
+    mainWindow->removeView(prevView);
+    prevView->deleteLater();
+    
+    // Set this view on top
+    mainWindow->setCurrentView(this);
+    
+    OstTraceFunctionExit0(CPWLANAPVIEW_RESTORECURRENTVIEW_EXIT);
+}
+
+/*!
+    Sets editor preferences for all HbLineEdit items.
+*/
+void CpWlanApView::setEditorPreferences(const QModelIndex modelIndex)
+{
+    OstTraceFunctionEntry0(CPWLANAPVIEW_SETEDITORPREFERENCES_ENTRY);
+    
+    HbDataFormViewItem *viewItem = mForm->dataFormViewItem(modelIndex);
+    HbDataFormModelItem *modelItem = mModel->itemFromIndex(modelIndex);
+    
+    if (modelItem == mConnectionNameItem
+        || modelItem == mWlanNetworkNameItem
+        || modelItem == mHomepageItem ) {
+        // HbLineEdit items, get editor and editor interface
+        HbLineEdit *edit = qobject_cast<HbLineEdit *>
+            (viewItem->dataItemContentWidget());
+        HbEditorInterface editInterface(edit);
+        
+        if (modelItem == mConnectionNameItem) {
+            // Setup editor for connection name
+            editInterface.setConstraints(HbEditorConstraintLatinAlphabetOnly);
+            edit->setInputMethodHints(Qt::ImhNoPredictiveText); 
+            edit->setMaxLength(CMManagerShim::CmNameLength);
+        } else if (modelItem == mWlanNetworkNameItem) {
+            // Setup editor for WLAN SSID
+            editInterface.setInputMode(HbInputModeNone);
+            editInterface.setConstraints(HbEditorConstraintLatinAlphabetOnly);
+            // TODO: Remove comment, should be in w12
+            //editInterface.setEditorClass(HbInputEditorClassNetworkName); 
+            editInterface.setLocalDigitType(HbDigitTypeNone);
+            edit->setInputMethodHints(
+                Qt::ImhNoPredictiveText | Qt::ImhPreferLowercase);
+            edit->setMaxLength(CMManagerShim::WlanSSIDLength);
+        } else { /* mHomepageItem */
+            // Setup editor for URL
+            editInterface.setInputMode(HbInputModeNone);
+            editInterface.setConstraints(HbEditorConstraintLatinAlphabetOnly);
+            editInterface.setFilter(HbUrlFilter::instance());
+            editInterface.setEditorClass(HbInputEditorClassUrl);
+            editInterface.setLocalDigitType(HbDigitTypeNone);
+            edit->setInputMethodHints(
+                Qt::ImhNoPredictiveText | Qt::ImhPreferLowercase);
+            edit->setMaxLength(CMManagerShim::CmStartPageLength);
+        }
+    }
+    
+    OstTraceFunctionExit0(CPWLANAPVIEW_SETEDITORPREFERENCES_EXIT);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/traces/OstTraceDefinitions.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2010 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:
+ * OST trace header file.
+ *
+ */
+
+#ifndef OSTTRACEDEFINITIONS_H
+#define OSTTRACEDEFINITIONS_H
+#include <opensystemtrace.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/tsrc/ut/hbautotest.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,835 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include "hbautotest.h"
+#include <hbmainwindow.h>
+#include <hbwidget.h>
+
+
+const qreal STEP = 4; //How many pixels to drag before sending an event
+
+//Init static members
+bool HbAutoTest::pointerPressed = false;
+QPointF HbAutoTest::pressPoint = QPointF();
+
+void HbAutoTest::mouseMove (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos, int delay)
+{
+    if (delay!=-1) {
+        QTest::qWait(delay);
+    }
+    QPointF targetPoint=QPointF();
+    if (pos==QPointF()) {
+        targetPoint = middlePointOfWidget(widget);
+    } else {
+        targetPoint = widget->mapToScene(pos);
+    }
+    if (pointerPressed) {
+        //Now we should drag an item
+        drag(window, targetPoint);
+            HbAutoTestMouseEvent me (
+            QEvent::MouseMove, 
+            targetPoint.toPoint(), 
+            window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+            Qt::NoButton, 
+            Qt::NoButton, 
+            Qt::NoModifier);
+            QSpontaneKeyEvent::setSpontaneous(&me);
+            qApp->notify((window->viewport()), &me);
+            QCoreApplication::sendPostedEvents();
+            QTest::qWait(1);
+    } else {
+            HbAutoTestMouseEvent me (
+            QEvent::MouseMove, 
+            targetPoint.toPoint(), 
+            window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+            Qt::NoButton, 
+            Qt::NoButton, 
+            Qt::NoModifier);
+            QSpontaneKeyEvent::setSpontaneous(&me);
+            qApp->notify((window->viewport()), &me);
+            QCoreApplication::sendPostedEvents();
+            QTest::qWait(1);
+
+    }
+    QTest::qWait(1);
+    QTest::qWait(1);
+}
+ 
+void HbAutoTest::mousePress (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos, int delay)
+{
+    if (delay!=-1) {
+        QTest::qWait(delay);
+    }
+    pointerPressed=true;
+    QPointF targetPoint=QPointF();
+    if (pos==QPointF()) {
+        targetPoint = middlePointOfWidget(widget);
+    } else {
+        targetPoint = widget->mapToScene(pos);
+    }
+    QCursor::setPos(window->mapToGlobal(targetPoint.toPoint()));
+
+    pressPoint=targetPoint;
+    
+    HbAutoTestMouseEvent me (
+    QEvent::MouseButtonPress, 
+    targetPoint.toPoint(), 
+    window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+    Qt::LeftButton, 
+    Qt::LeftButton, 
+    Qt::NoModifier);
+
+    QSpontaneKeyEvent::setSpontaneous(&me);
+    qApp->notify((window->viewport()), &me);
+    QCoreApplication::sendPostedEvents();
+    QCoreApplication::sendPostedEvents();
+    QTest::qWait(1);
+}
+
+void HbAutoTest::mouseRelease (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos, int delay)
+{
+    if (delay!=-1) {
+        QTest::qWait(delay);
+    }
+    pointerPressed=false;
+    QPointF targetPoint=QPointF();
+    if (pos==QPointF()) {
+        targetPoint = middlePointOfWidget(widget);
+    } else {
+        targetPoint = widget->mapToScene(pos);
+    }
+    QCursor::setPos(window->mapToGlobal(targetPoint.toPoint()));
+    pressPoint=QPointF();
+    HbAutoTestMouseEvent me (
+    QEvent::MouseButtonRelease, 
+    targetPoint.toPoint(), 
+    window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+    Qt::LeftButton, 
+    Qt::NoButton, 
+    Qt::NoModifier);
+
+    QSpontaneKeyEvent::setSpontaneous(&me);
+    qApp->notify((window->viewport()), &me);
+    QCoreApplication::sendPostedEvents();
+
+    QTest::qWait(1);
+    QTest::qWait(1);
+}
+
+void HbAutoTest::mouseClick (HbAutoTestMainWindow *window, const HbWidget *widget, QPointF pos, int delay)
+{
+    if (delay!=-1) {
+        QTest::qWait(delay);
+    }
+    QPointF targetPoint=QPointF();
+    if (pos==QPointF()) {
+        targetPoint = middlePointOfWidget(widget);
+    } else {
+        targetPoint = widget->mapToScene(pos);
+    }
+    
+    QCursor::setPos(window->mapToGlobal(targetPoint.toPoint()));
+    
+    HbAutoTestMouseEvent me (
+    QEvent::MouseButtonPress, 
+    targetPoint.toPoint(), 
+    window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+    Qt::LeftButton, 
+    Qt::LeftButton, 
+    Qt::NoModifier);
+    QSpontaneKeyEvent::setSpontaneous(&me);
+    qApp->notify((window->viewport()), &me);
+    QCoreApplication::sendPostedEvents();
+    //QTime currentTime = QTime::currentTime();
+    //qDebug() << currentTime.toString("hh:mm:ss.zzz") << ": Left button down";
+    QTest::qWait(1);
+
+    if (delay!=-1) {
+        QTest::qWait(delay);
+    }
+    HbAutoTestMouseEvent me2 (
+    QEvent::MouseButtonRelease, 
+    targetPoint.toPoint(), 
+    window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+    Qt::LeftButton, 
+    Qt::NoButton,
+    Qt::NoModifier);
+
+    QSpontaneKeyEvent::setSpontaneous(&me2);
+    qApp->notify((window->viewport()), &me2);
+    QCoreApplication::sendPostedEvents();
+    //currentTime = QTime::currentTime();
+    //qDebug() << currentTime.toString("hh:mm:ss.zzz") << ": Left button up";
+
+    QTest::qWait(1);
+    QTest::qWait(1);
+}   
+
+QPointF HbAutoTest::middlePointOfWidget( const HbWidget* widget)
+{
+    QRectF widgetRect = widget->rect();
+    QRectF widgetSceneRect = widget->mapRectToScene(widgetRect);
+    qreal middleX = ((widgetSceneRect.right() - widgetSceneRect.left())/2)+widgetSceneRect.left();
+    qreal middleY = ((widgetSceneRect.bottom() - widgetSceneRect.top())/2)+widgetSceneRect.top();  
+    return QPointF(middleX,middleY);
+}
+
+
+
+void HbAutoTest::drag(HbAutoTestMainWindow *window, QPointF targetPoint)
+{
+    qreal tempX = targetPoint.x() - pressPoint.x();
+    qreal tempY = targetPoint.y() - pressPoint.y();
+    qreal totalTrip = sqrt ((tempX * tempX) + (tempY * tempY));
+    
+    int numberOfSteps = qRound(totalTrip / STEP);
+    HbAutoTestMouseEvent me (
+        QEvent::MouseMove, 
+        targetPoint.toPoint(), 
+        window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+        Qt::NoButton , 
+        Qt::LeftButton, 
+        Qt::NoModifier);
+
+    QPointF nextPanPoint=pressPoint;
+    for (int i=1; i<numberOfSteps; i++) { //On purpose not =<
+        
+        nextPanPoint.setY (pressPoint.y()+((i / (qreal)numberOfSteps) * tempY));
+        nextPanPoint.setX (pressPoint.x()+((i / (qreal)numberOfSteps) * tempX));
+        
+        QCursor::setPos(window->mapToGlobal(nextPanPoint.toPoint()));
+
+        me =  HbAutoTestMouseEvent (QEvent::MouseMove,
+                            nextPanPoint.toPoint(), 
+                            window->viewport()->mapToGlobal(nextPanPoint.toPoint()), 
+                            Qt::NoButton, 
+                            Qt::LeftButton, 
+                            Qt::NoModifier);   
+
+        QSpontaneKeyEvent::setSpontaneous(&me);
+        qApp->notify((window->viewport()), &me);
+        QCoreApplication::sendPostedEvents();
+    }
+
+    QCursor::setPos(window->mapToGlobal(targetPoint.toPoint()));
+
+    //One more (or the only one) step to the target
+    me =  HbAutoTestMouseEvent (QEvent::MouseMove,
+                            targetPoint.toPoint(), 
+                            window->viewport()->mapToGlobal(targetPoint.toPoint()), 
+                            Qt::NoButton, 
+                            Qt::LeftButton, 
+                            Qt::NoModifier);   
+    QSpontaneKeyEvent::setSpontaneous(&me);
+    qApp->notify((window->viewport()), &me);
+    QCoreApplication::sendPostedEvents();
+}
+
+
+void HbAutoTest::simulateEvent(QWidget *widget, bool press, int code,
+                              Qt::KeyboardModifiers modifier, QString text, bool repeat, int delay)
+    {
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        extern int Q_TESTLIB_EXPORT defaultKeyDelay();
+
+        if (delay == -1 || delay < 10) // defaultKeyDelay())
+            delay = 10; //defaultKeyDelay();
+        if(delay > 0)
+            QTest::qWait(delay);
+//        Q_UNUSED(delay);
+//        QTest::qWait(10); //TODO: Remove this and reveal above out-commented code
+
+        HbAutoTestKeyEvent a(press ? QEvent::KeyPress : QEvent::KeyRelease, code, modifier, text, repeat);
+        QSpontaneKeyEvent::setSpontaneous(&a);
+        if (!qApp->notify(widget, &a))
+            QTest::qWarn("Keyboard event not accepted by receiving widget");
+    }
+
+void HbAutoTest::sendKeyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key code,
+                             QString text, Qt::KeyboardModifiers modifier, int delay)
+    {
+        QTEST_ASSERT(qApp);
+
+        if (!widget)
+            widget = QWidget::keyboardGrabber();
+        if (!widget) {
+            if (QWidget *apw = QApplication::activePopupWidget())
+                widget = apw->focusWidget() ? apw->focusWidget() : apw;
+            else
+                widget = QApplication::focusWidget();
+        }
+        if (!widget)
+            widget = QApplication::activeWindow();
+
+        QTEST_ASSERT(widget);
+
+        if (action == QTest::Click) {
+            QPointer<QWidget> ptr(widget);
+            sendKeyEvent(QTest::Press, widget, code, text, modifier, delay);
+            if (!ptr) {
+                // if we send key-events to embedded widgets, they might be destroyed
+                // when the user presses Return
+                return;
+            }
+            sendKeyEvent(QTest::Release, widget, code, text, modifier, delay);
+            return;
+        }
+
+        bool repeat = false;
+
+        if (action == QTest::Press) {
+            if (modifier & Qt::ShiftModifier)
+                simulateEvent(widget, true, Qt::Key_Shift, 0, QString(), false, delay);
+
+            if (modifier & Qt::ControlModifier)
+                simulateEvent(widget, true, Qt::Key_Control, modifier & Qt::ShiftModifier, QString(), false, delay);
+
+            if (modifier & Qt::AltModifier)
+                simulateEvent(widget, true, Qt::Key_Alt,
+                              modifier & (Qt::ShiftModifier | Qt::ControlModifier), QString(), false, delay);
+            if (modifier & Qt::MetaModifier)
+                simulateEvent(widget, true, Qt::Key_Meta, modifier & (Qt::ShiftModifier
+                                                                      | Qt::ControlModifier | Qt::AltModifier), QString(), false, delay);
+            simulateEvent(widget, true, code, modifier, text, repeat, delay);
+        } else if (action == QTest::Release) {
+            simulateEvent(widget, false, code, modifier, text, repeat, delay);
+
+            if (modifier & Qt::MetaModifier)
+                simulateEvent(widget, false, Qt::Key_Meta, modifier, QString(), false, delay);
+            if (modifier & Qt::AltModifier)
+                simulateEvent(widget, false, Qt::Key_Alt, modifier &
+                              (Qt::ShiftModifier | Qt::ControlModifier | Qt::AltModifier), QString(), false, delay);
+
+            if (modifier & Qt::ControlModifier)
+                simulateEvent(widget, false, Qt::Key_Control,
+                              modifier & (Qt::ShiftModifier | Qt::ControlModifier), QString(), false, delay);
+
+            if (modifier & Qt::ShiftModifier)
+                simulateEvent(widget, false, Qt::Key_Shift, modifier & Qt::ShiftModifier, QString(), false, delay);
+        }
+    }
+
+void HbAutoTest::sendKeyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key code,
+                             char ascii, Qt::KeyboardModifiers modifier, int delay)
+    {
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        QString text;
+        if (ascii)
+            text = QString(QChar::fromLatin1(ascii));
+        sendKeyEvent(action, widget, code, text, modifier, delay);
+    }
+
+void HbAutoTest::keyEvent(QTest::KeyAction action, QWidget *widget, char ascii,
+                                Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        sendKeyEvent(action, widget, asciiToKey(ascii), ascii, modifier, delay); 
+     }
+     
+void HbAutoTest::keyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key key,
+                                Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        sendKeyEvent(action, widget, key, keyToAscii(key), modifier, delay); 
+     }
+
+void HbAutoTest::keyClicks(QWidget *widget, const QString &sequence,
+                                 Qt::KeyboardModifiers modifier, int delay)
+    {
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        for (int i=0; i < sequence.length(); i++)
+            keyEvent(QTest::Click, widget, sequence.at(i).toLatin1(), modifier, delay);
+    }
+
+void HbAutoTest::keyPress(QWidget *widget, char key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Press, widget, key, modifier, delay); 
+    }
+    
+void HbAutoTest::keyRelease(QWidget *widget, char key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Release, widget, key, modifier, delay); 
+    }
+    
+void HbAutoTest::keyClick(QWidget *widget, char key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Click, widget, key, modifier, delay); 
+    }
+    
+void HbAutoTest::keyPress(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Press, widget, key, modifier, delay); 
+    }
+    
+void HbAutoTest::keyRelease(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Release, widget, key, modifier, delay); }
+    
+void HbAutoTest::keyClick(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier, int delay)
+    { 
+        Q_ASSERT_X(dynamic_cast<HbAutoTestMainWindow *>(( widget) ) != 0, "HbAutoTest", "Always use with HbAutoTestMainWindow");
+        keyEvent(QTest::Click, widget, key, modifier, delay); 
+    }
+
+Qt::Key HbAutoTest::asciiToKey(char ascii)
+{
+    switch ((unsigned char)ascii) {
+    case 0x08: return Qt::Key_Backspace;
+    case 0x09: return Qt::Key_Tab;
+    case 0x0b: return Qt::Key_Backtab;
+    case 0x0d: return Qt::Key_Return;
+    case 0x1b: return Qt::Key_Escape;
+    case 0x20: return Qt::Key_Space;
+    case 0x21: return Qt::Key_Exclam;
+    case 0x22: return Qt::Key_QuoteDbl;
+    case 0x23: return Qt::Key_NumberSign;
+    case 0x24: return Qt::Key_Dollar;
+    case 0x25: return Qt::Key_Percent;
+    case 0x26: return Qt::Key_Ampersand;
+    case 0x27: return Qt::Key_Apostrophe;
+    case 0x28: return Qt::Key_ParenLeft;
+    case 0x29: return Qt::Key_ParenRight;
+    case 0x2a: return Qt::Key_Asterisk;
+    case 0x2b: return Qt::Key_Plus;
+    case 0x2c: return Qt::Key_Comma;
+    case 0x2d: return Qt::Key_Minus;
+    case 0x2e: return Qt::Key_Period;
+    case 0x2f: return Qt::Key_Slash;
+    case 0x30: return Qt::Key_0;
+    case 0x31: return Qt::Key_1;
+    case 0x32: return Qt::Key_2;
+    case 0x33: return Qt::Key_3;
+    case 0x34: return Qt::Key_4;
+    case 0x35: return Qt::Key_5;
+    case 0x36: return Qt::Key_6;
+    case 0x37: return Qt::Key_7;
+    case 0x38: return Qt::Key_8;
+    case 0x39: return Qt::Key_9;
+    case 0x3a: return Qt::Key_Colon;
+    case 0x3b: return Qt::Key_Semicolon;
+    case 0x3c: return Qt::Key_Less;
+    case 0x3d: return Qt::Key_Equal;
+    case 0x3e: return Qt::Key_Greater;
+    case 0x3f: return Qt::Key_Question;
+    case 0x40: return Qt::Key_At;
+    case 0x41: return Qt::Key_A;
+    case 0x42: return Qt::Key_B;
+    case 0x43: return Qt::Key_C;
+    case 0x44: return Qt::Key_D;
+    case 0x45: return Qt::Key_E;
+    case 0x46: return Qt::Key_F;
+    case 0x47: return Qt::Key_G;
+    case 0x48: return Qt::Key_H;
+    case 0x49: return Qt::Key_I;
+    case 0x4a: return Qt::Key_J;
+    case 0x4b: return Qt::Key_K;
+    case 0x4c: return Qt::Key_L;
+    case 0x4d: return Qt::Key_M;
+    case 0x4e: return Qt::Key_N;
+    case 0x4f: return Qt::Key_O;
+    case 0x50: return Qt::Key_P;
+    case 0x51: return Qt::Key_Q;
+    case 0x52: return Qt::Key_R;
+    case 0x53: return Qt::Key_S;
+    case 0x54: return Qt::Key_T;
+    case 0x55: return Qt::Key_U;
+    case 0x56: return Qt::Key_V;
+    case 0x57: return Qt::Key_W;
+    case 0x58: return Qt::Key_X;
+    case 0x59: return Qt::Key_Y;
+    case 0x5a: return Qt::Key_Z;
+    case 0x5b: return Qt::Key_BracketLeft;
+    case 0x5c: return Qt::Key_Backslash;
+    case 0x5d: return Qt::Key_BracketRight;
+    case 0x5e: return Qt::Key_AsciiCircum;
+    case 0x5f: return Qt::Key_Underscore;
+    case 0x60: return Qt::Key_QuoteLeft;
+    case 0x61: return Qt::Key_A;
+    case 0x62: return Qt::Key_B;
+    case 0x63: return Qt::Key_C;
+    case 0x64: return Qt::Key_D;
+    case 0x65: return Qt::Key_E;
+    case 0x66: return Qt::Key_F;
+    case 0x67: return Qt::Key_G;
+    case 0x68: return Qt::Key_H;
+    case 0x69: return Qt::Key_I;
+    case 0x6a: return Qt::Key_J;
+    case 0x6b: return Qt::Key_K;
+    case 0x6c: return Qt::Key_L;
+    case 0x6d: return Qt::Key_M;
+    case 0x6e: return Qt::Key_N;
+    case 0x6f: return Qt::Key_O;
+    case 0x70: return Qt::Key_P;
+    case 0x71: return Qt::Key_Q;
+    case 0x72: return Qt::Key_R;
+    case 0x73: return Qt::Key_S;
+    case 0x74: return Qt::Key_T;
+    case 0x75: return Qt::Key_U;
+    case 0x76: return Qt::Key_V;
+    case 0x77: return Qt::Key_W;
+    case 0x78: return Qt::Key_X;
+    case 0x79: return Qt::Key_Y;
+    case 0x7a: return Qt::Key_Z;
+    case 0x7b: return Qt::Key_BraceLeft;
+    case 0x7c: return Qt::Key_Bar;
+    case 0x7d: return Qt::Key_BraceRight;
+    case 0x7e: return Qt::Key_AsciiTilde;
+
+    // Latin 1 codes adapted from X: keysymdef.h,v 1.21 94/08/28 16:17:06
+    case 0xa0: return Qt::Key_nobreakspace;
+    case 0xa1: return Qt::Key_exclamdown;
+    case 0xa2: return Qt::Key_cent;
+    case 0xa3: return Qt::Key_sterling;
+    case 0xa4: return Qt::Key_currency;
+    case 0xa5: return Qt::Key_yen;
+    case 0xa6: return Qt::Key_brokenbar;
+    case 0xa7: return Qt::Key_section;
+    case 0xa8: return Qt::Key_diaeresis;
+    case 0xa9: return Qt::Key_copyright;
+    case 0xaa: return Qt::Key_ordfeminine;
+    case 0xab: return Qt::Key_guillemotleft;
+    case 0xac: return Qt::Key_notsign;
+    case 0xad: return Qt::Key_hyphen;
+    case 0xae: return Qt::Key_registered;
+    case 0xaf: return Qt::Key_macron;
+    case 0xb0: return Qt::Key_degree;
+    case 0xb1: return Qt::Key_plusminus;
+    case 0xb2: return Qt::Key_twosuperior;
+    case 0xb3: return Qt::Key_threesuperior;
+    case 0xb4: return Qt::Key_acute;
+    case 0xb5: return Qt::Key_mu;
+    case 0xb6: return Qt::Key_paragraph;
+    case 0xb7: return Qt::Key_periodcentered;
+    case 0xb8: return Qt::Key_cedilla;
+    case 0xb9: return Qt::Key_onesuperior;
+    case 0xba: return Qt::Key_masculine;
+    case 0xbb: return Qt::Key_guillemotright;
+    case 0xbc: return Qt::Key_onequarter;
+    case 0xbd: return Qt::Key_onehalf;
+    case 0xbe: return Qt::Key_threequarters;
+    case 0xbf: return Qt::Key_questiondown;
+    case 0xc0: return Qt::Key_Agrave;
+    case 0xc1: return Qt::Key_Aacute;
+    case 0xc2: return Qt::Key_Acircumflex;
+    case 0xc3: return Qt::Key_Atilde;
+    case 0xc4: return Qt::Key_Adiaeresis;
+    case 0xc5: return Qt::Key_Aring;
+    case 0xc6: return Qt::Key_AE;
+    case 0xc7: return Qt::Key_Ccedilla;
+    case 0xc8: return Qt::Key_Egrave;
+    case 0xc9: return Qt::Key_Eacute;
+    case 0xca: return Qt::Key_Ecircumflex;
+    case 0xcb: return Qt::Key_Ediaeresis;
+    case 0xcc: return Qt::Key_Igrave;
+    case 0xcd: return Qt::Key_Iacute;
+    case 0xce: return Qt::Key_Icircumflex;
+    case 0xcf: return Qt::Key_Idiaeresis;
+    case 0xd0: return Qt::Key_ETH;
+    case 0xd1: return Qt::Key_Ntilde;
+    case 0xd2: return Qt::Key_Ograve;
+    case 0xd3: return Qt::Key_Oacute;
+    case 0xd4: return Qt::Key_Ocircumflex;
+    case 0xd5: return Qt::Key_Otilde;
+    case 0xd6: return Qt::Key_Odiaeresis;
+    case 0xd7: return Qt::Key_multiply;
+    case 0xd8: return Qt::Key_Ooblique;
+    case 0xd9: return Qt::Key_Ugrave;
+    case 0xda: return Qt::Key_Uacute;
+    case 0xdb: return Qt::Key_Ucircumflex;
+    case 0xdc: return Qt::Key_Udiaeresis;
+    case 0xdd: return Qt::Key_Yacute;
+    case 0xde: return Qt::Key_THORN;
+    case 0xdf: return Qt::Key_ssharp;
+    case 0xe5: return Qt::Key_Aring;
+    case 0xe6: return Qt::Key_AE;
+    case 0xf7: return Qt::Key_division;
+    case 0xf8: return Qt::Key_Ooblique;
+    case 0xff: return Qt::Key_ydiaeresis;
+    default: QTEST_ASSERT(false); return Qt::Key(0);
+    }
+}
+
+char HbAutoTest::keyToAscii(Qt::Key key)
+{
+    switch (key) {
+    case Qt::Key_Backspace: return 0x8; //BS
+    case Qt::Key_Tab: return 0x09; // HT
+    case Qt::Key_Backtab: return 0x0b; // VT
+    case Qt::Key_Enter:
+    case Qt::Key_Return: return 0x0d; // CR
+    case Qt::Key_Escape: return 0x1b; // ESC
+    case Qt::Key_Space: return 0x20;        // 7 bit printable ASCII
+    case Qt::Key_Exclam: return 0x21;
+    case Qt::Key_QuoteDbl: return 0x22;
+    case Qt::Key_NumberSign: return 0x23;
+    case Qt::Key_Dollar: return 0x24;
+    case Qt::Key_Percent: return 0x25;
+    case Qt::Key_Ampersand: return 0x26;
+    case Qt::Key_Apostrophe: return 0x27;
+    case Qt::Key_ParenLeft: return 0x28;
+    case Qt::Key_ParenRight: return 0x29;
+    case Qt::Key_Asterisk: return 0x2a;
+    case Qt::Key_Plus: return 0x2b;
+    case Qt::Key_Comma: return 0x2c;
+    case Qt::Key_Minus: return 0x2d;
+    case Qt::Key_Period: return 0x2e;
+    case Qt::Key_Slash: return 0x2f;
+    case Qt::Key_0: return 0x30;
+    case Qt::Key_1: return 0x31;
+    case Qt::Key_2: return 0x32;
+    case Qt::Key_3: return 0x33;
+    case Qt::Key_4: return 0x34;
+    case Qt::Key_5: return 0x35;
+    case Qt::Key_6: return 0x36;
+    case Qt::Key_7: return 0x37;
+    case Qt::Key_8: return 0x38;
+    case Qt::Key_9: return 0x39;
+    case Qt::Key_Colon: return 0x3a;
+    case Qt::Key_Semicolon: return 0x3b;
+    case Qt::Key_Less: return 0x3c;
+    case Qt::Key_Equal: return 0x3d;
+    case Qt::Key_Greater: return 0x3e;
+    case Qt::Key_Question: return 0x3f;
+    case Qt::Key_At: return 0x40;
+    case Qt::Key_A: return 0x61; // 0x41 == 'A', 0x61 == 'a'
+    case Qt::Key_B: return 0x62;
+    case Qt::Key_C: return 0x63;
+    case Qt::Key_D: return 0x64;
+    case Qt::Key_E: return 0x65;
+    case Qt::Key_F: return 0x66;
+    case Qt::Key_G: return 0x67;
+    case Qt::Key_H: return 0x68;
+    case Qt::Key_I: return 0x69;
+    case Qt::Key_J: return 0x6a;
+    case Qt::Key_K: return 0x6b;
+    case Qt::Key_L: return 0x6c;
+    case Qt::Key_M: return 0x6d;
+    case Qt::Key_N: return 0x6e;
+    case Qt::Key_O: return 0x6f;
+    case Qt::Key_P: return 0x70;
+    case Qt::Key_Q: return 0x71;
+    case Qt::Key_R: return 0x72;
+    case Qt::Key_S: return 0x73;
+    case Qt::Key_T: return 0x74;
+    case Qt::Key_U: return 0x75;
+    case Qt::Key_V: return 0x76;
+    case Qt::Key_W: return 0x77;
+    case Qt::Key_X: return 0x78;
+    case Qt::Key_Y: return 0x79;
+    case Qt::Key_Z: return 0x7a;
+    case Qt::Key_BracketLeft: return 0x5b;
+    case Qt::Key_Backslash: return 0x5c;
+    case Qt::Key_BracketRight: return 0x5d;
+    case Qt::Key_AsciiCircum: return 0x5e;
+    case Qt::Key_Underscore: return 0x5f;
+    case Qt::Key_QuoteLeft: return 0x60;
+
+    case Qt::Key_BraceLeft: return 0x7b;
+    case Qt::Key_Bar: return 0x7c;
+    case Qt::Key_BraceRight: return 0x7d;
+    case Qt::Key_AsciiTilde: return 0x7e;
+
+    case Qt::Key_Delete: return 0;
+    case Qt::Key_Insert: return 0; // = 0x1006,
+    case Qt::Key_Pause: return 0; // = 0x1008,
+    case Qt::Key_Print: return 0; // = 0x1009,
+    case Qt::Key_SysReq: return 0; // = 0x100a,
+
+    case Qt::Key_Clear: return 0; // = 0x100b,
+
+    case Qt::Key_Home: return 0; // = 0x1010,        // cursor movement
+    case Qt::Key_End: return 0; // = 0x1011,
+    case Qt::Key_Left: return 0; // = 0x1012,
+    case Qt::Key_Up: return 0; // = 0x1013,
+    case Qt::Key_Right: return 0; // = 0x1014,
+    case Qt::Key_Down: return 0; // = 0x1015,
+    case Qt::Key_PageUp: return 0; // = 0x1016,
+    case Qt::Key_PageDown: return 0; // = 0x1017,
+    case Qt::Key_Shift: return 0; // = 0x1020,        // modifiers
+    case Qt::Key_Control: return 0; // = 0x1021,
+    case Qt::Key_Meta: return 0; // = 0x1022,
+    case Qt::Key_Alt: return 0; // = 0x1023,
+    case Qt::Key_CapsLock: return 0; // = 0x1024,
+    case Qt::Key_NumLock: return 0; // = 0x1025,
+    case Qt::Key_ScrollLock: return 0; // = 0x1026,
+    case Qt::Key_F1: return 0; // = 0x1030,        // function keys
+    case Qt::Key_F2: return 0; // = 0x1031,
+    case Qt::Key_F3: return 0; // = 0x1032,
+    case Qt::Key_F4: return 0; // = 0x1033,
+    case Qt::Key_F5: return 0; // = 0x1034,
+    case Qt::Key_F6: return 0; // = 0x1035,
+    case Qt::Key_F7: return 0; // = 0x1036,
+    case Qt::Key_F8: return 0; // = 0x1037,
+    case Qt::Key_F9: return 0; // = 0x1038,
+    case Qt::Key_F10: return 0; // = 0x1039,
+    case Qt::Key_F11: return 0; // = 0x103a,
+    case Qt::Key_F12: return 0; // = 0x103b,
+    case Qt::Key_F13: return 0; // = 0x103c,
+    case Qt::Key_F14: return 0; // = 0x103d,
+    case Qt::Key_F15: return 0; // = 0x103e,
+    case Qt::Key_F16: return 0; // = 0x103f,
+    case Qt::Key_F17: return 0; // = 0x1040,
+    case Qt::Key_F18: return 0; // = 0x1041,
+    case Qt::Key_F19: return 0; // = 0x1042,
+    case Qt::Key_F20: return 0; // = 0x1043,
+    case Qt::Key_F21: return 0; // = 0x1044,
+    case Qt::Key_F22: return 0; // = 0x1045,
+    case Qt::Key_F23: return 0; // = 0x1046,
+    case Qt::Key_F24: return 0; // = 0x1047,
+    case Qt::Key_F25: return 0; // = 0x1048,        // F25 .. F35 only on X11
+    case Qt::Key_F26: return 0; // = 0x1049,
+    case Qt::Key_F27: return 0; // = 0x104a,
+    case Qt::Key_F28: return 0; // = 0x104b,
+    case Qt::Key_F29: return 0; // = 0x104c,
+    case Qt::Key_F30: return 0; // = 0x104d,
+    case Qt::Key_F31: return 0; // = 0x104e,
+    case Qt::Key_F32: return 0; // = 0x104f,
+    case Qt::Key_F33: return 0; // = 0x1050,
+    case Qt::Key_F34: return 0; // = 0x1051,
+    case Qt::Key_F35: return 0; // = 0x1052,
+    case Qt::Key_Super_L: return 0; // = 0x1053,        // extra keys
+    case Qt::Key_Super_R: return 0; // = 0x1054,
+    case Qt::Key_Menu: return 0; // = 0x1055,
+    case Qt::Key_Hyper_L: return 0; // = 0x1056,
+    case Qt::Key_Hyper_R: return 0; // = 0x1057,
+    case Qt::Key_Help: return 0; // = 0x1058,
+    case Qt::Key_Direction_L: return 0; // = 0x1059,
+    case Qt::Key_Direction_R: return 0; // = 0x1060,
+
+    // Latin 1 codes adapted from X: keysymdef.h,v 1.21 94/08/28 16:17:06
+    case Qt::Key_nobreakspace: return char(0xa0);
+    case Qt::Key_exclamdown: return char(0xa1);
+    case Qt::Key_cent: return char(0xa2);
+    case Qt::Key_sterling: return char(0xa3);
+    case Qt::Key_currency: return char(0xa4);
+    case Qt::Key_yen: return char(0xa5);
+    case Qt::Key_brokenbar: return char(0xa6);
+    case Qt::Key_section: return char(0xa7);
+    case Qt::Key_diaeresis: return char(0xa8);
+    case Qt::Key_copyright: return char(0xa9);
+    case Qt::Key_ordfeminine: return char(0xaa);
+    case Qt::Key_guillemotleft: return char(0xab); // left angle quotation mar
+    case Qt::Key_notsign: return char(0xac);
+    case Qt::Key_hyphen: return char(0xad);
+    case Qt::Key_registered: return char(0xae);
+    case Qt::Key_macron: return char(0xaf);
+    case Qt::Key_degree: return char(0xb0);
+    case Qt::Key_plusminus: return char(0xb1);
+    case Qt::Key_twosuperior: return char(0xb2);
+    case Qt::Key_threesuperior: return char(0xb3);
+    case Qt::Key_acute: return char(0xb4);
+    case Qt::Key_mu: return char(0xb5);
+    case Qt::Key_paragraph: return char(0xb6);
+    case Qt::Key_periodcentered: return char(0xb7);
+    case Qt::Key_cedilla: return char(0xb8);
+    case Qt::Key_onesuperior: return char(0xb9);
+    case Qt::Key_masculine: return char(0xba);
+    case Qt::Key_guillemotright: return char(0xbb); // right angle quotation mar
+    case Qt::Key_onequarter: return char(0xbc);
+    case Qt::Key_onehalf: return char(0xbd);
+    case Qt::Key_threequarters: return char(0xbe);
+    case Qt::Key_questiondown: return char(0xbf);
+    case Qt::Key_Agrave: return char(0xc0);
+    case Qt::Key_Aacute: return char(0xc1);
+    case Qt::Key_Acircumflex: return char(0xc2);
+    case Qt::Key_Atilde: return char(0xc3);
+    case Qt::Key_Adiaeresis: return char(0xc4);
+    case Qt::Key_Aring: return char(0xe5);
+    case Qt::Key_AE: return char(0xe6);
+    case Qt::Key_Ccedilla: return char(0xc7);
+    case Qt::Key_Egrave: return char(0xc8);
+    case Qt::Key_Eacute: return char(0xc9);
+    case Qt::Key_Ecircumflex: return char(0xca);
+    case Qt::Key_Ediaeresis: return char(0xcb);
+    case Qt::Key_Igrave: return char(0xcc);
+    case Qt::Key_Iacute: return char(0xcd);
+    case Qt::Key_Icircumflex: return char(0xce);
+    case Qt::Key_Idiaeresis: return char(0xcf);
+    case Qt::Key_ETH: return char(0xd0);
+    case Qt::Key_Ntilde: return char(0xd1);
+    case Qt::Key_Ograve: return char(0xd2);
+    case Qt::Key_Oacute: return char(0xd3);
+    case Qt::Key_Ocircumflex: return char(0xd4);
+    case Qt::Key_Otilde: return char(0xd5);
+    case Qt::Key_Odiaeresis: return char(0xd6);
+    case Qt::Key_multiply: return char(0xd7);
+    case Qt::Key_Ooblique: return char(0xf8);
+    case Qt::Key_Ugrave: return char(0xd9);
+    case Qt::Key_Uacute: return char(0xda);
+    case Qt::Key_Ucircumflex: return char(0xdb);
+    case Qt::Key_Udiaeresis: return char(0xdc);
+    case Qt::Key_Yacute: return char(0xdd);
+    case Qt::Key_THORN: return char(0xde);
+    case Qt::Key_ssharp: return char(0xdf);
+    case Qt::Key_division: return char(0xf7);
+    case Qt::Key_ydiaeresis: return char(0xff);
+
+    // multimedia/internet keys - ignored by default - see QKeyEvent c'tor
+
+    case Qt::Key_Back : return 0; // = 0x1061,
+    case Qt::Key_Forward : return 0; // = 0x1062,
+    case Qt::Key_Stop : return 0; // = 0x1063,
+    case Qt::Key_Refresh : return 0; // = 0x1064,
+
+    case Qt::Key_VolumeDown: return 0; // = 0x1070,
+    case Qt::Key_VolumeMute : return 0; // = 0x1071,
+    case Qt::Key_VolumeUp: return 0; // = 0x1072,
+    case Qt::Key_BassBoost: return 0; // = 0x1073,
+    case Qt::Key_BassUp: return 0; // = 0x1074,
+    case Qt::Key_BassDown: return 0; // = 0x1075,
+    case Qt::Key_TrebleUp: return 0; // = 0x1076,
+    case Qt::Key_TrebleDown: return 0; // = 0x1077,
+
+    case Qt::Key_MediaPlay : return 0; // = 0x1080,
+    case Qt::Key_MediaStop : return 0; // = 0x1081,
+    case Qt::Key_MediaPrevious : return 0; // = 0x1082,
+    case Qt::Key_MediaNext : return 0; // = 0x1083,
+    case Qt::Key_MediaRecord: return 0; // = 0x1084,
+
+    case Qt::Key_HomePage : return 0; // = 0x1090,
+    case Qt::Key_Favorites : return 0; // = 0x1091,
+    case Qt::Key_Search : return 0; // = 0x1092,
+    case Qt::Key_Standby: return 0; // = 0x1093,
+    case Qt::Key_OpenUrl: return 0; // = 0x1094,
+
+    case Qt::Key_LaunchMail : return 0; // = 0x10a0,
+    case Qt::Key_LaunchMedia: return 0; // = 0x10a1,
+    case Qt::Key_Launch0 : return 0; // = 0x10a2,
+    case Qt::Key_Launch1 : return 0; // = 0x10a3,
+    case Qt::Key_Launch2 : return 0; // = 0x10a4,
+    case Qt::Key_Launch3 : return 0; // = 0x10a5,
+    case Qt::Key_Launch4 : return 0; // = 0x10a6,
+    case Qt::Key_Launch5 : return 0; // = 0x10a7,
+    case Qt::Key_Launch6 : return 0; // = 0x10a8,
+    case Qt::Key_Launch7 : return 0; // = 0x10a9,
+    case Qt::Key_Launch8 : return 0; // = 0x10aa,
+    case Qt::Key_Launch9 : return 0; // = 0x10ab,
+    case Qt::Key_LaunchA : return 0; // = 0x10ac,
+    case Qt::Key_LaunchB : return 0; // = 0x10ad,
+    case Qt::Key_LaunchC : return 0; // = 0x10ae,
+    case Qt::Key_LaunchD : return 0; // = 0x10af,
+    case Qt::Key_LaunchE : return 0; // = 0x10b0,
+    case Qt::Key_LaunchF : return 0; // = 0x10b1,
+
+    default: QTEST_ASSERT(false); return 0;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/tsrc/ut/hbautotest.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,279 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef HBAUTOTEST_H
+#define HBAUTOTEST_H
+
+#include <hbnamespace.h>
+#include <hbmainwindow.h>
+#include <QtTest/QtTest>
+
+class HbMainWindow;
+class HbWidget;
+class HbAutoTestMainWindow;
+class HbAutoTest;
+class HbAutoTestMouseEvent; 
+/*
+INSTRUCTIONS:
+The class HbAutoTest is meant to be used with Orbit applications auto testing instead of GUI testing APIs of QTestLib.
+
+The functions of this class is to used similarily to the related QTestLib functions.
+
+Use HbAutoTestMainWindow (defined below) instead of HbMainWindow to enble filtering.
+Filterin filters out UI events that are not sent by function defined in HbAutoTest class.
+
+*/
+
+class HbAutoTestMouseEvent : public QMouseEvent
+{
+public:
+    HbAutoTestMouseEvent(Type type, const QPoint & pos, const QPoint & globalPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers ) 
+        : QMouseEvent(type,pos,globalPos,button,buttons,modifiers){}
+};
+
+class HbAutoTestKeyEvent : public QKeyEvent
+{
+public:
+        HbAutoTestKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, const QString& text = QString(),
+              bool autorep = false, ushort count = 1 ) 
+        : QKeyEvent(type, key, modifiers, text, autorep, count){}
+};
+
+class HbAutoTest 
+{
+public:
+    
+    static void mouseMove (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos = QPointF(), int delay = -1 );
+    static void mousePress (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos = QPointF(), int delay = -1);
+    static void mouseRelease (HbAutoTestMainWindow *window, HbWidget *widget, QPointF pos = QPointF(), int delay = -1);
+    static void mouseClick (HbAutoTestMainWindow *window, const HbWidget *widget, QPointF pos = QPointF(), int delay = -1);
+   
+private:
+    static void drag(HbAutoTestMainWindow *window, QPointF targetPoint);
+    static QPointF middlePointOfWidget( const HbWidget* widget);
+
+    static bool pointerPressed;
+    static QPointF pressPoint;
+
+//Key event Part: copy-pasted from QTestLib and modified to support HbAutoTestKeyEvent to enable filtering.
+//see HbAutoTestMainWindow below.
+public:
+    
+    static Qt::Key asciiToKey(char ascii);
+    static char keyToAscii(Qt::Key key);
+
+    static void simulateEvent(QWidget *widget, bool press, int code,
+                              Qt::KeyboardModifiers modifier, QString text, bool repeat, int delay=-1);
+
+    static void sendKeyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key code,
+                             QString text, Qt::KeyboardModifiers modifier, int delay=-1);    
+
+    static void sendKeyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key code,
+                             char ascii, Qt::KeyboardModifiers modifier, int delay=-1);
+
+    static void keyEvent(QTest::KeyAction action, QWidget *widget, char ascii,
+                                Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+ 
+    static void keyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key key,
+                                Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+
+    static void keyClicks(QWidget *widget, const QString &sequence,
+                                 Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+
+    static void keyPress(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+    
+    static void keyRelease(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+    
+    static void keyClick(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+    
+    static void keyPress(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+   
+    static void keyRelease(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+
+    static void keyClick(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay=-1);
+};
+
+class HbTestEvent
+{
+public:
+    virtual void simulate(QWidget *w) = 0;
+    virtual HbTestEvent *clone() const = 0;
+
+    virtual ~HbTestEvent() {}
+};
+
+class HbTestKeyEvent: public HbTestEvent
+{
+public:
+    inline HbTestKeyEvent(QTest::KeyAction action, Qt::Key key, Qt::KeyboardModifiers modifiers, int delay)
+        : _action(action), _delay(delay), _modifiers(modifiers), _ascii(0), _key(key) {}
+    inline HbTestKeyEvent(QTest::KeyAction action, char ascii, Qt::KeyboardModifiers modifiers, int delay)
+        : _action(action), _delay(delay), _modifiers(modifiers),
+          _ascii(ascii), _key(Qt::Key_unknown) {}
+    inline HbTestEvent *clone() const { return new HbTestKeyEvent(*this); }
+
+    inline void simulate(QWidget *w)
+    {
+        if (_ascii == 0)
+            HbAutoTest::keyEvent(_action, w, _key, _modifiers, _delay);
+        else
+            HbAutoTest::keyEvent(_action, w, _ascii, _modifiers, _delay);
+    } 
+
+protected:
+    QTest::KeyAction _action;
+    int _delay;
+    Qt::KeyboardModifiers _modifiers;
+    char _ascii;
+    Qt::Key _key;
+};
+
+class HbTestKeyClicksEvent: public HbTestEvent
+{
+public:
+    inline HbTestKeyClicksEvent(const QString &keys, Qt::KeyboardModifiers modifiers, int delay)
+        : _keys(keys), _modifiers(modifiers), _delay(delay) {}
+    inline HbTestEvent *clone() const { return new HbTestKeyClicksEvent(*this); }
+
+    inline void simulate(QWidget *w)
+    {
+        HbAutoTest::keyClicks(w, _keys, _modifiers, _delay);
+    }
+
+private:
+    QString _keys;
+    Qt::KeyboardModifiers _modifiers;
+    int _delay;
+};
+
+class HbTestDelayEvent: public HbTestEvent
+{
+public:
+    inline HbTestDelayEvent(int msecs): _delay(msecs) {}
+    inline HbTestEvent *clone() const { return new HbTestDelayEvent(*this); }
+
+    inline void simulate(QWidget * /*w*/) { QTest::qWait(_delay); }
+
+private:
+    int _delay;
+};
+
+class HbTestEventList: public QList<HbTestEvent *>
+{
+public:
+    inline HbTestEventList() {}
+    inline HbTestEventList(const HbTestEventList &other): QList<HbTestEvent *>()
+    { for (int i = 0; i < other.count(); ++i) append(other.at(i)->clone()); }
+    inline ~HbTestEventList()
+    { clear(); }
+    inline void clear()
+    { qDeleteAll(*this); QList<HbTestEvent *>::clear(); }
+
+    inline void addKeyClick(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Click, qtKey, modifiers, msecs); }
+    inline void addKeyPress(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Press, qtKey, modifiers, msecs); }
+    inline void addKeyRelease(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Release, qtKey, modifiers, msecs); }
+    inline void addKeyEvent(QTest::KeyAction action, Qt::Key qtKey,
+                            Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { append(new HbTestKeyEvent(action, qtKey, modifiers, msecs)); }
+
+    inline void addKeyClick(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Click, ascii, modifiers, msecs); }
+    inline void addKeyPress(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Press, ascii, modifiers, msecs); }
+    inline void addKeyRelease(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { addKeyEvent(QTest::Release, ascii, modifiers, msecs); }
+    inline void addKeyClicks(const QString &keys, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { append(new HbTestKeyClicksEvent(keys, modifiers, msecs)); }
+    inline void addKeyEvent(QTest::KeyAction action, char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
+    { append(new HbTestKeyEvent(action, ascii, modifiers, msecs)); }
+
+    inline void addDelay(int msecs)
+    { append(new HbTestDelayEvent(msecs)); }
+
+    inline void simulate(QWidget *w)
+    {
+        for (int i = 0; i < count(); ++i)
+            at(i)->simulate(w);
+    }
+};
+
+class HbAutoTestMainWindow : public HbMainWindow
+{
+public:
+    HbAutoTestMainWindow() : HbMainWindow() {}
+    
+    void mousePressEvent(QMouseEvent *event)
+    {
+        qDebug(
+            "HbAutoTestMainWindow::mousePressEvent: x(%d) y(%d)",
+            event->x(),
+            event->y());
+         if ( dynamic_cast<HbAutoTestMouseEvent *>(event) ) {
+                HbMainWindow::mousePressEvent(event);
+            } else {
+                ;//Do nothing 
+         }
+    }
+
+    void mouseMoveEvent(QMouseEvent *event)
+    {
+        if ( dynamic_cast<HbAutoTestMouseEvent *>(event) ) {
+                HbMainWindow::mouseMoveEvent(event);
+            } else {
+                ;//Do nothing
+         }
+    }
+
+    void mouseReleaseEvent(QMouseEvent *event)
+    {
+         if ( dynamic_cast<HbAutoTestMouseEvent *>(event) ) {
+                HbMainWindow::mouseReleaseEvent(event);
+            } else {
+                ;//Do nothing  
+         }
+    }
+
+    void keyPressEvent(QKeyEvent *event)
+    {
+        if ( dynamic_cast<HbAutoTestKeyEvent *>(event) ) {
+                HbMainWindow::keyPressEvent(event);
+            } else {
+                ;//Do nothing  
+         }
+    }
+    void keyReleaseEvent(QKeyEvent *event)
+    {
+        if ( dynamic_cast<HbAutoTestKeyEvent *>(event) ) {
+                HbMainWindow::keyReleaseEvent(event);
+            } else {
+                ;//Do nothing  
+         }
+    }
+
+    void mouseDoubleClickEvent(QMouseEvent *event)
+    {
+        Q_UNUSED(event);
+        //Just ignore, not supported in Orbit
+    }
+};
+
+
+Q_DECLARE_METATYPE(HbTestEventList)
+#endif //HBAUTOTEST_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/tsrc/ut/testcpwlanapplugin.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,560 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel WLAN AP plugin unit testing.
+*/
+
+#include <HbApplication>
+#include <HbMainWindow>
+#include <HbView>
+#include <HbDialog>
+#include <HbRadioButtonList>
+#include <HbAction>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbDataFormModelItem>
+#include <QtTest/QtTest>
+#include <cpbearerapplugininterface.h>
+#include <cmmanager_shim.h>
+#include <cmconnectionmethod_shim.h>
+
+#include "cpwlanapview.h"
+
+#include "hbautotest.h"
+#include "testcpwlanapplugin.h"
+
+// Following flag must be defined if WLAN security settings plugins
+// (WEP, WPA/WPA2 and WPA2) are available. Flag can be removed when the
+// plugins are released.
+#define WLAN_SECURITY_PLUGINS_AVAILABLE
+
+// -----------------------------------------------------------------------------
+// STATIC TEST DATA
+// -----------------------------------------------------------------------------
+
+// Connection method (AP) ID used for testing
+static const uint testApId = 5;
+
+static const QString pluginDir =
+    "\\resource\\qt\\plugins\\controlpanel\\bearerap";
+
+static const QString pluginName = "cpwlanapplugin.dll";
+
+// Time to wait before continuing after an UI step
+static const int waitTime = 10;
+
+// UI coordinates
+static const QPoint connectionNameLabel(175, 70);
+
+static const QPoint connectionNameLineEdit(330, 110);
+
+static const QPoint wlanNetworkNameLineEdit(330, 190);
+
+static const QPoint networkStatusComboBox(175, 270);
+static const QPoint networkStatusPublic(175, 325);
+static const QPoint networkStatusHidden(175, 375);
+
+static const QPoint networkModeComboBox(175, 365);
+static const QPoint networkModeIntrastructure(175, 415);
+static const QPoint networkModeAdHoc(175, 465);
+
+static const QPoint securityModeComboBox(175, 460);
+#ifndef WLAN_SECURITY_PLUGINS_AVAILABLE
+static const QPoint securityModeOpen(175, 510);
+#else
+static const QPoint securityModeOpen(175, 260);
+static const QPoint securityModeWep(175, 305);
+static const QPoint securityModeWpaWpa2(175, 355);
+static const QPoint securityModeWpa2(175, 405);
+#endif
+
+static const QPoint homepageLineEdit(330, 545);
+
+static const QPoint messageBoxOkButton(170, 320);
+
+// -----------------------------------------------------------------------------
+// FRAMEWORK FUNCTIONS
+// -----------------------------------------------------------------------------
+
+/**
+ * Test main function. Runs all test cases.
+ */
+#ifndef TESTCMAPPLSETTINGSUI_NO_OUTPUT_REDIRECT
+int main(int argc, char *argv[])
+{
+    HbApplication app(argc, argv);
+    app.setApplicationName("TestCpWlanApPlugin");
+    
+    char *pass[3];  
+    pass[0] = argv[0];
+    pass[1] = "-o"; 
+    pass[2] = "c:\\data\\TestCpWlanApPlugin.txt";
+ 
+    TestCpWlanApPlugin tc;
+    int res = QTest::qExec(&tc, 3, pass);
+ 
+    return res;
+}
+#else
+QTEST_MAIN(TestCpWlanApPlugin)
+#endif
+
+/**
+ * This function is be called before the first test case is executed.
+ */
+void TestCpWlanApPlugin::initTestCase()
+{
+    mMainWindow = new HbAutoTestMainWindow;
+    //mMainWindow = new HbMainWindow;
+    mMainWindow->show();
+    
+    // Load plugin
+    QDir dir(pluginDir);
+    QPluginLoader loader(dir.absoluteFilePath(pluginName));
+    mPlugin = qobject_cast<CpBearerApPluginInterface *>(loader.instance());
+    QVERIFY(mPlugin != NULL);
+    
+    // Verify plugin bearer type
+    QVERIFY(mPlugin->bearerType() == CMManagerShim::BearerTypeWlan);
+    
+    // Create WLAN settings view (connection method ID given)
+    subCreateSettingsView(testApId);
+}
+
+/**
+ * This function is be called after the last test case was executed.
+ */
+void TestCpWlanApPlugin::cleanupTestCase()
+{
+    delete mMainWindow;
+    mMainWindow = 0;
+}
+
+/**
+ * This function is be called before each test case is executed.
+ */
+void TestCpWlanApPlugin::init()
+{
+    QTest::qWait(1000);
+}
+
+/**
+ * This function is be called after each test case is executed.
+ */
+void TestCpWlanApPlugin::cleanup()
+{
+}
+
+// -----------------------------------------------------------------------------
+// TEST CASES
+// -----------------------------------------------------------------------------
+
+/**
+ * Tests changing of connection name.
+ */
+void TestCpWlanApPlugin::tcChangeConnectionName()
+{
+    QFETCH(QString, string);
+    QFETCH(QString, result);
+    
+    HbAutoTest::mouseClick(mMainWindow, mTestView, connectionNameLineEdit);
+    
+    // Erase old string
+    subClearLineEdit(CMManagerShim::CmNameLength);
+    
+    // Enter new string
+    HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+    HbAutoTest::mouseClick(mMainWindow, mTestView, connectionNameLabel);
+
+    // Verify both commsdat and UI widget
+    subVerifyString(
+        CMManagerShim::CmName,
+        mTestView->mConnectionNameItem,
+        result);
+}
+
+/**
+ * Test data for connection name change test case.
+ */
+void TestCpWlanApPlugin::tcChangeConnectionName_data()
+{
+    QTest::addColumn<QString>("string");
+    QTest::addColumn<QString>("result");
+    
+    QTest::newRow("maximum length")
+        << "really long name 1234567890123"
+        << "really long name 1234567890123";
+    QTest::newRow("too long")
+        << "too long name 123456789012345678901234567890"
+        << "too long name 1234567890123456";
+    QTest::newRow("basic") // last one must always fit on one line in UI
+        << "test WLAN AP"
+        << "test WLAN AP";
+}
+
+/**
+ * Tests that empty connection name is not accepted.
+ */
+void TestCpWlanApPlugin::tcConnectionNameEmpty()
+{
+    QString previous = 
+        mTestView->mConnectionNameItem->contentWidgetData("text").toString();
+    
+    HbAutoTest::mouseClick(mMainWindow, mTestView, connectionNameLineEdit);    
+    // Erase old string
+    subClearLineEdit(CMManagerShim::CmNameLength);
+    
+    HbAutoTest::mouseClick(mMainWindow, mTestView, connectionNameLabel);
+
+    QTest::qWait(100);
+    // Dismiss messagebox
+    HbAutoTest::mouseClick(mMainWindow, mTestView, messageBoxOkButton);
+    
+    // Verify both commsdat and UI widget
+    subVerifyString(
+        CMManagerShim::CmName,
+        mTestView->mConnectionNameItem,
+        previous);
+}
+
+/**
+ * Tests changing of WLAN network name.
+ */
+void TestCpWlanApPlugin::tcChangeWlanNetworkName()
+{
+    QFETCH(QString, string);
+    QFETCH(QString, result);
+    
+    HbAutoTest::mouseClick(mMainWindow, mTestView, wlanNetworkNameLineEdit);
+    
+    // Erase old string
+    subClearLineEdit(CMManagerShim::WlanSSIDLength);
+    
+    // Enter new string
+    HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+    HbAutoTest::mouseClick(mMainWindow, mTestView, connectionNameLabel);
+
+    // Verify both commsdat and UI widget
+    subVerifyString(
+        CMManagerShim::WlanSSID,
+        mTestView->mWlanNetworkNameItem,
+        result);
+}
+
+/**
+ * Test data for WLAN network name change test case.
+ */
+void TestCpWlanApPlugin::tcChangeWlanNetworkName_data()
+{
+    QTest::addColumn<QString>("string");
+    QTest::addColumn<QString>("result");
+    
+    QTest::newRow("maximum length")
+        << "really long name 123456789012345"
+        << "really long name 123456789012345";
+    QTest::newRow("too long")
+        << "too long name 123456789012345678901234567890"
+        << "too long name 123456789012345678";
+    QTest::newRow("basic") // last one must always fit on one line in UI
+        << "test SSID"
+        << "test SSID";
+}
+
+/**
+ * Tests that empty WLAN network name is not accepted.
+ */
+void TestCpWlanApPlugin::tcWlanNetworkNameEmpty()
+{
+    QString previous = 
+        mTestView->mWlanNetworkNameItem->contentWidgetData("text").toString();
+    
+    HbAutoTest::mouseClick(mMainWindow, mTestView, wlanNetworkNameLineEdit);
+    
+    // Erase old string
+    subClearLineEdit(CMManagerShim::WlanSSIDLength);
+    
+    HbAutoTest::mouseClick(mMainWindow, mTestView, connectionNameLabel);
+
+    QTest::qWait(100);
+    // Dismiss messagebox
+    HbAutoTest::mouseClick(mMainWindow, mTestView, messageBoxOkButton);
+    
+    // Verify both commsdat and UI widget
+    subVerifyString(
+        CMManagerShim::WlanSSID,
+        mTestView->mWlanNetworkNameItem,
+        previous);
+}
+
+/**
+ * Tests changing of WLAN network status.
+ */
+void TestCpWlanApPlugin::tcChangeNetworkStatus()
+{
+    // Set network status to hidden
+    HbAutoTest::mouseClick(mMainWindow, mTestView, networkStatusComboBox, 100);
+    HbAutoTest::mouseClick(mMainWindow, mTestView, networkStatusHidden, 100);
+    subVerifyNetworkStatus(HiddenStatus);
+
+    // Set network status to public
+    HbAutoTest::mouseClick(mMainWindow, mTestView, networkStatusComboBox, 100);
+    HbAutoTest::mouseClick(mMainWindow, mTestView, networkStatusPublic, 100);
+    subVerifyNetworkStatus(PublicStatus);
+}
+
+/**
+ * Tests changing of WLAN network mode.
+ */
+void TestCpWlanApPlugin::tcChangeNetworkMode()
+{
+    // Set network mode to ad-hoc
+    HbAutoTest::mouseClick(mMainWindow, mTestView, networkModeComboBox, 100);
+    HbAutoTest::mouseClick(mMainWindow, mTestView, networkModeAdHoc, 100);
+    subVerifyUint(CMManagerShim::WlanConnectionMode, CMManagerShim::Adhoc);
+
+    // Set network mode to infrastructure
+    HbAutoTest::mouseClick(mMainWindow, mTestView, networkModeComboBox, 100);
+    HbAutoTest::mouseClick(mMainWindow, mTestView, networkModeIntrastructure, 100);
+    subVerifyUint(CMManagerShim::WlanConnectionMode, CMManagerShim::Infra);
+}
+
+/**
+ * Tests changing of WLAN security mode.
+ */
+void TestCpWlanApPlugin::tcChangeSecurityMode()
+{
+#ifdef WLAN_SECURITY_PLUGINS_AVAILABLE
+    // Ensure security mode is open
+    HbAutoTest::mouseClick(mMainWindow, mTestView, securityModeComboBox, 100);
+    QTest::qWait(100);
+    HbAutoTest::mouseClick(mMainWindow, mTestView, securityModeOpen, 100);
+    subVerifyUint(
+        CMManagerShim::WlanSecurityMode,
+        CMManagerShim::WlanSecModeOpen);
+
+    QTest::qWait(1000);
+
+    // Set security mode to WEP
+    HbAutoTest::mouseClick(mMainWindow, mTestView, securityModeComboBox, 100);
+    QTest::qWait(100);
+    HbAutoTest::mouseClick(mMainWindow, mTestView, securityModeWep, 100);
+    subVerifyUint(
+        CMManagerShim::WlanSecurityMode,
+        CMManagerShim::WlanSecModeWep);
+    
+    QTest::qWait(1000);
+#endif
+    
+    // Set security mode to open
+    HbAutoTest::mouseClick(mMainWindow, mTestView, securityModeComboBox, 100);
+    QTest::qWait(100);
+    HbAutoTest::mouseClick(mMainWindow, mTestView, securityModeOpen, 100);
+    subVerifyUint(
+        CMManagerShim::WlanSecurityMode,
+        CMManagerShim::WlanSecModeOpen);
+}
+
+/**
+ * Tests changing of homepage.
+ */
+void TestCpWlanApPlugin::tcChangeHomepage()
+{
+    QFETCH(QString, string);
+    QFETCH(QString, result);
+    
+    HbAutoTest::mouseClick(mMainWindow, mTestView, homepageLineEdit);
+    
+    // Erase old string
+    QString text = mTestView->mHomepageItem->contentWidgetData("text").toString();
+    subClearLineEdit(text.size());
+    
+    // Enter new string
+    HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+    HbAutoTest::mouseClick(mMainWindow, mTestView, connectionNameLabel);
+
+    // Verify both commsdat and UI widget
+    subVerifyString(
+        CMManagerShim::CmStartPage,
+        mTestView->mHomepageItem,
+        result);
+}
+
+/**
+ * Test data for homepage change test case.
+ */
+void TestCpWlanApPlugin::tcChangeHomepage_data()
+{
+    QTest::addColumn<QString>("string");
+    QTest::addColumn<QString>("result");
+  
+// Doesn't work always, view goes blank sometimes, Orbit bug?
+//    QTest::newRow("long")
+//        << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html"
+//        << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html";
+    QTest::newRow("basic") // last one should always fit on one line in UI
+        << "http://www.symbian.org/"
+        << "http://www.symbian.org/";
+    QTest::newRow("empty")
+        << ""
+        << "";
+}
+
+/**
+ * Tests advanced settings view (which is currently empty).
+ */
+void TestCpWlanApPlugin::tcAdvancedSettings()
+{
+    // Launch advanced settings view
+    bool status = connect(
+        this,
+        SIGNAL(menuActionTriggered(HbAction *)),
+        mTestView,
+        SLOT(menuActionTriggered(HbAction *)));
+    Q_ASSERT(status);
+    emit menuActionTriggered(mTestView->mAdvancedSettingsAction);
+
+    QTest::qWait(2000);
+    
+    // Return from advanced settings view
+    subClickWidget("HbNavigationButton");
+}
+
+// -----------------------------------------------------------------------------
+// SUB TEST CASES
+// -----------------------------------------------------------------------------
+
+/**
+ * Verifies that given string is correctly stored in CommsDat and shown on UI. 
+ */
+void TestCpWlanApPlugin::subVerifyString(
+    CMManagerShim::ConnectionMethodAttribute attribute,
+    HbDataFormModelItem *item,
+    QString expected)
+{
+    // Read attribute value from CommsDat
+    QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
+    QScopedPointer<CmConnectionMethodShim> connectionMethod( 
+        cmManager->connectionMethod(testApId));
+    QString commsdat = connectionMethod->getStringAttribute(attribute);
+
+    QCOMPARE(commsdat, expected);
+
+    // Get value from UI widget
+    QString widget = item->contentWidgetData("text").toString();
+
+    QCOMPARE(widget, expected);
+}
+
+/**
+ * Verifies that given attribute contains expected integer value in CommsDat. 
+ */
+void TestCpWlanApPlugin::subVerifyUint(
+    CMManagerShim::ConnectionMethodAttribute attribute,
+    uint expected)
+{
+    // Read attribute value from CommsDat
+    QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
+    QScopedPointer<CmConnectionMethodShim> connectionMethod( 
+        cmManager->connectionMethod(testApId));
+    uint commsdat = connectionMethod->getIntAttribute(attribute);
+    
+    QCOMPARE(commsdat, expected);
+}
+
+/**
+ * Verifies that WLAN network status in CommsDat is correct.
+ */
+void TestCpWlanApPlugin::subVerifyNetworkStatus(
+    NetworkStatus expected)
+{
+    // Read attribute value from CommsDat
+    QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
+    QScopedPointer<CmConnectionMethodShim> connectionMethod( 
+        cmManager->connectionMethod(testApId));
+    bool commsdatScanSsid = connectionMethod->getBoolAttribute(
+        CMManagerShim::WlanScanSSID);
+    
+    if (expected == HiddenStatus) {
+        QVERIFY(commsdatScanSsid == true);
+    } else if (expected == PublicStatus) {
+        QVERIFY(commsdatScanSsid == false);
+    } else {
+        Q_ASSERT(false);
+    }
+}
+
+/**
+ * Clears a HbLineEdit.
+ */
+void TestCpWlanApPlugin::subClearLineEdit(
+    uint length)
+{
+    // Erase old string
+    QTest::qWait(5000); // TODO: Remove this when item specific menu doesn't pop up anymore
+
+    // Move cursor to end of string
+    //HbAutoTest::keyClick(mMainWindow, Qt::Key_End, 0, waitTime); // doesn't seem to do anything? 
+    HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
+    HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
+    HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
+    for (int i=0; i<25; i++) {
+        HbAutoTest::keyClick(mMainWindow, Qt::Key_Right, 0, waitTime);
+    }
+    for (int i=0; i<length; i++) {
+        HbAutoTest::keyClick(mMainWindow, Qt::Key_Backspace, 0, waitTime);
+    }
+}
+
+/**
+ * Creates the settings view and shows it.
+ */
+void TestCpWlanApPlugin::subCreateSettingsView(uint connectionMethodId)
+{
+    // Create settings view
+    HbView *view = mPlugin->createSettingView(connectionMethodId);
+    QVERIFY(view != NULL);
+    
+    // Display the view
+    mMainWindow->addView(view);
+    mMainWindow->setCurrentView(view);
+    // Store pointer to settings view class
+    mTestView = static_cast<CpWlanApView *>(view);    
+}
+
+/**
+ * Clicks a widget currently on UI by class name.
+ */
+void TestCpWlanApPlugin::subClickWidget(const QString &name)
+{
+    QList<QGraphicsItem *> itemList = mMainWindow->scene()->items();
+
+    QGraphicsItem *target = 0;
+    foreach (QGraphicsItem* item, itemList) {
+        if (item->isWidget()) {
+            QString widgetClassName(static_cast<QGraphicsWidget*>(item)->metaObject()->className());
+            //qDebug() << widgetClassName;
+            
+            if (widgetClassName == name) {
+                target = item;
+                break;
+            }
+        }
+    }
+
+    Q_ASSERT(target);
+    HbAutoTest::mouseClick(mMainWindow, static_cast<HbWidget *>(target));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/tsrc/ut/testcpwlanapplugin.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 2010 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:
+* Control Panel WLAN AP plugin unit testing.
+*/
+
+#include <QStringList>
+#include <QtTest/QtTest>
+#include <cmmanagerdefines_shim.h>
+
+class HbDialog;
+class HbMainWindow;
+class HbAutoTestMainWindow;
+class HbDataFormModelItem;
+class HbAction;
+class CpWlanApView;
+class CpBearerApPluginInterface;
+
+enum NetworkStatus {
+    HiddenStatus,
+    PublicStatus
+};
+
+class TestCpWlanApPlugin : public QObject
+{
+    Q_OBJECT
+
+    signals:
+        // Test signals
+        void menuActionTriggered(HbAction *);
+    
+    public slots:
+        // Test framework functions
+        void initTestCase();
+        void cleanupTestCase();
+        void init();
+        void cleanup();
+
+    private slots:
+        // Test cases
+        void tcChangeConnectionName();
+        void tcChangeConnectionName_data();
+        void tcConnectionNameEmpty();
+        void tcChangeWlanNetworkName();
+        void tcChangeWlanNetworkName_data();
+        void tcWlanNetworkNameEmpty();
+        void tcChangeNetworkStatus();
+        void tcChangeNetworkMode();
+        void tcChangeSecurityMode();
+        void tcChangeHomepage();
+        void tcChangeHomepage_data();
+        void tcAdvancedSettings();
+
+    private:
+        // Sub test cases
+        void subVerifyString(
+            CMManagerShim::ConnectionMethodAttribute attribute,
+            HbDataFormModelItem *item,
+            QString expected);
+        void subVerifyUint(
+            CMManagerShim::ConnectionMethodAttribute attribute,
+            uint expected);
+        void subVerifyNetworkStatus(
+            NetworkStatus expected);
+        void subClearLineEdit(uint length);
+        void subCreateSettingsView(uint connetionMethodId);
+        void subClickWidget(const QString &name);
+
+    private:
+        // Code references
+        CpWlanApView *mTestView;
+        
+        // Test data
+        HbAutoTestMainWindow *mMainWindow;
+        CpBearerApPluginInterface *mPlugin;
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/tsrc/ut/testcpwlanapplugin.pro	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,39 @@
+#
+# Copyright (c) 2010 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:
+# Project file for Control Panel WLAN AP plugin unit tests.
+
+TEMPLATE = app
+
+TARGET = testcpwlanapplugin
+
+CONFIG += hb qtestlib
+
+INCLUDEPATH += . ../../inc
+DEPENDPATH += .
+
+HEADERS += \
+    hbautotest.h \
+    testcpwlanapplugin.h
+SOURCES += \
+    hbautotest.cpp \
+    testcpwlanapplugin.cpp
+
+LIBS += \
+    -lcpwlanapplugin \
+    -lconnection_settings_shim
+
+symbian: {
+    TARGET.CAPABILITY = ALL -TCB
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/tsrc/ut/tools/commsdat_restore.bat	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,17 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem Script for restoring backup of commsdat.
+
+copy backup\cccccc00.cre \epoc32\winscw\c\private\10202be9\persists\cccccc00.cre
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/tsrc/ut/tools/commsdat_set.bat	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,19 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem Script for setting test commsdat.
+
+md backup
+copy \epoc32\winscw\c\private\10202be9\persists\cccccc00.cre backup\
+copy default.cre \epoc32\winscw\c\private\10202be9\persists\cccccc00.cre
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/tsrc/ut/tools/cpwlanapplugin_ctc.bat	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,89 @@
+::
+:: Copyright (c) 2010 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:
+:: Script running Control Panel WLAN AP plugin test cases with CTC analysis.
+
+@echo off
+
+:: -----------------------------------------------------------------------------
+:: Instructions
+:: -----------------------------------------------------------------------------
+:: 
+:: Remember to use the test CommsDat that can be set and restored with the
+:: helper scripts:
+:: - commsdat_set.bat
+:: - commsdat_restore.bat
+
+::-----------------------------------------------------------------------------
+:: Set the local variables
+::-----------------------------------------------------------------------------
+
+:: Control Panel WLAN AP plugin base directory
+set cpwlanapplugin_dir=..\..\..
+pushd %cpwlanapplugin_dir%
+
+:: CTC instrumentation excludes
+set ctc_excludes=-C EXCLUDE=* -C NO_EXCLUDE=src\*.cpp
+
+
+::-----------------------------------------------------------------------------
+:: Remove old coverage data
+::-----------------------------------------------------------------------------
+
+echo Cleaning up...
+del MON.* ctcerr.txt profile.txt
+rd /s /q CTCHTML
+echo ...done
+
+::-----------------------------------------------------------------------------
+:: Build & instrument code
+::-----------------------------------------------------------------------------
+
+echo Building code and instrumenting..
+call del MON.* ctcerr.txt profile.txt
+call make distclean
+call qmake
+call ctcwrap -i d -2comp %ctc_excludes% sbs -c winscw_udeb
+echo ...done
+
+::-----------------------------------------------------------------------------
+:: Build test code
+::-----------------------------------------------------------------------------
+
+echo Building test code...
+call cd tsrc\ut
+call make distclean
+call qmake
+call sbs -c winscw_udeb
+echo ...done
+
+::-----------------------------------------------------------------------------
+:: Execute the tests
+::-----------------------------------------------------------------------------
+
+echo Running tests..
+cd ..\..
+call \epoc32\release\winscw\udeb\testcpwlanapplugin.exe
+echo ...done
+
+::-----------------------------------------------------------------------------
+:: Create coverage results
+::-----------------------------------------------------------------------------
+
+echo Creating results...
+call ctcpost -p profile.txt
+call ctc2html -i profile.txt
+echo ...done
+
+popd
Binary file cmmanager/cpwlanapplugin/tsrc/ut/tools/default.cre has changed
--- a/connectionmonitoring/cellularindicatorplugin/inc/cellularindicatorplugin.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionmonitoring/cellularindicatorplugin/inc/cellularindicatorplugin.h	Mon May 03 12:53:07 2010 +0300
@@ -48,7 +48,7 @@
     
     // Access is allowed allways
     bool accessAllowed(const QString &indicatorType,
-                       const HbSecurityInfo *securityInfo) const;
+                       const QVariantMap &securityInfo) const;
     
     // Create indicator. Currently installs translation.
     HbIndicatorInterface* createIndicator(const QString &indicatorType);
--- a/connectionmonitoring/cellularindicatorplugin/src/cellularindicatorplugin.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionmonitoring/cellularindicatorplugin/src/cellularindicatorplugin.cpp	Mon May 03 12:53:07 2010 +0300
@@ -40,7 +40,7 @@
     CellularIndicatorPlugin::CellularIndicatorPlugin
  */
 CellularIndicatorPlugin::CellularIndicatorPlugin() :
-    HbIndicatorInterface(IndicatorType, GroupPriorityAverage,
+    HbIndicatorInterface(IndicatorType, SettingCategory,
         InteractionActivated),
     mError(0)
 {
@@ -73,7 +73,7 @@
     CellularIndicatorPlugin::accessAllowed
  */
 bool CellularIndicatorPlugin::accessAllowed(const QString &indicatorType,
-    const HbSecurityInfo *securityInfo) const
+    const QVariantMap &securityInfo) const
 {
     OstTraceFunctionEntry0( CELLULARINDICATORPLUGIN_ACCESSALLOWED_ENTRY );
     Q_UNUSED(indicatorType)
@@ -217,7 +217,6 @@
         }
         break;
 
-    case IconNameRole:
     case DecorationNameRole:
         // Return the icon
         ret = HbIcon("qtg_small_gprs");
--- a/connectionmonitoring/connectionview/inc/connectionview.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionmonitoring/connectionview/inc/connectionview.h	Mon May 03 12:53:07 2010 +0300
@@ -111,6 +111,9 @@
         /* Pointer to the main view of the window */
         HbView *mMainView;
         
+        /* Pointer to the secondary view of the window */
+        HbView *mNoConnView;
+        
         /* The main vertical layout which contains the group box container */
         QGraphicsLinearLayout* mMainLayout;
         
@@ -135,9 +138,6 @@
         /* The toolbar action which can be used to disconnect all the connections */
         HbAction *mDisconnectAction;
         
-        /* The label used to inform if there are no active connections */
-        HbLabel *mInfoLabel;
-        
         /* The id of the timer used to close the application */
         int mClosingTimer;
         
--- a/connectionmonitoring/connectionview/res/connectionview.css	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionmonitoring/connectionview/res/connectionview.css	Mon May 03 12:53:07 2010 +0300
@@ -22,22 +22,7 @@
     text-align: center;
 }
 
-HbGroupBox#groupBox::headingWidget:portrait
+HbPushButton#disconnectButton
 {
-    fixed-width: expr(var(hb-param-screen-width)-var(hb-param-margin-gene-left)-var(hb-param-margin-gene-right));
-}
-
-HbGroupBox#groupBox::contentWidget:portrait
-{
-    fixed-width: expr(var(hb-param-screen-width)-var(hb-param-margin-gene-left)-var(hb-param-margin-gene-right));
+    max-width: expr(var(hb-param-screen-short-edge)-var(hb-param-margin-gene-left)-var(hb-param-margin-gene-right));
 }
-
-HbGroupBox#groupBox::headingWidget:landscape
-{
-    fixed-width: expr(var(hb-param-screen-height)-var(hb-param-margin-gene-top)-var(hb-param-margin-gene-bottom)-var(hb-param-widget-toolbar-height));
-}
-
-HbGroupBox#groupBox::contentWidget:landscape
-{
-    fixed-width: expr(var(hb-param-screen-height)-var(hb-param-margin-gene-top)-var(hb-param-margin-gene-bottom)-var(hb-param-widget-toolbar-height));
-}
--- a/connectionmonitoring/connectionview/src/connectionview.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionmonitoring/connectionview/src/connectionview.cpp	Mon May 03 12:53:07 2010 +0300
@@ -81,12 +81,9 @@
 {
     OstTraceFunctionEntry0( DUP1_CONNECTIONVIEW_CONNECTIONVIEW_ENTRY );
     // other widgets are childs of this widget, so they will be
-    // deleted along with mMainView. Add infolabel and scrollarea
-    // again under mainlayout, since one of them is only there at the time
-    // this way all the ui components are deleted at once
-    mInfoLabel->setParentLayoutItem(mMainLayout);
-    mScrollArea->setParentLayoutItem(mMainLayout);
+    // deleted along with mMainView. 
     delete mMainView;
+    delete mNoConnView;
     OstTraceFunctionExit0( DUP1_CONNECTIONVIEW_CONNECTIONVIEW_EXIT );
 }
 
@@ -108,10 +105,20 @@
 {
     OstTraceFunctionEntry0( CONNECTIONVIEW_CREATEVIEW_ENTRY );
     
-    // Create the mainView and the layout for the window
-    mMainView = new HbView();
-    addView(mMainView);
-    setCurrentView(mMainView);
+    // Create the secondary view for displaying the "No active connections"-text
+    mNoConnView = new HbView();
+    mNoConnView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+    addView(mNoConnView);
+    QGraphicsLinearLayout *noConnViewLayout = new QGraphicsLinearLayout(Qt::Vertical);
+    noConnViewLayout->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+
+    HbLabel *infoLabel = new HbLabel;
+    infoLabel->setObjectName("mInfoLabel");
+    infoLabel->setPlainText(hbTrId("txt_occ_info_no_active_connections"));
+    infoLabel->setAlignment(Qt::AlignCenter);
+    noConnViewLayout->addItem(infoLabel);
+    noConnViewLayout->setAlignment(infoLabel, Qt::AlignCenter);
+    mNoConnView->setLayout(noConnViewLayout);
    
     mMainLayout = new QGraphicsLinearLayout(Qt::Vertical);
     mMainLayout->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
@@ -120,7 +127,9 @@
     mScrollArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
     mMainLayout->addItem(mScrollArea);
 
-    // Create the widgets and layouts for the scroll area
+    // Create the mainView and the layout for the window
+    mMainView = new HbView();
+    addView(mMainView);
     ScrollAreaWidget *scrollContent = new ScrollAreaWidget();
     scrollContent->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
     mScrollArea->installEventFilter(scrollContent);
@@ -142,12 +151,6 @@
             this,
             SLOT(disconnectAll()));
     
-    // label for informing the user that there are no connections
-    mInfoLabel = new HbLabel;
-    mInfoLabel->setObjectName("mInfoLabel");
-    mInfoLabel->setPlainText(hbTrId("txt_occ_info_no_active_connections"));
-    mInfoLabel->setAlignment(Qt::AlignCenter);
-    
     // Create the actual groupboxes for all the active connections
     createGroupBoxesForConnections();  
     show();
@@ -180,12 +183,9 @@
         mToolBar->hide();
     }
     
-    // if there are connections, then the label should be removed
-    // and the connection boxes drawn
+    // if there are connections, the main view with the connections is shown
     if (mConnectionCount > 0) { 
-        mMainLayout->removeItem(mInfoLabel);
-        mInfoLabel->hide();
-        mMainLayout->addItem(mScrollArea);
+        setCurrentView(mMainView);
 
         for (int i=0; i<mConnectionCount; i++) {
             // Get the iap id and the iap name for the UI construction
@@ -204,12 +204,9 @@
             this, 
             SLOT(disconnectSelectedIap(int)));
         
-        // there are no connections, inform the user with the text 
+        // there are no connections, show the view with the "no connections" label
     } else {
-        mMainLayout->removeItem(mScrollArea);
-        mInfoLabel->show();
-        mMainLayout->addItem(mInfoLabel);
-        mMainLayout->setAlignment(mInfoLabel, Qt::AlignCenter);
+        setCurrentView(mNoConnView);
         // start the timer to close the application after 3 seconds
         if (mClosingTimer == 0) {
             mClosingTimer = startTimer(timerValue);
@@ -308,6 +305,7 @@
     // Create the disconnection button
     HbPushButton* button = new HbPushButton(
             hbTrId("txt_occ_button_disconnect"), mMainView);
+    button->setObjectName("disconnectButton");
     button->setSizePolicy(QSizePolicy::Preferred, 
                           QSizePolicy::Preferred, 
                           QSizePolicy::PushButton);
--- a/connectionmonitoring/connmon/connectionmonitor/BWINSCW/CONNMON_EKA2U.def	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionmonitoring/connmon/connectionmonitor/BWINSCW/CONNMON_EKA2U.def	Mon May 03 12:53:07 2010 +0300
@@ -94,4 +94,7 @@
 	?ToBuf@CConnMonWlanProbeRawBuffer@@QBEPBVHBufC8@@XZ @ 93 NONAME ; class HBufC8 const * CConnMonWlanProbeRawBuffer::ToBuf(void) const
 	?Total@CConnMonWlanProbeRawBuffersPckg@@QBEIXZ @ 94 NONAME ; unsigned int CConnMonWlanProbeRawBuffersPckg::Total(void) const
 	?UnpackToL@CConnMonWlanProbeRawBuffersPckg@@QBEXAAV?$RPointerArray@VCConnMonWlanProbeRawBuffer@@@@@Z @ 95 NONAME ; void CConnMonWlanProbeRawBuffersPckg::UnpackToL(class RPointerArray<class CConnMonWlanProbeRawBuffer> &) const
+	?NewL@CConnMonWlanNetwork@@SAPAV1@ABV?$TBuf@$0CA@@@IIIIIABV?$TBuf8@$05@@ABVTDesC16@@@Z @ 96 NONAME ; class CConnMonWlanNetwork * CConnMonWlanNetwork::NewL(class TBuf<32> const &, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, class TBuf8<6> const &, class TDesC16 const &)
+	?SecurityModeV2@CConnMonWlanNetwork@@QAEIXZ @ 97 NONAME ; unsigned int CConnMonWlanNetwork::SecurityModeV2(void)
+	?IsProtectedSetupSupported@CConnMonWlanNetwork@@QAEHXZ @ 98 NONAME ; int CConnMonWlanNetwork::IsProtectedSetupSupported(void)
 
--- a/connectionmonitoring/connmon/connectionmonitor/EABI/ConnMon_EKA2U.def	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionmonitoring/connmon/connectionmonitor/EABI/ConnMon_EKA2U.def	Mon May 03 12:53:07 2010 +0300
@@ -105,8 +105,8 @@
 	_ZTV18TConnMonVirtualIap @ 104 NONAME ; #<VT>#
 	_ZTV19ConnMonIdsArrayPckg @ 105 NONAME ; #<VT>#
 	_ZTV19TConnMonWLANNetwork @ 106 NONAME ; #<VT>#
-	_ZTV20CCDIAPMetadataRecord @ 107 NONAME ABSENT; #<VT>#
-	_ZTV21CCDSNAPMetadataRecord @ 108 NONAME  ABSENT ; #<VT>#
+	_ZTV20CCDIAPMetadataRecord @ 107 NONAME ABSENT ; #<VT>#
+	_ZTV21CCDSNAPMetadataRecord @ 108 NONAME ABSENT ; #<VT>#
 	_ZTV22CCDMIPServiceExtRecord @ 109 NONAME ABSENT ; #<VT>#
 	_ZTV25CConnMonCommsDataNotifier @ 110 NONAME ; #<VT>#
 	_ZTV27CConnMonAvailabilityManager @ 111 NONAME ; #<VT>#
@@ -137,25 +137,28 @@
 	_ZNK24CConnMonBearerInfoChange10BearerInfoEv @ 136 NONAME
 	_ZNK25CConnMonBearerGroupChange12BearerGroupsERjS0_ @ 137 NONAME
 	_ZNK25CConnMonBearerGroupChange8InternalEv @ 138 NONAME
-	_ZN26CConnMonWlanProbeRawBuffer4NewLEPK6HBufC8 @139
-	_ZN26CConnMonWlanProbeRawBuffer4NewLERS_ @140
-	_ZN26CConnMonWlanProbeRawBuffer4NewLEv @141
-	_ZN26CConnMonWlanProbeRawBuffer8FromPtrCERK6TPtrC8PS_ @142
-	_ZN26CConnMonWlanProbeRawBufferD0Ev @143
-	_ZN26CConnMonWlanProbeRawBufferD1Ev @144
-	_ZN26CConnMonWlanProbeRawBufferD2Ev @145
-	_ZN26CConnMonWlanProbeRawBufferaSERS_ @146
-	_ZN31CConnMonWlanProbeRawBuffersPckgC1Ej @147
-	_ZN31CConnMonWlanProbeRawBuffersPckgC2Ej @148
-	_ZN31CConnMonWlanProbeRawBuffersPckgD0Ev @149
-	_ZN31CConnMonWlanProbeRawBuffersPckgD1Ev @150
-	_ZN31CConnMonWlanProbeRawBuffersPckgD2Ev @151
-	_ZNK26CConnMonWlanProbeRawBuffer5ToBufEv @152
-	_ZNK31CConnMonWlanProbeRawBuffersPckg3BufEv @153
-	_ZNK31CConnMonWlanProbeRawBuffersPckg9UnpackToLER13RPointerArrayI26CConnMonWlanProbeRawBufferE @154
-	_ZTI31CConnMonWlanProbeRawBuffersPckg @155
-	_ZTV31CConnMonWlanProbeRawBuffersPckg @156
-	_ZNK26CConnMonWlanProbeRawBuffer9RawBufferEv @157
-	_ZNK31CConnMonWlanProbeRawBuffersPckg5CountEv @158
-	_ZNK31CConnMonWlanProbeRawBuffersPckg5TotalEv @159
+	_ZN26CConnMonWlanProbeRawBuffer4NewLEPK6HBufC8 @ 139 NONAME
+	_ZN26CConnMonWlanProbeRawBuffer4NewLERS_ @ 140 NONAME
+	_ZN26CConnMonWlanProbeRawBuffer4NewLEv @ 141 NONAME
+	_ZN26CConnMonWlanProbeRawBuffer8FromPtrCERK6TPtrC8PS_ @ 142 NONAME
+	_ZN26CConnMonWlanProbeRawBufferD0Ev @ 143 NONAME
+	_ZN26CConnMonWlanProbeRawBufferD1Ev @ 144 NONAME
+	_ZN26CConnMonWlanProbeRawBufferD2Ev @ 145 NONAME
+	_ZN26CConnMonWlanProbeRawBufferaSERS_ @ 146 NONAME
+	_ZN31CConnMonWlanProbeRawBuffersPckgC1Ej @ 147 NONAME
+	_ZN31CConnMonWlanProbeRawBuffersPckgC2Ej @ 148 NONAME
+	_ZN31CConnMonWlanProbeRawBuffersPckgD0Ev @ 149 NONAME
+	_ZN31CConnMonWlanProbeRawBuffersPckgD1Ev @ 150 NONAME
+	_ZN31CConnMonWlanProbeRawBuffersPckgD2Ev @ 151 NONAME
+	_ZNK26CConnMonWlanProbeRawBuffer5ToBufEv @ 152 NONAME
+	_ZNK31CConnMonWlanProbeRawBuffersPckg3BufEv @ 153 NONAME
+	_ZNK31CConnMonWlanProbeRawBuffersPckg9UnpackToLER13RPointerArrayI26CConnMonWlanProbeRawBufferE @ 154 NONAME
+	_ZTI31CConnMonWlanProbeRawBuffersPckg @ 155 NONAME
+	_ZTV31CConnMonWlanProbeRawBuffersPckg @ 156 NONAME
+	_ZNK26CConnMonWlanProbeRawBuffer9RawBufferEv @ 157 NONAME
+	_ZNK31CConnMonWlanProbeRawBuffersPckg5CountEv @ 158 NONAME
+	_ZNK31CConnMonWlanProbeRawBuffersPckg5TotalEv @ 159 NONAME
+	_ZN19CConnMonWlanNetwork14SecurityModeV2Ev @ 160 NONAME
+	_ZN19CConnMonWlanNetwork25IsProtectedSetupSupportedEv @ 161 NONAME
+	_ZN19CConnMonWlanNetwork4NewLERK4TBufILi32EEjjjjjRK5TBuf8ILi6EERK7TDesC16 @ 162 NONAME
 
--- a/connectionmonitoring/connmon/connectionmonitor/inc/CWlanSupport.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionmonitoring/connmon/connectionmonitor/inc/CWlanSupport.h	Mon May 03 12:53:07 2010 +0300
@@ -369,6 +369,16 @@
      */
     TBool WlanRssGoodEnough();
 
+    /**
+     * Converts a WLAN security mode from ConnMon's
+     * TConnMonSecurityModeV2-format to ConnMon's TConnMonSecurityMode-format.
+     *
+     * @since 5.2
+     * @param aSecModeV2 Security mode in TConnMonSecurityModeV2-format.
+     * @return Security mode in TConnMonSecurityMode-format.
+     */
+    TInt ConvertConMonSecModeV2ToConnMonSecMode( TInt aSecModeV2 );
+
 private:
     CWlanSupport( CConnMonServer* aServer );
 
@@ -376,6 +386,18 @@
      * Second phase construction.
      */
     void ConstructL();
+    
+    /**
+     * Converts a WLAN security mode from WLAN engine's
+     * TWlanConnectionExtentedSecurityMode-format to ConnMon's
+     * TConnMonSecurityModeV2-format.
+     *
+     * @since 5.2
+     * @param aWlanExtSecMode Security mode in
+     * TWlanConnectionExtentedSecurityMode-format.
+     * @return Security mode in TConnMonSecurityModeV2-format.
+     */
+    TInt ConvertWlanExtSecModeToConnMonSecModeV2( TInt aWlanExtSecMode );
 
 private: // Data
     // Pointer to server module
--- a/connectionmonitoring/connmon/connectionmonitor/src/CWlanSupport.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionmonitoring/connmon/connectionmonitor/src/CWlanSupport.cpp	Mon May 03 12:53:07 2010 +0300
@@ -191,7 +191,7 @@
 
 
 // -----------------------------------------------------------------------------
-// CWlanSupport::GetSignalStrength
+// CWlanSupport::GetSignalStrengthL
 // -----------------------------------------------------------------------------
 //
 TInt CWlanSupport::GetSignalStrengthL(
@@ -416,7 +416,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// CWlanSupport::AppendAvailableIapsBySsid
+// CWlanSupport::AppendAvailableIapsBySsidL
 // -----------------------------------------------------------------------------
 //
 TInt CWlanSupport::AppendAvailableIapsBySsidL( RArray<TUint>& aIdArray )
@@ -591,33 +591,13 @@
     LOGENTRFN("CWlanSupport::GetConnectionSecurity()")
     TInt err( KErrNone );
 
-    TWlanConnectionSecurityMode mode( EWlanConnectionSecurityOpen );
+    TWlanConnectionExtentedSecurityMode mode( EWlanConnectionExtentedSecurityModeOpen );
 
     // Get security mode
-    err = iWlanMgmt->GetConnectionSecurityMode( mode );
+    err = iWlanMgmt->GetExtendedConnectionSecurityMode( mode );
     if ( KErrNone == err )
         {
-        switch ( mode )
-            {
-            case EWlanConnectionSecurityOpen:
-                aConnectionSecurity = EConnMonSecurityOpen;
-                break;
-            case EWlanConnectionSecurityWep:
-                aConnectionSecurity = EConnMonSecurityWep;
-                break;
-            case EWlanConnectionSecurity802d1x:
-                aConnectionSecurity = EConnMonSecurity802d1x;
-                break;
-            case EWlanConnectionSecurityWpa:
-                aConnectionSecurity = EConnMonSecurityWpa;
-                break;
-            case EWlanConnectionSecurityWpaPsk:
-                aConnectionSecurity = EConnMonSecurityWpaPsk;
-                break;
-            default:
-                aConnectionSecurity = EConnMonSecurityOpen;
-                break;
-            }
+        aConnectionSecurity = ConvertWlanExtSecModeToConnMonSecModeV2( mode );
         LOGIT1("GetConnectionSecurity: security mode %d", aConnectionSecurity)
         }
 
@@ -773,28 +753,10 @@
             TUint signalStrength(scanInfo->RXLevel());
             LOGIT1("CWlanSupport::GetWLANNetworksL: signalStrength %d", signalStrength)
 
-            // SecurityMode
-            TUint8 ieLength( 0 );
-            const TUint8* wpaData;
-
-            TUint securityMode( EConnMonSecurityOpen );
-            if ( scanInfo->Capability() & KWlan802Dot11CapabilityPrivacyMask )
-                {
-                if ( ( scanInfo->InformationElement(
-                        KWlan802Dot11RsnIE,
-                        ieLength,
-                        &wpaData ) == KErrNone ) ||
-                     ( scanInfo->WpaIE(
-                        ieLength,
-                        &wpaData ) == KErrNone ) )
-                    {
-                    securityMode = EConnMonSecurityWpa; // WPA
-                    }
-                else
-                    {
-                    securityMode = EConnMonSecurityWep; // WEP
-                    }
-                }
+            // Security mode
+            TInt wlanExtSecurityMode( scanInfo->ExtendedSecurityMode() );
+            TInt securityModeV2( ConvertWlanExtSecModeToConnMonSecModeV2( wlanExtSecurityMode ) );
+            TInt securityMode( ConvertConMonSecModeV2ToConnMonSecMode( securityModeV2 ) );
             LOGIT1("CWlanSupport::GetWLANNetworksL: securityMode %d", securityMode)
 
             // SSID == name
@@ -867,7 +829,7 @@
 
 
 // -----------------------------------------------------------------------------
-// CWlanSupport::ParseWlanNetworks
+// CWlanSupport::ParseWlanNetworksL
 // -----------------------------------------------------------------------------
 //
 void CWlanSupport::ParseWlanNetworksL(
@@ -899,28 +861,13 @@
         // Signal strength
         TUint signalStrength( aScanInfo->RXLevel() );
 
-        // SecurityMode
-        TUint8 ieLength( 0 );
-        const TUint8* wpaData;
-
-        TUint securityMode( EConnMonSecurityOpen );
-        if ( aScanInfo->Capability() & KWlan802Dot11CapabilityPrivacyMask )
-            {
-            if ( ( aScanInfo->InformationElement(
-                    KWlan802Dot11RsnIE,
-                    ieLength,
-                    &wpaData ) == KErrNone ) ||
-                 ( aScanInfo->WpaIE(
-                    ieLength,
-                    &wpaData ) == KErrNone ) )
-                {
-                securityMode = EConnMonSecurityWpa; // WPA
-                }
-            else
-                {
-                securityMode = EConnMonSecurityWep; // WEP
-                }
-            }
+        // Security mode
+        TInt wlanExtSecurityMode( aScanInfo->ExtendedSecurityMode() );
+        TInt securityModeV2( ConvertWlanExtSecModeToConnMonSecModeV2( wlanExtSecurityMode ) );
+        TInt securityMode( ConvertConMonSecModeV2ToConnMonSecMode( securityModeV2 ) );
+
+        // Protected setup
+        TBool protectedSetupSupport( aScanInfo->IsProtectedSetupSupported() );
 
         // SSID == name
         TBuf8<CConnMonWlanNetwork::KMaxNameLength> name8;
@@ -955,6 +902,8 @@
                 connectionMode,
                 signalStrength,
                 securityMode,
+                securityModeV2,
+                protectedSetupSupport,
                 bssid,
                 KNullDesC() );
         CleanupStack::PushL( net );
@@ -970,7 +919,7 @@
 
 
 // -----------------------------------------------------------------------------
-// CWlanSupport::GetCurrentWlanNetwork
+// CWlanSupport::GetCurrentWlanNetworkL
 // -----------------------------------------------------------------------------
 //
 TInt CWlanSupport::GetCurrentWlanNetworkL(
@@ -981,6 +930,7 @@
 
     TInt connectionMode;
     TInt connectionSecurity;
+    TInt connectionSecurityV2;
     TInt connectionSignalQuality;
     TBuf<CConnMonWlanNetwork::KMaxNameLength> connectionSsid;
     TBuf8<CConnMonWlanNetwork::KWlanBssId> connectionBssid;
@@ -990,7 +940,8 @@
     if ( KErrNone == err )
         {
         // Get connection security mode
-        err = GetConnectionSecurity( connectionSecurity );
+        err = GetConnectionSecurity( connectionSecurityV2 );
+        connectionSecurity = ConvertConMonSecModeV2ToConnMonSecMode( connectionSecurityV2 );
         }
     if ( KErrNone == err )
         {
@@ -1015,6 +966,8 @@
                 connectionMode,
                 connectionSignalQuality,
                 connectionSecurity,
+                connectionSecurityV2,
+                0,
                 connectionBssid,
                 KNullDesC() );
         CleanupStack::PushL( net );
@@ -1045,7 +998,7 @@
 
 
 // -----------------------------------------------------------------------------
-// CWlanSupport::ParseWlanNetworks
+// CWlanSupport::ParseWlanProbeRawBuffersL
 // -----------------------------------------------------------------------------
 //
 void CWlanSupport::ParseWlanProbeRawBuffersL(
@@ -1200,7 +1153,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// CWlanSupport::SetIntAttribute
+// CWlanSupport::SetIntAttributeL
 // -----------------------------------------------------------------------------
 //
 TInt CWlanSupport::SetIntAttributeL(
@@ -1232,7 +1185,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// CWlanSupport::SetUintAttribute
+// CWlanSupport::SetUintAttributeL
 // -----------------------------------------------------------------------------
 //
 TInt CWlanSupport::SetUintAttributeL(
@@ -1264,7 +1217,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// CWlanSupport::GetIntAttribute
+// CWlanSupport::GetIntAttributeL
 // -----------------------------------------------------------------------------
 //
 TInt CWlanSupport::GetIntAttributeL( const RMessage2& aMessage, TInt& aValue )
@@ -1293,7 +1246,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// CWlanSupport::GetUintAttribute
+// CWlanSupport::GetUintAttributeL
 // -----------------------------------------------------------------------------
 //
 TInt CWlanSupport::GetUintAttributeL( const RMessage2& aMessage, TUint& aValue )
@@ -1322,7 +1275,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// CWlanSupport::SetStringAttribute
+// CWlanSupport::SetStringAttributeL
 //
 // Currently assumes the descriptor attribute 'aValue' length has been checked
 // earlier and is short enough.
@@ -1358,7 +1311,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// CWlanSupport::GetStringAttribute
+// CWlanSupport::GetStringAttributeL
 // -----------------------------------------------------------------------------
 //
 TInt CWlanSupport::GetStringAttributeL(
@@ -1471,6 +1424,90 @@
     return value;
     }
 
+// -----------------------------------------------------------------------------
+// CWlanSupport::ConvertConMonSecModeV2ToConnMonSecMode
+// -----------------------------------------------------------------------------
+//
+TInt CWlanSupport::ConvertConMonSecModeV2ToConnMonSecMode( TInt aConnMonSecModeV2 )
+    {
+    TInt connMonSecMode( EConnMonSecurityOpen );
+    switch ( aConnMonSecModeV2 )
+        {
+        case EConnMonSecurityV2Open:
+            connMonSecMode = EConnMonSecurityOpen;
+            break;
+        case EConnMonSecurityV2WepOpen:
+        case EConnMonSecurityV2WepShared:
+            connMonSecMode = EConnMonSecurityWep;
+            break;
+        case EConnMonSecurityV2802d1x:
+            connMonSecMode = EConnMonSecurity802d1x;
+            break;
+        case EConnMonSecurityV2Wpa:
+        case EConnMonSecurityV2Wpa2:
+            connMonSecMode = EConnMonSecurityWpa;
+            break;
+        case EConnMonSecurityV2WpaPsk:
+        case EConnMonSecurityV2Wpa2Psk:
+            connMonSecMode = EConnMonSecurityWpaPsk;
+            break;
+        case EConnMonSecurityV2Wapi:
+        case EConnMonSecurityV2WapiPsk:
+            connMonSecMode = EConnMonSecurity802d1x;
+            break;
+        default:
+            connMonSecMode = EConnMonSecurityOpen;
+            break;
+        }
+    return connMonSecMode;
+    }
+
+// -----------------------------------------------------------------------------
+// CWlanSupport::ConvertWlanExtSecModeToConnMonSecModeV2
+// -----------------------------------------------------------------------------
+//
+TInt CWlanSupport::ConvertWlanExtSecModeToConnMonSecModeV2( TInt aWlanExtSecMode )
+    {
+    TInt connMonSecModeV2( EConnMonSecurityV2Open );
+    switch ( aWlanExtSecMode )
+        {
+        case EWlanConnectionExtentedSecurityModeOpen:
+            connMonSecModeV2 = EConnMonSecurityV2Open;
+            break;
+        case EWlanConnectionExtentedSecurityModeWepOpen:
+            connMonSecModeV2 = EConnMonSecurityV2WepOpen;
+            break;
+        case EWlanConnectionExtentedSecurityModeWepShared:
+            connMonSecModeV2 = EConnMonSecurityV2WepShared;
+            break;
+        case EWlanConnectionExtentedSecurityMode802d1x:
+            connMonSecModeV2 = EConnMonSecurityV2802d1x;
+            break;
+        case EWlanConnectionExtentedSecurityModeWpa:
+            connMonSecModeV2 = EConnMonSecurityV2Wpa;
+            break;
+        case EWlanConnectionExtentedSecurityModeWpaPsk:
+            connMonSecModeV2 = EConnMonSecurityV2WpaPsk;
+            break;
+        case EWlanConnectionExtentedSecurityModeWpa2:
+            connMonSecModeV2 = EConnMonSecurityV2Wpa2;
+            break;
+        case EWlanConnectionExtentedSecurityModeWpa2Psk:
+            connMonSecModeV2 = EConnMonSecurityV2Wpa2Psk;
+            break;
+        case EWlanConnectionExtentedSecurityModeWapi:
+            connMonSecModeV2 = EConnMonSecurityV2Wapi;
+            break;
+        case EWlanConnectionExtentedSecurityModeWapiPsk:
+            connMonSecModeV2 = EConnMonSecurityV2WapiPsk;
+            break;
+        default:
+            connMonSecModeV2 = EConnMonSecurityV2Open;
+            break;
+        }
+    return connMonSecModeV2;
+    }
+
 // ============================ MEMBER FUNCTIONS ===============================
 
 // -----------------------------------------------------------------------------
@@ -1788,7 +1825,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// CWlanSession::GetScanResults
+// CWlanSession::GetScanResultsL
 // -----------------------------------------------------------------------------
 //
 void CWlanSession::GetScanResultsL( const RMessage2& aMessage )
@@ -2002,7 +2039,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// CWlanSession::CompleteActiveRequests
+// CWlanSession::CompleteActiveRequestsL
 // -----------------------------------------------------------------------------
 //
 void CWlanSession::CompleteActiveRequestsL(
@@ -2176,7 +2213,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// CWlanSession::CompleteGetNetworkNamesRequest
+// CWlanSession::CompleteGetNetworkNamesRequestL
 // Completes the asynchronous client request: GetPckgAttribute( KNetworkNames )
 // -----------------------------------------------------------------------------
 //
@@ -2207,7 +2244,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// CWlanSession::CompleteGetWlanNetworksRequest
+// CWlanSession::CompleteGetWlanNetworksRequestL
 // Completes the asynchronous client request: GetPckgAttribute( KWlanNetworks )
 // -----------------------------------------------------------------------------
 //
@@ -2259,7 +2296,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// CWlanSession::CompleteGetWlanSsidNetworksRequest
+// CWlanSession::CompleteGetWlanSsidNetworksRequestL
 // Completes the asynchronous client request: GetPckgAttribute( KWlanSsidNetworks )
 // -----------------------------------------------------------------------------
 //
@@ -2311,7 +2348,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// CWlanSession::CompleteGetWlanProbeRawBuffersRequest
+// CWlanSession::CompleteGetWlanProbeRawBuffersRequestL
 // Completes the asynchronous client request: GetPckgAttribute( KWlanProbeRawBuffers )
 // -----------------------------------------------------------------------------
 //
--- a/connectionmonitoring/connmon/connectionmonitor/src/ConnMonIAP.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionmonitoring/connmon/connectionmonitor/src/ConnMonIAP.cpp	Mon May 03 12:53:07 2010 +0300
@@ -1143,6 +1143,20 @@
                 {
                 if ( iWlanSupport )
                     {
+                    TInt secModeV2( EConnMonSecurityV2Open );
+                    ret = iWlanSupport->GetConnectionSecurity( secModeV2 );
+                    aValue = iWlanSupport->ConvertConMonSecModeV2ToConnMonSecMode( secModeV2 );
+                    }
+                }
+            break;
+
+        case KSecurityMode_v2:
+            // SECURITY MODE V2
+            ret = KErrNotSupported;
+            if ( iConnInfos[index].iBearer == EBearerWLAN )
+                {
+                if ( iWlanSupport )
+                    {
                     ret = iWlanSupport->GetConnectionSecurity( aValue );
                     }
                 }
--- a/connectionmonitoring/connmon/connectionmonitor/src/ConnMonWLANNetwork.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionmonitoring/connmon/connectionmonitor/src/ConnMonWLANNetwork.cpp	Mon May 03 12:53:07 2010 +0300
@@ -123,8 +123,10 @@
         {
         buf.Append( aPtrC[len+EBufBase+i] );
         }
-
-    return TConnMonWLANNetwork( name, connectionMode, signalStrength, securityMode, buf );
+    TConnMonWLANNetwork connMonWLANNetwork = TConnMonWLANNetwork( name, 
+            connectionMode, signalStrength, securityMode, buf );
+    buf.Close();
+    return connMonWLANNetwork;
     }
 
 // End-of-file
--- a/connectionmonitoring/connmon/connectionmonitor/src/connmonwlannetwork_v2.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionmonitoring/connmon/connectionmonitor/src/connmonwlannetwork_v2.cpp	Mon May 03 12:53:07 2010 +0300
@@ -75,6 +75,40 @@
 //  Constructor
 // ---------------------------------------------------------------------------
 //
+CConnMonWlanNetwork::CConnMonWlanNetwork(
+        const TBuf<KMaxNameLength>& aName,
+        TUint aConnectionMode,
+        TUint aSignalStrength,
+        TUint aSecurityMode,
+        TUint aSecurityModeV2,
+        TUint aProtectedSetupSupport,
+        const TBuf8<KWlanBssId>& aBssId,
+        const TDesC& aVendorData )
+        :
+        iName( aName ),
+        iConnectionMode( aConnectionMode ),
+        iSignalStrength( aSignalStrength ),
+        iSecurityMode( aSecurityMode ),
+        iWlanBssId( aBssId ),
+        iVendorData( NULL ),
+        iSecurityModeV2( aSecurityModeV2 ),
+        iProtectedSetupSupport( aProtectedSetupSupport )
+    {
+    if ( aVendorData != KNullDesC() && aVendorData.Length() > 0 )
+        {
+        // Can't leave here, copy contents only if enough memory
+        iVendorData = HBufC::New( aVendorData.Length() );
+        if ( iVendorData )
+            {
+            iVendorData->Des().Copy( aVendorData );
+            }
+        }
+    }
+
+// ---------------------------------------------------------------------------
+//  Constructor
+// ---------------------------------------------------------------------------
+//
 EXPORT_C CConnMonWlanNetwork* CConnMonWlanNetwork::NewL(
         const TBuf<KMaxNameLength>& aName,
         TUint aConnectionMode,
@@ -95,6 +129,33 @@
     }
 
 // ---------------------------------------------------------------------------
+//  Constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CConnMonWlanNetwork* CConnMonWlanNetwork::NewL(
+        const TBuf<KMaxNameLength>& aName,
+        TUint aConnectionMode,
+        TUint aSignalStrength,
+        TUint aSecurityMode,
+        TUint aSecurityModeV2,
+        TUint aProtectedSetupSupport,
+        const TBuf8<KWlanBssId>& aBssId,
+        const TDesC& aVendorData )
+    {
+    CConnMonWlanNetwork* wlanNet = new( ELeave ) CConnMonWlanNetwork(
+            aName,
+            aConnectionMode,
+            aSignalStrength,
+            aSecurityMode,
+            aSecurityModeV2,
+            aProtectedSetupSupport,
+            aBssId,
+            aVendorData );
+
+    return wlanNet;
+    }
+
+// ---------------------------------------------------------------------------
 //  Second-phase constructor
 // ---------------------------------------------------------------------------
 //
@@ -117,6 +178,8 @@
                 aConnMonWlanNetwork.iConnectionMode,
                 aConnMonWlanNetwork.iSignalStrength,
                 aConnMonWlanNetwork.iSecurityMode,
+                aConnMonWlanNetwork.iSecurityModeV2,
+                aConnMonWlanNetwork.iProtectedSetupSupport,
                 aConnMonWlanNetwork.iWlanBssId,
                 aConnMonWlanNetwork.iVendorData->Des() );
         }
@@ -127,6 +190,8 @@
                 aConnMonWlanNetwork.iConnectionMode,
                 aConnMonWlanNetwork.iSignalStrength,
                 aConnMonWlanNetwork.iSecurityMode,
+                aConnMonWlanNetwork.iSecurityModeV2,
+                aConnMonWlanNetwork.iProtectedSetupSupport,
                 aConnMonWlanNetwork.iWlanBssId,
                 KNullDesC() );
         }
@@ -155,6 +220,8 @@
     iConnectionMode = aConnMonWlanNetwork.ConnectionMode();
     iSignalStrength = aConnMonWlanNetwork.SignalStrength();
     iSecurityMode = aConnMonWlanNetwork.SecurityMode();
+    iSecurityModeV2 = aConnMonWlanNetwork.SecurityModeV2();
+    iProtectedSetupSupport = aConnMonWlanNetwork.IsProtectedSetupSupported();
     iWlanBssId = aConnMonWlanNetwork.WlanBssid();
 
     if ( aConnMonWlanNetwork.iVendorData )
@@ -199,6 +266,29 @@
     }
 
 // ---------------------------------------------------------------------------
+// Obtains the more detailed security mode of the network.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TUint CConnMonWlanNetwork::SecurityModeV2()
+    {
+    return iSecurityModeV2;
+    }
+
+// ---------------------------------------------------------------------------
+// Finds whether Wi-Fi Protected Setup is supported.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CConnMonWlanNetwork::IsProtectedSetupSupported()
+    {
+    TBool result( EFalse );
+    if ( iProtectedSetupSupport )
+        {
+        result = ETrue;
+        }
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
 // Packages object to HBufC descriptor
 // ---------------------------------------------------------------------------
 //
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/BWinsCw/ConnectionUiUtilities_PROTU.def	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/BWinsCw/ConnectionUiUtilities_PROTU.def	Mon May 03 12:53:07 2010 +0300
@@ -53,4 +53,6 @@
 	?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)
 	?ConnectionErrorDiscreetPopup@CConnectionUiUtilities@@QAEXABH@Z @ 54 NONAME ; void CConnectionUiUtilities::ConnectionErrorDiscreetPopup(int const &)
+	?CancelConnectingViaDiscreetPopup@CConnectionUiUtilities@@QAEXXZ @ 55 NONAME ; void CConnectionUiUtilities::CancelConnectingViaDiscreetPopup(void)
+	?ConnectingViaDiscreetPopup@CConnectionUiUtilities@@QAEXXZ @ 56 NONAME ; void CConnectionUiUtilities::ConnectingViaDiscreetPopup(void)
 
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/EABI/ConnectionUiUtilities_PROTU.def	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/EABI/ConnectionUiUtilities_PROTU.def	Mon May 03 12:53:07 2010 +0300
@@ -55,4 +55,6 @@
 	_ZN22CConnectionUiUtilities26ConnectingViaDiscreetPopupERKmi @ 54 NONAME
 	_ZN22CConnectionUiUtilities27NoWLANNetworksAvailableNoteEv @ 55 NONAME
 	_ZN22CConnectionUiUtilities28ConnectionErrorDiscreetPopupERKi @ 56 NONAME
+	_ZN22CConnectionUiUtilities32CancelConnectingViaDiscreetPopupEv @ 57 NONAME
+	_ZN22CConnectionUiUtilities26ConnectingViaDiscreetPopupEv @ 58 NONAME
 
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/ActiveConnectViaNote.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of CActiveConnectViaNote
-*
-*/
-
-
-#ifndef __ACTIVE_CONNECT_VIA_NOTE_H__
-#define __ACTIVE_CONNECT_VIA_NOTE_H__
-
-// INCLUDES
-#include "ConnectionUiUtilitiesCommon.h"
-#include <e32base.h>
-#include <cmmanager.h>
-
-// FORWARD DECLARATIONS
-class CConnectViaNoteNotif;
-class CGulIcon;
-class CEikImage;
-
-
-/**
- * CActiveConnectViaNote class,
- * an active object for COfflineWlanDisabledNoteNotif
- */     
-NONSHARABLE_CLASS( CActiveConnectViaNote ) : public CActive
-{
-public:
-    /**
-    * Constructor
-    */    
-    CActiveConnectViaNote( CConnectViaNoteNotif* aNotif, 
-                           const TConnUiUiDestConnMethodNoteId aData );
-
-    /**
-    * Launch ConnectViaNote setactive and starts active object
-    */    
-    void LaunchActiveConnectViaNote();
-    
-    /**
-    * Destructor
-    */
-    virtual ~CActiveConnectViaNote();
-
-protected:
-    /**
-    * DoCancel from CActive
-    */    
-    virtual void DoCancel();
-      
-    /**
-    * RunL from CActive
-    */      
-    virtual void RunL();
-    
-    /**
-    * GetDialogTextL() 
-    * @return 
-    */
-    HBufC* GetDialogTextL();
-
-    /**
-    * GetDestinationNameLC() 
-    * @param  aDestId
-    * @return 
-    */
-    HBufC* GetDestinationNameLC( const TUint32 aDestId );
-    
-    /**
-    * GetConnectionMethodNameLC
-    * @param aConnMId
-    * @return
-    */
-    HBufC* GetConnectionMethodNameLC( const TUint32 aConnMId );
-    
-    /**
-    * CreateEikImageFromCGulIconLC
-    * @return CEikImage*
-    */
-    CEikImage* CreateEikImageFromCGulIconLC();    
-    
-protected:
-    TRequestStatus* iClientStatus;   ///< used for complete runl, not owned 
-    CConnectViaNoteNotif* iNotif; ///< poiter to notifer, not owned
-    CGulIcon* iIcon;    
-    
-    TConnUiUiDestConnMethodNoteId iData;
-    RCmManager iCmManager;    
-};         
-
-#endif // __ACTIVE_CONNECT_VIA_NOTE_H__
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/ConnectViaNoteNotif.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of CConnectViaNoteNotif
-*
-*/
-
-
-
-#ifndef __CONNECT_VIA_NOTE_H__
-#define __CONNECT_VIA_NOTE_H__
-
-
-// INCLUDES
-#include "ConnectionDialogsNotifBase.h"
-
-// FORWARD DECLARAIONS
-class CActiveConnectViaNote;
-/**
- * ConnectViaNoteNotif class
- */
-NONSHARABLE_CLASS( CConnectViaNoteNotif ) : public CConnectionDialogsNotifBase
-    {
-public:
-    
-    /**
-    * NewL function
-    * @param  -
-    * return CConnectViaNoteNotif*
-    */
-    static CConnectViaNoteNotif* NewL( const TBool aResourceFileResponsible );
-
-    /**
-    * RegisterL register the client notifier function
-    * @param  -
-    * return TNotifierInfo
-    */
-    TNotifierInfo RegisterL();
-
-    /**
-    * Start the Notifier
-    * @param  aBuffer    Buffer
-    * @param  aReplySlot Identifies which message argument to use for the 
-    *                    reply. This message argument will refer to a 
-    *                    modifiable descriptor, a TDes8 type, into which data
-    *                    can be returned. 
-    * @param  aMessage   Message
-    * return -
-    */
-    void StartL( const TDesC8& aBuffer, TInt aReplySlot, 
-                 const RMessagePtr2& aMessage );
-
-    /**
-    * Cancel() the notifier
-    * @param  -
-    * return -
-    */
-    void Cancel();
-
-public:
-    /**
-    * CompleteL the notifier is complete
-    * @param  aStatus status
-    * return  -
-    */
-    void CompleteL( TInt aStatus );
-
-private:    
-    CActiveConnectViaNote* iActiveNote; // owned
-    
-    };
-
-
-#endif // __CONNECT_VIA_NOTE_H__
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/connectingviadiscreetpopup.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/*
- * Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). 
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  Declaration of CConnectingViaDiscreetPopup
- *
- */
-
-#ifndef CCONNECTINGVIADISCREETPOPUP_H
-#define CCONNECTINGVIADISCREETPOPUP_H
-
-// INCLUDES
-#include <e32base.h>	// For CActive, link against: euser.lib
-#include <cmmanager.h>
-
-#include "connectingviadiscreetpopupnotif.h"
-
-/**
- * CConnectingViaDiscreetPopup class
- */
-NONSHARABLE_CLASS( CConnectingViaDiscreetPopup ) : public CActive
-    {
-public:
-    /**
-     * Destructor
-     * Cancel and destroy
-     */
-    ~CConnectingViaDiscreetPopup();
-
-    /**
-     * NewL function 
-     * Two-phased constructor.
-     * @param  aNotif a pointer to notifier plugin
-     */
-    static CConnectingViaDiscreetPopup* NewL(
-            CConnectingViaDiscreetPopupNotif* aNotif);
-
-    /**
-     * NewL function 
-     * Two-phased constructor.
-     * @param  aNotif a pointer to notifier plugin
-     */
-    static CConnectingViaDiscreetPopup* NewLC(
-            CConnectingViaDiscreetPopupNotif* aNotif);
-
-public:
-    /**
-     * StartL Function for making the initial request
-     */
-    void StartL(TUint32 aIapId, TBool aConnectionAlreadyActive);
-
-private:
-    /**
-     * C++ constructor
-     */
-    CConnectingViaDiscreetPopup(CConnectingViaDiscreetPopupNotif* aNotif);
-
-    /**
-     * Second-phase constructor
-     */
-    void ConstructL();
-
-private:
-    /**
-     * From CActive
-     */
-    void RunL();
-
-    /**
-     * From CActive 
-     */
-    void DoCancel();
-
-    /**
-     * From CActive 
-     */
-    TInt RunError(TInt aError);
-
-private:
-
-    // Used for complete runl, not owned 
-    TRequestStatus* iClientStatus;
-
-    // Pointer to notifer, not owned
-    CConnectingViaDiscreetPopupNotif* iNotif;
-
-    // Handle to cmmanager interface
-    RCmManager icmManager;
-
-    // Bearer type from cmmanager
-    TUint iBearerType;
-
-    // Connection name - owned
-    HBufC* iConnectionName;
-
-    // Popup flags
-    TInt iPopupFlags;
-
-    };
-
-#endif // CCONNECTINGVIADISCREETPOPUP_H
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/connectingviadiscreetpopupnotif.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). 
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  Declaration of Generic Connection Ui Utilities Notifier
- *
- */
-
-#ifndef __CONNECTINGVIADISCREETPOPUPNOTIF_H__
-#define __CONNECTINGVIADISCREETPOPUPNOTIF_H__
-
-// INCLUDES
-#include "ConnectionDialogsNotifBase.h"
-
-//FORWARD DECLARATION
-class CConnectingViaDiscreetPopup;
-
-/**
- * CConnectingViaDiscreetPopupNotif class
- */
-NONSHARABLE_CLASS( CConnectingViaDiscreetPopupNotif ) : public CConnectionDialogsNotifBase
-    {
-public:
-    /**
-     * NewL function
-     * @param  -
-     * return CConnectingViaDiscreetPopupNotif*
-     */
-    static CConnectingViaDiscreetPopupNotif* NewL(
-            const TBool aResourceFileResponsible);
-
-    /**
-     * RegisterL register the client notifier function
-     * @param  -
-     * return TNotifierInfo
-     */
-    TNotifierInfo RegisterL();
-
-    /**
-     * Start the Notifier
-     * @param  aBuffer    Buffer
-     * @param  aReplySlot Identifies which message argument to use for the 
-     *                    reply. This message argument will refer to a 
-     *                    modifiable descriptor, a TDes8 type, into which
-     *                    data can be returned. 
-     * @param  aMessage   Message
-     * return -
-     */
-    void StartL(const TDesC8& aBuffer, TInt aReplySlot,
-            const RMessagePtr2& aMessage);
-
-    /**
-     * Cancel() the notifier
-     * @param  -
-     * return -
-     */
-    void Cancel();
-
-    /**
-     * CompleteL the notifier is complete
-     * @param  aStatus status
-     * return  -
-     */
-    void CompleteL(TInt aStatus);
-
-protected:
-    /**
-     * Constructor
-     */
-    CConnectingViaDiscreetPopupNotif();
-
-protected:
-
-    // pointer to active object, owned
-    CConnectingViaDiscreetPopup* iActiveNote;
-
-    };
-
-#endif //__CONNECTINGVIADISCREETPOPUPNOTIF_H__
-// End of File
-
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/connectionerrordiscreetpopup.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  Declaration of CConnectingViaDiscreetPopup
- *
- */
-
-#ifndef CCONNECTIONERRORDISCREETPOPUP_H
-#define CCONNECTIONERRORDISCREETPOPUP_H
-
-// INCLUDES
-#include <e32base.h>	// For CActive, link against: euser.lib
-#include <cmmanager.h>
-
-#include "connectionerrordiscreetpopupnotif.h"
- 
-/**
- * CConnectingViaDiscreetPopup class
- */
-NONSHARABLE_CLASS( CConnectionErrorDiscreetPopup ) : public CActive
-    {
-public:
-    /**
-     * Destructor
-     * Cancel and destroy
-     */
-    ~CConnectionErrorDiscreetPopup();
-
-    /**
-     * NewL function 
-     * Two-phased constructor.
-     * @param  aNotif a pointer to notifier plugin
-     */
-    static CConnectionErrorDiscreetPopup* NewL(
-            CConnectionErrorDiscreetPopupNotif* aNotif );
-
-    /**
-     * NewL function 
-     * Two-phased constructor.
-     * @param  aNotif a pointer to notifier plugin
-     */
-    static CConnectionErrorDiscreetPopup* NewLC(
-            CConnectionErrorDiscreetPopupNotif* aNotif );
-
-public:
-    /**
-     * StartL Function for making the initial request
-     */
-    void StartL( TUint32 aErrCode );
-
-private:
-    /**
-     * C++ constructor
-     */
-    CConnectionErrorDiscreetPopup( CConnectionErrorDiscreetPopupNotif* aNotif );
-
-    /**
-     * Second-phase constructor
-     */
-    void ConstructL();
-
-private:
-    /**
-     * From CActive
-     */
-    void RunL();
-
-    /**
-     * From CActive 
-     */
-    void DoCancel();
-
-    /**
-     * From CActive 
-     */
-    TInt RunError( TInt aError );
-    
-    /**
-     * Resolves error code saved in iErrorCode.
-     * @return EFalse when resolve failed.
-     */
-    TBool ResolveErrorCode( TInt& aText1, TInt& aText2,
-            TInt& aBitmap, TInt& aMask );
-
-private:
-
-    // Used for complete runl, not owned 
-    TRequestStatus* iClientStatus;
-
-    // Pointer to notifer, not owned
-    CConnectionErrorDiscreetPopupNotif* iNotif;
-    
-    // Error code to be shown
-    TInt iErrorCode;
-    
-    // Handle to cmmanager interface
-    RCmManager icmManager;
-
-    };
-
-#endif // CCONNECTIONERRORDISCREETPOPUP_H
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/connectionerrordiscreetpopupnotif.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  Declaration of Generic Connection Ui Utilities Notifier
- *
- */
-
-#ifndef __CONNECTIONERRORDISCREETPOPUPNOTIF_H__
-#define __CONNECTIONERRORDISCREETPOPUPNOTIF_H__
-
-// INCLUDES
-#include "ConnectionDialogsNotifBase.h"
-
-//FORWARD DECLARATION
-class CConnectionErrorDiscreetPopup;
-
-/**
- * CConnectionErrorDiscreetPopupNotif class
- */
-NONSHARABLE_CLASS( CConnectionErrorDiscreetPopupNotif ) : 
-public CConnectionDialogsNotifBase
-    {
-public:
-    /**
-     * NewL function
-     * @param  -
-     * return CConnectionErrorDiscreetPopupNotif*
-     */
-    static CConnectionErrorDiscreetPopupNotif* NewL(
-            const TBool aResourceFileResponsible );
-
-    /**
-     * RegisterL register the client notifier function
-     * @param  -
-     * return TNotifierInfo
-     */
-    TNotifierInfo RegisterL();
-
-    /**
-     * Start the Notifier
-     * @param  aBuffer    Buffer
-     * @param  aReplySlot Identifies which message argument to use for the 
-     *                    reply. This message argument will refer to a 
-     *                    modifiable descriptor, a TDes8 type, into which
-     *                    data can be returned. 
-     * @param  aMessage   Message
-     * return -
-     */
-    void StartL( const TDesC8& aBuffer, TInt aReplySlot,
-            const RMessagePtr2& aMessage );
-
-    /**
-     * Cancel() the notifier
-     * @param  -
-     * return -
-     */
-    void Cancel();
-
-    /**
-     * CompleteL the notifier is complete
-     * @param  aStatus status
-     * return  -
-     */
-    void CompleteL( TInt aStatus );
-
-protected:
-    /**
-     * Constructor
-     */
-    CConnectionErrorDiscreetPopupNotif();
-
-protected:
-
-    // pointer to active object, owned
-    CConnectionErrorDiscreetPopup* iActiveNote;
-
-    };
-
-#endif //__CONNECTINGVIADISCREETPOPUPNOTIF_H__
-// End of File
-
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/devicedialogobserver.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/devicedialogobserver.h	Mon May 03 12:53:07 2010 +0300
@@ -18,7 +18,7 @@
 #ifndef __DEVICEDIALOGOBSERVER_H__
 #define __DEVICEDIALOGOBSERVER_H__
 
-#include "cellulardataconfirmation.h"
+#include "CellularDataConfirmation.h"
 
 NONSHARABLE_CLASS ( CDeviceDialogObserver ) : public CBase, public MHbDeviceDialogObserver
     {
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/nowlannetworksavailablenotif.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of CNoWLANNetworksAvailableNotif
-*
-*/
-
-
-
-#ifndef __NO_WLAN_NETWORKS_AVAILABLE_NOTE_H__
-#define __NO_WLAN_NETWORKS_AVAILABLE_NOTE_H__
-
-// INCLUDES
-#include "ConnectionDialogsNotifBase.h"
-#include "nowlansdiscreetpopup.h"
-
-//FORWARD DECLARATION
-class CNoWlansDiscreetPopup;
-
-/**
- * CNoWLANNetworksAvailableNotif class
- */
-NONSHARABLE_CLASS( CNoWLANNetworksAvailableNotif ) 
-                                        : public CConnectionDialogsNotifBase
-    {
-    public:
-        /**
-        * NewL function
-        * @param  -
-        * return CNoWLANNetworksAvailableNotif*
-        */
-        static CNoWLANNetworksAvailableNotif* NewL( 
-                                        const TBool aResourceFileResponsible );
-        
-        /**
-        * RegisterL register the client notifier function
-        * @param  -
-        * return TNotifierInfo
-        */
-        TNotifierInfo RegisterL();
-
-        /**
-        * Start the Notifier
-        * @param  aBuffer    Buffer
-        * @param  aReplySlot Identifies which message argument to use for the 
-        *                    reply. This message argument will refer to a 
-        *                    modifiable descriptor, a TDes8 type, into which
-        *                    data can be returned. 
-        * @param  aMessage   Message
-        * return -
-        */
-        void StartL( const TDesC8& aBuffer, TInt aReplySlot, 
-                     const RMessagePtr2& aMessage );
-                 
-        /**
-        * Cancel() the notifier
-        * @param  -
-        * return -
-        */
-        void Cancel();         
-    
-        /**
-        * CompleteL the notifier is complete
-        * @param  aStatus status
-        * return  -
-        */
-        void CompleteL( TInt aStatus );
-                     
-    protected:    
-        /**
-        * Constructor
-        */
-        CNoWLANNetworksAvailableNotif();    
-    
-    protected:
-        // pointer to active object, owned
-        CNoWlansDiscreetPopup* iActiveNote;
-
-    };    
-
-#endif //__NO_WLAN_NETWORKS_AVAILABLE_NOTE_H__
-
-// End of File
-    
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifInc/nowlansdiscreetpopup.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  Declaration of CNoWlansDiscreetPopup
- *
- */
-
-#ifndef CNOWLANSDISCREETPOPUP_H
-#define CNOWLANSDISCREETPOPUP_H
-
-// INCLUDES
-#include <e32base.h>	// For CActive, link against: euser.lib
-
-#include "ConnectionDialogsNotifBase.h"
- 
-/**
- * CConnectingViaDiscreetPopup class
- */
-NONSHARABLE_CLASS( CNoWlansDiscreetPopup ) : public CActive
-    {
-public:
-    /**
-     * Destructor
-     * Cancel and destroy
-     */
-    virtual ~CNoWlansDiscreetPopup();
-
-    /**
-     * NewL function 
-     * Two-phased constructor.
-     * @param  aNotif a pointer to notifier plugin
-     */
-    static CNoWlansDiscreetPopup* NewL(
-            CConnectionDialogsNotifBase* aNotif );
-
-    /**
-     * NewL function 
-     * Two-phased constructor.
-     * @param  aNotif a pointer to notifier plugin
-     */
-    static CNoWlansDiscreetPopup* NewLC(
-            CConnectionDialogsNotifBase* aNotif );
-
-public:
-    /**
-     * StartL Function for making the initial request
-     */
-    void StartL();
-
-private:
-    /**
-     * C++ constructor
-     */
-    CNoWlansDiscreetPopup( CConnectionDialogsNotifBase* aNotif );
-
-    /**
-     * Second-phase constructor
-     */
-    void ConstructL();
-
-private:
-    /**
-     * From CActive
-     */
-    void RunL();
-
-    /**
-     * From CActive 
-     */
-    void DoCancel();
-
-    /**
-     * From CActive 
-     */
-    TInt RunError( TInt aError );
-    
-private:
-    // Used for complete runl, not owned 
-    TRequestStatus* iClientStatus;
-
-    // Pointer to notifer, not owned
-    CConnectionDialogsNotifBase* iNotif;
-    };
-
-#endif // CNOWLANSDISCREETPOPUP_H
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/ActiveConnectViaNote.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,305 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CActiveConnectViaNote.
-*
-*/
-
-
-// INCLUDE FILES
-#include "ActiveConnectViaNote.h"
-#include "ConnectViaNoteNotif.h"
-#include "NoteDlgSuppressingSwitch.h"
-#include "ConnectionDialogsLogger.h"
-
-#include <ConnUiUtilsNotif.rsg>
-#include <StringLoader.h>
-
-#include <eikimage.h>
-#include <gulicon.h>
-
-#include <cmconnectionmethod.h>
-#include <cmdestination.h>
-
-#ifndef __WINS__
-#include <featmgr.h>
-#include <wlanmgmtclient.h>
-#include <cmmanagerext.h>
-#endif  // !__WINS__
-
-// CONSTANTS
-
-LOCAL_D const TInt KStringsGranularity = 2;
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CActiveConnectViaNote::CActiveConnectViaNote()
-// ---------------------------------------------------------
-//
-CActiveConnectViaNote::CActiveConnectViaNote( 
-                           CConnectViaNoteNotif* aNotif, 
-                           const TConnUiUiDestConnMethodNoteId aData ) 
-: CActive( KErrNone ), 
-  iNotif( aNotif ), 
-  iIcon( NULL ), 
-  iData( aData )
-    {
-    CActiveScheduler::Add( this );            
-    }
-    
-// ---------------------------------------------------------
-// CActiveConnectViaNote::DoCancel()
-// ---------------------------------------------------------
-// 
-void CActiveConnectViaNote::DoCancel()
-    {
-    }
- 
-// ---------------------------------------------------------
-// CActiveConnectViaNote::RunL()
-// ---------------------------------------------------------
-//     
-void CActiveConnectViaNote::RunL()
-    {
-    CLOG_ENTERFN( "CActiveConnectViaNote::RunL" );  
-    
-    if( iStatus == KErrNone )
-        {
-        iCmManager.OpenL();
-        
-        HBufC* noteText = GetDialogTextL();
-        CleanupStack::PushL( noteText );
-                
-        CNoteDlgSuppressingSwitch* dialog = new (ELeave) 
-                            CNoteDlgSuppressingSwitch( 
-                            REINTERPRET_CAST( CEikDialog**, &dialog ) );
-        CleanupStack::PushL( dialog );
-        
-        CEikImage* image = CreateEikImageFromCGulIconLC();
-        dialog->SetIconL( image ); //The dialog takes ownership of the pointer
-        CleanupStack::Pop( image );
-        
-        CleanupStack::Pop( dialog );
-
-        TInt resId = R_CONNECTING_VIA_INFO_NOTE;    
-        switch( iData.iNoteId )
-            {
-            case EConnectedViaDestConnMethodConfirmationNote:
-            case EConnectedViaConnMethodConfirmationNote:
-                {
-                resId = R_CONNECTED_VIA_CONFIRM_NOTE;
-                break;
-                }
-            case EConnectingToConnMethodInfoNote:
-            default :
-                {                
-                break;
-                }
-            }
-            
-        dialog->PrepareLC( resId );
-        dialog->ActivateL();
-        dialog->SetCurrentLabelL( EGeneralNote, noteText->Des() );
-        
-        dialog->RunDlgLD( CAknNoteDialog::ELongTimeout, 
-                          CAknNoteDialog::ENoTone );
-                                         
-        CleanupStack::PopAndDestroy( noteText );
-        
-        CLOG_WRITE( "CActiveConnectViaNote::RunL: Completing with KErrNone" );
-
-        iNotif->CompleteL( KErrNone );                     
-        }     
-    
-    CLOG_LEAVEFN( "CActiveConnectViaNote::RunL" );  
-    }
-    
-// ---------------------------------------------------------
-// CActiveConnectViaNote::LaunchActiveConnectViaNote()
-// ---------------------------------------------------------
-//    
-void CActiveConnectViaNote::LaunchActiveConnectViaNote()
-    {
-    CLOG_ENTERFN( "CActiveConnectViaNote::LaunchActiveConnectViaNote" );  
-    
-    SetActive();    
-    iClientStatus = &iStatus;
-    User::RequestComplete( iClientStatus, KErrNone );    
-    }
-    
-    
-// ---------------------------------------------------------
-// CActiveConnectViaNote::~CActiveConnectViaNote()
-// ---------------------------------------------------------
-//    
-CActiveConnectViaNote::~CActiveConnectViaNote()
-    {
-    Cancel();  
-    iCmManager.Close();  
-       
-    delete iIcon;
-    iIcon = NULL;      
-    }
-    
-// ---------------------------------------------------------
-// CActiveConnectViaNote::GetDialogTextL()
-// ---------------------------------------------------------
-//    
-HBufC* CActiveConnectViaNote::GetDialogTextL()
-    {
-    HBufC* tempText = NULL;
-    switch( iData.iNoteId )
-        {
-        case EConnectedViaDestConnMethodConfirmationNote:
-            {
-            HBufC* destName = GetDestinationNameLC( iData.iDestination );
-            HBufC* cmName = GetConnectionMethodNameLC( 
-                                                    iData.iConnectionMethod );
-            CDesCArrayFlat* strings = new( ELeave ) CDesCArrayFlat( 
-                                                        KStringsGranularity );
-            CleanupStack::PushL( strings );
-            
-            strings->AppendL( *destName );   
-            strings->AppendL( *cmName );
-            tempText = StringLoader::LoadL( 
-                                        R_QTN_NETW_CONSET_CONF_CONNECTED_TO,
-                                        *strings );
-
-            CleanupStack::PopAndDestroy( strings );  
-            CleanupStack::PopAndDestroy( cmName );
-            CleanupStack::PopAndDestroy( destName );
-            break;
-            }
-
-        case EConnectedViaConnMethodConfirmationNote:
-        case EConnectingToConnMethodInfoNote:
-        default:
-            {
-            HBufC* cmNname = GetConnectionMethodNameLC( 
-                                                    iData.iConnectionMethod );
-            tempText = StringLoader::LoadL( 
-                ( iData.iNoteId == EConnectedViaConnMethodConfirmationNote ) ?
-                R_QTN_NETW_CONSET_CONF_CONNECTED_VIA_METHOD : 
-                R_QTN_NETW_CONSET_INFO_ROAMING_TO,
-                *cmNname );
-            CleanupStack::PopAndDestroy( cmNname ); 
-            break;
-            }
-        }
-
-    return tempText;
-    }
-
-// ---------------------------------------------------------
-// CActiveConnectViaNote::GetDestinationNameLC()
-// ---------------------------------------------------------
-//    
-HBufC* CActiveConnectViaNote::GetDestinationNameLC( const TUint32 aDestId )
-    {
-    HBufC* tempDestName( NULL );
-        
-    RCmDestination destination = iCmManager.DestinationL( aDestId );    
-    CleanupClosePushL( destination );
-
-    tempDestName = destination.NameLC();
-    CleanupStack::Pop( tempDestName );  // tempDestName
-
-    CleanupStack::PopAndDestroy();  // destination
-    CleanupStack::PushL( tempDestName );
-            
-    return tempDestName;
-    }
-    
-// ---------------------------------------------------------
-// CActiveConnectViaNote::GetConnectionMethodNameLC()
-// ---------------------------------------------------------
-//    
-HBufC* CActiveConnectViaNote::GetConnectionMethodNameLC( 
-                                                    const TUint32 aConnMId )
-    {
-    HBufC* tempCMName( NULL );
-    TBool isEasyWlan = EFalse;
-
-#ifndef __WINS__
-    
-    FeatureManager::InitializeLibL();
-    TBool isWlanSupported = 
-                    FeatureManager::FeatureSupported( KFeatureIdProtocolWlan );
-    FeatureManager::UnInitializeLib();
-
-    if ( isWlanSupported )
-        {
-        if ( iCmManager.EasyWlanIdL() == iData.iConnectionMethod )
-            {
-            TWlanSsid ssidConn;
-            CWlanMgmtClient *wlanMgmtClient = CWlanMgmtClient::NewL();
-            CleanupStack::PushL( wlanMgmtClient );
-
-            if ( !wlanMgmtClient->GetConnectionSsid( ssidConn ) )
-                {
-                tempCMName = HBufC::NewL( ssidConn.Length() );
-                tempCMName->Des().Copy( ssidConn ); 
-                isEasyWlan = ETrue;
-                }
-
-            wlanMgmtClient->CancelNotifications();
-            CleanupStack::PopAndDestroy( wlanMgmtClient );
-            }
-        }
-#endif  // !__WINS__
-    
-    CLOG_WRITEF( _L( "Connection Method id in CActiveConnectViaNote: %d" ), aConnMId );
-
-    RCmConnectionMethod connMethod = iCmManager.ConnectionMethodL( aConnMId );
-    CleanupClosePushL( connMethod );
-
-    TInt tempIcon = connMethod.GetIntAttributeL( CMManager::ECmBearerIcon );
-    CLOG_WRITEF( _L( "tempIcon in CActiveConnectViaNote: %d" ), tempIcon );
-    iIcon = REINTERPRET_CAST( CGulIcon*, tempIcon );
-    
-    if ( !isEasyWlan )
-        {
-        tempCMName = connMethod.GetStringAttributeL( CMManager::ECmName );
-        }
-    
-    CleanupStack::PopAndDestroy();  // connMethod
-    CleanupStack::PushL( tempCMName );
-    
-    return tempCMName;
-    }
-    
-// ---------------------------------------------------------
-// CActiveConnectViaNote::CreateEikImageFromCGulIconLC()
-// ---------------------------------------------------------
-//   
-CEikImage* CActiveConnectViaNote::CreateEikImageFromCGulIconLC()
-    {
-    CEikImage* tempImage = new ( ELeave ) CEikImage();
-    
-    if( iIcon )
-        {                
-        CFbsBitmap* bm = iIcon->Bitmap();
-        CFbsBitmap* m = iIcon->Mask();
-        tempImage->SetPicture( bm, m );
-        iIcon->SetBitmapsOwnedExternally( ETrue );                
-        }
-    
-    CleanupStack::PushL( tempImage );
-    return tempImage;    
-    }
-
-
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/ConnUiUtilsNotif.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/ConnUiUtilsNotif.cpp	Mon May 03 12:53:07 2010 +0300
@@ -26,12 +26,8 @@
 #include "EasyWepDlgNotif.h"
 #include "EasyWpaDlgNotif.h"
 #include "WLANNetworkUnavailableNoteNotif.h"
-#include "ConnectViaNoteNotif.h"
 #include "wlanpowersavetestnotif.h"
 #include "easywapidlgnotif.h"
-#include "nowlannetworksavailablenotif.h"
-#include "connectingviadiscreetpopupnotif.h"
-#include "connectionerrordiscreetpopupnotif.h"
 #include "cellulardataconfirmation.h"
 
 // CONSTANTS
@@ -119,11 +115,6 @@
     aNotifiers->AppendL( serNotify );
     CleanupStack::Pop( serNotify );     
     
-    serNotify = CConnectViaNoteNotif::NewL( resourceFileResponsible );
-    CleanupStack::PushL( serNotify );
-    aNotifiers->AppendL( serNotify );
-    CleanupStack::Pop( serNotify );     
-  
     serNotify = CWlanPowerSaveQueryNotif::NewL( resourceFileResponsible );
     CleanupStack::PushL( serNotify );
     aNotifiers->AppendL( serNotify );
@@ -134,20 +125,6 @@
     aNotifiers->AppendL( serNotify );
     CleanupStack::Pop( serNotify );    
 
-    serNotify = CConnectingViaDiscreetPopupNotif::NewL( resourceFileResponsible );
-    CleanupStack::PushL( serNotify );
-    aNotifiers->AppendL( serNotify );
-    CleanupStack::Pop( serNotify );
-    
-    serNotify = CNoWLANNetworksAvailableNotif::NewL( resourceFileResponsible );
-    CleanupStack::PushL( serNotify );
-    aNotifiers->AppendL( serNotify );
-    CleanupStack::Pop( serNotify );
-
-    serNotify = CConnectionErrorDiscreetPopupNotif::NewL( resourceFileResponsible );
-    CleanupStack::PushL( serNotify );
-    aNotifiers->AppendL( serNotify );
-    CleanupStack::Pop( serNotify );
     }
     
 // End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/ConnectViaNoteNotif.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CConnectViaNoteNotif.
-*
-*/
-
-
-// INCLUDE FILES
-#include "ConnectViaNoteNotif.h"
-#include "ConnectionUiUtilitiesCommon.h"
-#include "ActiveConnectViaNote.h"
-#include "ConnUiUtilsNotif.h"
-#include "ConnectionDialogsLogger.h"
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CConnectViaNoteNotif::TNotifierInfo CConnectViaNoteNotif::RegisterL()
-// ---------------------------------------------------------
-//
-CConnectViaNoteNotif::TNotifierInfo CConnectViaNoteNotif::RegisterL()
-    {
-    iInfo.iUid = KUidConnectViaNote;
-    iInfo.iPriority = ENotifierPriorityHigh;
-    iInfo.iChannel = KUidConnectViaNote;
-
-    return iInfo;
-    }
-
-// ---------------------------------------------------------
-// void CConnectViaNoteNotif::StartL
-// ---------------------------------------------------------
-//
-void CConnectViaNoteNotif::StartL( const TDesC8& aBuffer, 
-                                    TInt aReplySlot,
-                                    const RMessagePtr2& aMessage )
-    {
-    CLOG_ENTERFN( "CConnectViaNoteNotif::StartL" );  
-
-    TPckgBuf<TConnUiUiDestConnMethodNoteId> input;
-    input.Copy( aBuffer );
-    TConnUiUiDestConnMethodNoteId info = input();
-    
-    iReplySlot = aReplySlot;
-    iMessage = aMessage;
-    iCancelled = EFalse;
-
-    iActiveNote = new( ELeave ) CActiveConnectViaNote( this, info );
-        
-    iActiveNote->LaunchActiveConnectViaNote();       
-    }
-
-// ---------------------------------------------------------
-// void CConnectViaNoteNotif::Cancel()
-// ---------------------------------------------------------
-//
-void CConnectViaNoteNotif::Cancel()
-    {
-    CLOG_ENTERFN( "CConnectViaNoteNotif::Cancel" );  
-
-    if ( !iCancelled )
-        {
-        iCancelled = ETrue;
-        if ( !iMessage.IsNull() )
-            {   // No need to return an error code, we are just completing!
-            CLOG_WRITEF( _L( "Completing CConnectViaNoteNotif with KErrNone" ) );
-            iMessage.Complete( KErrNone );
-            }
-        
-        delete iActiveNote;
-        iActiveNote = NULL;
-        }
-
-    CLOG_LEAVEFN( "CConnectViaNoteNotif::Cancel" );  
-    }
-
-// ---------------------------------------------------------
-// void CConnectViaNoteNotif::CompleteL( TInt aStatus )
-// ---------------------------------------------------------
-//
-void CConnectViaNoteNotif::CompleteL( TInt aStatus )
-    {    
-    CLOG_ENTERFN( "CConnectViaNoteNotif::CompleteL" );  
-    CLOG_WRITEF( _L( "aStatus: %d" ),  aStatus );
-
-    delete iActiveNote;
-    iActiveNote = NULL;
-    iCancelled = ETrue;    
-    if ( !iMessage.IsNull() )
-        {
-        CLOG_WRITEF( _L( "Completing CConnectViaNoteNotif with %d" ),  aStatus );
-        iMessage.Complete( aStatus );
-        }
-    CLOG_LEAVEFN( "CConnectViaNoteNotif::CompleteL" );  
-    }
-
-
-// ---------------------------------------------------------
-// CConnectViaNoteNotif* CConnectViaNoteNotif::NewL()
-// ---------------------------------------------------------
-//
-CConnectViaNoteNotif* CConnectViaNoteNotif::NewL( 
-                                        const TBool aResourceFileResponsible )
-    {
-    CConnectViaNoteNotif* self = new ( ELeave ) CConnectViaNoteNotif();
-    CleanupStack::PushL( self );
-    self->ConstructL( KResourceFileName, aResourceFileResponsible );
-    CleanupStack::Pop();
-    return self;
-    }
-
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/connectingviadiscreetpopup.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,227 +0,0 @@
-/*
- * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  Implementation of CConnectingViaDiscreetPopup.
- *
- */
-
-// INCLUDE FILES
-#include <avkon.hrh>
-#include <akndiscreetpopup.h>
-#include <aknsconstants.hrh>
-#include <StringLoader.h>
-#include <utf.h>
-
-#include <cmmanagerext.h>
-#include <cmconnectionmethod.h>
-#include <cmconnectionmethodext.h>
-#include <cmpluginwlandef.h>
-
-#include <connectionuiutilities.mbg>
-#include <ConnUiUtilsNotif.rsg>
-
-#include "connectingviadiscreetpopup.h"
-
-// Connection Manager UIDs
-const TUid KDiscreetPopupUid =
-    {
-    0x101F84D0
-    };
-const TUid KDiscreetPopupViewUid =
-    {
-    0x2
-    };
-// Path of the app's iconfile
-_LIT( KIconFileName, "\\resource\\apps\\connectionuiutilities.mif" );
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CConnectingViaDiscreetPopup::CConnectingViaDiscreetPopup
-// ---------------------------------------------------------
-//
-CConnectingViaDiscreetPopup::CConnectingViaDiscreetPopup(
-        CConnectingViaDiscreetPopupNotif* aNotif) :
-            CActive(EPriorityUserInput), // Standard priority
-            iNotif(aNotif), iBearerType(0),
-            iConnectionName(NULL), iPopupFlags(0)
-    {
-    }
-
-// ---------------------------------------------------------
-// CConnectingViaDiscreetPopup::NewLC
-// ---------------------------------------------------------
-//
-CConnectingViaDiscreetPopup* CConnectingViaDiscreetPopup::NewLC(
-        CConnectingViaDiscreetPopupNotif* aNotif)
-    {
-    CConnectingViaDiscreetPopup* self =
-            new (ELeave) CConnectingViaDiscreetPopup(aNotif);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CConnectingViaDiscreetPopup::NewL
-// ---------------------------------------------------------
-//
-CConnectingViaDiscreetPopup* CConnectingViaDiscreetPopup::NewL(
-        CConnectingViaDiscreetPopupNotif* aNotif)
-    {
-    CConnectingViaDiscreetPopup* self = CConnectingViaDiscreetPopup::NewLC(
-            aNotif);
-    CleanupStack::Pop(); // self;
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CConnectingViaDiscreetPopup::ConstructL
-// ---------------------------------------------------------
-//
-void CConnectingViaDiscreetPopup::ConstructL()
-    {
-    CActiveScheduler::Add(this); // Add to scheduler
-    icmManager.OpenL();
-    }
-
-// ---------------------------------------------------------
-// CConnectingViaDiscreetPopup::~CConnectingViaDiscreetPopup
-// ---------------------------------------------------------
-//
-CConnectingViaDiscreetPopup::~CConnectingViaDiscreetPopup()
-    {
-    Cancel(); // Cancel any request, if outstanding
-    icmManager.Close();
-    // Delete instance variables if any
-    if (iConnectionName)
-        {
-        delete iConnectionName;
-        }
-    }
-
-// ---------------------------------------------------------
-// CConnectingViaDiscreetPopup::DoCancel
-// ---------------------------------------------------------
-//
-void CConnectingViaDiscreetPopup::DoCancel()
-    {
-    }
-
-// ---------------------------------------------------------
-// CConnectingViaDiscreetPopup::StartL
-// ---------------------------------------------------------
-//
-void CConnectingViaDiscreetPopup::StartL(TUint32 aIapId,
-        TBool aConnectionAlreadyActive)
-    {
-    Cancel(); // Cancel any request, just to be sure
-    iBearerType = 0;
-    delete iConnectionName;
-    iConnectionName = NULL;
-
-    if (!aConnectionAlreadyActive)
-        {
-        iPopupFlags = KAknDiscreetPopupDurationLong;
-        }
-
-    RCmConnectionMethod plugin;
-    CleanupClosePushL(plugin);
-    if (aIapId)
-        {
-        plugin = icmManager.ConnectionMethodL(aIapId);
-        iBearerType = plugin.GetIntAttributeL(CMManager::ECmBearerType);
-        TUint32 easyWLANIapId = icmManager.EasyWlanIdL();
-        if (easyWLANIapId != aIapId)
-            {
-            iConnectionName = plugin.GetStringAttributeL(CMManager::ECmName);
-            }
-        else
-            {
-            iConnectionName = plugin.GetStringAttributeL(CMManager::EWlanUsedSSID);
-            }
-        }
-    CleanupStack::PopAndDestroy(&plugin);
-
-    SetActive(); // Tell scheduler a request is active
-    iClientStatus = &iStatus;
-    User::RequestComplete(iClientStatus, KErrNone);
-    
-    // Complete client request before launching dialog
-    iNotif->SetCancelledFlag(ETrue);
-    iNotif->CompleteL(KErrNone);
-    }
-
-// ---------------------------------------------------------
-// CConnectingViaDiscreetPopup::RunL
-// ---------------------------------------------------------
-//
-void CConnectingViaDiscreetPopup::RunL()
-    {
-    if (iStatus == KErrNone)
-        {
-        TUint bitmapId = 0;
-        TUint maskId = 0;
-        if (iBearerType == KUidWlanBearerType)
-            {
-            bitmapId = EMbmConnectionuiutilitiesQgn_prop_wlan_bearer;
-            maskId = EMbmConnectionuiutilitiesQgn_prop_wlan_bearer_mask;
-            }
-        else
-            {
-            bitmapId = EMbmConnectionuiutilitiesQgn_prop_wml_gprs;
-            maskId = EMbmConnectionuiutilitiesQgn_prop_wml_gprs_mask;
-            }
-
-        // Load strings from resources
-        HBufC* stringText1 = StringLoader::LoadLC(
-                R_QTN_OCC_CONNECTING_DISCREET_POPUP_TEXT1);
-
-        HBufC* stringText2 = NULL;
-        if (iConnectionName)
-            {
-            stringText2 = StringLoader::LoadLC(
-                    R_QTN_OCC_CONNECTING_DISCREET_POPUP_TEXT2,
-                    *iConnectionName);
-            }
-        else
-            {
-            stringText2 = _L("''").AllocLC();
-            }
-
-        CAknDiscreetPopup::ShowGlobalPopupL(*stringText1, // first text row
-                *stringText2, // second text row
-                KAknsIIDDefault, // icon skin id
-                KIconFileName, // bitmap file path
-                bitmapId, // bitmap id
-                maskId, // mask id
-                iPopupFlags, // flags
-                0, // command id
-                NULL, // command observer
-                KDiscreetPopupUid, // application to be launched
-                KDiscreetPopupViewUid); // view to be activated
-        CleanupStack::PopAndDestroy(2);
-        }
-
-    // Cleanup
-    iNotif->Cancel();
-    }
-
-// ---------------------------------------------------------
-// CConnectingViaDiscreetPopup::RunError
-// ---------------------------------------------------------
-//
-TInt CConnectingViaDiscreetPopup::RunError(TInt aError)
-    {
-    return aError;
-    }
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/connectingviadiscreetpopupnotif.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-/*
- * Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). 
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  Implementation of CConnectingViaDiscreetPopupNotif.
- *
- */
-
-// INCLUDE FILES
-#include "connectingviadiscreetpopupnotif.h"
-#include "connectingviadiscreetpopup.h"
-#include "ConnUiUtilsNotif.h"
-#include "ConnectionDialogsUidDefs.h"
-#include "ConnectionUiUtilitiesCommon.h"
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CConnectingViaDiscreetPopupNotif::TNotifierInfo 
-//                               CConnectingViaDiscreetPopupNotif::RegisterL()
-// ---------------------------------------------------------
-//
-CConnectingViaDiscreetPopupNotif::TNotifierInfo CConnectingViaDiscreetPopupNotif::RegisterL()
-    {
-    iInfo.iUid = KUidConnectingViaDiscreetPopup;
-    iInfo.iPriority = ENotifierPriorityVHigh;
-    iInfo.iChannel = KUidConnectingViaDiscreetPopup;
-
-    return iInfo;
-    }
-
-// ---------------------------------------------------------
-// void CConnectingViaDiscreetPopupNotif::StartL()
-// ---------------------------------------------------------
-//
-void CConnectingViaDiscreetPopupNotif::StartL(const TDesC8& aBuffer,
-        TInt aReplySlot, const RMessagePtr2& aMessage)
-    {
-    if ( iActiveNote )
-        {
-        // Note is already active
-        aMessage.Complete( KErrNone );
-        return;
-        }
-    
-    iReplySlot = aReplySlot;
-    iMessage = aMessage;
-    iCancelled = ETrue;
-    iActiveNote = CConnectingViaDiscreetPopup::NewL(this);
-
-    TPckgBuf<TConnUiConnectingViaDiscreetPopup> data;
-    data.Copy(aBuffer);
-
-    iActiveNote->StartL( data().iIapId, data().iConnectionAlreadyActive );
-    iCancelled = EFalse;
-    }
-
-// ---------------------------------------------------------
-// void CConnectingViaDiscreetPopupNotif::CompleteL( TInt aStatus )
-// ---------------------------------------------------------
-//
-void CConnectingViaDiscreetPopupNotif::CompleteL(TInt aStatus)
-    {
-    iCancelled = ETrue;
-    if (!iMessage.IsNull())
-        {
-        iMessage.Complete(aStatus);
-        }
-    }
-
-// ---------------------------------------------------------
-// CConnectingViaDiscreetPopupNotif* CConnectingViaDiscreetPopupNotif::NewL()
-// ---------------------------------------------------------
-//
-CConnectingViaDiscreetPopupNotif* CConnectingViaDiscreetPopupNotif::NewL(
-        const TBool aResourceFileResponsible)
-    {
-    CConnectingViaDiscreetPopupNotif* self =
-            new (ELeave) CConnectingViaDiscreetPopupNotif();
-    CleanupStack::PushL(self);
-    self->ConstructL(KResourceFileName, aResourceFileResponsible);
-    CleanupStack::Pop();
-
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CConnectingViaDiscreetPopupNotif::CConnectingViaDiscreetPopupNotif()
-// ---------------------------------------------------------
-//
-CConnectingViaDiscreetPopupNotif::CConnectingViaDiscreetPopupNotif() :
-    CConnectionDialogsNotifBase(), iActiveNote(NULL)
-    {
-    }
-
-// ---------------------------------------------------------
-// void CConnectingViaDiscreetPopupNotif::Cancel()
-// ---------------------------------------------------------
-//
-void CConnectingViaDiscreetPopupNotif::Cancel()
-    {
-    if (!iCancelled)
-        {
-        iCancelled = ETrue;
-        if (!iMessage.IsNull())
-            {
-            iMessage.Complete(KErrCancel);
-            }
-        }
-    if ( iActiveNote )
-        {
-        delete iActiveNote;
-        iActiveNote = NULL;
-        }
-    }
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/connectionerrordiscreetpopup.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,432 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  Implementation of CConnectionErrorDiscreetPopup.
- *
- */
-
-// INCLUDE FILES
-#include "connectionerrordiscreetpopup.h"
-#include <akndiscreetpopup.h>
-#include <aknsconstants.hrh>
-#include <StringLoader.h>
-#include <cmmanagerext.h>
-#include <cmconnectionmethod.h>
-#include <cmconnectionmethodext.h>
-#include <cmpluginwlandef.h>
-#include <avkon.hrh>
-#include <connectionuiutilities.mbg>
-#include <ConnUiUtilsNotif.rsg>
-
-#ifdef _DEBUG
-#include <e32debug.h>
-#endif
-
-// Error code definitions are from these headers
-#include <wlanerrorcodes.h> // WLAN-specific error code definitions
-#include <in_iface.h>
-#include <etelpckt.h>       // GPRS-specific causes for Session Management
-#include <nd_err.h>         // NetDial errors
-#include <inet6err.h>       // IPv6 error constants
-#include <rmmcustomapi.h>
-
-// Errors in UI spec not found elsewhere
-const TInt KErrPDPMaxContextsReached = -6000;
-const TInt KErrDndNameNotFound = -5120;
-const TInt KErrGeneralConnection = -50000;
-const TInt KErrGenConnNoGPRSNetwork = -3609;
-
-// No discreet popup => Uid 0
-const TUid KDiscreetPopupUidNone =
-    {
-    0x0
-    };
-// Path of the app's iconfile
-_LIT( KIconFileName, "\\resource\\apps\\connectionuiutilities.mif" );
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CConnectionErrorDiscreetPopup::CConnectionErrorDiscreetPopup
-// ---------------------------------------------------------
-//
-CConnectionErrorDiscreetPopup::CConnectionErrorDiscreetPopup(
-        CConnectionErrorDiscreetPopupNotif* aNotif) :
-    CActive(EPriorityUserInput), // Standard priority
-            iNotif(aNotif), iErrorCode(KErrNone)
-    {
-    }
-
-// ---------------------------------------------------------
-// CConnectionErrorDiscreetPopup::NewLC
-// ---------------------------------------------------------
-//
-CConnectionErrorDiscreetPopup* CConnectionErrorDiscreetPopup::NewLC(
-        CConnectionErrorDiscreetPopupNotif* aNotif)
-    {
-    CConnectionErrorDiscreetPopup* self =
-            new (ELeave) CConnectionErrorDiscreetPopup(aNotif);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CConnectionErrorDiscreetPopup::NewL
-// ---------------------------------------------------------
-//
-CConnectionErrorDiscreetPopup* CConnectionErrorDiscreetPopup::NewL(
-        CConnectionErrorDiscreetPopupNotif* aNotif)
-    {
-    CConnectionErrorDiscreetPopup* self =
-            CConnectionErrorDiscreetPopup::NewLC(aNotif);
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CConnectionErrorDiscreetPopup::ConstructL
-// ---------------------------------------------------------
-//
-void CConnectionErrorDiscreetPopup::ConstructL()
-    {
-    CActiveScheduler::Add(this); // Add to scheduler
-    icmManager.OpenL();
-    }
-
-// ---------------------------------------------------------
-// CConnectionErrorDiscreetPopup::~CConnectionErrorDiscreetPopup
-// ---------------------------------------------------------
-//
-CConnectionErrorDiscreetPopup::~CConnectionErrorDiscreetPopup()
-    {
-    Cancel(); // Cancel any request, if outstanding
-    icmManager.Close();
-    // Delete instance variables if any
-    }
-
-// ---------------------------------------------------------
-// CConnectionErrorDiscreetPopup::DoCancel
-// ---------------------------------------------------------
-//
-void CConnectionErrorDiscreetPopup::DoCancel()
-    {
-    }
-
-// ---------------------------------------------------------
-// CConnectionErrorDiscreetPopup::StartL
-// ---------------------------------------------------------
-//
-void CConnectionErrorDiscreetPopup::StartL(TUint32 aErrCode)
-    {
-    Cancel(); // Cancel any request, just to be sure
-
-    iErrorCode = aErrCode;
-
-    SetActive(); // Tell scheduler a request is active
-    iClientStatus = &iStatus;
-    User::RequestComplete(iClientStatus, KErrNone);
-
-    // Complete the note so client can continue its tasks
-    // immediately
-    iNotif->SetCancelledFlag(ETrue);
-    iNotif->CompleteL(KErrNone);
-    }
-
-// ---------------------------------------------------------
-// CConnectionErrorDiscreetPopup::RunL
-// ---------------------------------------------------------
-//
-void CConnectionErrorDiscreetPopup::RunL()
-    {
-    if (iStatus == KErrNone)
-        {
-        TInt text1 = 0;
-        TInt text2 = 0;
-        TInt bitmapId = 0;
-        TInt maskId = 0;
-        // Show only if error code can be resolved
-        if (ResolveErrorCode(text1, text2, bitmapId, maskId))
-            {
-            // Load strings from resources
-            HBufC* stringText1 = StringLoader::LoadLC(text1);
-            HBufC* stringText2 = StringLoader::LoadLC(text2);
-            CAknDiscreetPopup::ShowGlobalPopupL(*stringText1, // 1st text row
-                    *stringText2, // second text row
-                    KAknsIIDDefault, // icon skin id
-                    KIconFileName, // bitmap file path
-                    bitmapId, // bitmap id
-                    maskId, // mask id
-                    KAknDiscreetPopupDurationLong, // flags
-                    0, // command id
-                    NULL, // command observer
-                    KDiscreetPopupUidNone, // application to be launched
-                    KDiscreetPopupUidNone); // view to be activated
-
-            CleanupStack::PopAndDestroy(2, stringText1);
-            }
-        }
-
-    // Cleanup
-    iNotif->Cancel();
-    }
-
-// ---------------------------------------------------------
-// CConnectionErrorDiscreetPopup::RunError
-// ---------------------------------------------------------
-//
-TInt CConnectionErrorDiscreetPopup::RunError(TInt aError)
-    {
-    return aError;
-    }
-
-// ---------------------------------------------------------
-// CConnectionErrorDiscreetPopup::ResolveErrorCode
-// ---------------------------------------------------------
-//
-TInt CConnectionErrorDiscreetPopup::ResolveErrorCode(TInt& aText1,
-        TInt& aText2, TInt& aBitmap, TInt& aMask)
-    {
-    
-#ifdef _DEBUG
-    RDebug::Print( _L("CConnectionErrorDiscreetPopup::ResolveErrorCode - code %d"),
-            iErrorCode );
-#endif
-    
-    // Icons, which are resolved at the end
-    enum TIconType
-        {
-        EIconWlan, EIconCellular, EIconNone
-        };
-
-    // For most cases, icon is WLAN
-    TIconType icon = EIconWlan;
-
-    // For most cases, aText1 = "Connection failed"
-    aText1 = R_QTN_OCC_CONNECTION_FAILED_DISCREET_POPUP_TEXT1;
-
-    // Resolve aText1, aText2 and icon of error code.
-    // Groups are from OCC GUI spec 1.0
-    switch (iErrorCode)
-        {
-        
-        // Group 1
-        case KErrIfChangingPassword:
-            icon = EIconCellular;
-            // These were GPRS; fall through
-        case KErrWlanInternalError:
-            aText2 = R_QTN_OCC_INTERNAL_ERROR_DISCREET_POPUP_TEXT2;
-            break;
-
-        // Group 2
-        case KErrWlanNetworkNotFound:
-            aText2 = R_QTN_OCC_WLAN_NOT_FOUND_DISCREET_POPUP_TEXT2;
-            break;
-
-        // Group 3
-        case KErrGprsUserAuthenticationFailure:
-            icon = EIconCellular;
-        // These were GPRS; fall through
-        case KErrWlanOpenAuthFailed:
-        case KErrWlanSharedKeyAuthRequired:
-        case KErrWlanWpaAuthRequired:
-        case KErrWlanWpaAuthFailed:
-        case KErrWlan802dot1xAuthFailed:
-        case KErrWlanWpaCounterMeasuresActive:
-        case KErrWlanPskModeRequired:
-        case KErrWlanEapModeRequired:
-        case KErrWlanEapSimFailed:
-        case KErrWlanEapTlsFailed:
-        case KErrWlanEapPeapFailed:
-        case KErrWlanEapMsChapv2: // Is the same as KErrWlanEapMsChaPFailed
-        case KErrWlanEapAkaFailed:
-        case KErrWlanEapTtlsFailed:
-        case KErrWlanLeapFailed:
-        case KErrWlanEapGtcFailed:
-        case KErrWlanWpa2OnlyModeNotSupported:
-        case KErrWlanEapFastTunnelCompromiseError:
-        case KErrWlanEapFastUnexpextedTlvExhanged:
-        case KErrWlanEapFastNoPacNorCertsToAuthenticateWithProvDisabled:
-        case KErrWlanEapFastNoMatchingPacForAid:
-        case KErrWlanEapFastAuthFailed:
-        case KErrWlanEapFastPacStoreCorrupted:
-            aText2 = R_QTN_OCC_AUTH_ERROR_DISCREET_POPUP_TEXT2;
-            break;
-
-        // Group 4
-        case KErrWlanSharedKeyAuthFailed:
-        case KErrWlanIllegalWpaPskKey:
-        case KErrWlanIllegalEncryptionKeys:
-            aText2 = R_QTN_OCC_CHECK_KEY_DISCREET_POPUP_TEXT2;
-            break;
-
-        // Group 5
-        case KErrExitModemError:
-        case KErrExitLoginFail:
-        case KErrExitScriptTimeOut:
-        case KErrExitScriptError:
-        case KErrIfAuthenticationFailure:
-        case KErrIfAuthNotSecure:
-        case KErrIfAccountDisabled:
-        case KErrIfRestrictedLogonHours:
-        case KErrIfPasswdExpired:
-        case KErrIfNoDialInPermission:
-        case KErrGprsMissingorUnknownAPN:
-            icon = EIconCellular;
-            aText2 = R_QTN_OCC_CHECK_SETTINGS_DISCREET_POPUP_TEXT2;
-            break;
-
-        // Group 6
-        case KErrWlanSimNotInstalled:
-            aText2 = R_QTN_OCC_SIM_ERROR_DISCREET_POPUP_TEXT2;
-            break;
-
-        // Group 7
-        case KErrWlanNotSubscribed:
-        case KErrWlanAccessBarred:
-            aText2 = R_QTN_OCC_SERVICE_ERROR_DISCREET_POPUP_TEXT2;
-            break;
-
-        // Group 8
-        case KErrPermissionDenied:
-            icon = EIconNone;  // Permission denied may come with any bearer.
-        // Fall through
-        case KErrWlanPasswordExpired:
-        case KErrWlanNoDialinPermissions:
-        case KErrWlanAccountDisabled:
-        case KErrWlanRestrictedLogonHours:
-        case KErrWlanServerCertificateExpired:
-        case KErrWlanCerficateVerifyFailed:
-        case KErrWlanNoUserCertificate:
-        case KErrWlanNoCipherSuite:
-        case KErrWlanUserRejected:
-        case KErrWlanUserCertificateExpired:
-            aText2 = R_QTN_OCC_ACCESS_ERROR_DISCREET_POPUP_TEXT2;
-            break;
-
-        // Group 9
-        case KErrPDPMaxContextsReached:
-            icon = EIconCellular;
-            // These were GPRS; fall through
-        case KErrWlanConnAlreadyActive:
-            aText2 = R_QTN_OCC_ALREADY_ACT_DISCREET_POPUP_TEXT2;
-            break;
-
-        // Group 10
-        case KErrWlanSignalTooWeak:
-            aText2 = R_QTN_OCC_WLAN_WEAK_DISCREET_POPUP_TEXT2;
-            break;
-
-        // Group 11
-        case KErrIfCallbackNotAcceptable:
-        case KErrIfDNSNotFound:
-        case KErrIfLRDBadLine:
-        case KErrNetUnreach:
-        case KErrHostUnreach:
-        case KErrNoProtocolOpt:
-        case KErrUrgentData:
-        case KErrInet6NoRoute:
-        case KErrDndNameNotFound:
-        case KErrGeneralConnection:
-        case KErrGprsMSCTemporarilyNotReachable:
-        case KErrGprsLlcOrSndcpFailure:
-        case KErrGprsInsufficientResources:
-        case KErrGprsActivationRejectedByGGSN:
-        case KErrPacketDataTsyInvalidAPN:
-            icon = EIconCellular;
-            // These were GPRS; fall through
-        case KErrWlanRoamingFailed:
-            aText2 = R_QTN_OCC_TRY_AGAIN_DISCREET_POPUP_TEXT2;
-            break;
-
-        // Group 12
-        case KErrGenConnNoGPRSNetwork:
-        case KErrGprsServicesNotAllowed:
-        case KErrGprsAndNonGprsServicesNotAllowed:
-        case KErrGprsMSIdentityCannotBeDerivedByTheNetwork:
-        case KErrGprsMSImplicitlyDetached:
-        case KErrGsmMMNetworkFailure:
-        case KErrGprsUnknownPDPAddress:
-        case KErrGprsActivationRejected:
-        case KErrGsmMMServiceOptionNotSubscribed:
-        case KErrGsmMMServiceOptionTemporaryOutOfOrder:
-        case KErrGprsNSAPIAlreadyUsed:
-        case KErrGprsQoSNotAccepted:
-        case KErrGprsReactivationRequested:
-            icon = EIconCellular;
-            aText2 = R_QTN_OCC_CONN_UNAVAILABLE_DISCREET_POPUP_TEXT2;
-            break;
-
-        // Group 13
-        case KErrWlanProtectedSetupDevicePasswordAuthFailure:
-        case KErrWlanProtectedSetupPINMethodNotSupported:
-        case KErrWlanProtectedSetupPBMethodNotSupported:
-            aText1 = R_QTN_OCC_CONFIG_FAILED_DISCREET_POPUP_TEXT1;
-            aText2 = R_QTN_OCC_AUTH_ERROR_DISCREET_POPUP_TEXT2;
-            break;
-
-        // Group 14
-        case KErrWlanProtectedSetupOOBInterfaceReadError:
-        case KErrWlanProtectedSetupDecryptionCRCFailure:
-        case KErrWlanProtectedSetup2_4ChannelNotSupported:
-        case KErrWlanProtectedSetup5_0ChannelNotSupported:
-        case KErrWlanProtectedSetupNetworkAuthFailure:
-        case KErrWlanProtectedSetupNoDHCPResponse:
-        case KErrWlanProtectedSetupFailedDHCPConfig:
-        case KErrWlanProtectedSetupIPAddressConflict:
-        case KErrWlanProtectedSetupCouldNotConnectToRegistrar:
-        case KErrWlanProtectedSetupMultiplePBCSessionsDetected:
-        case KErrWlanProtectedSetupRogueActivitySuspected:
-        case KErrWlanProtectedSetupDeviceBusy:
-        case KErrWlanProtectedSetupSetupLocked:
-        case KErrWlanProtectedSetupMessageTimeout:
-        case KErrWlanProtectedSetupRegistrationSessionTimeout:
-            aText1 = R_QTN_OCC_CONFIG_FAILED_DISCREET_POPUP_TEXT1;
-            aText2 = R_QTN_OCC_TRY_AGAIN_DISCREET_POPUP_TEXT2;
-            break;
-
-        // Skipped errors, for which popup is not shown.
-        case KErrNone:
-        case KErrConnectionTerminated:
-        case KErrDisconnected:
-        case KErrCancel:
-            return EFalse;
-
-        // For error values not specifically mapped to any error message
-        // the discreet pop-up #12 is used.
-        default:
-            aText2 = R_QTN_OCC_CONN_UNAVAILABLE_DISCREET_POPUP_TEXT2;
-            icon = EIconNone;
-            break;
-        }
-
-    // Resolve icon to aBitmap & aMask
-    switch (icon)
-        {
-        case EIconWlan:
-            aBitmap = EMbmConnectionuiutilitiesQgn_prop_wlan_bearer;
-            aMask = EMbmConnectionuiutilitiesQgn_prop_wlan_bearer_mask;
-            break;
-        case EIconCellular:
-            aBitmap = EMbmConnectionuiutilitiesQgn_prop_wml_gprs;
-            aMask = EMbmConnectionuiutilitiesQgn_prop_wml_gprs_mask;
-            break;
-        default:
-            ASSERT(icon == EIconNone);
-            aBitmap = -1;
-            aMask = -1;
-            break;
-        }
-
-    return ETrue;
-    }
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/connectionerrordiscreetpopupnotif.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:  Implementation of CConnectionErrorDiscreetPopupNotif.
- *
- */
-
-// INCLUDE FILES
-#include "connectionerrordiscreetpopupnotif.h"
-#include "connectionerrordiscreetpopup.h"
-#include "ConnUiUtilsNotif.h"
-#include "ConnectionDialogsUidDefs.h"
-#include "ConnectionUiUtilitiesCommon.h"
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CConnectionErrorDiscreetPopupNotif::TNotifierInfo 
-//                               CConnectionErrorDiscreetPopupNotif::RegisterL()
-// ---------------------------------------------------------
-//
-CConnectionErrorDiscreetPopupNotif::TNotifierInfo 
-        CConnectionErrorDiscreetPopupNotif::RegisterL()
-    {
-    iInfo.iUid = KUidConnectionErrorDiscreetPopup;
-    iInfo.iPriority = ENotifierPriorityVHigh;
-    iInfo.iChannel = KUidConnectionErrorDiscreetPopup;
-
-    return iInfo;
-    }
-
-// ---------------------------------------------------------
-// void CConnectionErrorDiscreetPopupNotif::StartL()
-// ---------------------------------------------------------
-//
-void CConnectionErrorDiscreetPopupNotif::StartL( const TDesC8& aBuffer,
-        TInt aReplySlot, const RMessagePtr2& aMessage )
-    {
-    if ( iActiveNote )
-        {
-        // Note is already active
-        aMessage.Complete( KErrNone );
-        return;
-        }
-    iReplySlot = aReplySlot;
-    iMessage = aMessage;
-    iCancelled = EFalse;
-
-    iActiveNote = CConnectionErrorDiscreetPopup::NewL( this );
-
-    TPckgBuf<TUint32> data;
-    data.Copy( aBuffer );
-
-    iActiveNote->StartL( data() );
-    iCancelled = EFalse;
-    }
-
-// ---------------------------------------------------------
-// void CConnectionErrorDiscreetPopupNotif::CompleteL( TInt aStatus )
-// ---------------------------------------------------------
-//
-void CConnectionErrorDiscreetPopupNotif::CompleteL( TInt aStatus )
-    {
-    iCancelled = ETrue;
-    if ( !iMessage.IsNull() )
-        {
-        iMessage.Complete( aStatus );
-        }
-    }
-
-// ---------------------------------------------------------
-// CConnectionErrorDiscreetPopupNotif* 
-//        CConnectionErrorDiscreetPopupNotif::NewL()
-// ---------------------------------------------------------
-//
-CConnectionErrorDiscreetPopupNotif* CConnectionErrorDiscreetPopupNotif::NewL(
-        const TBool aResourceFileResponsible )
-    {
-    CConnectionErrorDiscreetPopupNotif* self =
-            new (ELeave) CConnectionErrorDiscreetPopupNotif();
-    CleanupStack::PushL( self );
-    self->ConstructL( KResourceFileName, aResourceFileResponsible );
-    CleanupStack::Pop( self );
-
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CConnectionErrorDiscreetPopupNotif::CConnectionErrorDiscreetPopupNotif()
-// ---------------------------------------------------------
-//
-CConnectionErrorDiscreetPopupNotif::CConnectionErrorDiscreetPopupNotif() :
-    CConnectionDialogsNotifBase(), iActiveNote( NULL )
-    {
-    }
-
-// ---------------------------------------------------------
-// void CConnectionErrorDiscreetPopupNotif::Cancel()
-// ---------------------------------------------------------
-//
-void CConnectionErrorDiscreetPopupNotif::Cancel()
-    {
-    if ( !iCancelled )
-        {
-        iCancelled = ETrue;
-        if ( !iMessage.IsNull() )
-            {
-            iMessage.Complete( KErrCancel );
-            }
-        }
-    if ( iActiveNote )
-        {
-        delete iActiveNote;
-        iActiveNote = NULL;
-        }
-    }
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/nowlannetworksavailablenotif.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CNoWLANNetworksAvailableNotif.
-*
-*/
-
-// INCLUDE FILES
-#include "ConnectionDialogsUidDefs.h"
-#include "nowlannetworksavailablenotif.h"
-#include "nowlansdiscreetpopup.h"
-#include "ConnUiUtilsNotif.h"
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CNoWLANNetworksAvailableNotif::TNotifierInfo 
-//                 CNoWLANNetworksAvailableNotif::RegisterL()
-// ---------------------------------------------------------
-//
-CNoWLANNetworksAvailableNotif::TNotifierInfo 
-                   CNoWLANNetworksAvailableNotif::RegisterL()
-    {
-    iInfo.iUid      = KUidNoWLANNetworksAvailableNote;
-    iInfo.iPriority = ENotifierPriorityVHigh;
-    iInfo.iChannel  = KUidNoWLANNetworksAvailableNote;
-
-    return iInfo;
-    }
-
-
-// ---------------------------------------------------------
-// void CNoWLANNetworksAvailableNotif::StartL()
-// ---------------------------------------------------------
-//
-void CNoWLANNetworksAvailableNotif::StartL( const TDesC8& /*aBuffer*/, 
-                                            TInt aReplySlot,
-                                            const RMessagePtr2& aMessage )
-    {
-    if ( iActiveNote )
-        {
-        // Note is already active
-        aMessage.Complete( KErrNone );
-        return;
-        }
-    
-    iReplySlot = aReplySlot;
-    iMessage   = aMessage;
-    iCancelled = EFalse;
-            
-    iActiveNote = CNoWlansDiscreetPopup::NewL( this );
-        
-    iActiveNote->StartL();       
-    }
-    
-// ---------------------------------------------------------
-// void CNoWLANNetworksAvailableNotif::CompleteL( TInt aStatus )
-// ---------------------------------------------------------
-//
-void CNoWLANNetworksAvailableNotif::CompleteL( TInt aStatus )
-    {
-    iCancelled = ETrue;
-    
-    if ( !iMessage.IsNull() )
-        {
-        iMessage.Complete( aStatus );
-        }
-    }    
-
-// ---------------------------------------------------------
-// CNoWLANNetworksAvailableNotif* CNoWLANNetworksAvailableNotif::NewL()
-// ---------------------------------------------------------
-//
-CNoWLANNetworksAvailableNotif* CNoWLANNetworksAvailableNotif::NewL( 
-                                        const TBool aResourceFileResponsible )
-    {
-    CNoWLANNetworksAvailableNotif* self = 
-                            new( ELeave ) CNoWLANNetworksAvailableNotif();
-    CleanupStack::PushL( self );
-    self->ConstructL( KResourceFileName, aResourceFileResponsible );
-    CleanupStack::Pop();
-
-    return self;
-    }
-    
-
-// ---------------------------------------------------------
-// CNoWLANNetworksAvailableNotif::CNoWLANNetworksAvailableNotif()
-// ---------------------------------------------------------
-//
-CNoWLANNetworksAvailableNotif::CNoWLANNetworksAvailableNotif() 
-: CConnectionDialogsNotifBase(), 
-  iActiveNote( NULL )
-{    
-}    
-
-// ---------------------------------------------------------
-// void CNoWLANNetworksAvailableNotif::Cancel()
-// ---------------------------------------------------------
-//
-void CNoWLANNetworksAvailableNotif::Cancel()
-    {
-    if ( !iCancelled )
-        {
-        iCancelled = ETrue;
-        
-        if ( !iMessage.IsNull() )
-            {
-            iMessage.Complete( KErrCancel );
-            }
-        }
-    
-    if ( iActiveNote )
-        {
-        delete iActiveNote;
-        iActiveNote = NULL;
-        }
-    }
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/ActiveWrapper.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/ActiveWrapper.h	Mon May 03 12:53:07 2010 +0300
@@ -26,7 +26,7 @@
 
 
 // CONSTANTS
-const TUint KNumberOfWrappedDialogs = 13;
+const TUint KNumberOfWrappedDialogs = 7;
 
 enum TWrappedDialogs
     {
@@ -34,15 +34,9 @@
     EOffLineWlan,
     EWlanDisabled,
     EWlanNetwUnavail,
-    EConnViaDestCM,
-    EChangingConnTo,
-    EConnViaCM,
     EWlanEasyWep,
     EWlanEasyWpa,
-    EWlanEasyWapi,
-    ENoWlanNetwsAvail,
-    EConnectingViaDiscreetPopup,
-    EConnectionErrorDiscreetPopup
+    EWlanEasyWapi
     };
 
 
@@ -96,10 +90,6 @@
     
         TInt StartEasyWapiDlg( TPckgBuf< TBuf< KEasyWapiQueryMaxLength > >& aKey );
 
-        void StartConnectingViaDiscreetPopup(TPckgBuf< TConnUiConnectingViaDiscreetPopup>& aInfo);
-
-        void StartConnectionErrorDiscreetPopup( TPckgBuf<TInt>& aErrCode);
-        
     public: // Functions from base classes
 
         void DoCancel();
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/ConnectionUiUtilitiesClient.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/ConnectionUiUtilitiesClient.h	Mon May 03 12:53:07 2010 +0300
@@ -135,36 +135,6 @@
         void WLANNetworkUnavailableNote( TRequestStatus& aStatus );       
 
         /**
-        * Confirmation note is used after the connection has been successfully 
-        * established via destination and connection method.
-        * @param aDestId Id of used destination.
-        * @param aConnMId Id of used connection method.
-        * @param aStatus Status object of notifier.
-        */
-        void ConnectedViaDestAndConnMethodNote( const TUint32 aDestId, 
-                                                const TUint32 aConnMId,
-                                                TRequestStatus& aStatus );
-        /**
-        * Cancel ConnectedViaDestAndConnMethodNote notifier.
-        */
-        void CancelConnectedViaDestAndConnMethodNote();
-
-        /**
-        * Information note is used when "Automatically" roaming is enabled
-        * The actual connection establishment take places in the background
-        * (no wait note).
-        * @param aConnMId Id of used connection method.
-        * @param aStatus Status object of notifier.
-        */
-        void ChangingConnectionToNote( const TUint32 aConnMId,
-                                       TRequestStatus& aStatus );
-
-        /**
-        * Cancel ChangingConnectionToNote notifier.
-        */
-        void CancelChangingConnectionToNote();
-
-        /**
         * Notifier. Shows a query, "Connect to\n '%0U' via\n '%1U'?"
         * @param aResult Result of user selection, ETrue if user accepted
         * roaming, to more preferred method, EFlase otherwise
@@ -180,20 +150,6 @@
         */
         void CancelConfirmMethodUsageQuery();
 
-
-        /**
-        * Confirmation note is used after the connection has been successfully 
-        * established via a connection method.
-        * @param aConnMId Id of used connection method.
-        * @param aStatus Status object of notifier.
-        */
-        void ConnectedViaConnMethodNote( const TUint32 aConnMId,
-                                        TRequestStatus& aStatus );
-        /**
-        * Cancel ConnectedViaConnMethodNote notifier.
-        */
-        void CancelConnectedViaConnMethodNote();
-        
         /**
         * This note is displayed when power-save feature of the WLAN station 
         * is incompatible and thus battery consumption of the mobile will increase.
@@ -221,36 +177,6 @@
         */                  
         void CancelEasyWapiDlg();
 
-        /**
-        * Pops up an information note: 
-        * "No WLAN networks are available at the moment. Connection not available."
-        */ 
-        void NoWLANNetworksAvailableNote( TRequestStatus& aStatus );                  
-        
-        /**
-        * Discreet popup. Shows "connecting via %U" discreet popup.
-        * @param aInfo Information about bearer.
-        */
-        void ConnectingViaDiscreetPopup( TPckgBuf< TConnUiConnectingViaDiscreetPopup>& aInfo, 
-                          TRequestStatus& aStatus );
-        
-        /**
-        * Cancel ConnectingViaDiscreetPopup notifier.
-        */                  
-        void CancelConnectingViaDiscreetPopup();                  
-
-        /**
-        * Discreet popup. Shows discreet popup about connection error.
-        * @param aErrCode Error code.
-        */
-        void ConnectionErrorDiscreetPopup( TPckgBuf< TInt >& aErrCode, 
-                          TRequestStatus& aStatus );
-        
-        /**
-        * Cancel ConnectionErrorDiscreetPopup notifier.
-        */                  
-        void CancelConnectionErrorDiscreetPopup();                  
-
     private:
 
         // Pointer to the client interface
@@ -273,8 +199,6 @@
 
         TPckgBuf<TConnUiUiDestConnMethodNoteId> iPassedInfo;
 
-        // used for get response from notifier
-        TBuf8<8> iResponseStrNoWLANNetworksAvailableNote;
     };
 
 
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/ConnectionUiUtilitiesCommon.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/ConnectionUiUtilitiesCommon.h	Mon May 03 12:53:07 2010 +0300
@@ -83,13 +83,6 @@
 
     };
 
-class TConnUiConnectingViaDiscreetPopup
-    {
-public:
-    TUint32   iIapId;
-    TBool iConnectionAlreadyActive;
-    };
-
 #endif  // CONNECTIONUIUTILITIES_COMMON_H
 
 
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/ConnectionUiUtilitiesImpl.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/ConnectionUiUtilitiesImpl.h	Mon May 03 12:53:07 2010 +0300
@@ -40,7 +40,7 @@
 class CCommsDatabase;
 class TConnectionPrefs;
 class CAknGlobalNote;
-
+class CConnectionStatusPopup;
 
 // CLASS DECLARATION
 
@@ -370,56 +370,6 @@
         void WLANNetworkUnavailableNote();           
 
         /**
-        * DEPRECATED, PLEASE USE ASYNC VERSION!
-        * Confirmation note is used after the connection has been successfully 
-        * established via destination and connection method.
-        * @param aDestId Id of used destination.
-        * @param aConnMId Id of used connection method.
-        */
-        void ConnectedViaDestAndConnMethodNote( const TUint32 aDestId, 
-                                                const TUint32 aConnMId );
-
-        /**
-        * Confirmation note is used after the connection has been successfully 
-        * established via destination and connection method.
-        * @param aDestId Id of used destination.
-        * @param aConnMId Id of used connection method.
-        * @param aStatus caller's TRequestStatus to handle asynchronous call.
-        */
-        void ConnectedViaDestAndConnMethodNote( const TUint32 aDestId, 
-                                                const TUint32 aConnMId, 
-                                                TRequestStatus& aStatus );
-
-        /**
-        * Cancel ConnectedViaDestAndConnMethodNote notifier.
-        */
-        void CancelConnectedViaDestAndConnMethodNote();
-
-
-        /**
-        * Information note is used when "Automatically" roaming is enabled. The
-        * actual connection establishment take places in the background 
-        * (no wait note).
-        * @param aConnMId Id of used connection method.
-        */
-        void ChangingConnectionToNote( const TUint32 aConnMId );
-        
-        /**
-        * Information note is used when "Automatically" roaming is enabled. The
-        * actual connection establishment take places in the background 
-        * (no wait note).
-        * @param aConnMId Id of used connection method.
-        * @param aStatus Status object of notifier.
-        */       
-        void ChangingConnectionToNote( const TUint32 aConnMId, 
-        								TRequestStatus& aStatus );
-
-        /**
-        * Cancel ChangingConnectionToNote notifier.
-        */
-        void CancelChangingConnectionToNote();
-        
-        /**
         * Notifier. Shows a query, "Connect to\n '%0U' via\n '%1U'?"
         * @param aResult Result of user selection, ETrue if user accepted 
         * roaming, to more preferred method, EFlase otherwise
@@ -436,27 +386,6 @@
         void CancelConfirmMethodUsageQuery();
 
         /**
-        * DEPRECATED, PLEASE USE ASYNC VERSION!
-        * Confirmation note is used after the connection has been successfully 
-        * established via a connection method.
-        * @param aConnMId Id of used connection method.
-        */
-        void ConnectedViaConnMethodNote( const TUint32 aConnMId );
-
-        /**
-        * Confirmation note is used after the connection has been successfully 
-        * established via a connection method.
-        * @param aConnMId Id of used connection method.
-        * @param aStatus caller's TRequestStatus to handle asynchronous call.
-        */
-        void ConnectedViaConnMethodNote( const TUint32 aConnMId, 
-                                         TRequestStatus& aStatus );
-                /**
-        * Cancel ConnectedViaConnMethodNote notifier.
-        */
-        void CancelConnectedViaConnMethodNote();
-        
-        /**
         * This note is displayed when power-save feature of the WLAN station 
         * is incompatible and thus battery consumption of the mobile will increase.
         * @param aDisable ETrue if user wants to disable this note in the future.
@@ -477,20 +406,25 @@
         */
         TBool EasyWapiDlg( TDes* aKey );
 
-        /**
-        * Pops up an information note: 
-        * "No WLAN networks are available at the moment. Connection not available."
-        */        
-        void NoWLANNetworksAvailableNote();
+        /**           
+        * Discreet popup. Shows "Connecting" discreet popup 
+        */
+        void ConnectingViaDiscreetPopup( );
 
         /**           
         * Discreet popup. Shows "Connecting via %U" discreet popup 
         * @param aIapId IAP id of the access point.
+        * @param aConnectionAlreadyActive True if connection is already active
+        *   (shared).
         */
         void ConnectingViaDiscreetPopup( const TUint32& aIapId, 
                                          TBool aConnectionAlreadyActive );
 
-        
+        /**           
+        * Cancels (hides) "Connecting via %U" discreet popup. 
+        */
+        void CancelConnectingViaDiscreetPopup();
+
         /**           
         * Discreet popup. Shows discreet popup about connection errors 
         * @param aErrorCode Error code
@@ -542,8 +476,8 @@
         // buffer for passing WAPI key between client and server
         TPckgBuf< TBuf< KEasyWapiQueryMaxLength > > iWapiKey;
         
-        // buffer for passing connecting discreet popup info
-        TPckgBuf< TConnUiConnectingViaDiscreetPopup > iConnInfo;
+        // Connection status (via, error) implementation
+        CConnectionStatusPopup* iConnStatusPopup;
         
     };
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/inc/connectionstatuspopup.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,141 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Declaration of CConnectionStatusPopup
+*
+*/
+#ifndef __CCONNECTIONSTATUSPOPUP_H_
+#define __CCONNECTIONSTATUSPOPUP_H_
+
+// INCLUDES
+#include <e32base.h>
+#include "HbDeviceNotificationDialogSymbian.h"
+
+/**
+ * CConnectionStatusPopup
+ * Handler for connection status popups
+ */
+NONSHARABLE_CLASS( CConnectionStatusPopup ) : public CBase, 
+    public MHbDeviceNotificationDialogObserver
+    {
+public: // Constructors and destructor
+
+    /**
+    * Two-phased constructor. Leaves on failure.
+    * @return The constructed CConnectionStatusPopup object.
+    */
+    static CConnectionStatusPopup* NewL();
+    
+    /**
+     * Destructor
+     */
+    virtual ~CConnectionStatusPopup();
+
+public:
+    
+    /**
+     * Shows "Connecting" discreet popup.
+     */
+    void ConnectingViaDiscreetPopup( );
+
+    /**
+     * Shows "Connecting via '%U'" discreet popup.
+     */
+    void ConnectingViaDiscreetPopup( TUint32 aIAPId, 
+            TBool aConnectionAlreadyActive );
+    /**
+     * Cancels the "Connecting via '%U'" discreet popup.
+     */
+    void CancelConnectingViaDiscreetPopup();
+
+    /**
+     * Shows connection error discreet popup.
+     */
+    void ConnectionErrorDiscreetPopup( TInt aErrorCode );
+    
+public: // MHbDeviceNotificationDialogObserver
+
+    void NotificationDialogActivated(
+            const CHbDeviceNotificationDialogSymbian* aDialog );
+    
+    void NotificationDialogClosed(
+            const CHbDeviceNotificationDialogSymbian* aDialog,
+            TInt aCompletionCode );
+    
+private:
+    
+    /**
+     * Defines long enough timeout for the popup to be considered shown
+     * "forever".
+     */
+    const static TInt KForeverTimeout = 3*60*1000*1000;
+
+    /**
+     * The state of the popup
+     */
+    enum TPopupState
+        {
+        /**
+         *  Not shown
+         */
+        EPopupClosed,
+        /**
+         *  "Connecting" one-liner
+         */
+        EPopupConnecting,
+        /**
+         *  "Connecting" with iap name on second row
+         */
+        EPopupConnectingIap,
+        /**
+         *  "Connection failed/error"
+         */
+        EPopupError
+        };
+    
+    /**
+     * Constructor
+     */
+    CConnectionStatusPopup();
+
+    /**
+     * Second-phase constructor
+     */
+    void ConstructL();
+    
+    /**
+     * Sets the new state for the popup.
+     */
+    void SetState( TPopupState aNewState );
+
+    /**
+     * Formats iap info for Connecting via -popup.
+     */
+    void FormatIapInfoL( TUint32 aIapId );
+
+    /**
+     * Prepares popup for error code.
+     * @return ETrue when popup should be shown.
+     */
+    TBool ResolveErrorCodeL( TInt aErrorCode );
+
+private:
+
+    // Popup dialog
+    CHbDeviceNotificationDialogSymbian* iPopup;
+    
+    // The state of the popup
+    TPopupState iPopupState;
+    };
+
+#endif /* __CCONNECTIONSTATUSPOPUP_H_ */
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ActiveWrapper.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ActiveWrapper.cpp	Mon May 03 12:53:07 2010 +0300
@@ -199,23 +199,6 @@
             break;
             }
 
-        case EConnViaDestCM:
-            {
-            iNotif.CancelConnectedViaDestAndConnMethodNote();
-            break;
-            }
-
-        case EChangingConnTo:
-            {
-            iNotif.CancelChangingConnectionToNote();
-            break;
-            }
-
-        case EConnViaCM:
-            {
-            iNotif.CancelConnectedViaConnMethodNote();            
-            break;
-            }
         case EWlanEasyWep:
             {
             iNotif.CancelEasyWepDlg();
@@ -437,31 +420,6 @@
                 break;
                 }
 
-            case EConnViaDestCM:
-                {
-                iNotif.ConnectedViaDestAndConnMethodNote( aDestId, aConnMId,
-                                                          iStatus );
-                break;
-                }
-
-            case EChangingConnTo:
-                {
-                iNotif.ChangingConnectionToNote( aConnMId, iStatus );
-                break;
-                }
-
-            case EConnViaCM:
-                {
-                iNotif.ConnectedViaConnMethodNote( aConnMId, iStatus );
-                break;
-                }
-
-            case ENoWlanNetwsAvail:
-                {
-                iNotif.NoWLANNetworksAvailableNote( iStatus );
-                break;
-                }
-
             default:
                 {
                 return;
@@ -496,41 +454,4 @@
     return iStatus.Int();  
     }
 
-// ---------------------------------------------------------
-// CActiveWrapper::StartConnectingViaDiscreetPopup
-//
-// Starts the active object
-// ---------------------------------------------------------
-//
-void CActiveWrapper::StartConnectingViaDiscreetPopup( TPckgBuf< TConnUiConnectingViaDiscreetPopup>& aInfo )
-    {
-    if ( IsActive() == EFalse )
-        {
-        iIndexOfNote = EConnectingViaDiscreetPopup;
-        iNotif.ConnectingViaDiscreetPopup( aInfo, iStatus );
-        SetActive();
-        iWait.Start();
-        }
-
-    }
-
-
-// ---------------------------------------------------------
-// CActiveWrapper::StartConnectionErrorDiscreetPopup
-//
-// Starts the active object
-// ---------------------------------------------------------
-//
-void CActiveWrapper::StartConnectionErrorDiscreetPopup( TPckgBuf<TInt>& aErrCode )
-    {
-    if ( IsActive() == EFalse )
-        {
-        iIndexOfNote = EConnectionErrorDiscreetPopup;
-        iNotif.ConnectionErrorDiscreetPopup( aErrCode, iStatus );
-        SetActive();
-        iWait.Start();
-        }
-
-    }
-
 // End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ConnectionUiUtilities.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ConnectionUiUtilities.cpp	Mon May 03 12:53:07 2010 +0300
@@ -278,10 +278,10 @@
 // ---------------------------------------------------------
 //
 EXPORT_C void CConnectionUiUtilities::ConnectedViaDestAndConnMethodNote( 
-                                                const TUint32 aDestId, 
-                                                const TUint32 aConnMId )
+                                                const TUint32 /*aDestId*/, 
+                                                const TUint32 /*aConnMId*/ )
     {
-    iImpl->ConnectedViaDestAndConnMethodNote( aDestId, aConnMId );    
+    // Deprecated.    
     }
  
 // ---------------------------------------------------------
@@ -289,11 +289,11 @@
 // ---------------------------------------------------------
 //
 EXPORT_C void CConnectionUiUtilities::ConnectedViaDestAndConnMethodNote( 
-                                                const TUint32 aDestId, 
-                                                const TUint32 aConnMId, 
-                                                TRequestStatus& aStatus  )
+                                                const TUint32 /*aDestId*/, 
+                                                const TUint32 /*aConnMId*/, 
+                                                TRequestStatus& /*aStatus*/  )
     {
-    iImpl->ConnectedViaDestAndConnMethodNote( aDestId, aConnMId, aStatus ); 
+    // Deprecated. 
     }
            
 // ---------------------------------------------------------
@@ -302,7 +302,7 @@
 //
 EXPORT_C void CConnectionUiUtilities::CancelConnectedViaDestAndConnMethodNote()
     {
-    iImpl->CancelConnectedViaDestAndConnMethodNote();            
+    // Deprecated.            
     }
 
 // ---------------------------------------------------------
@@ -354,19 +354,19 @@
 // ---------------------------------------------------------
 //
 EXPORT_C void CConnectionUiUtilities::ChangingConnectionToNote( 
-                                                const TUint32 aConnMId )
+                                                const TUint32 /*aConnMId*/ )
     {
-    iImpl->ChangingConnectionToNote( aConnMId );                
+    // Deprecated.                
     }
 
 // ---------------------------------------------------------
 // CConnectionUiUtilities::ChangingConnectionToNote
 // ---------------------------------------------------------
 //    
-EXPORT_C void CConnectionUiUtilities::ChangingConnectionToNote( const TUint32 aConnMId, 
-        											TRequestStatus& aStatus )
+EXPORT_C void CConnectionUiUtilities::ChangingConnectionToNote( const TUint32 /*aConnMId*/, 
+        											TRequestStatus& /*aStatus*/ )
 	{
-	iImpl->ChangingConnectionToNote( aConnMId, aStatus ); 
+	// Deprecated. 
 	}
 
 // ---------------------------------------------------------
@@ -375,7 +375,7 @@
 //
 EXPORT_C void CConnectionUiUtilities::CancelChangingConnectionToNote()
     {
-    iImpl->CancelChangingConnectionToNote();            
+    // Deprecated.            
     }
 
 // ---------------------------------------------------------
@@ -408,9 +408,9 @@
 // ---------------------------------------------------------
 //
 EXPORT_C void CConnectionUiUtilities::ConnectedViaConnMethodNote( 
-                                                    const TUint32 aConnMId )
+                                                    const TUint32 /*aConnMId*/ )
     {
-    iImpl->ConnectedViaConnMethodNote( aConnMId );    
+    // Deprecated.    
     }
 
 // ---------------------------------------------------------
@@ -418,10 +418,10 @@
 // ---------------------------------------------------------
 //
 EXPORT_C void CConnectionUiUtilities::ConnectedViaConnMethodNote( 
-                                                    const TUint32 aConnMId, 
-                                                    TRequestStatus& aStatus )
+                                                    const TUint32 /*aConnMId*/, 
+                                                    TRequestStatus& /*aStatus*/ )
     {
-    iImpl->ConnectedViaConnMethodNote( aConnMId , aStatus );    
+    // Deprecated.    
     }
 
 // ---------------------------------------------------------
@@ -430,7 +430,7 @@
 //
 EXPORT_C void CConnectionUiUtilities::CancelConnectedViaConnMethodNote()
     {
-    iImpl->CancelConnectedViaConnMethodNote();
+    // Deprecated.
     }
 
 
@@ -524,7 +524,7 @@
 //
 EXPORT_C void CConnectionUiUtilities::NoWLANNetworksAvailableNote()
     {
-    iImpl->NoWLANNetworksAvailableNote();
+    // Note removed.
     }
 
 // ---------------------------------------------------------
@@ -607,6 +607,15 @@
 // CConnectionUiUtilities::ConnectingViaDiscreetPopup
 // ---------------------------------------------------------
 //
+EXPORT_C void CConnectionUiUtilities::ConnectingViaDiscreetPopup( )
+    {
+    iImpl->ConnectingViaDiscreetPopup( );
+    } 
+
+// ---------------------------------------------------------
+// CConnectionUiUtilities::ConnectingViaDiscreetPopup
+// ---------------------------------------------------------
+//
 EXPORT_C void CConnectionUiUtilities::ConnectingViaDiscreetPopup( 
         const TUint32& aIapId,
         TBool aConnectionAlreadyActive )
@@ -615,6 +624,15 @@
     } 
 
 // ---------------------------------------------------------
+// CConnectionUiUtilities::CancelConnectingViaDiscreetPopup
+// ---------------------------------------------------------
+//
+EXPORT_C void CConnectionUiUtilities::CancelConnectingViaDiscreetPopup()
+    {
+    iImpl->CancelConnectingViaDiscreetPopup();
+    }
+
+// ---------------------------------------------------------
 // CConnectionUiUtilities::ConnectionErrorDiscreetPopup
 // ---------------------------------------------------------
 //
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ConnectionUiUtilitiesClient.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ConnectionUiUtilitiesClient.cpp	Mon May 03 12:53:07 2010 +0300
@@ -263,98 +263,6 @@
     }
     
 // ---------------------------------------------------------
-// RConnectionUiUtilitiesSession::ConnectedViaDestAndConnMethodNote
-// ---------------------------------------------------------
-//
-void RConnectionUiUtilitiesSession::ConnectedViaDestAndConnMethodNote( 
-                                                    const TUint32 aDestId, 
-                                                    const TUint32 aConnMId,
-                                                    TRequestStatus& aStatus )
-    {
-    CLOG_ENTERFN( "RConnectionUiUtilitiesSession::ConnectedViaDestAndConnMethodNote" );
-
-    ::new( &iPassedInfo ) TPckgBuf<TConnUiUiDestConnMethodNoteId>( 
-                                            TConnUiUiDestConnMethodNoteId() );
-
-    iPassedInfo().iDestination = aDestId;    
-    iPassedInfo().iConnectionMethod = aConnMId;
-    iPassedInfo().iNoteId = EConnectedViaDestConnMethodConfirmationNote;
-    iPassedInfo().iNextBestExists = EFalse;
-    
-    if ( iNotifier )
-        {
-        iNotifier->StartNotifierAndGetResponse( aStatus, 
-                                                KUidConnectViaNote,
-                                                iPassedInfo,
-                                                iBool );
-        }
-
-    CLOG_LEAVEFN( "RConnectionUiUtilitiesSession::ConnectedViaDestAndConnMethodNote" );
-    }
-    
-// ---------------------------------------------------------
-// RConnectionUiUtilitiesSession::CancelConnectedViaDestAndConnMethodNote
-// ---------------------------------------------------------
-//
-void RConnectionUiUtilitiesSession::CancelConnectedViaDestAndConnMethodNote()
-    {
-    CLOG_ENTERFN( "RConnectionUiUtilitiesSession::CancelConnectedViaDestAndConnMethodNote" );
-
-    if ( iNotifier )
-        {
-        iNotifier->CancelNotifier( KUidConnectViaNote );
-        }
-
-    CLOG_LEAVEFN( "RConnectionUiUtilitiesSession::CancelConnectedViaDestAndConnMethodNote" );
-    }
-    
-
-// ---------------------------------------------------------
-// RConnectionUiUtilitiesSession::ChangingConnectionToNote
-// ---------------------------------------------------------
-//
-void RConnectionUiUtilitiesSession::ChangingConnectionToNote( 
-                                                const TUint32 aConnMId,
-                                                TRequestStatus& aStatus )
-    {
-    CLOG_ENTERFN( "RConnectionUiUtilitiesSession::ChangingConnectionToNote" );
-
-    ::new( &iPassedInfo ) TPckgBuf<TConnUiUiDestConnMethodNoteId>( 
-                                            TConnUiUiDestConnMethodNoteId() );
-
-    iPassedInfo().iDestination = 0;    
-    iPassedInfo().iConnectionMethod = aConnMId;
-    iPassedInfo().iNoteId = EConnectingToConnMethodInfoNote;
-    iPassedInfo().iNextBestExists = EFalse;
-    
-    if ( iNotifier )
-        {
-        iNotifier->StartNotifierAndGetResponse( aStatus, 
-                                                KUidConnectViaNote,
-                                                iPassedInfo,
-                                                iBool );
-        }
-
-    CLOG_LEAVEFN( "RConnectionUiUtilitiesSession::ChangingConnectionToNote" );
-    }
-        
-// ---------------------------------------------------------
-// RConnectionUiUtilitiesSession::CancelChangingConnectionToNote
-// ---------------------------------------------------------
-//
-void RConnectionUiUtilitiesSession::CancelChangingConnectionToNote()
-    {
-    CLOG_ENTERFN( "RConnectionUiUtilitiesSession::CancelChangingConnectionToNote" );
-
-    if ( iNotifier )
-        {
-        iNotifier->CancelNotifier( KUidConnectViaNote );
-        }
-
-    CLOG_LEAVEFN( "RConnectionUiUtilitiesSession::CancelChangingConnectionToNote" );
-    }
-    
-// ---------------------------------------------------------
 // RConnectionUiUtilitiesSession::ConfirmMethodUsageQuery()
 // ---------------------------------------------------------
 //
@@ -406,52 +314,6 @@
     CLOG_LEAVEFN( "RConnectionUiUtilitiesSession::CancelConfirmMethodUsageQuery" );
     }    
 
-
-// ---------------------------------------------------------
-// RConnectionUiUtilitiesSession::ConnectedViaConnMethodNote
-// ---------------------------------------------------------
-//
-void RConnectionUiUtilitiesSession::ConnectedViaConnMethodNote( 
-                                                    const TUint32 aConnMId,
-                                                    TRequestStatus& aStatus )
-    {
-    CLOG_ENTERFN( "RConnectionUiUtilitiesSession::ConnectedViaConnMethodNote" );
-
-    ::new( &iPassedInfo ) TPckgBuf<TConnUiUiDestConnMethodNoteId>( 
-                                            TConnUiUiDestConnMethodNoteId() );
-
-    iPassedInfo().iDestination = 0;
-    iPassedInfo().iConnectionMethod = aConnMId;
-    iPassedInfo().iNoteId = EConnectedViaConnMethodConfirmationNote;
-    iPassedInfo().iNextBestExists = EFalse;
-    
-    if ( iNotifier )
-        {
-        iNotifier->StartNotifierAndGetResponse( aStatus, 
-                                                KUidConnectViaNote,
-                                                iPassedInfo,
-                                                iBool );
-        }
-
-    CLOG_LEAVEFN( "RConnectionUiUtilitiesSession::ConnectedViaConnMethodNote" );
-    }
-    
-// ---------------------------------------------------------
-// RConnectionUiUtilitiesSession::CancelConnectedViaConnMethodNote
-// ---------------------------------------------------------
-//
-void RConnectionUiUtilitiesSession::CancelConnectedViaConnMethodNote()
-    {
-    CLOG_ENTERFN( "RConnectionUiUtilitiesSession::CancelConnectedViaConnMethodNote" );
-
-    if ( iNotifier )
-        {
-        iNotifier->CancelNotifier( KUidConnectViaNote );
-        }
-
-    CLOG_LEAVEFN( "RConnectionUiUtilitiesSession::CancelConnectedViaConnMethodNote" );
-    }
-
 // ---------------------------------------------------------
 // RConnectionUiUtilitiesSession::CWlanPowerSaveTestNote
 // ---------------------------------------------------------
@@ -526,95 +388,4 @@
     CLOG_LEAVEFN( "RConnectionUiUtilitiesSession::CancelEasyWapiDlg" );
     }
 
-// ---------------------------------------------------------
-// RConnectionUiUtilitiesSession::NoWLANNetworksAvailableNote()
-// ---------------------------------------------------------
-//
-void RConnectionUiUtilitiesSession::NoWLANNetworksAvailableNote(
-                                                     TRequestStatus& aStatus )
-    {    
-    CLOG_ENTERFN( "RConnectionUiUtilitiesSession::NoWLANNetworksAvailableNote" );
-
-    if ( iNotifier )
-        {
-        iNotifier->StartNotifierAndGetResponse( aStatus, 
-                                    KUidNoWLANNetworksAvailableNote, 
-                                    KNullDesC8(), 
-                                    iResponseStrNoWLANNetworksAvailableNote );
-        }
-
-    CLOG_LEAVEFN( "RConnectionUiUtilitiesSession::NoWLANNetworksAvailableNote" );
-    }    
-
-// ---------------------------------------------------------
-// RConnectionUiUtilitiesSession::ConnectingViaDiscreetPopup()
-// ---------------------------------------------------------
-//
-void RConnectionUiUtilitiesSession::ConnectingViaDiscreetPopup( 
-        TPckgBuf< TConnUiConnectingViaDiscreetPopup>& aInfo,
-        TRequestStatus& aStatus )
-    {
-    CLOG_ENTERFN( "RConnectionUiUtilitiesSession::ConnectingViaDiscreetPopup" );
-
-    if ( iNotifier )
-        {
-        iNotifier->StartNotifierAndGetResponse( aStatus, KUidConnectingViaDiscreetPopup,
-                                                aInfo, aInfo );
-        }
-
-    CLOG_LEAVEFN( "RConnectionUiUtilitiesSession::ConnectingViaDiscreetPopup" );
-    }    
-    
-// ---------------------------------------------------------
-// RConnectionUiUtilitiesSession::CancelConnectingViaDiscreetPopup()
-// ---------------------------------------------------------
-//
-void RConnectionUiUtilitiesSession::CancelConnectingViaDiscreetPopup()
-    {
-    CLOG_ENTERFN( "RConnectionUiUtilitiesSession::CancelConnectingViaDiscreetPopup" );
-
-    if ( iNotifier )
-        {
-        iNotifier->CancelNotifier( KUidConnectingViaDiscreetPopup );
-        }
-
-    CLOG_LEAVEFN( "RConnectionUiUtilitiesSession::CancelConnectingViaDiscreetPopup" );
-    }    
-
-
-// ---------------------------------------------------------
-// RConnectionUiUtilitiesSession::ConnectionErrorDiscreetPopup()
-// ---------------------------------------------------------
-//
-void RConnectionUiUtilitiesSession::ConnectionErrorDiscreetPopup( 
-        TPckgBuf< TInt >& aErrCode,
-        TRequestStatus& aStatus )
-    {
-    CLOG_ENTERFN( "RConnectionUiUtilitiesSession::ConnectionErrorDiscreetPopup" );
-
-    if ( iNotifier )
-        {
-        iNotifier->StartNotifierAndGetResponse( aStatus, KUidConnectionErrorDiscreetPopup,
-                                                aErrCode, aErrCode );
-        }
-
-    CLOG_LEAVEFN( "RConnectionUiUtilitiesSession::ConnectionErrorDiscreetPopup" );
-    }    
-    
-// ---------------------------------------------------------
-// RConnectionUiUtilitiesSession::CancelConnectionErrorDiscreetPopup()
-// ---------------------------------------------------------
-//
-void RConnectionUiUtilitiesSession::CancelConnectionErrorDiscreetPopup()
-    {
-    CLOG_ENTERFN( "RConnectionUiUtilitiesSession::CancelConnectionErrorDiscreetPopup" );
-
-    if ( iNotifier )
-        {
-        iNotifier->CancelNotifier( KUidConnectionErrorDiscreetPopup );
-        }
-
-    CLOG_LEAVEFN( "RConnectionUiUtilitiesSession::CancelConnectionErrorDiscreetPopup" );
-    }    
-
 // End of File
--- a/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ConnectionUiUtilitiesImpl.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ConnectionUiUtilitiesImpl.cpp	Mon May 03 12:53:07 2010 +0300
@@ -44,6 +44,7 @@
 #include "ConnectionUiUtilitiesImpl.h"
 #include "ChangeConnectionDlg.h"
 #include "ActiveCChangeConnectionDlg.h"
+#include "connectionstatuspopup.h"
 
 #include <ConnectionUiUtilities.rsg>
 #include <data_caging_path_literals.hrh>
@@ -105,6 +106,7 @@
     iIsWlanSupported = 
                 FeatureManager::FeatureSupported( KFeatureIdProtocolWlan );
     FeatureManager::UnInitializeLib();
+    iConnStatusPopup = CConnectionStatusPopup::NewL();
     }
 
 
@@ -124,6 +126,8 @@
         {
         delete iActiveWrapper[i];
         }
+
+    delete iConnStatusPopup;
     }
 
 // ---------------------------------------------------------
@@ -900,89 +904,6 @@
     CLOG_LEAVEFN( "CConnectionUiUtilitiesImpl::SearchWLANNetworkAsync" );    
     }
 
-// ---------------------------------------------------------
-// CConnectionUiUtilitiesImpl::ConnectedViaDestAndConnMethodNote
-// ---------------------------------------------------------
-//
-void CConnectionUiUtilitiesImpl::ConnectedViaDestAndConnMethodNote( 
-                                                const TUint32 aDestId, 
-                                                const TUint32 aConnMId )
-    {
-    if ( !iActiveWrapper[EConnViaDestCM] )
-        {
-        TRAP_IGNORE( iActiveWrapper[EConnViaDestCM] = 
-                                    CActiveWrapper::NewL( EConnViaDestCM ) );
-        }
-
-    if ( iActiveWrapper[EConnViaDestCM] )
-        {
-        iActiveWrapper[EConnViaDestCM]->StartGenericNote( EConnViaDestCM, 
-                                                          aConnMId, aDestId );
-        }
-    }
-
-// ---------------------------------------------------------
-// CConnectionUiUtilitiesImpl::ConnectedViaDestAndConnMethodNote
-// ---------------------------------------------------------
-//
-void CConnectionUiUtilitiesImpl::ConnectedViaDestAndConnMethodNote( 
-                                                const TUint32 aDestId, 
-                                                const TUint32 aConnMId, 
-                                                TRequestStatus& aStatus )
-    {
-    iNotif.ConnectedViaDestAndConnMethodNote( aDestId, aConnMId, aStatus );
-    }
-        
-// ---------------------------------------------------------
-// CConnectionUiUtilitiesImpl::CancelConnectedViaDestAndConnMethodNote
-// ---------------------------------------------------------
-//
-void CConnectionUiUtilitiesImpl::CancelConnectedViaDestAndConnMethodNote()
-    {
-    iNotif.CancelConnectedViaDestAndConnMethodNote();
-    }
-
-// ---------------------------------------------------------
-// CConnectionUiUtilitiesImpl::ChangingConnectionToNote
-// ---------------------------------------------------------
-//
-void CConnectionUiUtilitiesImpl::ChangingConnectionToNote( 
-                                                const TUint32 aConnMId )
-    {
-    if ( !iActiveWrapper[EChangingConnTo] )
-        {
-        TRAP_IGNORE( iActiveWrapper[EChangingConnTo] = 
-                                    CActiveWrapper::NewL( EChangingConnTo ) );
-        }
-
-    if ( iActiveWrapper[EChangingConnTo] )
-        {
-        iActiveWrapper[EChangingConnTo]->StartGenericNote( EChangingConnTo,
-                                                           aConnMId );
-        }
-    }
-
-// ---------------------------------------------------------
-// CConnectionUiUtilitiesImpl::ChangingConnectionToNote
-// ---------------------------------------------------------
-//    
-void CConnectionUiUtilitiesImpl::ChangingConnectionToNote( 
-                                                const TUint32 aConnMId, 
-                                                TRequestStatus& aStatus )
-    {
-    iNotif.ChangingConnectionToNote( aConnMId, aStatus );  
-    }
-
-
-// ---------------------------------------------------------
-// CConnectionUiUtilitiesImpl::CancelChangingConnectionToNote
-// ---------------------------------------------------------
-//
-void CConnectionUiUtilitiesImpl::CancelChangingConnectionToNote()
-    {
-    iActiveWrapper[EChangingConnTo]->Cancel();
-    }
-
 // ---------------------------------------------------------    
 // CConnectionUiUtilitiesImpl::ConfirmMethodUsageQuery
 // ---------------------------------------------------------
@@ -1004,47 +925,6 @@
     iNotif.CancelConfirmMethodUsageQuery();
     }
 
-
-// ---------------------------------------------------------
-// CConnectionUiUtilitiesImpl::ConnectedViaConnMethodNote
-// ---------------------------------------------------------
-//
-void CConnectionUiUtilitiesImpl::ConnectedViaConnMethodNote( 
-                                                    const TUint32 aConnMId )
-    {
-    if ( !iActiveWrapper[EConnViaCM] )
-        {
-        TRAP_IGNORE( iActiveWrapper[EConnViaCM] = 
-                                        CActiveWrapper::NewL( EConnViaCM ) );
-        }
-
-    if ( iActiveWrapper[EConnViaCM] )
-        {
-        iActiveWrapper[EConnViaCM]->StartGenericNote( EConnViaCM, aConnMId );
-        }
-    }
-
-// ---------------------------------------------------------
-// CConnectionUiUtilitiesImpl::ConnectedViaConnMethodNote
-// ---------------------------------------------------------
-//
-void CConnectionUiUtilitiesImpl::ConnectedViaConnMethodNote( 
-                                                    const TUint32 aConnMId,
-                                                    TRequestStatus& aStatus )
-    {
-    iNotif.ConnectedViaConnMethodNote( aConnMId, aStatus );
-    }
-
-        
-// ---------------------------------------------------------
-// CConnectionUiUtilitiesImpl::CancelConnectedViaConnMethodNote
-// ---------------------------------------------------------
-//
-void CConnectionUiUtilitiesImpl::CancelConnectedViaConnMethodNote()
-    {
-    iNotif.CancelConnectedViaConnMethodNote();
-    }
-    
     
 // ---------------------------------------------------------
 // CConnectionUiUtilitiesImpl::WlanPowerSaveTestNote
@@ -1095,26 +975,13 @@
     return ( status == KErrNone ) ? ETrue : EFalse;
     }
 
-// ---------------------------------------------------------
-// CConnectionUiUtilitiesImpl::NoWLANNetworksAvailableNote
+// ---------------------------------------------------------    
+// CConnectionUiUtilitiesImpl::ConnectingViaDiscreetPopup
 // ---------------------------------------------------------
 //
-void CConnectionUiUtilitiesImpl::NoWLANNetworksAvailableNote()
-    {
-    if ( iIsWlanSupported )    
-        {
-        if ( !iActiveWrapper[ ENoWlanNetwsAvail ] )
-            {
-            TRAP_IGNORE( iActiveWrapper[ ENoWlanNetwsAvail ] = 
-                                    CActiveWrapper::NewL( ENoWlanNetwsAvail ) );
-            }
-
-        if ( iActiveWrapper[ ENoWlanNetwsAvail ] )
-            {
-            iActiveWrapper[ ENoWlanNetwsAvail ]->StartGenericNote( 
-                                                            ENoWlanNetwsAvail );
-            }
-        }
+void CConnectionUiUtilitiesImpl::ConnectingViaDiscreetPopup( )
+    { 
+    iConnStatusPopup->ConnectingViaDiscreetPopup( );
     }
 
 
@@ -1122,46 +989,33 @@
 // CConnectionUiUtilitiesImpl::ConnectingViaDiscreetPopup
 // ---------------------------------------------------------
 //
-void CConnectionUiUtilitiesImpl::ConnectingViaDiscreetPopup( const TUint32& aIapId, TBool aConnectionAlreadyActive )
+void CConnectionUiUtilitiesImpl::ConnectingViaDiscreetPopup(
+        const TUint32& aIapId,
+        TBool aConnectionAlreadyActive )
     { 
-    iConnInfo().iIapId = aIapId;
-    iConnInfo().iConnectionAlreadyActive = aConnectionAlreadyActive;
-    
-    if ( !iActiveWrapper[ EConnectingViaDiscreetPopup ] )
-        {
-        TRAP_IGNORE( iActiveWrapper[ EConnectingViaDiscreetPopup ] = 
-                                CActiveWrapper::NewL( EConnectingViaDiscreetPopup ) );
-        }
-
-    if ( iActiveWrapper[ EConnectingViaDiscreetPopup ] )
-        {
-        iActiveWrapper[ EConnectingViaDiscreetPopup ]
-                        ->StartConnectingViaDiscreetPopup( iConnInfo );
-        }
+    iConnStatusPopup->ConnectingViaDiscreetPopup( aIapId,
+            aConnectionAlreadyActive );
     }
 
 
+// ---------------------------------------------------------    
+// CConnectionUiUtilitiesImpl::CancelConnectingViaDiscreetPopup
+// ---------------------------------------------------------
+//
+void CConnectionUiUtilitiesImpl::CancelConnectingViaDiscreetPopup()
+    {
+    iConnStatusPopup->CancelConnectingViaDiscreetPopup();
+    }
+
 
 // ---------------------------------------------------------    
 // CConnectionUiUtilitiesImpl::ConnectionErrorDiscreetPopup
 // ---------------------------------------------------------
 //
-void CConnectionUiUtilitiesImpl::ConnectionErrorDiscreetPopup( const TInt& aErrCode )
+void CConnectionUiUtilitiesImpl::ConnectionErrorDiscreetPopup(
+        const TInt& aErrCode )
     {
-    TPckgBuf< TInt > buf;
-    buf() = aErrCode;
-    
-    if ( !iActiveWrapper[ EConnectionErrorDiscreetPopup ] )
-        {
-        TRAP_IGNORE( iActiveWrapper[ EConnectionErrorDiscreetPopup ] = 
-                                CActiveWrapper::NewL( EConnectionErrorDiscreetPopup ) );
-        }
-
-    if ( iActiveWrapper[ EConnectionErrorDiscreetPopup ] )
-        {
-        iActiveWrapper[ EConnectionErrorDiscreetPopup ]
-                        ->StartConnectionErrorDiscreetPopup( buf );
-        }
+    iConnStatusPopup->ConnectionErrorDiscreetPopup( aErrCode );
     }
         
 // End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/connectionstatuspopup.cpp	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,647 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*      Implementation of class CConnectionStatusPopup.   
+*      
+*
+*/
+
+#include "connectionstatuspopup.h"
+
+#include <cmmanager.h>
+#include <cmmanagerext.h>
+#include <cmconnectionmethod.h>
+#include <cmconnectionmethodext.h>
+#include <cmpluginwlandef.h>
+#include <cmpluginvpndef.h>
+
+#include <hbtextresolversymbian.h>
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "connectionstatuspopupTraces.h"
+#endif
+
+// Error code definitions are from these headers
+#include <wlanerrorcodes.h> // WLAN-specific error code definitions
+#include <in_iface.h>
+#include <etelpckt.h>       // GPRS-specific causes for Session Managemeei saant
+#include <nd_err.h>         // NetDial errors
+#include <inet6err.h>       // IPv6 error constants
+#include <rmmcustomapi.h>
+
+// Errors in UI spec not found elsewhere
+const TInt KErrPDPMaxContextsReached    = -6000;
+const TInt KErrDndNameNotFound          = -5120;
+const TInt KErrGeneralConnection        = -50000;
+const TInt KErrGenConnNoGPRSNetwork     = -3609;
+
+// Icons representing bearer
+_LIT( KIconCellular, "pri_small_wlan.svg" );
+_LIT( KIconWlan,     "pri_small_gprs.svg" );
+_LIT( KIconVpn,      "pri_small_vpn.svg" ); 
+_LIT( KIconNone,     "" );
+
+// Empty text
+_LIT( KTextNone,     "" );
+
+// Programs to fire at tap
+_LIT( KWlanViewExeFile, "wlansniffer.exe" );
+_LIT( KConnViewExeFile, "connview.exe" );
+// Command line
+_LIT( KExeFileCmd, "" );
+
+// Localization files and texts
+_LIT(KTrFile, "connectionstatuspopups_");
+_LIT(KTrFilePath, "z:\\resource\\qt\\translations");
+
+_LIT(Ktxt_occ_dpophead_connecting,
+        "txt_occ_dpophead_connecting");
+_LIT(Ktxt_occ_dpophead_connection_failed,
+        "txt_occ_dpophead_connection_failed");
+_LIT(Ktxt_occ_dpopinfo_internal_error,
+        "txt_occ_dpopinfo_internal_error");
+_LIT(Ktxt_occ_dpopinfo_wlan_network_not_found,
+        "txt_occ_dpopinfo_wlan_network_not_found");
+_LIT(Ktxt_occ_dpopinfo_authentication_unsuccessful,
+        "txt_occ_dpopinfo_authentication_unsuccessful");
+_LIT(Ktxt_occ_dpopinfo_check_security_key,
+        "txt_occ_dpopinfo_check_security_key");
+_LIT(Ktxt_occ_dpopinfo_check_connection_settings,
+        "txt_occ_dpopinfo_check_connection_settings");
+_LIT(Ktxt_occ_dpopinfo_sim_card_missing,
+        "txt_occ_dpopinfo_sim_card_missing");
+_LIT(Ktxt_occ_dpopinfo_service_unreachable,
+        "txt_occ_dpopinfo_service_unreachable");
+_LIT(Ktxt_occ_dpopinfo_permission_denied,
+        "txt_occ_dpopinfo_permission_denied");
+_LIT(Ktxt_occ_dpopinfo_connection_already_active,
+        "txt_occ_dpopinfo_connection_already_active");
+_LIT(Ktxt_occ_dpopinfo_signal_too_weak,
+        "txt_occ_dpopinfo_signal_too_weak");
+_LIT(Ktxt_occ_dpopinfo_please_try_again,
+        "txt_occ_dpopinfo_please_try_again");
+_LIT(Ktxt_occ_dpopinfo_connection_unavailable,
+        "txt_occ_dpopinfo_connection_unavailable");
+_LIT(Ktxt_occ_dpophead_configuration_failed,
+        "txt_occ_dpophead_configuration_failed");
+
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::CConnectionStatusPopup()
+//-----------------------------------------------------------------------------
+//
+CConnectionStatusPopup::CConnectionStatusPopup()
+:iPopup( NULL ), iPopupState( EPopupClosed )
+    {
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::NewL()
+//-----------------------------------------------------------------------------
+//
+CConnectionStatusPopup* CConnectionStatusPopup::NewL()
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_NEWL_ENTRY );
+    
+    CConnectionStatusPopup* popup = new ( ELeave ) CConnectionStatusPopup();
+    CleanupStack::PushL( popup );
+    popup->ConstructL();
+    CleanupStack::Pop( popup ); 
+    
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_NEWL_EXIT );
+    return popup;
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::ConstructL()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::ConstructL()
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_CONSTRUCTL_ENTRY );
+    
+    iPopup = CHbDeviceNotificationDialogSymbian::NewL( this );
+
+    TBool result = HbTextResolverSymbian::Init( KTrFile, KTrFilePath );
+    if (!result)
+        {
+        OstTrace0( TRACE_FLOW, CCONNECTIONSTATUSPOPUP_CONSTRUCTL,"CConnectionStatusPopup::ConstructL; Loading of localization failed!" );
+        }
+    
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_CONSTRUCTL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::~CConnectionStatusPopup()
+//-----------------------------------------------------------------------------
+//
+CConnectionStatusPopup::~CConnectionStatusPopup()
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_CCONNECTIONSTATUSPOPUP_ENTRY );
+    
+    if (iPopup)
+        {
+        iPopup->Close();
+        delete iPopup;
+        }
+    
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_CCONNECTIONSTATUSPOPUP_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::ConnectingDiscreetPopup()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::ConnectingViaDiscreetPopup( )
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_CONNECTINGVIADISCREETPOPUP_ENTRY );
+
+    TRAP_IGNORE( 
+        HBufC* title = HbTextResolverSymbian::LoadLC(
+                Ktxt_occ_dpophead_connecting );
+        iPopup->SetTitleL( title->Des() );
+        CleanupStack::PopAndDestroy( title );
+        iPopup->SetTextL( KTextNone );
+        iPopup->SetIconNameL( KIconNone );
+        );
+
+    SetState( EPopupConnecting );
+ 
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_CONNECTINGVIADISCREETPOPUP_EXIT );
+    }
+
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::ConnectingViaDiscreetPopup()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::ConnectingViaDiscreetPopup(
+        TUint32 aIapId,
+        TBool aConnectionAlreadyActive )
+    {
+    OstTraceFunctionEntry0( DUP1_CCONNECTIONSTATUSPOPUP_CONNECTINGVIADISCREETPOPUP_ENTRY );
+    OstTraceExt2( TRACE_FLOW, CCONNECTIONSTATUSPOPUP_CONNECTINGVIADISCREETPOPUP, "CConnectionStatusPopup::ConnectingViaDiscreetPopup;aIapId=%u;aConnectionAlreadyActive=%u", aIapId, aConnectionAlreadyActive );
+
+    // Grab iap info even if we do not need it yet (when sharing),
+    // because icon may be used later if general error happens.
+    TRAP_IGNORE( FormatIapInfoL( aIapId ); );
+
+    if (aConnectionAlreadyActive)
+        {
+        // If sharing a connection, do not show the popup.
+        SetState( EPopupClosed );
+        }
+    else
+        {
+        SetState( EPopupConnectingIap );
+        }
+    
+    OstTraceFunctionExit0( DUP1_CCONNECTIONSTATUSPOPUP_CONNECTINGVIADISCREETPOPUP_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::CancelConnectingViaDiscreetPopup()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::CancelConnectingViaDiscreetPopup()
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_CANCELCONNECTINGVIADISCREETPOPUP_ENTRY );
+    
+    SetState( EPopupClosed );
+
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_CANCELCONNECTINGVIADISCREETPOPUP_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::ConnectionErrorDiscreetPopup()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::ConnectionErrorDiscreetPopup( TInt aErrorCode )
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_CONNECTIONERRORDISCREETPOPUP_ENTRY );
+    
+    TBool showPopup( EFalse );
+    TRAP_IGNORE( showPopup = ResolveErrorCodeL( aErrorCode ); );
+    
+    OstTraceExt2( TRACE_FLOW, CCONNECTIONSTATUSPOPUP_CONNECTIONERRORDISCREETPOPUP, "CConnectionStatusPopup::ConnectionErrorDiscreetPopup;aErrorCode=%d;showPopup=%u", aErrorCode, showPopup );
+    
+    if (showPopup)
+        {
+        SetState( EPopupError );
+        }
+
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_CONNECTIONERRORDISCREETPOPUP_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::SetState()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::SetState( TPopupState aNewState )
+    {
+    OstTraceExt2( TRACE_FLOW, CCONNECTIONSTATUSPOPUP_SETSTATE, "CConnectionStatusPopup::SetState;iPopupState=%u;aNewState=%u", iPopupState, aNewState );
+    
+    switch (aNewState)
+        {
+        
+        case EPopupClosed:
+            // Close popup if it's not already closing or closed
+            if (iPopupState != EPopupClosed && iPopupState != EPopupError)
+                {
+                iPopup->Close();
+                }
+            break;
+            
+        case EPopupConnecting:
+            iPopup->EnableTouchActivation( EFalse );
+            iPopup->SetTimeout( KForeverTimeout );
+            break;
+            
+        case EPopupConnectingIap:
+            iPopup->EnableTouchActivation( ETrue );
+            iPopup->SetTimeout( KForeverTimeout );
+            break;
+            
+        default: // EPopupError
+            __ASSERT_DEBUG( aNewState == EPopupError, User::Invariant() );
+            iPopup->EnableTouchActivation( EFalse );
+            iPopup->SetTimeout( KHbLongNotificationDialogTimeout ); 
+            break;
+        }
+    
+    if (aNewState != EPopupClosed)
+        {
+        // Show or update popup
+        if (iPopupState == EPopupClosed)
+            {
+            TRAP_IGNORE( iPopup->ShowL() );
+            }
+        else
+            {
+            TRAP_IGNORE( iPopup->UpdateL() );
+            }
+        }
+    
+    iPopupState = aNewState;
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::FormatIapInfoL()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::FormatIapInfoL( TUint32 aIapId )
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_FORMATIAPINFOL_ENTRY );
+    
+    // Title
+    HBufC* title = HbTextResolverSymbian::LoadLC(
+            Ktxt_occ_dpophead_connecting );
+    iPopup->SetTitleL( title->Des() );
+    CleanupStack::PopAndDestroy( title );
+
+    // Load iap info from cmmanager
+    HBufC* connectionName( NULL );
+    TUint bearerType( 0 );
+
+    RCmManager cmMgr;
+    CleanupClosePushL( cmMgr );
+    RCmConnectionMethod plugin;
+    CleanupClosePushL( plugin );
+    cmMgr.OpenL();
+    plugin = cmMgr.ConnectionMethodL( aIapId );
+    bearerType = plugin.GetIntAttributeL( CMManager::ECmBearerType );
+    connectionName = plugin.GetStringAttributeL( CMManager::ECmName );
+    CleanupStack::PopAndDestroy( &plugin );
+    CleanupStack::PopAndDestroy( &cmMgr );
+    
+    // Text
+    CleanupStack::PushL( connectionName );
+    if (connectionName)
+        {
+        iPopup->SetTextL( connectionName->Des() );
+        }
+    else
+        {
+        iPopup->SetTextL( KTextNone );
+        }
+    CleanupStack::PopAndDestroy( connectionName ); 
+
+    // Icon
+    switch (bearerType)
+        {
+        case KUidWlanBearerType:
+            iPopup->SetIconNameL( KIconWlan );
+            break;
+        case KPluginVPNBearerTypeUid:
+            iPopup->SetIconNameL( KIconVpn );
+            break;
+        default:
+            iPopup->SetIconNameL( KIconCellular );
+        }
+    
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_FORMATIAPINFOL_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::ResolveErrorCodeL()
+//-----------------------------------------------------------------------------
+//
+TBool CConnectionStatusPopup::ResolveErrorCodeL( TInt aErrorCode )
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_RESOLVEERRORCODEL_ENTRY );
+    
+    // Icons, which are resolved at the end
+    enum TIconType
+        {
+        EIconWlan, EIconCellular, EIconNone
+        };
+    TIconType icon = EIconWlan;
+
+    TPtrC titlePtr;
+    titlePtr.Set( Ktxt_occ_dpophead_connection_failed );
+    TPtrC textPtr;
+
+    // Resolve title, text and icon of error code.
+    // Groups are from OCC UI spec 1.0
+    switch (aErrorCode)
+        {
+
+        // Skipped errors, for which the popup is not shown.
+        case KErrNone:
+        case KErrConnectionTerminated:
+        case KErrDisconnected:
+        case KErrCancel:
+            return EFalse;
+
+        // Group 1
+        case KErrIfChangingPassword:
+            icon = EIconCellular;
+        // These were GPRS; fall through
+        case KErrWlanInternalError:
+            textPtr.Set( Ktxt_occ_dpopinfo_internal_error );
+            break;
+
+        // Group 2
+        case KErrWlanNetworkNotFound:
+            textPtr.Set( Ktxt_occ_dpopinfo_wlan_network_not_found );
+            break;
+
+        // Group 3
+        case KErrGprsUserAuthenticationFailure:
+            icon = EIconCellular;
+        // These were GPRS; fall through
+        case KErrWlanOpenAuthFailed:
+        case KErrWlanSharedKeyAuthRequired:
+        case KErrWlanWpaAuthRequired:
+        case KErrWlanWpaAuthFailed:
+        case KErrWlan802dot1xAuthFailed:
+        case KErrWlanWpaCounterMeasuresActive:
+        case KErrWlanPskModeRequired:
+        case KErrWlanEapModeRequired:
+        case KErrWlanEapSimFailed:
+        case KErrWlanEapTlsFailed:
+        case KErrWlanEapPeapFailed:
+        case KErrWlanEapMsChapv2: // Is the same as KErrWlanEapMsChaPFailed
+        case KErrWlanEapAkaFailed:
+        case KErrWlanEapTtlsFailed:
+        case KErrWlanLeapFailed:
+        case KErrWlanEapGtcFailed:
+        case KErrWlanWpa2OnlyModeNotSupported:
+        case KErrWlanEapFastTunnelCompromiseError:
+        case KErrWlanEapFastUnexpextedTlvExhanged:
+        case KErrWlanEapFastNoPacNorCertsToAuthenticateWithProvDisabled:
+        case KErrWlanEapFastNoMatchingPacForAid:
+        case KErrWlanEapFastAuthFailed:
+        case KErrWlanEapFastPacStoreCorrupted:
+            textPtr.Set( Ktxt_occ_dpopinfo_authentication_unsuccessful );
+            break;
+
+        // Group 4
+        case KErrWlanSharedKeyAuthFailed:
+        case KErrWlanIllegalWpaPskKey:
+        case KErrWlanIllegalEncryptionKeys:
+            textPtr.Set( Ktxt_occ_dpopinfo_check_security_key );
+            break;
+
+        // Group 5
+        case KErrExitModemError:
+        case KErrExitLoginFail:
+        case KErrExitScriptTimeOut:
+        case KErrExitScriptError:
+        case KErrIfAuthenticationFailure:
+        case KErrIfAuthNotSecure:
+        case KErrIfAccountDisabled:
+        case KErrIfRestrictedLogonHours:
+        case KErrIfPasswdExpired:
+        case KErrIfNoDialInPermission:
+        case KErrGprsMissingorUnknownAPN:
+            icon = EIconCellular;
+            textPtr.Set( Ktxt_occ_dpopinfo_check_connection_settings );
+            break;
+
+        // Group 6
+        case KErrWlanSimNotInstalled:
+            textPtr.Set( Ktxt_occ_dpopinfo_sim_card_missing );
+            break;
+
+        // Group 7
+        case KErrWlanNotSubscribed:
+        case KErrWlanAccessBarred:
+            textPtr.Set( Ktxt_occ_dpopinfo_service_unreachable );
+            break;
+
+        // Group 8
+        case KErrPermissionDenied:
+        case KErrWlanPasswordExpired:
+        case KErrWlanNoDialinPermissions:
+        case KErrWlanAccountDisabled:
+        case KErrWlanRestrictedLogonHours:
+        case KErrWlanServerCertificateExpired:
+        case KErrWlanCerficateVerifyFailed:
+        case KErrWlanNoUserCertificate:
+        case KErrWlanNoCipherSuite:
+        case KErrWlanUserRejected:
+        case KErrWlanUserCertificateExpired:
+            textPtr.Set( Ktxt_occ_dpopinfo_permission_denied );
+            break;
+
+        // Group 9
+        case KErrPDPMaxContextsReached:
+            icon = EIconCellular;
+            // These were GPRS; fall through
+        case KErrWlanConnAlreadyActive:
+            textPtr.Set( Ktxt_occ_dpopinfo_connection_already_active );
+            break;
+
+        // Group 10
+        case KErrWlanSignalTooWeak:
+            textPtr.Set( Ktxt_occ_dpopinfo_signal_too_weak );
+            break;
+
+        // Group 11
+        case KErrIfCallbackNotAcceptable:
+        case KErrIfDNSNotFound:
+        case KErrIfLRDBadLine:
+        case KErrNetUnreach:
+        case KErrHostUnreach:
+        case KErrNoProtocolOpt:
+        case KErrUrgentData:
+        case KErrInet6NoRoute:
+        case KErrDndNameNotFound:
+        case KErrGeneralConnection:
+        case KErrGprsMSCTemporarilyNotReachable:
+        case KErrGprsLlcOrSndcpFailure:
+        case KErrGprsInsufficientResources:
+        case KErrGprsActivationRejectedByGGSN:
+        case KErrPacketDataTsyInvalidAPN:
+            icon = EIconCellular;
+            // These were GPRS; fall through
+        case KErrWlanRoamingFailed:
+            textPtr.Set( Ktxt_occ_dpopinfo_please_try_again );
+            break;
+
+        // Group 12
+        case KErrGenConnNoGPRSNetwork:
+        case KErrGprsServicesNotAllowed:
+        case KErrGprsAndNonGprsServicesNotAllowed:
+        case KErrGprsMSIdentityCannotBeDerivedByTheNetwork:
+        case KErrGprsMSImplicitlyDetached:
+        case KErrGsmMMNetworkFailure:
+        case KErrGprsUnknownPDPAddress:
+        case KErrGprsActivationRejected:
+        case KErrGsmMMServiceOptionNotSubscribed:
+        case KErrGsmMMServiceOptionTemporaryOutOfOrder:
+        case KErrGprsNSAPIAlreadyUsed:
+        case KErrGprsQoSNotAccepted:
+        case KErrGprsReactivationRequested:
+            icon = EIconCellular;
+            textPtr.Set( Ktxt_occ_dpopinfo_connection_unavailable );
+            break;
+
+        // Group 13
+        case KErrWlanProtectedSetupDevicePasswordAuthFailure:
+        case KErrWlanProtectedSetupPINMethodNotSupported:
+        case KErrWlanProtectedSetupPBMethodNotSupported:
+            titlePtr.Set( Ktxt_occ_dpophead_configuration_failed );
+            textPtr.Set( Ktxt_occ_dpopinfo_authentication_unsuccessful );
+            break;
+
+        // Group 14
+        case KErrWlanProtectedSetupOOBInterfaceReadError:
+        case KErrWlanProtectedSetupDecryptionCRCFailure:
+        case KErrWlanProtectedSetup2_4ChannelNotSupported:
+        case KErrWlanProtectedSetup5_0ChannelNotSupported:
+        case KErrWlanProtectedSetupNetworkAuthFailure:
+        case KErrWlanProtectedSetupNoDHCPResponse:
+        case KErrWlanProtectedSetupFailedDHCPConfig:
+        case KErrWlanProtectedSetupIPAddressConflict:
+        case KErrWlanProtectedSetupCouldNotConnectToRegistrar:
+        case KErrWlanProtectedSetupMultiplePBCSessionsDetected:
+        case KErrWlanProtectedSetupRogueActivitySuspected:
+        case KErrWlanProtectedSetupDeviceBusy:
+        case KErrWlanProtectedSetupSetupLocked:
+        case KErrWlanProtectedSetupMessageTimeout:
+        case KErrWlanProtectedSetupRegistrationSessionTimeout:
+            titlePtr.Set( Ktxt_occ_dpophead_configuration_failed );
+            textPtr.Set( Ktxt_occ_dpopinfo_please_try_again );
+            break;
+
+        // For error values not specifically mapped to any error message
+        // the discreet pop-up #12 is used.
+        default:
+            icon = EIconNone;
+            textPtr.Set( Ktxt_occ_dpopinfo_connection_unavailable );
+            break;
+        }
+
+    // Load and set title, text and icon
+    HBufC* titleBuf = HbTextResolverSymbian::LoadLC( titlePtr );
+    iPopup->SetTitleL( titleBuf->Des() );
+    HBufC* textBuf = HbTextResolverSymbian::LoadLC( textPtr );
+    iPopup->SetTextL( textBuf->Des() );
+    CleanupStack::PopAndDestroy( 2, titleBuf );
+
+    switch (icon)
+        {
+        case EIconWlan:
+            iPopup->SetIconNameL( KIconWlan );
+            break;
+        case EIconCellular:
+            iPopup->SetIconNameL( KIconCellular );
+            break;
+        default:
+            __ASSERT_DEBUG( icon == EIconNone, User::Invariant());
+            // Leave icon as-is, either set by ConnectingViaDiscreetPopup
+            // or undefined.
+            break;
+        }
+    
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_RESOLVEERRORCODEL_EXIT );
+    return ETrue;
+    }
+
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::NotificationDialogActivated()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::NotificationDialogActivated(
+        const CHbDeviceNotificationDialogSymbian* /*aDialog*/ )
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_NOTIFICATIONDIALOGACTIVATED_ENTRY );
+    
+    // Launch wlan view or connection view depending of bearer
+    TPtrC procName; 
+    if (iPopup->IconName().Compare( KIconWlan ) == 0)
+        {
+        procName.Set( KWlanViewExeFile );
+        }
+    else if (iPopup->IconName().Compare( KIconCellular ) == 0)
+        {
+        procName.Set( KConnViewExeFile );
+        }
+    else
+        {
+        OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_NOTIFICATIONDIALOGACTIVATED_EXIT );
+
+        return;
+        }
+
+    RProcess proc;
+    TInt procError = proc.Create( procName, KExeFileCmd );
+    OstTrace1( TRACE_FLOW, CCONNECTIONSTATUSPOPUP_NOTIFICATIONDIALOGACTIVATED, "CConnectionStatusPopup::NotificationDialogActivated;procError=%d", procError );
+    if (!procError)
+        {
+        proc.Resume();
+        proc.Close(); // Closes the handle, not the process.
+        }
+
+    OstTraceFunctionExit0( DUP1_CCONNECTIONSTATUSPOPUP_NOTIFICATIONDIALOGACTIVATED_EXIT );
+    }
+
+//-----------------------------------------------------------------------------
+//  CConnectionStatusPopup::NotificationDialogClosed()
+//-----------------------------------------------------------------------------
+//
+void CConnectionStatusPopup::NotificationDialogClosed(
+        const CHbDeviceNotificationDialogSymbian* /*aDialog*/,
+        TInt /*aCompletionCode*/ )
+    {
+    OstTraceFunctionEntry0( CCONNECTIONSTATUSPOPUP_NOTIFICATIONDIALOGCLOSED_ENTRY );
+    
+    SetState( EPopupClosed );
+    
+    OstTraceFunctionExit0( CCONNECTIONSTATUSPOPUP_NOTIFICATIONDIALOGCLOSED_EXIT );
+    }
--- a/connectionutilities/ConnectionDialogs/cconndlg/clientinc/ActiveLogin.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-/*
-* Copyright (c) 2003 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:  
-*
-*/
-
-
-
-#ifndef __ACTIVELOGIN_H__
-#define __ACTIVELOGIN_H__
-
-// INCLUDES
-#include "ConnDlgPlugin.h"
-#include <e32base.h>
-
-
-// CLASS DECLARATION
-
-/**
-* ActiveObject for asynchronous operations
-*/
-NONSHARABLE_CLASS( CActiveLogin ) : public CActive
-    {
-    private:
-        /**
-        * C++ default constructor.
-        * @param aUsername The address where the caller of the Authenticate
-        *                  dialog needs to save the username data inserted by 
-        *                  the user.
-        * @param aPassword The address where the caller of the Authenticate
-        *                  dialog needs to save the password data inserted by 
-        *                  the user.
-        */
-        CActiveLogin( TDes& aUsername, TDes& aPassword );
-
-        /**
-        * By default Symbian 2nd phase constructor is private.
-        */
-        void ConstructL();
-
-
-    public:  // Constructors and destructor
-        /**
-        * Two-phased constructor.
-        * @param aUsername The address where the caller of the Authenticate
-        *                  dialog needs to save the username data inserted by 
-        *                  the user.
-        * @param aPassword The address where the caller of the Authenticate
-        *                  dialog needs to save the password data inserted by 
-        *                  the user.
-        */
-        static CActiveLogin* NewL( TDes& aUsername, TDes& aPassword );
-
-        /**
-        * Destructor.
-        */
-        virtual ~CActiveLogin();
-
-
-    public: // From base class
-        /**
-        * This function is called when the scheduled function ends.
-        */
-        void RunL();
-
-        /**
-        * Cancel operations.
-        */
-        void DoCancel();
-
-
-    public: // New functions
-        /**
-        * Add this class on the ActiveScheduler and puts itself active.
-        * @param aStatus The status that is checked by the caller of the 
-        *                Authenticate dialog.
-        */
-        void Observe( TRequestStatus &aStatus );
-
-        /**
-        * Returns the TAuthenticationPairBuff 
-        * @return A pointer to iAuthenticationPairBuff.
-        */
-        TPckgBuf<TAuthenticationPairBuff>* GetBuffer();
-
-
-    private:    // Data
-        // The status that is checked by the caller of the Authentication 
-        // dialog. Not owned.
-        TRequestStatus* iRs;    
-
-        // The address of the area where the caller of the Authentication 
-        // dialog expects the value for username. Not owned.
-        TDes* iUsername;
-
-        // The address of the area where the caller of the Authentication 
-        // dialog expects the value for password. Not owned.
-        TDes* iPassword;
-
-        // Packed buffer containing user name and password used as input and 
-        // output for Authentication dialog.
-        TPckgBuf<TAuthenticationPairBuff> iAuthenticationPairBuff;
-    };
-
-
-#endif
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/clientsrc/ActiveLogin.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-/*
-* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of CActiveLogin class
-*
-*/
-
-
-// INCLUDE FILES
-#include "ActiveLogin.h"
-
-
-// ================= MEMBER FUNCTIONS =======================
-//
-// ----------------------------------------------------------------------------
-// CActiveLogin::CActiveLogin
-// ----------------------------------------------------------------------------
-//
-CActiveLogin::CActiveLogin( TDes& aUsername, TDes& aPassword )
-: CActive( CActive::EPriorityUserInput ),
-  iUsername( &aUsername ),
-  iPassword( &aPassword )
-    {
-    iAuthenticationPairBuff().iUsername = aUsername;
-    iAuthenticationPairBuff().iPassword = aPassword;
-    }
-
-
-// ----------------------------------------------------------------------------
-// CActiveLogin::NewL
-// ----------------------------------------------------------------------------
-//
-CActiveLogin* CActiveLogin::NewL( TDes& aUsername, TDes& aPassword )
-    {
-    CActiveLogin* self = new( ELeave )CActiveLogin( aUsername, aPassword );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    return self;
-    }
-
-
-// ----------------------------------------------------------------------------
-// CActiveLogin::ConstructL
-// ----------------------------------------------------------------------------
-//
-void CActiveLogin::ConstructL()
-    {
-    }
-
-
-// ----------------------------------------------------
-// CActiveLogin::~CActiveLogin()
-// ----------------------------------------------------
-//
-CActiveLogin::~CActiveLogin()
-    {
-    Cancel();
-    }
-
-
-// ----------------------------------------------------------------------------
-// CActiveLogin::RunL
-// ----------------------------------------------------------------------------
-//
-void CActiveLogin::RunL()
-    {
-    if ( iStatus.Int() == KErrNone )
-        {
-        *iUsername = iAuthenticationPairBuff().iUsername;
-        *iPassword = iAuthenticationPairBuff().iPassword;
-        }
-
-    TRequestStatus* pS = iRs;
-    User::RequestComplete( pS, iStatus.Int() );
-
-    delete this;
-    }
-
-
-// ----------------------------------------------------------------------------
-// CActiveLogin::DoCancel
-// ----------------------------------------------------------------------------
-//
-void CActiveLogin::DoCancel()
-    {
-    TRequestStatus* pS = iRs;
-    User::RequestComplete( pS, KErrCancel );
-    }
-
-
-// ----------------------------------------------------------------------------
-// CActiveLogin::Observe
-// ----------------------------------------------------------------------------
-//
-void CActiveLogin::Observe( TRequestStatus &aStatus )
-    {
-    CActiveScheduler::Add( this );
-
-    iRs = &aStatus;
-    *iRs = KRequestPending;
-
-    SetActive();
-    }
-
-
-// ----------------------------------------------------------------------------
-// CActiveLogin::GetBuffer
-// ----------------------------------------------------------------------------
-//
-TPckgBuf<TAuthenticationPairBuff>* CActiveLogin::GetBuffer() 
-    { 
-    return &iAuthenticationPairBuff; 
-    }
-
-
-// End of File  
--- a/connectionutilities/ConnectionDialogs/cconndlg/clientsrc/GenConAgentDialogServer.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/cconndlg/clientsrc/GenConAgentDialogServer.cpp	Mon May 03 12:53:07 2010 +0300
@@ -20,11 +20,14 @@
 // INCLUDE FILES
 #include "GenConAgentDialogServer.h"
 #include "ConnectionDialogsUidDefs.h"
-#include "ActiveLogin.h"
 #include "ConnectionDialogsLogger.h"
 
 #include <agentdialog.h>
 
+// NOTE that the functionality this file is DEPRECATED
+// None on the methods have UI functionality, the plugins complete the requests
+// immediately when they are started
+
 
 // ---------------------------------------------------------
 // ThreadFunction
@@ -223,31 +226,20 @@
     {
     CLOG_ENTERFN( "RGenConAgentDialogServer::Authenticate" );
 
-    CActiveLogin* activeLogin = NULL;
-
-    TRAPD( err, activeLogin = CActiveLogin::NewL( aUsername, aPassword ) );
-
-    iNotUsed() = ( TUint32 )activeLogin;
+    // To get rid of compile warnings;
+    aPassword = aPassword;
+    aUsername = aUsername;
     
-    if ( err != KErrNone )
-        {
-        TRequestStatus* pS = &aStatus;
-        User::RequestComplete( pS, err );
-        }
-    else
+
+    // temporaty variable to get the notifier started
+    TPckgBuf<TUint32> notUsed;
+
+    if ( iNotifier )
         {
-        activeLogin->Observe( aStatus );
-
-        TPckgBuf<TAuthenticationPairBuff>* authenticationPairBuff = 
-                                                    activeLogin->GetBuffer();
-
-        if ( iNotifier )
-            {
-            iNotifier->StartNotifierAndGetResponse( activeLogin->iStatus,
-                                                    KUidCConnDlgAuthentication,
-                                                    *authenticationPairBuff,
-                                                    *authenticationPairBuff );
-            }
+        iNotifier->StartNotifierAndGetResponse( aStatus,
+                                                KUidCConnDlgAuthentication,
+                                                notUsed,
+                                                notUsed );
         }
 
     CLOG_LEAVEFN( "RGenConAgentDialogServer::Authenticate" );
@@ -439,11 +431,6 @@
         iNotifier->CancelNotifier( KUidCConnDlgAuthentication );
         }
 
-    CActiveLogin* activeLogin = ( CActiveLogin* )iNotUsed();
-
-    activeLogin->Cancel();
-    delete activeLogin;
-
     CLOG_LEAVEFN( "RGenConAgentDialogServer::CancelAuthenticate" );
     }
 
--- a/connectionutilities/ConnectionDialogs/cconndlg/data/CConnDlgPlugin.rss	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,364 +0,0 @@
-/*
-* Copyright (c) 2002 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:  resorce of CConnDLGPLUGIN.
-*
-*/
-
-
-// RESOURCE IDENTIFIER
-NAME CDLG
-
-
-// INCLUDES
-#include <eikon.rh>
-#include <eikon.rsg>
-
-#include <avkon.rsg>
-#include <avkon.rh>
-#include <avkon.mbg>
-#include <apsettings.mbg>
-
-#include <avkon.hrh>
-#include <AvkonIcons.hrh>
-#include <avkon.loc>
-
-#include <agentdialog.loc>
-#include "ConnectionDialogs.hrh"
-
-
-// RESOURCE DEFINITIONS 
-
-RESOURCE RSS_SIGNATURE { }
-
-
-RESOURCE CBA r_softkeys_done_cancel__select
-    {
-    buttons =
-        {
-        CBA_BUTTON { id = EAknSoftkeyDone;   txt = text_softkey_done; },
-        CBA_BUTTON { id = EAknSoftkeyCancel; txt = text_softkey_cancel; },
-        CBA_BUTTON { id = EAknSoftkeyDone;   txt = qtn_msk_select; }
-        };
-    }
-
-
-RESOURCE DIALOG r_conndlg_authentication
-    {
-    flags = EEikDialogFlagNotifyEsc | EEikDialogFlagNoDrag | 
-            EEikDialogFlagNoTitleBar | EEikDialogFlagCbaButtons;
-    buttons = r_softkeys_done_cancel__select;
-    items=
-        {
-        DLG_LINE
-            {
-            type = EAknCtMultilineQuery;
-            id = EMultilineFirstLine;
-            control = AVKON_DATA_QUERY
-                {
-                layout = EMultiDataFirstEdwin;
-                label = qtn_netw_iap_auth_username;
-                control = EDWIN
-                    {
-                    avkon_flags = EAknEditorFlagLatinInputModesOnly;
-                    allowed_input_modes = EAknEditorTextInputMode | 
-                                          EAknEditorNumericInputMode;
-                    width = 50;
-                    lines = 1;
-                    maxlength = 50;
-                    };
-                };
-            },
-
-        DLG_LINE
-            {
-            type = EAknCtMultilineQuery;
-            id = EMultilineSecondLine;
-            control = AVKON_DATA_QUERY
-                {
-                layout = EMultiDataSecondSecEd;
-                label = qtn_netw_iap_auth_password;
-                control = SECRETED
-                    {
-                    num_letters = 50;
-                    };
-                };
-            }
-        };
-    }
-
-
-RESOURCE DIALOG r_conndlg_reconnect
-    {
-    flags = EEikDialogFlagNotifyEsc | EEikDialogFlagCbaButtons | 
-            EEikDialogFlagNoDrag | EEikDialogFlagNoTitleBar | 
-            EEikDialogFlagCbaButtons;
-    buttons = R_AVKON_SOFTKEYS_YES_NO__YES;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtQuery;
-            id = EGeneralQuery;
-            control= AVKON_CONFIRMATION_QUERY
-                {
-                layout = EConfirmationLayout;
-                label = qtn_ics_q_conn_lost_reconn;
-                };
-            }
-        };
-    }
-
-
-RESOURCE DIALOG r_conndlg_qos
-    {
-    flags = EEikDialogFlagNotifyEsc | EEikDialogFlagCbaButtons | 
-            EEikDialogFlagNoDrag | EEikDialogFlagNoTitleBar | 
-            EEikDialogFlagCbaButtons;
-    buttons = R_AVKON_SOFTKEYS_YES_NO__YES;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtQuery;
-            id = EGeneralQuery;
-            control = AVKON_CONFIRMATION_QUERY
-                {
-                layout = EConfirmationLayout;
-                label = qtn_ics_q_conn_qos_reconn;
-                };
-            }
-        };
-    }
-
-
-RESOURCE AVKON_LIST_QUERY r_list_query
-    {
-    softkeys = R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT;
-    flags = EEikDialogFlagNotifyEsc | EEikDialogFlagCbaButtons |
-            EEikDialogFlagNoDrag | EEikDialogFlagNoTitleBar;
-
-    items =
-        {
-        AVKON_LIST_QUERY_DLG_LINE
-            {
-            id = EListQueryControl;
-            control = AVKON_LIST_QUERY_CONTROL
-                {
-                listtype = EAknCtSingleGraphicPopupMenuListBox;
-                listbox = AVKON_LIST_QUERY_LIST
-                    {
-                    flags = EAknListBoxSelectionList;
-                    };
-
-                heading = qtn_ics_ap_list_title;
-                };
-            }
-        };
-    }
-
-
-RESOURCE DIALOG r_conndlg_new_iap
-    {
-    flags = EEikDialogFlagNotifyEsc | EEikDialogFlagCbaButtons | 
-            EEikDialogFlagNoDrag | EEikDialogFlagNoTitleBar;
-    buttons = R_AVKON_SOFTKEYS_YES_NO__YES;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtQuery;
-            id = EGeneralQuery;
-            control= AVKON_CONFIRMATION_QUERY
-                {
-                layout = EConfirmationLayout;
-                };
-            }
-        };
-    }
-
-
-RESOURCE TBUF r_conndlg_new_connection_attempt 
-    { 
-    buf = qtn_ics_ap_connect_text; 
-    }
-
-
-RESOURCE TBUF r_wlan_search_for_networks 
-    { 
-    buf = qtn_wlan_search_for_networks; 
-    }
-
-    
-RESOURCE DIALOG r_searching_wait_note
-	{
-	flags = EAknWaitNoteFlags;
-	buttons=R_AVKON_SOFTKEYS_EMPTY;
-    items=
-		{
-		DLG_LINE
-			{
-			type = EAknCtNote;
-			id = 0x112; // 
-			control= AVKON_NOTE 
-                { 
-				layout = EWaitLayout;
-				singular_label = qtn_netw_wait_checking_avail_conn;			
-                imagefile = AVKON_ICON_FILE;
-				imageid = EMbmAvkonQgn_note_progress;
-				imagemask = EMbmAvkonQgn_note_progress_mask;
-				animation = R_QGN_GRAF_WAIT_BAR_ANIM;				
-				};
-			}
-		};
-    }
-
-
-RESOURCE TBUF r_wlan_easy_wlan
-    { 
-    buf = qtn_netw_conset_easy_wlan; 
-    }
-
-    
-RESOURCE TBUF r_list_uncategorized
-    { 
-    buf = qtn_netw_conset_dest_uncategorized; 
-    }
-
-
-RESOURCE TBUF r_conn_methods_many
-    { 
-    buf = qtn_netw_conset_conn_methods_amount_many;
-    }
-
-
-RESOURCE TBUF r_conn_methods_one
-    { 
-    buf = qtn_netw_conset_conn_methods_amount_one;
-    }
-
-
-RESOURCE CBA r_softkeys_options_cancel__connect
-    {
-    buttons =
-        {
-        CBA_BUTTON { id = EAknSoftkeyOptions; txt = text_softkey_option; },
-        CBA_BUTTON { id = EAknSoftkeyCancel;  txt = text_softkey_cancel; },
-        CBA_BUTTON { id = EAknSoftkeyDone;    txt = qtn_msk_connect; }
-        };
-    }
-
-
-    
-RESOURCE AVKON_LIST_QUERY r_select_connection_query
-    {
-    softkeys = r_softkeys_options_cancel__connect;
-    flags = EEikDialogFlagNotifyEsc | EEikDialogFlagCbaButtons |
-            EEikDialogFlagNoDrag | EEikDialogFlagNoTitleBar;
-
-    items =
-        {
-        AVKON_LIST_QUERY_DLG_LINE
-            {
-            id = EListQueryControl;
-            control = AVKON_LIST_QUERY_CONTROL
-                {
-                listtype = EAknCtDoubleLargeGraphicPopupMenuListBox;
-                listbox = AVKON_LIST_QUERY_LIST
-                    {
-                    };
-
-                heading = qtn_netw_conset_prmpt_select_connection;
-                };
-            }
-        };
-    }
-
-
-RESOURCE MENU_BAR r_select_connection_menubar
-    {
-    titles =
-        {
-        MENU_TITLE { menu_pane = r_select_connection_menu_pane; txt = ""; }
-        };
-    }
-
-
-RESOURCE MENU_PANE r_select_connection_menu_pane
-    {
-    items =
-        {
-        MENU_ITEM 
-            { 
-            command = ESelectConnectionCmdSelect;  
-            txt = qtn_set_cmd_select;
-            flags = EEikMenuItemAction; 
-            },
-
-        MENU_ITEM 
-            { 
-            command = ESelectConnectionCmdConnect;  
-            txt = qtn_set_cmd_connect;
-            flags = EEikMenuItemAction;
-            },
-
-        MENU_ITEM 
-            { 
-            command = ESelectConnectionCmdChooseMethod; 
-            txt = qtn_netw_conset_options_select_method;
-            flags = EEikMenuItemSpecific; 
-            }
-        };
-    }
-
-
-RESOURCE CBA r_softkeys_connect_cancel__select
-    {
-    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_msk_select; }
-        };
-    }
-
-
-RESOURCE AVKON_LIST_QUERY r_list_explicit_query
-    {
-    softkeys = r_softkeys_connect_cancel__select;
-    flags = EEikDialogFlagNotifyEsc | EEikDialogFlagCbaButtons |
-            EEikDialogFlagNoDrag | EEikDialogFlagNoTitleBar;
-
-    items =
-        {
-        AVKON_LIST_QUERY_DLG_LINE
-            {
-            id = EListQueryControl;
-            control = AVKON_LIST_QUERY_CONTROL
-                {
-                listtype = EAknCtSingleGraphicPopupMenuListBox;
-                listbox = AVKON_LIST_QUERY_LIST
-                    {
-                    flags = EAknListBoxSelectionList;
-                    };
-
-                heading = qtn_netw_conset_prmpt_select_conn_method;
-                };
-            }
-        };
-    }
-
-
-// End of File
-
-
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/ActiveBase.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of a CActive base class 
-*
-*/
-
-
-
-#ifndef __ACTIVEBASE_H__
-#define __ACTIVEBASE_H__
-
-
-// INCLUDES
-#include <e32base.h>
-
-
-// CLASS DECLARATION
-
-/**
- * CActiveBase class, an active object for selection plugin
- */     
-NONSHARABLE_CLASS( CActiveBase ) : public CActive
-    {
-    public:
-        /**
-        * NewL function
-        */
-        static CActiveBase* NewL();
-    
-        /**
-        * Destructor
-        */    
-        virtual ~CActiveBase();
-    
-        /**
-        * Cancels the active object
-        */
-        void Cancel();
-
-        /**
-        * Timer callback of iPeridoc.
-        */
-        static TInt Tick( TAny* aObject );    
-    
-        
-    protected:
-        /**
-        * ConstructL 
-        */
-        void ConstructL();
-    
-        /**
-        * Constructor
-        */    
-        CActiveBase();
-    
-        /**
-        * DoCancel from CActive
-        */    
-        virtual void DoCancel();
-
-        /**
-        * RunL from CActive
-        */
-        virtual void RunL();
-
-        /**
-        * Starts Timer
-        * @param aTickInterval refersh interval
-        */
-        void StartTimerL( TInt aTickInterval );
-    
-        /**
-        * Stops Timer
-        */
-        void StopTimer();                                            
-        
-
-    protected:
-    
-        // Timer, to refresh iaps of networks. Owned.
-        CPeriodic* iPeriodic;
-            
-        // used for complete runl, not owned.
-        TRequestStatus* iClientStatus;  
-    };     
-
-
-#endif
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/ActiveIapPlugin.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of Active Iap 
-*
-*/
-
-
-
-#ifndef __ACTIVEIAPPLUGIN_H__
-#define __ACTIVEIAPPLUGIN_H__
-
-
-// INCLUDES
-#include "ConnDlgPlugin.h"
-#include "ActiveIAPListing.h"
-
-
-// FORWARD DECLARATION
-class CIapDialog;
-
-
-// CLASS DECLARATION
-
-/**
- * CActiveCConnDlgIapPlugin class,
- * an active object for CConnDlgIapPlugin
- */     
-NONSHARABLE_CLASS( CActiveCConnDlgIapPlugin ) : public CActiveIAPListing
-    {
-    public:
-        /**
-        * NewL function
-        * @param  aPlugin a pointer to notifier plugin
-        * @param aIAPId iap id
-        * @param aPrefs preferences pointer    
-        */
-        static CActiveCConnDlgIapPlugin* NewL( CConnDlgIapPlugin* aPlugin,                            
-                                           const TConnectionPrefs& aPrefs );
-    
-        /**
-        * StartSearchIAPsL setactive and starts active object
-        */    
-        void StartSearchIAPsL();
-
-        /**
-        * Destructor
-        */    
-        virtual ~CActiveCConnDlgIapPlugin();
-    
-        /**
-        * Cancels the active object
-        */
-        void Cancel();
-
-              
-    protected:
-        /**
-        * ConstructL 
-        */
-        void ConstructL();
-    
-        /**
-        * Constructor
-        * @param  aPlugin a pointer to notifier plugin    
-        * @param aIAPId iap id
-        * @param aPrefs preferences pointer        
-        */    
-        CActiveCConnDlgIapPlugin( CConnDlgIapPlugin* aPlugin,
-                                  const TConnectionPrefs& aPrefs );
-    
-        /**
-        * DoCancel from CActive
-        */    
-        virtual void DoCancel();
-
-        /**
-        * RunL from CActive
-        */
-        virtual void RunL();
-
-        /**
-        * Gives back, refresh interval of scan for network
-        */
-        TInt GetRefreshInterval();
-
-
-    protected:
-    
-        // a pointer to notifer, not owned
-        CConnDlgIapPlugin* iPlugin;
-    
-        ///< Pointer to the dialog, not owned 
-        CIapDialog* iDialog;
-    
-        TBool isDialogDeleting; 
-     
-    };     
-
-
-#endif
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/ActiveSelectConnectionPlugin.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,174 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of Active SelectConnection 
-*
-*/
-
-
-
-#ifndef __ACTIVESELECTCONNECTIONPLUGIN_H__
-#define __ACTIVESELECTCONNECTIONPLUGIN_H__
-
-
-// INCLUDES
-#include <e32base.h>
-#include <agentdialog.h>
-#include <cmmanagerext.h>
-#include <rmpm.h>
-#include "ActiveBase.h"
-
-
-// FORWARD DECLARATION
-class CSelectConnectionDialog;
-class CConnectionInfoArray;
-class MEikSrvNotifierBase2;
-class CGulIcon;
-class TSortSnapUtils;
-
-// CLASS DECLARATION
-
-/**
- * CActiveSelectConnectionPlugin class,
- * an active object for selection plugin
- */     
-NONSHARABLE_CLASS( CActiveSelectConnectionPlugin ) : public CActiveBase
-    {
-    public:
-        /**
-        * NewL function
-        * @param  aPlugin a pointer to notifier plugin
-        * @param aIAPId iap id
-        * @param aPrefs preferences pointer    
-        */
-        static CActiveSelectConnectionPlugin* NewL( 
-                                                MEikSrvNotifierBase2* aPlugin,
-                                                const TUint32 aElementId,
-                                                TUint32 aBearerSet );
-    
-        /**
-        * Setactive and starts active object
-        */    
-        void ShowSelectConnectionL();
-
-        /**
-        * Destructor
-        */    
-        virtual ~CActiveSelectConnectionPlugin();
-    
-        /**
-        * Cancels the active object
-        */
-        void Cancel();
-
-        /**
-        * Sets the preferred iap into db.
-        * calls iActivePlugin    
-        * @param aIAPId id of the preferred iap
-        * @param aDestinationId id of the preferred Destination
-        */
-        TUint32 GetElementIDL( TUint32 aIAPId, TUint32 aDestinationId );
-
-
-    protected:
-        /**
-        * ConstructL 
-        */
-        void ConstructL();
-    
-        /**
-        * Constructor
-        * @param  aPlugin a pointer to notifier plugin    
-        * @param aIAPId iap id
-        * @param aPrefs preferences pointer        
-        */    
-        CActiveSelectConnectionPlugin( MEikSrvNotifierBase2* aPlugin,
-                                       const TUint32 aElementId,
-                                       TUint32 aBearerSet );
-    
-        /**
-        * DoCancel from CActive
-        */    
-        virtual void DoCancel();
-
-        /**
-        * RunL from CActive
-        */
-        virtual void RunL();
-
-        /**
-        * BuildConnectionListL
-        * @param    -
-        */
-        void BuildConnectionListL();
-
-        void AddSearchForWLanItemL();
-
-        void AddDestinationItemsL();
-        void AddDestinationItemL( RCmDestinationExt aDestination, 
-                                  TUint32 aDestId, TBool aFirstItem, 
-                                  TBool aDefaultDest,
-                                  TSortSnapUtils& aSortSnapUtils );
-
-        void AddUncategorizedItemL( TSortSnapUtils& aSortSnapUtils );
-        
-        /**
-        * Gives back, refresh interval of scan for network
-        */
-        TInt GetRefreshIntervalL();
-        
-        /**
-        * Counts the number of ad-hoc WLAN iaps
-        */
-        TInt CountAdhocWlanIapsL();
-
-    protected:
-        // contains all iaps from db, owned
-        CConnectionInfoArray *iItems;   
-
-        // Selected preferences
-        TUint32 iBearerSet;
-
-        // Requested bearer set preference
-        TUint32 iReqBearerSet;
-        
-        // Selected preferences
-        TUint32 iElementId;
-
-        // a pointer to notifer, not owned
-        MEikSrvNotifierBase2* iPlugin;
-    
-        ///< Pointer to the dialog, not owned 
-        CSelectConnectionDialog* iDialogConn;
-    
-        TBool iIsWLANFeatureSupported;
-
-        TInt iRefreshInterval;
-
-        TInt iHighlightedItem;
-
-        CArrayPtr< CGulIcon >* iIcons;
-
-        RMPM iMPM;
-
-        RCmManagerExt iCmManagerExt;
-
-        TUint iDefaultDestId;
-
-        TUint iDefaultCMId;
-    };     
-
-
-#endif
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/ActiveSelectExplicit.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of Active Iap 
-*
-*/
-
-
-
-#ifndef __ACTIVESELECTEXPLICIT_H__
-#define __ACTIVESELECTEXPLICIT_H__
-
-
-// INCLUDES
-#include "ConnDlgPlugin.h"
-#include "ActiveIAPListing.h"
-#include "SelectConnectionDialog.h"
-#include "ActiveBase.h"
-#include <cmmanagerext.h>
-#include <rmpm.h>
-
-
-// FORWARD DECLARATION
-class CSelectExplicitDialog;
-
-
-// CLASS DECLARATION
-
-/**
- * CActiveSelectExplicit class,
- * an active object for SelectExplicit
- */     
-NONSHARABLE_CLASS( CActiveSelectExplicit ) : public CActiveBase
-    {
-    public:
-        /**
-        * NewL function
-        * @param  aPlugin a pointer to notifier plugin
-        * @param aIAPId iap id
-        * @param aPrefs preferences pointer    
-        */
-        static CActiveSelectExplicit* NewL( 
-                                        CSelectConnectionDialog* aCallerDialog,
-                                        TUint aDestId, 
-                                        TInt aRefreshInterval,
-                                        TUint32 aBearerSet, 
-                                        TBool aIsWLANFeatureSupported, 
-                                        TUint aDefaultCMId );
-
-        /**
-        * Setactive and starts active object
-        */    
-        void ShowSelectExplicitL();
-
-        /**
-        * Destructor
-        */    
-        virtual ~CActiveSelectExplicit();
-    
-        /**
-        * Cancels the active object
-        */
-        void Cancel();
-
-        /**
-        * Gives back the id of preferred iap.
-        * @return the id of iap
-        */
-        TUint32 GetPreferredIapIdL();
-    
-    
-        /**
-        * Sets the preferred iap into db.
-        * @param aIAPId id of the preferred iap
-        */
-        void SetPreferredIapIdL( TUint32 aIAPId );
-
-        
-    protected:
-        /**
-        * ConstructL 
-        */
-        void ConstructL();
-    
-        /**
-        * Constructor
-        * @param  aPlugin a pointer to notifier plugin    
-        * @param aIAPId iap id
-        * @param aPrefs preferences pointer        
-        */    
-        CActiveSelectExplicit( CSelectConnectionDialog* aCallerDialog,
-                               TUint aDestId, 
-                               TInt aRefreshInterval,
-                               TUint32 aBearerSet, 
-                               TBool aIsWLANFeatureSupported, 
-                               TUint aDefaultCMId );
-
-
-        /**
-        * DoCancel from CActive
-        */    
-        virtual void DoCancel();
-
-        /**
-        * RunL from CActive
-        */
-        virtual void RunL();
-
-        /**
-        * BuildConnectionListL
-        * @param    -
-        */
-        void BuildConnectionListL();
-
-        void AddConnectionMethodItemL( TUint32 aId,
-                                       TBool aCheckForEasyWlan, 
-                                       TBool& aEasyWlanIsInDb, 
-                                       TBool aDefaultCM );
-                                       
-        void AddAdhocWlanIapsL();                               
-
-
-    protected:
-        // contains all iaps from db, owned
-        CConnectionInfoArray *iItems;   
-
-        CSelectConnectionDialog* iCallerDialog;
-
-        TUint iDestId;
-
-        ///< Pointer to the dialog, not owned 
-        CSelectExplicitDialog* iDialog;
-    
-        TInt iRefreshInterval;
-
-        CArrayPtr< CGulIcon >* iIcons;
-
-        RMPM iMPM;
-        RCmManagerExt iCmManagerExt;
-
-        TUint32 iBearerSet;
-        TBool iIsWLANFeatureSupported;
-        TUint iDefaultCMId;
-    };     
-
-
-#endif
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/AuthenticationDialog.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of class CAuthenticationDialog.
-*
-*/
-
-
-#ifndef __AUTHENTICATIONDIALOG_H__
-#define __AUTHENTICATIONDIALOG_H__
-
-
-// INCLUDES
-#include <e32base.h>
-#include <AknQueryDialog.h>
-
-#include "ExpiryTimerCallback.h"
-
-// FORWARD DECLARATION
-class CConnDlgAuthenticationPlugin;
-class CExpiryTimer;
-
-// CLASS DECLARATION
-/**
- * Class implementing Authentication (username and password) dialog
- */
-NONSHARABLE_CLASS( CAuthenticationDialog ) : 
-                                            public CAknMultiLineDataQueryDialog, public MExpiryTimerCallback
-    {
-    public:
-        /**
-        * NewL function
-        * @param aPlugin    plugin pointer
-        * @param aDb        database pointer
-        * @param aUsername  username
-        * @param aPassword  password
-        * return CAuthenticationDialog*
-        */
-        static CAuthenticationDialog* NewL( 
-                                        CConnDlgAuthenticationPlugin* aPlugin,
-                                        TDes& aUsername, 
-                                        TDes& aPassword );
-
-    private:
-        /**
-        * CAuthenticationDialog default constructor
-        * @param aPlugin    plugin pointer
-        * @param aDb        database pointer
-        * @param aUsername  username
-        * @param aPassword  password
-        */
-        CAuthenticationDialog( CConnDlgAuthenticationPlugin* aPlugin );
-
-        /**
-        * OkToExitL destructor
-        * @param  aButtonId button exit id
-        * @return TBool exit or no
-        */
-        virtual TBool OkToExitL( TInt aButtonId );
-
-        /**
-        * ~CAuthenticationDialog destructor
-        * @param    -
-        */
-        ~CAuthenticationDialog();
-
-        /**
-        * HandleQueryEditorStateEventL function
-        * @param    aQueryControl   Control to be queried
-        * @param    aEventType      Type of event (not used)
-        * @param    aStatus         Status of the control (empty or not)
-        * return    TBool
-        */
-        TBool HandleQueryEditorStateEventL( CAknQueryControl* aQueryControl, 
-                                            TQueryControlEvent aEventType, 
-                                            TQueryValidationStatus aStatus );
-        
-        /**
-        * Dialog expiration timeout callback
-        */
-        void HandleTimedOut();
-
-    private:
-        /**
-        * PreLayoutDynInitL function
-        * @param    -
-        */
-        virtual void PreLayoutDynInitL();
-
-        /**
-        * SetInitialCurrentLine function
-        * @param    -
-        */
-        virtual void SetInitialCurrentLine();
-
-
-    private:
-        // Status of username field (empty or not)
-        TBool iFirstEmpty;
-
-        // Status of password field (empty or not)
-        TBool iSecondEmpty;
-
-        // Pointer to the plugin
-        CConnDlgAuthenticationPlugin* iPlugin;
-        
-        // Pointer for dialog expiration timer
-        CExpiryTimer* iExpiryTimer;
-    };
-
-
-#endif
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/CConnDlgPrivateCRKeys.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
-* Copyright (c) 2005 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:  Defining local variation for the module
-*
-*
-*/
-
-
-#ifndef CCONNDLGPRIVATECRKEYS_H
-#define CCONNDLGPRIVATECRKEYS_H
-
-const TUid KCRUidCConnDlg = {0x10008D55};
-
-// Local variation for CConnDlg
-
-// KCConnDlgScanInterval defines the WLAN scanning interval for IAP dialog in
-// microseconds
-const TUint32 KCConnDlgScanInterval = 0x00000001;
-
-
-#endif      // CCONNDLGPRIVATECRKEYS_H
\ No newline at end of file
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/ConnDlgPlugin.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/cconndlg/inc/ConnDlgPlugin.h	Mon May 03 12:53:07 2010 +0300
@@ -16,6 +16,10 @@
 */
 
 
+// NOTE that the functionality this header contains is DEPRECATED
+// None on the methods have UI functionality, the plugins complete the requests
+// immediately when they are started
+
 
 #ifndef __CONNDLGPLUGIN_H__
 #define __CONNDLGPLUGIN_H__
@@ -87,8 +91,6 @@
 // FORWARD DECLARATION
 class CAknMultiLineDataQueryDialog;
 class CAknQueryDialog;
-class CActiveCConnDlgIapPlugin;
-class CActiveSelectConnectionPlugin;
 
 // CLASS DECLARATION
 
@@ -111,7 +113,65 @@
     * @param  -
     * return CConnDlgIapPlugin*
     */
-    static CConnDlgIapPlugin* NewL( const TBool aResourceFileResponsible );
+    static CConnDlgIapPlugin* NewL( const TBool /*aResourceFileResponsible*/ );
+
+    /**
+    * RegisterL register the client notifier function
+    * @param  -
+    * return TNotifierInfo
+    */
+    TNotifierInfo RegisterL();
+
+    /**
+    * Start the Notifier
+    * @param  aBuffer    Buffer
+    * @param  aReplySlot Identifies which message argument to use for the 
+    *                    reply. This message argument will refer to a 
+    *                    modifiable descriptor, a TDes8 type, into which data
+    *                    can be returned. 
+    * @param  aMessage   Message
+    * return -
+    */
+    void StartL( const TDesC8& aBuffer, TInt aReplySlot, 
+                 const RMessagePtr2& aMessage );
+
+    /**
+    * Cancel() the notifier
+    * @param  -
+    * return -
+    */
+    void Cancel();
+
+public:
+
+    /**
+    * CompleteL the notifier is complete
+    * @param  aStatus status
+    * return  -
+    */
+    void CompleteL( TInt aStatus );   
+    
+private:
+    TUint32 iIAP;                       // Internet Access Point
+    };
+
+
+/**
+ * Authentication Plugin class
+ */
+NONSHARABLE_CLASS( CConnDlgAuthenticationPlugin ) : 
+                                            public CConnectionDialogsNotifBase
+    {
+public:
+    CConnDlgAuthenticationPlugin::CConnDlgAuthenticationPlugin();
+
+    /**
+    * NewL function
+    * @param  -
+    * return CConnDlgAuthenticationPlugin*
+    */
+    static CConnDlgAuthenticationPlugin* NewL( 
+                                        const TBool /*aResourceFileResponsible*/ );
 
     /**
     * RegisterL register the client notifier function
@@ -148,102 +208,6 @@
     * return  -
     */
     void CompleteL( TInt aStatus );
-    
-    /**
-    * Sets the preferred iap into db.
-    * calls iActivePlugin    
-    * @param aIAPId id of the preferred iap
-    */
-    void SetPreferredIapIdL( TUint32 aIAPId );
-    
-private:
-
-    /**
-    * Gets user connection info.    
-    * @param aIapId id of the iap
-    */ 
-    TInt GetUserConnection( TInt& aIapId );
-    
-    /**
-    * Gets active connection info.    
-    * @param aIapId id of the iap
-    * @param aBearer bearer type
-    */
-    TInt GetActiveConnection( TInt& aIapId, TInt& aBearer );    
-    
-private:
-    TUint32 iIAP;                       // Internet Access Point
-    TPckgBuf<TConnectionPrefs> iPrefs;  // Selected preferences
-    CActiveCConnDlgIapPlugin* iActivePlugin;    // pointer to active object
-    };
-
-
-/**
- * Authentication Plugin class
- */
-NONSHARABLE_CLASS( CConnDlgAuthenticationPlugin ) : 
-                                            public CConnectionDialogsNotifBase
-    {
-public:
-    CConnDlgAuthenticationPlugin::CConnDlgAuthenticationPlugin();
-
-    /**
-    * NewL function
-    * @param  -
-    * return CConnDlgAuthenticationPlugin*
-    */
-    static CConnDlgAuthenticationPlugin* NewL( 
-                                        const TBool aResourceFileResponsible );
-
-    /**
-    * RegisterL register the client notifier function
-    * @param  -
-    * return TNotifierInfo
-    */
-    TNotifierInfo RegisterL();
-
-    /**
-    * Start the Notifier
-    * @param  aBuffer    Buffer
-    * @param  aReplySlot Identifies which message argument to use for the 
-    *                    reply. This message argument will refer to a 
-    *                    modifiable descriptor, a TDes8 type, into which data
-    *                    can be returned. 
-    * @param  aMessage   Message
-    * return -
-    */
-    void StartL( const TDesC8& aBuffer, TInt aReplySlot, 
-                 const RMessagePtr2& aMessage );
-
-    /**
-    * Cancel() the notifier
-    * @param  -
-    * return -
-    */
-    void Cancel();
-
-public:
-
-    /**
-    * GetAuthenticationL() show the Authenticate  dialog
-    * @param  -
-    * return -
-    */
-    void GetAuthenticationL();
-
-    /**
-    * CompleteL the notifier is complete
-    * @param  aStatus status
-    * return  -
-    */
-    void CompleteL( TInt aStatus );
-
-private:
-    TPckgBuf<TAuthenticationPair> iAuthPair;    // Authentication pair 
-                                                // (username and password)
-    TPckgBuf<TAuthenticationPairBuff> iAuthPairBuff;    // Authentication pair 
-                                                // (username and password)
-    CAknMultiLineDataQueryDialog *iDialog;      // Pointer to the dialog
     };
 
 
@@ -261,7 +225,7 @@
     * return CConnDlgReconnectPlugin*
     */
     static CConnDlgReconnectPlugin* NewL( 
-                                        const TBool aResourceFileResponsible );
+                                        const TBool /*aResourceFileResponsible*/ );
 
     /**
     * RegisterL register the client notifier function
@@ -293,22 +257,11 @@
 public:
 
     /**
-    * GetReconnectL() call the reconnect dialog
-    * @param  -
-    * return -
-    */
-    void GetReconnectL();
-
-    /**
     * CompleteL the notifier is complete
     * @param  aStatus status
     * return  -
     */
     void CompleteL(TInt aStatus);
-
-private:
-    CAknQueryDialog* iDialog;   // Pointer to the dialog
-    TBool iBool;                // Tells if it has to connect to the IAP
     };
 
 
@@ -324,137 +277,7 @@
     * @param  -
     * return CConnDlgReconnectPlugin*
     */
-    static CConnDlgQosPlugin* NewL( const TBool aResourceFileResponsible );
-
-    /**
-    * RegisterL register the client notifier function
-    * @param  -
-    * return TNotifierInfo
-    */
-    TNotifierInfo RegisterL();
-
-    /**
-    * Start the Notifier
-    * @param  aBuffer    Buffer
-    * @param  aReplySlot Identifies which message argument to use for the 
-    *                    reply. This message argument will refer to a 
-    *                    modifiable descriptor, a TDes8 type, into which data
-    *                    can be returned. 
-    * @param  aMessage   Message
-    * return -
-    */
-    void StartL( const TDesC8& aBuffer, TInt aReplySlot, 
-                 const RMessagePtr2& aMessage );
-
-    /**
-    * Cancel() the notifier
-    * @param  -
-    * return -
-    */
-    void Cancel();
-
-public:
-
-    /**
-    * GetReconnectL() call the reconnect dialog
-    * @param  -
-    * return -
-    */
-    void GetReconnectL();
-
-    /**
-    * CompleteL the notifier is complete
-    * @param  aStatus status
-    * return  -
-    */
-    void CompleteL( TInt aStatus );
-
-private:
-    CAknQueryDialog* iDialog;   // Pointer to the dialog
-    TBool iBool;                // Tells if it has to connect to the IAP
-    };
-
-
-/**
- * New IAP Plugin class
- */
-NONSHARABLE_CLASS( CConnDlgNewIapPlugin ) : public CConnectionDialogsNotifBase
-    {
-public:
-
-    /**
-    * NewL function
-    * @param  -
-    * return CConnDlgNewIapPlugin*
-    */
-    static CConnDlgNewIapPlugin* NewL( const TBool aResourceFileResponsible );
-
-    /**
-    * RegisterL register the client notifier function
-    * @param  -
-    * return TNotifierInfo
-    */
-    TNotifierInfo RegisterL();
-
-    /**
-    * Start the Notifier
-    * @param  aBuffer    Buffer
-    * @param  aReplySlot Identifies which message argument to use for the 
-    *                    reply. This message argument will refer to a 
-    *                    modifiable descriptor, a TDes8 type, into which data
-    *                    can be returned. 
-    * @param  aMessage   Message
-    * return -
-    */
-    void StartL( const TDesC8& aBuffer, TInt aReplySlot, 
-                 const RMessagePtr2& aMessage );
-
-    /**
-    * Cancel() the notifier
-    * @param  -
-    * return -
-    */
-    void Cancel();
-
-public:
-
-    /**
-    * GetNewIapL show NewIap dialog
-    * @param  -
-    * return  -
-    */
-    void GetNewIapL();
-
-    /**
-    * CompleteL the notifier is complete
-    * @param  aStatus status
-    * return  -
-    */
-    void CompleteL( TInt aStatus );
-
-private:
-    CAknQueryDialog* iDialog;                   // Pointer to the dialog
-    TBool iConnect;                             // Tells if it has to connect 
-                                                // to the IAP
-    TPckgBuf<TNewIapConnectionPrefs> iPrefs;    // Selected preferences
-    };
-
-
-
-/**
- * Connection Selection Plugin class
- */
-NONSHARABLE_CLASS( CConnDlgSelectConnectionPlugin ) : 
-                                            public CConnectionDialogsNotifBase
-    {
-public:
-    /**
-    * NewL function
-    * @param  -
-    * return CConnDlgSelectConnectionPlugin*
-    */
-    static CConnDlgSelectConnectionPlugin* NewL( 
-                                        const TBool aResourceFileResponsible );
+    static CConnDlgQosPlugin* NewL( const TBool /*aResourceFileResponsible*/ );
 
     /**
     * RegisterL register the client notifier function
@@ -491,36 +314,115 @@
     * return  -
     */
     void CompleteL( TInt aStatus );
-    
+    };
+
+
+/**
+ * New IAP Plugin class
+ */
+NONSHARABLE_CLASS( CConnDlgNewIapPlugin ) : public CConnectionDialogsNotifBase
+    {
+public:
+
+    /**
+    * NewL function
+    * @param  -
+    * return CConnDlgNewIapPlugin*
+    */
+    static CConnDlgNewIapPlugin* NewL( const TBool /*aResourceFileResponsible*/ );
+
     /**
-    * Sets the preferred iap into db.
-    * calls iActivePlugin    
-    * @param aIAPId id of the preferred iap
-    * @param aDestinationId id of the preferred Destination
+    * RegisterL register the client notifier function
+    * @param  -
+    * return TNotifierInfo
     */
-    void SetElementIDL( TUint32 aIAPId, TUint32 aDestinationId );
-    
-private:
+    TNotifierInfo RegisterL();
+
+    /**
+    * Start the Notifier
+    * @param  aBuffer    Buffer
+    * @param  aReplySlot Identifies which message argument to use for the 
+    *                    reply. This message argument will refer to a 
+    *                    modifiable descriptor, a TDes8 type, into which data
+    *                    can be returned. 
+    * @param  aMessage   Message
+    * return -
+    */
+    void StartL( const TDesC8& aBuffer, TInt aReplySlot, 
+                 const RMessagePtr2& aMessage );
+
+    /**
+    * Cancel() the notifier
+    * @param  -
+    * return -
+    */
+    void Cancel();
+
+public:
 
     /**
-    * Gets user connection info.    
-    * @param aIapId id of the iap
-    * @param aSnapId id of the destination
+    * CompleteL the notifier is complete
+    * @param  aStatus status
+    * return  -
     */
-    TInt GetUserConnection( TInt& aIapId, TInt& aSnapId );
-    
+    void CompleteL( TInt aStatus );
+    };
+
+
+
+/**
+ * Connection Selection Plugin class
+ */
+NONSHARABLE_CLASS( CConnDlgSelectConnectionPlugin ) : 
+                                            public CConnectionDialogsNotifBase
+    {
+public:
+    /**
+    * NewL function
+    * @param  -
+    * return CConnDlgSelectConnectionPlugin*
+    */
+    static CConnDlgSelectConnectionPlugin* NewL( 
+                                        const TBool /*aResourceFileResponsible*/ );
+
     /**
-    * Gets active connection info.    
-    * @param aIapId id of the iap
-    * @param aSnapId id of the destination
-    * @param aBearer bearer type
-    */    
-    TInt GetActiveConnection( TInt& aIapId, TInt& aSnapId, TInt& aBearer );
+    * RegisterL register the client notifier function
+    * @param  -
+    * return TNotifierInfo
+    */
+    TNotifierInfo RegisterL();
+
+    /**
+    * Start the Notifier
+    * @param  aBuffer    Buffer
+    * @param  aReplySlot Identifies which message argument to use for the 
+    *                    reply. This message argument will refer to a 
+    *                    modifiable descriptor, a TDes8 type, into which data
+    *                    can be returned. 
+    * @param  aMessage   Message
+    * return -
+    */
+    void StartL( const TDesC8& /*aBuffer*/, TInt aReplySlot, 
+                 const RMessagePtr2& aMessage );
+
+    /**
+    * Cancel() the notifier
+    * @param  -
+    * return -
+    */
+    void Cancel();
+
+public:
+
+    /**
+    * CompleteL the notifier is complete
+    * @param  aStatus status
+    * return  -
+    */
+    void CompleteL( TInt aStatus );
 
 private:
     TUint32 iElementID;
-    TPckgBuf<TConnectionPrefs> iPrefs;  // Selected preferences
-    CActiveSelectConnectionPlugin* iActivePlugin;   // pointer to active object
     };
 
 #endif
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/IAPDialog.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of class CIapDialog.
-*
-*/
-
-
-#ifndef __IAPDIALOG_H__
-#define __IAPDIALOG_H__
-
-
-// INCLUDES
-#include <e32base.h>
-#include <aknlistquerydialog.h>
-
-#include "ExpiryTimerCallback.h"
-
-// FORWARD DECLARATION
-class CConnDlgIapPlugin;
-class CConnectionInfoArray;
-class CExpiryTimer;
-
-// CLASS DECLARATION 
-/**
- * Class implementing IAP dialog
- */
-NONSHARABLE_CLASS( CIapDialog ) : public CAknListQueryDialog, public MExpiryTimerCallback
-    {
-    private:
-        /**
-        * CIapDialog constructor
-        * @param aPlugin    plugin pointer
-        */
-        CIapDialog( CConnDlgIapPlugin* aPlugin );
-
-        /**
-        * Symbian default constructor.
-        */      
-        void ConstructL();
-
-
-    public:
-        /**
-        * NewL function
-        * @param aPlugin    plugin pointer
-        * return CIapDialog*
-        */
-        static CIapDialog* NewL( CConnDlgIapPlugin* aPlugin );
-
-        /**
-        * ~CIapDialog destructor
-        */
-        ~CIapDialog();
-
-        /**
-        * Exit function OF the CIapDialog
-        * @param    aButtonId button exit id
-        * @return TBool exit or no
-        */
-        virtual TBool OkToExitL( TInt aButtonId );
-        
-        /**
-        * from CCoeControl
-        * @param aKeyEvent Event to handled.
-        * @param aType Type of the key event. 
-        * @return Response code (EKeyWasConsumed, EKeyWasNotConsumed). 
-        */
-        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                     TEventCode aType);
-        
-        /**
-        * Dialog refreshing
-        */
-        void RefreshDialogL( CConnectionInfoArray* aIAP, 
-                             TBool aIsReallyRefreshing );
-                             
-       /**
-        *
-        * @return The value of iFromOkToExit.
-        */
-        inline TBool GetOkToExit();
-        
-        /**
-        * Dialog expiration timeout callback
-        */
-        void HandleTimedOut();
-
-
-    private:
-        /**
-        * PreLayoutDynInitL
-        * @param    -
-        */
-        virtual void PreLayoutDynInitL();
-
-
-    private:
-        /**
-        * Sets graphic icons
-        * @param    -
-        */
-        void SetIconsL();
-
-        
-    private:    // Data
-
-        // Pointer to the plugin, not owned
-        CConnDlgIapPlugin* iPlugin;     
-        
-        RArray<TUint> iIAPIds;
-
-        // For base class, unused.
-        TInt iDummy;
-        
-        TBool iFromOkToExit; ///< closed the dialof from OkToExitL or not
-        
-        // Pointer for dialog expiration timer
-        CExpiryTimer* iExpiryTimer;
-    };
-
-
-#include "IapDialog.inl"
-
-#endif
-
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/IapDialog.inl	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
-* Copyright (c) 2006 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: 
-*      Inline method definitions of the class IAPDIALOG.
-*
-*
-*/
-
-
-
-#ifndef __IAPDIALOG_H__INL
-#define __IAPDIALOG_H__INL
-
-
-// ================= MEMBER FUNCTIONS =======================
-// ----------------------------------------------------------------------------
-// void CIapDialog::GetOkToExit
-// ----------------------------------------------------------------------------
-//
-TBool CIapDialog::GetOkToExit()
-	{
-	return iFromOkToExit;
-	}
-        
-
-
-#endif // __IAPDIALOG_H__INL
-
-// End of File
\ No newline at end of file
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/NewIapDialog.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of class CNewIapDialog.
-*
-*/
-
-
-#ifndef __NEWIAPDIALOG_H__
-#define __NEWIAPDIALOG_H__
-
-
-// INCLUDES
-#include <e32base.h>
-#include <AknQueryDialog.h>
-#include <agentdialog.h>
-#include "ExpiryTimerCallback.h"
-
-// FORWARD DECLARATIONS
-class CConnDlgNewIapPlugin;
-class CExpiryTimer;
-
-// CLASS DECLARATIONS
-
-/**
- * Class implementing New IAP warning dialog.
- */
-NONSHARABLE_CLASS( CNewIapDialog ) : public CAknQueryDialog, public MExpiryTimerCallback
-    {
-    public:
-
-        /**
-        * Constructor the CNewIapDialog class
-        * @param aPlugin plugin pointer
-        * @param aConnect connect to the IAP
-        * @param aPrefs preferences infomation
-        * @return -
-        */
-        CNewIapDialog( CConnDlgNewIapPlugin* aPlugin, 
-                       TBool& aConnect,
-                       const TNewIapConnectionPrefs& aPrefs );
-
-    /**
-    * Destructor
-    */
-    virtual ~CNewIapDialog();
-
-        /**
-        * CBA handling function
-        * @param aButtonId button Uid
-        * @return TBool exit or no
-        */
-        virtual TBool OkToExitL( TInt aButtonId );
-        
-        /**
-        * Dialog expiration timeout callback
-        */
-        void HandleTimedOut();
-
-    private:
-        /**
-        * PreLayoutDynInitL function
-        * @param -
-        * @return -
-        */
-        void PreLayoutDynInitL();
-
-    private:
-        // Pointer to the plugin
-        CConnDlgNewIapPlugin* iPlugin;      
-
-        // Specifies way of closing of the dialog. ETrue when 'Yes' or 'Done'
-        // softkeys pressed.
-        TBool& iConnect;                    
-
-        // Selected preferences
-        const TNewIapConnectionPrefs& iPrefs;
-
-        // Pointer for dialog expiration timer
-        CExpiryTimer* iExpiryTimer;
-    };
-
-
-#endif
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/QosDialog.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of class CQosDialog.
-*
-*/
-
-
-#ifndef __QOSDIALOG_H__
-#define __QOSDIALOG_H__
-
-
-// INCLUDES
-#include <e32base.h>
-#include <AknQueryDialog.h>
-#include "ExpiryTimerCallback.h"
-
-// FORWARD DECLARATIONS
-class CConnDlgQosPlugin;
-class CExpiryTimer;
-
-// CLASS DECLARATIONS
-
-/**
- * Class implementing Quality of services dialog.
- */
-NONSHARABLE_CLASS( CQosDialog ) : public CAknQueryDialog, public MExpiryTimerCallback
-    {
-    public:
-        /**
-        * Constructor the CQosDialog class
-        * @param aPlugin plugin pointer
-        * @param aBool reconnect to the Qos
-        * @return -
-        */
-        CQosDialog( CConnDlgQosPlugin* aPlugin, TBool& aBool );
-
-        /**
-        * Exit function the CQosDialog
-        * @param aButtonId plugin pointer
-        * @param aBool reconnect to the IAP
-        * @return TBool exit or no
-        */
-        virtual TBool OkToExitL( TInt aButtonId );
-        
-        /**
-        * Dialog expiration timeout callback
-        */
-        void HandleTimedOut();
-
-    /**
-    * Destructor
-    */
-    virtual ~CQosDialog();
-
-
-    private:
-        /**
-        * PreLayoutDynInitL
-        * @param    -
-        */
-        virtual void PreLayoutDynInitL();
-
-
-    private:
-        // Pointer to the plugin
-        CConnDlgQosPlugin* iPlugin;
-
-        // Specifies way of closing of the dialog. ETrue when 'Yes' or 'Done'
-        // softkeys pressed.
-        TBool& iBool;     
-
-        // Pointer for dialog expiration timer
-        CExpiryTimer* iExpiryTimer;
-        
-    };
-
-#endif  // __QOSDIALOG_H__
-
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/ReconnectDialog.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of class CReconnectDialog.
-*
-*/
-
-
-#ifndef __RECONNECTDIALOG_H__
-#define __RECONNECTDIALOG_H__
-
-// INCLUDES
-#include <e32base.h>
-#include <AknQueryDialog.h>
-#include "ExpiryTimerCallback.h"
-
-// FORWARD DECLARATIONS
-class CConnDlgReconnectPlugin;
-class CExpiryTimer;
-
-// CLASS DECLARATIONS
-
-/**
- * Class implementing Reconnect dialog
- */
-NONSHARABLE_CLASS( CReconnectDialog ) : public CAknQueryDialog, public MExpiryTimerCallback
-    {
-    public:
-        /**
-        * Constructor of the CReconnetDialog class
-        * @param aPlugin plugin pointer
-        * @param aBool reconnect to the IAP
-        * @return -
-        */
-        CReconnectDialog( CConnDlgReconnectPlugin* aPlugin, TBool& aBool );
-
-        /**
-        * Exit function the CReconnectDialog
-        * @param aButtonId plugin pointer
-        * @param aBool reconnect to the IAP
-        * @return TBool exit or no
-        */
-        virtual TBool OkToExitL( TInt aButtonId );
-        
-        /**
-        * Dialog expiration timeout callback
-        */
-        void HandleTimedOut();
-
-
-    /**
-    * Destructor
-    */
-    virtual ~CReconnectDialog();
-
-
-    private:
-        /**
-        * PreLayoutDynInitL
-        * @param    -
-        */
-        virtual void PreLayoutDynInitL();
-
-
-    private:
-        // Pointer to the plugin
-        CConnDlgReconnectPlugin* iPlugin;
-
-        // Specifies way of closing of the dialog. ETrue when 'Yes' or 'Done'
-        // softkeys pressed.
-        TBool& iBool;
-        
-        // Pointer for dialog expiration timer
-        CExpiryTimer* iExpiryTimer;
-    };
-
-#endif  // __RECONNECTDIALOG_H__
-
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/SelectConnectionDialog.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,181 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of class CSelectConnectionDialog.
-*
-*/
-
-
-#ifndef __SELECTCONNECTIONDIALOG_H__
-#define __SELECTCONNECTIONDIALOG_H__
-
-
-// INCLUDES
-#include <e32base.h>
-#include <aknlistquerydialog.h>
-#include "ExpiryTimerCallback.h"
-
-
-// FORWARD DECLARATION
-class CConnDlgSelectConnectionPlugin;
-class CConnectionInfoArray;
-class MEikSrvNotifierBase2;
-class CActiveSelectExplicit;
-class CExpiryTimer;
-
-// CLASS DECLARATION 
-/**
- * Class implementing SelectConnection dialog
- */
-NONSHARABLE_CLASS( CSelectConnectionDialog ) : public CAknListQueryDialog, public MExpiryTimerCallback
-    {
-    private:
-        /**
-        * CSelectConnectionDialog constructor
-        * @param aPlugin    plugin pointer
-        */
-        CSelectConnectionDialog( MEikSrvNotifierBase2* aPlugin, 
-                                 TInt aRefreshInterval,
-                                 TUint32 aBearerSet, 
-                                 TBool aIsWLANFeatureSupported, 
-                                 TUint aDefaultCMId );
-
-        /**
-        * Symbian default constructor.
-        */      
-        void ConstructL();
-
-
-    public:
-        /**
-        * NewL function
-        * @param aPlugin    plugin pointer
-        * return CSelectConnectionDialog*
-        */
-        static CSelectConnectionDialog* NewL( MEikSrvNotifierBase2* aPlugin,
-                                        TInt aRefreshInterval,
-                                        TUint32 aBearerSet, 
-                                        TBool aIsWLANFeatureSupported, 
-                                        TUint aDefaultCMId );
-
-        /**
-        * ~CSelectConnectionDialog destructor
-        */
-        ~CSelectConnectionDialog();
-
-        /**
-        * Exit function OF the CSelectConnectionDialog
-        * @param    aButtonId button exit id
-        * @return TBool exit or no
-        */
-        virtual TBool OkToExitL( TInt aButtonId );
-        
-        void PrepareAndRunLD( CConnectionInfoArray* aIAP, 
-                             CArrayPtr< CGulIcon >* aIcons,
-                             TBool aIsReallyRefreshing,
-                             const TInt aHighlightedItem );
-                             
-        /**
-        * Dialog refreshing
-        */
-        void RefreshDialogL( CConnectionInfoArray* aIAP, 
-                             CArrayPtr< CGulIcon >* aIcons,
-                             TBool aIsReallyRefreshing,
-                             const TInt aHighlightedItem );
-                             
-       /**
-        *
-        * @return The value of iFromOkToExit.
-        */
-        inline TBool GetOkToExit();          
-        
-        /**
-        * Dialog expiration timeout callback
-        */
-        void HandleTimedOut();
-
-        /**
-        * From CCoeControl  Handle key events. When a key event occurs, 
-        *                   CONE calls this function for each control on the control stack, 
-        *                   until one of them returns EKeyWasConsumed to indicate that it processed the key event.  
-        * @param aKeyEvent  The key event.
-        * @param aType      The type of the event: EEventKey, EEventKeyUp or EEventKeyDown.
-        * @return           Indicates whether or not the key event was used by this control.
-        */
-        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                     TEventCode aType );
-
-        TInt RunLD();
-
-        void SetElementIDL( TUint32 aIAPId );
-
-        void CompleteL( TInt aStatus );
-        
-        void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType);
-
-        void HandlePointerEventL(const TPointerEvent& aPointerEvent);
-
-    private:
-        /**
-        * PreLayoutDynInitL
-        * @param    -
-        */
-        virtual void PreLayoutDynInitL();
-
-        /**
-        * Initialize menu pane.
-        * @param aResourceId Menu pane resource id.
-        * @param CEikMenuPane Menu pane.
-        */
-        void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-
-        void ProcessCommandL( TInt aCommand );
-
-
-    private:    // Data
-
-        // Pointer to the plugin, not owned
-        CConnDlgSelectConnectionPlugin* iPlugin;     
-        
-        RArray<TUint> iIapIDs;
-        RArray<TUint> iDestIDs;
-
-        // For base class, unused.
-        TInt iDummy;
-        
-        TBool iFromOkToExit; ///< closed the dialof from OkToExitL or not
-
-        CArrayPtr< CGulIcon >* iIcons;
-
-        // pointer to active object
-        CActiveSelectExplicit* iActiveSelectExplicit;
-        TInt iRefreshInterval;
-
-        // Selected preferences
-        TUint32 iBearerSet;
-
-        TBool iIsWLANFeatureSupported;
-
-        TUint iDefaultCMId;
-        
-        // Pointer for dialog expiration timer
-        CExpiryTimer* iExpiryTimer;
-    };
-
-
-#include "SelectConnectionDialog.inl"
-
-#endif
-
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/SelectConnectionDialog.inl	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
-* Copyright (c) 2006 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: 
-*      Inline method definitions of the class SelectConnectionDIALOG.
-*
-*
-*/
-
-
-
-#ifndef __SELECTCONNECTIONDIALOG_H__INL
-#define __SELECTCONNECTIONDIALOG_H__INL
-
-
-// ================= MEMBER FUNCTIONS =======================
-// ----------------------------------------------------------------------------
-// void CSelectConnectionDialog::GetOkToExit
-// ----------------------------------------------------------------------------
-//
-TBool CSelectConnectionDialog::GetOkToExit()
-	{
-	return iFromOkToExit;
-	}
-        
-
-
-#endif // __SELECTCONNECTIONDIALOG_H__INL
-
-// End of File
\ No newline at end of file
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/SelectExplicitDialog.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of class CSelectExplicitDialog.
-*
-*/
-
-
-#ifndef __SELECTEXPLICITDIALOG_H__
-#define __SELECTEXPLICITDIALOG_H__
-
-
-// INCLUDES
-#include <e32base.h>
-#include <aknlistquerydialog.h>
-#include "ExpiryTimerCallback.h"
-
-// FORWARD DECLARATION
-class CConnectionInfoArray;
-class CSelectConnectionDialog;
-class CExpiryTimer;
-
-// CLASS DECLARATION 
-/**
- * Class implementing SelectExplicit dialog
- */
-NONSHARABLE_CLASS( CSelectExplicitDialog ) : public CAknListQueryDialog, public MExpiryTimerCallback
-    {
-    private:
-        /**
-        * CSelectExplicitDialog constructor
-        * @param aPlugin    plugin pointer
-        */
-        CSelectExplicitDialog( CSelectConnectionDialog* aCallerDialog );
-
-        
-        /**
-        * Symbian default constructor.
-        */      
-        void ConstructL();
-
-
-    public:
-        /**
-        * NewL function
-        * @param aPlugin    plugin pointer
-        * return CSelectExplicitDialog*
-        */
-        static CSelectExplicitDialog* NewL( 
-                                    CSelectConnectionDialog* aCallerDialog );
-
-
-        /**
-        * ~CSelectExplicitDialog destructor
-        */
-        ~CSelectExplicitDialog();
-
-        /**
-        * Exit function OF the CSelectExplicitDialog
-        * @param    aButtonId button exit id
-        * @return TBool exit or no
-        */
-        virtual TBool OkToExitL( TInt aButtonId );
-        
-        void PrepareAndRunLD( CConnectionInfoArray* aIAP, 
-                             CArrayPtr< CGulIcon >* aIcons,
-                             TBool aIsReallyRefreshing );
-                             
-        /**
-        * Dialog refreshing
-        */
-        void RefreshDialogL( CConnectionInfoArray* aIAP, 
-                             CArrayPtr< CGulIcon >* aIcons,
-                             TBool aIsReallyRefreshing );
-                             
-       /**
-        *
-        * @return The value of iFromOkToExit.
-        */
-        inline TBool GetOkToExit();
-        
-        /**
-        * from CCoeControl
-        * @param aKeyEvent Event to handled.
-        * @param aType Type of the key event. 
-        * @return Response code (EKeyWasConsumed, EKeyWasNotConsumed). 
-        */
-        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                     TEventCode aType);
-
-        /**
-        * Dialog expiration timeout callback
-        */
-        void HandleTimedOut();
-    private:
-        /**
-        * PreLayoutDynInitL
-        * @param    -
-        */
-        virtual void PreLayoutDynInitL();
-
-
-    private:    // Data
-
-        // Pointer to the plugin, not owned
-        CSelectConnectionDialog* iCallerDialog;
-
-        RArray<TUint> iIAPIds;
-
-        TBool iFromOkToExit; ///< closed the dialof from OkToExitL or not
-        
-        TInt iDummy;
-        
-        CArrayPtr< CGulIcon >* iIcons;
-        
-        // Pointer for dialog expiration timer
-        CExpiryTimer* iExpiryTimer;
-
-    };
-
-
-#include "SelectExplicitDialog.inl"
-
-#endif
-
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/SelectExplicitDialog.inl	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
-* Copyright (c) 2006 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: 
-*      Inline method definitions of the class SelectExplicitDialog.
-*
-*
-*/
-
-
-
-#ifndef __SELECTEXPLICITDIALOG__INL
-#define __SELECTEXPLICITDIALOG__INL
-
-
-// ================= MEMBER FUNCTIONS =======================
-// ----------------------------------------------------------------------------
-// void CSelectExplicitDialog::GetOkToExit
-// ----------------------------------------------------------------------------
-//
-TBool CSelectExplicitDialog::GetOkToExit()
-	{
-	return iFromOkToExit;
-	}
-        
-
-#endif // __SELECTEXPLICITDIALOG__INL
-
-// End of File
\ No newline at end of file
--- a/connectionutilities/ConnectionDialogs/cconndlg/inc/sortsnaputils.h	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Declaration of TSortSnapUtils 
-*
-*/
-
-
-
-#ifndef __SORTSNAPUTILS_H__
-#define __SORTSNAPUTILS_H__
-
-
-// INCLUDES
-#include <e32base.h>
-#include <cmmanagerext.h>
-#include <rmpm.h>
-
-
-// CLASS DECLARATION
-
-/**
- * TSortSnapUtils class,
- * utility class to use P&S mechanism to
- * avoid circular reference with MPM
- */     
-class TSortSnapUtils 
-    {
-    public:
-        enum TSortSnapUtilsState
-            {
-            EUninitialised = 0,
-            EUseMPM,
-            EUsePubSub
-            } ;
-
-        /**
-        * Constructor
-        */    
-        TSortSnapUtils( RMPM& aMPM );
-        
-        /**
-        * Destructor
-        */    
-        ~TSortSnapUtils();
-
-        void GetDestIdArrayL( RCmManagerExt& aCmManagerExt, RArray<TUint32>& aDestArray );     
-
-        /**
-        * GetSortSNAPDataL
-        * Gets snap data 
-        * Reads P&S values first, then uses MPM if
-        * unsuccessful. This is needed to avoid a deadlock situation
-        * with MPM.
-        * @param aSnapData - iSnap attribute of TMpmSnapPubSubFormat is the
-        * input parameter, iSortedIaps attribute holds the iap ids if 
-        * returned with KErrNone
-        */
-        TInt GetSortSnapData( TUint32 aSnapId, TMpmSnapBuffer& aSnapBuffer );  
-
-    private:
-        void InitDestIdArray();
-       
-    private:
-        TUint32 iSnapIdArray[KMPMSortSnapMaxKey]; 
-        TInt iSnapCount;
-        TSortSnapUtilsState iSSUState;
-        RMPM& iMPM; 
-    };     
-
-
-#endif
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/ActiveBase.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,195 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of base CActive class with a timer
-*
-*/
-
-
-// INCLUDE FILES
-#include "ActiveBase.h"
-#include "ConnectionDialogsLogger.h"
-
-/*#include <FeatMgr.h>
-#include <StringLoader.h>
-#include <AknIconArray.h>
-#include <AknsUtils.h>
-#include <data_caging_path_literals.hrh>
-
-#include <cmdestinationext.h>
-#include <CmConnectionMethodDef.h>
-#include <cmpluginWlanDef.h>
-
-#include <cmmanager.mbg>
-#include <CConnDlgPlugin.rsg>
-*/
-
-
-
-///////////////////////////////////////////////////////////////////////////////
-
-// ---------------------------------------------------------
-// CActiveBase::CActiveBase()
-// ---------------------------------------------------------
-//
-CActiveBase::CActiveBase()
-: CActive( EPriorityUserInput )
-    {
-    }
-
-    
-// ---------------------------------------------------------
-// CActiveBase* CActiveBase::NewL()
-// ---------------------------------------------------------
-//
-CActiveBase* CActiveBase::NewL()
-    {
-    CLOG_ENTERFN( "CActiveBase::NewL " );  
-    
-    CActiveBase* self = new ( ELeave ) CActiveBase();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    
-    CLOG_LEAVEFN( "CActiveBase::NewL " );      
-
-    return self;        
-    }
-
-
-// ---------------------------------------------------------
-// CActiveBase::ConstructL()
-// ---------------------------------------------------------
-//
-void CActiveBase::ConstructL()
-    {
-    CActiveScheduler::Add( this );            
-    iPeriodic = CPeriodic::NewL( CActive::EPriorityStandard );
-    }
-
-
-// ---------------------------------------------------------
-// CActiveBase::~CActiveBase()
-// ---------------------------------------------------------
-//    
-CActiveBase::~CActiveBase()
-    {
-    Cancel();
-    }
-
-
-// ---------------------------------------------------------
-// CActiveBase::Cancel()
-// ---------------------------------------------------------
-// 
-void CActiveBase::Cancel()
-    {
-    StopTimer();
-    CActive::Cancel();
-    }
-
-
-// ---------------------------------------------------------
-// CActiveBase::DoCancel()
-// ---------------------------------------------------------
-// 
-void CActiveBase::DoCancel()
-    {
-    }
-
-    
-// ---------------------------------------------------------
-// CActiveBase::RunL()
-// ---------------------------------------------------------
-//     
-void CActiveBase::RunL()
-    {
-    }
-
-    
-// ---------------------------------------------------------
-// CActiveBase::StartTimerL
-// ---------------------------------------------------------
-//    
-void CActiveBase::StartTimerL( TInt aTickInterval )
-    {    
-    CLOG_ENTERFN( "CActiveBase::StartTimerL " );
-    
-    if( !iPeriodic )
-        {
-        iPeriodic = CPeriodic::NewL( CActive::EPriorityStandard ); 
-        }
-        
-    iPeriodic->Start( aTickInterval, aTickInterval, TCallBack( Tick, this ) );
-    
-    CLOG_LEAVEFN( "CActiveBase::StartTimerL " );
-    }
-
-
-// ---------------------------------------------------------
-// CActiveBase::StopTimer
-// ---------------------------------------------------------
-//
-void CActiveBase::StopTimer()
-    {
-    CLOG_ENTERFN( "CActiveBase::StopTimer " );  
-    
-    if( iPeriodic )
-        {
-        CLOG_WRITE( "iPeriodic" );
-        iPeriodic->Cancel();
-        CLOG_WRITE( "Cancel" );
-        
-        delete iPeriodic;
-        CLOG_WRITE( "delete" );
-        
-        iPeriodic = NULL;
-        }        
-    
-    CLOG_LEAVEFN( "CActiveBase::StopTimer " );
-    }
-
-    
-// ---------------------------------------------------------
-// CActiveBase::Tick
-// ---------------------------------------------------------
-//
-TInt CActiveBase::Tick( TAny* aObject )
-    {
-    CLOG_ENTERFN( "CActiveBase::Tick " );  
-    
-    CActiveBase* myself = static_cast<CActiveBase*>( aObject );
-
-    if ( myself->iStatus == KErrCancel )
-        {
-        CLOG_WRITE( "iStatus == KErrCancel" );        
-        myself->StopTimer();            
-        }
-    else
-        {
-        CLOG_WRITE( "iStatus != KErrCancel" );    
-                                                              
-        myself->SetActive();
-        myself->iClientStatus = &( myself->iStatus );  
-        *( myself->iClientStatus ) = KRequestPending;  
-
-        User::RequestComplete( myself->iClientStatus, KErrNone );         
-        }
-    
-    CLOG_LEAVEFN( "CActiveBase::Tick " );      
-    
-    return 1;
-    }        
-
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/ActiveIapPlugin.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,230 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of plugins (base & all derived).
-*
-*/
-
-
-// INCLUDE FILES
-#include "ActiveIapPlugin.h"
-#include "IAPDialog.h"
-#include "ConnectionInfo.h"
-#include "ConnectionInfoArray.h"
-#include "CConnDlgPrivateCRKeys.h"
-#include "ConnectionDialogsLogger.h"
-
-#include <commdb.h>
-#include <StringLoader.h>
-#include <wlanmgmtcommon.h>
-#ifndef __WINS__
-#include <wlanmgmtclient.h>
-#endif
-#include <AknWaitDialog.h>
-
-#include <CConnDlgPlugin.rsg>
-
-
-///////////////////////////////////////////////////////////////////////////////
-
-// ---------------------------------------------------------
-// CActiveCConnDlgIapPlugin::CActiveCConnDlgIapPlugin()
-// ---------------------------------------------------------
-//
-CActiveCConnDlgIapPlugin::CActiveCConnDlgIapPlugin( 
-                                            CConnDlgIapPlugin* aPlugin,
-                                            const TConnectionPrefs& aPrefs )
-: CActiveIAPListing( aPrefs ),
-  iPlugin( aPlugin ), 
-  isDialogDeleting( EFalse )
-    {
-    }
-
-    
-// ---------------------------------------------------------
-// CActiveCConnDlgIapPlugin* CActiveCConnDlgIapPlugin::NewL()
-// ---------------------------------------------------------
-//
-CActiveCConnDlgIapPlugin* CActiveCConnDlgIapPlugin::NewL( 
-                                              CConnDlgIapPlugin* aPlugin,              
-                                              const TConnectionPrefs& aPrefs )
-    {
-    CLOG_ENTERFN( "CActiveCConnDlgIapPlugin::NewL " );  
-    
-    CActiveCConnDlgIapPlugin* self = 
-                         new ( ELeave ) CActiveCConnDlgIapPlugin( aPlugin,                                                                  
-                                                                  aPrefs );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    
-    CLOG_LEAVEFN( "CActiveCConnDlgIapPlugin::NewL " );      
-
-    return self;        
-    }
-
-
-// ---------------------------------------------------------
-// CActiveCConnDlgIapPlugin::ConstructL()
-// ---------------------------------------------------------
-//
-void CActiveCConnDlgIapPlugin::ConstructL()
-    {
-    BaseConstructL();
-    }
-
-// ---------------------------------------------------------
-// CActiveCConnDlgIapPlugin::~CActiveCConnDlgIapPlugin()
-// ---------------------------------------------------------
-//    
-CActiveCConnDlgIapPlugin::~CActiveCConnDlgIapPlugin()
-    {
-    CLOG_ENTERFN( "CActiveCConnDlgIapPlugin::~CActiveCConnDlgIapPlugin" );      
-
-    Cancel();
-
-    CLOG_LEAVEFN( "CActiveCConnDlgIapPlugin::~CActiveCConnDlgIapPlugin" );      
-    }
-
-
-// ---------------------------------------------------------
-// CActiveCConnDlgIapPlugin::Cancel()
-// ---------------------------------------------------------
-// 
-void CActiveCConnDlgIapPlugin::Cancel()
-    {
-    CLOG_ENTERFN( "CActiveCConnDlgIapPlugin::Cancel" );      
-
-    CActiveIAPListing::Cancel();
-
-    CLOG_WRITE( "Returned from CActiveIAPListing::Cancel" );
-
-    if( iDialog  && !( iDialog->GetOkToExit() ) )
-        {
-        CLOG_WRITEF( _L( "iDialog->GetOkToExit() : %b" ), iDialog->GetOkToExit() );
-        delete iDialog;
-        iDialog = NULL;
-        }
-
-    CLOG_LEAVEFN( "CActiveCConnDlgIapPlugin::Cancel" );      
-    }
-
-
-// ---------------------------------------------------------
-// CActiveCConnDlgIapPlugin::DoCancel()
-// ---------------------------------------------------------
-// 
-void CActiveCConnDlgIapPlugin::DoCancel()
-    {
-    CLOG_ENTERFN( "CActiveCConnDlgIapPlugin::DoCancel " );  
-    
-    if( isDialogDeleting )
-        {
-        CLOG_WRITE( "isDialogDeleting" );
-        
-        delete iDialog;
-        iDialog = NULL;   
-        
-        isDialogDeleting = EFalse;         
-        }
-        
-    CLOG_LEAVEFN( "CActiveCConnDlgIapPlugin::DoCancel " );          
-    }
-
-    
-// ---------------------------------------------------------
-// CActiveCConnDlgIapPlugin::RunL()
-// ---------------------------------------------------------
-//     
-void CActiveCConnDlgIapPlugin::RunL()
-    {
-    CLOG_ENTERFN( "CActiveCConnDlgIapPlugin::RunL " );  
-    
-    CLOG_WRITEF( _L( "iStatus.Int() : %d" ), iStatus.Int() );
-    CLOG_WRITEF( _L( "&iStatus : %d" ), &iStatus );
-    
-    if( iStatus == KErrNone )
-        {
-        
-        if( iIAPs ) // if iIAPs has been created
-            {            
-            // merge arrays and sort
-            MergeArraysL( R_WLAN_SEARCH_FOR_NETWORKS );
-            
-            if ( iDialog )  // if dialog has been created
-                {
-                iDialog->RefreshDialogL( iActIAPs, ETrue );
-                }
-            else
-                {
-                TInt interval = 0;
-                if ( iIsWLANFeatureSupported )
-                    {                                    
-                    interval = GetRefreshInterval(); 
-                    CLOG_WRITEF( _L( "interval : %d" ),  interval );
-
-                    if ( iWaitDialog )
-                        {
-                        iWaitDialog->ProcessFinishedL();     
-                        delete iWaitDialog;
-                        iWaitDialog = NULL;    
-                        }
-                    }
-
-                iDialog = CIapDialog::NewL( iPlugin );
-                iDialog->PrepareLC( R_LIST_QUERY );
-                iDialog->RefreshDialogL( iActIAPs, EFalse );
-                iDialog->RunLD();
-
-                if ( iIsWLANFeatureSupported )
-                    {                                           
-                    if( interval )
-                        {
-                        StartTimerL( interval );
-                        }     
-                    }
-                }   // else
-            } // if iIAPs
-        else
-            {            
-            CreateArraysL( R_WLAN_SEARCH_FOR_NETWORKS, EFalse, 0 );
-            }            
-        }     
-    
-    CLOG_LEAVEFN( "CActiveCConnDlgIapPlugin::RunL " );      
-        
-    }
-
-    
-// ---------------------------------------------------------
-// CActiveCConnDlgIapPlugin::StartSearchIAPsL()
-// ---------------------------------------------------------
-//    
-void CActiveCConnDlgIapPlugin::StartSearchIAPsL()
-    {    
-    CActiveIAPListing::BaseStartSearchIAPsL( R_SEARCHING_WAIT_NOTE );
-    }
-   
- 
-// ---------------------------------------------------------
-// CActiveCConnDlgIapPlugin::GetRefreshInterval()
-// ---------------------------------------------------------
-//    
-TInt CActiveCConnDlgIapPlugin::GetRefreshInterval()
-    {
-    return CActiveIAPListing::GetRefreshInterval( KCRUidCConnDlg,
-                                                  KCConnDlgScanInterval );
-    }
-            
-   
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/ActiveSelectConnectionPlugin.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,819 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of plugins (base & all derived).
-*
-*/
-
-
-// INCLUDE FILES
-#include "ActiveSelectConnectionPlugin.h"
-#include "SelectConnectionDialog.h"
-#include "ConnectionDialogsLogger.h"
-#include "ConnectionInfo.h"
-#include "ConnectionInfoArray.h"
-#include "sortsnaputils.h"
-#include "cdbcols.h"
-
-#include <featmgr.h>
-#include <StringLoader.h>
-#include <AknIconArray.h>
-#include <AknsUtils.h>
-#include <AknIconUtils.h>
-#include <data_caging_path_literals.hrh>
-
-#include <cmdestinationext.h>
-#include <cmconnectionmethoddef.h>
-#include <cmpluginwlandef.h>
-
-#include <cmmanager.mbg>
-#include <CConnDlgPlugin.rsg>
-#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <commsdat.h>
-#else
-#include <commsdat.h>
-#include <commsdat_partner.h>
-#endif
-
-#include <wlancontainer.h>
-#include <metadatabase.h>
-
-// CONSTANTS
-
-// Category for all panics in this module
-_LIT( KASCPCategory, "Select Connection Plugin" );
-
-LOCAL_D const TInt KIconsGranularity = 4;
-LOCAL_D const TInt KArrayGranularity = 4;
-LOCAL_D const TInt KMaxEntryLength = CommsDat::KMaxTextLength*2 + 20;
-/**
-* For iPeriodic Timer, 60 seconds
-*/
-LOCAL_C const TInt KTickDefaultInterval = 60000000;
-LOCAL_C const TInt KMicrosecondsToSecondsMultiplier = 1000000;
-
-// background scan automatic scanning value
-static const TUint KWlanBgScanIntervalAuto = 0xffffffff;
-
-using namespace CMManager;
-
-
-///////////////////////////////////////////////////////////////////////////////
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::CActiveSelectConnectionPlugin()
-// ---------------------------------------------------------
-//
-CActiveSelectConnectionPlugin::CActiveSelectConnectionPlugin( 
-                                                MEikSrvNotifierBase2* aPlugin,
-                                                const TUint32 aElementId,
-                                                TUint32 aBearerSet )
-: iBearerSet( aBearerSet ),
-  iReqBearerSet( aBearerSet ),
-  iElementId( aElementId ),
-  iPlugin( aPlugin ), 
-  iDialogConn( NULL ),
-  iIsWLANFeatureSupported( EFalse ),
-  iRefreshInterval( KTickDefaultInterval ),
-  iHighlightedItem( -1 ),
-  iDefaultDestId( 0 ),
-  iDefaultCMId( 0 )
-    {
-    }
-
-    
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin* CActiveSelectConnectionPlugin::NewL()
-// ---------------------------------------------------------
-//
-CActiveSelectConnectionPlugin* CActiveSelectConnectionPlugin::NewL( 
-                                                MEikSrvNotifierBase2* aPlugin,
-                                                const TUint32 aElementId,
-                                                TUint32 aBearerSet )
-    {
-    CLOG_ENTERFN( "CActiveSelectConnectionPlugin::NewL " );  
-    
-    CActiveSelectConnectionPlugin* self = new ( ELeave ) 
-                CActiveSelectConnectionPlugin( aPlugin, aElementId, 
-                                               aBearerSet );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    
-    CLOG_LEAVEFN( "CActiveSelectConnectionPlugin::NewL " );      
-
-    return self;        
-    }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::ConstructL()
-// ---------------------------------------------------------
-//
-void CActiveSelectConnectionPlugin::ConstructL()
-    {
-    CLOG_ENTERFN( "CActiveSelectConnectionPlugin::ConstructL " );  
-
-    CActiveBase::ConstructL();
-    
-    FeatureManager::InitializeLibL();
-
-    iIsWLANFeatureSupported = FeatureManager::FeatureSupported( 
-                                                KFeatureIdProtocolWlan );
-
-    FeatureManager::UnInitializeLib();
-    
-    iBearerSet |= ECommDbBearerVirtual;    // To get also VPN APs
-
-#ifdef __WINS__
-    iBearerSet |= ECommDbBearerLAN;     // To add Ethernet AP
-#endif  // __WINS__
-
-    if ( iIsWLANFeatureSupported )
-        {
-        CLOG_WRITE( "WLAN Supported!" );        
-        iBearerSet |= ECommDbBearerWLAN; // To add WLan AP
-        iRefreshInterval = GetRefreshIntervalL();
-        }
-
-
-
-    iItems = new( ELeave ) CConnectionInfoArray();
-    iIcons = new( ELeave ) CAknIconArray( KIconsGranularity );
-
-    iCmManagerExt.OpenL();
-
-    TInt ret = iMPM.LaunchServer();
-    if ( ret != KErrAlreadyExists )
-        {
-        User::LeaveIfError( ret );
-        }
-    CLOG_LEAVEFN( "CActiveSelectConnectionPlugin::ConstructL " );  
-    }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::~CActiveSelectConnectionPlugin()
-// ---------------------------------------------------------
-//    
-CActiveSelectConnectionPlugin::~CActiveSelectConnectionPlugin()
-    {
-    CLOG_ENTERFN( "~CActiveSelectConnectionPlugin" );
-    Cancel();
-    
-    if ( iItems )
-        {
-        iItems->ResetAndDestroy();
-        }
-    delete iItems;    
-    iItems = NULL;
-
-    iCmManagerExt.Close();
-    iMPM.Close();
-
-    CLOG_LEAVEFN( "~CActiveSelectConnectionPlugin" );
-    }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::Cancel()
-// ---------------------------------------------------------
-// 
-void CActiveSelectConnectionPlugin::Cancel()
-    {
-    StopTimer();
-    CActive::Cancel();
-
-    if( iDialogConn && !( iDialogConn->GetOkToExit() ) )
-        {
-        CLOG_WRITEF( _L( "iDialogConn->GetOkToExit() : %b" ), iDialogConn->GetOkToExit() );
-        delete iDialogConn;
-        iDialogConn = NULL;
-        }
-    }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::DoCancel()
-// ---------------------------------------------------------
-// 
-void CActiveSelectConnectionPlugin::DoCancel()
-    {
-    }
-
-    
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::RunL()
-// ---------------------------------------------------------
-//     
-void CActiveSelectConnectionPlugin::RunL()
-    {
-    CLOG_ENTERFN( "CActiveSelectConnectionPlugin::RunL " );  
-    
-    if( iStatus == KErrNone )
-        {
-        BuildConnectionListL();
-        iDialogConn->RefreshDialogL( iItems, iIcons, ETrue, iHighlightedItem );
-        }     
-    
-    CLOG_LEAVEFN( "CActiveSelectConnectionPlugin::RunL " );      
-    }
-
-    
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::ShowSelectConnectionL()
-// ---------------------------------------------------------
-//    
-void CActiveSelectConnectionPlugin::ShowSelectConnectionL()
-    {    
-    CLOG_ENTERFN( "CActiveSelectConnectionPlugin::ShowSelectConnectionL" );
-    
-    BuildConnectionListL();
-
-    iDialogConn = CSelectConnectionDialog::NewL( iPlugin, iRefreshInterval,
-                                                 iBearerSet, 
-                                                 iIsWLANFeatureSupported, 
-                                                 iDefaultCMId );
-
-    iDialogConn->PrepareAndRunLD( iItems, iIcons, EFalse, iHighlightedItem );
-
-    if( iRefreshInterval )
-        {
-        StartTimerL( iRefreshInterval );
-        }     
-
-    CLOG_LEAVEFN( "CActiveSelectConnectionPlugin::ShowSelectConnectionL" );
-    }
- 
-  
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::BuildConnectionListL()
-// ---------------------------------------------------------
-//
-void CActiveSelectConnectionPlugin::BuildConnectionListL()
-    {
-    CLOG_ENTERFN( "CActiveSelectConnectionPlugin::BuildConnectionListL " );  
-    
-    // iItems and iIcons are allocated at construction and deallocated at 
-    // destruction. Unless memory allocation has failed, they cannot be NULL.
-    __ASSERT_ALWAYS( iItems, User::Panic( KASCPCategory, KErrGeneral ) );
-    __ASSERT_ALWAYS( iIcons, User::Panic( KASCPCategory, KErrGeneral ) );
-    
-    iItems->ResetAndDestroy();
-    iIcons->ResetAndDestroy();
-
-    _LIT( KDriveZ, "z:" );  // ROM folder
-    // Name of the MBM file containing icons
-    _LIT( KManagerIconFilename, "cmmanager.mbm" );
-
-    TFileName iconsFileName;
-
-    iconsFileName.Append( KDriveZ );
-    iconsFileName.Append( KDC_APP_BITMAP_DIR );
-    iconsFileName.Append( KManagerIconFilename );
-
-//    iIcons->AppendL( AknsUtils::CreateGulIconL( AknsUtils::SkinInstance(),
-//                                KAknsIIDQgnIndiCbHotAdd,
-//                                iconsFileName, 
-//                                EMbmCmmanagerQgn_indi_cb_hot_add, 
-//                                EMbmCmmanagerQgn_indi_cb_hot_add_mask ) );
-
-    // Create color icon for marking the default connection
-    //
-    CFbsBitmap* bitmap = NULL;
-    CFbsBitmap* mask   = NULL;               
-    CGulIcon* icon     = CGulIcon::NewLC();
-    
-    AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), 
-                    KAknsIIDQgnIndiCbHotAdd, 
-                    KAknsIIDQsnIconColors, EAknsCIQsnIconColorsCG13, 
-                    bitmap, 
-                    mask, 
-                    iconsFileName,
-                    EMbmCmmanagerQgn_indi_cb_hot_add, 
-                    EMbmCmmanagerQgn_indi_cb_hot_add_mask,
-                    KRgbBlack );
-
-    icon->SetBitmap( bitmap );
-    icon->SetMask( mask );    
-    iIcons->AppendL( icon );
-                
-    CleanupStack::Pop( icon ); 
-
-    TCmDefConnValue defaultConnSetting;
-
-    iCmManagerExt.ReadDefConnL( defaultConnSetting );
-    if ( defaultConnSetting.iType == ECmDefConnDestination )
-        {
-        iDefaultDestId = defaultConnSetting.iId;
-        }
-    else if ( defaultConnSetting.iType == ECmDefConnConnectionMethod )
-        {
-        iDefaultCMId = defaultConnSetting.iId;
-        }
-
-    if ( iIsWLANFeatureSupported && (iReqBearerSet & ECommDbBearerWLAN) )
-        {
-        AddSearchForWLanItemL();
-        }
-
-    AddDestinationItemsL();
-
-    CLOG_WRITEF( _L( "iItems count: %d" ), iItems->Count() );
-    CLOG_LEAVEFN( "CActiveSelectConnectionPlugin::BuildConnectionListL " );
-    }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::AddSearchForWLanItemL
-// ---------------------------------------------------------
-//    
-void CActiveSelectConnectionPlugin::AddSearchForWLanItemL()
-    {
-    TUint32 easyWlanId = iCmManagerExt.EasyWlanIdL();
-    if ( easyWlanId )
-        {
-        CLOG_WRITEF( _L( "easyWlanId %d" ), easyWlanId );
-
-        RCmConnectionMethodExt cmConnMethodExt;
-        TRAPD( err, cmConnMethodExt = iCmManagerExt.ConnectionMethodL( 
-                                                                easyWlanId ) );
-        if ( err == KErrNone )
-            {
-            CleanupClosePushL( cmConnMethodExt );
-
-            CGulIcon* wlanIcon = ( CGulIcon* )
-                            cmConnMethodExt.GetIntAttributeL( ECmBearerIcon );
-            CleanupStack::PopAndDestroy();  // cmConnMethodExt
-
-            if ( wlanIcon )
-                {
-                CleanupStack::PushL( wlanIcon );
-                iIcons->AppendL( wlanIcon );
-
-                // icon array took over ownership
-                CleanupStack::Pop( wlanIcon );
-
-                // +1 because it "Zero terminates" the string
-                TBuf<CommsDat::KMaxTextLength+1> nameSearch;
-                _LIT( KIconIdNameEmpty, "%d\t%s\t" );
-
-                HBufC *msg = StringLoader::LoadL( R_WLAN_EASY_WLAN );
-                nameSearch = *msg;
-                nameSearch.ZeroTerminate();
-                delete msg;
-
-                TBuf<KMaxEntryLength> temp;
-                temp.FillZ( KMaxEntryLength );
-                temp.Format( KIconIdNameEmpty, iIcons->Count()-1,
-                             nameSearch.Ptr() );
-
-                CConnectionInfo* conIn = CConnectionInfo::NewL( easyWlanId, 
-                                                    0, temp );
-                CleanupStack::PushL( conIn );
-                iItems->AppendL( conIn );
-                CleanupStack::Pop( conIn );
-                iHighlightedItem = 0;
-                }
-            }
-        }
-    }
-        
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::AddDestinationItemsL
-// ---------------------------------------------------------
-//    
-void CActiveSelectConnectionPlugin::AddDestinationItemsL()
-    {
- /*   TInt errConnect = iMPM.Connect();
-    CLOG_WRITEF( _L( "errConnect = %d" ), errConnect );
-    if ( errConnect == KErrNone )
-        {*/
-        TSortSnapUtils sortSnapUtils( iMPM );
-        RArray<TUint32> destIdArray( KArrayGranularity );
-        TRAPD( err, sortSnapUtils.GetDestIdArrayL( iCmManagerExt, destIdArray ) );
-        //TRAPD( err, iCmManagerExt.AllDestinationsL( destIdArray ) );
-        // Append the destinations to the list
-        CLOG_WRITEF( _L( "GetDestIdArrayL returned with  %d" ), err );
-    if ( err == KErrNone )
-            {
-            CleanupClosePushL( destIdArray );
-
-            CLOG_WRITEF( _L( "destIdArray.Count() =  %d" ), destIdArray.Count() );
-            for ( TInt i = 0; i < destIdArray.Count(); i++ )
-                {
-                RCmDestinationExt cmDestExt = iCmManagerExt.DestinationL( 
-                                                            destIdArray[i] );
-                CleanupClosePushL( cmDestExt );
-                if ( /*cmDestExt.ElementId() != iElementId &&*/ 
-                     !cmDestExt.MetadataL( ESnapMetadataHiddenAgent ) )
-                    {
-                    CLOG_WRITEF( _L( "Destination id %d, Total number of methods %d" ), 
-                                destIdArray[i], cmDestExt.ConnectionMethodCount() );
-
-#ifdef _DEBUG
-                    for ( TInt j = 0; 
-                            j < cmDestExt.ConnectionMethodCount(); j++ )
-                        {
-                        RCmConnectionMethodExt cmConnMethodExt;
-                        TRAP( err, cmConnMethodExt = 
-                                            cmDestExt.ConnectionMethodL( j ) );
-                        if ( err == KErrNone )
-                            {
-                            CleanupClosePushL( cmConnMethodExt );
-                            HBufC* bufMethod = 
-                                cmConnMethodExt.GetStringAttributeL( ECmName );
-                            CleanupStack::PushL( bufMethod );
-                            TBuf<CommsDat::KMaxTextLength+1> nameMethod;
-                            nameMethod = *bufMethod;
-                            nameMethod.ZeroTerminate();
-
-                            /*CLOG_WRITEF( _L( "ConnMethod id %d, Method name %s" ), 
-                                cmConnMethodExt.GetIntAttributeL( ECmIapId ),
-                                nameMethod.Ptr() );*/
-
-                            CleanupStack::PopAndDestroy( bufMethod );
-                            CleanupStack::PopAndDestroy();  // cmConnMethodExt
-                            }
-                        }
-#endif
-
-                        AddDestinationItemL( cmDestExt, destIdArray[i], i == 0,
-                                             destIdArray[i] == iDefaultDestId,
-                                             sortSnapUtils );
-                    }
-                CleanupStack::PopAndDestroy();  // cmDestExt
-                }
-            CleanupStack::PopAndDestroy(); // destIdArray
-            }
-        AddUncategorizedItemL( sortSnapUtils );
-/*        }*/
-    }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::AddDestinationItemL
-// ---------------------------------------------------------
-//    
-void CActiveSelectConnectionPlugin::AddDestinationItemL( 
-                                                RCmDestinationExt aDestination,
-                                                TUint32 aDestId, 
-                                                TBool aFirstItem, 
-                                                TBool aDefaultDest,
-                                                TSortSnapUtils& aSortSnapUtils )
-    {
-    TMpmSnapBuffer list;
-
-    TInt errMPM = aSortSnapUtils.GetSortSnapData( aDestId, list );
-    CLOG_WRITEF( _L( "errMPM = %d. list.Count() = %d" ), errMPM, list.Count() );
-
-    if ( errMPM == KErrNone )
-        {
-        for ( TInt numCM = 0; numCM < list.Count(); numCM++ )
-            {
-            RCmConnectionMethodExt cmConnMethodExt;
-            TRAPD( err, cmConnMethodExt = iCmManagerExt.ConnectionMethodL(
-                                                        list.iIapId[numCM] ) );
-
-            CLOG_WRITEF( _L( "Trapped err = %d" ), err );
-
-            if ( err == KErrNone )
-                {
-                CleanupClosePushL( cmConnMethodExt );
-                if ( iBearerSet & cmConnMethodExt.GetIntAttributeL( 
-                                                    ECmCommsDBBearerType ) )
-                    {
-                    HBufC* bufBest = cmConnMethodExt.GetStringAttributeL(
-                                                                    ECmName );
-
-                    CleanupStack::PopAndDestroy();      // cmConnMethodExt
-                    CleanupStack::PushL( bufBest );
-
-                    _LIT( KIconIdNameBest, "%d\t%s\t\"%s\"" );
-                    _LIT( KIconIdNameBestDefaultConn, "%d\t%s\t\"%s\"\t0" );
-
-                    TBuf<CommsDat::KMaxTextLength+1> nameBest;
-                    nameBest = *bufBest;
-                    nameBest.ZeroTerminate();
-                    CleanupStack::PopAndDestroy( bufBest );
-
-                    TBuf<CommsDat::KMaxTextLength+1> nameDest;
-                    HBufC* name = aDestination.NameLC();
-                    nameDest = *name;
-                    nameDest.ZeroTerminate();
-                    CleanupStack::PopAndDestroy( name );
-
-                    CGulIcon* destIcon = aDestination.IconL();
-                    if ( destIcon )
-                        {
-                        CleanupStack::PushL( destIcon );
-                        iIcons->AppendL( destIcon );
-
-                        // icon array took over ownership
-                        CleanupStack::Pop( destIcon );
-                    
-                        TBuf<KMaxEntryLength> temp;
-                        temp.FillZ( KMaxEntryLength );
-                        if ( aDefaultDest )
-                            {
-                            temp.Format( KIconIdNameBestDefaultConn, 
-                                         iIcons->Count()-1,
-                                         nameDest.Ptr(), nameBest.Ptr() );
-                            }
-                        else
-                            {
-                            temp.Format( KIconIdNameBest, 
-                                         iIcons->Count()-1,
-                                         nameDest.Ptr(), nameBest.Ptr() );
-                            }
-
-                        CConnectionInfo* conIn = 
-                            CConnectionInfo::NewL( 0, aDestId, temp );
-                        CleanupStack::PushL( conIn );
-                        iItems->AppendL( conIn );
-                        CleanupStack::Pop( conIn );
-
-                        if ( aFirstItem || 
-                             aDestination.MetadataL( ESnapMetadataHighlight ) )
-                            {   // It sets the highlight to the
-                                // first Destination (Internet),
-                                // but if it finds another with
-                                // the bit set, then it changes
-                            iHighlightedItem = iItems->Count()-1;
-                            }
-                        }
-
-                    numCM = list.Count();   // break;
-                    }
-				else
-					{
-                    CleanupStack::PopAndDestroy();  // cmConnMethodExt
-					}
-                }
-            }
-        }
-    }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::AddUncategorizedItemL
-// ---------------------------------------------------------
-//    
-void CActiveSelectConnectionPlugin::AddUncategorizedItemL(TSortSnapUtils& aSortSnapUtils )
-    {
-    TMpmSnapBuffer list;
-
-    TInt errMPM = aSortSnapUtils.GetSortSnapData( 0, list );
-    CLOG_WRITEF( _L( "Uncategorized: errMPM = %d. list.Count() = %d" ), errMPM, list.Count() );
-
-    if ( errMPM == KErrNone )
-        {
-        TUint numOfUncatToBeListed = 0;
-
-        for ( TInt numCM = 0; numCM < list.Count(); numCM++ )
-            {
-            RCmConnectionMethodExt cmConnMethodExt;
-            TRAPD( err, cmConnMethodExt = iCmManagerExt.ConnectionMethodL(
-                                                        list.iIapId[numCM] ) );
-            if ( err == KErrNone )
-                {
-                CleanupClosePushL( cmConnMethodExt );
-                if ( iBearerSet & cmConnMethodExt.GetIntAttributeL( 
-                                                    ECmCommsDBBearerType ) )
-                    {
-                    numOfUncatToBeListed++;
-                    }
-                CleanupStack::PopAndDestroy();  // cmConnMethodExt
-                }
-            }
-
-        if ( ( iBearerSet & ECommDbBearerWLAN ) && iIsWLANFeatureSupported )
-            {
-            numOfUncatToBeListed += CountAdhocWlanIapsL();	
-            }
-            
-        if ( numOfUncatToBeListed > 0 )
-            {
-            CGulIcon* uncatIcon = 
-                            ( CGulIcon* )iCmManagerExt.UncategorizedIconL();
-            if ( uncatIcon )
-                {
-                CleanupStack::PushL( uncatIcon );
-                iIcons->AppendL( uncatIcon );
-                CleanupStack::Pop( uncatIcon );  // icon array took over ownership
-
-                // +1 because it "Zero terminates" the string
-                TBuf<CommsDat::KMaxTextLength+1> nameUncat;
-                TBuf<CommsDat::KMaxTextLength+1> numUncat;
-
-                HBufC *bufUncat = StringLoader::LoadL( R_LIST_UNCATEGORIZED );
-                nameUncat = *bufUncat;
-                nameUncat.ZeroTerminate();
-                delete bufUncat;
-
-                HBufC *bufNumOfUncat;
-                if ( numOfUncatToBeListed == 1 )
-                    {
-                    bufNumOfUncat = StringLoader::LoadL( R_CONN_METHODS_ONE );
-                    }
-                else
-                    {
-                    bufNumOfUncat = StringLoader::LoadL( R_CONN_METHODS_MANY, 
-                                                        numOfUncatToBeListed );
-                    }
-
-                numUncat = *bufNumOfUncat;
-                numUncat.ZeroTerminate();
-                delete bufNumOfUncat;
-
-                TBuf<KMaxEntryLength> temp;
-                _LIT( KIconIdNameNumber, "%d\t%s\t%s" );
-
-                temp.FillZ( KMaxEntryLength );
-                temp.Format( KIconIdNameNumber, iIcons->Count()-1, nameUncat.Ptr(),
-                             numUncat.Ptr() );
-
-                CConnectionInfo* conIn = CConnectionInfo::NewL( 0, 0, temp );
-                CleanupStack::PushL( conIn );
-                iItems->AppendL( conIn );        
-                CleanupStack::Pop( conIn );
-                if ( iHighlightedItem < 0 )
-                    {
-                    iHighlightedItem = 0;
-                    }
-                }
-            }
-        }
-    }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::GetElementIDL
-// ---------------------------------------------------------
-//    
-TUint32 CActiveSelectConnectionPlugin::GetElementIDL( TUint32 aIAPId,
-                                                      TUint32 aDestinationId )
-    {
-    TUint32 retval = 0;
-    TInt err;
-
-    if ( aDestinationId )
-        {
-        RCmDestinationExt cmDestExt;
-        TRAP( err, cmDestExt = iCmManagerExt.DestinationL( aDestinationId ) );
-        if ( err == KErrNone )
-            {
-            retval = cmDestExt.ElementId();
-            cmDestExt.Close();
-            }
-        }
-    else if ( aIAPId )
-        {
-        RCmConnectionMethodExt cmConnMethodExt;
-        TRAP( err, cmConnMethodExt = iCmManagerExt.ConnectionMethodL( 
-                                                                    aIAPId ) );
-        if ( err == KErrNone )
-            {
-            CleanupClosePushL( cmConnMethodExt );
-            retval = cmConnMethodExt.GetIntAttributeL( ECmElementID );
-            CleanupStack::PopAndDestroy();  // cmConnMethodExt
-            }
-        }
-
-    return retval;
-    }
-
-
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::GetRefreshIntervalL()
-// ---------------------------------------------------------
-//    
-TInt CActiveSelectConnectionPlugin::GetRefreshIntervalL( )
-    {
-    CLOG_ENTERFN( "CActiveSelectConnectionPlugin::GetRefreshInterval" );  
-
-    TInt variant( KTickDefaultInterval );  
-
-
-    CMDBSession* session = CMDBSession::NewL(KCDLatestVersion);
-    CleanupStack::PushL( session );
-    
-  	//session->OpenTransactionL();
-    TMDBElementId tableId = 0;
-    
-    tableId = CCDWlanDeviceSettingsRecord::TableIdL( *session);
-        
-    CCDWlanDeviceSettingsRecord* record = new(ELeave)
-    		CCDWlanDeviceSettingsRecord(tableId); 		
-    CleanupStack::PushL(record);
-    
-    record->iWlanDeviceSettingsType = KWlanUserSettings;
-    
-    if(record->FindL( *session ))
-    	{
-    	record->LoadL( *session );
-        
-    	// In case iBgScanInterval is -1 (= automatic) then just use 
-    	// KTickDefaultInterval as refresh interval
-        if ( record->iBgScanInterval != KWlanBgScanIntervalAuto
-             && record->iBgScanInterval > 0 )
-            {
-            variant = record->iBgScanInterval;
-            variant = variant * KMicrosecondsToSecondsMultiplier;    
-            }
-    	}
-    CleanupStack::PopAndDestroy( record ); 
-    
-    //session->CommitTransactionL();
-
-    CleanupStack::PopAndDestroy( session ); 
-    
-    TUint32 variantToLog = variant;
-
-    CLOG_WRITEF( _L( "Refresh interval (microseconds) : %d" ), variantToLog );
-    
-    CLOG_LEAVEFN( "CActiveSelectConnectionPlugin::GetRefreshInterval" );
-    
-    return variant;            
-    }
-    
-// ---------------------------------------------------------
-// CActiveSelectConnectionPlugin::CountAdhocWlanIapsL()
-// ---------------------------------------------------------
-//
-TInt CActiveSelectConnectionPlugin::CountAdhocWlanIapsL()
-    {
-    CLOG_ENTERFN( "CActiveSelectExplicit::CountAdhocWlanIapsL " );
-    
-    // Creating a session with the latest version
-    CMDBSession* db = CMDBSession::NewLC( CMDBSession::LatestVersion() );
-    db->SetAttributeMask( ECDProtectedWrite );
-    
-    // Create wlan service record set (RArray (or RPtrArray?))
-    CMDBRecordSet<CCDWlanServiceRecord>* wlanSet =
-        new (ELeave)CMDBRecordSet<CCDWlanServiceRecord>(   CCDWlanServiceRecord::TableIdL( *db )   );
-    CleanupStack::PushL( wlanSet ); 
-    
-    // Create wlan service record
-    CCDWlanServiceRecord* wlanRecord =
-        new (ELeave)CCDWlanServiceRecord(   CCDWlanServiceRecord::TableIdL( *db )   );
-    
-    CleanupStack::PushL( wlanRecord );
-    
-    // Set ConnectionMode field in wlan service record (see wlancontainer.h)
-    // This works with EWlanOperatingModeAdhoc, fails with EWlanConnectionModeAdhoc
-    wlanRecord->iWlanConnMode.SetL( EWlanOperatingModeAdhoc );
-    
-    // Append wlan service record to wlan service record set (currently empty)
-    wlanSet->iRecords.AppendL( wlanRecord );
-    CleanupStack::Pop( wlanRecord ); // ownership moved to RPointerArray
-    
-    TInt wlanRecordCount( 0 );
-    
-    // Find matcing wlan service records
-    if( wlanSet->FindL( *db ) )
-        {
-        wlanRecordCount = wlanSet->iRecords.Count();
-        
-        for ( TInt i = 0; i < wlanRecordCount; i++ )
-            {
-            // Load the current record again to be sure all fields are up to date
-            wlanRecord->SetElementId( wlanSet->iRecords[i]->ElementId() );
-    
-            // Load will only look at ElementId and updates the rest of the fields
-            wlanRecord->LoadL( *db );
-              
-            if ( wlanRecord->iWLanSSID.IsNull() )
-                {
-                // Count active Easy WLAN using adhoc out
-                wlanRecordCount--;
-                break; 
-                }    
-            }
-        
-        CLOG_WRITEF( _L("wlanSet record count = %d"), wlanRecordCount );
-        }
-    else
-        {
-        CLOG_WRITEF( _L("no matcing wlan records found." ));
-        }
-        
-    CleanupStack::PopAndDestroy( wlanSet );
-    CleanupStack::PopAndDestroy( db );
-    
-    CLOG_LEAVEFN( "CActiveSelectExplicit::CountAdhocWlanIapsL" );
-    
-    return ( wlanRecordCount );
-    }
-    
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/ActiveSelectExplicit.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,519 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of plugins (base & all derived).
-*
-*/
-
-
-// INCLUDE FILES
-#include "ActiveSelectExplicit.h"
-#include "SelectExplicitDialog.h"
-#include "ConnectionInfo.h"
-#include "ConnectionInfoArray.h"
-#include "CConnDlgPrivateCRKeys.h"
-#include "ConnectionDialogsLogger.h"
-#include "sortsnaputils.h"
-
-#include <commdb.h>
-#include <StringLoader.h>
-#include <wlanmgmtcommon.h>
-#include <cmdestinationext.h>
-#include <cmpluginwlandef.h>
-#ifndef __WINS__
-#include <wlanmgmtclient.h>
-#endif
-#include <AknWaitDialog.h>
-#include <AknIconArray.h>
-#include <AknsUtils.h>
-
-#include <CConnDlgPlugin.rsg>
-#include <data_caging_path_literals.hrh>
-#include <cmmanager.mbg>
-#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <commsdat.h>
-#else
-#include <commsdat.h>
-#include <commsdat_partner.h>
-#endif
-#include <wlancontainer.h>
-
-
-// CONSTANTS
-
-LOCAL_D const TInt KMaxEntryLength = CommsDat::KMaxTextLength*2 + 20;
-LOCAL_D const TInt KIconsGranularity = 4;
-
-using namespace CMManager;
-
-
-///////////////////////////////////////////////////////////////////////////////
-
-// ---------------------------------------------------------
-// CActiveSelectExplicit::CActiveSelectExplicit()
-// ---------------------------------------------------------
-//
-CActiveSelectExplicit::CActiveSelectExplicit( 
-                                        CSelectConnectionDialog* aCallerDialog,
-                                        TUint aDestId, 
-                                        TInt aRefreshInterval,
-                                        TUint32 aBearerSet, 
-                                        TBool aIsWLANFeatureSupported, 
-                                        TUint aDefaultCMId )
-: iCallerDialog( aCallerDialog ),
-  iDestId( aDestId ),
-//  isDialogDeleting( EFalse ),
-  iRefreshInterval( aRefreshInterval ),
-  iBearerSet( aBearerSet ),
-  iIsWLANFeatureSupported( aIsWLANFeatureSupported ), 
-  iDefaultCMId( aDefaultCMId )
-    {
-    }
-
-    
-// ---------------------------------------------------------
-// CActiveSelectExplicit* CActiveSelectExplicit::NewL()
-// ---------------------------------------------------------
-//
-CActiveSelectExplicit* CActiveSelectExplicit::NewL( 
-                                        CSelectConnectionDialog* aCallerDialog,
-                                        TUint aDestId, 
-                                        TInt aRefreshInterval,
-                                        TUint32 aBearerSet, 
-                                        TBool aIsWLANFeatureSupported, 
-                                        TUint aDefaultCMId )
-    {
-    CLOG_ENTERFN( "CActiveSelectExplicit::NewL " );  
-    
-    CActiveSelectExplicit* self = new ( ELeave ) CActiveSelectExplicit(
-                                    aCallerDialog, aDestId, aRefreshInterval,
-                                    aBearerSet, aIsWLANFeatureSupported, 
-                                    aDefaultCMId );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    
-    CLOG_LEAVEFN( "CActiveSelectExplicit::NewL " );      
-
-    return self;        
-    }
-
-
-// ---------------------------------------------------------
-// CActiveSelectExplicit::ConstructL()
-// ---------------------------------------------------------
-//
-void CActiveSelectExplicit::ConstructL()
-    {
-    CActiveBase::ConstructL();
-
-    iItems = new( ELeave ) CConnectionInfoArray();
-    iIcons = new( ELeave ) CAknIconArray( KIconsGranularity );
-
-    iCmManagerExt.OpenL();
-    }
-
-// ---------------------------------------------------------
-// CActiveSelectExplicit::~CActiveSelectExplicit()
-// ---------------------------------------------------------
-//    
-CActiveSelectExplicit::~CActiveSelectExplicit()
-    {
-    Cancel();
-
-    if ( iItems )
-        {
-        iItems->ResetAndDestroy();
-        }
-    delete iItems;    
-    iItems = NULL;
-
-    iCmManagerExt.Close();
-    }
-
-
-// ---------------------------------------------------------
-// CActiveSelectExplicit::Cancel()
-// ---------------------------------------------------------
-// 
-void CActiveSelectExplicit::Cancel()
-    {
-    StopTimer();
-    CActive::Cancel();
-
-    if( iDialog  && !( iDialog->GetOkToExit() ) )
-        {
-        CLOG_WRITEF( _L( "iDialog->GetOkToExit() : %b" ), iDialog->GetOkToExit() );
-        delete iDialog;
-        iDialog = NULL;
-        }
-    }
-
-
-// ---------------------------------------------------------
-// CActiveSelectExplicit::DoCancel()
-// ---------------------------------------------------------
-// 
-void CActiveSelectExplicit::DoCancel()
-    {
-    CLOG_ENTERFN( "CActiveSelectExplicit::DoCancel " );  
-    
-/*    if( isDialogDeleting )
-        {
-        CLOG_WRITE( "isDialogDeleting" );
-        
-        delete iDialog;
-        iDialog = NULL;   
-        
-        isDialogDeleting = EFalse;         
-        }
-  */      
-    CLOG_LEAVEFN( "CActiveSelectExplicit::DoCancel " );          
-    }
-
-    
-// ---------------------------------------------------------
-// CActiveSelectExplicit::RunL()
-// ---------------------------------------------------------
-//     
-void CActiveSelectExplicit::RunL()
-    {
-    CLOG_ENTERFN( "CActiveSelectExplicit::RunL " );  
-    
-    if( iStatus == KErrNone )
-        {
-        BuildConnectionListL();
-        iDialog->RefreshDialogL( iItems, iIcons, ETrue );
-        }     
-    
-    CLOG_LEAVEFN( "CActiveSelectExplicit::RunL " );      
-        
-    }
-
-    
-// ---------------------------------------------------------
-// CActiveSelectExplicit::StartSearchIAPsL()
-// ---------------------------------------------------------
-//    
-void CActiveSelectExplicit::ShowSelectExplicitL()
-    {    
-    BuildConnectionListL();
-
-    iDialog = CSelectExplicitDialog::NewL( iCallerDialog );
-    iDialog->PrepareAndRunLD( iItems, iIcons, EFalse );
-
-    if( iRefreshInterval )
-        {
-        StartTimerL( iRefreshInterval );
-        }     
-    }
-   
- 
-// ---------------------------------------------------------
-// CActiveSelectExplicit::BuildConnectionListL()
-// ---------------------------------------------------------
-//
-void CActiveSelectExplicit::BuildConnectionListL()
-    {
-    CLOG_ENTERFN( "CActiveSelectExplicit::BuildConnectionListL " );  
-
-    if ( iItems )
-        {
-        iItems->ResetAndDestroy();
-        }
-
-    if ( iIcons )
-        {
-        iIcons->ResetAndDestroy();
-        }
-
-    if ( iDefaultCMId != 0 )  
-        {   // It automatically means also that the feature is supported
-        _LIT( KDriveZ, "z:" );  // ROM folder
-        // Name of the MBM file containing icons
-        _LIT( KManagerIconFilename, "cmmanager.mbm" );
-    
-        TFileName iconsFileName;
-
-        iconsFileName.Append( KDriveZ );
-        iconsFileName.Append( KDC_APP_BITMAP_DIR );
-        iconsFileName.Append( KManagerIconFilename );
-
-        iIcons->AppendL( AknsUtils::CreateGulIconL( AknsUtils::SkinInstance(),
-                                    KAknsIIDQgnIndiCbHotAdd,
-                                    iconsFileName, 
-                                    EMbmCmmanagerQgn_indi_cb_hot_add, 
-                                    EMbmCmmanagerQgn_indi_cb_hot_add_mask ) );
-        }
-
-    TBool easyWlanIsInDb = EFalse;
-
-#ifdef _DEBUG
-    if ( iDestId )
-        {   // Real destination, not for uncategorized
-        RCmDestinationExt cmDestExt = iCmManagerExt.DestinationL( iDestId );
-        CleanupClosePushL( cmDestExt );
-        CLOG_WRITEF( _L( "Destination id %d, Total number of methods %d" ),
-                    iDestId, cmDestExt.ConnectionMethodCount() );
-
-        for ( TInt j = 0; j < cmDestExt.ConnectionMethodCount(); j++ )
-            {
-            RCmConnectionMethodExt cmConnMethodExt;
-            TRAPD( err, cmConnMethodExt = cmDestExt.ConnectionMethodL( j ) );
-            if ( err == KErrNone )
-                {
-                CleanupClosePushL( cmConnMethodExt );
-                HBufC* bufMethod = cmConnMethodExt.GetStringAttributeL(
-                                                                    ECmName );
-                CleanupStack::PushL( bufMethod );
-                TBuf<CommsDat::KMaxTextLength+1> nameMethod;
-                nameMethod = *bufMethod;
-                nameMethod.ZeroTerminate();
-
-                CLOG_WRITEF( _L( "ConnMethod id %d, Method name %s" ), 
-                    cmConnMethodExt.GetIntAttributeL( ECmIapId ), nameMethod.Ptr() );
-
-                CleanupStack::PopAndDestroy( 2 ); // bufMethod, cmConnMethodExt
-                }
-            }
-        CleanupStack::PopAndDestroy();  // cmDestExt
-        }
-#endif
-        TSortSnapUtils sortSnapUtils( iMPM );
-        TMpmSnapBuffer snapBuffer;
-        TInt err = sortSnapUtils.GetSortSnapData( iDestId, snapBuffer );
-        CLOG_WRITEF( _L( "GetSortSNAPDataL returned = %d. list.Count() = %d" ), err, snapBuffer.Count() );
-
-        if ( err == KErrNone )
-            {
-            RCmConnectionMethodExt cmConnMethodExt;
-            CleanupClosePushL( cmConnMethodExt );
-            for ( TInt numCM = 0; numCM < snapBuffer.Count(); numCM++ )
-                {
-                AddConnectionMethodItemL( snapBuffer.iIapId[numCM], 
-                                          iDestId == 0,
-                                          easyWlanIsInDb, 
-                                          snapBuffer.iIapId[numCM] == iDefaultCMId );
-                }
-            CleanupStack::PopAndDestroy();  // cmConnMethodExt
-            }   
-
-    // Add any ad-hoc WLAN iaps to the list
-    if ( ( iBearerSet & ECommDbBearerWLAN ) && ( iDestId == 0 ) && iIsWLANFeatureSupported )
-        {
-        AddAdhocWlanIapsL();	
-        }
-
-    CLOG_LEAVEFN( "CActiveSelectExplicit::BuildConnectionListL " );
-    }
-
-
-// ---------------------------------------------------------
-// CActiveSelectExplicit::AddConnectionMethodItemL()
-// ---------------------------------------------------------
-//
-void CActiveSelectExplicit::AddConnectionMethodItemL( TUint32 aId,
-                                                TBool aCheckForEasyWlan, 
-                                                TBool& aEasyWlanIsInDb, 
-                                                TBool aDefaultCM )
-    {
-    CLOG_ENTERFN( "CActiveSelectExplicit::AddConnectionMethodItemL" );  
-
-    CConnectionInfo* conIn;
-
-    RCmConnectionMethodExt cmConnMethodExt;
-    CLOG_WRITEF( _L( "Uncat dest id %d" ), aId );
-
-    TRAPD( err, cmConnMethodExt = iCmManagerExt.ConnectionMethodL( aId ) );
-    CLOG_WRITEF( _L( "err %d" ), err );
-
-    if ( err == KErrNone )
-        {
-        CleanupClosePushL( cmConnMethodExt );
-
-        TUint32 bearer = cmConnMethodExt.GetIntAttributeL( 
-                                                        ECmCommsDBBearerType );
-        CLOG_WRITEF( _L( "bearer %d" ), bearer );
-
-        if ( bearer & iBearerSet )
-            {
-            CLOG_WRITE( "To be listed!" );
-
-            TBool isCMEasyWlan = EFalse;
-
-            HBufC* bufName = cmConnMethodExt.GetStringAttributeL(
-                                                                ECmName );
-
-            TBuf<CommsDat::KMaxTextLength+1> nameCM;
-            nameCM = *bufName;
-            nameCM.ZeroTerminate();
-            delete bufName;
-
-            CLOG_WRITEF( _L( "Method name %s. Bearer = %d" ), nameCM.Ptr(), bearer );
-
-            if ( aCheckForEasyWlan && bearer == KCommDbBearerWLAN && 
-                 iIsWLANFeatureSupported )
-                {
-                if ( !aEasyWlanIsInDb )
-                    {
-                    HBufC* bufSSID = cmConnMethodExt.GetStringAttributeL( 
-                                                                EWlanSSID );
-                    if ( !bufSSID || bufSSID->Des().Length() == 0 )
-                        {
-                        isCMEasyWlan = ETrue;
-                        aEasyWlanIsInDb = ETrue;
-                        }
-                    delete bufSSID;
-                    }
-                }
-
-            if ( !isCMEasyWlan )
-                {
-                CGulIcon* iconCM = ( CGulIcon* )
-                                    cmConnMethodExt.GetIntAttributeL(
-                                                            ECmBearerIcon );
-                if ( iconCM )
-                    {
-                    CLOG_WRITEF( _L( "iconCM found" ) );
-                    CleanupStack::PushL( iconCM );
-                    iIcons->AppendL( iconCM );
-
-                    // icon array took over ownership
-                    CleanupStack::Pop( iconCM );
-                    }
-                else
-                    {
-                    CLOG_WRITEF( _L( "iconCM not found" ) );
-                    }
-
-                TBuf<KMaxEntryLength> temp;
-                _LIT( KIconIdName, "%d\t%s" );
-                _LIT( KIconIdNameDefaultConn, "%d\t%s\t0" );
-
-                if ( aDefaultCM )
-                    {
-                    temp.Format( KIconIdNameDefaultConn, iIcons->Count()-1,
-                                 nameCM.Ptr() );
-                    }
-                else
-                    {
-                    temp.Format( KIconIdName, iIcons->Count()-1, 
-                                 nameCM.Ptr() );
-                    }
-
-                conIn = CConnectionInfo::NewL( aId, 0, temp );
-                CleanupStack::PushL( conIn );
-                iItems->AppendL( conIn );
-                CleanupStack::Pop( conIn );
-                }
-            }
-        CleanupStack::PopAndDestroy();  // cmConnMethodExt
-        }
-
-    CLOG_LEAVEFN( "CActiveSelectExplicit::AddConnectionMethodItemL" );
-    }
-
-// ---------------------------------------------------------
-// CActiveSelectExplicit::AddAdhocWlanIapsL()
-// ---------------------------------------------------------
-//
-void CActiveSelectExplicit::AddAdhocWlanIapsL()
-    {
-    CLOG_ENTERFN( "CActiveSelectExplicit::AddAdhocWlanIapsL " );
-    
-    // Creating a session with the latest version
-    CMDBSession* db = CMDBSession::NewLC( CMDBSession::LatestVersion() );
-    db->SetAttributeMask( ECDProtectedWrite );
-    
-    // Create wlan service record set (RArray (or RPtrArray?))
-    CMDBRecordSet<CCDWlanServiceRecord>* wlanSet =
-        new (ELeave)CMDBRecordSet<CCDWlanServiceRecord>(   CCDWlanServiceRecord::TableIdL( *db )   );
-    CleanupStack::PushL( wlanSet ); 
-    
-    // Create wlan service record
-    CCDWlanServiceRecord* wlanRecord =
-        new (ELeave)CCDWlanServiceRecord(   CCDWlanServiceRecord::TableIdL( *db )   );
-    
-    CleanupStack::PushL( wlanRecord );
-    
-    // Set ConnectionMode field in wlan service record (see wlancontainer.h)
-    // This works with EWlanOperatingModeAdhoc, fails with EWlanConnectionModeAdhoc
-    wlanRecord->iWlanConnMode.SetL( EWlanOperatingModeAdhoc );
-    
-    // Append wlan service record to wlan service record set (currently empty)
-    wlanSet->iRecords.AppendL( wlanRecord );
-    CleanupStack::Pop( wlanRecord ); // ownership moved to RPointerArray
-    
-    // Find matcing wlan service records
-    if( wlanSet->FindL( *db ) )
-        {
-        TInt wlanRecordCount( wlanSet->iRecords.Count() );
-        CLOG_WRITEF( _L("wlanSet record count = %d"), wlanRecordCount );
-        
-        TBool easyWlanIsInDb = EFalse;
-        
-        // loop for each record found
-        for ( TInt i = 0; i < wlanRecordCount; i++ )
-            {
-            // Seems we need to specifically load the current record again to be sure all fields are up to date
-            wlanRecord->SetElementId( wlanSet->iRecords[i]->ElementId() );
-            // Load will only look at ElementId and updates the rest of the fields
-            wlanRecord->LoadL( *db );
-            
-            if ( !( wlanRecord->iWLanSSID.IsNull() ) )
-                {
-                // Don't include Easy WLAN
-                // lets print some stuff to log            
-                CLOG_WRITEF( _L("New ad-hoc WLAN IAP:" ));
-                CLOG_WRITEF( _L("  iWlanServiceId = %d"), static_cast<TUint>( wlanRecord->iWlanServiceId ) );
-                CLOG_WRITEF( _L("  iWlanConnMode  = %d"), static_cast<TUint>( wlanRecord->iWlanConnMode ) );
-                CLOG_WRITEF( _L("  iWLanSSID      = %S"), &(static_cast<TDesC>( wlanRecord->iWLanSSID ) ) );
-            
-                // Create an iap record
-                CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*> ( 
-                    CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
-                CleanupStack::PushL( iapRecord );
-            
-                iapRecord->iServiceType.SetL( TPtrC( KCDTypeNameLANService ) );
-                // Set the service field to the same value as in the wlan service record we are currently looking
-                iapRecord->iService = wlanRecord->iWlanServiceId;
-                // Find the matching iap record
-                if( iapRecord->FindL( *db ) )
-                    {
-                    TUint iapId( 0 );
-                
-                    // read the iap id
-                    iapId = iapRecord->RecordId();
-                    CLOG_WRITEF( _L("  iapId          = %d"), iapId );
-                
-                    AddConnectionMethodItemL( iapId, 
-                                              iDestId == 0,
-                                              easyWlanIsInDb, 
-                                              iapId == iDefaultCMId );
-                    }
-                CleanupStack::PopAndDestroy( iapRecord );
-                }
-            }
-        }
-    else
-        {
-        CLOG_WRITEF( _L("no matcing wlan records found." ));
-        }
-        
-    CleanupStack::PopAndDestroy( wlanSet );
-    CleanupStack::PopAndDestroy( db );
-    
-    CLOG_LEAVEFN( "CActiveSelectExplicit::AddAdhocWlanIapsL" );
-    }
-    
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/AuthenticationDialog.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of class CAuthenticationDialog.
-*
-*/
-
-
-// INCLUDE FILES
-#include "AuthenticationDialog.h"
-#include "ConnDlgPlugin.h"
-#include "ExpiryTimer.h"
-
-#include <uikon/eiksrvui.h>
-
-
-// ---------------------------------------------------------
-// CAuthenticationDialog::CAuthenticationDialog
-// ---------------------------------------------------------
-//
-CAuthenticationDialog::CAuthenticationDialog( 
-                                        CConnDlgAuthenticationPlugin* aPlugin )
-: CAknMultiLineDataQueryDialog( CAknQueryDialog::ENoTone ),
-  iPlugin( aPlugin )
-    {
-    }
-
-
-// ---------------------------------------------------------
-// CAuthenticationDialog::~CAuthenticationDialog
-// ---------------------------------------------------------
-//
-CAuthenticationDialog::~CAuthenticationDialog()
-    {
-
-    STATIC_CAST( CEikServAppUi*, 
-                CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( EFalse );
-    delete iExpiryTimer;
-    
-    }
-
-
-// ---------------------------------------------------------
-// CAuthenticationDialog::NewL
-// ---------------------------------------------------------
-//
-CAuthenticationDialog* CAuthenticationDialog::NewL( 
-                                        CConnDlgAuthenticationPlugin* aPlugin, 
-                                        TDes& aUsername, TDes& aPassword )
-    {
-    CAuthenticationDialog* dialog = new( ELeave ) 
-                                            CAuthenticationDialog( aPlugin );
-    CleanupStack::PushL( dialog );
-
-    dialog->SetDataL( aUsername, aPassword );
-
-    CleanupStack::Pop( dialog );
-
-    return dialog;
-    }
-
-
-// ---------------------------------------------------------
-// CAuthenticationDialog::PreLayoutDynInitL()
-// ---------------------------------------------------------
-//
-void CAuthenticationDialog::PreLayoutDynInitL()
-    {
-    CAknMultiLineDataQueryDialog::PreLayoutDynInitL();
-
-    if( FirstData( TPtr( 0, 0 ) ).Length() > 0 )
-        {
-        MakeLeftSoftkeyVisible( ETrue );
-        }
-
-    STATIC_CAST( CEikServAppUi*, 
-                CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( ETrue );
-    
-    iExpiryTimer = CExpiryTimer::NewL( *this );
-    iExpiryTimer->Start();
-    }
-
-
-// ---------------------------------------------------------
-// CAuthenticationDialog::SetInitialCurrentLine()
-// ---------------------------------------------------------
-//
-void CAuthenticationDialog::SetInitialCurrentLine()
-    {
-    CAknMultiLineDataQueryDialog::SetInitialCurrentLine();
-
-    iFirstEmpty = FirstData( TPtr( 0,0 ) ).Length() == 0;
-    iSecondEmpty = SecondData( TPtr( 0,0 ) ).Length() == 0;
-    if( !iFirstEmpty || !iSecondEmpty )
-        {
-        MakeLeftSoftkeyVisible( ETrue );
-        }
-    }
-
-
-// ---------------------------------------------------------
-// CAuthenticationDialog::OkToExitL
-// ---------------------------------------------------------
-//
-TBool CAuthenticationDialog::OkToExitL( TInt aButtonId )
-    {
-    if ( CAknMultiLineDataQueryDialog::OkToExitL( aButtonId ) )
-        {
-        if ( aButtonId == EAknSoftkeySelect || 
-             aButtonId == EAknSoftkeyOk || 
-             aButtonId == EAknSoftkeyDone )
-            {
-            iPlugin->CompleteL( KErrNone );
-            }
-        else if ( aButtonId== EAknSoftkeyCancel )
-            {
-            iPlugin->CompleteL( KErrCancel );
-            }
-
-        return( ETrue );
-        }
-
-    return( EFalse );
-    }
-
-
-// ---------------------------------------------------------
-// CAuthenticationDialog::HandleQueryEditorStateEventL
-//
-// This code is based on AknQueryDialog.cpp
-// ---------------------------------------------------------
-//
-TBool CAuthenticationDialog::HandleQueryEditorStateEventL( 
-                                            CAknQueryControl* aQueryControl,
-                                            TQueryControlEvent /*aEventType*/,
-                                            TQueryValidationStatus aStatus )
-    {
-    if( STATIC_CAST( CAknMultilineQueryControl*, aQueryControl )->IsFirst() )
-        {
-        iFirstEmpty = ( aStatus == EEditorEmpty );
-        }
-
-    if( STATIC_CAST( CAknMultilineQueryControl*, aQueryControl)->IsSecond() )
-        {
-        iSecondEmpty = ( aStatus == EEditorEmpty );
-        }
-
-    MakeLeftSoftkeyVisible( ( !iFirstEmpty ) || ( !iSecondEmpty ) );
-
-    return EFalse;
-    }
-	
-void CAuthenticationDialog::HandleTimedOut()
-    {
-    TRAP_IGNORE( TryExitL(EAknSoftkeyCancel) );
-    }
-
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/ConnDlgPlugin.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/cconndlg/src/ConnDlgPlugin.cpp	Mon May 03 12:53:07 2010 +0300
@@ -17,14 +17,7 @@
 
 // INCLUDE FILES
 #include "ConnDlgPlugin.h"
-#include "AuthenticationDialog.h"
-#include "ReconnectDialog.h"
-#include "QosDialog.h"
-#include "NewIapDialog.h"
-#include "ActiveIapPlugin.h"
 
-#include "ActiveSelectConnectionPlugin.h"
-#include "CConnDlgPrivateCRKeys.h"
 #include <centralrepository.h>
 
 #include "ConnectionDialogsUidDefs.h"
@@ -34,27 +27,23 @@
 #include <bautils.h>
 #include <e32property.h> 
 #include <rmpm.h>
+#include <cmmanager.h>
+#include <cmdestination.h>
+#include <commsdat.h>
 
-#include <CConnDlgPlugin.rsg>
 #include <data_caging_path_literals.hrh>
 
+
+// NOTE that the functionality this file is DEPRECATED
+// None on the methods have UI functionality, the plugins complete the requests
+// immediately when they are started
+
 using namespace CommsDat;
 
 // CONSTANTS
 
-// RSC file name.
-_LIT( KResourceFileName, "CConnDlgPlugin.rsc" );
-
-// Panic string
-_LIT( KConnDlgPluginPanic, "CConnDlgPlugin" );
-
 LOCAL_D const TInt KPluginGranularity = 4;
 
-#if defined(_DEBUG)
-_LIT( KErrActiveObjectNull, "iActivePlugin not NULL" );
-#endif
-
-
 
 LOCAL_C void CreateNotifiersL( 
                             CArrayPtrFlat<MEikSrvNotifierBase2>* aNotifiers );
@@ -160,55 +149,61 @@
 void CConnDlgIapPlugin::StartL( const TDesC8& aBuffer, TInt aReplySlot,
                                 const RMessagePtr2& aMessage )
     {
-    iPrefs.Copy( (TPtrC8) aBuffer );
 
     iCancelled = EFalse;
     iReplySlot = aReplySlot;
     iMessage = aMessage;
     
-    // Check if there is a suitable active connection
-    TInt iap( 0 );
-    TInt bearer( ECommDbBearerWLAN ); // User conn. is always WLAN in 9.1
-                                      
-    // Is there active User connection
-    TInt err = GetUserConnection( iap );
+    // The UI is deprectad, complete the request and return the best available iap
+    RCmManager cmManager;
+    cmManager.OpenL();     
+    CleanupClosePushL( cmManager ); 
+    
+    RArray<TUint32> destinationArray;    
+    cmManager.AllDestinationsL( destinationArray );
+    CleanupClosePushL(destinationArray);   
+    TInt error = KErrNotFound;
     
-    if ( err != KErrNone || iap == 0 )
-        {
-        // Is there any active connection
-    	err = GetActiveConnection( iap, bearer );
+    // loop the destinations and find the internet snap
+    for (TInt i = 0; i < destinationArray.Count(); ++i)
+        {   
+        RCmDestination destination = cmManager.DestinationL( destinationArray[i] );
+        CleanupClosePushL(destination);
+        TUint32 purposeMetaData = destination.MetadataL( CMManager::ESnapMetadataPurpose );
+        
+        // If the internet snap was found, check out the IAPs
+        if ( CMManager::ESnapPurposeInternet ==  purposeMetaData )
+            {
+            RMPM mpm;
+            User::LeaveIfError(mpm.Connect());
+            TMpmSnapBuffer buffer;
+            buffer.Reset();
+            User::LeaveIfError( mpm.SortSNAP( destination.Id(), buffer )); 
+            mpm.Close();
+            // if there are iaps in the list, return the first
+            // if there are none, return an error
+            if ( buffer.Count() > 0 )
+                {
+                iIAP = buffer.iIapId[0];
+                error = KErrNone;
+                }
+            CleanupStack::PopAndDestroy(); //destination
+            break;
+            }                
+        CleanupStack::PopAndDestroy(); //destination
         }
-
-    if ( ( err == KErrNone ) && 
-         ( iap != 0 )        &&  
-         ( iPrefs().iBearerSet & bearer ) )
-        {
-    	// a suitable connection is already active
-    	iIAP = iap;
-    	CompleteL( KErrNone );
-        }
-    else
-        {
-        // display a dialog
-        __ASSERT_DEBUG( !iActivePlugin, 
-                    User::Panic( KErrActiveObjectNull, KErrNone ) );
+    CleanupStack::PopAndDestroy(); //destinationArray
+    CleanupStack::PopAndDestroy(); //cmManager
     
-        iActivePlugin = CActiveCConnDlgIapPlugin::NewL( this, iPrefs() );
-        iActivePlugin->StartSearchIAPsL();	
-        }
+    CompleteL( error );
     }
 
-
-
 // ---------------------------------------------------------
 // void CConnDlgIapPlugin::Cancel()
 // ---------------------------------------------------------
 //
 void CConnDlgIapPlugin::Cancel()
-    {
-    delete iActivePlugin;
-    iActivePlugin = NULL;
-    
+    { 
     if ( !iCancelled )
         {
         iCancelled = ETrue;
@@ -251,79 +246,11 @@
 // ---------------------------------------------------------
 //
 CConnDlgIapPlugin* CConnDlgIapPlugin::NewL( 
-                                        const TBool aResourceFileResponsible )
+                                        const TBool /*aResourceFileResponsible*/ )
     {
     CConnDlgIapPlugin* self = new (ELeave) CConnDlgIapPlugin();
-    CleanupStack::PushL( self );
-    self->ConstructL( KResourceFileName, aResourceFileResponsible );
-    CleanupStack::Pop();
-
     return self;
     }
-
-// ---------------------------------------------------------
-// CConnDlgIapPlugin::SetPreferredIapIdL
-// ---------------------------------------------------------
-//    
-void CConnDlgIapPlugin::SetPreferredIapIdL( TUint32 aIAPId )
-    {
-    CLOG_ENTERFN( "CConnDlgIapPlugin::SetPreferredIapIdL " );
-    
-    iIAP = aIAPId;
-        
-    CLOG_LEAVEFN( "CConnDlgIapPlugin::SetPreferredIapIdL " );
-    }
-    
-    
-// ---------------------------------------------------------
-// CConnDlgIapPlugin::GetActiveConnection
-// ---------------------------------------------------------
-//    
-TInt CConnDlgIapPlugin::GetActiveConnection( TInt& aIapId, 
-                                             TInt& aBearer )
-    {
-    aIapId  = 0;
-    aBearer = 0;
-    
-    TInt err = RProperty::Get( KMPMActiveConnectionCategory, 
-                               KMPMPSKeyActiveConnectionIap, 
-                               aIapId );
-                               
-    CLOG_WRITEF( _L( "KMPMPSKeyActiveConnectionIap : %d" ), aIapId );                           
-    CLOG_WRITEF( _L( "err : %d" ), err );                           
-                               
-    if ( err == KErrNone )
-        {
-    	err = RProperty::Get( KMPMActiveConnectionCategory, 
-                              KMPMPSKeyActiveConnectionBearer, 
-                              aBearer );
-        }
-        
-    CLOG_WRITEF( _L( "KMPMPSKeyActiveConnectionBearer : %d" ), aBearer );                           
-    CLOG_WRITEF( _L( "err : %d" ), err );
-    CLOG_WRITEF( _L( "iPrefs().iBearerSet : %d" ), iPrefs().iBearerSet );
-    
-    return err;
-    }
-    
-    
-// ---------------------------------------------------------
-// CConnDlgIapPlugin::GetUserConnection
-// ---------------------------------------------------------
-//    
-TInt CConnDlgIapPlugin::GetUserConnection( TInt& aIapId )
-    {
-    aIapId  = 0;
-    
-    TInt err = RProperty::Get( KMPMUserConnectionCategory, 
-                               KMPMPSKeyUserConnectionIap, 
-                               aIapId );
-                
-    CLOG_WRITEF( _L( "KMPMPSKeyUserConnectionIap : %d" ), aIapId );                           
-    CLOG_WRITEF( _L( "err : %d" ), err );                            
-        
-    return err;    
-    }
             
 
 // ---------------------------------------------------------
@@ -353,19 +280,12 @@
     {
     CLOG_ENTERFN( "CConnDlgAuthenticationPlugin::StartL" );
 
-    if ( aBuffer.Length() > iAuthPairBuff.Length() )
-        {
-        CLOG_WRITE( "User::Panic, EConnDlgIllegalRequest" );
-        User::Panic( KConnDlgPluginPanic, EConnDlgIllegalRequest );
-        }
-
-    iAuthPairBuff.Copy( aBuffer );
-
     iReplySlot = aReplySlot;
     iMessage = aMessage;
     iCancelled = EFalse;
 
-    GetAuthenticationL();
+    // The UI is deprecated, just complete the request
+    CompleteL(KErrNotSupported);
 
     CLOG_LEAVEFN( "CConnDlgAuthenticationPlugin::StartL" );
     }
@@ -387,8 +307,6 @@
             {
             iMessage.Complete( KErrCancel );
             }
-        delete iDialog;
-        iDialog = NULL;
         }
 
     CLOG_LEAVEFN( "CConnDlgAuthenticationPlugin::Cancel" );
@@ -396,24 +314,6 @@
 
 
 // ---------------------------------------------------------
-// void CConnDlgAuthenticationPlugin::GetAuthenticationL()
-// ---------------------------------------------------------
-//
-void CConnDlgAuthenticationPlugin::GetAuthenticationL()
-    {
-    CLOG_ENTERFN( "CConnDlgAuthenticationPlugin::GetAuthenticationL" );
-
-    iDialog = CAuthenticationDialog::NewL( this, iAuthPairBuff().iUsername, 
-                                           iAuthPairBuff().iPassword );
-
-
-    iDialog->ExecuteLD( R_CONNDLG_AUTHENTICATION );
-
-    CLOG_LEAVEFN( "CConnDlgAuthenticationPlugin::GetAuthenticationL" );
-    }
-
-
-// ---------------------------------------------------------
 // void CConnDlgAuthenticationPlugin::CompleteL( TInt aStatus )
 // ---------------------------------------------------------
 //
@@ -424,11 +324,6 @@
     iCancelled = ETrue;
     if ( !iMessage.IsNull() )
         {
-        if ( aStatus == KErrNone )
-            {
-            iMessage.WriteL( iReplySlot, iAuthPairBuff );
-            }
-
         iMessage.Complete( aStatus );
         }
     Cancel();
@@ -442,14 +337,10 @@
 // ---------------------------------------------------------
 //
 CConnDlgAuthenticationPlugin* CConnDlgAuthenticationPlugin::NewL( 
-                                        const TBool aResourceFileResponsible )
+                                        const TBool /*aResourceFileResponsible*/ )
     {
     CConnDlgAuthenticationPlugin* self = new (ELeave) 
                                                 CConnDlgAuthenticationPlugin();
-    CleanupStack::PushL( self );
-    self->ConstructL( KResourceFileName, aResourceFileResponsible );
-    CleanupStack::Pop();
-
     return self;
     }
 
@@ -459,7 +350,6 @@
 // ---------------------------------------------------------
 //
 CConnDlgAuthenticationPlugin::CConnDlgAuthenticationPlugin()
-: iAuthPair( TAuthenticationPair() )
     {
     }
 
@@ -489,7 +379,7 @@
     iMessage = aMessage;
     iCancelled = EFalse;
 
-    GetReconnectL();
+    CompleteL(KErrNotSupported);
     }
 
 
@@ -506,24 +396,11 @@
             {
             iMessage.Complete( KErrCancel );
             }
-        delete iDialog;
-        iDialog = NULL;
         }
     }
 
 
 // ---------------------------------------------------------
-// void CConnDlgQosPlugin::GetReconnectL()
-// ---------------------------------------------------------
-//
-void CConnDlgQosPlugin::GetReconnectL()
-    {
-    iDialog = new (ELeave) CQosDialog( this, iBool );
-    iDialog->ExecuteLD( R_CONNDLG_QOS );
-    }
-
-
-// ---------------------------------------------------------
 // void CConnDlgQosPlugin::CompleteL( TInt aStatus )
 // ---------------------------------------------------------
 //
@@ -532,11 +409,6 @@
     iCancelled = ETrue;
     if ( !iMessage.IsNull() )
         {
-        if ( aStatus == KErrNone )
-            {
-            TRAP_IGNORE( iMessage.WriteL( iReplySlot, TPckg<TBool>( iBool ) ) );
-            }
-
         iMessage.Complete( aStatus );
         }
     Cancel();
@@ -548,13 +420,9 @@
 // ---------------------------------------------------------
 //
 CConnDlgQosPlugin* CConnDlgQosPlugin::NewL( 
-                                        const TBool aResourceFileResponsible )
+                                        const TBool /*aResourceFileResponsible*/ )
     {
     CConnDlgQosPlugin* self = new (ELeave) CConnDlgQosPlugin();
-    CleanupStack::PushL( self );
-    self->ConstructL( KResourceFileName, aResourceFileResponsible );
-    CleanupStack::Pop();
-
     return self;
     }
 
@@ -585,7 +453,8 @@
     iMessage = aMessage;
     iCancelled = EFalse;
 
-    GetReconnectL();
+    // The UI is deprecated, just complete the request
+    CompleteL(KErrNotSupported);
     }
 
 
@@ -602,24 +471,11 @@
             {
             iMessage.Complete( KErrCancel );
             }
-        delete iDialog;
-        iDialog = NULL;
         }
     }
 
 
 // ---------------------------------------------------------
-// void CConnDlgReconnectPlugin::GetReconnectL()
-// ---------------------------------------------------------
-//
-void CConnDlgReconnectPlugin::GetReconnectL()
-    {
-    iDialog = new (ELeave) CReconnectDialog( this, iBool );
-    iDialog->ExecuteLD( R_CONNDLG_RECONNECT );
-    }
-
-
-// ---------------------------------------------------------
 // void CConnDlgReconnectPlugin::CompleteL( TInt aStatus )
 // ---------------------------------------------------------
 //
@@ -628,11 +484,6 @@
     iCancelled = ETrue;
     if ( !iMessage.IsNull() )
         {
-        if ( aStatus == KErrNone )
-            {
-            iMessage.WriteL( iReplySlot, TPckg<TBool>( iBool ) );
-            }
-
         iMessage.Complete( aStatus );
         }
     Cancel();
@@ -645,13 +496,9 @@
 // ---------------------------------------------------------
 //
 CConnDlgReconnectPlugin* CConnDlgReconnectPlugin::NewL( 
-                                        const TBool aResourceFileResponsible )
+                                        const TBool /*aResourceFileResponsible*/ )
     {
     CConnDlgReconnectPlugin* self = new (ELeave) CConnDlgReconnectPlugin();
-    CleanupStack::PushL( self );
-    self->ConstructL( KResourceFileName, aResourceFileResponsible );
-    CleanupStack::Pop();
-
     return self;
     }
 
@@ -678,17 +525,12 @@
 void CConnDlgNewIapPlugin::StartL( const TDesC8& aBuffer, TInt aReplySlot,
                                    const RMessagePtr2& aMessage )
     {
-    if ( aBuffer.Length() > iPrefs.Length() )
-        {
-        User::Panic( KConnDlgPluginPanic, EConnDlgIllegalRequest );
-        }
-
-    iPrefs.Copy( aBuffer );
     iReplySlot = aReplySlot;
     iMessage = aMessage;
     iCancelled = EFalse;
 
-    GetNewIapL();
+    // This api has been deprecated, just Complete the request
+    CompleteL(KErrNotSupported);
     }
 
 
@@ -705,24 +547,11 @@
             {
             iMessage.Complete( KErrCancel );
             }
-        delete iDialog;
-        iDialog = NULL;
         }
     }
 
 
 // ---------------------------------------------------------
-// void CConnDlgNewIapPlugin::GetNewIapL()
-// ---------------------------------------------------------
-//
-void CConnDlgNewIapPlugin::GetNewIapL()
-    {
-    iDialog = new (ELeave) CNewIapDialog( this, iConnect, iPrefs() );
-    iDialog->ExecuteLD( R_CONNDLG_NEW_IAP );
-    }
-
-
-// ---------------------------------------------------------
 // void CConnDlgNewIapPlugin::CompleteL( TInt aStatus )
 // ---------------------------------------------------------
 //
@@ -731,11 +560,6 @@
     iCancelled = ETrue;
     if ( !iMessage.IsNull() )
         {
-        if ( aStatus == KErrNone )
-            {
-            iMessage.WriteL( iReplySlot, TPckg<TBool>( iConnect ) );
-            }
-
         iMessage.Complete( aStatus );
         }
     Cancel();
@@ -747,13 +571,9 @@
 // ---------------------------------------------------------
 //
 CConnDlgNewIapPlugin* CConnDlgNewIapPlugin::NewL( 
-                                        const TBool aResourceFileResponsible )
+                                        const TBool /*aResourceFileResponsible*/ )
     {
     CConnDlgNewIapPlugin* self = new (ELeave) CConnDlgNewIapPlugin();
-    CleanupStack::PushL( self );
-    self->ConstructL( KResourceFileName, aResourceFileResponsible );
-    CleanupStack::Pop();
-
     return self;
     }
 
@@ -779,74 +599,59 @@
 // ---------------------------------------------------------
 //
 
-void CConnDlgSelectConnectionPlugin::StartL( const TDesC8& aBuffer, 
+void CConnDlgSelectConnectionPlugin::StartL( const TDesC8& /*aBuffer*/, 
                                              TInt aReplySlot,
                                              const RMessagePtr2& aMessage )
     {
-    if ( iActivePlugin )
-        {
-        aMessage.Complete( KErrServerBusy );
-        return;
-        }
         
-    iPrefs.Copy( ( TPtrC8 ) aBuffer );
-
-    iCancelled = ETrue; // This method could leave before displaying the dialog.
     iReplySlot = aReplySlot;
     iMessage = aMessage;
     
-    __ASSERT_DEBUG( !iActivePlugin, 
-                     User::Panic( KErrActiveObjectNull, KErrNone ) );
+    // because the connection dialog is deprecated and removed functionality,
+    // return the Internet SNAP and complete
+    RCmManager cmManager;
+    cmManager.OpenL();     
+    CleanupClosePushL( cmManager ); 
+    
+    RArray<TUint32> destinationArray;    
+    cmManager.AllDestinationsL( destinationArray );
+    CleanupClosePushL(destinationArray);   
+    bool found = false;
     
-    iElementID = iPrefs().iRank;
-    iActivePlugin = CActiveSelectConnectionPlugin::NewL( this,
-                                                         iElementID,
-                                                         iPrefs().iBearerSet );
-    // Check if there is a suitable active connection
-    TInt snap( 0 );
-    TInt iap( 0 );
-    TInt bearer( ECommDbBearerWLAN ); // User conn. is always WLAN in 9.1
+    // loop the destinations and find the internet snap
+    for (TInt i = 0; i < destinationArray.Count() && !found; ++i)
+        {   
+        RCmDestination destination = cmManager.DestinationL( destinationArray[i] );
+        CleanupClosePushL(destination);
+        
+        TUint32 purposeMetaData = destination.MetadataL( CMManager::ESnapMetadataPurpose );
+        if ( CMManager::ESnapPurposeInternet ==  purposeMetaData )
+            {
+            iElementID = destination.ElementId();
+            found = true;
+            }                
+        CleanupStack::PopAndDestroy(); //destination
+        }
+    CleanupStack::PopAndDestroy(); //destinationArray
+    CleanupStack::PopAndDestroy(); //cmManager
     
-    // Is there active User connection
-    TInt err = GetUserConnection( iap, snap );
-    
-    if ( ( err != KErrNone ) || ( iap == 0 && snap == 0 ) )
+    if (found)
         {
-        // Is there any active connection
-    	err = GetActiveConnection( iap, snap, bearer );
-        }
-                                      
-    if ( ( err == KErrNone ) && 
-         ( iap != 0 || snap != 0 ) && 
-         ( iPrefs().iBearerSet & bearer ) &&
-         ( iPrefs().iDirection == 0 ) )     // JavaVM sets iDirection to "1"
+        CompleteL(KErrNone);
+        } 
+    else 
         {
-    	// a suitable connection is already active
-    	SetElementIDL( iap, snap );
-    	CompleteL( KErrNone );
-        }
-    else
-        {
-        // display dialog
-        iActivePlugin->ShowSelectConnectionL();
-        iCancelled = EFalse; // Dialog is now up and running
+        CompleteL(KErrNotFound);
         }
     }
 
-
-
 // ---------------------------------------------------------
 // void CConnDlgSelectConnectionPlugin::Cancel()
 // ---------------------------------------------------------
 //
 void CConnDlgSelectConnectionPlugin::Cancel()
     {
-    CLOG_ENTERFN( "CConnDlgSelectConnectionPlugin::Cancel" );      
-
-    delete iActivePlugin;
-    CLOG_WRITE( "iActivePlugin deleted" );      
-    iActivePlugin = NULL;
-    CLOG_WRITE( "iActivePlugin NULLed" );      
+    CLOG_ENTERFN( "CConnDlgSelectConnectionPlugin::Cancel" );          
     
     if ( !iCancelled )
         {
@@ -895,97 +700,12 @@
 // ---------------------------------------------------------
 //
 CConnDlgSelectConnectionPlugin* CConnDlgSelectConnectionPlugin::NewL( 
-                                        const TBool aResourceFileResponsible )
+                                        const TBool /*aResourceFileResponsible*/ )
     {
     CConnDlgSelectConnectionPlugin* self = 
                             new (ELeave) CConnDlgSelectConnectionPlugin();
-    CleanupStack::PushL( self );
-    self->ConstructL( KResourceFileName, aResourceFileResponsible );
-    CleanupStack::Pop();
-
     return self;
     }
-
-
-// ---------------------------------------------------------
-// CConnDlgSelectConnectionPlugin::SetSelectedIDsL
-// ---------------------------------------------------------
-//    
-void CConnDlgSelectConnectionPlugin::SetElementIDL( TUint32 aIAPId, 
-                                                    TUint32 aDestinationId )
-    {
-    iElementID = iActivePlugin->GetElementIDL( aIAPId, aDestinationId );
-    }
     
-    
-// ---------------------------------------------------------
-// CConnDlgSelectConnectionPlugin::GetUserConnection
-// ---------------------------------------------------------
-//    
-TInt CConnDlgSelectConnectionPlugin::GetUserConnection( TInt& aIapId, 
-                                                        TInt& aSnapId )
-    {
-    aIapId  = 0;
-    aSnapId = 0;
-    
-    TInt err = RProperty::Get( KMPMUserConnectionCategory, 
-                               KMPMPSKeyUserConnectionSnap, 
-                               aSnapId );
-    
-    if ( err != KErrNone || aSnapId == 0 )
-        {
-        err = RProperty::Get( KMPMUserConnectionCategory, 
-                              KMPMPSKeyUserConnectionIap, 
-                              aIapId );
-        }
-       
-    CLOG_WRITEF( _L( "KMPMPSKeyUserConnectionSnap : %d" ), aSnapId );                      
-    CLOG_WRITEF( _L( "KMPMPSKeyUserConnectionIap : %d" ), aIapId );                           
-    CLOG_WRITEF( _L( "err : %d" ), err );
-        
-    return err;    
-    }
-
-
-// ---------------------------------------------------------
-// CConnDlgSelectConnectionPlugin::GetActiveConnection
-// ---------------------------------------------------------
-//    
-TInt CConnDlgSelectConnectionPlugin::GetActiveConnection( TInt& aIapId, 
-                                                          TInt& aSnapId,
-                                                          TInt& aBearer )
-    {
-    aIapId  = 0;
-    aSnapId = 0;
-    aBearer = 0;
-    
-    TInt err = RProperty::Get( KMPMActiveConnectionCategory, 
-                               KMPMPSKeyActiveConnectionSnap, 
-                               aSnapId );
-                                  
-    if ( err != KErrNone || aSnapId == 0 )
-        {
-        err = RProperty::Get( KMPMActiveConnectionCategory, 
-                              KMPMPSKeyActiveConnectionIap, 
-                              aIapId );
-        }
-         
-    CLOG_WRITEF( _L( "KMPMPSKeyActiveConnectionSnap : %d" ), aSnapId );                      
-    CLOG_WRITEF( _L( "KMPMPSKeyActiveConnectionIap : %d" ), aIapId );                           
-    CLOG_WRITEF( _L( "err : %d" ), err );                           
-                               
-    if ( err == KErrNone )
-        {
-    	err = RProperty::Get( KMPMActiveConnectionCategory, 
-                              KMPMPSKeyActiveConnectionBearer, 
-                              aBearer );
-        }
-
-    CLOG_WRITEF( _L( "KMPMPSKeyActiveConnectionBearer : %d" ), aBearer );                           
-    CLOG_WRITEF( _L( "iPrefs().iBearerSet : %d" ), iPrefs().iBearerSet );
-    CLOG_WRITEF( _L( "err : %d" ), err );
-    
-    return err;
-    }
 
 // End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/IAPDialog.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,286 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of class CIapDialog.
-*
-*/
-
-
-// INCLUDE FILES
-#include "IAPDialog.h"
-#include "ConnectionInfo.h"
-#include "ConnectionInfoArray.h"
-#include "ConnDlgPlugin.h"
-#include "ConnectionDialogsLogger.h"
-#include "ExpiryTimer.h"
-
-#include <AknIconArray.h>
-#include <AknsUtils.h>
-#include <uikon/eiksrvui.h>
-
-#include <data_caging_path_literals.hrh>
-#include <apsettings.mbg>
-
-
-// CONST DECLARATIONS
-
-// ROM folder
-_LIT( KDriveZ, "z:" );
-
-
-// Name of the MBM file containing icons
-_LIT( KApsettingsMBMFile, "ApSettings.mbm" );
-
-#if defined(_DEBUG)
-_LIT( KErrNullPointer, "NULL pointer" );
-#endif
-
-// CONSTANTS
-
-LOCAL_D const TInt KIconsGranularity = 4;
-
-
-// ================= MEMBER FUNCTIONS =======================
-//
-// ---------------------------------------------------------
-// CIapDialog::CIapDialog
-// ---------------------------------------------------------
-//
-CIapDialog::CIapDialog( CConnDlgIapPlugin* aPlugin )
-: CAknListQueryDialog( &iDummy ),
-  iPlugin( aPlugin ),
-  iFromOkToExit( EFalse )
-    {
-    }
-
-
-// ---------------------------------------------------------
-// CIapDialog::NewL
-// ---------------------------------------------------------
-//
-CIapDialog* CIapDialog::NewL( CConnDlgIapPlugin* aPlugin )
-    {
-    CIapDialog* self = new( ELeave ) CIapDialog( aPlugin );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    return self;
-    }
-
-
-// ---------------------------------------------------------
-// CIapDialog::ConstructL()
-// ---------------------------------------------------------
-//
-void CIapDialog::ConstructL()
-    {
-    }
-
-
-// ---------------------------------------------------------
-// CIapDialog::~CIapDialog()
-// ---------------------------------------------------------
-//
-CIapDialog::~CIapDialog()
-    {
-    CLOG_ENTERFN( "CIapDialog::~CIapDialog " );
-    iIAPIds.Close();
-    delete iExpiryTimer;
-    STATIC_CAST( CEikServAppUi*, 
-                CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( EFalse );
-    CLOG_LEAVEFN( "CIapDialog::~CIapDialog " );
-    }
-
-
-// ---------------------------------------------------------
-// CIapDialog::PreLayoutDynInitL()
-// ---------------------------------------------------------
-//
-void CIapDialog::PreLayoutDynInitL()
-    {
-    CLOG_ENTERFN( "CIapDialog::PreLayoutDynInitL " );  
-    
-    CAknListQueryDialog::PreLayoutDynInitL();
-
-    SetOwnershipType( ELbmDoesNotOwnItemArray );
-    SetIconsL();
-
-    STATIC_CAST( CEikServAppUi*, 
-                CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( ETrue );
-
-    iExpiryTimer = CExpiryTimer::NewL( *this );
-    iExpiryTimer->Start();
-    
-    CLOG_LEAVEFN( "CIapDialog::PreLayoutDynInitL " );      
-    }
-
-
-// ---------------------------------------------------------
-// CIapDialog::SetIconsL()
-// ---------------------------------------------------------
-//
-void CIapDialog::SetIconsL()
-    {
-    CLOG_ENTERFN( "CIapDialog::SetIconsL " );  
-    
-    CArrayPtr< CGulIcon >* icons = new( ELeave ) CAknIconArray( 
-                                                        KIconsGranularity );
-    CleanupStack::PushL( icons );
-
-    MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-
-    TFileName iconsFileName;
-
-    iconsFileName.Append( KDriveZ );
-    iconsFileName.Append( KDC_APP_BITMAP_DIR );
-    iconsFileName.Append( KApsettingsMBMFile );
-
-    icons->AppendL( AknsUtils::CreateGulIconL( skinInstance, 
-                            KAknsIIDQgnPropWmlGprs,
-                            iconsFileName, 
-                            EMbmApsettingsQgn_prop_wml_gprs, 
-                            EMbmApsettingsQgn_prop_wml_gprs_mask ) );
-
-    icons->AppendL( AknsUtils::CreateGulIconL( skinInstance, 
-                            KAknsIIDQgnPropWmlCsd,
-                            iconsFileName, 
-                            EMbmApsettingsQgn_prop_wml_csd, 
-                            EMbmApsettingsQgn_prop_wml_csd_mask ) );
-
-    icons->AppendL( AknsUtils::CreateGulIconL( skinInstance, 
-                            KAknsIIDQgnPropWmlHscsd,
-                            iconsFileName, 
-                            EMbmApsettingsQgn_prop_wml_hscsd, 
-                            EMbmApsettingsQgn_prop_wml_hscsd_mask ) );
-
-    icons->AppendL( AknsUtils::CreateGulIconL( skinInstance, 
-                        KAknsIIDQgnPropWlanEasy,
-                        iconsFileName, 
-                        EMbmApsettingsQgn_prop_wlan_easy, 
-                        EMbmApsettingsQgn_prop_wlan_easy_mask ) );
-
-    icons->AppendL( AknsUtils::CreateGulIconL( skinInstance, 
-                        KAknsIIDQgnPropWlanBearer,
-                        iconsFileName, 
-                        EMbmApsettingsQgn_prop_wlan_bearer, 
-                        EMbmApsettingsQgn_prop_wlan_bearer_mask ) );
-    
-    SetIconArrayL( icons );
-
-    CleanupStack::Pop( icons );
-    CLOG_LEAVEFN( "CIapDialog::SetIconsL " );      
-    }
-
-
-// ---------------------------------------------------------
-// CIapDialog::OkToExitL
-// ---------------------------------------------------------
-//
-TBool CIapDialog::OkToExitL( TInt aButtonId )
-    {
-    CLOG_ENTERFN( "CIapDialog::OkToExitL " );      
-    
-    TBool result( EFalse );
-    TInt completeCode( KErrNone );
-    
-    if ( aButtonId == EAknSoftkeySelect || aButtonId == EAknSoftkeyOk ||
-         aButtonId == EAknSoftkeyDone )
-        {
-        iPlugin->SetPreferredIapIdL( iIAPIds[ListBox()->CurrentItemIndex()] );
-        result = ETrue;
-        }
-    else if ( aButtonId == EAknSoftkeyCancel )
-        {
-        completeCode = KErrCancel;
-        result = ETrue;
-        }
-        
-    if ( result )
-        {
-        iFromOkToExit = ETrue;        
-        
-        __ASSERT_DEBUG( iPlugin, User::Panic( KErrNullPointer, KErrNone ) );
-        iPlugin->CompleteL( completeCode );
-        }
-
-    CLOG_LEAVEFN( "CIapDialog::OkToExitL " );      
-
-    return result;
-    }
-
-
-// ---------------------------------------------------------
-// CIapDialog::RefreshDialogL
-// ---------------------------------------------------------
-//    
-void CIapDialog::RefreshDialogL( CConnectionInfoArray* aIAP, 
-                                 TBool aIsReallyRefreshing )
-    {  
-    CLOG_ENTERFN( "CIapDialog::RefreshDialogL " );  
-     
-    SetItemTextArray( aIAP );
-
-    iIAPIds.Reset();
-    
-    TInt numAPs = aIAP->Count();
-    for( TInt ii = 0; ii < numAPs; ii++ )
-        {
-        TUint32 id = aIAP->At( ii )->Id();
-        iIAPIds.AppendL( id );        
-        }
-    
-    ListBox()->SetCurrentItemIndex( 0 );
-
-    ListBox()->HandleItemAdditionL();
-
-    if ( aIsReallyRefreshing )
-        {   // If we are really making a refresh, we need to recalculate the 
-            // layout, because the number of items could be different and the
-            // dialog should be resized accordingly
-        Layout();   
-        SizeChanged();
-        DrawNow();
-        }
-
-    CLOG_LEAVEFN( "CIapDialog::RefreshDialogL " );  
-    }
-
-// ---------------------------------------------------------
-// CIapDialog::OfferKeyEventL
-// ---------------------------------------------------------
-//
-TKeyResponse CIapDialog::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                         TEventCode aType)
-    {
-    if( aType == EEventKey && aKeyEvent.iCode == EKeyPhoneSend )
-        {
-        // Let's not obscure the Dialer in the background
-        if ( iExpiryTimer )
-            {
-            iExpiryTimer->Cancel();
-            iExpiryTimer->StartShort();    
-            }
-        }
-        
-    return CAknListQueryDialog::OfferKeyEventL( aKeyEvent,aType ); 
-    }
-
-void CIapDialog::HandleTimedOut()
-    {
-    TRAP_IGNORE( TryExitL(EAknSoftkeyCancel) );
-    }
-
-
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/NewIapDialog.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of class CNewIapDialog.
-*
-*/
-
-
-
-// INCLUDE FILES
-#include "NewIapDialog.h"
-#include "ConnDlgPlugin.h"
-#include "ExpiryTimer.h"
-
-#include <uikon/eiksrvui.h>
-#include <StringLoader.h>
-
-#include <CConnDlgPlugin.rsg>
-
-
-// CONST DECLARATIONS
-
-#if defined(_DEBUG)
-_LIT( KErrNullPointer, "NULL pointer" );
-#endif
-
-
-// ================= MEMBER FUNCTIONS =======================
-//
-// ---------------------------------------------------------
-// CNewIapDialog::CNewIapDialog
-// ---------------------------------------------------------
-//
-CNewIapDialog::CNewIapDialog( CConnDlgNewIapPlugin* aPlugin, TBool& aConnect,
-                              const TNewIapConnectionPrefs& aPrefs )
-: iPlugin( aPlugin ),
-  iConnect( aConnect ),
-  iPrefs( aPrefs )
-    {
-    }
-
-
-// ---------------------------------------------------------
-// CNewIapDialog::~CNewIapDialog
-// ---------------------------------------------------------
-//
-CNewIapDialog::~CNewIapDialog()
-    {
-    STATIC_CAST( CEikServAppUi*, 
-                CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( EFalse );
-    delete iExpiryTimer;
-    }
-
-// ---------------------------------------------------------
-// CNewIapDialog::PreLayoutDynInitL
-// ---------------------------------------------------------
-//
-void CNewIapDialog::PreLayoutDynInitL()
-    {
-    CAknQueryDialog::PreLayoutDynInitL();
-
-    STATIC_CAST( CEikServAppUi*, 
-                CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( ETrue );
-
-    // New connection name
-    HBufC *msg = StringLoader::LoadL( R_CONNDLG_NEW_CONNECTION_ATTEMPT, 
-                                      iPrefs.iName );
-    CleanupStack::PushL( msg );
-    SetPromptL( msg->Des() );
-    CleanupStack::PopAndDestroy( msg );
-    
-    iExpiryTimer = CExpiryTimer::NewL( *this );
-    iExpiryTimer->Start();
-    }
-
-
-// ---------------------------------------------------------
-// CNewIapDialog::OkToExitL
-// ---------------------------------------------------------
-//
-TBool CNewIapDialog::OkToExitL( TInt aButtonId )
-    {
-    iConnect = EFalse;
-    if ( aButtonId == EAknSoftkeyYes || aButtonId == EAknSoftkeyDone || 
-         aButtonId == EAknSoftkeyOk )
-        {
-        iConnect = ETrue;
-        }
-
-    __ASSERT_DEBUG( iPlugin, User::Panic( KErrNullPointer, KErrNone ) );
-    iPlugin->CompleteL( KErrNone );
-
-    return( ETrue );
-    }
-
-void CNewIapDialog::HandleTimedOut()
-    {
-    TRAP_IGNORE( TryExitL(EAknSoftkeyCancel) );
-    }
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/QosDialog.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of class CQosDialog.
-*
-*/
-
-
-// INCLUDE FILES
-#include "QosDialog.h"
-#include "ConnDlgPlugin.h"
-#include "ExpiryTimer.h"
-
-#include <uikon/eiksrvui.h>
-
-
-// CONSTANTS
-#if defined(_DEBUG)
-_LIT( KErrNullPointer, "NULL pointer" );
-#endif
-
-
-// ================= MEMBER FUNCTIONS =======================
-//
-// ---------------------------------------------------------
-// CQosDialog::CQosDialog
-// ---------------------------------------------------------
-//
-CQosDialog::CQosDialog( CConnDlgQosPlugin* aPlugin, TBool& aBool )
-: iPlugin( aPlugin ),
-  iBool( aBool )
-    {
-    }
-    
-    
-// ---------------------------------------------------------
-// CQosDialog::~CQosDialog
-// ---------------------------------------------------------
-//
-CQosDialog::~CQosDialog()
-    {
-    STATIC_CAST( CEikServAppUi*, 
-                CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( EFalse );
-    delete iExpiryTimer;
-    }
-
-
-// ---------------------------------------------------------
-// CQosDialog::PreLayoutDynInitL()
-// ---------------------------------------------------------
-//
-void CQosDialog::PreLayoutDynInitL()
-    {
-    CAknQueryDialog::PreLayoutDynInitL();
-    
-    iExpiryTimer = CExpiryTimer::NewL( *this );
-    iExpiryTimer->Start();
-    
-    STATIC_CAST( CEikServAppUi*, 
-                CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( ETrue );
-    }
-
-
-// ---------------------------------------------------------
-// CQosDialog::OkToExitL
-// ---------------------------------------------------------
-//
-TBool CQosDialog::OkToExitL( TInt aButtonId )
-    {
-    iBool = EFalse;
-    if ( aButtonId == EAknSoftkeyYes || aButtonId == EAknSoftkeyDone ||
-         aButtonId == EAknSoftkeyOk )
-        {
-        iBool = ETrue;
-        }
-
-
-    __ASSERT_DEBUG( iPlugin, User::Panic( KErrNullPointer, KErrNone ) );
-    iPlugin->CompleteL( KErrNone );
-
-    return ETrue;
-    }
-
-void CQosDialog::HandleTimedOut()
-    {
-    TRAP_IGNORE( TryExitL(EAknSoftkeyCancel) );
-    }
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/ReconnectDialog.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of class CReconnectDialog.
-*
-*/
-
-
-// INCLUDE FILES
-#include "ReconnectDialog.h"
-#include "ConnDlgPlugin.h"
-#include "ExpiryTimer.h"
-
-#include <uikon/eiksrvui.h>
-
-
-// CONSTANTS
-#if defined(_DEBUG)
-_LIT( KErrNullPointer, "NULL pointer" );
-#endif
-
-
-// ================= MEMBER FUNCTIONS =======================
-//
-// ---------------------------------------------------------
-// CReconnectDialog::CReconnectDialog
-// ---------------------------------------------------------
-//
-CReconnectDialog::CReconnectDialog( CConnDlgReconnectPlugin* aPlugin, 
-                                    TBool& aBool )
-: iPlugin( aPlugin ),
-  iBool( aBool )
-    {
-    }
-
-
-// ---------------------------------------------------------
-// CReconnectDialog::~CReconnectDialog
-// ---------------------------------------------------------
-//
-CReconnectDialog::~CReconnectDialog()
-    {
-    STATIC_CAST( CEikServAppUi*, 
-                CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( EFalse );
-    delete iExpiryTimer;
-    }
-
-// ---------------------------------------------------------
-// CReconnectDialog::PreLayoutDynInitL()
-// ---------------------------------------------------------
-//
-void CReconnectDialog::PreLayoutDynInitL()
-    {
-    CAknQueryDialog::PreLayoutDynInitL();
-    
-    iExpiryTimer = CExpiryTimer::NewL( *this );
-    iExpiryTimer->Start();
-    
-    STATIC_CAST( CEikServAppUi*, 
-                CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( ETrue );
-    }
-
-
-// ---------------------------------------------------------
-// CReconnectDialog::OkToExitL
-// ---------------------------------------------------------
-//
-TBool CReconnectDialog::OkToExitL( TInt aButtonId )
-    {
-    iBool = EFalse;
-    if ( aButtonId == EAknSoftkeyYes || aButtonId == EAknSoftkeyDone || 
-         aButtonId == EAknSoftkeyOk )
-        {
-        iBool = ETrue;
-        }
-
-
-    __ASSERT_DEBUG( iPlugin, User::Panic( KErrNullPointer, KErrNone ) );
-    iPlugin->CompleteL( KErrNone );
-
-    return ETrue;
-    }
-
-void CReconnectDialog::HandleTimedOut()
-    {
-    TRAP_IGNORE( TryExitL(EAknSoftkeyCancel) );
-    }
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/SelectConnectionDialog.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,570 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of class CSelectConnectionDialog.
-*
-*/
-
-
-// INCLUDE FILES
-#include "SelectConnectionDialog.h"
-#include "ConnectionInfo.h"
-#include "ConnectionInfoArray.h"
-#include "ConnectionDialogsLogger.h"
-#include "ActiveSelectExplicit.h"
-#include "ExpiryTimer.h"
-#include "ConnectionDialogs.hrh"
-
-
-#include "ConnDlgPlugin.h"
-#include <CConnDlgPlugin.rsg>
-
-#include <uikon/eiksrvui.h>
-
-#include <AknsFrameBackgroundControlContext.h>
-#include <aknsoundsystem.h>
-#include <AknsDrawUtils.h>
-#include <aknnotewrappers.h>
-#include <StringLoader.h>
-#include <eiklbi.h>
-
-// CONST DECLARATIONS
-
-#if defined(_DEBUG)
-_LIT( KErrNullPointer, "NULL pointer" );
-#endif
-
-
-
-// ================= MEMBER FUNCTIONS =======================
-//
-// ---------------------------------------------------------
-// CSelectConnectionDialog::CSelectConnectionDialog
-// ---------------------------------------------------------
-//
-CSelectConnectionDialog::CSelectConnectionDialog( 
-                                        MEikSrvNotifierBase2* aPlugin,
-                                        TInt aRefreshInterval,
-                                        TUint32 aBearerSet, 
-                                        TBool aIsWLANFeatureSupported,
-                                        TUint aDefaultCMId )
-: CAknListQueryDialog( &iDummy ),
-  iPlugin( ( CConnDlgSelectConnectionPlugin* )aPlugin ),
-  iFromOkToExit( EFalse ),
-  iActiveSelectExplicit( NULL ),
-  iRefreshInterval( aRefreshInterval ),
-  iBearerSet( aBearerSet ),
-  iIsWLANFeatureSupported( aIsWLANFeatureSupported ),
-  iDefaultCMId( aDefaultCMId )
-    {
-    }
-
-
-// ---------------------------------------------------------
-// CSelectConnectionDialog::NewL
-// ---------------------------------------------------------
-//
-CSelectConnectionDialog* CSelectConnectionDialog::NewL( 
-                                                MEikSrvNotifierBase2* aPlugin,
-                                                TInt aRefreshInterval,
-                                                TUint32 aBearerSet, 
-                                                TBool aIsWLANFeatureSupported, 
-                                                TUint aDefaultCMId )
-    {
-    CSelectConnectionDialog* self = new( ELeave ) CSelectConnectionDialog( 
-                                                    aPlugin,
-                                                    aRefreshInterval,
-                                                    aBearerSet, 
-                                                    aIsWLANFeatureSupported, 
-                                                    aDefaultCMId );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    return self;
-    }
-
-
-// ---------------------------------------------------------
-// CSelectConnectionDialog::ConstructL()
-// ---------------------------------------------------------
-//
-void CSelectConnectionDialog::ConstructL()
-    {
-    }
-
-
-// ---------------------------------------------------------
-// CSelectConnectionDialog::~CSelectConnectionDialog()
-// ---------------------------------------------------------
-//
-CSelectConnectionDialog::~CSelectConnectionDialog()
-    {
-    CLOG_ENTERFN( "CSelectConnectionDialog::~CSelectConnectionDialog " );
-    iIapIDs.Close();
-    iDestIDs.Close();
-    STATIC_CAST( CEikServAppUi*, 
-                CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( EFalse );
-    delete iExpiryTimer;
-    CLOG_LEAVEFN( "CSelectConnectionDialog::~CSelectConnectionDialog " );
-    }
-
-
-// ---------------------------------------------------------
-// CSelectConnectionDialog::PreLayoutDynInitL()
-// ---------------------------------------------------------
-//
-void CSelectConnectionDialog::PreLayoutDynInitL()
-    {
-    CLOG_ENTERFN( "CSelectConnectionDialog::PreLayoutDynInitL " );  
-    
-    CAknListQueryDialog::PreLayoutDynInitL();
-
-    SetOwnershipType( ELbmDoesNotOwnItemArray );
-    SetIconArrayL( iIcons );
-
-    STATIC_CAST( CEikServAppUi*, 
-                CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( ETrue );
-
-    iExpiryTimer = CExpiryTimer::NewL( *this );
-    iExpiryTimer->Start();
-    
-    CLOG_LEAVEFN( "CSelectConnectionDialog::PreLayoutDynInitL " );      
-    }
-
-
-// ---------------------------------------------------------
-// CSelectConnectionDialog::OkToExitL
-// ---------------------------------------------------------
-//
-TBool CSelectConnectionDialog::OkToExitL( TInt aButtonId )
-    {
-    CLOG_ENTERFN( "CSelectConnectionDialog::OkToExitL " );      
-    
-    TBool result( EFalse );
-    TInt completeCode( KErrNone );
-    
-    if ( aButtonId == EAknSoftkeySelect || aButtonId == EAknSoftkeyOk ||
-         aButtonId == EAknSoftkeyDone )
-        {
-        CLOG_WRITE( "OkToExitL Ok-ed" );  
-        TInt index = ListBox()->CurrentItemIndex();
-        if ( iIapIDs[index] == 0 && iDestIDs[index] == 0 ) 
-            {      // Uncategorized
-            ProcessCommandL( ESelectConnectionCmdChooseMethod );
-            }
-        else
-            {
-            iPlugin->SetElementIDL( iIapIDs[index], iDestIDs[index] );
-            result = ETrue;
-            }
-        }
-    else if ( aButtonId == EAknSoftkeyCancel )
-        {
-        CLOG_WRITE( "OkToExitL Cancel" );  
-        completeCode = KErrCancel;
-        result = ETrue;
-        }
-    else if ( aButtonId == EAknSoftkeyOptions )
-        {
-        if ( !( ListBox()->View()->ItemDrawer()->Flags() 
-               & CListItemDrawer::EDisableHighlight ) )
-            {
-            DisplayMenuL();
-            }
-        else
-            {
-            ListBox()->View()->ItemDrawer()->ClearFlags(
-               CListItemDrawer::EDisableHighlight );
-            DrawNow();
-            }
-        }
-        
-    if ( result )
-        {
-        iFromOkToExit = ETrue;        
-        
-        __ASSERT_DEBUG( iPlugin, User::Panic( KErrNullPointer, KErrNone ) );
-        CLOG_WRITE( "OkToExitL Going to CompleteL" );  
-        iPlugin->CompleteL( completeCode );
-        CLOG_WRITE( "OkToExitL Returned from CompleteL" );  
-        }
-
-    CLOG_LEAVEFN( "CSelectConnectionDialog::OkToExitL " );      
-
-    return result;
-    }
-
-
-// ---------------------------------------------------------
-// CSelectConnectionDialog::PrepareAndRunLD
-// ---------------------------------------------------------
-//    
-void CSelectConnectionDialog::PrepareAndRunLD( CConnectionInfoArray* aIAP,
-                                               CArrayPtr< CGulIcon >* aIcons,
-                                               TBool aIsReallyRefreshing,
-                                               const TInt aHighlightedItem )
-    {
-    PrepareLC( R_SELECT_CONNECTION_QUERY );
-    RefreshDialogL( aIAP, aIcons, aIsReallyRefreshing, aHighlightedItem );
-    RunLD();
-    }
-
-
-// ---------------------------------------------------------
-// CSelectConnectionDialog::RefreshDialogL
-// ---------------------------------------------------------
-//    
-void CSelectConnectionDialog::RefreshDialogL( CConnectionInfoArray* aIAP, 
-                                              CArrayPtr< CGulIcon >* aIcons,
-                                              TBool aIsReallyRefreshing,
-                                              const TInt aHighlightedItem )
-    {  
-    CLOG_ENTERFN( "CSelectConnectionDialog::RefreshDialogL " );  
-     
-    if ( aIAP->Count() == 0 )
-        {
-        ListBox()->Reset();	
-        }
-    else
-        {
-        SetItemTextArray( aIAP );	
-        } 
-    
-    iIcons = aIcons;
-
-    iIapIDs.Reset();
-    iDestIDs.Reset();
-
-    // Determine the preferred IAP
-    TInt numAPs = aIAP->Count();
-    for( TInt ii = 0; ii < numAPs; ii++ )
-        {
-        iIapIDs.AppendL( aIAP->At( ii )->Id() );
-        iDestIDs.AppendL( aIAP->At( ii )->DestinationId() );
-        }
-
-    if ( aHighlightedItem >= 0 && aHighlightedItem < numAPs )
-        {
-        ListBox()->SetCurrentItemIndex( aHighlightedItem );
-        if ( aHighlightedItem == 1 )
-            {
-            // To have the Search for Wlan also visible. But this is valid only
-            // if the highlighted item can be the first or the second, 
-            // otherwise we risk to hide the highlighted item!
-            ListBox()->ScrollToMakeItemVisible( 0 );    
-            }
-        }
-
-    ListBox()->HandleItemAdditionL();
-
-    if ( aHighlightedItem >= 0 && aHighlightedItem < numAPs )
-        {
-        CEikButtonGroupContainer& cba = ButtonGroupContainer();
-        HBufC* label;
-
-        if ( iIapIDs[aHighlightedItem] != 0 )
-            {       // Easy Wlan
-            label = StringLoader::LoadL( R_QTN_MSK_SELECT );
-            }
-        else if ( iDestIDs[aHighlightedItem] != 0 )
-            {       // Destination
-            label = StringLoader::LoadL( R_QTN_MSK_CONNECT );
-            }
-        else        // if ( iIapIDs[aHighlightedItem] == 0 && iDestIDs[aHighlightedItem] == 0 )
-            {      // Uncategorized
-            label = StringLoader::LoadL( R_QTN_MSK_OPEN );
-            }
-
-        CleanupStack::PushL( label );
-        cba.SetCommandL( EAknSoftkeyDone, label->Des() );
-        CleanupStack::PopAndDestroy(); // label
-        }
-
-    if ( aIsReallyRefreshing )
-        {   // If we are really making a refresh, we need to recalculate the 
-            // layout, because the number of items could be different and the
-            // dialog should be resized accordingly
-        Layout();   
-        SizeChanged();
-        DrawDeferred();
-        }
-
-    CLOG_LEAVEFN( "CSelectConnectionDialog::RefreshDialogL " );  
-    }
-    
-
-// ----------------------------------------------------------------------------
-// CSelectConnectionDialog::DynInitMenuPaneL
-// ----------------------------------------------------------------------------
-//
-void CSelectConnectionDialog::DynInitMenuPaneL( TInt aResourceId, 
-                                             CEikMenuPane* aMenuPane )
-    {
-    CAknListQueryDialog::DynInitMenuPaneL( aResourceId, aMenuPane );
-
-    if ( aResourceId == R_SELECT_CONNECTION_MENU_PANE )
-        {
-        if ( aMenuPane )
-            {
-            TInt index = ListBox()->CurrentItemIndex();
-
-            if ( iIapIDs[index] != 0 )   
-                {      // Easy Wlan
-                aMenuPane->DeleteMenuItem( ESelectConnectionCmdChooseMethod );
-                aMenuPane->DeleteMenuItem( ESelectConnectionCmdConnect );
-                }
-            else if ( iDestIDs[index] != 0 )
-                {       // Destination
-                aMenuPane->DeleteMenuItem( ESelectConnectionCmdSelect );
-                }
-            else // if ( iIapIDs[index] == 0 && iDestIDs[index] == 0 ) 
-                {      // Uncategorized
-                aMenuPane->DeleteMenuItem( ESelectConnectionCmdSelect );
-                aMenuPane->DeleteMenuItem( ESelectConnectionCmdConnect );
-                }
-            }
-        }
-    }
-
-
-// ----------------------------------------------------------------------------
-// CSelectConnectionDialog::ProcessCommandL
-// ----------------------------------------------------------------------------
-//
-void CSelectConnectionDialog::ProcessCommandL( TInt aCommand )
-    {
-    CLOG_ENTERFN( "CSelectConnectionDialog::ProcessCommandL" );  
-    if ( MenuShowing() )
-        {
-        HideMenu();
-        }
-
-    switch( aCommand )
-        {
-        case ESelectConnectionCmdSelect:
-        case ESelectConnectionCmdConnect:
-            {
-            TryExitL( EAknSoftkeySelect );
-            break;
-            }
-
-        case ESelectConnectionCmdChooseMethod:
-            {
-            if ( !iActiveSelectExplicit )
-                {
-                iActiveSelectExplicit = CActiveSelectExplicit::NewL( this, 
-                                        iDestIDs[ListBox()->CurrentItemIndex()],
-                                        iRefreshInterval,
-                                        iBearerSet, 
-                                        iIsWLANFeatureSupported,
-                                       iDefaultCMId );
-                iActiveSelectExplicit->ShowSelectExplicitL();
-                }
-            break;
-            }
-
-        default:
-            {
-            break;
-            }
-        }
-    CLOG_LEAVEFN( "CSelectConnectionDialog::ProcessCommandL" );  
-    }
-
-
-// ---------------------------------------------------------
-// CNetworksViewContainer::OfferKeyEventL
-// ---------------------------------------------------------
-//
-TKeyResponse CSelectConnectionDialog::OfferKeyEventL( 
-                                                   const TKeyEvent& aKeyEvent,
-                                                   TEventCode aType )
-    {
-    CLOG_ENTERFN( "CSelectConnectionDialog::OfferKeyEventL" );
-    
-    if( aType == EEventKey && aKeyEvent.iCode == EKeyPhoneSend )
-        {
-        // Let's not obscure the Dialer in the background
-        if ( iExpiryTimer && !iActiveSelectExplicit )
-            {
-            iExpiryTimer->Cancel();
-            iExpiryTimer->StartShort();    
-            }
-        }
-
-    TKeyResponse result( EKeyWasNotConsumed );
-    TInt indexBefore = -1;
-    TInt indexAfter = -1;
-
-    if ( aKeyEvent.iScanCode == EStdKeyDownArrow || 
-         aKeyEvent.iScanCode == EStdKeyUpArrow )
-        {
-        CLOG_WRITE( "Arrow pressed" );
-        indexBefore = ListBox()->CurrentItemIndex();
-        }
-
-    result = CAknListQueryDialog::OfferKeyEventL( aKeyEvent, aType );
-
-    CLOG_WRITEF( _L ( "Returned from CAknListQueryDialog::OfferKeyEventL: %d" ), result );
-
-    if ( aKeyEvent.iScanCode == EStdKeyDownArrow || 
-         aKeyEvent.iScanCode == EStdKeyUpArrow )
-        {
-        indexAfter = ListBox()->CurrentItemIndex();
-        }
-
-    if ( indexBefore != indexAfter )
-        {
-        CLOG_WRITEF( _L ( "IndexBefore = %d, IndexAfter = %d" ), indexBefore, indexAfter );
-        CEikButtonGroupContainer& cba = ButtonGroupContainer();
-        HBufC* label;
-        if ( iIapIDs[indexAfter] != 0 )
-            {       // Easy Wlan
-            label = StringLoader::LoadL( R_QTN_MSK_SELECT );
-            }
-        else if ( iDestIDs[indexAfter] != 0 )
-            {       // Destination
-            label = StringLoader::LoadL( R_QTN_MSK_CONNECT );
-            }
-        else        // if ( iIapIDs[indexAfter] == 0 && iDestIDs[indexAfter] == 0 )
-            {      // Uncategorized
-            label = StringLoader::LoadL( R_QTN_MSK_OPEN );
-            }
-        CleanupStack::PushL( label );
-        cba.SetCommandL( EAknSoftkeyDone, label->Des() );
-        CleanupStack::PopAndDestroy(); // label
-        cba.DrawDeferred();
-        }
-
-    CLOG_LEAVEFN( "CSelectConnectionDialog::OfferKeyEventL" );  
-
-    return result;
-    }
-
-
-// ----------------------------------------------------------------------------
-// CSelectConnectionDialog::RunLD
-// ----------------------------------------------------------------------------
-//
-TInt CSelectConnectionDialog::RunLD()
-    {
-    CLOG_ENTERFN( "CSelectConnectionDialog::RunLD" );  
-    CAknDialog::ConstructL( R_SELECT_CONNECTION_MENUBAR );
-    User::ResetInactivityTime();
-
-    CAknKeySoundSystem* soundSystem = NULL;
-    if ( iSoundSystem )
-        {
-        iSoundSystem->PushContextL( R_AVKON_DEFAULT_SKEY_LIST );
-        // Need to store local copy of iSoundSystem, since it will have been
-        // destroyed when RunLD returns
-        soundSystem = iSoundSystem;
-        }
-
-    CAknsFrameBackgroundControlContext* cc = 
-        ( CAknsFrameBackgroundControlContext* )AknsDrawUtils::ControlContext(
-                                                                        this );
-    cc->SetCenter( KAknsIIDQsnFrPopupCenterQuery );
-
-    TInt ret = CAknDialog::RunLD();
-    if ( soundSystem )
-        {
-        soundSystem->PopContext();
-        }
-    CLOG_LEAVEFN( "CSelectConnectionDialog::RunLD" );  
-    return ret;
-    }
-
-
-// ---------------------------------------------------------
-// CSelectConnectionDialog::SetElementIDL
-// ---------------------------------------------------------
-//    
-void CSelectConnectionDialog::SetElementIDL( TUint32 aIAPId )
-    {
-    iPlugin->SetElementIDL( aIAPId, 0 );
-    }
-
-
-// ---------------------------------------------------------
-// void CSelectConnectionDialog::CompleteL
-// ---------------------------------------------------------
-//
-void CSelectConnectionDialog::CompleteL( TInt aStatus )
-    {
-    CLOG_ENTERFN( "CSelectConnectionDialog::CompleteL" );  
-    delete iActiveSelectExplicit;
-    iActiveSelectExplicit = NULL;
-    iPlugin->CompleteL( aStatus );
-    CLOG_LEAVEFN( "CSelectConnectionDialog::CompleteL" );  
-    }
-
-void CSelectConnectionDialog::HandleTimedOut()
-    {
-    TRAP_IGNORE( TryExitL(EAknSoftkeyCancel) );
-    }
-
-// ---------------------------------------------------------
-// void CSelectConnectionDialog::HandleListBoxEventL
-// ---------------------------------------------------------
-//    
-void CSelectConnectionDialog::HandleListBoxEventL(CEikListBox* aListBox, 
-												TListBoxEvent aEventType)
-	{	
-    if( aEventType == EEventItemClicked )
-        {
-        // Do not forward to the base class. 
-        // The first click must only select the item.        
-        return;
-        }
-    else if( aEventType == EEventItemDoubleClicked )
-        {
-        // Forward as EEventItemClicked to open the item on the second click.
-        CAknListQueryDialog::HandleListBoxEventL( aListBox, EEventItemClicked );
-        }
-	else
-        {
-        // normal forward
-        CAknListQueryDialog::HandleListBoxEventL( aListBox, aEventType );
-        }
-    }
-
-// ---------------------------------------------------------
-// void CSelectConnectionDialog::HandlePointerEventL
-// ---------------------------------------------------------
-//    
-void CSelectConnectionDialog::HandlePointerEventL(const TPointerEvent& aPointerEvent)
-    {
-    if( ListBox()->Rect().Contains( aPointerEvent.iPosition ) )
-        {
-        if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
-            {
-            TInt index;
-            TInt oldIndex = ListBox()->CurrentItemIndex();
-            if ( ListBox()->View()->XYPosToItemIndex( aPointerEvent.iPosition, index ) &&
-                   ( index == oldIndex ) )
-                {
-                // Pressed Down Effect
-                ListBox()->View()->ItemDrawer()->SetFlags( CListItemDrawer::EPressedDownState );
-                }
-            }
-        CAknControl::HandlePointerEventL(aPointerEvent);
-        }
-    else
-        {
-        CAknListQueryDialog::HandlePointerEventL( aPointerEvent );
-        }
-    }
-
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/SelectExplicitDialog.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,226 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of class CSelectExplicitDialog.
-*
-*/
-
-
-// INCLUDE FILES
-#include "SelectExplicitDialog.h"
-#include "ConnectionInfo.h"
-#include "ConnectionInfoArray.h"
-#include "ConnDlgPlugin.h"
-#include "ConnectionDialogsLogger.h"
-#include "SelectConnectionDialog.h"
-#include "ExpiryTimer.h"
-
-#include <AknIconArray.h>
-#include <AknsUtils.h>
-#include <uikon/eiksrvui.h>
-
-#include <data_caging_path_literals.hrh>
-#include <apsettings.mbg>
-
-#include <CConnDlgPlugin.rsg>
-
-
-// ================= MEMBER FUNCTIONS =======================
-//
-// ---------------------------------------------------------
-// CSelectExplicitDialog::CSelectExplicitDialog
-// ---------------------------------------------------------
-//
-CSelectExplicitDialog::CSelectExplicitDialog( 
-                                    CSelectConnectionDialog* aCallerDialog )
-: CAknListQueryDialog( &iDummy ),
-  iCallerDialog( aCallerDialog ),
-  iFromOkToExit( EFalse )
-    {
-    }
-
-
-// ---------------------------------------------------------
-// CSelectExplicitDialog::NewL
-// ---------------------------------------------------------
-//
-CSelectExplicitDialog* CSelectExplicitDialog::NewL( 
-                                    CSelectConnectionDialog* aCallerDialog )
-    {
-    CSelectExplicitDialog* self = new( ELeave ) 
-                                        CSelectExplicitDialog( aCallerDialog );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    return self;
-    }
-
-
-// ---------------------------------------------------------
-// CSelectExplicitDialog::ConstructL()
-// ---------------------------------------------------------
-//
-void CSelectExplicitDialog::ConstructL()
-    {
-    }
-
-
-// ---------------------------------------------------------
-// CSelectExplicitDialog::~CSelectExplicitDialog()
-// ---------------------------------------------------------
-//
-CSelectExplicitDialog::~CSelectExplicitDialog()
-    {
-    CLOG_ENTERFN( "CSelectExplicitDialog::~CSelectExplicitDialog " );
-    iIAPIds.Close();
-    delete iExpiryTimer;
-    CLOG_LEAVEFN( "CSelectExplicitDialog::~CSelectExplicitDialog " );
-    }
-
-
-// ---------------------------------------------------------
-// CSelectExplicitDialog::PreLayoutDynInitL()
-// ---------------------------------------------------------
-//
-void CSelectExplicitDialog::PreLayoutDynInitL()
-    {
-    CLOG_ENTERFN( "CSelectExplicitDialog::PreLayoutDynInitL " );  
-    
-    CAknListQueryDialog::PreLayoutDynInitL();
-
-    SetOwnershipType( ELbmDoesNotOwnItemArray );
-    SetIconArrayL( iIcons );
-
-    iExpiryTimer = CExpiryTimer::NewL( *this );
-    iExpiryTimer->Start();
-    
-    CLOG_LEAVEFN( "CSelectExplicitDialog::PreLayoutDynInitL " );      
-    }
-
-
-// ---------------------------------------------------------
-// CSelectExplicitDialog::OkToExitL
-// ---------------------------------------------------------
-//
-TBool CSelectExplicitDialog::OkToExitL( TInt aButtonId )
-    {
-    CLOG_ENTERFN( "CSelectExplicitDialog::OkToExitL " );      
-    
-    TBool result( EFalse );
-    TInt completeCode( KErrNone );
-    
-    if ( aButtonId == EAknSoftkeySelect || aButtonId == EAknSoftkeyOk ||
-         aButtonId == EAknSoftkeyDone )
-        {
-        iCallerDialog->SetElementIDL( iIAPIds[ListBox()->CurrentItemIndex()] );
-        result = ETrue;
-        }
-    else if ( aButtonId == EAknSoftkeyCancel )
-        {
-        completeCode = KErrCancel;
-        result = ETrue;
-        }
-        
-    if ( result )
-        {
-        iFromOkToExit = ETrue;        
-        
-        iCallerDialog->CompleteL( completeCode );
-        }
-
-    CLOG_LEAVEFN( "CSelectExplicitDialog::OkToExitL " );      
-
-    return result;
-    }
-
-
-// ---------------------------------------------------------
-// CSelectExplicitDialog::PrepareAndRunLD
-// ---------------------------------------------------------
-//    
-void CSelectExplicitDialog::PrepareAndRunLD( CConnectionInfoArray* aIAP,
-                                               CArrayPtr< CGulIcon >* aIcons,
-                                               TBool aIsReallyRefreshing )
-    {
-    PrepareLC( R_LIST_EXPLICIT_QUERY );
-    RefreshDialogL( aIAP, aIcons, aIsReallyRefreshing );
-    RunLD();
-    }
-
-
-// ---------------------------------------------------------
-// CSelectExplicitDialog::RefreshDialogL
-// ---------------------------------------------------------
-//    
-void CSelectExplicitDialog::RefreshDialogL( CConnectionInfoArray* aIAP, 
-                                              CArrayPtr< CGulIcon >* aIcons,
-                                              TBool aIsReallyRefreshing )
-    {  
-    CLOG_ENTERFN( "CSelectExplicitDialog::RefreshDialogL " );  
-     
-    SetItemTextArray( aIAP );
-    iIcons = aIcons;
-
-    iIAPIds.Reset();
-
-    // Determine the preferred IAP
-    TInt numAPs = aIAP->Count();
-    for( TInt ii = 0; ii < numAPs; ii++ )
-        {
-        iIAPIds.AppendL( aIAP->At( ii )->Id() );
-        }
-
-    if ( numAPs )
-        {
-        ListBox()->SetCurrentItemIndex( 0 );
-        }
-    ListBox()->HandleItemAdditionL();
-
-    if ( aIsReallyRefreshing )
-        {   // If we are really making a refresh, we need to recalculate the 
-            // layout, because the number of items could be different and the
-            // dialog should be resized accordingly
-        Layout();   
-        SizeChanged();
-        DrawNow();
-        }
-
-    CLOG_LEAVEFN( "CSelectExplicitDialog::RefreshDialogL " );  
-    }
-    
-// ---------------------------------------------------------
-// CSelectExplicitDialog::OfferKeyEventL
-// ---------------------------------------------------------
-//
-TKeyResponse CSelectExplicitDialog::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                                    TEventCode aType)
-    {
-    if( aType == EEventKey && aKeyEvent.iCode == EKeyPhoneSend )
-        {
-        // Let's not obscure the Dialer in the background
-        if ( iExpiryTimer )
-            {
-            iExpiryTimer->Cancel();
-            iExpiryTimer->StartShort();    
-            }
-        }
-        
-    return CAknListQueryDialog::OfferKeyEventL( aKeyEvent,aType ); 
-    }    
-	
-void CSelectExplicitDialog::HandleTimedOut()
-    {
-    TRAP_IGNORE( TryExitL(EAknSoftkeyCancel) );
-    }
-// End of File
--- a/connectionutilities/ConnectionDialogs/cconndlg/src/sortsnaputils.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,229 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of class TSortSnapUtils.
-*
-*/
-
-
-// INCLUDE FILES
-#include "sortsnaputils.h"
-#include "ConnectionDialogsLogger.h"
-
-// ================= MEMBER FUNCTIONS =======================
-//
-// ---------------------------------------------------------
-// TSortSnapUtils::TSortSnapUtils
-// ---------------------------------------------------------
-//
-TSortSnapUtils::TSortSnapUtils( RMPM& aMPM ):
-iSnapCount( 0 ),
-iSSUState( EUninitialised ),
-iMPM( aMPM )
-    {
-    CLOG_ENTERFN( "TSortSnapUtils::TSortSnapUtils" );
-    CLOG_LEAVEFN( "TSortSnapUtils::TSortSnapUtils" );
-    }
-
-
-// ---------------------------------------------------------
-// TSortSnapUtils::~TSortSnapUtils
-// ---------------------------------------------------------
-//
-TSortSnapUtils::~TSortSnapUtils()
-    {
-    CLOG_ENTERFN( "TSortSnapUtils::~TSortSnapUtils" );
-    CLOG_LEAVEFN( "TSortSnapUtils::~TSortSnapUtils" );
-    }
-
-// ---------------------------------------------------------
-// TSortSnapUtils::InitDestIdArray
-// ---------------------------------------------------------
-//
-void TSortSnapUtils::InitDestIdArray()
-    {
-    CLOG_ENTERFN( "TSortSnapUtils::InitDestIdArray" );
-    switch (iSSUState)
-        {
-        case EUseMPM:
-            {
-            // we already know that MPM is used
-            CLOG_WRITE( "using MPM, no need to re-read from P&S " );
-            break;
-            }
-        case EUninitialised:
-        case EUsePubSub:
-        default:
-            {
-            iSnapCount = 0;
-            TMpmSnapPubSubFormat snapData;
-            TPtr8 e( reinterpret_cast< TUint8* >( &snapData ), 
-                     sizeof( snapData ) );
-            for (TInt i = 0 ; i < KMPMSortSnapMaxKey; i++ )
-                {
-                TInt err = RProperty::Get( KMPMSortSnapCategory, 
-                                           i, 
-                                           e );
-               CLOG_WRITEF( _L( "RProperty::Get returned: %d" ), err );
-               CLOG_WRITEF( _L( "Snap Id: %d" ), snapData.iSnap );
-               CLOG_WRITEF( _L( "Snap Number: %d" ), iSnapCount );
-
-                if (err == KErrNone)                            
-                    {
-                    iSnapIdArray[iSnapCount] = snapData.iSnap;
-                    iSnapCount++;
-                    }
-                }
-            //determine what method to use:
-            // we always have at least one snap element
-            // in P&S
-            // if we are called from MPM                
-            if (iSnapCount)
-                {
-                CLOG_WRITE( "iSSUState = EUsePubSub " );
-                iSSUState = EUsePubSub;       
-                }
-             else
-                {
-                CLOG_WRITE( "iSSUState = EUseMPM " );
-                iSSUState = EUseMPM;       
-                }
-            }
-        }
-    CLOG_LEAVEFN( "TSortSnapUtils::InitDestIdArray" );
-    }
-
-// ---------------------------------------------------------
-// TSortSnapUtils::GetDestIdArrayL
-// ---------------------------------------------------------
-//
-void TSortSnapUtils::GetDestIdArrayL( RCmManagerExt& aCmManagerExt, RArray<TUint32>& aDestArray )
-    {
-    CLOG_ENTERFN( "TSortSnapUtils::GetDestIdArrayL" );
-    aDestArray.Reset();
-    InitDestIdArray(); // re-read the values, set iSSUState
-    switch (iSSUState)
-        {
-        case EUsePubSub:
-            {
-            CLOG_WRITE( "Using P&S " );
-            // append from 1, do not append uncategorised destination!
-            for ( TInt i = 1 ; i < iSnapCount; i++ )
-                {
-                aDestArray.Append( iSnapIdArray[i] );
-                CLOG_WRITEF( _L( "Appending to array: Snap Id: %d" ), iSnapIdArray[i] );                
-                }
-            break;
-            }
-        case EUseMPM:
-            {
-            CLOG_WRITE( "Using MPM " );
-            aCmManagerExt.AllDestinationsL( aDestArray );
-            break;
-            }
-        case EUninitialised:
-        default:
-            {
-            //should not ever happen, as we initialise at the beginning of the 
-            // function
-            User::Leave( KErrNotReady );
-            }
-        }
-    CLOG_LEAVEFN( "TSortSnapUtils::GetDestIdArrayL" );
-    }
-
-// ---------------------------------------------------------
-// TSortSnapUtils::GetSortSnapDataL()
-// ---------------------------------------------------------
-//
-TInt TSortSnapUtils::GetSortSnapData( TUint32 aSnapId, TMpmSnapBuffer& aSnapBuffer )
-    {
-    CLOG_ENTERFN( "TSortSnapUtils::GetSortSnapDataL" );
-    
-    if (iSSUState ==  EUninitialised)
-        {
-        InitDestIdArray();
-        }
-    
-    switch (iSSUState)
-        {
-        case EUsePubSub:
-            {
-            CLOG_WRITE( "Using P&S " );
-            TMpmSnapPubSubFormat snapData;
-            TPtr8 e( reinterpret_cast< TUint8* >( &snapData ), 
-            sizeof( snapData ) );
-            // initialize snap to invalid value
-            snapData.iSnap = (TUint32) KErrNotFound;
-            for ( TInt i = 0 ; i < iSnapCount; i++ )
-                {
-                if ( aSnapId == iSnapIdArray[i] )
-                    {
-                    
-                    TInt err = RProperty::Get( KMPMSortSnapCategory, 
-                                               i, 
-                                               e );
-                    CLOG_WRITEF( _L( "RProperty::Get returned: %d" ), err );
-
-                    if (err == KErrNone)                            
-                        {
-                        if ( aSnapId == snapData.iSnap )
-                            {
-                            aSnapBuffer = snapData.iSortedIaps;
-                            
-                            CLOG_WRITEF( _L( "Found: Snap id: %d" ), snapData.iSnap );
-                            CLOG_WRITEF( _L( "Iap count: %d" ), snapData.iSortedIaps.iCount );
-                            
-                            CLOG_LEAVEFN( "TSortSnapUtils::GetSortSnapDataL" );
-                            return KErrNone;
-                            }
-                        }
-                    else
-                        {
-                        CLOG_LEAVEFN( "TSortSnapUtils::GetSortSnapDataL" );
-                        return err;
-                        }
-                    }
-                }
-            break;    
-            }
-        case EUseMPM:
-            {
-            CLOG_WRITE( "Using MPM " );
-            TInt errConnect = iMPM.Connect();
-            CLOG_WRITEF( _L( "errConnect = %d" ), errConnect );
-            if ( errConnect == KErrNone )
-                {
-                TInt err = iMPM.SortSNAP( aSnapId, aSnapBuffer ); 
-                iMPM.Close();
-                CLOG_LEAVEFN( "TSortSnapUtils::GetSortSnapDataL" );
-                return err;       
-                }
-            else
-                {
-                CLOG_LEAVEFN( "TSortSnapUtils::GetSortSnapDataL" );
-                return errConnect;
-                }
-            }
-        case EUninitialised:
-        default:
-            {
-            //should not ever happen, as we initialise at the beginning of the 
-            // function            
-            CLOG_LEAVEFN( "TSortSnapUtils::GetSortSnapDataL" );
-            return KErrNotReady;
-            }
-        }
-    return KErrNone;
-    }
-
--- a/connectionutilities/ConnectionDialogs/ecomsrc/connectiondialogswrapper.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/ecomsrc/connectiondialogswrapper.cpp	Mon May 03 12:53:07 2010 +0300
@@ -183,21 +183,6 @@
                                             KUidEasyWapiDlg,
                                             KMyPriority ) );
 
-    subjects->AppendL( new( ELeave ) CAknNotifierWrapperLight( *master,
-                                            KUidNoWLANNetworksAvailableNote,
-                                            KUidNoWLANNetworksAvailableNote,
-                                            KMyPriority ) );   
-
-    subjects->AppendL( new( ELeave ) CAknNotifierWrapperLight( *master,
-                                            KUidConnectingViaDiscreetPopup,
-                                            KUidConnectingViaDiscreetPopup,
-                                            KMyPriority ) );
-
-    subjects->AppendL( new( ELeave ) CAknNotifierWrapperLight( *master,
-                                            KUidConnectionErrorDiscreetPopup,
-                                            KUidConnectionErrorDiscreetPopup,
-                                            KMyPriority ) );                                                                                           
-                                            
     CleanupStack::Pop();    // array cleanup
     return( subjects );
     }
--- a/connectionutilities/ConnectionDialogs/group/CConnDlgClient.mmp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/group/CConnDlgClient.mmp	Mon May 03 12:53:07 2010 +0300
@@ -31,7 +31,6 @@
 
 SOURCEPATH  ../cconndlg/clientsrc
 SOURCE GenConAgentDialogServer.cpp
-SOURCE ActiveLogin.cpp
 
 USERINCLUDE     ../cconndlg/inc ../cconndlg/clientinc
 
--- a/connectionutilities/ConnectionDialogs/group/CConnDlgPlugin.mmp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/group/CConnDlgPlugin.mmp	Mon May 03 12:53:07 2010 +0300
@@ -44,23 +44,8 @@
 SYSTEMINCLUDE   /epoc32/include/uikon
 
 
-START RESOURCE ../cconndlg/data/CConnDlgPlugin.rss
-HEADER
-TARGETPATH RESOURCE_FILES_DIR
-LANGUAGE_IDS
-END  // RESOURCE
-
-
 SOURCEPATH  ../cconndlg/src
-SOURCE  ConnDlgPlugin.cpp IAPDialog.cpp  AuthenticationDialog.cpp
-SOURCE  ReconnectDialog.cpp NewIapDialog.cpp QosDialog.cpp
-SOURCE  ActiveIapPlugin.cpp
-SOURCE  ActiveBase.cpp
-SOURCE  SelectConnectionDialog.cpp
-SOURCE  ActiveSelectConnectionPlugin.cpp
-SOURCE  SelectExplicitDialog.cpp
-SOURCE  ActiveSelectExplicit.cpp
-SOURCE  sortsnaputils.cpp
+SOURCE  ConnDlgPlugin.cpp
 
 SOURCEPATH  ../src
 SOURCE  ConnectionInfo.cpp ConnectionInfoKey.cpp ConnectionInfoArray.cpp ExpiryTimer.cpp
@@ -89,9 +74,10 @@
 
 
 #ifdef WINSCW
-    DEFFILE ../cconndlg/BWinsCw/CConnDlgPlugin.DEF
+DEFFILE ../cconndlg/BWinsCw/CConnDlgPlugin.DEF
 #else
-    DEFFILE ../cconndlg/EABI/CCONNDLGPLUGIN.DEF
+DEFFILE ../cconndlg/EABI/CCONNDLGPLUGIN.DEF
 #endif
 
 // End of File
+
--- a/connectionutilities/ConnectionDialogs/group/ConnUiUtilsNotif.mmp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/group/ConnUiUtilsNotif.mmp	Mon May 03 12:53:07 2010 +0300
@@ -65,18 +65,10 @@
 SOURCE      WLANNetworkUnavailableNoteNotif.cpp
 SOURCE      ActiveWLANNetworkUnavailableNote.cpp
 
-SOURCE      ActiveConnectViaNote.cpp
-SOURCE      ConnectViaNoteNotif.cpp
 SOURCE      NoteDlgSuppressingSwitch.cpp
 SOURCE      wlanpowersavetest.cpp
 SOURCE      wlanpowersavetestnotif.cpp
 SOURCE      easywapidlgnotif.cpp
-SOURCE      nowlannetworksavailablenotif.cpp
-SOURCE      connectingviadiscreetpopup.cpp
-SOURCE      connectingviadiscreetpopupnotif.cpp
-SOURCE      connectionerrordiscreetpopup.cpp
-SOURCE      connectionerrordiscreetpopupnotif.cpp
-SOURCE      nowlansdiscreetpopup.cpp
 SOURCE      cellulardataconfirmation.cpp 
 SOURCE      devicedialogobserver.cpp
 
@@ -99,10 +91,13 @@
 
 SYSTEMINCLUDE   /epoc32/include/libc 
 SYSTEMINCLUDE   /epoc32/include/uikon
+SYSTEMINCLUDE   /epoc32/include/mw/hb/hbcore
+SYSTEMINCLUDE   /epoc32/include/mw/hb/hbwidgets
+
 
 LIBRARY     euser.lib eikdlg.lib eiksrv.lib cone.lib eikcore.lib eikcoctl.lib
 LIBRARY     bafl.lib avkon.lib AknSkins.lib Ecom.lib 
-LIBRARY     eiksrvui.lib
+LIBRARY		eiksrvui.lib
 LIBRARY     commonengine.lib
 LIBRARY     AKNNOTIFY.LIB
 LIBRARY     AknIcon.lib
@@ -114,13 +109,13 @@
 LIBRARY     charconv.lib
 
 LIBRARY     commdb.lib
-LIBRARY     cmmanager.lib
+LIBRARY		  cmmanager.lib
 LIBRARY     etel3rdparty.lib 
 LIBRARY     HbCore.lib
 LIBRARY     HbWidgets.lib
 
 #if defined(ARMCC)
-    DEFFILE ../ConnectionUiUtilities/EABI/ConnUiUtilsNotif.DEF
+DEFFILE ../ConnectionUiUtilities/EABI/ConnUiUtilsNotif.DEF
 #elif defined( WINSCW )
     DEFFILE ../ConnectionUiUtilities/BWinsCw/ConnUiUtilsNotif.DEF
 #endif
--- a/connectionutilities/ConnectionDialogs/group/ConnectionUiUtilities.mmp	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/group/ConnectionUiUtilities.mmp	Mon May 03 12:53:07 2010 +0300
@@ -43,7 +43,7 @@
 SOURCE ChangeConnectionDlg.cpp
 SOURCE ActiveCChangeConnectionDlg.cpp
 SOURCE ActiveWrapper.cpp
-
+SOURCE connectionstatuspopup.cpp
 
 SOURCEPATH ../src
 SOURCE ConnectionInfo.cpp
@@ -52,11 +52,11 @@
 SOURCE ActiveIAPListing.cpp
 SOURCE ExpiryTimer.cpp
 
-
 USERINCLUDE	    ../ConnectionUiUtilities/inc
 
 // Component specific internal headers 
 USERINCLUDE			../inc
+USERINCLUDE         ../traces
 
 // ADO specific internal headers 
 SYSTEMINCLUDE		../../../inc
@@ -64,23 +64,31 @@
 //Macro to /epoc32 headers
 MW_LAYER_SYSTEMINCLUDE
 
+// Hb orbit headers
+SYSTEMINCLUDE /epoc32/include/mw/hb/hbcore
+SYSTEMINCLUDE /epoc32/include/mw/hb/hbwidgets
+
 LIBRARY euser.lib cone.lib eikcore.lib eikcoctl.lib avkon.lib eikdlg.lib 
 LIBRARY bafl.lib commonengine.lib commdb.lib AknSkins.lib FeatMgr.lib 
 LIBRARY AknNotify.lib
 LIBRARY Ecom.lib
 LIBRARY	centralrepository.lib 
 LIBRARY	aknlayout.lib 
+LIBRARY hbcore.lib
+LIBRARY hbwidgets.lib
+LIBRARY cmmanager.lib
+LIBRARY efsrv.lib
 
 DEBUGLIBRARY flogger.lib
 
 
 #if defined( ARMCC )
 
-    DEFFILE ../ConnectionUiUtilities/EABI/ConnectionUiUtilities_PROT.def
+DEFFILE ../ConnectionUiUtilities/EABI/ConnectionUiUtilities_PROT.def
 
 #elif defined( WINSCW )
 
-    DEFFILE ../ConnectionUiUtilities/BWinsCw/ConnectionUiUtilities_PROT.def
+DEFFILE ../ConnectionUiUtilities/BWinsCw/ConnectionUiUtilities_PROT.def
 
 #endif
 
--- a/connectionutilities/ConnectionDialogs/inc/ConnectionDialogsUidDefs.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/connectionutilities/ConnectionDialogs/inc/ConnectionDialogsUidDefs.h	Mon May 03 12:53:07 2010 +0300
@@ -58,10 +58,12 @@
 const TUid KUidDisconnectDlg = { 0x101F85F1 };
 
 // ID of Connecting via discreet popup
-const TUid KUidConnectingViaDiscreetPopup = { 0x20026FC5 };
+// Deprecated. Left here for documentation purpose.
+// const TUid KUidConnectingViaDiscreetPopup = { 0x20026FC5 };
 
 // ID of Connection error discreet popup
-const TUid KUidConnectionErrorDiscreetPopup = { 0x20026FEF };
+// Deprecated. Left here for documentation purpose.
+// const TUid KUidConnectionErrorDiscreetPopup = { 0x20026FEF };
 
 // WLAN uids
 
@@ -97,7 +99,8 @@
 const TUid KUidEasyWapiDlg = { 0x101F6D51 };
 
 // ID of No WLAN networks are available at the moment -note
-const TUid KUidNoWLANNetworksAvailableNote = { 0x20016A83 };
+// Deprecated. Left here for documentation purpose.
+// const TUid KUidNoWLANNetworksAvailableNote = { 0x20016A83 };
 
 #endif  // __CONNECTIONDIALOGSUIDDEFS_H__
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectionutilities/ConnectionDialogs/traces/OstTraceDefinitions.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,21 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+#include <opensystemtrace.h>
+#endif
--- a/dbcreator/commsdatcreator/Inc/cdcprocessorglobal.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/dbcreator/commsdatcreator/Inc/cdcprocessorglobal.h	Mon May 03 12:53:07 2010 +0300
@@ -66,7 +66,7 @@
                                 RPointerArray< HBufC >& aDefCon );
 
         // Stores the default connection values
-        void SetDefaultConnectionL();
+     //   void SetDefaultConnectionL();
         
         /**
         * Destructor.
--- a/dbcreator/commsdatcreator/Src/cdccommsdatcreator.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/dbcreator/commsdatcreator/Src/cdccommsdatcreator.cpp	Mon May 03 12:53:07 2010 +0300
@@ -350,8 +350,8 @@
     SetLingerSettingsL( iLingerSettings );
 
     // Sets the default connection    
-    SetDefaultConnectionL( iDefCon );
-
+//    SetDefaultConnectionL( iDefCon );
+    
     // Logs IAPs in UDEB mode
     #ifdef _DEBUG
     LogIapIdsL();
@@ -587,7 +587,7 @@
 // CCdcCommsDatCreator::ProcessDNL
 // ---------------------------------------------------------
 //
-void CCdcCommsDatCreator::SetDefaultConnectionL( RPointerArray< HBufC >& aDefCon )
+/*void CCdcCommsDatCreator::SetDefaultConnectionL( RPointerArray< HBufC >& aDefCon )
     {
     // Sets the default connection    
     if( aDefCon.Count() > 0 )
@@ -605,12 +605,12 @@
         
         CleanupStack::PushL( glb );
         glb->SetDefaultConnectionL();
-                
+        
         CleanupStack::PopAndDestroy( glb );
 
         CLOG_WRITE( "--------------------------------------\n" )
         }
-    }
+    }*/
 
 // ---------------------------------------------------------
 // CCdcCommsDatCreator::SetUnderlyingIapL
--- a/dbcreator/commsdatcreator/Src/cdcprocessordn.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/dbcreator/commsdatcreator/Src/cdcprocessordn.cpp	Mon May 03 12:53:07 2010 +0300
@@ -187,17 +187,18 @@
                         }
                     }
                 break;
-                case EDN_Icon:
-                    {
-                    TPtrC16 iconPtr = ptrTag->Right( ptrTag->Length() );
-                    TLex16 lex( iconPtr );
-                    TUint32 icon( 0 );
-                    if ( lex.Val( icon, EDecimal ) == KErrNone )
-                        {
-                        iDestination.SetIconL( icon );
-                        }
-                    }
-                break;
+                // SetIconL API removed from new cmmgr implementation
+                //case EDN_Icon:
+                //    {
+                //    TPtrC16 iconPtr = ptrTag->Right( ptrTag->Length() );
+                //    TLex16 lex( iconPtr );
+                //    TUint32 icon( 0 );
+                //    if ( lex.Val( icon, EDecimal ) == KErrNone )
+                //        {
+                //        iDestination.SetIconL( icon );
+                //        }
+                //    }
+                //break;
                 case EDN_Metadata:
                     {
                     if( !ptrTag->Compare( KPurposeUnknown ) )
--- a/dbcreator/commsdatcreator/Src/cdcprocessorglobal.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ b/dbcreator/commsdatcreator/Src/cdcprocessorglobal.cpp	Mon May 03 12:53:07 2010 +0300
@@ -614,7 +614,7 @@
 // CProcessorGlobal::SetDefaultConnectionL
 // ---------------------------------------------------------
 //
-void CProcessorGlobal::SetDefaultConnectionL()
+/*void CProcessorGlobal::SetDefaultConnectionL()
     {
     if( iDefCon->Count() > 0 )
         {
@@ -624,7 +624,7 @@
         {
         SetDefaultConnectionNameL( (*iDefCon)[1] );
         }
-    }
+    }*/
 
 // ---------------------------------------------------------
 // CProcessorGlobal::SetDefaultConnectionTypeL
@@ -759,14 +759,14 @@
 //  CProcessorGlobal::SetDefConnRecordL()
 //-----------------------------------------------------------------------------
 //
-void CProcessorGlobal::SetDefConnRecordL( const TInt aId )
+void CProcessorGlobal::SetDefConnRecordL( const TInt /*aId*/ )
     {
 
-    TCmDefConnValue value;
+/*    TCmDefConnValue value;
     value.iType = iDefaultConnectionType;
-    value.iId = aId;
+    value.iId = aId;*/
     
-    iCmManager->WriteDefConnL( value );
+//    iCmManager->WriteDefConnL( value );
     
     // It gets true if the defconn was set correctly
     iDefaultConnectionSet = ETrue;
--- a/dbcreator/inc/cdccommsdatcreator.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/dbcreator/inc/cdccommsdatcreator.h	Mon May 03 12:53:07 2010 +0300
@@ -96,7 +96,7 @@
 
         void SetUnderlyingIapL( RPointerArray< HBufC >& aUnderLying );
 
-        void SetDefaultConnectionL( RPointerArray< HBufC >& aDefCon );
+//        void SetDefaultConnectionL( RPointerArray< HBufC >& aDefCon );
         
         void SetWlanSecurityL( RPointerArray< HBufC >& aWlanSecurity );
         
--- a/ipcm_plat/bearer_settings_plugin_api/group/bld.inf	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_plat/bearer_settings_plugin_api/group/bld.inf	Mon May 03 12:53:07 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006-2010 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"
@@ -11,8 +11,8 @@
 *
 * Contributors:
 *
-* Description:  File that exports the files belonging to 
-:                Bearer Settings Plugin API
+* Description:
+* File that exports the files belonging to Bearer Settings Plugin API.
 *
 */
 
@@ -24,13 +24,13 @@
 
 PRJ_EXPORTS
 
-../inc/cmpbasesettingsdlgip.h     MW_LAYER_PLATFORM_EXPORT_PATH(cmpbasesettingsdlgip.h)
-../inc/cmpluginlanbase.h     MW_LAYER_PLATFORM_EXPORT_PATH(cmpluginlanbase.h)
-../inc/cmpbasesettingsdlgadv.h     MW_LAYER_PLATFORM_EXPORT_PATH(cmpbasesettingsdlgadv.h)
-../inc/cmpluginlandef.h     MW_LAYER_PLATFORM_EXPORT_PATH(cmpluginlandef.h)
-../inc/cmcommonconstants.h     MW_LAYER_PLATFORM_EXPORT_PATH(cmcommonconstants.h)
-../inc/cmpluginbaseeng.h     MW_LAYER_PLATFORM_EXPORT_PATH(cmpluginbaseeng.h)
-../inc/cmpluginbase.h     MW_LAYER_PLATFORM_EXPORT_PATH(cmpluginbase.h)
+../inc/cmpbasesettingsdlgip.h   MW_LAYER_PLATFORM_EXPORT_PATH(cmpbasesettingsdlgip.h)
+../inc/cmpluginlanbase.h        MW_LAYER_PLATFORM_EXPORT_PATH(cmpluginlanbase.h)
+../inc/cmpbasesettingsdlgadv.h  MW_LAYER_PLATFORM_EXPORT_PATH(cmpbasesettingsdlgadv.h)
+../inc/cmpluginlandef.h         MW_LAYER_PLATFORM_EXPORT_PATH(cmpluginlandef.h)
+../inc/cmcommonconstants.h      MW_LAYER_PLATFORM_EXPORT_PATH(cmcommonconstants.h)
+../inc/cmpluginbaseeng.h        MW_LAYER_PLATFORM_EXPORT_PATH(cmpluginbaseeng.h)
+../inc/cmpluginbase.h           MW_LAYER_PLATFORM_EXPORT_PATH(cmpluginbase.h)
 ../inc/cmpluginlanbasedef.h     MW_LAYER_PLATFORM_EXPORT_PATH(cmpluginlanbasedef.h)
 ../inc/cmpbasesettingsdlg.h     MW_LAYER_PLATFORM_EXPORT_PATH(cmpbasesettingsdlg.h)
-../inc/mcmdexec.h     MW_LAYER_PLATFORM_EXPORT_PATH(mcmdexec.h)
+../inc/mcmdexec.h               MW_LAYER_PLATFORM_EXPORT_PATH(mcmdexec.h)
--- a/ipcm_plat/bearer_settings_plugin_api/inc/cmpluginbase.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_plat/bearer_settings_plugin_api/inc/cmpluginbase.h	Mon May 03 12:53:07 2010 +0300
@@ -241,30 +241,7 @@
 
         IMPORT_C CommsDat::CMDBSession& Session() const;
 
-        /**
-        * Launches the settings dialog of the plugin
-        *
-        * @since S60 3.2
-        * @return soft key selection
-        */
-        TInt RunSettingsL();
-
-        /**
-        * Called on a newly created connection method to initialize it properly
-        * with user interaction (e.g. APN setting for a packet data-, WEP-key
-        * setting for a WLAN connection method, etc.).
-        * Note: each plug-in should set its name (i.e. ECmName) in this
-        * function call.
-        *
-        * @since S60 3.2
-        * @param aManuallyConfigure let's the plugin know if a plugin should 
-        *                           be configured manually or automatically
-        * @return ETrue if initialization was successful and wasn't cancelled.
-        * EFalse, if initialization process was cancelled (i.e. user pressed
-        * Cancel button).
-        */
-        TBool InitializeWithUiL( TBool aManuallyConfigure );
-        
+       
         /**
         * Checks if the plug-in can handle the given AP.
         * @param aIapId IAPId of the AP to be checked
--- a/ipcm_plat/bearer_settings_plugin_api/inc/cmpluginbaseeng.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_plat/bearer_settings_plugin_api/inc/cmpluginbaseeng.h	Mon May 03 12:53:07 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006-2010 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"
@@ -11,7 +11,8 @@
 *
 * Contributors:
 *
-* Description:  IF implementation class for connection method plugins.
+* Description:
+* IF implementation class for connection method plugins.
 *
 */
 
@@ -23,14 +24,28 @@
 
 #include <e32std.h>
 #include <e32base.h>
-#include <ecom/ecom.h>        // For REComSession
+#include <ecom/ecom.h>
 #include <metadatabase.h>
-#include <CommsDatTypesV1_1.h>
+#include <commsdattypesv1_1.h>
+#include <cmmanagerdef.h>
+
 
+/**
+ * Macro for getting element id from Iap Id.
+ * @param iapRecId Record id of an Iap.
+ */
 #define IAP_ELEMENT_ID( iapRecId )  (KCDTIdIAPRecord | \
                                      KCDMaskShowFieldType | \
                                      (iapRecId << 8))
 
+/**
+ * Macros for getting/setting diffrerent type of values from/to the records(CommsDat)
+ * @param record Pointer to the record which has the field requested/to be set.
+ * @param fieldId Id of the field to get/set the value.
+ * @param ***Val Value to be set.
+ * @return Returns the requested value in get operation.
+ */
+
 #define QUERY_HBUFC_FIELD( record, fieldId ) *STATIC_CAST(CommsDat::CMDBField<HBufC*>*, record->GetFieldByIdL( fieldId ))
 #define QUERY_UINT32_FIELD( record, fieldId ) *STATIC_CAST(CommsDat::CMDBField<TUint32>*, record->GetFieldByIdL( fieldId ))
 #define QUERY_INT_FIELD( record, fieldId ) *STATIC_CAST(CommsDat::CMDBField<TInt>*, record->GetFieldByIdL( fieldId ))
@@ -41,11 +56,23 @@
 
 // CONSTANTS
 const TInt32 KExtensionBaseLevel = 1;
-const TUint32 KDefAttrsArrayGranSize = 32;
-const TUint32 KMaxProxyServerNameLength = 1000;
+const TUint32 KMaxProxyServerNameLength = 1024;
 
 const TUint32 KDummyBearerType = 1;
 
+/**
+ * Record indexes for generic iap records in the Client instance table.
+ */
+const TInt KIapRecordIndex = 0;
+const TInt KServiceRecordIndex = 1;
+const TInt KNetworkRecordIndex = 2;
+const TInt KWAPAPRecordIndex = 3;
+const TInt KWAPBearerRecordIndex = 4;
+const TInt KMetaDataRecordIndex = 5;
+const TInt KLocationRecordIndex = 6;
+const TInt KProxyRecordIndex = 7;
+
+
 // DATA TYPES
 typedef enum
     {
@@ -76,734 +103,664 @@
                                                 */
     };
 
-class CCmPluginBaseEng;
-class CCmPluginBase;
-
 /**
-* Validation function called before data is stored.
-* @param aThis 'this' pointer of the plugin instance
-* @param aAttribute attribute to be set
-* @param aValue value to be checked
-* @return ETrue if value is stored.
-*/
-typedef TBool (*TValidationFunctionL)( CCmPluginBaseEng* aThis,
-                                      TUint32 aAttribute,
-                                      const TAny* aValue );
-
-/**
-* Structure of conversion table between CM attributes and
-* CommsDat ids. The first element must indicate the 
-* range of the conversion table. iAttribId is the lowest Id, 
-* iCommsDatId is the highest one. The last element is a
-* terminator. e.g. Proxy table:
-* static const TCmAttribConvTable SProxyConvTbl[] = 
-*   {
-        { ECMProxyUsageEnabled, ECMProxyRangeMax, NULL }
-        { ECMProxyUseProxyServer, KCDTIdUseProxyServer, NULL },
-        { ECmProxyPortNumber, KCDTIdPortNumber, &CheckPortNumberValidityL },
-        ...
-        { 0, 0 }
-    }
-*/
-typedef struct
-    {
-    TInt    iAttribId;
-    TInt    iCommsDatId;
-    TValidationFunctionL iValidFuncL;
-    TInt    iTitleId;
-    TInt    iMaxLength;
-    TUint32 iAttribFlags;   // see TCmConvAttribFlags
-    TInt    iDefSettingResId;
-    TInt    iEditorResId;
-    TInt    iDefValueResId;
-    TAny*   iNotUsed1;
-    TAny*   iNotUsed2;
-    }TCmAttribConvTable;
-    
-enum TCmConvAttribFlags
-    {
-    EConvNoZeroLength   = 0x00000001,   // Zero length NOT acceptable
-    EConvCompulsory     = 0x00000002,
-    EConv8Bits          = 0x00000004,
-    EConvReadOnly       = 0x00000008,
-    EConvNumber         = 0x00000010,
-    EConvIPv4           = 0x00000020,
-    EConvIPv6           = 0x00000040,
-    EConvPassword       = 0x00000080,
-    };
-
-typedef struct
-    {
-    CommsDat::CCDRecordBase*      *iRecord;
-    TBool*              iEnabled;
-    const TCmAttribConvTable* iConvTable;
-    }TCmAttrConvArrayItem;
-
-typedef struct
-    {
-    TInt                iAttribId;
-    TInt                iCommonAttribId;
-    }TCmCommonAttrConvArrayItem;
-    
+ * Flags for Iap metadata to indicate:
+ * EMetaHighlight: If it's set it indicates that a connection method is
+ *                 highlighted in Agent dialog. Only one connection 
+ *                 method can have this flag set.
+ * EMetaHiddenAgent: If it's set it indicates that an connection method is 
+ *                   hidden connection method in Agent dialog.
+ */
 enum TCmMetaDataFields
     {
     EMetaHighlight    = 0x00000001,
     EMetaHiddenAgent  = 0x00000002
     };
-    
-// FUNCTION PROTOTYPES
-
-/**
-* TValidationFunctionL functions.
-*/
-
-/**
-* Function should be called if client tries to set attribute that is read-only
-* @param aThis 'this' pointer of the plugin instance
-* @param aAttribute not used
-* @param aValue not used
-* @leave KErrNotSupported in every cases
-*/
-IMPORT_C TBool ReadOnlyAttributeL( CCmPluginBaseEng* aThis, 
-                                  TUint32 aAttribute, 
-                                  const TAny* aValue );
-
-/**
-* Function to check if the passed IPv4 address is valid.
-* @param aThis 'this' pointer of the plugin instance
-* @param aAttribute attribute client wants to set
-* @param aValue TDesC* IPv4 address buffer to be checked
-*/
-IMPORT_C TBool CheckIPv4ValidityL( CCmPluginBaseEng* aThis, 
-                                  TUint32 aAttribute, 
-                                  const TAny* aValue );
-
-/**
-* Function to check if the passed IPv6 address is valid.
-* @param aThis 'this' pointer of the plugin instance
-* @param aAttribute attribute client wants to set
-* @param aValue TDesC* IPv6 address buffer to be checked
-*/
-IMPORT_C TBool CheckIPv6ValidityL( CCmPluginBaseEng* aThis, 
-                                  TUint32 aAttribute, 
-                                  const TAny* aValue );
-
-/**
-* Function to check if the passed port number is valid.
-* @param aThis 'this' pointer of the plugin instance
-* @param aAttribute attribute client wants to set
-* @param aValue TUint32 the port number to be check
-*/
-IMPORT_C TBool CheckPortNumberValidityL( CCmPluginBaseEng* aThis, 
-                                        TUint32 aAttribute, 
-                                        const TAny* aValue );
-
-/**
-* Function to check if the passed record is valid.
-* @param aThis 'this' pointer of the plugin instance
-* @param aAttribute attribute client wants to set
-* @param aValue TUint32 the record id to be checked
-*/
-IMPORT_C TBool CheckRecordIdValidityL( CCmPluginBaseEng* aThis, 
-                                      TUint32 aAttribute, 
-                                      const TAny* aValue );
-
-/**
-* Function to check if the passed WAPWspOption is valid.
-* @param aThis 'this' pointer of the plugin instance
-* @param aAttribute attribute client wants to set
-* @param TUint32 the WPSOption to be checked
-*/
-IMPORT_C TBool CheckWAPWspOptionValidityL( CCmPluginBaseEng* aThis, 
-                                          TUint32 aAttribute, 
-                                          const TAny* aValue );
-
-/**
-* @param aThis 'this' pointer of the plugin instance
-* @param aAttribute attribute client wants to set
-* @param TUint32 the WPSOption to be checked
-*/
-IMPORT_C TBool SetProxyServerNameL( CCmPluginBaseEng* aThis, 
-                                   TUint32 aAttribute, 
-                                   const TAny* aValue );
-                          
-/**
-* Miscellaneous utility functions.
-*/
-
-/**
-* Check if the passed IP address is '0.0.0.0' or empty string
-* @param aIpAddress IP address to be checked
-*/
-IMPORT_C TBool IsUnspecifiedIPv4Address( const TDesC& aIpv4Address );
-
-/**
-* Check if the passed IP address is one of these:
-* - empty string    -   
-* - '0:0:0:0:0:0:0:0' 
-* - 'fec0:000:0000:ffff::1'
-* - 'fec0:000:0000:ffff::2'
-* @param aIpAddress IP address to be checked
-*/
-IMPORT_C CMManager::TIPv6Types ClassifyIPv6Address( const TDesC& aIpv6Address );
 
 // FORWARD DECLARATIONS
-class CCmDestinationImpl;
-class CCmManagerImpl;
+class CCmPluginBaseEng;
 class CCDIAPMetadataRecord;
-class CCmTransactionHandler;
-class CCmPluginBasePrivate;
         
 // CLASS DECLARATION
+/**
+ * Initialisation instance for plugin creation. Used in plugin
+ * construction phase.
+ */
 NONSHARABLE_CLASS(TCmPluginInitParam)
     {
     public:
-    
-        TCmPluginInitParam( CCmManagerImpl& aCmMgr );
+        /**
+         * Constructor.
+         * @param aSessionRef Reference for open Session handle to CommsDat.
+         */
+        IMPORT_C TCmPluginInitParam( CommsDat::CMDBSession& aSessionRef );
         
     public:
-    
-        CCmManagerImpl&     iCmMgr;
-        TUint32             iParentDest;// Parent destination
+        /**
+         * Reference to CommsDat session handle.
+         */
+        CommsDat::CMDBSession& iSessionRef;
+            
+        /**
+         * Reserved for future.
+         */
         TAny*               iNotused1;
         TAny*               iNotused2;
     };
 
+// CLASS DECLARATION
 /**
- *  CCmPluginBaseEng is base class for every connection method plugin
+ * This defines the data object used for moving data between
+ * cmm server and plugins.
+ */
+NONSHARABLE_CLASS( CCmClientPluginInstance ): public CBase
+    {
+    public:
+        /**
+         * Two-phase constructor. Returns pointer to the new
+         * CCmClientPluginInstance object.
+         */
+        IMPORT_C static CCmClientPluginInstance* NewL();
+
+        /**
+         * Two-phase constructor. Returns pointer to the new
+         * CCmClientPluginInstance object.
+         */
+        IMPORT_C static CCmClientPluginInstance* NewLC();
+        
+        /**
+         * Destructor
+         */
+        IMPORT_C ~CCmClientPluginInstance();
+
+    private:
+        /**
+         * Default constructor.
+         */
+        CCmClientPluginInstance();
+        
+        /**
+         * Second phase constructor.
+         */
+        void ConstructL();
+
+    public:
+        /**
+         * Pointer array for generic record pointers. Those are copies
+         * from CommsDat versions for the client usage. 
+         */
+        RPointerArray<CommsDat::CCDRecordBase> iGenRecordArray;
+
+        /**
+         * Pointer array for bearer specific record pointers. Those are copies
+         * from CommsDat versions for the client usage. These are asked from
+         * the different plugins.
+         */
+        RPointerArray<CommsDat::CCDRecordBase> iBearerSpecRecordArray;
+        
+        /** Naming way of the CM. e.g. ENamingUnique */
+        CMManager::TNamingMethod               iNamingMethod;
+        
+        /** Boolean to keep the information if location is enabled */
+        TBool                                  iLocationEnabled;
+        
+        /** Iap Record id of this Connection Method */
+        TUint32                                iIapId;
+    };
+
+/**
+ *  CCmPluginBaseEng is base class for every connection method plugin.
+ *  It handles all the generic iap informations e.g. record handling
+ *  and attribute reaquests to generic records.
  *
- *  @lib cmmanager.lib
- *  @since S60 v3.2
+ *  @lib cmmpluginbase.lib
+ *  @since S60 v5.2
  */
 class CCmPluginBaseEng : public CBase
     {
     public:
-    
-        /** Destructor. */
-        IMPORT_C virtual ~CCmPluginBaseEng();
+       /** 
+        * Destructor.
+        */
+       IMPORT_C virtual ~CCmPluginBaseEng();
         
         /**
-        * Create a new instance of the given bearer type plugin.
-        * Used from framework to avoid using slow ECom framework.
-        * @param aInitParam initialization data
-        */
+         * Create a new instance of the given bearer type plugin.
+         * Used from CMM server to avoid using slow ECom framework.
+         * @param aInitParam initialization data
+         * @return Returns CCmPluginBaseEng type pointer which represents pure
+         * bearer instance for the CMM server.
+         */
         virtual CCmPluginBaseEng* 
                 CreateInstanceL( TCmPluginInitParam& aInitParam ) const = 0;
-        
-    public: // Attribute handlers
-    
-        /**
-        * Gets the value for a TInt attribute.
-        * @param aAttribute Identifies the attribute to be retrived.
-        * @return contains the requested TInt attribute.
-        */
-        IMPORT_C virtual TUint32 
-                        GetIntAttributeL( const TUint32 aAttribute ) const;
 
         /**
-        * Gets the value for a TBool attribute.
-        * @param aAttribute Identifies the attribute to be retrived.
-        * @return contains the requested TBool attribute.
-        */
-        IMPORT_C virtual TBool 
-                        GetBoolAttributeL( const TUint32 aAttribute ) const;
+         * Following GetBearerInfoXXXL methods return the values of the 
+         * requested attributes. These values are bearerspecific so they
+         * don't vary between CMs with same bearer type.
+         * @param aAttribute An attribute identifier.
+         * @return Returns the value requested. If not found leaves with
+         * KErrNotFound error code. 
+         */
+        IMPORT_C virtual TUint32 GetBearerInfoIntL( 
+                                                TUint32 aAttribute ) const = 0;
+        
+        IMPORT_C virtual TBool GetBearerInfoBoolL( 
+                                                TUint32 aAttribute ) const = 0;
 
-        /**
-        * Gets the value for a String16 attribute.
-        * @param aAttribute Identifies the attribute to be retrived.
-        * @return copy of the requested attribute. Ownership is passed.
-        */
-        IMPORT_C virtual HBufC* 
-                        GetStringAttributeL( const TUint32 aAttribute ) const;
+        IMPORT_C virtual HBufC* GetBearerInfoStringL( 
+                                                TUint32 aAttribute ) const = 0;
         
-        /**
-        * Gets the value for a String8 attribute.
-        * @param aAttribute Identifies the attribute to be retrived.
-        * @return copy of the requested attribute. Ownership is passed.
-        */
-        IMPORT_C virtual HBufC8* 
-                        GetString8AttributeL( const TUint32 aAttribute ) const;
+        IMPORT_C virtual HBufC8* GetBearerInfoString8L( 
+                                                TUint32 aAttribute ) const = 0;
 
         /**
-        * Sets the value for a TInt attribute.
-        * @param aAttribute Identifies the attribute to be set.
-        * @param aValue The value to be set.
-        * @return None.
-        */
-        IMPORT_C virtual void SetIntAttributeL( 
-                             const TUint32 aAttribute, TUint32 aValue );
+         * Checks if the plug-in can handle the Connection Method identified
+         * with parameter aIapId.
+         * @param aIapId IAPId of the AP to be checked
+         * @return ETrue if plug-in can handle the IAP, otherwise EFalse.
+         */
+        virtual TBool CanHandleIapIdL( TUint32 aIapId ) const = 0;
+         
+        /**
+         * Checks if the plug-in can handle the given IAP record.
+         * @param aIapRecord IAP record to be checked
+         * @return ETrue if plug-in can handle the IAP, otherwise EFalse.
+         */
+        virtual TBool CanHandleIapIdL( 
+                 CommsDat::CCDIAPRecord* aIapRecord ) const = 0;
+
+    public: // Client interface
+        /**
+         * Loads all the records belonging to this Connection Method.
+         * @param aIapId Id of the IAP record. Identifies the CM
+         * related records to load.
+         */
+        IMPORT_C void LoadL( TUint32 aIapId );
 
         /**
-        * Sets the value for a TBool attribute.
-        * @param aAttribute Identifies the attribute to be set.
-        * @param aValue The value to be set.
-        * @return None.
-        */
-        IMPORT_C virtual void SetBoolAttributeL( 
-                             const TUint32 aAttribute, TBool aValue );
+         * Resets and loads all the records belonging to this Connection Method.
+         */
+        IMPORT_C void ReLoadL();
 
         /**
-        * Sets the value for a String16 attribute.
-        * @param aAttribute Identifies the attribute to be set.
-        * @param aValue The value to be set.
-        * @return None.
-        */
-        IMPORT_C virtual void SetStringAttributeL( 
-                             const TUint32 aAttribute, const TDesC16& aValue );
+         * Creates a new Connection Method in memory. Call UpdateL() to store 
+         * it in CommsDat. No CommsDat transaction operation is needed for this.
+         * @param aCmId Predefined iapid to be used when saving to CommsDat. 
+         *       0 means that CommsDat gives the id.
+         */
+        IMPORT_C void CreateNewL( TUint32 aCmId );
+         
+        /**
+         * Creates a copy of an existing Connection Method.
+         * @param aClientPluginInstance The source data to create the copy from.
+         * @return CCmPluginBaseEng type pointer to an object which represents
+         * the new plugin to the CMM server.
+         */
+        IMPORT_C CCmPluginBaseEng* CreateCopyL( 
+                         CCmClientPluginInstance* aClientPluginInstance );
 
         /**
-        * Sets the value for a String8 attribute.
-        * @param aAttribute Identifies the attribute to be set.
-        * @param aValue The value to be set.
-        * @return None.
-        */
-        IMPORT_C virtual void SetString8AttributeL( 
-                             const TUint32 aAttribute, const TDesC8& aValue );
+         * Updates all records to commsdat. Data is copied from the client's copy
+         * to the original data.
+         * This method does not open/rollback/commit transaction to CommsDat. 
+         * Caller must handle transactions.
+         */
+        IMPORT_C virtual void UpdateL( 
+                CCmClientPluginInstance* aClientPluginInstance );
+
+        /*
+         * Deletes all the records of this CM from the database. 
+         * All the preventing conditions must be checked before calling this. 
+         * This method does not open/rollback/commit transaction to CommsDat. 
+         * Caller must handle transactions.
+         */    
+        IMPORT_C virtual void DeleteL();
 
         /**
-        * Restore the original value of the attribute from commsdat field.
-        * Base implementation can be used only with attributes 
-        * stored directly in commsdat.
-        * @param aAttribute attribute to be restored
-        */
-        IMPORT_C virtual void RestoreAttributeL( const TUint32 aAttribute );
-        
-        /**
-        * Returns the CCmDestinationImpl* if this is an 
-        * embedded destination CM. Otherwise returns NULL.
-        * @return embedded destination object or NULL
-        */
-        IMPORT_C virtual CCmDestinationImpl* Destination() const;
+         * Creates a copy of all plugin data( most of them are CommsDat data ) for a client.
+         * @param aClientPluginInstance An object where to copy the data.
+         */
+        IMPORT_C void GetPluginDataL( CCmClientPluginInstance* aClientPluginInstance );
         
         /**
-        * Update or if this is a new CM, creates CM in CommsDat. 
-        * - OpenTransactionLC()
-        * - PrepareToUpdateRecordsL()
-        * - UpdateChargeCardRecordL()
-        * - UpdateServiceRecordL()
-        * - UpdateIAPRecordL()
-        *   - UpdateLocationRecordL()
-        *   - BearerRecordIdLC()
-        *   - UpdateNetworkRecordL()
-        *   - UpdateWapRecordL()
-        *   - UpdateProxyRecordL()
-        *   - UpdateConnPrefSettingL()
-        * - UpdateAdditionalRecordsL()
-        * - CommitTransactionL()
-        * @return None.
-        */        
-        IMPORT_C virtual void UpdateL();     
+         * Following GetXXXXAttributeL methods return the values of the 
+         * requested attributes. Attributes are returned from the client's
+         * copy of the data. These values are CM specific.
+         * @param aAttribute An attribute identifier.
+         * @param aClientPluginInstance Client's copy of the data where
+         * to get the return value.
+         * @return Returns the value requested. If not found leaves with
+         * KErrNotFound error code. 
+         */
+        IMPORT_C TUint32 GetIntAttributeL( 
+                            TUint32 aAttribute, 
+                            CCmClientPluginInstance* aClientPluginInstance );
         
-        /*
-        * Delete from the database if this CM has no more reference
-        * from the DN_IAP table.
-        * - IsMultipleReferencedL()
-        * - OpenTransactionLC()
-        * - PrepareToDeleteL()
-        * - Delete records (in this order)
-        *   - IAP
-        *   - Proxy
-        *   - Service
-        *   - ChargeCard
-        *   - Network
-        *   - Location
-        *   - WapAP
-        *   - WapBearer
-        * - DeleteAdditionalRecordsL()
-        * - CommitTransactionL()
-        * @param aForced forced delete doesn't check referencies
-        * @param aOneRefsAllowed ETrue if one reference from a destination is 
-        *           acceptable to delete this connection method.
-        */    
-        IMPORT_C virtual TBool DeleteL( TBool aForced,
-                                        TBool aOneRefAllowed = ETrue );
+        IMPORT_C TBool GetBoolAttributeL( 
+                            TUint32 aAttribute,
+                            CCmClientPluginInstance* aClientPluginInstance );
+                                         
+        IMPORT_C HBufC* GetStringAttributeL( 
+                            TUint32 aAttribute, 
+                            CCmClientPluginInstance* aClientPluginInstance );
+        
+        IMPORT_C HBufC8* GetString8AttributeL( 
+                            TUint32 aAttribute, 
+                            CCmClientPluginInstance* aClientPluginInstance );
 
         /**
-        * Performs the basic loading of records related
-        * to this connection method:
-        * - OpenTransactionLC();
-        * - PrepareToLoadRecordsL()
-        * - LoadIAPRecordL();
-        *       - load IAP
-        *       - load WAP (AP & IP Bearer)
-        *       - load proxy
-        *       - load charge card
-        *       - load network
-        *       - load location
-        * - LoadServiceSettingL();
-        * - LoadAdditionalRecordsL();
-        */
-        IMPORT_C virtual void LoadL( TUint32 aIapId );
+         * Following SetXXXXAttributeL methods set the given values 
+         * identified with attributes. Attributes are set to the 
+         * client's copy of the data.
+         * @param aAttribute An attribute identifier.
+         * @param aValue Value to set.
+         * @param aClientPluginInstance Client's copy of the data where
+         * to set the given value.
+         */
+        IMPORT_C void SetIntAttributeL( TUint32 aAttribute, TUint32 aValue, 
+                                        CCmClientPluginInstance* aClientPluginInstance );
+        
+        IMPORT_C void SetBoolAttributeL( TUint32 aAttribute, TBool aValue,
+                                         CCmClientPluginInstance* aClientPluginInstance );
+                                         
+        IMPORT_C void SetStringAttributeL( TUint32 aAttribute, const TDesC16& aValue,
+                                           CCmClientPluginInstance* aClientPluginInstance );
+        
+        IMPORT_C void SetString8AttributeL( TUint32 aAttribute, const TDesC8& aValue,
+                                            CCmClientPluginInstance* aClientPluginInstance );
+
+        /**
+         * Requests CommsDat table ids to be observed for changes by the cmm
+         * server. This is only for generic iap related tables.
+         * @param aTableIdArray A reference to an array where iap related generic
+         * table ids are added.
+         */
+        IMPORT_C void GetGenericTableIdsToBeObserved( RArray<TUint32>& aTableIdArray ) const;
+
+        /**
+         * Requests CommsDat table ids to be observed for changes by the cmm
+         * server. If a table used is not mentioned to be modified a bearer
+         * shouldn't return this. Bearers do not reset the array before adding
+         * ids.
+         * @param aTableIdArray A reference to an array where plugin must add
+         * the ids of the tables it want's to be observed.
+         */
+        IMPORT_C virtual void GetBearerTableIdsToBeObservedL( 
+                RArray<TUint32>& aTableIdArray ) const = 0;
+
+    public: // plugin interface
+        /**
+         * Creates a copy of all bearer specific CommsDat data for the client.
+         * Called as result of GetPluginDataL().
+         * @param aRecordArray An array where the copy the records. Only 
+         * the bearer specific implementation knows the amount and order
+         * of these records in the array.
+         */
+        virtual void GetBearerSpecificRecordsL( 
+                RPointerArray<CommsDat::CCDRecordBase>& aRecordArray ) = 0;
 
         /**
-        * Create a new connection method in memory.
-        * Call UpdateL() to store it in CommsDat.
-        * No transaction operation is performed.
-        * - Creates new WAP, IAP, Network records
-        * - CreateNewServiceRecordL()
-        * - CreateAdditionalRecordsL()
-        * - Loads default AP name from resource 
-        *       (R_CMMANAGERENG_DEFAULT_AP_NAME)
-        */
-        IMPORT_C virtual void CreateNewL();
+         * Following GetBearerXXXXAttribute methods get only the
+         * fields in records in pointer arrays(parameters).
+         * @param aAttribute Identifier of the requested value.
+         * @param aGenRecordArray An array containing pointers to generic 
+         * records of the Connection Method.
+         * @param aBearerSpecRecordArray An array containing pointers to bearer
+         * specific records of the Connection Method. aAttribute
+         * parameter should identify one field(integer, boolean string)
+         * in one of these records. 
+         * @return Returns the requested value. In error case leaves with 
+         * system-wide error code.
+         */
+
+        virtual TUint32 GetBearerIntAttributeL( 
+                TUint32 aAttribute, 
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray ) = 0;
         
-        /**
-        * Create a copy of the connection method:
-        * - CreateInstanceL()
-        * - CreateNewL()
-        * - PrepareToCopyDataL()
-        * - Copies data:
-        *   - name
-        *   - bearer type
-        *   - records added to the convertion table
-        * - Calls CopyAdditionalDataL().
-        */
-        IMPORT_C virtual CCmPluginBaseEng* CreateCopyL() const;
+        virtual TBool GetBearerBoolAttributeL( 
+                TUint32 aAttribute, 
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray ) = 0;
+                                         
+        virtual HBufC* GetBearerStringAttributeL( 
+                TUint32 aAttribute, 
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray ) = 0;
         
-        /*
-        * Returns true if the CM has more than one parent destination
-        */        
-        IMPORT_C virtual TInt NumOfConnMethodReferencesL();
-
-    public:
-    
-        /**
-        * Returns a pointer to the cmmanager
-        * @return a pointer to the cmmanager
-        */
-        CCmManagerImpl& CmMgr() const { return iCmMgr; };
-
-        IMPORT_C CommsDat::CMDBSession& Session() const;
-
-        /**
-        * Launches the settings dialog of the plugin
-        *
-        * @since S60 3.2
-        * @return soft key selection
-        */
-        virtual TInt RunSettingsL() = 0;
+        virtual HBufC8* GetBearerString8AttributeL( 
+                TUint32 aAttribute, 
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray ) = 0;
 
         /**
-        * Called on a newly created connection method to initialize it properly
-        * with user interaction (e.g. APN setting for a packet data-, WEP-key
-        * setting for a WLAN connection method, etc.).
-        * Note: each plug-in should set its name (i.e. ECmName) in this
-        * function call.
-        *
-        * @since S60 3.2
-        * @param aManuallyConfigure let's the plugin know if a plugin should 
-        *                           be configured manually or automatically
-        * @return ETrue if initialization was successful and wasn't cancelled.
-        * EFalse, if initialization process was cancelled (i.e. user pressed
-        * Cancel button).
-        */
-        virtual TBool InitializeWithUiL( TBool aManuallyConfigure ) = 0;
+         * Following SetBearerXXXXAttribute methods set only the
+         * fields in records in pointer arrays(parameters). They are not 
+         * allowed to update the original records in plugins.
+         * @param aAttribute Identifier of the field to set.
+         * @param aValue The value to set.
+         * @param aGenRecordArray An array containing pointers to generic 
+         * records of the Connection Method.
+         * @param aBearerSpecRecordArray An array containing pointers to bearer
+         * specific records of the Connection Method. aAttribute
+         * parameter should identify one field(integer, boolean string)
+         * in one of these records. 
+         * @return None.
+         */
+
+        virtual void SetBearerIntAttributeL( 
+                TUint32 aAttribute, 
+                TUint32 aValue, 
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray ) = 0;
         
-        /**
-        * Checks if the plug-in can handle the given AP.
-        * @param aIapId IAPId of the AP to be checked
-        * @return ETrue if plug-in can handle the IAP
-        */
-        virtual TBool CanHandleIapIdL( TUint32 aIapId ) const = 0;
-        
+        virtual void SetBearerBoolAttributeL( 
+                TUint32 aAttribute, 
+                TBool aValue,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray ) = 0;
+                                         
+        virtual void SetBearerStringAttributeL( 
+                TUint32 aAttribute, 
+                const TDesC16& aValue,
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray ) = 0;
+
+        virtual void SetBearerString8AttributeL( 
+                TUint32 aAttribute, 
+                const TDesC8& aValue,                                                    
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray ) = 0;
+
         /**
-        * Checks if the plug-in can handle the given AP.
-        * @param aIapRecord IAP record to be checked
-        * @return ETrue if plug-in can handle the IAP
-        */
-        virtual TBool CanHandleIapIdL( CommsDat::CCDIAPRecord* aIapRecord ) const = 0;
-        
-        /**
-        * Return the parent destination of this connection method.
-        * @return parent destination of this connection method
-        */
-        IMPORT_C CCmDestinationImpl* ParentDestination() const;
-        
-        /**
-        * Calls FeatureManager::FeatureSupported directly.
-        * @param aFeature feature ID
-        * @return feature support status
-        * @since 3.2
-        */
-        IMPORT_C static TBool FeatureSupported( TInt aFeature );
-                
-        /**
-        * Function should be overriden by virtual bearer type plugins.
-        * Returns if the passed IAP id is linked to that connection method.
-        * @param aIapId IAP id to be checked
-        * @return ETrue if the passed IAP id is linked to that connection method.
-        */
-        virtual TBool IsLinkedToIap( TUint32 /*aIapId*/ ){ return EFalse; }
+         * Inherited class can make some preraration before CCmPluginBaseEng 
+         * would start loading bearer specific records.
+         */
+        virtual void PreparePluginToLoadRecordsL() = 0;
         
         /**
-        * Function should be overriden by virtual bearer type plugins.
-        * Returns if the passed SNAP id is linked to that connection method.
-        * @param aSnapId SNAP id to be checked
-        * @return ETrue if the passed SNAP id is linked to that connection method.
-        */
-        virtual TBool IsLinkedToSnap( TUint32 /*aSnapId*/ ){ return EFalse; }
+         * Gives the plugin a possibility to do some preparing operations
+         * if needed.
+         * @param aCopyInstance Client side data instance.
+         */
+        virtual void PrepareToCopyDataL( CCmPluginBaseEng* aCopyInstance ) = 0;
+
+        /**
+         * Inherited class can make some preraration before CCmPluginBaseEng 
+         * would start to update all the records.
+         * @param aGenRecordArray Reference to generic records pointer array.
+         * @param aBearerSpecRecordArray Reference to bearer specific records 
+         * pointer array.
+         */
+        virtual void PreparePluginToUpdateRecordsL(
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray ) = 0;
+
+        /**
+         * Plugin can prepare to delete the Connection Method with this 
+         * function. Called from DeleteL() before any record would be 
+         * deleted. No records are deleted here.
+         */
+        virtual void PrepareToDeleteRecordsL(){};
 
         /**
-        * Increments the reference counter. Used by the object pool.
-        */
-        void IncrementRefCounter();
+         * Loads the service record. Service record type is known and loaded by 
+         * plugin(bearer specific) part of the implementation even if the record
+         * is saved to the generic side. Service record is linked to IAP record.
+         */
+        virtual void LoadServiceRecordL() = 0;
+
+        /**
+         * Creates the service records.
+         */
+        virtual void CreateServiceRecordL() = 0;
+
         /**
-        * Increments the reference counter. Used by the object pool.
-        */
-        void DecrementRefCounter();
+         * Update service record.
+         * @param aGenRecordArray Reference to generic records pointer array.
+         * @param aBearerSpecRecordArray Reference to bearer specific records 
+         * pointer array.
+         */
+        virtual void UpdateServiceRecordL( 
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray ) = 0;
+
         /**
-        * Returns the reference counter. Used by the object pool.
-        * @return TInt
-        */
-        TInt GetRefCounter();
+         * Copies the service record. Bearer specific part knows the type of it's
+         * service record.
+         * @return Returns the service record pointer. 
+         */
+        virtual CommsDat::CCDRecordBase* CopyServiceRecordL() = 0;
+
+        /**
+         * Returns the service record id of the Connection Method.
+         * @return Returns the id of the service record id of the Connection Method.
+         */
+        virtual TUint32 ServiceRecordId() const = 0;
 
         /**
-        * Appends uids of connection methods - which were also created during connection method
-        * creation - to the array given as parameter 
-        * @param aIapIds the array the additonal cm uids are appended to
-        */        
-        IMPORT_C virtual void GetAdditionalUids( RArray<TUint32>& aIapIds );
+         * Returns the service record name of the Connection Method.
+         * @param aServiceName Name of the service record the CM's iap record 
+         * points to.
+         */
+        virtual void ServiceRecordNameLC( HBufC* &aServiceName ) = 0;
+
+        /**
+         * Inherited class loads all the bearer specific records after 
+         * loading generic records. Called from LoadL(). 
+         */
+        virtual void LoadBearerRecordsL() = 0;
+
+        /**
+         * Creates bearer specific records.
+         */
+        virtual void CreateBearerRecordsL(){};
+
+        /**
+         * Update bearer specific records.
+         * @param aGenRecordArray Reference to generic records pointer array.
+         * @param aBearerSpecRecordArray Reference to bearer specific records 
+         */
+        virtual void UpdateBearerRecordsL( 
+                RPointerArray<CommsDat::CCDRecordBase>& aGenRecordArray,
+                RPointerArray<CommsDat::CCDRecordBase>& aBearerSpecRecordArray ) = 0;
+
+        /**
+         * Plugin(generic part) can delete bearer specific records
+         * with this function. Called from DeleteL().
+         */
+        virtual void DeleteBearerRecordsL() = 0;
 
-    protected: // Conversion table API
-    
-        IMPORT_C void AddConverstionTableL( 
-                            CommsDat::CCDRecordBase* *aRecord,
-                            TBool* aEnabled,
-                            const TCmAttribConvTable* aConvTable );
-                                            
-        IMPORT_C void AddCommonConversionTableL( 
-                                const TCmCommonAttrConvArrayItem* aConvTable );
+         /** 
+          * Resets the bearer specific records. 
+          */
+         virtual void ResetBearerRecords() = 0;
+
+        /**
+         * Copies the bearer specific records to copy instance given as 
+         * parameter. 
+         * @param aCopyInstance Pointer to instance where to copy.
+         */
+        virtual void CopyBearerRecordsL( CCmPluginBaseEng* aCopyInstance ) = 0;
+
+        /**
+         * Returns the bearer record id of the Connection Method.
+         * @param aRecordId Id of the bearer record this CM's iap record 
+         * points to.
+         */
+        virtual void BearerRecordIdL( TUint32& aRecordId ) = 0;
+
+        /**
+         * Returns the bearer record name of the Connection Method.
+         * @param aBearerName Name of the bearer record this CM's iap record 
+         * points to.
+         */
+        virtual void BearerRecordNameLC( HBufC* &aBearerName ) = 0;
+
+    protected:
+        /** 
+         * Constructor 
+         */
+        IMPORT_C CCmPluginBaseEng( TCmPluginInitParam *aInitParam );
         
-        IMPORT_C void RemoveConversionTable( 
-                                        const TCmAttribConvTable* aConvTable );
-        
-        IMPORT_C void RemoveCommonConversionTable( 
-                                const TCmCommonAttrConvArrayItem* aConvTable );
-                                   
-    protected: // Resource handling
-    
-        /**
-        * Add file name to the resource file array.
-        * Open it and/or increment reference count.
-        * @param aName resource file name
-        */
-        IMPORT_C void AddResourceFileL( const TDesC& aName );
+        /** 
+         * Second phase constructor
+         */
+        IMPORT_C virtual void ConstructL();
         
         /**
-        * Remove file name from the resource file name array.
-        * Close the resource file and/or decrement the reference count.
-        * @param aName resource file name
-        */
-        IMPORT_C void RemoveResourceFile( const TDesC& aName );
-
-        /**
-        * Read string from resource file. Resource file has to be
-        * opened prior this by calling AddResourceFileL().
-        */
-        IMPORT_C HBufC* AllocReadL( TInt aResourceId ) const;
-        
-            
-    protected:
-    
-        /** Constructor */
-        IMPORT_C CCmPluginBaseEng( TCmPluginInitParam *aInitParam );
-        
-        /** Second phase constructor */
-        IMPORT_C virtual void ConstructL();
-    
-        /** Open transaction */
-        void OpenTransactionLC();
-        
-        /**
-        * Commit transaction.
-        * @param aError - error id
-        */
-        void CommitTransactionL( TInt aError );
-        
-        /**
-        * Rollback transaction.
-        */
-        void RollbackTransaction();
-        
-        /** Make a reset on this class. */
-        IMPORT_C void Reset();
-        
-        /**
-        * Plug-in implementation can make its on
-        * cleanup in this function. 
-        * Always called from LoadL() and 
-        * should be called from plugin's destructor.
-        */
-        virtual void AdditionalReset() = 0;
-        
-        /**
-        * Check if there's connection established with
-        * this connection method (IAP id).
-        */
-        IMPORT_C virtual TBool CheckIfAlreadyConnected() const;
-        
-    protected:  // virtual loader function
-        
-        /**
-        * Inherited class can make some preraration
-        * before CCmPluginBaseEng would start loading
-        * records from tables.
-        */
-        IMPORT_C virtual void PrepareToLoadRecordsL();
-
-        /**
-        * Inherited class can load any additional
-        * records after CCmPluginBaseEng finished.
-        */
-        virtual void LoadAdditionalRecordsL(){};
+         * Checks if the ECmName attribute was set since the last update.
+         * If so, name is updated in passed record
+         * @param aSrcRecord record to be checked against
+         * @param aDestRecord record to be checked against aSrcRecord
+         */
+        IMPORT_C void CheckIfNameModifiedL( 
+                CommsDat::CCDRecordBase* aSrcRecord,
+                CommsDat::CCDRecordBase* aDestRecord ) const;
 
         /**
-        * Load service record. Default implementation can
-        * create only factory supported record instances.
-        */
-        IMPORT_C virtual void LoadServiceSettingL();
+         * Plugins can check DNS setting with this function.
+         * Suggested to be called from PrepareToUpdateRecordsL().
+         * It checked the DNS server addresses, moves secord into
+         * first if first is dynamic, and update DNSFromServer field
+         * according to address values.
+         * @param aIPv6 passed DNS server address are in IPv6 form
+         * @param aDNS1 first DNS server address
+         * @param aDNS1 secord DNS server address
+         * @param aDNSFromServer DNS address from server flag
+         */                                            
+        IMPORT_C void CheckDNSServerAddressL( 
+                TBool aIPv6,
+                CommsDat::CMDBField<TDesC>& aDNS1,
+                CommsDat::CMDBField<TDesC>& aDNS2,
+                CommsDat::CMDBField<TBool>& aDNSFromServer );
 
-    protected:  // virtual update functions
-    
+    private:
         /**
-        * Check if connection method data is valid, before
-        * it would be persisted to commsdat.
-        * If invalid data found, set its attribute id in
-        * iInvalidAttribute.
-        * Base class implementation must be called from
-        * overridden one.
-        */
-        IMPORT_C virtual void PrepareToUpdateRecordsL();
-        
-        /**
-        * Inherited class can update its additional
-        * records here.
-        */
-        virtual void UpdateAdditionalRecordsL(){};
-
-        /**
-        * Update service record.
-        */
-        IMPORT_C virtual void UpdateServiceRecordL();
+         * Handles all the Connection Method data copying to instance given as 
+         * parameter. This is called from CreateCopyL().
+         * @ param aCopyInstance Pointer to plugin to copy the data.
+         */
+        void CopyDataL( CCmPluginBaseEng* aCopyInstance );
 
         /**
-        * Return the service table name and record id 
-        * of this connection in the service table.
-        * @param - aServiceName name of the service table
-        *           this connection method points to.
-        * @param - aRecordId record id in the service table.
-        */
-        virtual void ServiceRecordIdLC( HBufC* &aServiceName, 
-                                       TUint32& aRecordId ) = 0;
+         * Handles all the Connection Method related record copying. Called from
+         * CopyDataL().
+         * @ param aCopyInstance Pointer to plugin to copy the data.
+         */
+        void CopyRecordsL( CCmPluginBaseEng* aCopyInstance );
+
+        /**
+         * Copies the record identified by aRecordIdentifier to copy instance.
+         * @param aRecordIdentifier Identifies the record which is copied copy.
+         * @param aCopyInstance Pointer to plugin to copy the data. 
+         */
+        void CopyRecordDataL( TUint32 aRecordIdentifier,
+                              CCmPluginBaseEng* aCopyInstance );
 
         /**
-        * Return the bearer table name and record id 
-        * of this connection in the bearer table.
-        * @param - aBearerName name of the bearer table
-        *           this connection method points to.
-        * @param - aRecordId record id in the bearer table.
-        */
-        virtual void BearerRecordIdLC( HBufC* &aBearerName, 
-                                       TUint32& aRecordId ) = 0;
+         * Creates proxy record and sets the proxy settings enabled for this
+         * Connection Method.
+         */
+        void EnableProxyL( TBool aEnable );
+        
+        /**
+         * Creates location record and sets the location enabled for this 
+         * Connection Method.
+         */
+        void EnableLocationL( TBool aEnable );
 
-    protected:  // virtual delete function
-    
         /**
-        * Plugin can prepare to delete the connection method
-        * with this function. Called from DeleteL() before
-        * any record would be deleted. Do NOT delete any
-        * record here.
-        */
-        virtual void PrepareToDeleteRecordsL(){};
+         * Calls all the loading methods. 
+         */
+        void DoLoadL( TUint32 aIapId );
         
         /**
-        * Plugin can delete additional, bearer specific record
-        * with this function. Called from DeleteL().
-        */
-        virtual void DeleteAdditionalRecordsL(){};
+         * Loads IAP record.
+         * @param aIapId Identifies the IAP record to load.
+         */
+        void LoadIAPRecordL( TUint32 aIapId );
 
-    protected:  // virtual create function
-    
         /**
-        * Plugin has to create and initialize its bearer specific object
-        * that points to the service record here. Pointer has to be stored in 
-        * iServiceRecord data member.
-        * Do NOT store service record in CommsDat yet.
-        */
-        virtual void CreateNewServiceRecordL() = 0;
+         * Loads proxy record related to this IAP. This is called as a result
+         * of calling LoadL().
+         */
+        void LoadProxyRecordL();
+
+        /**
+         * Loads network record related to this IAP. This is called as a result
+         * of calling LoadL().
+         */
+        void LoadNetworkRecordL();
         
         /**
-        * Plugin can create and initialize its bearer specific record(s) here.
-        * Do NOT store them in CommsDat yet.
-        */
-        virtual void CreateAdditionalRecordsL(){};
-        
-    protected:
+         * Loads location record related to this IAP. This is called as a result
+         * of calling LoadL().
+         */
+        void LoadLocationRecordL();
+
+        /**
+         * Loads WAP AP and WAP IP records related to this IAP. This is called as a result
+         * of calling LoadL().
+         */
+        void LoadWapRecordL();
 
         /**
-        * Called from CreateCopyL().
-        * Plugin can prepare for copying every records
-        * added to the conversion tables.
-        *
-        * @param aDestInst copy attributes into this plugin instance
-        */
-        virtual void PrepareToCopyDataL( CCmPluginBaseEng& /*aDestInst*/ ) const {};
-                
+         * Loads iap metadata record related to this IAP. This is called as a result
+         * of calling LoadL().
+         */
+        void LoadMetadataRecordL();
+        
         /**
-        * Copy data of the connection method that is not 
-        * added to the conversion table. (e.g. bearer specific
-        * flags)
-        *
-        * @param aDestInst copy attributes into this plugin instance
-        */    
-        virtual void CopyAdditionalDataL( CCmPluginBaseEng& /*aDestInst*/ ) const {};
-
-    private:
-    
-        void EnableProxyL( TBool aEnable );
-        void EnableChargeCardL( TBool aEnable );
-        void EnableLocationL( TBool aEnable );
-
-        // Loader functions
-        void DoLoadL( TUint32 aIapId );
-        void LoadIAPRecordL( TUint32 aIapId );
-        void LoadChargeCardSettingL( TUint32 aChargeCardId );
-        void LoadProxySettingL();
-        void LoadNetworkSettingL();
-        void LoadLocationSettingL();
-        void LoadWapRecordL();
-        void LoadSeamlessnessRecordL();
-        
-        // Updater functions
-        void UpdateIAPRecordL();
-        void UpdateProxyRecordL();
-        void UpdateChargeCardRecordL();
+         * Following methods are called as a result of calling method UpdateL().
+         * Each method overwrites the original data in memory with the client copy
+         * of that data. Client data has all the possible changes set by client.
+         * After overwrite the data is written to CommsDat. 
+         * @param aClientPluginInstance The client copy of the original data with the
+         * possible changes.
+         */
+        void UpdateIAPRecordL( CCmClientPluginInstance* aClientPluginInstance );
+        void UpdateProxyRecordL( CCmClientPluginInstance* aClientPluginInstance );
         void UpdateConnPrefSettingL();
-        void UpdateNetworkRecordL();
-        void UpdateLocationRecordL();
-        void UpdateWapRecordL();
-        void UpdateSeamlessnessRecordL();
+        void UpdateNetworkRecordL( CCmClientPluginInstance* aClientPluginInstance );
+        void UpdateLocationRecordL( CCmClientPluginInstance* aClientPluginInstance );
+        void UpdateWapRecordL( CCmClientPluginInstance* aClientPluginInstance );
+        void UpdateMetadataRecordL( CCmClientPluginInstance* aClientPluginInstance );
+        void UpdateServiceRecordL( CCmClientPluginInstance* aClientPluginInstance );
         
         /**
-        * No WAP record found in load process,
-        * but client wants to set start page.
+        * Creates new wap records.
         */
         void NewWapRecordL();
+
+        /**
+         * Searches the WAP records related to this iap. This is called as a 
+         * result of LoadL().
+         * @return Returns pointer to WAP IP record. If it's not found NULL is
+         * returned.
+         */
+        CommsDat::CCDWAPIPBearerRecord* FindWAPRecordL();
+
+        /**
+        * Creates a new metadata record.
+        * @param aSetDef ETrue if setting default seamlessness value is needed
+        * @return Returns metadata record pointer.
+        */
+        CCDIAPMetadataRecord* NewMetadataRecordL( TBool aSetDef );
         
         /**
-        * Create a new metadata record.
-        * @param aSetDef ETrue if setting default seamlessness valud is needed
-        * @return create metadata record point
-        */
-        CCDIAPMetadataRecord* NewSeamlessnessRecordL( TBool aSetDef );
-        
-        CommsDat::CCDWAPIPBearerRecord* FindWAPRecordL();
-        CCDIAPMetadataRecord* FindSeamlessnessRecordL();
+         * Searches the metadata record belonging to this iap. This is called as a 
+         * result of LoadL().
+         * @return Returns pointer to WAP IP record. If it's not found NULL is
+         * returned.
+         */
+        CCDIAPMetadataRecord* FindMetadataRecordL();
 
         /**
-        * Set attribute flag on the given record
-        * @param aRecord record to be set
-        * @param aAttribute e.g. ECDHidden
+        * Set attribute flag on the given record.
+        * @param aRecord Record to be set.
+        * @param aAttribute Attribute to be set.
         * @param aSet ETrue to set, EFalse to clear
         */
         void SetAttribute( CommsDat::CCDRecordBase* aRecord, 
@@ -818,221 +775,141 @@
         void CopyAttributes( CommsDat::CCDRecordBase* aSrcRecord, 
                              CommsDat::CCDRecordBase* aDstRecord );
 
-        /**
-        * Find field element associated with the passed attribute.
-        * @param aAttribute aatribute to find
-        * @aType type of the attribute (e.g. bool, int or string)
-        */               
-        TValidationFunctionL FindFieldL( TUint32 aAttribute,
-                                           TCMFieldTypes aType,
-                                           CommsDat::CMDBElement* &aElement ) const;
-
-        
-        /**
-        * Return Location id
-        * @return location id
-        */
-        TUint32 GetLocationIdL() const;
-        
-        /**
-        * Search for common attribute and convert it to plugin specific one.
-        * @param aAttribute common attribute id
-        * @return bearer specific attribute id
-        */
-        TUint32 CheckForCommonAttribute( const TUint32 aAttribute ) const;
         
         /**
-        * Returns the common attribute for the bearer specific attribute.
-        * Panics if there is no matching common attribute.
-        * @param aAttribute bearer specific attribute
-        * @return common attribute
+        * Returns the default location record id.
+        * @return Returns the default location record id.
         */
-        TUint32 CommonAttribute( const TUint32 aAttribute ) const;
-        
-    public: // Util functions
+        TUint32 GetLocationIdL() const;
+
+    private:
 
-        IMPORT_C CommsDat::TMDBElementId IAPRecordElementId() const;
-        
-        IMPORT_C TBool IsProtected() const;
-        
-        TBool SetProxyServerNameL( const TDesC& aProxyServer );
+        /**
+         * Gives a possibility to make some prerarations before 
+         * starting to load bearer specific records.
+         */
+        void PrepareToLoadRecordsL();
 
         /**
-        * Return the coversion table item of the attribute
-        * @param aAttribute attribute of which conversion item is requested
-        * @return conversion table item
-        */
-        IMPORT_C const TCmAttribConvTable* ConvTableItem( TUint32 aAttribute );
+         * Gives a possibility to make some prerarations before 
+         * starting to update bearer specific records.
+         */
+        void PrepareToUpdateRecordsL( 
+                CCmClientPluginInstance* aClientPluginInstance );
 
         /**
-        * Function to set up DNS addresses and DNS address from server flag.
-        * Can be used with both IPv4 and IPv6 attribute. 
-        * Passed bearer specific attributes must be defined in common conversion 
-        * table.
-        * @param aSrv1Attr first DNS server address attribute
-        * @param aSrv1 DNS first DNS server address
-        * @param aSrv2Attr second DNS server address
-        * @param aSrv2 DNS second DNS server address attribute
-        * @param aAddrFromSrvAttr DNS address from server flag attribute
-        * @param aIPv6 ETrue if passed addresses are in IPv6 form
-        */
-        IMPORT_C void SetDNSServerAddressL( TUint32 aSrv1Attr,
-                                            const TDesC& aSrv1,
-                                            TUint32 aSrv2Attr,
-                                            const TDesC& aSrv2,
-                                            TUint32 aAddrFromSrvAttr,
-                                            TBool aIPv6  );
+         * Returns the element id of the iap record.
+         * @return Returns the element id of the iap record.
+         */
+        CommsDat::TMDBElementId IAPRecordElementId() const;
+        
+        /**
+         * Checks the protection attribute of the IAP.
+         * @return Returns ETrue if the IAP is protected. Otherwise returns
+         * EFalse.
+         */
+        TBool IsProtected() const;
 
         /**
-        * Plugins can check DNS setting with this function.
-        * Suggested to be called from PrepareToUpdateRecordsL().
-        * It checked the DNS server addresses, moves secord into
-        * first if first is dynamic, and update DNSFromServer field
-        * according to address values.
-        * @param aIPv6 passed DNS server address are in IPv6 form
-        * @param aDNS1 first DNS server address
-        * @param aDNS1 secord DNS server address
-        * @param aDNSFromServer DNS address from server flag
-        */                                            
-        IMPORT_C void CheckDNSServerAddressL( TBool aIPv6,
-                                              CommsDat::CMDBField<TDesC>& aDNS1,
-                                              CommsDat::CMDBField<TDesC>& aDNS2,
-                                              CommsDat::CMDBField<TBool>& aDNSFromServer );
+         * Sets the name of the proxy server to proxy record. If name's
+         * length is 0, proxyport is set to 0 and proxyserver usage
+         * boolean is set to EFalse. If the name is longer than 0, 
+         * boolean is set to ETrue.
+         * @param aProxyServer Address to be set.
+         * @param Record pointer where to set.
+         */
+        void SetProxyServerNameL( const TDesC& aProxyServer,
+                                  CommsDat::CCDRecordBase* aProxyRecord );
 
-    protected:
-            
         /**
-        * Checks if the ECmName attribute was set since the last update.
-        * If so, name is updated in passed record
-        * @param aRecord record to be checked against iIapRecord
-        */
-        IMPORT_C void CheckIfNameModifiedL( CommsDat::CCDRecordBase* aRecord ) const;
-        
+         * Sets a name to IAP.
+         * @param aName Name to set.
+         * @param aClientPluginInstance Client copy of data where to set the 
+         * name. UpdateL() updates the name to the CommsDat.
+         */
+        void SetNameL( const TDesC& aName,
+                       CommsDat::CCDRecordBase* aIapRecord,
+                       const CMManager::TNamingMethod aNamingMethod );
+
         /**
-        * Returns the global priority of the passed bearer type
-        * @param aServiceType bearer type of which priority is requested
-        * @return global bearer priority
-        */        
-        IMPORT_C TInt GlobalBearerPriority( const TDesC& aServiceType ) const;
-        
-        /**
-        * Returns the global UI priority of the passed bearer type
-        * @param aServiceType bearer type of which priority is requested
-        * @return global UI bearer priority
-        */
-        IMPORT_C TInt GlobalUiBearerPriority( const TDesC& aServiceType ) const;
-
-    private: // Util functions
-    
-        HBufC* DoMakeValidNameL( const TDesC& aName );
+         * Following methods are called as a result of SetNameL() to
+         * make a valid name of the given string.
+         */
+        HBufC* DoMakeValidNameL( const TDesC& aName, 
+                                 const TUint32& aIapId );
         HBufC* EnsureMaxLengthLC( const TDesC& aName, 
                                   TBool& aChanged );
-                                  
         TPtrC GetPrefix( const TDesC& aName );
         TInt GetPostfix( const TDesC& aName, const TDesC& aPrefix );
-
-        TBool IsValidNameL( const TDesC& aNameText );
+        TBool IsValidNameL( const TDesC& aNameText,
+                            const TUint32& aIapId );
         HBufC* EscapeTextLC( const TDesC& aLiteral );
-        
-        void SetNameL( const TDesC& aName );
-        
-        TCmAttrConvArrayItem* ConversionTable( TUint32 aAttribute ) const;
-        CommsDat::CMDBElement& FieldByAttributeL( const TCmAttrConvArrayItem* aItem,
-                                        const TUint32 aAttribute,
-                                        TInt& aIndex ) const;
-        
-        /**
-        * Writes the passed text into the passed attribute.
-        * @param aAttribute The attribute to write into
-        * @param aValue The value to write
-        */
-        void GenericStringWriterL( const TUint32 aAttribute, 
-                                   const TDesC16& aValue );
-        
-        /**
-        * Returns the common attribute for the bearer specific attribute, if 
-        * it is mapped to any. Otherwise, it returns the original attribute.
-        * @param aAttribute bearer specific attribute
-        * @return common/original attribute
-        */
-        TUint32 MappedCommonAttribute( const TUint32 aAttribute ) const;        
-    public:
+        void SetDefaultNameL( const TDesC& aName );
 
         /**
-        * Indicates if the Id is valid or if this is a new object which sitll
-        * haven't been updated. 
-        * Used by the object pool.
-        * @return TBool
+        * Check if the passed IP address is '0.0.0.0' or empty string
+        * @param aIpAddress IP address to be checked
         */
-        TBool IdIsValid();
+        TBool IsUnspecifiedIPv4Address( const TDesC& aIpv4Address );
 
         /**
-        * Sets iIdIsValid attribute
-        * Used by the object pool.
-        */
-        void SetIdValidity(TBool validity);
-        
-        /**
-        * Scans aDests for destinations that may be valid parents 
-        * for this plugin and removes those that may not. The function may be
-        * overriden by virtual bearer type plugins.
-        * @param aDests The array of destination IDs to be filtered.
+        * Check if the passed IP address is one of these:
+        * - empty string    -   
+        * - '0:0:0:0:0:0:0:0' 
+        * - 'fec0:000:0000:ffff::1'
+        * - 'fec0:000:0000:ffff::2'
+        * @param aIpAddress IP address to be checked
         */
-        virtual void FilterPossibleParentsL( RArray<TUint32>& /*aDests*/ ) {}
-        
-        /**
-         * Sets the predefined id for the plugin. This should only be
-         * used by cmmanager framework.
-         */
-        IMPORT_C void SetPreDefinedId( const TUint32 aPreDefId );
-
-    public:
-
-        /**
-        * Check if there is space to save record
-        * @return ETrue if space is available; otherwise leave with KLeaveWithoutAlert
-        */
-        IMPORT_C TBool CheckSpaceBelowCriticalLevelL() const;
+        CMManager::TIPv6Types ClassifyIPv6Address( const TDesC& aIpv6Address );
 
     public: // Data
     
         // Required attribute for the framework
         // (An identifier used during destruction)
-        TUid iDtor_ID_Key;
-        
+        TUid    iDtor_ID_Key;
+        TUint32 iBearerType;
+
     protected:
+        /**
+         * Reference to cmm's session handle. Initialised at the construction
+         * phase.
+         */
+        CommsDat::CMDBSession& iSession;
 
-        CCmManagerImpl&     iCmMgr;         //< Not owned    
-        TUint32             iParentDest;    // id of the parent destinaton
-        
-        // IAP id of the CM. 0 means that this is a newly
-        // created one.
-        TUint32         iIapId;
-        TUint32         iBearerType;        //< Should be set by plugin 
-                                            //< constructor
+        /**
+         * Generic record pointers. 
+         */
+        CommsDat::CCDIAPRecord*             iIapRecord;
+        CommsDat::CCDProxiesRecord*         iProxyRecord;
+        CommsDat::CCDRecordBase*            iServiceRecord;
+        CommsDat::CCDNetworkRecord*         iNetworkRecord;
+        CommsDat::CCDLocationRecord*        iLocationRecord;
+        CommsDat::CCDWAPAccessPointRecord*  iWapAPRecord;
+        CommsDat::CCDWAPIPBearerRecord*     iWapIPBearerRecord;
+        CCDIAPMetadataRecord*               iMetaDataRecord;
         
-        CommsDat::CCDIAPRecord*           iIapRecord;         // created by base class
-        CommsDat::CCDProxiesRecord*       iProxyRecord;       // optional
-        CommsDat::CCDRecordBase*          iServiceRecord;     // created by plugin
-        CommsDat::CCDChargecardRecord*    iChargeCardRecord;  // optional
-        CommsDat::CCDNetworkRecord*       iNetworkRecord;     // created by base class
-        CommsDat::CCDLocationRecord*      iLocationRecord;    // optional
-        
-        TBool           iChargeCardEnabled;
-        TBool           iLocationEnabled;
+    private:
+        /**
+         * IAP record id of the CM. 0 means that this is not stored to CommsDat
+         * yet. If in UpdateL phase iap record has an id but iIapId == 0 --> 
+         * predefined iap id
+         */
+        TUint32         iIapId;
 
-        TUint32         iInvalidAttribute;
-
-    private: // Data
+        /**
+         * Naming method of the CM.
+         */
+        CMManager::TNamingMethod    iNamingMethod;
         
-        CCmPluginBasePrivate* iPriv;
-        //Reference counter for the object pool
-	    TInt                  iRefCounter;
-        //indicates if the Id is valid or not (for the object pool)
-        TBool                 iIdIsValid;
-        // Predefined connection method id(iap id)
-        TUint32               iPreDefIapId;
-	    friend class CCmPluginBase;
+        /**
+         * Table id of the iap metadata table. 
+         */
+        CommsDat::TMDBElementId     iMetadataTableId;
+        
+        /**
+         * Identifies if the location is enabled.
+         */
+        TBool                       iLocationEnabled;
     };
     
 #endif // CMPLUGINBASEENG_H
--- a/ipcm_plat/bearer_settings_plugin_api/inc/cmpluginlanbase.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_plat/bearer_settings_plugin_api/inc/cmpluginlanbase.h	Mon May 03 12:53:07 2010 +0300
@@ -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
@@ -79,20 +79,6 @@
         */
         IMPORT_C void PrepareToUpdateRecordsL();
         
-        /**
-        * No UI for LanBase.
-        * Panics in debug mode, leaves with KErrNotSupported in
-        * release mode.
-        */
-        IMPORT_C virtual TInt RunSettingsL();
-        
-        /**
-        * No UI for LanBase.
-        * Panics in debug mode, leaves with KErrNotSupported in
-        * release mode.
-        */
-        IMPORT_C virtual TBool InitializeWithUiL( TBool aManuallyConfigure );
-                
     private:
     
         IMPORT_C CommsDat::CCDLANServiceRecord& ServiceRecord()const;
--- a/ipcm_plat/bearer_settings_plugin_api/inc/cmpluginlandef.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_plat/bearer_settings_plugin_api/inc/cmpluginlandef.h	Mon May 03 12:53:07 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006-2010 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"
@@ -11,7 +11,8 @@
 *
 * Contributors:
 *
-* Description:  Resource headers for LAN Plug-in
+* Description:
+* Resource headers for LAN Plug-in.
 *
 */
 
@@ -21,6 +22,8 @@
 
 #include <cmconnectionmethoddef.h>
 
+const TUint KUidLanBearerType = 0x1020737A;
+
 namespace CMManager
     {
     /** LAN specific connection method attributes */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipcm_plat/bearer_settings_ui_plugin_api/bearer_settings_ui_plugin_api.pri	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,19 @@
+#
+# Copyright (c) 2010 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:
+# Bearer Settings UI Plugin API project include.
+#
+
+PLATFORM_HEADERS += \
+    bearer_settings_ui_plugin_api/inc/cpbearerapplugininterface.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipcm_plat/bearer_settings_ui_plugin_api/inc/cpbearerapplugininterface.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,90 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*   Control Panel plugin interface for bearer specific AP settings plugins.
+*
+*/
+
+#ifndef CPBEARERAPPLUGININTERFACE_H
+#define CPBEARERAPPLUGININTERFACE_H
+
+// System includes
+#include <QtPlugin>
+
+// User includes
+
+// Forward declarations
+class CpBaseSettingView;
+
+// External data types
+
+// Constants
+
+// Class declaration
+
+/*!
+    \class CpBearerApPluginInterface
+    \brief This class is an interface for bearer specific AP settings plugins
+           which can be displayed in the Control Panel application.
+    
+    Plugin stubs must be located in
+    /resource/qt/plugins/controlpanel/bearerap directory.
+ */
+
+class CpBearerApPluginInterface
+{
+public:
+    /*!
+        Destructor.
+     */
+    virtual ~CpBearerApPluginInterface() {}
+    
+    /*!
+        Getter for bearer type. Bearer types are defined in the Connection
+        Settings Shim API cmmanagerdefines_shim.h.
+        
+        \return Bearer type handled by the plugin.
+     */
+    virtual uint bearerType() const = 0;
+    
+    /*!
+        Creates the settings view. Caller owns the object.
+        
+        \param connectionMethod Connection method ID.
+        \return Pointer to a settings view object.
+     */
+    virtual CpBaseSettingView *createSettingView(
+        uint connectionMethod) = 0;
+        
+signals:
+    
+public slots:
+
+protected:
+
+protected slots:
+
+private:
+
+private slots:
+
+private: // data
+
+};
+
+Q_DECLARE_INTERFACE(
+    CpBearerApPluginInterface,
+    "com.nokia.plugin.controlpanel.bearerap.platform.interface/1.0");
+
+#endif // CPBEARERAPPLUGININTERFACE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipcm_plat/connection_settings_shim_api/connection_settings_shim_api.pri	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,22 @@
+#
+# Copyright (c) 2010 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:
+# Connection Settings Shim API project include.
+#
+
+PLATFORM_HEADERS += \
+    connection_settings_shim_api/inc/cmconnectionmethod_shim.h \
+    connection_settings_shim_api/inc/cmdestination_shim.h \
+    connection_settings_shim_api/inc/cmmanager_shim.h \
+    connection_settings_shim_api/inc/cmmanagerdefines_shim.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipcm_plat/connection_settings_shim_api/inc/cmconnectionmethod_shim.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,189 @@
+/*
+ * Copyright (c) 2010 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:  
+ * Wrapper for CM Manager Symbian interface.
+ */
+
+#ifndef CMCONNECTIONMETHOD_SHIM_H
+#define CMCONNECTIONMETHOD_SHIM_H
+
+// System includes
+
+#include <QString>
+#include <cmconnectionmethod.h>
+#include <cmconnectionmethoddef.h>
+#include <cmmanagerdefines_shim.h>
+
+// User includes
+
+// Forward declarations
+
+class CmConnectionMethodShimPrivate;
+
+// External data types
+
+// Constants
+
+// Class declaration
+
+/*!
+    \class CmConnectionMethodShim
+    \brief Implementation class for CM Manager Connection Method Shim.
+
+    Wrapper for CM Manager Symbian interface.
+    
+    NOTE! This shim is supposed to be used only in middleware code. Usage
+    must be agreed with ipconnmgmt package owner. Applications should use
+    the Qt Bearer Management API instead.
+*/
+
+class CONNECTIONSETTINGSSHIMDLL_EXPORT CmConnectionMethodShim
+{
+
+public:
+
+    // Data types
+
+    /*!
+     *  Constructor.
+     *  
+     *  @param[in] cm CM Manager connection method object.
+     */
+    CmConnectionMethodShim(RCmConnectionMethod &cm);
+
+    /*!
+     *  Destructor.
+     */
+    ~CmConnectionMethodShim();
+    
+    /*!
+     * Gets the value for a uint attribute.
+     * Note: even though the name suggests int attribute, return value is
+     * actually uint. This is how the function is specified in public
+     * RCmConnectionMethod class as well.
+     * 
+     * @param attribute Identifies the attribute to be retrived.
+     * @return Contains the requested uint attribute.
+     */
+    uint getIntAttribute(
+        CMManagerShim::ConnectionMethodAttribute attribute) const;
+
+    /*!
+     * Gets the value for a bool attribute.
+     * 
+     * @param attribute Identifies the attribute to be retrived.
+     * @return Contains the requested bool attribute.
+     */
+    bool getBoolAttribute(
+        CMManagerShim::ConnectionMethodAttribute attribute) const;
+
+    /*!
+     * Gets the value for a 16 bit QString attribute.
+     * 
+     * @param attribute Identifies the attribute to be retrived.
+     * @return Contains the requested QString attribute.
+     */
+    QString getStringAttribute(
+        CMManagerShim::ConnectionMethodAttribute attribute) const;
+    
+    /*!
+     * Gets the value for an 8 bit QString attribute.
+     * 
+     * @param attribute Identifies the attribute to be retrived.
+     * @return Contains the requested QString attribute.
+     */
+    QString getString8Attribute(
+        CMManagerShim::ConnectionMethodAttribute attribute) const;
+    
+    /*!
+     * Sets the value for an uint attribute.
+     * Note: even though the name suggests int attribute, parameter is
+     * actually uint. This is how the function is specified in public
+     * RCmConnectionMethod class as well.
+     * 
+     * @param attribute Identifies the attribute to be set.
+     * @param value The value to be set.
+     */
+    void setIntAttribute(
+        CMManagerShim::ConnectionMethodAttribute attribute,
+        uint value);
+
+    /*!
+     * Sets the value for a bool attribute.
+     * 
+     * @param attribute Identifies the attribute to be set.
+     * @param value The value to be set.
+     */
+    void setBoolAttribute(
+        CMManagerShim::ConnectionMethodAttribute attribute,
+        bool value);
+
+    /*!
+     * Sets the value for a 16 bit QString attribute.
+     * 
+     * @param attribute Identifies the attribute to be set.
+     * @param value The value to be set.
+     */
+    void setStringAttribute(
+        CMManagerShim::ConnectionMethodAttribute attribute, 
+        QString value);
+    
+    /*!
+     * Sets the value for an 8 bit QString attribute.
+     * 
+     * @param attribute Identifies the attribute to be set.
+     * @param value The value to be set.
+     */
+    void setString8Attribute(
+        CMManagerShim::ConnectionMethodAttribute attribute, 
+        QString value);
+    
+    /*!
+     * Try to delete the connection method. If it is referenced from 
+     * any destination, then the references are removed and the connection
+     * method is deleted.
+     * 
+     * @return True if connection method deleted.
+     */
+    bool deleteConnectionMethod();
+    
+    /*!
+     * Update in the database.
+     */        
+    void update();
+    
+    /*!
+     * Reload the contents of the connection method from database.
+     * Any current changes made to the connection method are lost.
+     */
+    void refresh();
+    
+protected:
+    
+private:
+    
+private: // data
+    
+    CmConnectionMethodShimPrivate *d_ptr;  //!< Private implementation
+    
+    // Friend classes
+    
+    /*
+     * CmDestinationShimPrivate::AddConnectionMethodL needs direct access
+     * to Connection Methods it is adding to the Destination.
+     */
+    friend class CmDestinationShimPrivate;
+};
+
+#endif /* CMCONNECTIONMETHOD_SHIM_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipcm_plat/connection_settings_shim_api/inc/cmdestination_shim.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,214 @@
+/*
+ * Copyright (c) 2010 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:  
+ * Wrapper for CM Manager Symbian interface.
+ */
+
+#ifndef CMDESTINATION_SHIM_H
+#define CMDESTINATION_SHIM_H
+
+// System includes
+
+#include <QString>
+#include <cmdestination.h>
+#include <cmmanagerdefines_shim.h>
+
+// User includes
+
+// Forward declarations
+
+class CmDestinationShim;
+class CmDestinationShimPrivate;
+class CmConnectionMethodShim;
+
+// External data types
+
+// Constants
+
+// Class declaration
+
+/*!
+    \class CmDestinationShim
+    \brief Implementation class for CM Manager Destination Shim.
+
+    Wrapper for CM Manager Symbian interface.
+    
+    NOTE! This shim is supposed to be used only in middleware code. Usage
+    must be agreed with ipconnmgmt package owner. Applications should use
+    the Qt Bearer Management API instead.
+*/
+
+class CONNECTIONSETTINGSSHIMDLL_EXPORT CmDestinationShim
+{
+
+public:
+    
+    // Data types
+
+    /*!
+     *  Constructor.
+     *  
+     *  @param[in] destination CM Manager destination object.
+     */
+    CmDestinationShim(RCmDestination &destination);
+
+    /*!
+     *  Destructor.
+     */
+    ~CmDestinationShim();
+    
+    /*!
+     * Return the number of connection methods in the destination.
+     * 
+     * @return Number of the connection methods in this destination.
+     */                 
+    int connectionMethodCount() const;
+           
+    /*!
+     * Return a reference to the connection method. The index must be less
+     * than the return value of connectionMethodCount().
+     * 
+     * @param[in] index Index of the connection method to be returned.
+     * @return Connection method.
+     */
+    CmConnectionMethodShim *connectionMethod(int index) const;
+           
+    /*!
+     * Returns the connection method with the given ID.
+     * 
+     * @param cmId Unique id of the requested connection method.
+     * @return Connection method.
+     */
+    CmConnectionMethodShim *connectionMethodByID(uint cmId) const;
+
+    // Getting attributes
+
+    /*!
+     * Return the priority of the passed connection method.
+     * 
+     * @param cmItem Connection method.
+     * @return Priority of the queried connection method.
+     */
+    uint priority(CmConnectionMethodShim *cmItem) const;
+           
+    /*!
+     * Return the name of the destination. 
+     * 
+     * @return Name of the destination, empty string in error cases.
+     */      
+    QString name() const;
+           
+    /*!
+     * Return the destination's Id attribute.
+     * 
+     * @return Id of the destination.
+     */
+    uint id() const;
+
+    /*!
+     * Returns the Metadata.
+     *
+     * @param metadataField The meta data field to query.
+     * @return The value of the requested field.
+     */
+    uint metadata(CMManagerShim::SnapMetadataField metadataField) const;
+
+    /*!
+     * Return the protection level of the destination.
+     * 
+     * @return Protection level.
+     */
+    CMManagerShim::CmmProtectionLevel protectionLevel() const;
+           
+    /*!
+     * Return whether the destination is hidden or not.
+     * 
+     * @return True if the destination is hidden.
+     */
+    bool isHidden() const;
+           
+    /*!
+     * Adds an existing connection method to a destination.
+     * 
+     * @param cm Connection method to be added.
+     * @return Index in the Connection Method list.
+     */
+    int addConnectionMethod(CmConnectionMethodShim *cm);            
+       
+    /*!
+     * Remove a connection method from a destination and delete it
+     * on update. 
+     * Exception: connection method is not deleted, if it's referenced 
+     * from any other destination.
+     * 
+     * @param cm The connection method to be deleted.
+     */
+    void deleteConnectionMethod(CmConnectionMethodShim *cm);
+       
+    /*!
+     * Remove connection method from the destination.
+     * 
+     * @param cm Connection method to be removed.
+     */
+    void removeConnectionMethod(CmConnectionMethodShim *cm);
+             
+    /*!
+     * Set the connection method's priority based on the passed
+     * index. Indexing starts from zero(the highest priority).
+     * 
+     * @param cm The connection method item
+     * @param index The new priority of the connection method in the 
+     *              destination.
+     */
+    void modifyPriority(CmConnectionMethodShim *cm, int index);
+           
+    /*!
+     * Set the destination's name.
+     * 
+     * @param name New name of the destination.
+     */
+    void setName(QString name);
+              
+    /*!
+     * Update all values of the destination and its connection methods to
+     * CommsDat. Nothing is stored, if update leaves due to any reason.
+     */
+    void update();
+    
+    /*!
+     * Reload the contents of the destination from database.
+     * Any current changes made to the destination are lost.
+     */
+    void refresh();
+
+    /*!
+     * Delete destination and its connection methods from CommsDat.
+     * Connection methods that belong also to some other destination are
+     * not deleted.
+     */
+    void deleteDestination();
+
+protected:
+
+private:
+    
+private: // data
+    
+    CmDestinationShimPrivate *d_ptr;  //!< Private implementation
+
+    // Friend classes
+    
+};
+
+#endif /* CMDESTINATION_SHIM_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipcm_plat/connection_settings_shim_api/inc/cmmanager_shim.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 2010 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:  
+ * Wrapper for CM Manager Symbian interface.
+ */
+
+#ifndef CMMANAGER_SHIM_H
+#define CMMANAGER_SHIM_H
+
+// System includes
+
+#include <QString>
+#include <cmmanager.h>
+#include <cmmanagerdefines_shim.h>
+
+// User includes
+
+// Forward declarations
+
+class CmDestinationShim;
+class CmManagerShimPrivate;
+class CmConnectionMethodShim;
+
+// External data types
+
+// Constants
+
+// Class declaration
+
+/*!
+    \class CmManagerShim
+    \brief Implementation class for CM Manager Shim.
+
+    Wrapper for CM Manager Symbian interface.
+    
+    NOTE! This shim is supposed to be used only in middleware code. Usage
+    must be agreed with ipconnmgmt package owner. Applications should use
+    the Qt Bearer Management API instead.
+*/
+
+class CONNECTIONSETTINGSSHIMDLL_EXPORT CmManagerShim
+{
+
+public: 
+
+    // Data types
+
+    /*!
+     *  Constructor.
+     */
+    CmManagerShim();
+
+    /*!
+     *  Destructor.
+     */
+    ~CmManagerShim();
+    
+    /*!
+     * Creates a Destination with the passed name.
+     * 
+     * @param[in] name The name of the new destination.
+     * @return New destination. Ownership is passed to the caller.
+     */
+    CmDestinationShim *createDestination(QString name);
+    
+    /*!
+     * Creates a connection method that does not belong to any destination.
+     * 
+     * @param[in] bearerType Bearer type of the new connection method. Types
+     *                       are defined in cmmanagerdefines_shim.h.
+     * @return New connection method. Ownership is passed to the caller.
+     */
+    CmConnectionMethodShim *createConnectionMethod(uint bearerType);
+
+    /*!
+     * Returns the connection method queried by its ID.
+     * 
+     * @param[in] connectionMethodId Id of the connection method.
+     * @return Found connection method instance.
+     */
+    CmConnectionMethodShim *connectionMethod(uint connectionMethodId) const;
+    
+    /*!
+     * Returns the list of connection methods that do not belong to any 
+     * destination.
+     * 
+     * @param[out] cmArray On return it is the array of connection method ids.
+     * @param[in] legacyOnly When set to true only Legacy connection method
+     *                       ids (connection methods which do not belong to
+     *                       any destination) will be returned
+     */
+    void connectionMethod(
+        QList<uint> &cmArray,
+        bool legacyOnly = true) const;
+    
+    /*!
+     * Returns the destination queried by its ID.
+     * 
+     * @param[in] destinationId Id of the destination.
+     * @return Found network destination.
+     */
+    CmDestinationShim *destination(uint destinationId) const;
+            
+    /*!
+     * Returns an array of all destination id's.
+     * 
+     * @param[out] destArray Array of all available network destinations.
+     */ 
+    void allDestinations(QList<uint> &destArray) const;
+    
+protected:
+
+private:
+    
+private: // data
+    
+    CmManagerShimPrivate *d_ptr;  //!< Private implementation
+};
+
+#endif /* CMMANAGER_SHIM_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipcm_plat/connection_settings_shim_api/inc/cmmanagerdefines_shim.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,246 @@
+/*
+ * Copyright (c) 2010 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:  
+ * Defines for data types and attributes used in CmManagerShim interface.
+ */
+
+#ifndef CMMANAGERDEFINES_SHIM_H
+#define CMMANAGERDEFINES_SHIM_H
+
+// System includes
+
+#include <cmmanagerdef.h>
+#include <cmconnectionmethoddef.h>
+#include <cmpluginwlandef.h>
+#include <cmpluginpacketdatadef.h>
+
+// User includes
+
+// Macro for exporting Shim classes
+#ifdef BUILD_CONNECTIONSETTINGSSHIMDLL_DLL
+#define CONNECTIONSETTINGSSHIMDLL_EXPORT Q_DECL_EXPORT
+#else
+#define CONNECTIONSETTINGSSHIMDLL_EXPORT Q_DECL_IMPORT
+#endif
+
+/*!
+ *  Constants and data types used in CmManagerShim, CmDestinationShim,
+ *  and CmConnectionMethodShim interfaces.
+ */
+namespace CMManagerShim
+{
+    //! Wlan bearer type
+    const uint BearerTypeWlan           = KUidWlanBearerType;
+    //! Packet data bearer type
+    const uint BearerTypePacketData     = KUidPacketDataBearerType;
+
+    /*!
+     *  Constants for maximum string lengths.
+     */
+    //! Connection name length
+    const uint CmNameLength                 = 30;
+    //! Homepage address length
+    const uint CmStartPageLength            = 1024;
+    //! IPv6 DNS address length
+    const uint CmIP6NameServerLength        = 50;
+    //! Proxy server address length
+    const uint CmProxyServerNameLength      = 1024;
+    //! Proxy server port number length
+    const uint CmProxyPortNumberLength      = 5;
+    //! Packet data AP name length
+    const uint PacketDataAPNameLength       = 100;
+    //! Packet data AP user name length
+    const uint PacketDataIFAuthNameLength   = 50;
+    //! Packet data AP password length
+    const uint PacketDataIFAuthPassLength   = 50;
+    //! WLAN SSID length
+    const uint WlanSSIDLength               = 32;
+    
+    /*!
+     *  Enumerations for connection method attributes.
+     */
+    enum ConnectionMethodAttribute {
+        // Common attributes        
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmBearerType                    = CMManager::ECmBearerType,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmName                          = CMManager::ECmName,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmIapId                         = CMManager::ECmIapId,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmHidden                        = CMManager::ECmHidden,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmProtected                     = CMManager::ECmProtected,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmNetworkId                     = CMManager::ECmNetworkId,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmId                            = CMManager::ECmId,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmStartPage                     = CMManager::ECmStartPage,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmIPv6Supported                 = CMManager::ECmIPv6Supported,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmIPDNSAddrFromServer           = CMManager::ECmIPDNSAddrFromServer,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmIPAddress                     = CMManager::ECmIPAddress,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmIPNameServer1                 = CMManager::ECmIPNameServer1,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmIPNameServer2                 = CMManager::ECmIPNameServer2,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmIP6DNSAddrFromServer          = CMManager::ECmIP6DNSAddrFromServer,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmIP6NameServer1                = CMManager::ECmIP6NameServer1,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmIP6NameServer2                = CMManager::ECmIP6NameServer2,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmProxyUsageEnabled             = CMManager::ECmProxyUsageEnabled,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmProxyProtocolName             = CMManager::ECmProxyProtocolName,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmProxyServerName               = CMManager::ECmProxyServerName,
+        //! From TConnectionMethodCommonAttributes in cmconnectionmethoddef.h
+        CmProxyPortNumber               = CMManager::ECmProxyPortNumber,
+
+        // Packet data specific attributes
+        /*!
+         * From TConnectionMethodPacketDataSpecificAttributes in
+         * cmpluginpacketdatadef.h
+         */
+        PacketDataAPName                = CMManager::EPacketDataAPName,
+        /*!
+         * From TConnectionMethodPacketDataSpecificAttributes in
+         * cmpluginpacketdatadef.h
+         */
+        PacketDataIFPromptForAuth       = CMManager::EPacketDataIFPromptForAuth,
+        /*!
+         * From TConnectionMethodPacketDataSpecificAttributes in
+         * cmpluginpacketdatadef.h
+         */
+        PacketDataIFAuthName            = CMManager::EPacketDataIFAuthName,
+        /*!
+         * From TConnectionMethodPacketDataSpecificAttributes in
+         * cmpluginpacketdatadef.h
+         */
+        PacketDataIFAuthPass            = CMManager::EPacketDataIFAuthPass,
+        /*!
+         * From TConnectionMethodPacketDataSpecificAttributes in
+         * cmpluginpacketdatadef.h
+         */
+        PacketDataDisablePlainTextAuth  = CMManager::EPacketDataDisablePlainTextAuth,
+        
+        // WLAN specific attributes
+        //!  From TConnectionMethodWlanSpecificAttributes in cmpluginwlandef.h
+        WlanConnectionMode              = CMManager::EWlanConnectionMode,
+        //!  From TConnectionMethodWlanSpecificAttributes in cmpluginwlandef.h
+        WlanSSID                        = CMManager::EWlanSSID,
+        //!  From TConnectionMethodWlanSpecificAttributes in cmpluginwlandef.h
+        WlanSecurityMode                = CMManager::EWlanSecurityMode,
+        //!  From TConnectionMethodWlanSpecificAttributes in cmpluginwlandef.h
+        WlanScanSSID                    = CMManager::EWlanScanSSID,
+        //!  From TConnectionMethodWlanSpecificAttributes in cmpluginwlandef.h
+        WlanWepKey1InHex                = CMManager::EWlanWepKey1InHex,
+        //!  From TConnectionMethodWlanSpecificAttributes in cmpluginwlandef.h
+        WlanWepKey2InHex                = CMManager::EWlanWepKey2InHex,
+        //!  From TConnectionMethodWlanSpecificAttributes in cmpluginwlandef.h
+        WlanWepKey3InHex                = CMManager::EWlanWepKey3InHex,
+        //!  From TConnectionMethodWlanSpecificAttributes in cmpluginwlandef.h
+        WlanWepKey4InHex                = CMManager::EWlanWepKey4InHex,
+        //!  From TConnectionMethodWlanSpecificAttributes in cmpluginwlandef.h
+        WlanWepKey1InAscii              = CMManager::EWlanWepKey1InAscii,
+        //!  From TConnectionMethodWlanSpecificAttributes in cmpluginwlandef.h
+        WlanWepKey2InAscii              = CMManager::EWlanWepKey2InAscii,
+        //!  From TConnectionMethodWlanSpecificAttributes in cmpluginwlandef.h
+        WlanWepKey3InAscii              = CMManager::EWlanWepKey3InAscii,
+        //!  From TConnectionMethodWlanSpecificAttributes in cmpluginwlandef.h
+        WlanWepKey4InAscii              = CMManager::EWlanWepKey4InAscii,
+        //!  From TConnectionMethodWlanSpecificAttributes in cmpluginwlandef.h
+        WlanWepKeyIndex                 = CMManager::EWlanWepKeyIndex,
+        //!  From TConnectionMethodWlanSpecificAttributes in cmpluginwlandef.h
+        WlanEnableWpaPsk                = CMManager::EWlanEnableWpaPsk,
+        //!  From TConnectionMethodWlanSpecificAttributes in cmpluginwlandef.h
+        WlanWpaPreSharedKey             = CMManager::EWlanWpaPreSharedKey
+    };
+    
+    /*!
+     * Enumerations for Wlan connection modes. Values come from
+     * TWlanNetMode in cmpluginwlandef.h
+     */
+    enum WlanConnMode {
+        Adhoc                           = CMManager::EAdhoc,
+        Infra                           = CMManager::EInfra
+    };
+    
+    /*!
+     * Enumerations for Wlan security modes. Values come from
+     * TWlanSecMode in cmpluginwlandef.h
+     */
+    enum WlanSecMode {
+        WlanSecModeOpen                 = CMManager::EWlanSecModeOpen,
+        WlanSecModeWep                  = CMManager::EWlanSecModeWep,
+        WlanSecMode802_1x               = CMManager::EWlanSecMode802_1x,
+        WlanSecModeWpa                  = CMManager::EWlanSecModeWpa,
+        WlanSecModeWpa2                 = CMManager::EWlanSecModeWpa2,
+        WlanSecModeWapi                 = CMManager::EWlanSecModeWAPI
+    };
+    
+    /*!
+     * Enumerations for Wlan WEP key index. Values come from
+     * TWepKeyIndex in cmpluginwlandef.h
+     */
+    enum WlanWepKeyIndex {
+        WepKeyIndex1                    = CMManager::EWepKeyIndex1,
+        WepKeyIndex2                    = CMManager::EWepKeyIndex2,
+        WepKeyIndex3                    = CMManager::EWepKeyIndex3,
+        WepKeyIndex4                    = CMManager::EWepKeyIndex4
+    };
+
+    /*!
+     * Enumerations for SNAP metadata items. Values come from
+     * TSnapMetadataField in cmmanagerdef.h
+     */
+    enum SnapMetadataField {
+        SnapMetadataInternet            = CMManager::ESnapMetadataInternet,
+        SnapMetadataHighlight           = CMManager::ESnapMetadataHighlight,
+        SnapMetadataHiddenAgent         = CMManager::ESnapMetadataHiddenAgent,
+        SnapMetadataDestinationIsLocalised = CMManager::ESnapMetadataDestinationIsLocalised,
+        SnapMetadataPurpose             = CMManager::ESnapMetadataPurpose
+    };
+    
+    /*!
+     * Enumerations for SnapMetadataPurpose. Values come from
+     * TSnapPurpose in cmmanagerdef.h
+     */
+    enum SnapPurpose
+        {
+        SnapPurposeUnknown              = CMManager::ESnapPurposeUnknown,
+        SnapPurposeInternet             = CMManager::ESnapPurposeInternet,
+        SnapPurposeOperator             = CMManager::ESnapPurposeOperator,
+        SnapPurposeMMS                  = CMManager::ESnapPurposeMMS,
+        SnapPurposeIntranet             = CMManager::ESnapPurposeIntranet
+        };
+    
+    /*!
+     * Enumerations for CM Manager protection levels. Values come from
+     * TProtectionLevel in cmmanagerdef.h
+     */
+    enum CmmProtectionLevel {
+        ProtLevel0                      = CMManager::EProtLevel0,
+        ProtLevel1                      = CMManager::EProtLevel1,
+        ProtLevel2                      = CMManager::EProtLevel2,
+        ProtLevel3                      = CMManager::EProtLevel3
+    };
+}
+
+#endif // CMMANAGERDEFINES_SHIM_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipcm_plat/connection_settings_ui_api/connection_settings_ui_api.pri	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,18 @@
+#
+# Copyright (c) 2010 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:
+#
+
+PLATFORM_HEADERS += \
+    connection_settings_ui_api/inc/cmapplsettingsui.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipcm_plat/connection_settings_ui_api/inc/cmapplsettingsui.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,240 @@
+/*
+* Copyright (c) 2010 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:
+* CM Manager Application Settings UI interface.  
+*
+*/
+
+#ifndef CMAPPLSETTINGSUI_H
+#define CMAPPLSETTINGSUI_H
+
+// System includes
+
+#include <QObject>
+#include <QFlags>
+#include <QSet>
+
+// User includes
+
+// Forward declarations
+
+class CmApplSettingsUiPrivate;
+class TestCmApplSettingsUi;
+
+// External data types
+
+// Constants
+
+#ifdef BUILD_CMAPPLSETTINGSUI_DLL
+#define CMAPPLSETTINGSUIDLL_EXPORT Q_DECL_EXPORT
+#else
+#define CMAPPLSETTINGSUIDLL_EXPORT Q_DECL_IMPORT
+#endif
+
+// Class declaration
+
+/*!
+    \class CmApplSettingsUi
+    \brief Class for launching the Application Settings UI.
+
+    Displays a radio button list dialog for an application that can be used
+    to select a destination or connection method.
+
+*/
+
+class CMAPPLSETTINGSUIDLL_EXPORT CmApplSettingsUi : public QObject
+{
+    Q_OBJECT
+    
+public:
+
+    // Data types
+
+    /*! 
+       The selection type of a list item in application settings UI
+     */
+    enum SelectionType
+        {
+        //! The user selected a destination
+        SelectionTypeDestination,
+        //! The user selected a connection method
+        SelectionTypeConnectionMethod
+        };
+
+    /*! 
+       These flags control what items the selection UI can contain.
+       Flags that are not listed in the enum are reserved for future usage
+       and they are disabled by default. So extending these flags later on
+       does not cause a BC break. These flags are used as bit fields.
+       
+       The following enumerations control how destinations and 
+       Connection Methods are presented in the selection UI.
+       
+       ShowDestinations is set and ShowConnectionMethods is set:
+         Destination list is shown in selection UI and alternatively
+         the user can select a Connection Method.
+       ShowDestinations is set and ShowConnectionMethods is not set:
+         Destination list is shown in selection UI and no specific
+         Connection Method can be selected. 
+       ShowDestinations is not set and ShowConnectionMethods is set:
+         Connection Method list is shown in selection UI. Destinations
+         can not be selected.
+       ShowDestinations is not set and ShowConnectionMethods is not set:
+         The selection UI will not contain any Destination or
+         Connection Method. If no extension(s) are implemented  (later
+         on), no dialog is shown, and the execution is cancelled
+         (ApplSettingsErrorNoContent).
+     */
+    enum SelectionDialogItems
+        {
+        //! Support destination selection
+        ShowDestinations = 0x01,
+        //! Support connection method selection
+        ShowConnectionMethods = 0x02                              
+        };
+    
+    /*!
+       Error codes for the dialog.
+     */
+    enum ApplSettingsError {
+        //! No error. Dialog succeeded.
+        ApplSettingsErrorNone = 0,
+        //! Selection was canceled.
+        ApplSettingsErrorCancel,
+        //! No items to show (e.g. too strict filters).
+        ApplSettingsErrorNoContent,
+        //! Settings reading failed.
+        ApplSettingsErrorSettingsRead
+    };
+
+    /*!
+       Details of a setting selection. Used both for configuring and
+       selection result.
+     */
+    struct SettingSelection
+        {
+        /*!
+           Selection type, refers to the type of the list item which
+           is selected.
+         */
+        SelectionType result;
+        
+        /*!
+           Id of the selected destination or connection method.
+         */
+        uint id;
+        };
+    
+    /*!
+       Typedef for the bearer filter parameter.
+       This type is used to filter Connection Methods by bearer type.
+
+       The Bearer types are defined in CM Manager's Connection Settings
+       Shim (cmmanagerdefines_shim.h). 
+     */
+    typedef uint BearerTypeFilter;
+    
+    /*!
+        Constructor.
+        
+        @param parent Parent object.
+     */
+    explicit CmApplSettingsUi(QObject *parent = 0);
+    
+    /*!
+        Destructor.
+     */
+    virtual ~CmApplSettingsUi();
+
+    /*!
+        Set dialog options. If this function is not called before running the
+        dialog, the default options are used:
+        -listItems: ShowDestinations | ShowConnectionMethods
+        -bearerFilter: empty
+
+        @param[in] listItems Dialog list items configuration.
+        @param[in] bearerFilter Dialog Connection Method bearer type filter.
+        If empty, all bearers are supported.
+     */
+    void setOptions(
+        const QFlags<SelectionDialogItems> &listItems,
+        const QSet<BearerTypeFilter> &bearerFilter);
+
+    /*!
+        Dialog selection setter. Sets the current selection in the dialog.
+        If not selected, or if the selection is invalid, the default
+        selection is used (the first item in the dialog items list).
+
+        @param[in] selection Dialog selection to set.
+     */
+    void setSelection(const SettingSelection &selection);
+
+    /*!
+        Dialog selection getter. Returns the current selection.
+
+        @return Current dialog selection.
+     */
+    SettingSelection selection() const;
+
+    /*!
+        Launches the Application Settings UI provided for applications
+        for selecting Destinations and/or Connection Methods.
+
+        If a list of Destinations is displayed, and the selection is set to
+        a Connection Method, the destination list highlight is set to
+        "Dedicated access point".
+
+        This function runs the dialog asynchronously.  After the dialog
+        has been closed (or cancelled), the signal finished() is emmitted.
+        If the dialog succeeded, the client can then check the new
+        selection with selection() getter.
+     */
+    void open();
+
+signals:
+
+    /*!
+       Signal used for informing that the dialog has finished.
+       
+       @param[in] status Dialog run status code (ApplSettingsError*).
+     */
+    void finished(uint status);
+
+public slots:
+
+protected:
+
+protected slots:
+
+private:
+
+    Q_DISABLE_COPY(CmApplSettingsUi)
+
+private slots:
+
+private: // data
+
+    CmApplSettingsUiPrivate *d_ptr;         //!< Private implementation
+
+    // Friend classes
+    
+    // This is defined as a friend class in order to be able to emit
+    // signals directly from private implementation code.
+    friend class CmApplSettingsUiPrivate;
+    
+    // Test class needs direct access
+    friend class TestCmApplSettingsUi;
+};
+
+#endif // CMAPPLSETTINGSUI_H
--- a/ipcm_plat/connection_ui_utilities_api/inc/ConnectionUiUtilities.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_plat/connection_ui_utilities_api/inc/ConnectionUiUtilities.h	Mon May 03 12:53:07 2010 +0300
@@ -108,18 +108,35 @@
         
         /**
         * Pops up discreet popup indicating that connection is being
+        * established to not yet known access point. The access point details
+        * can be later provided with ConnectingViaDiscreetPopup( aIAPId,
+        * aConnectionAlreadyActive) method.
+        * This method should only be used from the MPM in order to provide
+        * a consistent popup behavior across the platform.
+        */
+        IMPORT_C void ConnectingViaDiscreetPopup( );
+
+        /**
+        * Pops up discreet popup indicating that connection is being
         * established to the given access point.
         * 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.
+        * @param aConnectionActive ETrue connection already active.
         */
-        IMPORT_C void ConnectingViaDiscreetPopup( const TUint32& aIAPId, TBool aConnectionAlreadyActive );
+        IMPORT_C void ConnectingViaDiscreetPopup( const TUint32& aIAPId,
+                TBool aConnectionAlreadyActive );
+
+        /**
+        * Cancels (hides) connecting via discreet popup.
+        * This method should only be used from the MPM in order to provide
+        * a consistent popup behavior across the platform.
+        */
+        IMPORT_C void CancelConnectingViaDiscreetPopup( );
 
         /**
         * Pops up a discreet popup indicating a connection error.
-        * Only appropriate error codes show the popup, otherwise
-        * (such as with general errors) the popup is not shown.
+        * Only appropriate error codes show the popup.
         * This method should only be used from the MPM in order to provide
         * a consistent popup behavior across the platform.
         * @param aErrCode Symbian error code.
--- a/ipcm_plat/extended_connection_settings_api/group/bld.inf	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_plat/extended_connection_settings_api/group/bld.inf	Mon May 03 12:53:07 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006-2010 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"
@@ -11,8 +11,8 @@
 *
 * Contributors:
 *
-* Description:  File that exports the files belonging to 
-:                Extended Connection Settings API
+* Description:
+* File that exports the files belonging to Extended Connection Settings API.
 *
 */
 
@@ -24,10 +24,10 @@
 
 PRJ_EXPORTS
 
-../inc/cmdestinationext.h     MW_LAYER_PLATFORM_EXPORT_PATH(cmdestinationext.h)
-../inc/cmconnectionmethodext.h     MW_LAYER_PLATFORM_EXPORT_PATH(cmconnectionmethodext.h)
-../inc/cmpsettingsconsts.h     MW_LAYER_PLATFORM_EXPORT_PATH(cmpsettingsconsts.h)
-../inc/cmsettingsui.h     MW_LAYER_PLATFORM_EXPORT_PATH(cmsettingsui.h)
-../inc/cmcommonui.h     MW_LAYER_PLATFORM_EXPORT_PATH(cmcommonui.h)
-../inc/cmmanagerext.h     MW_LAYER_PLATFORM_EXPORT_PATH(cmmanagerext.h)
-../inc/cmmanagerkeys.h    MW_LAYER_PLATFORM_EXPORT_PATH(cmmanagerkeys.h)
+../inc/cmdestinationext.h       MW_LAYER_PLATFORM_EXPORT_PATH(cmdestinationext.h)
+../inc/cmconnectionmethodext.h  MW_LAYER_PLATFORM_EXPORT_PATH(cmconnectionmethodext.h)
+../inc/cmpsettingsconsts.h      MW_LAYER_PLATFORM_EXPORT_PATH(cmpsettingsconsts.h)
+../inc/cmsettingsui.h           MW_LAYER_PLATFORM_EXPORT_PATH(cmsettingsui.h)
+../inc/cmcommonui.h             MW_LAYER_PLATFORM_EXPORT_PATH(cmcommonui.h)
+../inc/cmmanagerext.h           MW_LAYER_PLATFORM_EXPORT_PATH(cmmanagerext.h)
+../inc/cmmanagerkeys.h          MW_LAYER_PLATFORM_EXPORT_PATH(cmmanagerkeys.h)
--- a/ipcm_plat/extended_connection_settings_api/inc/cmconnectionmethodext.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_plat/extended_connection_settings_api/inc/cmconnectionmethodext.h	Mon May 03 12:53:07 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006-2010 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"
@@ -11,20 +11,22 @@
 *
 * Contributors:
 *
-* Description:  Connection method extended interface class.
+* Description:
+* Connection method extended interface class.
 *
 */
 
+
 #ifndef CMCONNECTIONMETHODEXT_H
 #define CMCONNECTIONMETHODEXT_H
 
-// INCLUDES
 #include <e32base.h>
 #include <cmconnectionmethoddef.h>
 
-// CLASS DECLARATION
-class CCmPluginBaseEng;
+// Forward declarations
 class RCmDestinationExt;
+class CCmConnectionMethodWrapper;
+
 
 /**
  *  RCmConnectionMethodExt is for getting/setting values of a connection method.
@@ -34,44 +36,36 @@
  */
 NONSHARABLE_CLASS( RCmConnectionMethodExt )
     {
-    //=====================================================================
-    // Constructors/Destructors
-    // 
     public:
-    
         /**
-        * Default constructor. 
+        * Default constructor.
         */
         IMPORT_C RCmConnectionMethodExt();
 
+        /**
+        * Copy constructor.
+        */
+        IMPORT_C RCmConnectionMethodExt(
+                const RCmConnectionMethodExt& aConnMethod );
 
         /**
-        * Copy constructor. 
-        */
-        IMPORT_C RCmConnectionMethodExt(const RCmConnectionMethodExt& aItem);
-
-
-        /**
-        * Destructor. 
+        * Destructor.
         */
         IMPORT_C ~RCmConnectionMethodExt();
 
-    //=====================================================================
-    // API functions
     public:
-    
         /**
         * Close the session.
         */
         IMPORT_C void Close();
-        
+
         /**
-        * Creates a copy of this connection method. UpdateL() has to be called 
+        * Creates a copy of this connection method. UpdateL() has to be called
         * to store new connection method in database. Copy is put to
         * the Uncategorized destination. The ownership is passed.
         */
         IMPORT_C RCmConnectionMethodExt CreateCopyL();
-            
+
         /**
         * Gets the value for a TInt attribute.
         * @param aAttribute Identifies the attribute to be retrived.
@@ -93,7 +87,7 @@
         * @return copy of the requested attribute. Ownership is passed.
         */
         IMPORT_C HBufC* GetStringAttributeL( TUint32 aAttribute ) const;
-        
+
         /**
         * Gets the value for a String8 attribute.
         * HBuf ownership is passed to the caller
@@ -124,18 +118,20 @@
         * @param aValue The value to be set.
         * @return None.
         */
-        IMPORT_C void SetStringAttributeL( TUint32 aAttribute, 
-                                           const TDesC16& aValue );
-        
+        IMPORT_C void SetStringAttributeL(
+                TUint32 aAttribute,
+                const TDesC16& aValue );
+
         /**
         * Sets the value for a String8 attribute.
         * @param aAttribute Identifies the attribute to be set.
         * @param aValue The value to be set.
         * @return None.
         */
-        IMPORT_C void SetString8AttributeL( TUint32 aAttribute, 
-                                            const TDesC8& aValue );
-        
+        IMPORT_C void SetString8AttributeL(
+                TUint32 aAttribute,
+                const TDesC8& aValue );
+
         /**
         * Call this function only if this CM is an embedded destination!
         * @return embedded destination
@@ -143,8 +139,8 @@
         IMPORT_C RCmDestinationExt DestinationL() const;
 
         /**
-        * Try to delete the connection method. If it is referenced from 
-        * any destination, then the references are removed and the 
+        * Try to delete the connection method. If it is referenced from
+        * any destination, then the references are removed and the
         * connection method is deleted.
         * Do NOT call this function if you got this
         * connection method from a destination. Call destination's
@@ -152,51 +148,49 @@
         * @return ETrue if connection method deleted.
         */
         IMPORT_C TBool DeleteL();
-        
+
         /**
         * Update in the database.
         * @return None.
-        */        
+        */
         IMPORT_C void UpdateL();
-        
+
         /**
-        * checks if connection methods are the same 
-        * 
+        * checks if connection methods are the same
+        *
         * @since S60 3.2
         * @param aConnMethod the connection method being compared
         * @return ETrue if the destinations are the same
         */
         IMPORT_C TBool operator==( RCmConnectionMethodExt& aConnMethod ) const;
-        
+
         /**
-        * checks if connection methods are not the same 
-        * 
+        * checks if connection methods are not the same
+        *
         * @since S60 3.2
         * @param aConnMethod the connection method being compared
         * @return ETrue if the destinations are different
         */
         IMPORT_C TBool operator!=( RCmConnectionMethodExt& aConnMethod ) const;
-        
+
 
         /**
-        * assignment operator 
-        * 
+        * assignment operator
+        *
         * @since S60 3.2
         * @return RCmConnectionMethod
         */
-        IMPORT_C RCmConnectionMethodExt& operator=(const RCmConnectionMethodExt& 
-                                                    aConnMethod);
+        IMPORT_C RCmConnectionMethodExt& operator=(
+                const RCmConnectionMethodExt& aConnMethod );
 
     private:
-    
         friend class RCmManagerExt;
         friend class RCmDestinationExt;
-        
+
     private:
-    
-        CCmPluginBaseEng* iImplementation;
+        CCmConnectionMethodWrapper* iCmConnectionMethodWrapper;
     };
 
-#endif      // CMCONNECTIONMETHODEXT_H
-           
-//  End of File
\ No newline at end of file
+#endif // CMCONNECTIONMETHODEXT_H
+
+// End of file
--- a/ipcm_plat/extended_connection_settings_api/inc/cmdestinationext.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_plat/extended_connection_settings_api/inc/cmdestinationext.h	Mon May 03 12:53:07 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006-2010 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"
@@ -11,45 +11,36 @@
 *
 * Contributors:
 *
-* Description:  Destination extended interface class.
+* Description:
+* Destination extended interface class.
 *
 */
 
-#ifndef DESTINATIONEXT_H
-#define DESTINATIONEXT_H
 
-// System includes
-#include <E32def.h>
+#ifndef CMDESTINATIONEXT_H
+#define CMDESTINATIONEXT_H
+
 #include <e32base.h>
 #include <metadatabase.h>
 #include <cmmanagerdef.h>
 
-// FORWARD DECLARATIONS
-class CCmDestinationData;
-class CCmManagerImpl;
+// Forward declarations
 class RCmConnectionMethodExt;
-class RCmDestinationExt;
-class CGulIcon;
+class CCmDestinationWrapper;
+
 
 /**
  *  RCmDestination is for getting/setting values of a network destination.
  *  @lib cmmanager.lib
  *  @since S60 v3.2
  */
-NONSHARABLE_CLASS(RCmDestinationExt)
+NONSHARABLE_CLASS( RCmDestinationExt )
     {
-    //=====================================================================
-    // Constructors/Destructors
-    // 
     public:
-    
         /** Default constructor. */
         IMPORT_C RCmDestinationExt();
 
-    //=====================================================================
-    // API functions
     public:
-        
         /**
         * Close the session.
         */
@@ -57,180 +48,164 @@
 
         IMPORT_C ~RCmDestinationExt();
 
-        IMPORT_C RCmDestinationExt(const RCmDestinationExt& aCmDestination);
-        
-        //=====================================================================
-        // Conn method handling    
-        
+        IMPORT_C RCmDestinationExt( const RCmDestinationExt& aDestination );
+
         /**
         * Return the number of connection methods in the destination
         * @param None
         * @return number of the connection method in this destination
-        */                 
+        */
         IMPORT_C TInt ConnectionMethodCount();
-        
+
         /**
-        * Return a reference to the connection method. 
-        * The index must be less than the return value of 
+        * Return a reference to the connection method.
+        * The index must be less than the return value of
         * ConnectionMethodCount()
         * @param anIndex index of the connection method to be returned
         * @return connection method
-        */        
-        IMPORT_C RCmConnectionMethodExt ConnectionMethodL( TInt anIndex );
-        
+        */
+        IMPORT_C RCmConnectionMethodExt ConnectionMethodL( TInt aIndex );
+
         /**
         * Returns the connection method with the ECmId.
         * Leaves with KErrNotFound if not found.
         * @param aCmId unique id of the requested connection method.
         * @return connection method
         */
-        IMPORT_C RCmConnectionMethodExt ConnectionMethodByIDL( 
-                                                        TInt aCmId );
-
-        //Getting attributes
+        IMPORT_C RCmConnectionMethodExt ConnectionMethodByIDL(
+                TInt aConnMethodId );
 
         /**
         * Return the priority of the passed connection method
         * @param aCCMItem connection method
-        * @return the priority of the queried connection method 
+        * @return the priority of the queried connection method
         */
-        IMPORT_C TUint PriorityL(const RCmConnectionMethodExt& aCCMItem );
-        
+        IMPORT_C TUint PriorityL(
+                const RCmConnectionMethodExt& aConnectionMethod );
+
         /**
         * Return the name of the destination. Ownership is passed.
         * HBuf ownership is passed to the caller
         * @return name of the destination.
-        */      
-        IMPORT_C HBufC* NameLC();                        
-        
+        */
+        IMPORT_C HBufC* NameLC();
+
         /**
         * Return the destination's Id attribute
         * @return id of the destination
-        */                    
+        */
         IMPORT_C TUint32 Id();
 
         /**
         * Return the destination's ElementId attribute
-        * @return TUint32        
-        */            
+        * @return TUint32
+        */
         IMPORT_C TUint32 ElementId();
-                
-        /**
-        * Return the Icon pointer. Ownership is passed.
-        * This fucton leaves if the client does not have a valid UI context
-        * @return icon of the destination
-        */ 
-        IMPORT_C CGulIcon* IconL();
-    
+
         /**
         * Return the Metadata
-        * @return TUint32        
-        */            
-        IMPORT_C TUint32 MetadataL( CMManager::TSnapMetadataField aMetaField ) const;
-    
+        * @return TUint32
+        */
+        IMPORT_C TUint32 MetadataL(
+                CMManager::TSnapMetadataField aMetadataField ) const;
+
         /**
         * Return the protection level of the destination.
         * @return protection level
         */
         IMPORT_C CMManager::TProtectionLevel ProtectionLevel();
-        
+
         /**
         * Return that the destination is hidden or not.
         * @return ETrue if the destination is hidden
         */
-        IMPORT_C TBool IsHidden();        
-                
+        IMPORT_C TBool IsHidden();
+
         /**
         * Create a connection method that belongs to this destination.
-        * @param aImplementationUid - implementation uid (bearer type) of the 
+        * @param aImplementationUid - implementation uid (bearer type) of the
         * connection method to be created
         * @return newly created connection method
         */
-        IMPORT_C RCmConnectionMethodExt CreateConnectionMethodL( 
-                                                          TUint32 aBearerType );
-        
+        IMPORT_C RCmConnectionMethodExt CreateConnectionMethodL(
+                TUint32 aBearerType );
+
         /*
         * Adds an existing connection method to a destination
         * @param aConnectionMethod Connection method to be added
         * @return index in the Connection Method list
         */
-        IMPORT_C TInt AddConnectionMethodL( 
-                                    RCmConnectionMethodExt aConnectionMethod );            
-    
+        IMPORT_C TInt AddConnectionMethodL(
+                RCmConnectionMethodExt aConnectionMethod );
+
         /*
         * Embeds an existing destination into this destination.
         * @param RCmDestinationExt - Destination to be embedded
         * @return TInt - index in the Connection Method list
         */
         IMPORT_C TInt AddEmbeddedDestinationL(
-                            const RCmDestinationExt& aDestination );     
-    
+                const RCmDestinationExt& aDestination );
+
         /**
         * Remove a connection method from a destination and delete it
-        * on update. 
-        * Exception: conenction method is not deleted  if it's referenced 
+        * on update.
+        * Exception: conenction method is not deleted  if it's referenced
         * from any other destination.
         * @param aConnectionMethod the connection method to be deleted.
         */
-        IMPORT_C void DeleteConnectionMethodL( 
-                                    RCmConnectionMethodExt& aConnectionMethod );
-    
+        IMPORT_C void DeleteConnectionMethodL(
+                RCmConnectionMethodExt& aConnectionMethod );
+
         /**
         * Remove connection method from the destination
         * @param aConnectionMethod connection method to be removed
         */
-        IMPORT_C void RemoveConnectionMethodL( 
-                                   RCmConnectionMethodExt aConnectionMethod );
-        
-    
+        IMPORT_C void RemoveConnectionMethodL(
+                RCmConnectionMethodExt aConnectionMethod );
+
         /**
         * Set the connection method's priority based on the passed
         * index. Indexing starts from zero(the highest priority).
         * @param aCCMItem the connection method item
-        * @param aIndex the new priority of the connection method in the 
+        * @param aIndex the new priority of the connection method in the
         * destination
         */
-        IMPORT_C void ModifyPriorityL( RCmConnectionMethodExt& aCCMItem, 
-                                       TUint aIndex );
-        
+        IMPORT_C void ModifyPriorityL(
+                RCmConnectionMethodExt& aConnectionMethod,
+                TUint aIndex );
+
         /**
         * Set the destination's name
         * @param aDestinationName new name of the destination
         */
         IMPORT_C void SetNameL( const TDesC& aName );
-           
-        /**
-        * Set the destination's icon index.
-        * This fucton leaves if the client does not have a valid UI context
-        * @param aIconIndex new icon index of the destination
-        */
-        IMPORT_C void SetIconL( TUint32 anIndex );
-        
+
         /**
         * Set the Metadata
         * @param aMetaField field to be modified
         * @param aValue value to be set
-        */            
-        IMPORT_C void SetMetadataL( CMManager::TSnapMetadataField aMetaField, 
-                                    TUint32 aValue );
-        
+        */
+        IMPORT_C void SetMetadataL(
+                CMManager::TSnapMetadataField aMetadataField,
+                TUint32 aValue );
+
         /**
         * Set the protection level of the destination.
-        * @param aProtLevel new protection level 
+        * @param aProtLevel new protection level
         */
         IMPORT_C void SetProtectionL( CMManager::TProtectionLevel aProtLevel );
-        
+
         /**
         * Set if the destination is hidden or not.
         * @param aHidden - ETrue if destination is hidden
         */
-        IMPORT_C void SetHiddenL( TBool aHidden );         
-        
+        IMPORT_C void SetHiddenL( TBool aHidden );
+
         /**
         * Update all values of the destination and its connection method.
         * Nothing if stored, if update leaves due to any reason.
         */
-        IMPORT_C void UpdateL();               
+        IMPORT_C void UpdateL();
 
         /**
         * Delete destination and its connection methods from CommsDat.
@@ -238,7 +213,7 @@
         * not deleted.
         */
         IMPORT_C void DeleteLD();
-        
+
         /**
         * Returns if there's connection created with any of the destination's
         * connection method.
@@ -246,50 +221,53 @@
         * connection method.
         */
         IMPORT_C TBool IsConnectedL() const;
-        
+
         /**
          * Compares whether two objects content is the same.
          * @return ETrue if the content is same.
          */
-        IMPORT_C TBool operator==(const RCmDestinationExt& aDestination) const;
+        IMPORT_C TBool operator==(
+                const RCmDestinationExt& aDestination ) const;
 
         /**
          * Compares whether two objects content is different.
          * @return ETrue if the content is different.
          */
-        IMPORT_C TBool operator!=(const RCmDestinationExt& aDestination) const;
+        IMPORT_C TBool operator!=(
+                const RCmDestinationExt& aDestination ) const;
 
         /**
-        * assignment operator 
-        * 
+        * assignment operator
+        *
         * @since S60 3.2
         * @param aDestination the destination being compared
         * @return RCmDestination
         */
-        IMPORT_C RCmDestinationExt& operator=(const RCmDestinationExt& 
-                                                    aCmDestination);
+        IMPORT_C RCmDestinationExt& operator=(
+                const RCmDestinationExt& aDestination );
 
         /**
-        * Create a connection method with given id that belongs to this destination.
-        * @param aImplementationUid - implementation uid (bearer type) of the 
+        * Create a connection method with given id that belongs to this
+        * destination.
+        * @param aImplementationUid - implementation uid (bearer type) of the
         * connection method to be created
         * @param aConnMethdId Predefined id for the connection method
         * (id range is from 1 to max IAP record amount in CommsDat).
         * @return newly created connection method or leaves with
         * KErrAlreadyExists if there exists CM with the same Id.
         */
-        IMPORT_C RCmConnectionMethodExt CreateConnectionMethodL( 
-                                                         TUint32 aBearerType,
-                                                         TUint32 aConnMethId );
-
-    private: // Data
-        
-        CCmDestinationData* iDestinatonData;
+        IMPORT_C RCmConnectionMethodExt CreateConnectionMethodL(
+                TUint32 aBearerType,
+                TUint32 aConnMethodId );
 
     private:
-    
         friend class RCmManagerExt;
         friend class RCmConnectionMethodExt;
+
+    private:
+        CCmDestinationWrapper* iCmDestinationWrapper;
     };
-    
-#endif // DESTINATIONEXT_H
+
+#endif // CMDESTINATIONEXT_H
+
+// End of file
--- a/ipcm_plat/extended_connection_settings_api/inc/cmmanagerext.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_plat/extended_connection_settings_api/inc/cmmanagerext.h	Mon May 03 12:53:07 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006-2010 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"
@@ -11,27 +11,25 @@
 *
 * Contributors:
 *
-* Description:  Connection manager IF class.
+* Description:
+* Connection manager IF class.
 *
 */
 
+
 #ifndef CMMANAGEREXT_H
 #define CMMANAGEREXT_H
 
-// System includes
-#include <e32std.h>
 #include <e32base.h>
-#include <e32cmn.h>
 #include <metadatabase.h>
-#include <coneresloader.h>
 #include <cmmanagerdef.h>
 #include <cmconnectionmethodext.h>
 #include <cmdefconnvalues.h>
 
-// FORWARD DECLARATIONS
+// Forward declarations
 class RCmDestinationExt;
-class CCmManagerImpl;
-class CGulIcon;
+class RCmManagerApi;
+
 
 /**
  *  RCmManager is used to query and modify network destinations and connection
@@ -40,208 +38,197 @@
  *  @lib cmmanager.lib
  *  @since S60 v3.2
  */
-NONSHARABLE_CLASS(RCmManagerExt)
+NONSHARABLE_CLASS( RCmManagerExt )
     {
-    //=====================================================================
-    // Constructors/Destructors
-    // 
     public:
-    
         /** Inline constructor */
         inline RCmManagerExt();
 
-    //=====================================================================
-    // API functions
     public:
-        
         /** Open session */
-        IMPORT_C void OpenL();    
+        IMPORT_C void OpenL();
 
-        /** Open session and create tables if they don't exist*/
-        IMPORT_C void CreateTablesAndOpenL();    
-        
+        /** Open session and create tables if they don't exist */
+        IMPORT_C void CreateTablesAndOpenL();
+
         /**
         * Symbian constructor
         * Pushes the object on the cleanup stack
         *
         * @since S60 3.2
         */
-        IMPORT_C void OpenLC();    
-        
+        IMPORT_C void OpenLC();
+
         /** Close session */
         IMPORT_C void Close();
-        
+
         /**
-        * GetBearerInfoXXX function can be used to query
-        * bearer informantion that doesn't belong
-        * to a specific connection method, such as 
+        * GetBearerInfoXXX function can be used to query bearer informantion
+        * that doesn't belong to a specific connection method, such as
         * ECmCoverage or ECmDefaultPriority etc.
-        * NULL pointer, returned from string functions, means
-        * attribute exists but has no value.
+        * NULL pointer, returned from string functions, means attribute exists
+        * but has no value.
+        * HBuf ownership is passed to the caller.
+        */
+        IMPORT_C TUint32 GetBearerInfoIntL(
+                TUint32 aBearerType,
+                TUint32 aAttribute ) const;
+        IMPORT_C TBool GetBearerInfoBoolL(
+                TUint32 aBearerType,
+                TUint32 aAttribute ) const;
+        IMPORT_C HBufC* GetBearerInfoStringL(
+                TUint32 aBearerType,
+                TUint32 aAttribute ) const;
+        IMPORT_C HBufC8* GetBearerInfoString8L(
+                TUint32 aBearerType,
+                TUint32 aAttribute ) const;
+
+        /**
+        * GetConnectionMethodInfoXXX function can be used to query any,
+        * non-bearer specific information about a given connection method. This
+        * can be e.g. ECmBearerType, ECmName, ECmStartPage etc.
+        * NULL pointer, returned from string functions, means attribute exists
+        * but has no value.
         * HBuf ownership is passed to the caller
         */
-        IMPORT_C TUint32 GetBearerInfoIntL( TUint32 aBearerType,
-                                  TUint32 aAttribute ) const;
-        IMPORT_C TBool GetBearerInfoBoolL( TUint32 aBearerType,
-                                 TUint32 aAttribute ) const;
-        IMPORT_C HBufC* GetBearerInfoStringL( TUint32 aBearerType,
-                                    TUint32 aAttribute ) const;
-        IMPORT_C HBufC8* GetBearerInfoString8L( TUint32 aBearerType,
-                                    TUint32 aAttribute ) const;
+        IMPORT_C TUint32 GetConnectionMethodInfoIntL(
+                TUint32 aIapId,
+                TUint32 aAttribute ) const;
+        IMPORT_C TBool GetConnectionMethodInfoBoolL(
+                TUint32 aIapId,
+                TUint32 aAttribute ) const;
+        IMPORT_C HBufC* GetConnectionMethodInfoStringL(
+                TUint32 aIapId,
+                TUint32 aAttribute ) const;
+        IMPORT_C HBufC8* GetConnectionMethodInfoString8L(
+                TUint32 aIapId,
+                TUint32 aAttribute ) const;
 
         /**
-        * GetConnectionMethodInfoXXX function can be used to 
-        * query any, non-bearer specific information about
-        * a given connection method. This can be e.g. ECmBearerType,
-        * ECmName, ECmStartPage etc.
-        * NULL pointer, returned from string functions, means
-        * attribute exists but has no value.
-        * HBuf ownership is passed to the caller
-        */
-        IMPORT_C TUint32 GetConnectionMethodInfoIntL( TUint32 aIapId,
-                                             TUint32 aAttribute ) const;
-        IMPORT_C TBool GetConnectionMethodInfoBoolL( TUint32 aIapId,
-                                            TUint32 aAttribute ) const;
-        IMPORT_C HBufC* GetConnectionMethodInfoStringL( TUint32 aIapId,
-                                               TUint32 aAttribute ) const;
-        IMPORT_C HBufC8* GetConnectionMethodInfoString8L( TUint32 aIapId,
-                                               TUint32 aAttribute ) const;
-                
-        /**
-        * Creates a Destination with the passed name. 
+        * Creates a Destination with the passed name.
         * @param aName the name of the new destination.
-        * @return RCmDestinationExt new destination. ownership is passed to the 
+        * @return RCmDestinationExt new destination. ownership is passed to the
         * caller
         */
         IMPORT_C RCmDestinationExt CreateDestinationL( const TDesC& aName );
-        
+
         /**
         * Creates a connection method does not belong to any destination
         * @param aImplementationUid - bearer type of the new connection method
         * @return RCmConnectionMethodExt newly created connection method.
         */
-        IMPORT_C RCmConnectionMethodExt CreateConnectionMethodL( 
-                                                          TUint32 aBearerType );        
-        
+        IMPORT_C RCmConnectionMethodExt CreateConnectionMethodL(
+                TUint32 aBearerType );
+
         /**
-        * Copies a connection method belonging to one destination to 
-        * another. The connection method becomes shared.
-        * Calls UpdateL on the destination
+        * Copies a connection method belonging to one destination to another.
+        * The connection method becomes shared. Calls UpdateL on the
+        * destination.
         * @param aTargetDestination
         * @param aConnectionMethodId
         * @return TInt - index in the Connection Method list
         */
-        IMPORT_C TInt CopyConnectionMethodL( 
-                                    RCmDestinationExt& aTargetDestination,
-                                    RCmConnectionMethodExt& aConnectionMethod );
-                                        
+        IMPORT_C TInt CopyConnectionMethodL(
+                RCmDestinationExt& aTargetDestination,
+                RCmConnectionMethodExt& aConnectionMethod );
+
         /**
-        * Moves a connection method belonging to one destination to 
-        * another. The connection method is removed from the source destination
+        * Moves a connection method belonging to one destination to another. The
+        * connection method is removed from the source destination.
         * @param aSourceDestination
         * @param aTargetDestination
         * @param aConnectionMethod
         * @return TInt - index in the Connection Method list
         */
-        IMPORT_C TInt MoveConnectionMethodL( 
-                                    RCmDestinationExt& aSourceDestination,
-                                    RCmDestinationExt& aTargetDestination,
-                                    RCmConnectionMethodExt& aConnectionMethod );
-                                                                                  
+        IMPORT_C TInt MoveConnectionMethodL(
+                RCmDestinationExt& aSourceDestination,
+                RCmDestinationExt& aTargetDestination,
+                RCmConnectionMethodExt& aConnectionMethod );
+
         /**
         * Remove connection method from the destination
         * @param aDestination destination the connection method is attached to
         * @param aConnectionMethod connection method to be removed
         */
-        IMPORT_C void RemoveConnectionMethodL( 
-                                   RCmDestinationExt& aDestination,
-                                   RCmConnectionMethodExt& aConnectionMethod );
-                                   
+        IMPORT_C void RemoveConnectionMethodL(
+                RCmDestinationExt& aDestination,
+                RCmConnectionMethodExt& aConnectionMethod );
+
         /**
-        * Removes connection method from every destination and make it 
+        * Removes connection method from every destination and make it
         * uncategorized.
         * @param aConnectionMethod connection method to be removed
         */
-        IMPORT_C void RemoveAllReferencesL( 
-                                    RCmConnectionMethodExt& aConnectionMethod );
+        IMPORT_C void RemoveAllReferencesL(
+                RCmConnectionMethodExt& aConnectionMethod );
 
-    //=========================================================================
-    // API functions - Getter-Setter
     public:
-    
         /**
         * Returns the connection method queried by its ID.
         * @param aId if of the connection method
         * @return RCmConnectionMethodExt connection method instance
         */
-        IMPORT_C RCmConnectionMethodExt ConnectionMethodL( 
-                                                  TUint32 aConnectionMethodId );
-        
+        IMPORT_C RCmConnectionMethodExt ConnectionMethodL(
+                TUint32 aConnectionMethodId );
+
         /**
-        * Returns the list of connection methods that do not belong to any 
-        * destination
+        * Returns the list of connection methods that do not belong to any
+        * destination.
         * @param aCMArray on return it is the array of IAP ids.
-        * @param aCheckBearerType If ETrue only connection methods with 
-        *                         supported bearer types are returned
-        * @param aLegacyOnly when set to ETrue only Legacy IAP ids will
-        *                         be returned
-        * @param aEasyWlan when set to ETrue EasyWlan id is returned, too
+        * @param aCheckBearerType If ETrue only connection methods with
+        * supported bearer types are returned.
+        * @param aLegacyOnly when set to ETrue only Legacy IAP ids will be
+        * returned.
+        * @param aEasyWlan when set to ETrue EasyWlan id is returned, too.
         */
-        IMPORT_C void ConnectionMethodL( RArray<TUint32>& aCMArray,
-                                         TBool aCheckBearerType = ETrue,
-                                         TBool aLegacyOnly = ETrue,
-                                         TBool aEasyWlan = EFalse );
-        
+        IMPORT_C void ConnectionMethodL(
+                RArray<TUint32>& aCmArray,
+                TBool aCheckBearerType = ETrue,
+                TBool aLegacyOnly = ETrue,
+                TBool aEasyWlan = EFalse );
+
         /**
-        * Returns the destination to which a specified 
-        * connection method belongs, search is by destination ID
+        * Returns the destination to which a specified connection method
+        * belongs, search is by destination ID.
         * @param aDestinationId id of the destination
         * @return RCmDestinationExt network destination
         */
         IMPORT_C RCmDestinationExt DestinationL( TUint32 aDestinationId );
-        
+
         /**
         * Returns an array of all destination id's
         * @param aDestArray array of all available network destination
-        */ 
+        */
         IMPORT_C void AllDestinationsL( RArray<TUint32>& aDestArray );
-        
+
         /**
         * Returns the copy of the bearer priority array. Ownership is passed.
         * @param aArray bearer priority array
-        */          
-        IMPORT_C void BearerPriorityArrayL( RArray<TBearerPriority>& aArray ) const;
-        
+        */
+        IMPORT_C void BearerPriorityArrayL(
+                RArray<TBearerPriority>& aArray ) const;
+
         /**
         * Update bearer priority array
         * @param aArray array with new global bearer priority
-        */          
-        IMPORT_C void UpdateBearerPriorityArrayL( 
-                                        const RArray<TBearerPriority>& aArray );
-        
+        */
+        IMPORT_C void UpdateBearerPriorityArrayL(
+                const RArray<TBearerPriority>& aArray );
 
         /**
         * Clean up passed global bearer priority array. Delete
         * the elements and calls Reset and Close on the array.
         * @param aArray array to be cleaned up
         */
-        IMPORT_C void CleanupGlobalPriorityArray( 
-                                        RArray<TBearerPriority>& aArray ) const;
-        
+        IMPORT_C void CleanupGlobalPriorityArray(
+                RArray<TBearerPriority>& aArray ) const;
+
         /**
         * Query all of the supported bearer types.
         * @param aArray list of all supported bearer types.
-        */          
+        */
         IMPORT_C void SupportedBearersL( RArray<TUint32>& aArray ) const;
-        
-        /**
-        * Returns "Uncategorized" icon.
-        * This fucton leaves if the client does not have a valid UI context
-        * @return CGulIcon* Icon of uncategorized connection methods. Ownership 
-        * is passed.
-        */          
-        IMPORT_C CGulIcon* UncategorizedIconL() const;
-        
+
         /**
         * Returns the id of the EasyWlan connection method.
         *
@@ -255,25 +242,27 @@
         *
         * @since S60 3.2
         */
-        IMPORT_C void ReadDefConnL( TCmDefConnValue& aDCSetting );   
+        IMPORT_C void ReadDefConnL( TCmDefConnValue& aDefConnSetting );
+
         /**
         * Stores the default connection method/SNAP.
         *
         * @since S60 3.2
         */
-        IMPORT_C void WriteDefConnL( const TCmDefConnValue& aDCSetting );  
+        IMPORT_C void WriteDefConnL( const TCmDefConnValue& aDefConnSetting );
 
         /**
-        * Creates a Destination with the passed name and id. 
+        * Creates a Destination with the passed name and id.
         * @param aName the name of the new destination.
         * @param aDestId Predefined id of the destination.
         * @return RCmDestinationExt newly created destination or leaves with
         * KErrAlreadyExists if there exists CM with the same Id.
         * Ownership is passed to the caller.
         */
-        IMPORT_C RCmDestinationExt CreateDestinationL( const TDesC& aName,
-                                                       TUint32      aDestId );
-        
+        IMPORT_C RCmDestinationExt CreateDestinationL(
+                const TDesC& aName,
+                TUint32 aDestId );
+
         /**
         * Creates a connection method does not belong to any destination
         * @param aImplementationUid - bearer type of the new connection
@@ -284,35 +273,38 @@
         * method or leaves with KErrAlreadyExists if there exists CM
         * with the same Id.
         */
-        IMPORT_C RCmConnectionMethodExt CreateConnectionMethodL( TUint32 aImplementationUid,
-                                                                 TUint32 aConnMethodId );
+        IMPORT_C RCmConnectionMethodExt CreateConnectionMethodL(
+                TUint32 aBearerType,
+                TUint32 aConnMethodId );
 
     private:
         /**
         * This is a private copy constructor without iplemetation.
-        * The sole purpose of this declaration is to forbid the copying of 
+        * The sole purpose of this declaration is to forbid the copying of
         * the objects of this class.
-        */          
-        RCmManagerExt(RCmManagerExt&  );
+        */
+        RCmManagerExt( RCmManagerExt& );
+
         /**
         * This is a private copy constructor without iplemetation.
-        * The sole purpose of this declaration is to forbid the copying of 
+        * The sole purpose of this declaration is to forbid the copying of
         * the objects of this class.
-        */          
+        */
         RCmManagerExt& operator=( RCmManagerExt& );
 
-    friend class CCmManagerImpl;
-    //=========================================================================
-    // Member data
-    
+    private:
+        friend class CCmManagerImpl;
+
     private:
-    
-        CCmManagerImpl* iImplementation;
+        RCmManagerApi* iCmManagerApi;
     };
-    
-inline RCmManagerExt::RCmManagerExt()
-    : iImplementation(NULL)
+
+
+inline RCmManagerExt::RCmManagerExt() : iCmManagerApi( NULL )
     {
     }
-    
+
+
 #endif // CMMANAGEREXT_H
+
+// End of file
--- a/ipcm_plat/extended_connection_settings_api/inc/cmsettingsui.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_plat/extended_connection_settings_api/inc/cmsettingsui.h	Mon May 03 12:53:07 2010 +0300
@@ -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_plat/group/bld.inf	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_plat/group/bld.inf	Mon May 03 12:53:07 2010 +0300
@@ -27,4 +27,3 @@
 #include "../pdpcontextmanager2_reset_factory_settings_api/group/bld.inf"
 #include "../pdpcontextmanager2_settings_api/group/bld.inf"
 #include "../mpm_connect_screen_api/group/bld.inf"
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipcm_plat/ipcm_plat.pro	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,28 @@
+#
+# Copyright (c) 2010 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:
+# Project file for ipcm_plat.
+#
+
+TEMPLATE = subdirs
+BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
+
+include(connection_settings_shim_api/connection_settings_shim_api.pri)
+include(connection_settings_ui_api/connection_settings_ui_api.pri)
+include(bearer_settings_ui_plugin_api/bearer_settings_ui_plugin_api.pri)
+include(wlan_security_settings_ui_plugin_api/wlan_security_settings_ui_plugin_api.pri)
+
+for(filename,PLATFORM_HEADERS){
+    BLD_INF_RULES.prj_exports *= "$$filename MW_LAYER_PLATFORM_EXPORT_PATH($$basename(filename))"
+  }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipcm_plat/wlan_security_settings_ui_plugin_api/inc/cpwlansecurityplugininterface.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,131 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*   Control Panel plugin interface for WLAN security settings plugins.
+*
+*/
+
+#ifndef CPWLANSECURITYPLUGININTERFACE_H
+#define CPWLANSECURITYPLUGININTERFACE_H
+
+// System includes
+#include <QtPlugin>
+#include <cmmanagerdefines_shim.h>
+
+// User includes
+
+// Forward declarations
+class CmConnectionMethodShim;
+class CpSettingFormItemData;
+class CpItemDataHelper;
+
+// External data types
+
+// Constants
+
+// Class declaration
+
+/*!
+    \class CpWlanSecurityPluginInterface
+    \brief This class is an interface for WLAN security settings plugins
+           which can be displayed in Control Panel application.
+           
+    Plugin stubs must be located in
+    /resource/qt/plugins/controlpanel/wlansecurity directory.
+ */
+
+class CpWlanSecurityPluginInterface
+{
+public:
+    /*!
+        Destructor.
+     */
+    virtual ~CpWlanSecurityPluginInterface() {}
+
+    /*!
+        Getter for security mode. Security modes are defined in Connection
+        Settings Shim WlanSecMode enum, e.g. WlanSecModeWep.
+
+        \return Security mode identifier.
+     */
+    virtual CMManagerShim::WlanSecMode securityMode() const = 0;
+    
+    /*!
+        Getter for localization text identifier for the security mode,
+        e.g. "txt_occ_setlabel_wlan_security_mode_val_wep". This localized
+        text will be shown in the UI.
+
+        \return Localization text ID.
+     */
+    virtual QString securityModeTextId() const = 0;
+
+    /*! 
+        Sets the database reference. Plugin can either use Connection
+        Settings Shim to access the settings or some other way using the
+        provided connection method ID.
+
+        \param cmConnectionMethod Pointer to CmConnectionMethodShim instance
+               which can be used for reading and writing of the settings. Not
+               owned by the plugin.
+        \param id Connection method ID.
+     */
+    virtual void setReference(
+        CmConnectionMethodShim *cmConnectionMethod,
+        uint id) = 0;
+
+    /*!
+        Getter for order number. This order number is used to put the
+        security modes in correct order in the security mode list. Security
+        mode with the lowest order number will be first and so on.
+
+        E.g. WEP = 10, 802.1X = 20, WPA = 30, WPA2 = 40, WAPI = 50
+
+        \return Order number.
+     */
+    virtual int orderNumber() const = 0;
+
+    /*!
+        Creates an UI instance ("Security settings" group with all settings
+        for the security mode). Caller owns the object. The security plugin
+        doesn't need to handle deletion of the UI instance, it will be
+        handled by the caller and Control Panel framework. Every call shall
+        create a new UI instance.
+
+        \param dataHelper Item data helper.
+        \return Pointer to an UI object.
+     */
+    virtual CpSettingFormItemData* uiInstance(
+        CpItemDataHelper &dataHelper) = 0;
+
+signals:
+
+public slots:
+
+protected:
+
+protected slots:
+
+private:
+
+private slots:
+
+private: // data
+
+};
+
+Q_DECLARE_INTERFACE(
+    CpWlanSecurityPluginInterface,
+    "com.nokia.plugin.controlpanel.wlansecurity.platform.interface/1.0");
+
+#endif // CPWLANSECURITYPLUGININTERFACE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipcm_plat/wlan_security_settings_ui_plugin_api/wlan_security_settings_ui_plugin_api.pri	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,19 @@
+#
+# Copyright (c) 2010 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:
+# WLAN Security Settings UI Plugin API project include.
+#
+
+PLATFORM_HEADERS += \
+    wlan_security_settings_ui_plugin_api/inc/cpwlansecurityplugininterface.h
--- a/ipcm_pub/connection_monitor_server_api/inc/rconnmon.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_pub/connection_monitor_server_api/inc/rconnmon.h	Mon May 03 12:53:07 2010 +0300
@@ -48,7 +48,8 @@
 /** WLAN mode, defined in TConnMonNetworkMode.
 */
 const TUint KNetworkMode = 7;
-/** WLAN connection security mode, defined in TConnMonSecurityMode.
+/** Old WLAN connection security mode, defined in TConnMonSecurityMode.
+It is recommended to use the more detailed KSecurityMode_v2 instead.
 */
 const TUint KSecurityMode = 8;
 /** Bearer information, defined in TConnMonBearerInfo.
@@ -62,6 +63,10 @@
 /** Network registration values defined in TConnMonNetworkRegistration_v2.
 */
 const TUint KNetworkRegistration_v2 = 11;
+/** WLAN connection security mode, defined in TConnMonSecurityModeV2.
+Replaces the previously used KSecurityMode attribute.
+*/
+const TUint KSecurityMode_v2 = 12;
 
 /** QoS - Not supported.
 */
@@ -509,6 +514,24 @@
     };
 
 /**
+* WLAN connection security modes in more detail.
+* New values will be added to the end of the enumeration.
+*/
+enum TConnMonSecurityModeV2
+    {
+    EConnMonSecurityV2Open      = 100,
+    EConnMonSecurityV2WepOpen   = 101,
+    EConnMonSecurityV2WepShared = 102,
+    EConnMonSecurityV2802d1x    = 103,
+    EConnMonSecurityV2Wpa       = 104,
+    EConnMonSecurityV2WpaPsk    = 105,
+    EConnMonSecurityV2Wpa2      = 106,
+    EConnMonSecurityV2Wpa2Psk   = 107,
+    EConnMonSecurityV2Wapi      = 108,
+    EConnMonSecurityV2WapiPsk   = 109
+    };
+
+/**
 * Network Modes.
 */
 enum TConnMonMobilePhoneNetworkMode
@@ -850,7 +873,7 @@
     static const TUint KWlanBssId = 6;
     /** Reserved for future use.
     */
-    static const TUint KExtraCount = 10;
+    static const TUint KExtraCount = 8;
 
     /**
     * Constructor.
@@ -874,6 +897,29 @@
     /**
     * Constructor.
     *
+    * @param aName Name (SSID) of the network.
+    * @param aConnectionMode Mode of the network.
+    * @param aSignalStrength Signal strength of the network.
+    * @param aSecurityMode Security mode of the network.
+    * @param aSecurityModeV2 More detailed security mode of the network.
+    * @param aProtectedSetupSupport Wi-Fi Protected Setup support.
+    * @param aBssId Mac address (BSSID) of the base station.
+    * @param aVendorData Not in use.
+    * @return Pointer to the created CConnMonWlanNetwork object.
+    */
+    IMPORT_C static CConnMonWlanNetwork* NewL(
+            const TBuf<KMaxNameLength>& aName,
+            TUint aConnectionMode,
+            TUint aSignalStrength,
+            TUint aSecurityMode,
+            TUint aSecurityModeV2,
+            TUint aProtectedSetupSupport,
+            const TBuf8<KWlanBssId>& aBssId,
+            const TDesC& aVendorData );
+
+    /**
+    * Constructor.
+    *
     * @return Pointer to the created empty CConnMonWlanNetwork object.
     */
     IMPORT_C static CConnMonWlanNetwork* NewL();
@@ -944,6 +990,8 @@
 
     /**
     * Obtains the security mode of the network.
+    * This method is offered for backward compatibility
+    * reasons, SecurityModeV2() should be used instead.
     *
     * @return Security mode (defined in TConnMonSecurityMode).
     */
@@ -953,6 +1001,20 @@
         }
 
     /**
+    * Obtains the more detailed security mode of the network.
+    *
+    * @return Security mode (defined in TConnMonSecurityModeV2).
+    */
+    IMPORT_C TUint SecurityModeV2();
+
+    /**
+    * Finds whether Wi-Fi Protected Setup is supported.
+    *
+    * @return ETrue if AP supports Wi-Fi Protected Setup, EFalse if not.
+    */
+    IMPORT_C TBool IsProtectedSetupSupported();
+
+    /**
     * Obtains the mac address (BSSID) of the base station.
     *
     * @return Mac address (BSSID).
@@ -1020,6 +1082,28 @@
             const TDesC& aVendorData );
 
     /**
+    * Constructor.
+    *
+    * @param aName Name (SSID) of the network.
+    * @param aConnectionMode Mode of the network.
+    * @param aSignalStrength Signal strength of the network.
+    * @param aSecurityMode Security mode of the network.
+    * @param aSecurityModeV2 More detailed security mode of the network.
+    * @param aProtectedSetupSupport Wi-Fi Protected Setup support.
+    * @param aBssId Mac address (BSSID) of the base station.
+    * @param aVendorData Not in use.
+    */
+    CConnMonWlanNetwork(
+            const TBuf<KMaxNameLength>& aName,
+            TUint aConnectionMode,
+            TUint aSignalStrength,
+            TUint aSecurityMode,
+            TUint aSecurityModeV2,
+            TUint aProtectedSetupSupport,
+            const TBuf8<KWlanBssId>& aBssId,
+            const TDesC& aVendorData );
+
+    /**
     * Second-phase constructor.
     */
     void ConstructL();
@@ -1031,6 +1115,8 @@
     TUint iSecurityMode;          // See TConnMonSecurityMode
     TBuf8<KWlanBssId> iWlanBssId; // BSSID
     HBufC* iVendorData;           // For vendor specific data
+    TUint iSecurityModeV2;        // See TConnMonSecurityModeV2
+    TUint iProtectedSetupSupport; // Wi-Fi Protected Setup support, 0 if not supported
     TUint iExtraBuf[KExtraCount]; // Reserved for future
     };
 
--- a/ipcm_pub/connection_settings_api/group/bld.inf	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_pub/connection_settings_api/group/bld.inf	Mon May 03 12:53:07 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006-2010 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"
@@ -11,8 +11,8 @@
 *
 * Contributors:
 *
-* Description:  File that exports the files belonging to 
-:                Connection Settings API
+* Description:
+* File that exports the files belonging to Connection Settings API.
 *
 */
 
@@ -24,20 +24,18 @@
 
 PRJ_EXPORTS
 
-../inc/cmconnectionmethod.inl     MW_LAYER_PUBLIC_EXPORT_PATH(cmconnectionmethod.inl)
 ../inc/cmplugindialcommondefs.h     MW_LAYER_PUBLIC_EXPORT_PATH(cmplugindialcommondefs.h)
-../inc/cmdefconnvalues.h     MW_LAYER_PUBLIC_EXPORT_PATH(cmdefconnvalues.h)
-../inc/cmpluginpacketdatadef.h     MW_LAYER_PUBLIC_EXPORT_PATH(cmpluginpacketdatadef.h)
-../inc/cmmanager.inl     MW_LAYER_PUBLIC_EXPORT_PATH(cmmanager.inl)
-../inc/cmconnectionmethod.h     MW_LAYER_PUBLIC_EXPORT_PATH(cmconnectionmethod.h)
-../inc/cmconnectionmethoddef.h     MW_LAYER_PUBLIC_EXPORT_PATH(cmconnectionmethoddef.h)
-../inc/cmdestination.h     MW_LAYER_PUBLIC_EXPORT_PATH(cmdestination.h)
-../inc/cmpluginembdestinationdef.h     MW_LAYER_PUBLIC_EXPORT_PATH(cmpluginembdestinationdef.h)
-../inc/cmplugincsddef.h     MW_LAYER_PUBLIC_EXPORT_PATH(cmplugincsddef.h)
-../inc/cmmanagerdef.h     MW_LAYER_PUBLIC_EXPORT_PATH(cmmanagerdef.h)
-../inc/cmpluginwlandef.h     MW_LAYER_PUBLIC_EXPORT_PATH(cmpluginwlandef.h)
-../inc/cmpluginvpndef.h     MW_LAYER_PUBLIC_EXPORT_PATH(cmpluginvpndef.h)
-../inc/cmpluginhscsddef.h     MW_LAYER_PUBLIC_EXPORT_PATH(cmpluginhscsddef.h)
-../inc/cmmanager.h     MW_LAYER_PUBLIC_EXPORT_PATH(cmmanager.h)
-../inc/cmsettingsui.h     MW_LAYER_PUBLIC_EXPORT_PATH(cmsettingsui.h)
-../inc/cmgenconnsettings.h     MW_LAYER_PUBLIC_EXPORT_PATH(cmgenconnsettings.h)
+../inc/cmdefconnvalues.h            MW_LAYER_PUBLIC_EXPORT_PATH(cmdefconnvalues.h)
+../inc/cmpluginpacketdatadef.h      MW_LAYER_PUBLIC_EXPORT_PATH(cmpluginpacketdatadef.h)
+../inc/cmconnectionmethod.h         MW_LAYER_PUBLIC_EXPORT_PATH(cmconnectionmethod.h)
+../inc/cmconnectionmethoddef.h      MW_LAYER_PUBLIC_EXPORT_PATH(cmconnectionmethoddef.h)
+../inc/cmdestination.h              MW_LAYER_PUBLIC_EXPORT_PATH(cmdestination.h)
+../inc/cmpluginembdestinationdef.h  MW_LAYER_PUBLIC_EXPORT_PATH(cmpluginembdestinationdef.h)
+../inc/cmplugincsddef.h             MW_LAYER_PUBLIC_EXPORT_PATH(cmplugincsddef.h)
+../inc/cmmanagerdef.h               MW_LAYER_PUBLIC_EXPORT_PATH(cmmanagerdef.h)
+../inc/cmpluginwlandef.h            MW_LAYER_PUBLIC_EXPORT_PATH(cmpluginwlandef.h)
+../inc/cmpluginvpndef.h             MW_LAYER_PUBLIC_EXPORT_PATH(cmpluginvpndef.h)
+../inc/cmpluginhscsddef.h           MW_LAYER_PUBLIC_EXPORT_PATH(cmpluginhscsddef.h)
+../inc/cmmanager.h                  MW_LAYER_PUBLIC_EXPORT_PATH(cmmanager.h)
+../inc/cmsettingsui.h               MW_LAYER_PUBLIC_EXPORT_PATH(cmsettingsui.h)
+../inc/cmgenconnsettings.h          MW_LAYER_PUBLIC_EXPORT_PATH(cmgenconnsettings.h)
--- a/ipcm_pub/connection_settings_api/inc/cmconnectionmethod.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_pub/connection_settings_api/inc/cmconnectionmethod.h	Mon May 03 12:53:07 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006-2010 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"
@@ -11,20 +11,22 @@
 *
 * Contributors:
 *
-* Description:  Connection Method interface class.
+* Description:
+* Connection Method interface class.
 *
 */
 
+
 #ifndef CMCONNECTIONMETHOD_H
 #define CMCONNECTIONMETHOD_H
 
-// INCLUDES
 #include <e32base.h>
 #include <cmconnectionmethoddef.h>
 
-// CLASS DECLARATION
-class CCmPluginBaseEng;
+// Forward declarations
 class RCmDestination;
+class CCmConnectionMethodWrapper;
+
 
 /**
  *  RCmConnectionMethod is for getting/setting values of a connection method.
@@ -33,39 +35,30 @@
  */
 NONSHARABLE_CLASS( RCmConnectionMethod )
     {
-    //=====================================================================
-    // Constructors/Destructors
-    // 
     public:
-    
         /**
-        * Default constructor. 
+        * Default constructor.
         */
         IMPORT_C RCmConnectionMethod();
 
+        /**
+        * Copy constructor.
+        */
+        IMPORT_C RCmConnectionMethod( const RCmConnectionMethod& aConnMethod );
 
         /**
-        * Copy constructor. 
-        */
-        IMPORT_C RCmConnectionMethod(const RCmConnectionMethod& aItem);
-
-
-        /**
-        * Destructor. 
+        * Destructor.
         */
         IMPORT_C ~RCmConnectionMethod();
 
-    //=====================================================================
-    // API functions
     public:
-    
         /**
         * Close the session
         *
         * @since S60 3.2
         */
         IMPORT_C void Close();
-        
+
         /**
         * Gets the value for a TInt attribute.
         *
@@ -93,7 +86,7 @@
         * @return copy of the requested attribute. Ownership is passed.
         */
         IMPORT_C HBufC* GetStringAttributeL( TUint32 aAttribute ) const;
-        
+
         /**
         * Gets the value for a String8 attribute.
         * HBuf ownership is passed to the caller
@@ -102,8 +95,8 @@
         * @param aAttribute Identifies the attribute to be retrieved.
         * @return copy of the requested attribute. Ownership is passed.
         */
-        IMPORT_C HBufC8* GetString8AttributeL( 
-                                        const TUint32 aAttribute ) const;
+        IMPORT_C HBufC8* GetString8AttributeL(
+                const TUint32 aAttribute ) const;
 
         /**
         * Call this function only if this CM is an embedded destination!
@@ -113,42 +106,42 @@
         */
         IMPORT_C RCmDestination DestinationL() const;
 
-        
+
         /**
-        * checks if connection methods are the same 
-        * 
+        * checks if connection methods are the same
+        *
         * @since S60 3.2
         * @param aConnMethod the connection method being compared
         * @return ETrue if the destinations are the same
         */
         IMPORT_C TBool operator==( RCmConnectionMethod& aConnMethod ) const;
-        
+
         /**
-        * checks if connection methods are not the same 
-        * 
+        * checks if connection methods are not the same
+        *
         * @since S60 3.2
         * @param aConnMethod the connection method being compared
         * @return ETrue if the destinations are different
         */
         IMPORT_C TBool operator!=( RCmConnectionMethod& aConnMethod ) const;
-        
+
 
         /**
-        * assignment operator 
-        * 
+        * assignment operator
+        *
         * @since S60 3.2
         * @return RCmConnectionMethod
         */
-        IMPORT_C RCmConnectionMethod& operator=(const RCmConnectionMethod& 
-                                                    aConnMethod);
+        IMPORT_C RCmConnectionMethod& operator=(
+                const RCmConnectionMethod& aConnMethod );
 
         /**
-        * Creates a copy of this connection method. UpdateL() has to be called 
+        * Creates a copy of this connection method. UpdateL() has to be called
         * to store new connection method in database. Ownership is passed.
         */
         IMPORT_C RCmConnectionMethod CreateCopyL();
 
-                /**
+        /**
         * Sets the value for a TInt attribute.
         * @param aAttribute Identifies the attribute to be set.
         * @param aValue The value to be set.
@@ -170,8 +163,9 @@
         * @param aValue The value to be set.
         * @return None.
         */
-        IMPORT_C void SetStringAttributeL( TUint32 aAttribute, 
-                                           const TDesC16& aValue );
+        IMPORT_C void SetStringAttributeL(
+                TUint32 aAttribute,
+                const TDesC16& aValue );
 
         /**
         * Sets the value for a String8 attribute.
@@ -179,12 +173,13 @@
         * @param aValue The value to be set.
         * @return None.
         */
-        IMPORT_C void SetString8AttributeL( TUint32 aAttribute, 
-                                            const TDesC8& aValue );
+        IMPORT_C void SetString8AttributeL(
+                TUint32 aAttribute,
+                const TDesC8& aValue );
 
         /**
-        * Try to delete the connection method. If it is referenced from 
-        * any destination, then the references are removed and the 
+        * Try to delete the connection method. If it is referenced from
+        * any destination, then the references are removed and the
         * connection method is deleted.
         * Do NOT call this function if you got this
         * connection method from a destination. Call destination's
@@ -196,22 +191,40 @@
         /**
         * Update in the database.
         * @return None.
-        */        
+        */
         IMPORT_C void UpdateL();
 
+        /**
+         * Gets the icon identifier(name) of the connection method. It can
+         * contain path information. HBufC* ownership is passed to the caller.
+         * @return Returns pointer to a buffer which identifies the requested
+         * icon.
+         */
+        IMPORT_C HBufC* GetIconL() const;
+
+        /**
+         * Sets the icon identifier(name) of the connection method. It can
+         * contain path information.
+         * @param aIcon Identifier of the connection method icon.
+         */
+        IMPORT_C void SetIconL( const TDesC& aIcon );
+
+        /**
+        * Reload the contents of the connection method from database.
+        * Any current changes made to the connection method are lost.
+        * @return None.
+        */
+        IMPORT_C void RefreshL();
+
+
     private:
-    
         friend class RCmDestination;
         friend class RCmManager;
-        
+
     private:
-        
-        /**
-         * the implementation class
-         */
-        CCmPluginBaseEng* iImplementation;
+        CCmConnectionMethodWrapper* iCmConnectionMethodWrapper;
     };
 
-#include <cmconnectionmethod.inl>
-    
-#endif      // CMCONNECTIONMETHOD_H
+#endif // CMCONNECTIONMETHOD_H
+
+// End of file
--- a/ipcm_pub/connection_settings_api/inc/cmconnectionmethod.inl	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  implementation of cmconnectionmethod.h inline functions
-*
-*/
-
-
--- a/ipcm_pub/connection_settings_api/inc/cmconnectionmethoddef.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_pub/connection_settings_api/inc/cmconnectionmethoddef.h	Mon May 03 12:53:07 2010 +0300
@@ -135,50 +135,14 @@
                                     */
 
         ECmBearerIcon = 100,        /**<
-                                    * Return the bearer specific icon. Assumes that
-                                    * there's an existing EEikEnv in the client.                        
-                                    * Type cast return value from TUint32 to 
-                                    * CGuiIcon*.
-                                    * Return value 0 means bearer has no icon.
-                                    * (TUint32 - default: none - read only)
+                                    * Sets/Gets the Connection Method specific icon name(may
+                                    * contain the path too).
+                                    * Used with Get/SetStringAttribute().
+                                    * Returns NULL if not found.
+                                    * (String - default: None )
                                     */ 
-                        
-        ECmBearerAvailableIcon,     /**<
-                                    * Return the bearer available specific icon. 
-                                    * Assumes that there's an existing EEikEnv 
-                                    * in the client. Type cast return value from 
-                                    * TUint32 to CGuiIcon*.
-                                    * Return value 0 means bearer has no icon.
-                                    * (TUint32 - default: none - read only)
-                                    */
-                        
-        ECmBearerAvailableName = 200,   /**<
-                                        * Name of the bearer. Can be used in 
-                                        * layout 
-                                        * list_double_large_graphic_popup_menu_pane.
-                                        * (String - default: none - read only)
-                                        */
-                        
-        ECmBearerSupportedName,     /**<
-                                    * Name of the bearer. Can be used in 
-                                    * layout list_single_popup_menu_pane_1.
-                                    * (String - default: none - read only)
-                                    */
-                        
-        ECmBearerAvailableText,     /**<
-                                    * Localized text 'Available'. Can be used in 
-                                    * layout 
-                                    * list_double_large_graphic_popup_menu_pane.
-                                    * (String - default: none - read only)
-                                    */
-                        
-        ECmBearerNamePopupNote,     /**<
-                                    * Localized text of the bearer type name.
-                                    * Can be used in layout popup note.
-                                    * (String - default: none - read only)
-                                    */
-
-        ECmCommsDBBearerType,       /**<
+                       
+        ECmCommsDBBearerType = 204, /**<
                                     * For backward compatibility, connection method
                                     * can return its CommsDB specific bearer type.
                                     * (TUint32 - default: none - read only)
@@ -186,13 +150,7 @@
                                     * type exists in CommsDat.
                                     */
                                 
-        ECmBearerSettingName,       /**<
-                                    * Name of the data bearer used when 
-                                    * accessing external network.
-                                    * (String - default: none - read only)
-                                    */
-        
-        ECmVirtual,                 /**<
+        ECmVirtual = 206,          /**<
                                     * Is the given connection method virtual?
                                     * (TBool - default: none - read only)
                                     */
@@ -206,13 +164,7 @@
                                     * (TUint32 - default: none - read only)
                                     */
                                     
-        ECmAddToAvailableList,      /**<
-                                    * Bearer type has to be added to the avaialable
-                                    * bearer type list.
-                                    * (TBool - default: EFalse - read only)
-                                    */                   
-                        
-        ECmLoadResult,              /**<
+        ECmLoadResult = 402,        /**<
                                     * Result of the load process. KErrNone if there
                                     * was no error. Otherwise a system wide
                                     * error code.
--- a/ipcm_pub/connection_settings_api/inc/cmdestination.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_pub/connection_settings_api/inc/cmdestination.h	Mon May 03 12:53:07 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006-2010 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"
@@ -11,24 +11,24 @@
 *
 * Contributors:
 *
-* Description:  Destination interface class.
+* Description:
+* Destination interface class.
 *
 */
 
+
 #ifndef DESTINATION_H
 #define DESTINATION_H
 
-// System includes
 #include <cmconnectionmethod.h>
 #include <cmmanagerdef.h>
-#include <E32def.h>
 #include <e32base.h>
 #include <metadatabase.h>
 
-// FORWARD DECLARATIONS
-class CCmManagerImpl;
-class CCmDestinationData;
-class CGulIcon;
+// Forward declarations
+class RCmConnectionMethod;
+class CCmDestinationWrapper;
+
 
 /**
  *  RCmDestination is for setting/getting values of a network destination.
@@ -36,49 +36,42 @@
  *  @lib cmmanager.lib
  *  @since S60 v3.2
  */
-NONSHARABLE_CLASS(RCmDestination)
+NONSHARABLE_CLASS( RCmDestination )
     {
-    //=====================================================================
-    // Constructors/Destructors
-    // 
     public:
-    
         /** Default constructor. */
         IMPORT_C RCmDestination();
 
         IMPORT_C ~RCmDestination();
 
-        IMPORT_C RCmDestination(const RCmDestination& aCmDestination);
-        
-    //=====================================================================
-    // API functions
+        IMPORT_C RCmDestination( const RCmDestination& aDestination );
+
     public:
-
         /**
         * Close the session.
         *
         * @since S60 3.2
         */
         IMPORT_C void Close();
-            
+
         /**
         * Returns the number of connection methods of the destination
         *
         * @since 3.2
-        * @return the number of connection methods belonging to a destination        
-        */                 
+        * @return the number of connection methods belonging to a destination
+        */
         IMPORT_C TInt ConnectionMethodCount() const;
-        
+
         /**
-        * Returns a reference to the connection method. 
-        * The index must be less than the return value of 
+        * Returns a reference to the connection method.
+        * The index must be less than the return value of
         * ConnectionMethodCount().
         *
         * @since 3.2
         * @param anIndex
         * @return a connection method
-        */        
-        IMPORT_C RCmConnectionMethod ConnectionMethodL( TInt anIndex ) const;
+        */
+        IMPORT_C RCmConnectionMethod ConnectionMethodL( TInt aIndex ) const;
 
         /**
         * Returns the connection method with the ECmId.
@@ -86,19 +79,18 @@
         * @param aCmId unique id of the requested connection method.
         * @return connection method
         */
-        IMPORT_C RCmConnectionMethod ConnectionMethodByIDL( 
-                                                        TInt aCmId ) const;
+        IMPORT_C RCmConnectionMethod ConnectionMethodByIDL(
+                TInt aConnMethodId ) const;
 
         /**
         * Return the priority of the passed connection method
         *
         * @since 3.2
         * @param aCCMItem connection method
-        * @return the priority of the queried connection method 
+        * @return the priority of the queried connection method
         */
-        IMPORT_C TUint PriorityL(const RCmConnectionMethod& aCCMItem ) const;
-        
-        //Getting attributes
+        IMPORT_C TUint PriorityL(
+                const RCmConnectionMethod& aConnectionMethod ) const;
 
         /**
         * Returns the destination's Name attribute
@@ -106,47 +98,39 @@
         *
         * @since 3.2
         * @return HBufC* Passes returned value's ownership to the caller
-        */      
-        IMPORT_C HBufC* NameLC() const;                        
-        
+        */
+        IMPORT_C HBufC* NameLC() const;
+
         /**
         * Returns the destination's Id attribute
         *
         * @since 3.2
         * @return the destination's id
-        */                    
+        */
         IMPORT_C TUint32 Id() const;
-        
+
         /**
         * Returns the destination's ElementId attribute
         *
         * @since 3.2
-        * @return the destination's element id        
-        */            
-        IMPORT_C TUint32 ElementId() const;        
-                
-        /**
-        * Returns the Icon pointer
-        * This function leaves if the client does not have a valid UI context
-        *
-        * @since 3.2
-        * @return the destination icon  
-        */ 
-        IMPORT_C CGulIcon* IconL() const;
+        * @return the destination's element id
+        */
+        IMPORT_C TUint32 ElementId() const;
 
         /**
         * Returns the Metadata
         *
         * @since 3.2
         * @param aMetaField the meta data field to query
-        * @return the value of the requested field        
-        */            
-        IMPORT_C TUint32 MetadataL( CMManager::TSnapMetadataField aMetaField ) const;
-    
+        * @return the value of the requested field
+        */
+        IMPORT_C TUint32 MetadataL(
+                CMManager::TSnapMetadataField aMetadataField ) const;
+
         /**
         * Return the protection level of the destination.
         *
-        * @since 3.2              
+        * @since 3.2
         * @return protection level of the destination
         */
         IMPORT_C CMManager::TProtectionLevel ProtectionLevel() const;
@@ -155,12 +139,12 @@
         * Returns if there's a connection created with any of the destination's
         * connection method.
         *
-        * @since 3.2        
+        * @since 3.2
         * @return ETrue if there's a connection with any of the destination's
         * connection method.
         */
         IMPORT_C TBool IsConnectedL() const;
-        
+
         /**
         * Returns whether the destination is hidden or not.
         *
@@ -170,79 +154,85 @@
         IMPORT_C TBool IsHidden() const;
 
         /**
-        * checks if destinations are the same 
-        * 
+        * checks if destinations are the same
+        *
         * @since S60 3.2
         * @param aDestination the destination being compared
         * @return ETrue if the destinations are the same
         */
-        IMPORT_C TBool operator==(const RCmDestination& aDestination ) const;
-        
+        IMPORT_C TBool operator==( const RCmDestination& aDestination ) const;
+
         /**
-        * checks if destinations are not the same 
-        * 
+        * checks if destinations are not the same
+        *
         * @since S60 3.2
         * @param aDestination the destination being compared
         * @return ETrue if the destinations are different
         */
-        IMPORT_C TBool operator!=(const RCmDestination& aDestination ) const;
+        IMPORT_C TBool operator!=( const RCmDestination& aDestination ) const;
 
         /**
-        * assignment operator 
-        * 
+        * assignment operator
+        *
         * @since S60 3.2
         * @param aDestination the destination being compared
         * @return RCmDestination
         */
-        IMPORT_C RCmDestination& operator=(const RCmDestination& 
-                                                    aCmDestination);
+        IMPORT_C RCmDestination& operator=(
+                const RCmDestination&
+                aDestination );
 
-                /**
+        /**
         * Create a connection method that belongs to this destination.
-        * @param aImplementationUid - implementation uid (bearer type) of the 
+        * @param aImplementationUid - implementation uid (bearer type) of the
         * connection method to be created
         * @return newly created connection method
         */
-        IMPORT_C RCmConnectionMethod CreateConnectionMethodL( TUint32 aBearerType );
+        IMPORT_C RCmConnectionMethod CreateConnectionMethodL(
+                TUint32 aBearerType );
 
-        /*
+        /**
         * Adds an existing connection method to a destination
         * @param aConnectionMethod Connection method to be added
         * @return index in the Connection Method list
         */
-        IMPORT_C TInt AddConnectionMethodL( RCmConnectionMethod aConnectionMethod );            
+        IMPORT_C TInt AddConnectionMethodL(
+                RCmConnectionMethod aConnectionMethod );
 
-        /*
+        /**
         * Embeds an existing destination into this destination.
         * @param RCmDestination - Destination to be embedded
         * @return TInt - index in the Connection Method list
         */
-        IMPORT_C TInt AddEmbeddedDestinationL( const RCmDestination& aDestination );     
+        IMPORT_C TInt AddEmbeddedDestinationL(
+                const RCmDestination& aDestination );
 
         /**
         * Remove a connection method from a destination and delete it
-        * on update. 
-        * Exception: conenction method is not deleted  if it's referenced 
+        * on update.
+        * Exception: connection method is not deleted if it's referenced
         * from any other destination.
         * @param aConnectionMethod the connection method to be deleted.
         */
-        IMPORT_C void DeleteConnectionMethodL( RCmConnectionMethod& aConnectionMethod );
+        IMPORT_C void DeleteConnectionMethodL(
+                RCmConnectionMethod& aConnectionMethod );
 
         /**
         * Remove connection method from the destination
         * @param aConnectionMethod connection method to be removed
         */
-        IMPORT_C void RemoveConnectionMethodL( RCmConnectionMethod aConnectionMethod );
-
+        IMPORT_C void RemoveConnectionMethodL(
+                RCmConnectionMethod aConnectionMethod );
 
         /**
         * Set the connection method's priority based on the passed index.
         * @param aCCMItem the connection method item
-        * @param aIndex the new priority of the connection method in the 
+        * @param aIndex the new priority of the connection method in the
         * destination
         */
-        IMPORT_C void ModifyPriorityL( RCmConnectionMethod& aCCMItem, 
-                                       TUint aIndex );
+        IMPORT_C void ModifyPriorityL(
+                RCmConnectionMethod& aConnectionMethod,
+                TUint aIndex );
 
         /**
         * Set the destination's name
@@ -251,23 +241,17 @@
         IMPORT_C void SetNameL( const TDesC& aName );
 
         /**
-        * Set the destination's icon index.
-        * This fucton leaves if the client does not have a valid UI context
-        * @param aIconIndex new icon index of the destination
-        */
-        IMPORT_C void SetIconL( TUint32 anIndex );
-
-        /**
         * Set the Metadata
         * @param aMetaField field to be modified
         * @param aValue value to be set
-        */            
-        IMPORT_C void SetMetadataL( CMManager::TSnapMetadataField aMetaField, 
-                                    TUint32 aValue );
+        */
+        IMPORT_C void SetMetadataL(
+                CMManager::TSnapMetadataField aMetadataField,
+                TUint32 aValue );
 
         /**
         * Set the protection level of the destination.
-        * @param aProtLevel new protection level 
+        * @param aProtLevel new protection level
         */
         IMPORT_C void SetProtectionL( CMManager::TProtectionLevel aProtLevel );
 
@@ -275,13 +259,13 @@
         * Set if the destination is hidden or not.
         * @param aHidden - ETrue if destination is hidden
         */
-        IMPORT_C void SetHiddenL( TBool aHidden );         
+        IMPORT_C void SetHiddenL( TBool aHidden );
 
         /**
         * Update all values of the destination and its connection method.
         * Nothing if stored, if update leaves due to any reason.
         */
-        IMPORT_C void UpdateL();               
+        IMPORT_C void UpdateL();
 
         /**
         * Delete destination and its connection methods from CommsDat.
@@ -291,31 +275,48 @@
         IMPORT_C void DeleteLD();
 
         /**
-        * Create a connection method with given id that belongs to this destination.
-        * @param aImplementationUid - implementation uid (bearer type) of the 
+        * Create a connection method with given id that belongs to this
+        * destination.
+        * @param aImplementationUid - implementation uid (bearer type) of the
         * connection method to be created
         * @return newly created connection method or leaves with
         * KErrAlreadyExists if there exists CM with the same Id.
         */
-        IMPORT_C RCmConnectionMethod CreateConnectionMethodL( TUint32 aBearerType,
-                                                              TUint32 aConnMethId );
+        IMPORT_C RCmConnectionMethod CreateConnectionMethodL(
+                TUint32 aBearerType,
+                TUint32 aConnMethodId );
+
+        /**
+         * Gets the icon identifier(name) of the destination. It can
+         * contain path information. HBufC* ownership is passed to the caller.
+         * @return Returns pointer to a buffer which identifies the requested
+         * icon.
+         */
+        IMPORT_C HBufC* GetIconL() const;
+
+        /**
+         * Sets the icon identifier(name) of the destination. It can
+         * contain path information.
+         * @param aIcon Identifier of the destination icon.
+         */
+        IMPORT_C void SetIconL( const TDesC& aIcon );
+
+        /**
+        * Reload the contents of the destination from database.
+        * Any current changes made to the destination are lost.
+        * @return None.
+        */
+        IMPORT_C void RefreshL();
 
 
-    //=======================================================================
-    // Member variables
-    //
-    private: 
-        
-        /**
-         * the implementation class
-         */
-        CCmDestinationData* iDestinatonData;
+    private:
+        friend class RCmManager;
+        friend class RCmConnectionMethod;
 
     private:
-    
-        friend class RCmManager;
-        friend class RCmConnectionMethod;
+        CCmDestinationWrapper* iCmDestinationWrapper;
     };
-    
 
 #endif // DESTINATION_H
+
+// End of file
--- a/ipcm_pub/connection_settings_api/inc/cmmanager.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_pub/connection_settings_api/inc/cmmanager.h	Mon May 03 12:53:07 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006-2010 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"
@@ -11,26 +11,25 @@
 *
 * Contributors:
 *
-* Description:  Connection manager IF class.
+* Description:
+* Connection method manager IF class.
 *
 */
 
+
 #ifndef CMMANAGER_H
 #define CMMANAGER_H
 
-// System Includes
-#include <e32std.h>
 #include <e32base.h>
-#include <e32cmn.h>
 #include <cmdefconnvalues.h>
 #include <cmgenconnsettings.h>
 
-// Forward Declarations
+// Forward declarations
 class RCmConnectionMethod;
 class RCmDestination;
-class CCmManagerImpl;
 class TBearerPriority;
-class CGulIcon;
+class RCmManagerApi;
+
 
 /**
  *  RCmManager gives access to network destinations and connection methods.
@@ -38,51 +37,40 @@
  *  @lib cmmanager.lib
  *  @since S60 v3.2
  */
-NONSHARABLE_CLASS(RCmManager)
-      {          
-    //=====================================================================
-    // Constructors/Destructors
-    // 
+NONSHARABLE_CLASS( RCmManager )
+    {
     public:
-    
         /**
-        * Default constructor. 
+        * Default constructor.
         */
         inline RCmManager();
 
-    //=====================================================================
-    // API functions
-    public:
-        
         /**
         * Symbian constructor
         *
         * @since S60 3.2
         */
-        IMPORT_C void OpenL();    
-        
+        IMPORT_C void OpenL();
+
         /**
         * Symbian constructor
         * Pushes the object on the cleanup stack
         *
         * @since S60 3.2
         */
-        IMPORT_C void OpenLC();    
-        
+        IMPORT_C void OpenLC();
+
         /**
         * Secondary destructor
         *
         * @since S60 3.2
         */
         IMPORT_C void Close();
-        
-    //=======================================================================
-    // Getter API
-    public:    
-      
+
+    public:
         /**
         * Used to query bearer information that doesn't belong
-        * to a specific connection method, such as 
+        * to a specific connection method, such as
         * ECmCoverage or ECmDefaultPriority etc.
         *
         * @since S60 3.2
@@ -90,13 +78,13 @@
         * @param aAttribute the setting value
         * @return the setting value
         */
-        IMPORT_C TUint32 GetBearerInfoIntL( TUint32 aBearerType,
-                                  TUint32 aAttribute ) const;
-                                  
-        
+        IMPORT_C TUint32 GetBearerInfoIntL(
+                TUint32 aBearerType,
+                TUint32 aAttribute ) const;
+
         /**
         * Used to query bearer information that doesn't belong
-        * to a specific connection method, such as 
+        * to a specific connection method, such as
         * ECmCoverage or ECmDefaultPriority etc.
         *
         * @since S60 3.2
@@ -104,11 +92,13 @@
         * @param aAttribute the setting value
         * @return the setting value
         */
-        IMPORT_C TBool GetBearerInfoBoolL( TUint32 aBearerType,
-                                 TUint32 aAttribute ) const;
+        IMPORT_C TBool GetBearerInfoBoolL(
+                TUint32 aBearerType,
+                TUint32 aAttribute ) const;
+
         /**
         * Used to query bearer information that doesn't belong
-        * to a specific connection method, such as 
+        * to a specific connection method, such as
         * ECmCoverage or ECmDefaultPriority etc.
         * HBuf ownership is passed to the caller
         *
@@ -116,12 +106,14 @@
         * @param aBearerType the bearer
         * @param aAttribute the setting value
         * @return the setting value
-        */        
-        IMPORT_C HBufC* GetBearerInfoStringL( TUint32 aBearerType,
-                                    TUint32 aAttribute ) const;
+        */
+        IMPORT_C HBufC* GetBearerInfoStringL(
+                TUint32 aBearerType,
+                TUint32 aAttribute ) const;
+
         /**
         * Used to query bearer information that does not belong
-        * to a specific connection method, such as 
+        * to a specific connection method, such as
         * ECmCoverage or ECmDefaultPriority, etc.
         * HBuf ownership is passed to the caller
         *
@@ -130,9 +122,10 @@
         * @param aAttribute the setting value
         * @return the setting value
         */
-        IMPORT_C HBufC8* GetBearerInfoString8L( TUint32 aBearerType,
-                                    TUint32 aAttribute ) const;
-                    
+        IMPORT_C HBufC8* GetBearerInfoString8L(
+                TUint32 aBearerType,
+                TUint32 aAttribute ) const;
+
         /**
         * Used to query any non-bearer specific information about
         * a given connection method. This can be e.g. ECmBearerType,
@@ -143,9 +136,10 @@
         * @param aAttribute the setting value
         * @return the setting value
         */
-        IMPORT_C TUint32 GetConnectionMethodInfoIntL( TUint32 aIapId,
-                                             TUint32 aAttribute ) const;
-        
+        IMPORT_C TUint32 GetConnectionMethodInfoIntL(
+                TUint32 aIapId,
+                TUint32 aAttribute ) const;
+
         /**
         * Used to query any, non-bearer specific information about
         * a given connection method. This can be e.g. ECmBearerType,
@@ -156,8 +150,9 @@
         * @param aAttribute the setting value
         * @return the setting value
         */
-        IMPORT_C TBool GetConnectionMethodInfoBoolL( TUint32 aIapId,
-                                            TUint32 aAttribute ) const;
+        IMPORT_C TBool GetConnectionMethodInfoBoolL(
+                TUint32 aIapId,
+                TUint32 aAttribute ) const;
 
         /**
         * Used to query any non-bearer specific information about
@@ -170,8 +165,9 @@
         * @param aAttribute the setting value
         * @return the setting value
         */
-        IMPORT_C HBufC* GetConnectionMethodInfoStringL( TUint32 aIapId,
-                                               TUint32 aAttribute ) const;
+        IMPORT_C HBufC* GetConnectionMethodInfoStringL(
+                TUint32 aIapId,
+                TUint32 aAttribute ) const;
 
         /**
         * Used to query any non-bearer specific information about
@@ -184,9 +180,10 @@
         * @param aAttribute the setting value
         * @return the setting value
         */
-        IMPORT_C HBufC8* GetConnectionMethodInfoString8L( TUint32 aIapId,
-                                               TUint32 aAttribute ) const;
-                
+        IMPORT_C HBufC8* GetConnectionMethodInfoString8L(
+                TUint32 aIapId,
+                TUint32 aAttribute ) const;
+
         /**
         * Returns the connection method queried by its ID
         *
@@ -194,53 +191,54 @@
         * @param aConnectionMethodId id of the connection method
         * @return RCmConnectionMethod connection method
         */
-        IMPORT_C RCmConnectionMethod ConnectionMethodL( 
-                                     TUint32 aConnectionMethodId ) const;
-                        
+        IMPORT_C RCmConnectionMethod ConnectionMethodL(
+                TUint32 aConnectionMethodId ) const;
+
         /**
-        * Returns the list of connection methods. Connection Methods are 
+        * Returns the list of connection methods. Connection Methods are
         * filtered by the switch parameters e.g. aLegacyOnly.
         *
         * @since S60 3.2
         * @param aCMArray on return it is the array of IAP ids.
-        * @param aCheckBearerType If ETrue only connection methods with 
+        * @param aCheckBearerType If ETrue only connection methods with
         *                         supported bearer type are returned
         * @param aLegacyOnly when set to ETrue only Legacy IAP ids will
         *                         be returned
         * @param aEasyWlan when set to ETrue EasyWlan id is returned, too
         */
-        IMPORT_C void ConnectionMethodL( RArray<TUint32>& aCMArray, 
-                                         TBool aCheckBearerType = ETrue,
-                                         TBool aLegacyOnly = ETrue,
-                                         TBool aEasyWlan = EFalse ) const;
-        
+        IMPORT_C void ConnectionMethodL(
+                RArray<TUint32>& aCmArray,
+                TBool aCheckBearerType = ETrue,
+                TBool aLegacyOnly = ETrue,
+                TBool aEasyWlan = EFalse ) const;
+
         /**
         * Returns an array of all destination id's
         *
         * @since S60 3.2
         * @param aDestArray list all available destinations' id
-        */ 
+        */
         IMPORT_C void AllDestinationsL( RArray<TUint32>& aDestArray ) const;
 
         /**
-        * Returns the destination to which a specified 
+        * Returns the destination to which a specified
         * connection method belongs, search is by destination ID
         *
         * @since S60 3.2
         * @param aDestinationId id of destination
-        * @return RCmDestination network destination 
+        * @return RCmDestination network destination
         */
         IMPORT_C RCmDestination DestinationL( TUint32 aDestinationId ) const;
-       
+
         /**
         * Returns the copy of the bearer priority array. Ownership is passed.
         *
         * @since S60 3.2
         * @param aArray bearer priority array
-        */          
-        IMPORT_C void BearerPriorityArrayL( 
-                                   RArray<TBearerPriority>& aArray ) const;
-       
+        */
+        IMPORT_C void BearerPriorityArrayL(
+                RArray<TBearerPriority>& aArray ) const;
+
         /**
         * Clean up passed global bearer priority array. Delete
         * the elements and calls Reset and Close on the array.
@@ -248,9 +246,9 @@
         * @since S60 3.2
         * @param aArray array to be cleaned up
         */
-        IMPORT_C void CleanupGlobalPriorityArray( 
-                                   RArray<TBearerPriority>& aArray ) const;
-        
+        IMPORT_C void CleanupGlobalPriorityArray(
+                RArray<TBearerPriority>& aArray ) const;
+
         /**
         * Returns the id of the EasyWlan connection method.
         *
@@ -258,20 +256,20 @@
         * @return id of the EasyWLan connection method. 0 if not found.
         */
         IMPORT_C TUint32 EasyWlanIdL() const;
-        
+
         /**
         * Returns the default connection method/SNAP.
         *
         * @since S60 3.2
         */
-        IMPORT_C void ReadDefConnL( TCmDefConnValue& aDCSetting );
+        IMPORT_C void ReadDefConnL( TCmDefConnValue& aDefConnSetting );
 
         /**
         * Stores the default connection method/SNAP.
         *
         * @since S60 3.2
         */
-        IMPORT_C void WriteDefConnL( const TCmDefConnValue& aDCSetting );  
+        IMPORT_C void WriteDefConnL( const TCmDefConnValue& aDefConnSetting );
 
 
         /**
@@ -287,15 +285,15 @@
         * @since S60 9.2
         */
         IMPORT_C void WriteGenConnSettingsL( const TCmGenConnSettings& aGenConnSettings );
-        
-        
+
+
         /** Open session and create tables if they don't exist*/
-        IMPORT_C void CreateTablesAndOpenL();    
+        IMPORT_C void CreateTablesAndOpenL();
 
         /**
-        * Creates a Destination with the passed name. 
+        * Creates a Destination with the passed name.
         * @param aName the name of the new destination.
-        * @return RCmDestination new destination. ownership is passed to the 
+        * @return RCmDestination new destination. ownership is passed to the
         * caller
         */
         IMPORT_C RCmDestination CreateDestinationL( const TDesC& aName );
@@ -305,62 +303,69 @@
         * @param aImplementationUid - bearer type of the new connection method
         * @return RCmConnectionMethod newly created connection method.
         */
-        IMPORT_C RCmConnectionMethod CreateConnectionMethodL( TUint32 aBearerType );        
+        IMPORT_C RCmConnectionMethod CreateConnectionMethodL(
+                TUint32 aBearerType );
 
         /**
-        * Copies a connection method belonging to one destination to 
+        * Copies a connection method belonging to one destination to
         * another. The connection method becomes shared.
         * Calls UpdateL on the destination
         * @param aTargetDestination
         * @param aConnectionMethodId
         * @return TInt - index in the Connection Method list
         */
-        IMPORT_C TInt CopyConnectionMethodL( RCmDestination& aTargetDestination,
-                                             RCmConnectionMethod& aConnectionMethod );
+        IMPORT_C TInt CopyConnectionMethodL(
+                RCmDestination& aTargetDestination,
+                RCmConnectionMethod& aConnectionMethod );
 
         /**
-        * Moves a connection method belonging to one destination to 
+        * Moves a connection method belonging to one destination to
         * another. The connection method is removed from the source destination
         * @param aSourceDestination
         * @param aTargetDestination
         * @param aConnectionMethod
         * @return TInt - index in the Connection Method list
         */
-        IMPORT_C TInt MoveConnectionMethodL( RCmDestination& aSourceDestination,
-                                             RCmDestination& aTargetDestination,
-                                             RCmConnectionMethod& aConnectionMethod );
+        IMPORT_C TInt MoveConnectionMethodL(
+                RCmDestination& aSourceDestination,
+                RCmDestination& aTargetDestination,
+                RCmConnectionMethod& aConnectionMethod );
 
         /**
         * Remove connection method from the destination
         * @param aDestination destination the connection method is attached to
         * @param aConnectionMethod connection method to be removed
         */
-        IMPORT_C void RemoveConnectionMethodL( RCmDestination& aDestination,
-                                               RCmConnectionMethod& aConnectionMethod );
+        IMPORT_C void RemoveConnectionMethodL(
+                RCmDestination& aDestination,
+                RCmConnectionMethod& aConnectionMethod );
 
         /**
-        * Removes connection method from every destination and make it 
+        * Removes connection method from every destination and make it
         * uncategorized.
         * @param aConnectionMethod connection method to be removed
         */
-        IMPORT_C void RemoveAllReferencesL( RCmConnectionMethod& aConnectionMethod );
+        IMPORT_C void RemoveAllReferencesL(
+                RCmConnectionMethod& aConnectionMethod );
 
         /**
         * Update bearer priority array
         * @param aArray array with new global bearer priority
-        */          
-        IMPORT_C void UpdateBearerPriorityArrayL( const RArray<TBearerPriority>& aArray );
+        */
+        IMPORT_C void UpdateBearerPriorityArrayL(
+                const RArray<TBearerPriority>& aArray );
 
         /**
-        * Creates a Destination with the passed name and id. 
+        * Creates a Destination with the passed name and id.
         * @param aName the name of the new destination.
         * @param aDestId Predefined id of the destination.
         * @return RCmDestination newly created destination or leaves with
         * KErrAlreadyExists if there exists CM with the same Id.
         * Ownership is passed to the caller.
         */
-        IMPORT_C RCmDestination CreateDestinationL( const TDesC& aName,
-                                                       TUint32      aDestId );
+        IMPORT_C RCmDestination CreateDestinationL(
+                const TDesC& aName,
+                TUint32 aDestId );
 
         /**
         * Creates a connection method does not belong to any destination
@@ -371,47 +376,50 @@
         * method or leaves with KErrAlreadyExists if there exists CM
         * with the same Id.
         */
-        IMPORT_C RCmConnectionMethod CreateConnectionMethodL( TUint32 aImplementationUid,
-                                                              TUint32 aConnMethodId );
+        IMPORT_C RCmConnectionMethod CreateConnectionMethodL(
+                TUint32 aBearerType,
+                TUint32 aConnMethodId );
 
         /**
         * Query all of the supported bearer types.
         * @param aArray list of all supported bearer types.
-        */          
+        */
         IMPORT_C void SupportedBearersL( RArray<TUint32>& aArray ) const;
 
         /**
-        * Returns "Uncategorized" icon.
-        * This fucton leaves if the client does not have a valid UI context
-        * @return CGulIcon* Icon of uncategorized connection methods. Ownership 
-        * is passed.
-        */          
-        IMPORT_C CGulIcon* UncategorizedIconL() const;
-        
+         * Gets the "Uncategorized" icon identifier(name). It can
+         * contain path information. HBufC* ownership is passed to the caller.
+         * @return Returns pointer to a buffer which identifies the requested
+         * icon.
+         */
+        IMPORT_C HBufC* GetUncategorizedIconL() const;
+
+
     private:
         /**
         * This is a private copy constructor without implementation.
-        * The sole purpose of this declaration is to forbid the copying of 
+        * The sole purpose of this declaration is to forbid the copying of
         * the objects of this class.
-        */          
-        RCmManager(RCmManager&  );
+        */
+        RCmManager( RCmManager& );
+
         /**
         * This is a private copy constructor without implementation.
-        * The sole purpose of this declaration is to forbid the copying of 
+        * The sole purpose of this declaration is to forbid the copying of
         * the objects of this class.
-        */          
+        */
         RCmManager& operator=( RCmManager& );
-    //=========================================================================
-    // Member data
-    
+
     private:
-    
-        /**
-         * the implementation class
-         */
-        CCmManagerImpl* iImplementation;
+        RCmManagerApi* iCmManagerApi;
     };
 
-#include "cmmanager.inl"
-    
+
+inline RCmManager::RCmManager() : iCmManagerApi( NULL )
+    {
+    }
+
+
 #endif // CMMANAGER_H
+
+// End of file
--- a/ipcm_pub/connection_settings_api/inc/cmmanager.inl	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  implementation of cmmanager.h inline functions
-*
-*/
-
-
-// -----------------------------------------------------------------------------
-// RCmManager::RCmManager
-// -----------------------------------------------------------------------------
-//
-inline RCmManager::RCmManager()
-    : iImplementation(NULL)
-    {
-    }
--- a/ipcm_pub/connection_settings_api/inc/cmmanagerdef.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_pub/connection_settings_api/inc/cmmanagerdef.h	Mon May 03 12:53:07 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006-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"
@@ -11,17 +11,19 @@
 *
 * Contributors:
 *
-* Description:  Definition module for Connection Method Manager
+* Description:
+* Definition module for Connection Method Manager.
 *
 */
 
+
 #ifndef CMMANAGERDEF_H
 #define CMMANAGERDEF_H
 
-// System includes
-#include <E32def.h>
+#include <e32def.h>
 #include <e32std.h>
-           
+
+
 namespace CMManager
     {
     /**
@@ -159,22 +161,22 @@
 NONSHARABLE_CLASS( TBearerPriority )
     {
     public:
-        
+
         HBufC*     iServiceType;    /**<
                                     * Name of the service table to identify
-                                    * type of bearer 
+                                    * type of bearer
                                     */
-                                    
+
         TUint32    iPriority;       /**<
-                                    * Priority of the bearer. 
-                                    * Values must be unique within the table 
+                                    * Priority of the bearer.
+                                    * Values must be unique within the table
                                     */
-                                    
+
         TUint32    iUIPriority;     /**<
                                     * Priority of this bearer type when shown
-                                    * in UI for configuring a new IAP. 
-                                    * Values must be unique within the table 
+                                    * in UI for configuring a new IAP.
+                                    * Values must be unique within the table
                                     */
-    };       
-    
+    };
+
 #endif // CMMANAGERDEF_H
--- a/ipcm_pub/connection_settings_api/inc/cmpluginpacketdatadef.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_pub/connection_settings_api/inc/cmpluginpacketdatadef.h	Mon May 03 12:53:07 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006 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"
@@ -11,7 +11,8 @@
 *
 * Contributors:
 *
-* Description:  packet data specific enums
+* Description:
+* Packet data specific enums.
 *
 */
 
@@ -274,13 +275,13 @@
                                     * ( TBool - default: None)
                                     */
 
-    EGPRSReqTrafficClass = 10200,   /**< 
+    EGPRSReqTrafficClass = 10200,   /**<
                                     * Requested traffic class
                                     * Defined in etelqos.h in RPacketQoS::TTrafficClass.
                                     * (TUint32 - default: ETrafficClassUnspecified)
                                     */
-    
-    EGPRSMinTrafficClass,           /**< 
+
+    EGPRSMinTrafficClass,           /**<
                                     * Minimum acceptable traffic class.
                                     * Defined in etelqos.h in RPacketQoS::TTrafficClass.
                                     * (TUint32 - default: ETrafficClassUnspecified)
--- a/ipcm_pub/connection_settings_api/inc/cmpluginwlandef.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_pub/connection_settings_api/inc/cmpluginwlandef.h	Mon May 03 12:53:07 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2006-2010 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"
@@ -11,7 +11,8 @@
 *
 * Contributors:
 *
-* Description:  ?description
+* Description:
+* WLAN specific enums.
 *
 */
 
@@ -25,15 +26,15 @@
 
 namespace CMManager
     {
-    /** enumerations for WLAN network modes */
+    /** Enumerations for WLAN network modes. */
     enum TWlanNetMode
         {
         EAdhoc       = 0,   ///< Ad-Hoc mode
         EInfra       = 1    ///< Infrastructure mode
         };
-        
-    /** enumerations for WLAN security modes 
-     ** It's possible to extend this enumeration */
+
+    /** Enumerations for WLAN security modes.
+     ** It's possible to extend this enumeration. */
     enum TWlanSecMode
         {
         EWlanSecModeOpen    = 1,    ///< Open security mode
@@ -44,7 +45,33 @@
         EWlanSecModeWAPI    = 32    ///< WAPI security mode
         };
 
-    /** Wlan specific connection method attributes */
+    /** Enumerations for WLAN authentication modes.
+     ** It's possible to extend this enumeration. */
+    enum TWlanAuthMode
+        {
+        EWlanAuthModeOpen   = 0,
+        EWlanAuthModeShared = 1
+        };
+
+    /** Enumerations for WAPI pre-shared key format (ascii, hex).
+     ** It's possible to extend this enumeration. */
+    enum TWlanWapiPskFormat
+        {
+        EWlanWapiPskFormatAscii = 0,
+        EWlanWapiPskFormatHex
+        };
+
+    /** Enumerations for the WEP key indexes.
+     ** It's possible to extend this enumeration. */
+    enum TWepKeyIndex
+        {
+        EWepKeyIndex1 = 0, // Key number 1
+        EWepKeyIndex2,     // Key number 2
+        EWepKeyIndex3,     // Key number 3
+        EWepKeyIndex4      // Key number 4
+        };
+
+    /** WLAN specific connection method attributes. */
     enum TConnectionMethodWlanSpecificAttributes
         {
         /**
@@ -56,27 +83,27 @@
         /**
         * IP net mask of interface.
         * ( String - default: None)
-        */        
+        */
         EWlanIpNetMask,
-            
+
         /**
-        * IP address of gateway
+        * IP address of gateway.
         * ( String - default: None)
         */
         EWlanIpGateway,
-            
+
         /**
         * Get IP addresses (for EPOC) from server?
         * ( TBool - default: None)
         */
         EWlanIpAddrFromServer,
-        
+
         /**
         * IP address of EPOC.
         * ( String - default: None)
         */
         EWlanIpAddr,
-        
+
         /**
         * Get DNS addresses from server?
         * ( TBool - default: None)
@@ -88,149 +115,204 @@
         * ( String - default: None)
         */
         EWlanIpNameServer1,
-            
+
         /**
         * IP Address of secondary name server.
         * ( String - default: None)
         */
         EWlanIpNameServer2,
-        
+
         /**
         * Get IP6 DNS addresses from server?
         * ( TBool - default: None)
         */
         EWlanIp6DNSAddrFromServer,
-        
+
         /**
         * IP6 Address of primary name server.
         * ( String - default: None)
         */
         EWlanIp6NameServer1,
-        
+
         /**
         * IP6 Address of secondary name server.
         * ( String - default: None)
         */
         EWlanIp6NameServer2,
-        
+
         /**
-        * IP address valid from this time, used to store 
+        * IP address valid from this time, used to store
         * dynamically assigned address lease info.
         * ( String - default: None)
         */
         EWlanIpAddrLeaseValidFrom,
-            
+
         /**
         * IP address valid for use until this time, used to store
         * dynamically assigned address lease info.
         * ( String - default: None)
         */
         EWlanIpAddrLeaseValidTo,
-            
+
         /**
-        * Name of the ECOM configuration daemon manager component. 
-        * This component interfaces with the server identified in 
-        * ISP_CONFIG_DAEMON_NAME. If specified, ISP_CONFIG_DAEMON_NAME 
-        * should also be specified. 
+        * Name of the ECOM configuration daemon manager component.
+        * This component interfaces with the server identified in
+        * ISP_CONFIG_DAEMON_NAME. If specified, ISP_CONFIG_DAEMON_NAME
+        * should also be specified.
         * ( String - default: None)
         */
         EWlanConfigDaemonManagerName,
-            
+
         /**
-        * Name of the configuration daemon server. 
-        * This server is used to provide further configuration for 
-        * a connection, e.g. dynamic IP address assignment. 
-        * If specified, ISP_CONFIG_DAEMON_MANAGER_NAME should also 
+        * Name of the configuration daemon server.
+        * This server is used to provide further configuration for
+        * a connection, e.g. dynamic IP address assignment.
+        * If specified, ISP_CONFIG_DAEMON_MANAGER_NAME should also
         * be specified.
         * ( String - default: None)
         */
         EWlanConfigDaemonName,
-            
+
         /**
         * Name of the WLAN Service Extension table.
         * ( String - default: None)
         */
         EWlanServiceExtensionTableName,
-            
+
         /**
         * The record ID of the linked WLAN Service Extension record in the
         * WLAN Service Extension table.
         * ( TUint32 - default: None)
         */
         EWlanServiceExtensionTableRecordId,
-        
+
         /**
         * Marks the beginning of WLAN specific attributes.
         */
         EWlanSpecificAttributes = 30000,
-            
+
         /**
         * The record ID to which IAP record these settings belong to.
         * ( TUint32 - default: None)
         */
         EWlanServiceId = 30100,
-            
+
         /**
         * The connection mode. This can be either Ad-hoc or infrastructure.
         * TWlanNetMode enum is to be used.
         * ( TUint32 - default: EInfra )
         */
         EWlanConnectionMode,
-            
+
         /**
         * The SSID of this WLAN connection.
         * ( String - default: None)
         */
         EWlanSSID,
-            
+
         /**
         * Used SSID.
         * ( String - default: None)
         */
         EWlanUsedSSID,
-            
+
         /**
         * The security mode of this WLAN connection. It is a TWlanSecMode enum.
         * ( TUint32 - default: EWlanSecModeOpen )
         */
         EWlanSecurityMode,
-            
+
         /**
-        * Authentication type: none, wep, wpa, wpapresharedkey
-        * ( TUint32 - default: None )
+        * Authentication mode: Defined in TWlanAuthMode.
+        * ( TUint32 - default: EWlanAuthModeOpen )
         */
         EWlanAuthenticationMode,
-            
+
         /**
         * Gives whether it should scan for the SSID.
         * (TBool - default: EFalse )
         */
         EWlanScanSSID,
-        
+
         /**
         * This is the channel ID in ad-hoc network mode
         * ( TUint32 - default: EAdhocAutomatic, if set to EAdhocUserDefined default = 7 )
         */
         EWlanChannelID,
-        
+
         /**
         * Gives whether it is allowed to roam inside one SSID or not.
         * (TBool - default: determined through variation )
         */
         EWlanAllowSSIDRoaming,
-        
-            
-        // The following attributes before EWlanRangeMax are for internal use only
+
+        /**
+        * WEP key data.
+        * Key data is in hex-format (0-9, A-F, length 10 or 26).
+        * String (8-bit)
+        */
+        EWlanWepKey1InHex = 31000,
+        EWlanWepKey2InHex,
+        EWlanWepKey3InHex,
+        EWlanWepKey4InHex,
+
+        /**
+        * WEP key data.
+        * Key data is in ascii-format (length 5 or 13).
+        * String (8-bit)
+        */
+        EWlanWepKey1InAscii,
+        EWlanWepKey2InAscii,
+        EWlanWepKey3InAscii,
+        EWlanWepKey4InAscii,
+
+        /**
+        * Used WEP key.
+        * TWepKeyIndex
+        */
+        EWlanWepKeyIndex,
+
+        /**
+        * Is unencrypted mode allowed in 802.1x.
+        * TBool
+        */
+        EWlan802_1xAllowUnencrypted = 31050,
+
+        /**
+        * WPA pre-shared key usage.
+        * TBool
+        */
+        EWlanEnableWpaPsk = 31100,
+
+        /**
+        * WPA pre-shared key.
+        * String (8-bit)
+        */
+        EWlanWpaPreSharedKey,
+
+        /**
+        * WAPI pre-shared key data.
+        * String (8-bit)
+        */
+        EWlanWapiPsk = 31150,
+
+        /**
+        * The format of the WAPI key (ascii, hex)
+        * TWlanWapiKeyFormat
+        */
+        EWlanWapiPskFormat,
+
+        // The following attributes before EWlanRangeMax are for internal use only.
         /**
         * Internal limiter
         */
         EWlanRangeInternal = 35000,
-            
+
         /**
         * Internal, used for the security settings.
         */
         EWlanSecuritySettings,
-        
+
         /**
         * Marks the end of WLAN attributes.
         */
--- a/ipcm_pub/connection_settings_ui_api/inc/cmapplicationsettingsui.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_pub/connection_settings_ui_api/inc/cmapplicationsettingsui.h	Mon May 03 12:53:07 2010 +0300
@@ -18,7 +18,10 @@
 #ifndef C_CMAPPLICATIONSETTINGSUI_H
 #define C_CMAPPLICATIONSETTINGSUI_H
 
-#include <E32def.h>
+// Deprecation warning
+#warning This header file is deprecated and will be fully removed in Symbian^4. See Polonium CRs #533 and #532 for details.
+
+#include <e32def.h>
 #include <e32base.h>
 
 class CCmConnSettingsUiImpl;
--- a/ipcm_pub/extendedconnpref_api/inc/extendedconnpref.h	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipcm_pub/extendedconnpref_api/inc/extendedconnpref.h	Mon May 03 12:53:07 2010 +0300
@@ -259,8 +259,11 @@
     IMPORT_C TBool DisconnectDialog() const;
 
     /**
-    * Enables or disables Connection selection dialog. Only the SNAPs/IAPs
-    * matching with BearerSet are shown in the dialog.
+    * DEPRECATED
+    *
+    * Enables or disables Connection selection dialog, but since the
+    * Connection selection dialog is deprecated functionality, this
+    * method gets the Internet SNAP chosen if set as enabled.
     * By default, Connection selection dialog is disabled.
     *
     * If Connection selection dialog is enabled, SNAP id shall be zero.
@@ -271,14 +274,20 @@
     * selection dialog shall be enabled.
     *
     * @param aConnSelectionDialog Indicates whether Connection selection
-    *                             dialog is enabled or disabled.
+    * dialog is enabled or disabled.
+    * @deprecated since Symbian^4 
     */
     IMPORT_C void SetConnSelectionDialog( TBool aConnSelectionDialog );
 
     /**
-    * Indicates whether Connection selection dialog is enabled.
+    * DEPRECATED
+    *
+    * Indicates whether Connection selection dialog is enabled. This
+    * function holds no value since the usage of the Connection selection
+    * dialog is deprecated, thus this function is deprecated also.
     *
     * @return Indicates whether Connection selection dialog is enabled.
+    * @deprecated since Symbian^4
     */
     IMPORT_C TBool ConnSelectionDialog() const;
 
--- a/ipconnmgmt.pro	Fri Apr 16 15:21:37 2010 +0300
+++ b/ipconnmgmt.pro	Mon May 03 12:53:07 2010 +0300
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# Copyright (c) 2010 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"
@@ -16,9 +16,11 @@
 
 TEMPLATE = subdirs
 
-SUBDIRS  += \ 
-		connectionutilities \
-		connectionmonitoring
+SUBDIRS  += \
+    ipcm_plat \
+    connectionutilities \
+    cmmanager \
+    connectionmonitoring
 
 CONFIG += ordered