Revision: 201015
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 03 May 2010 12:31:11 +0300
changeset 27 2f8f8080a020
parent 22 6bb1b21d2484
child 28 4820f90afff1
child 30 ebdbd102c78a
Revision: 201015 Kit: 201018
phone.pro
phone_plat/phone_application_commands_api/inc/phoneappcommands.hrh
phone_plat/telephony_information_api/inc/telinformationpskeys.h
phoneapp/phonestringloader/tsrc/ut_phonestringloader/ut_phonestringloader.pro
phoneapp/phoneui2/inc/phoneuikeyeventadapter.h
phoneapp/phoneui2/phoneui2.qrc
phoneapp/phoneui2/src/phoneuihousehold_p.cpp
phoneapp/phoneui2/src/phoneuikeyeventadapter.cpp
phoneapp/phoneui2/themes/icons/hbdefault/scalable/qtg_mono_loudspeaker.svg
phoneapp/phoneui2/themes/icons/hbdefault/scalable/qtg_mono_mute.svg
phoneapp/phoneui2/themes/icons/hbdefault/scalable/qtg_mono_speaker.svg
phoneapp/phoneui2/themes/icons/hbdefault/scalable/qtg_mono_speaker_off.svg
phoneapp/phoneui2/tsrc/ut_phoneuikeyeventadapter/unit_tests.cpp
phoneapp/phoneuicontrol/src/cphonestate.cpp
phoneapp/phoneuicontrol/src/cphoneuicontroller.cpp
phoneapp/phoneuiqtviewadapter/bwins/phoneuiqtviewadapteru.def
phoneapp/phoneuiqtviewadapter/eabi/phoneuiqtviewadapteru.def
phoneapp/phoneuiqtviewadapter/inc/phoneindicatorcontroller.h
phoneapp/phoneuiqtviewadapter/inc/phoneuiqtviewadapter.h
phoneapp/phoneuiqtviewadapter/inc/phoneviewcommanddefinitions.h
phoneapp/phoneuiqtviewadapter/phoneuiqtviewadapter.pri
phoneapp/phoneuiqtviewadapter/phoneuiqtviewadapter.pro
phoneapp/phoneuiqtviewadapter/src/phoneindicatorcontroller.cpp
phoneapp/phoneuiqtviewadapter/src/phonenotecontroller.cpp
phoneapp/phoneuiqtviewadapter/src/phoneresourceadapter.cpp
phoneapp/phoneuiqtviewadapter/src/phoneuicommandcontroller.cpp
phoneapp/phoneuiqtviewadapter/src/phoneuiqtviewadapter.cpp
phoneapp/phoneuiqtviewadapter/tsrc/u_carmodetester/main.cpp
phoneapp/phoneuiqtviewadapter/tsrc/u_carmodetester/u_carmodetester.pro
phoneapp/phoneuiqtviewadapter/tsrc/ut_phonecommandextensionwrapper/menuextension_stub.h
phoneapp/phoneuiqtviewadapter/tsrc/ut_phoneresourceadapter/unit_tests.cpp
phoneapp/phoneuiqtviewadapter/tsrc/ut_phoneuiqtviewadapter/unit_tests.cpp
phoneapp/phoneuiqtviewadapter/tsrc/ut_phoneuiqtviewadapter/ut_phoneuiqtviewadapter.pro
phoneapp/phoneuiqtviewadapter/tsrc/ut_telephonyservice/phoneuiqtviewadapter_stub.cpp
phoneapp/phoneuistates/src/cphonesingleandcallsetup.cpp
phoneapp/phoneuistates/src/cphonetwosinglesandwaiting.cpp
phoneapp/phoneuiview2/bwins/phoneuiqtviewu.def
phoneapp/phoneuiview2/eabi/phoneuiqtviewu.def
phoneapp/phoneuiview2/inc/phoneuiqtview.h
phoneapp/phoneuiview2/phoneuiview2.pro
phoneapp/phoneuiview2/src/phoneuiqtview.cpp
phoneapp/phoneuiview2/tsrc/ut_phoneuiqtview/hbvolumesliderpopup.h
phoneapp/phoneuiview2/tsrc/ut_phoneuiqtview/unit_tests.cpp
phoneapp/phoneuiview2/tsrc/ut_phoneuiqtview/ut_phoneuiqtview.pro
phoneengine/audiohandling/bwins/audiohandlingu.def
phoneengine/audiohandling/eabi/audiohandlingu.def
phoneengine/audiohandling/group/audiohandling.mmp
phoneengine/audiohandling/inc/cpeaudiodata.h
phoneengine/audiohandling/inc/cpeaudioeffect.h
phoneengine/audiohandling/inc/cpegsmaudiodata.h
phoneengine/audiohandling/src/cpeaudiodata.cpp
phoneengine/audiohandling/src/cpeaudioeffect.cpp
phoneengine/audiohandling/src/cpegsmaudiodata.cpp
phoneengine/contacthandling2/src/cpecontactmatch.cpp
phoneengine/contacthandling2/tsrc/run_auto_tests.bat
phoneengine/loghandling/tsrc/run_auto_tests.bat
phoneengine/networkhandlingstarter/inc/cnetworklistener.h
phoneengine/networkhandlingstarter/inc/mnetworklistenerobserver.h
phoneengine/networkhandlingstarter/inc/networkhandlingstarter.h
phoneengine/networkhandlingstarter/inc/networkhandlingstarter_p.h
phoneengine/networkhandlingstarter/inc/networkhandlingstarterlogging.h
phoneengine/networkhandlingstarter/networkhandlingstarter.pro
phoneengine/networkhandlingstarter/rom/networkhandlingstarter.iby
phoneengine/networkhandlingstarter/service_conf.xml
phoneengine/networkhandlingstarter/src/cnetworklistener.cpp
phoneengine/networkhandlingstarter/src/main.cpp
phoneengine/networkhandlingstarter/src/networkhandlingstarter.cpp
phoneengine/networkhandlingstarter/src/networkhandlingstarter_p.cpp
phoneengine/networkhandlingstarter/tsrc/common/qtestmains60.h
phoneengine/networkhandlingstarter/tsrc/mocks/mock_centralrepository.cpp
phoneengine/networkhandlingstarter/tsrc/mocks/mock_cnetworklistener.cpp
phoneengine/networkhandlingstarter/tsrc/mocks/mock_cnwsession.cpp
phoneengine/networkhandlingstarter/tsrc/mocks/mock_cppluginlauncher.cpp
phoneengine/networkhandlingstarter/tsrc/mocks/mock_hbaction.cpp
phoneengine/networkhandlingstarter/tsrc/mocks/mock_hbdevicemessagebox.cpp
phoneengine/networkhandlingstarter/tsrc/mocks/mock_hbinstance.cpp
phoneengine/networkhandlingstarter/tsrc/mocks/mock_hbmainwindow.cpp
phoneengine/networkhandlingstarter/tsrc/mocks/mock_mnetworklistenerobserver.cpp
phoneengine/networkhandlingstarter/tsrc/mocks/mock_networkhandlingstarter.cpp
phoneengine/networkhandlingstarter/tsrc/mocks/mock_networkhandlingstarter_p.cpp
phoneengine/networkhandlingstarter/tsrc/mocks/mock_qabstractscrollarea.cpp
phoneengine/networkhandlingstarter/tsrc/mocks/mock_qframe.cpp
phoneengine/networkhandlingstarter/tsrc/mocks/mock_qgraphicsview.cpp
phoneengine/networkhandlingstarter/tsrc/run_auto_tests_qt.bat
phoneengine/networkhandlingstarter/tsrc/ut_cnetworklistener/inc/ut_cnetworklistener.h
phoneengine/networkhandlingstarter/tsrc/ut_cnetworklistener/src/ut_cnetworklistener.cpp
phoneengine/networkhandlingstarter/tsrc/ut_cnetworklistener/ut_cnetworklistener.pro
phoneengine/networkhandlingstarter/tsrc/ut_networkhandlingstarter/inc/ut_networkhandlingstarter.h
phoneengine/networkhandlingstarter/tsrc/ut_networkhandlingstarter/src/ut_networkhandlingstarter.cpp
phoneengine/networkhandlingstarter/tsrc/ut_networkhandlingstarter/ut_networkhandlingstarter.pro
phoneengine/networkhandlingstarter/tsrc/ut_networkhandlingstarter_p/inc/ut_networkhandlingstarter_p.h
phoneengine/networkhandlingstarter/tsrc/ut_networkhandlingstarter_p/src/ut_networkhandlingstarter_p.cpp
phoneengine/networkhandlingstarter/tsrc/ut_networkhandlingstarter_p/ut_networkhandlingstarter_p.pro
phoneengine/parserrecognizer/parserrecognizer.pro
phoneengine/parserrecognizer/tsrc/ut_parserrecognizer/moc_parserrecognizer.cpp
phoneengine/parserrecognizer/tsrc/ut_parserrecognizer/moc_xqservicerequest.cpp
phoneengine/parserrecognizer/tsrc/ut_parserrecognizer/unit_tests.moc
phoneengine/parserrecognizer/tsrc/ut_parserrecognizer/ut_parserrecognizer_0xE31F4ECF.mmp
phoneengine/phonemodel/inc/cpeexternaldatahandler.h
phoneengine/phonemodel/inc/cpeincallearvolumesettingmonitor.h
phoneengine/phonemodel/inc/cpeincallloudspeakervolumesettingmonitor.h
phoneengine/phonemodel/inc/cpephonemodel.h
phoneengine/phonemodel/inc/mpeexternaldatahandler.h
phoneengine/phonemodel/inc/telinternalpskeys.h
phoneengine/phonemodel/phonemodel.pro
phoneengine/phonemodel/src/cpeexternaldatahandler.cpp
phoneengine/phonemodel/src/cpeincallearvolumesettingmonitor.cpp
phoneengine/phonemodel/src/cpeincallloudspeakervolumesettingmonitor.cpp
phoneengine/phonemodel/src/cpemessagehandler.cpp
phoneengine/phonemodel/src/cpephonemodel.cpp
phoneengine/phoneservices/phoneservices.pro
phoneengine/phoneservices/src/dialservice.cpp
phoneplugins/csplugin/group/csplugin.mmp
phoneplugins/csplugin/inc/cspaudiohandler.h
phoneplugins/csplugin/inc/cspaudiostreams.h
phoneplugins/csplugin/inc/cspcenreplistener.h
phoneplugins/csplugin/inc/cspdevsound.h
phoneplugins/csplugin/inc/cspmicrophone.h
phoneplugins/csplugin/inc/cspspeaker.h
phoneplugins/csplugin/inc/tmshandler.h
phoneplugins/csplugin/src/cspaudiohandler.cpp
phoneplugins/csplugin/src/cspaudiostreams.cpp
phoneplugins/csplugin/src/cspcenreplistener.cpp
phoneplugins/csplugin/src/cspdevsound.cpp
phoneplugins/csplugin/src/cspmicrophone.cpp
phoneplugins/csplugin/src/cspspeaker.cpp
phoneplugins/csplugin/src/tmshandler.cpp
phoneplugins/hsdialerwidgetplugin/hsdialerwidgetplugin.pro
phoneplugins/hsdialerwidgetplugin/hsdialerwidgetpluging.qrc
phoneplugins/hsdialerwidgetplugin/inc/hsdialerwidget.h
phoneplugins/hsdialerwidgetplugin/resource/qtg_fr_shortcut_badge_bg_c.png
phoneplugins/hsdialerwidgetplugin/resource/qtg_fr_shortcut_badge_bg_l.png
phoneplugins/hsdialerwidgetplugin/resource/qtg_fr_shortcut_badge_bg_r.png
phoneplugins/hsdialerwidgetplugin/src/hsdialerwidget.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidget.h
phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetengine.h
phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetlayoutmanager.h
phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetnetworkhandler.h
phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetpreferences.h
phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetsathandler.h
phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetsathandlerprivate.h
phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidget.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetengine.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetengine_s.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetlayoutmanager.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetlinehandler.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetnetworkhandler.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetpreferences.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetsathandler.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetsathandlerprivate.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/infowidgetprovider.pri
phoneplugins/infowidgetplugin/infowidgetprovider/infowidgetprovider.pro
phoneplugins/infowidgetplugin/infowidgetprovider/infowidgetprovider.qrc
phoneplugins/infowidgetplugin/infowidgetprovider/resource/infowidget.png
phoneplugins/infowidgetplugin/infowidgetprovider/resource/infowidgetprovider.manifest
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_RSatSession.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_hbframedrawer.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_hblabel.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_hbmarqueeitem.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_hbstyleoptionlabel.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidget.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidgetengine.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidgetlayoutmanager.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidgetnetworkhandler.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidgetpreferences.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidgetsathandler.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidgetsathandlerprivate.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_qgraphicslayout.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_qgraphicslinearlayout.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_rsatservice.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_xqsettingskey.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_xqsettingsmanager.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/run_auto_tests_qt.bat
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidget/inc/ut_infowidget.h
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidget/run_auto_tests_qt.bat
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidget/src/ut_infowidget.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidget/ut_infowidget.pro
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetengine/inc/ut_infowidgetengine.h
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetengine/run_auto_tests_qt.bat
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetengine/src/ut_infowidgetengine.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetengine/ut_infowidgetengine.pro
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetlayoutmanager/inc/ut_infowidgetlayoutmanager.h
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetlayoutmanager/run_auto_tests_qt.bat
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetlayoutmanager/src/ut_infowidgetlayoutmanager.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetlayoutmanager/ut_infowidgetlayoutmanager.pro
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetlinehandler/run_auto_tests_qt.bat
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetnetworkhandler/inc/ut_infowidgetnetworkhandler.h
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetnetworkhandler/run_auto_tests_qt.bat
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetnetworkhandler/src/ut_infowidgetnetworkhandler.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetnetworkhandler/ut_infowidgetnetworkhandler.pro
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetpreferences/inc/ut_infowidgetpreferences.h
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetpreferences/run_auto_tests_qt.bat
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetpreferences/src/ut_infowidgetpreferences.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetprovider/inc/ut_infowidgetprovider.h
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetprovider/run_auto_tests_qt.bat
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetprovider/src/ut_infowidgetprovider.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandler/inc/ut_infowidgetsathandler.h
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandler/run_auto_tests_qt.bat
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandler/src/ut_infowidgetsathandler.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandler/ut_infowidgetsathandler.pro
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandlerprivate/run_auto_tests_qt.bat
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandlerprivate/src/ut_infowidgetsathandlerprivate.cpp
phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandlerprivate/ut_infowidgetsathandlerprivate.pro
phoneplugins/infowidgetplugin/infowidgetproviderinstaller/infowidgetproviderinstaller.cpp
phoneplugins/infowidgetplugin/infowidgetproviderinstaller/infowidgetproviderinstaller.pro
phoneplugins/phoneindicatorplugin/inc/api_headers.pri
phoneplugins/phoneindicatorplugin/inc/phoneindicatorinterface.h
phoneplugins/phoneindicatorplugin/inc/phoneindicatorplugin.h
phoneplugins/phoneindicatorplugin/inc/phoneindicators.h
phoneplugins/phoneindicatorplugin/phoneindicatorplugin.pri
phoneplugins/phoneindicatorplugin/phoneindicatorplugin.pro
phoneplugins/phoneindicatorplugin/rom/phoneindicatorplugin.iby
phoneplugins/phoneindicatorplugin/src/phoneindicatorinterface.cpp
phoneplugins/phoneindicatorplugin/src/phoneindicatorplugin.cpp
phonesettings/cpphonesettingsplugins/barringplugin/inc/cpbarringplugingroup.h
phonesettings/cpphonesettingsplugins/barringplugin/src/cpbarringplugingroup.cpp
phonesettings/cpphonesettingsplugins/barringplugin/tsrc/run_auto_tests_qt.bat
phonesettings/cpphonesettingsplugins/barringplugin/tsrc/ut_barringplugingroup/ut_barringplugingroup.cpp
phonesettings/cpphonesettingsplugins/barringplugin/tsrc/ut_barringplugingroup/ut_barringplugingroup.h
phonesettings/cpphonesettingsplugins/barringplugin/tsrc/ut_barringplugingroup/ut_barringplugingroup.pro
phonesettings/cpphonesettingsplugins/bwins/cptelephonyutilsu.def
phonesettings/cpphonesettingsplugins/callsplugin/src/cpcallsplugingroup.cpp
phonesettings/cpphonesettingsplugins/callsplugin/tsrc/run_auto_tests_qt.bat
phonesettings/cpphonesettingsplugins/callsplugin/tsrc/ut_callsplugingroup/ut_callsplugingroup.cpp
phonesettings/cpphonesettingsplugins/cpnetworkplugin/cpnetworkplugin.pri
phonesettings/cpphonesettingsplugins/cpnetworkplugin/cpnetworkplugin.pro
phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cellulardatasettings.cpp
phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cellulardatasettings.h
phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cellulardatasettings_s60.cpp
phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cellulardatasettings_s60_p.h
phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkplugin.cpp
phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkpluginform.cpp
phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkpluginform.h
phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkpluginview.cpp
phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkpluginview.h
phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/run_auto_tests_qt.bat
phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cellulardatasettings/qtestmains60.h
phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cellulardatasettings/ut_cellulardatasettings.cpp
phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cellulardatasettings/ut_cellulardatasettings.h
phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cellulardatasettings/ut_cellulardatasettings.pro
phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkplugin/ut_cpnetworkplugin.pro
phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkpluginform/qtestmains60.h
phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkpluginform/ut_cpnetworkpluginform.pro
phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkpluginview/qtestmains60.h
phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkpluginview/qtestmains60ui.h
phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkpluginview/ut_cpnetworkpluginview.cpp
phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkpluginview/ut_cpnetworkpluginview.pro
phonesettings/cpphonesettingsplugins/cptelephonyutils/inc/cpphonenotes.h
phonesettings/cpphonesettingsplugins/cptelephonyutils/inc/cpplugincommon.h
phonesettings/cpphonesettingsplugins/cptelephonyutils/src/cpphonenotes.cpp
phonesettings/cpphonesettingsplugins/cptelephonyutils/src/cpplugincommon.cpp
phonesettings/cpphonesettingsplugins/cptelephonyutils/tsrc/run_auto_tests_qt.bat
phonesettings/cpphonesettingsplugins/cptelephonyutils/tsrc/ut_cpphonenotes/ut_cpphonenotes.cpp
phonesettings/cpphonesettingsplugins/cptelephonyutils/tsrc/ut_cpphonenotes/ut_cpphonenotes.h
phonesettings/cpphonesettingsplugins/cptelephonyutils/tsrc/ut_cpplugincommon/ut_cpplugincommon.cpp
phonesettings/cpphonesettingsplugins/cptelephonyutils/tsrc/ut_cpplugincommon/ut_cpplugincommon.h
phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertitemdata.cpp
phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertitemdata.h
phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertplugingroup.cpp
phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertplugingroup.h
phonesettings/cpphonesettingsplugins/divertplugin/tsrc/run_auto_tests_qt.bat
phonesettings/cpphonesettingsplugins/divertplugin/tsrc/ut_cpdivertplugin/ut_cpdivertplugin.cpp
phonesettings/cpphonesettingsplugins/divertplugin/tsrc/ut_cpdivertselectionitem/ut_cpdivertselectionitem.cpp
phonesettings/cpphonesettingsplugins/divertplugin/tsrc/ut_cpdivertselectionitem/ut_cpdivertselectionitem.h
phonesettings/cpphonesettingsplugins/eabi/cptelephonyutilsu.def
phonesettings/cpphonesettingsplugins/telephonyplugin/src/cptelephonyplugin.cpp
phonesettings/cpphonesettingsplugins/telephonyplugin/src/cptelephonypluginview.cpp
phonesettings/cpphonesettingsplugins/telephonyplugin/tsrc/run_auto_tests_qt.bat
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cellulardatasettings.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cmmanager.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpbarringplugingroup.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpnetworkpluginform.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpnetworkplugingroup.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpnetworkpluginview.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpphonenotes.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpplugincommon.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpsettingformentryitemdataimpl.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_hbabstractitemview.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_hbcheckbox.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_hbicon.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_hblistwidgetitem.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_hbwidgetbase.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_psetcallbarringwrapper.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_psetcalldivertingwrapper.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_qtranslator.cpp
phonesettings/cpphonesettingsplugins/tsrc/mocks/ut_mockintegrity.pro
phoneuis/bubblemanager2/bubblecore/bubblecore.pro
phoneuis/bubblemanager2/bubblecore/bubblecore.qrc
phoneuis/bubblemanager2/bubblecore/bwins/bubblecoreu.def
phoneuis/bubblemanager2/bubblecore/eabi/bubblecoreu.def
phoneuis/bubblemanager2/bubblecore/effects/bubble_muted_appear.fxml
phoneuis/bubblemanager2/bubblecore/effects/bubble_muted_disappear.fxml
phoneuis/bubblemanager2/bubblecore/src/bubblecore.pri
phoneuis/bubblemanager2/bubblecore/src/bubbleeffecthandler.cpp
phoneuis/bubblemanager2/bubblecore/src/bubbleeffecthandler.h
phoneuis/bubblemanager2/bubblecore/src/bubbleexpandedhandler.cpp
phoneuis/bubblemanager2/bubblecore/src/bubbleheader.cpp
phoneuis/bubblemanager2/bubblecore/src/bubbleheader.h
phoneuis/bubblemanager2/bubblecore/src/bubbleimagemanager.cpp
phoneuis/bubblemanager2/bubblecore/src/bubbleimagemanager.h
phoneuis/bubblemanager2/bubblecore/src/bubbleimagemanager_p.cpp
phoneuis/bubblemanager2/bubblecore/src/bubbleimagemanager_p.h
phoneuis/bubblemanager2/bubblecore/src/bubbleimagemanager_p_stub.cpp
phoneuis/bubblemanager2/bubblecore/src/bubbleimagewidget.cpp
phoneuis/bubblemanager2/bubblecore/src/bubbleimagewidget.h
phoneuis/bubblemanager2/bubblecore/src/bubblemanager2.cpp
phoneuis/bubblemanager2/bubblecore/src/bubblewidgetmanager.cpp
phoneuis/bubblemanager2/bubblecore/src/bubblewidgetmanager.h
phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_video_call_active.svg
phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_video_call_waiting.svg
phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_video_dialled_call.svg
phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_video_missed_call.svg
phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_video_received_call.svg
phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_voip_call_active.svg
phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_voip_call_waiting.svg
phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_voip_dialled_call.svg
phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_voip_missed_call.svg
phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_voip_received_call.svg
phoneuis/bubblemanager2/bubblestyle/bubblestyle.qrc
phoneuis/bubblemanager2/bubblestyle/layout/bubbleimagewidget.css
phoneuis/bubblemanager2/bubblestyle/layout/bubbleimagewidget.widgetml
phoneuis/bubblemanager2/bubblestyle/src/bubblestyleplugin.cpp
phoneuis/bubblemanager2/inc/bubblemanager2.h
phoneuis/bubblemanager2/inc/bubbleprimitives.h
phoneuis/bubblemanager2/tsrc/bubbletest2/bubbletestview.cpp
phoneuis/bubblemanager2/tsrc/unit/checkcoverage.cmd
phoneuis/bubblemanager2/tsrc/unit/mt_bubblemanager2/mt_bubblemanager2.cpp
phoneuis/bubblemanager2/tsrc/unit/unit.pro
phoneuis/bubblemanager2/tsrc/unit/ut_bubbleeffecthandler/resources/bubble_muted_appear.fxml
phoneuis/bubblemanager2/tsrc/unit/ut_bubbleeffecthandler/resources/bubble_muted_disappear.fxml
phoneuis/bubblemanager2/tsrc/unit/ut_bubbleeffecthandler/ut_bubbleeffecthandler.cpp
phoneuis/bubblemanager2/tsrc/unit/ut_bubbleeffecthandler/ut_bubbleeffecthandler.pro
phoneuis/bubblemanager2/tsrc/unit/ut_bubbleeffecthandler/ut_bubbleeffecthandler.qrc
phoneuis/bubblemanager2/tsrc/unit/ut_bubbleheader/ut_bubbleheader.cpp
phoneuis/bubblemanager2/tsrc/unit/ut_bubbleimagemanager/resources/testpic1.png
phoneuis/bubblemanager2/tsrc/unit/ut_bubbleimagemanager/resources/testpic2.jpg
phoneuis/bubblemanager2/tsrc/unit/ut_bubbleimagemanager/ut_bubbleimagemanager.cpp
phoneuis/bubblemanager2/tsrc/unit/ut_bubbleimagemanager/ut_bubbleimagemanager.pro
phoneuis/bubblemanager2/tsrc/unit/ut_bubbleimagemanager/ut_bubbleimagemanager.qrc
phoneuis/bubblemanager2/tsrc/unit/ut_bubbleimagewidget/ut_bubbleimagewidget.cpp
phoneuis/bubblemanager2/tsrc/unit/ut_bubbleimagewidget/ut_bubbleimagewidget.pro
phoneuis/bubblemanager2/tsrc/unit/ut_bubblestyleplugin/ut_bubblestyleplugin.cpp
phoneuis/ussdeditor/inc/tflogger.h
phoneuis/ussdeditor/inc/ussdcomms.h
phoneuis/ussdeditor/inc/ussdeditorquery.h
phoneuis/ussdeditor/rom/ussdeditor.iby
phoneuis/ussdeditor/rom/ussdeditor.pkg
phoneuis/ussdeditor/rom/ussdeditor_stub.pkg
phoneuis/ussdeditor/rom/ussdeditor_stub.sis
phoneuis/ussdeditor/rom/ussdeditorresources.iby
phoneuis/ussdeditor/src/main.cpp
phoneuis/ussdeditor/src/ussdcomms.cpp
phoneuis/ussdeditor/src/ussdeditorquery.cpp
phoneuis/ussdeditor/ussdeditor.pro
--- a/phone.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phone.pro	Mon May 03 12:31:11 2010 +0300
@@ -24,13 +24,16 @@
 SUBDIRS += phoneengine/phoneservices
 SUBDIRS += phoneengine/parserrecognizer
 SUBDIRS += phoneengine/phonemodel
+SUBDIRS += phoneengine/networkhandlingstarter
 SUBDIRS += phoneuis/bubblemanager2
+SUBDIRS += phoneplugins/phoneindicatorplugin
 SUBDIRS += phoneapp/phoneuiview2
 SUBDIRS += phoneapp/phoneuiqtviewadapter
 SUBDIRS += phoneapp/phonestringloader
 SUBDIRS += phoneapp/phoneui2
 SUBDIRS += phonesettings/cpphonesettingsplugins
-SUBDIRS += phoneplugins/hsdialerwidgetplugin
+#SUBDIRS += phoneplugins/hsdialerwidgetplugin
 SUBDIRS += phoneplugins/infowidgetplugin
+SUBDIRS += phoneuis/ussdeditor
 }
           
\ No newline at end of file
--- a/phone_plat/phone_application_commands_api/inc/phoneappcommands.hrh	Fri Apr 16 14:58:25 2010 +0300
+++ b/phone_plat/phone_application_commands_api/inc/phoneappcommands.hrh	Mon May 03 12:31:11 2010 +0300
@@ -140,6 +140,7 @@
     EPhoneInCallCmdPrivate,
     EPhoneInCallCmdCbaJoin, // NOT IN MENU!
     EPhoneInCallCmdDialer,
+    EPhoneInCallCmdContacts,
 
     // Enable video
     EPhoneInCallCmdEnableVideo,
--- a/phone_plat/telephony_information_api/inc/telinformationpskeys.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phone_plat/telephony_information_api/inc/telinformationpskeys.h	Mon May 03 12:31:11 2010 +0300
@@ -42,6 +42,26 @@
 
 const TUint32 KTelDisplayInfo =  0x00000002; 
 
+/*****************************************************************************
+* Telephony Car Mode API
+* This can be used for setting and requesting
+* Car Mode status.
+*****************************************************************************/
+const TUid KPSUidTelCarMode = {0x102029A8};
+
+/**
+* Indicates the car mode setting
+* This key has two special values, see EPSCarModeSetting.
+* 
+* @type RProperty::EInt
+*/          
+const TUint32 KTelCarMode = 0x00000001;
+enum EPSTelCarModeSetting
+    {
+    EPSCarModeOff = 0,
+    EPSCarModeOn    
+    };
+
 #endif      // TELINFORMATIONPSKEYS_H
 
 // End of file
--- a/phoneapp/phonestringloader/tsrc/ut_phonestringloader/ut_phonestringloader.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phonestringloader/tsrc/ut_phonestringloader/ut_phonestringloader.pro	Mon May 03 12:31:11 2010 +0300
@@ -32,7 +32,7 @@
                    ../../../../inc \
                    ../../../phoneui2/srcdata
 
-    LIBS += -lphoneqtview
+    LIBS += -lphoneuiqtview
     LIBS += -lbafl
 
     TARGET.CAPABILITY = ALL -TCB
--- a/phoneapp/phoneui2/inc/phoneuikeyeventadapter.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneui2/inc/phoneuikeyeventadapter.h	Mon May 03 12:31:11 2010 +0300
@@ -58,14 +58,6 @@
         is emitted from view.
     */
     void keyReleased (QKeyEvent *event);
-    
-    /*!
-        \fn void endKeyLongPress()
-    
-        This method is called when end key is pressed for 0.6 seconds.
-    */
-    void endKeyLongPress();
-
 
 private:
  
--- a/phoneapp/phoneui2/phoneui2.qrc	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneui2/phoneui2.qrc	Mon May 03 12:31:11 2010 +0300
@@ -13,9 +13,9 @@
         <file>themes/icons/hbdefault/scalable/qtg_mono_mic_mute.svg</file>
         <file>themes/icons/hbdefault/scalable/qtg_mono_mic_unmute.svg</file>
         <file>themes/icons/hbdefault/scalable/qtg_mono_dialer.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_mono_loudspeaker.svg</file>
+        <file>themes/icons/hbdefault/scalable/qtg_mono_speaker.svg</file>
         <file>themes/icons/hbdefault/scalable/qtg_mono_contacts.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_mono_mute.svg</file>
+        <file>themes/icons/hbdefault/scalable/qtg_mono_speaker_off.svg</file>
         <file>themes/icons/hbdefault/scalable/qtg_mono_mobile.svg</file>
     </qresource>
 </RCC>
--- a/phoneapp/phoneui2/src/phoneuihousehold_p.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneui2/src/phoneuihousehold_p.cpp	Mon May 03 12:31:11 2010 +0300
@@ -210,6 +210,12 @@
         translator3 = 0;
     }
 	
+    CEikonEnv* env = CEikonEnv::Static();
+    if ( env ) {
+        env->SetSystem(ETrue);
+    }
+    
+	
     PhoneUIQtView *view = new PhoneUIQtView(m_window);
     iViewAdapter = new PhoneUIQtViewAdapter(*view);
     iPhoneUIController = CPhoneUIController::NewL(iViewAdapter);
@@ -224,7 +230,6 @@
     QObject::connect(view, SIGNAL(keyReleased(QKeyEvent *)), iViewAdapter, SLOT(keyReleased (QKeyEvent *)));
     QObject::connect(view, SIGNAL(keyPressed (QKeyEvent *)), iKeyEventAdapter, SLOT(keyPressed (QKeyEvent *)));
     QObject::connect(view, SIGNAL(keyReleased (QKeyEvent *)), iKeyEventAdapter, SLOT(keyReleased (QKeyEvent *)));
-    QObject::connect(view, SIGNAL(endKeyLongPress()), iKeyEventAdapter, SLOT(endKeyLongPress()));
     QObject::connect(view, SIGNAL(command (int)), iCommandAdapter, SLOT(handleCommand (int)),
                      Qt::QueuedConnection); // async to enable deletion of widget during signal handling
     
--- a/phoneapp/phoneui2/src/phoneuikeyeventadapter.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneui2/src/phoneuikeyeventadapter.cpp	Mon May 03 12:31:11 2010 +0300
@@ -17,7 +17,7 @@
 */
 
 #include <exception> // must be before e32base.h so uncaught_exception gets defined
-#include <qkeyevent>
+#include <QKeyEvent>
 #include "phoneuikeyeventadapter.h"
 #include "phoneconstants.h"
 
@@ -47,6 +47,10 @@
     TKeyEvent symbianKeyEvent;
     symbianKeyEvent.iCode = convertKeyCode(event);
     symbianKeyEvent.iRepeats = 0;
+    
+    if (event->isAutoRepeat()) {
+        symbianEventCode = (TEventCode)EEventLongPress;
+    }
     symbianKeyEvent.iScanCode = convertKeyCode(event);
     
     TRAP_IGNORE(mHandler.HandleKeyEventL (symbianKeyEvent, symbianEventCode));  
@@ -77,12 +81,4 @@
     return code;
 }
 
-void PhoneUIKeyEventAdapter::endKeyLongPress()
-{
-    TKeyEvent symbianKeyEvent;
-    symbianKeyEvent.iCode = EKeyNo;
-    symbianKeyEvent.iRepeats = 0;
-    symbianKeyEvent.iScanCode = EKeyNo;
-    
-    TRAP_IGNORE(mHandler.HandleKeyEventL (symbianKeyEvent, (TEventCode)EEventLongPress));      
-}
+
--- a/phoneapp/phoneui2/themes/icons/hbdefault/scalable/qtg_mono_loudspeaker.svg	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="30" version="1.1" viewBox="0 0 30 30" width="30" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<rect fill="none" height="30" width="30"/>
-<path d="M0,0v30h30V0H0z M29,29H1V1h28V29z" fill="#FF0000"/>
-<polygon fill="#FF0000" points="24.344,2.415 27.584,5.655 18.242,15.001 27.585,24.346 24.346,27.585 14.999,18.238 5.655,27.585   2.415,24.346 11.76,15 2.415,5.655 5.655,2.415 15.002,11.763 "/>
-</svg>
--- a/phoneapp/phoneui2/themes/icons/hbdefault/scalable/qtg_mono_mute.svg	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<rect fill="none" height="40" width="40"/>
-<rect height="12" width="7" x="6.483" y="15.48"/>
-<polygon points="26.483,18.679 26.483,7.48 19.393,11.588 "/>
-<polygon points="14.483,14.976 14.483,28.481 26.483,35.481 26.483,26.975 "/>
-<rect height="44.313" transform="matrix(0.7061 -0.7082 0.7082 0.7061 -6.8584 21.7822)" width="1.867" x="21.876" y="-3.004"/>
-</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneui2/themes/icons/hbdefault/scalable/qtg_mono_speaker.svg	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30" viewBox="0 0 30 30" width="30" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<rect fill="none" height="30" width="30"/>
+<rect fill="none" height="30" width="30"/>
+<path d="M10.235,9H3v12h7.297l9.953,5.806V3.199L10.235,9z M9,18.75H5.25v-7.5H9V18.75z M18,22.889l-6-3.5v-8.811l6-3.476V22.889z"/>
+<path d="M22.5,15.337c0,1.847-0.252,3.633-0.714,5.331l1.292,0.94C23.676,19.622,24,17.518,24,15.337 c0-2.429-0.404-4.764-1.141-6.946l-1.27,0.924C22.182,11.218,22.5,13.241,22.5,15.337z"/>
+<path d="M27,15.324c0,2.847-0.486,5.579-1.371,8.125l1.269,0.924c1.036-2.822,1.603-5.869,1.603-9.049 c0-3.426-0.664-6.696-1.857-9.697l-1.254,0.911C26.427,9.269,27,12.229,27,15.324z"/>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneui2/themes/icons/hbdefault/scalable/qtg_mono_speaker_off.svg	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="30" viewBox="0 0 30 30" width="30" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<rect fill="none" height="30" width="30"/>
+<rect fill="none" height="30" width="30"/>
+<rect height="9" width="5.25" x="4.862" y="11.61"/>
+<polygon points="19.862,14.009 19.862,5.61 14.545,8.691 "/>
+<polygon points="10.862,11.232 10.862,21.361 19.862,26.611 19.862,20.231 "/>
+<rect height="33.236" transform="matrix(-0.7061 0.7082 -0.7082 -0.7061 39.3599 12.3905)" width="1.4" x="16.408" y="-2.254"/>
+</svg>
--- a/phoneapp/phoneui2/tsrc/ut_phoneuikeyeventadapter/unit_tests.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneui2/tsrc/ut_phoneuikeyeventadapter/unit_tests.cpp	Mon May 03 12:31:11 2010 +0300
@@ -63,7 +63,6 @@
     void testKeyReleaseEvents();
     void testKeyPressEventsByQtKeys();
     void testLeave();
-    void testEndKeyLongPress();
 
 
 
@@ -201,14 +200,5 @@
     delete keyEvent;
 }
 
-void TestPhoneKeyEventAdapter::testEndKeyLongPress()
-{
-    m_keyadapter->endKeyLongPress();
-    QCOMPARE((int)m_eventCode, EEventLongPress);
-    QCOMPARE(m_scan_code, (int)EKeyNo);
-    QCOMPARE(m_code, (int)EKeyNo);
-    QCOMPARE(m_repeats, 0);
-}
-
 PHONE_QT_TEST_MAIN(TestPhoneKeyEventAdapter)
 #include "unit_tests.moc"
--- a/phoneapp/phoneuicontrol/src/cphonestate.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuicontrol/src/cphonestate.cpp	Mon May 03 12:31:11 2010 +0300
@@ -38,7 +38,7 @@
 #include <settingsinternalcrkeys.h>
 #include <starterclient.h>
 #include <rsssettings.h>
-#include <uikoninternalpskeys.h>
+#include <UikonInternalPSKeys.h>
 #include <telephonydomainpstypes.h>
 #include <telinformationpskeys.h>
 #include <coreapplicationuisdomainpskeys.h>
@@ -1661,6 +1661,10 @@
             OpenSoftRejectMessageEditorL();
             break;
             
+        case EPhoneInCallCmdContacts:
+            iViewCommandHandle->ExecuteCommand( EPhoneViewOpenContacts );
+            break;
+            
         default:
 
             /*if ( IsOnScreenDialerSupported() )
--- a/phoneapp/phoneuicontrol/src/cphoneuicontroller.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuicontrol/src/cphoneuicontroller.cpp	Mon May 03 12:31:11 2010 +0300
@@ -216,6 +216,8 @@
         iStateMachine->State()->HandleKeyMessageL( 
                         MPhoneKeyEvents::EPhoneKeyShortPress, 
                         TKeyCode( aKeyEvent.iCode ) );
+        
+        iStateMachine->State()->HandleDtmfKeyToneL( aKeyEvent, aEventCode );
         }
     else if ( aEventCode == EEventLongPress )
         {
@@ -223,8 +225,12 @@
                         MPhoneKeyEvents::EPhoneKeyLongPress, 
                         TKeyCode( aKeyEvent.iCode ) );    
         }
+    else 
+        {
+        iStateMachine->State()->HandleDtmfKeyToneL( aKeyEvent, aEventCode );
+        }
     
-    iStateMachine->State()->HandleDtmfKeyToneL( aKeyEvent, aEventCode );
+    
         
     return EKeyWasNotConsumed;
     }
--- a/phoneapp/phoneuiqtviewadapter/bwins/phoneuiqtviewadapteru.def	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/bwins/phoneuiqtviewadapteru.def	Mon May 03 12:31:11 2010 +0300
@@ -89,4 +89,8 @@
 	?convertDuration@PhoneUIQtViewAdapter@@AAE?AVQString@@H@Z @ 88 NONAME ; class QString PhoneUIQtViewAdapter::convertDuration(int)
 	?setBubbleSelectionFlag@PhoneUIQtViewAdapter@@AAEXXZ @ 89 NONAME ; void PhoneUIQtViewAdapter::setBubbleSelectionFlag(void)
 	?handleCipheringInfoChange@PhoneUIQtViewAdapter@@AAEXHPAVTPhoneCommandParam@@@Z @ 90 NONAME ; void PhoneUIQtViewAdapter::handleCipheringInfoChange(int, class TPhoneCommandParam *)
+	?HandlePropertyChangedL@PhoneUIQtViewAdapter@@UAEXABVTUid@@IH@Z @ 91 NONAME ; void PhoneUIQtViewAdapter::HandlePropertyChangedL(class TUid const &, unsigned int, int)
+	?setHidden@PhoneUIQtViewAdapter@@AAEX_N@Z @ 92 NONAME ; void PhoneUIQtViewAdapter::setHidden(bool)
+	?SetHiddenL@PhoneUIQtViewAdapter@@AAEX_N@Z @ 93 NONAME ; void PhoneUIQtViewAdapter::SetHiddenL(bool)
+	?openContacts@PhoneUIQtViewAdapter@@AAEXXZ @ 94 NONAME ; void PhoneUIQtViewAdapter::openContacts(void)
 
--- a/phoneapp/phoneuiqtviewadapter/eabi/phoneuiqtviewadapteru.def	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/eabi/phoneuiqtviewadapteru.def	Mon May 03 12:31:11 2010 +0300
@@ -101,4 +101,9 @@
 	_ZN20PhoneUIQtViewAdapter15convertDurationEi @ 100 NONAME
 	_ZN20PhoneUIQtViewAdapter22setBubbleSelectionFlagEv @ 101 NONAME
 	_ZN20PhoneUIQtViewAdapter25handleCipheringInfoChangeEiP18TPhoneCommandParam @ 102 NONAME
+	_ZN20PhoneUIQtViewAdapter22HandlePropertyChangedLERK4TUidji @ 103 NONAME
+	_ZThn12_N20PhoneUIQtViewAdapter22HandlePropertyChangedLERK4TUidji @ 104 NONAME
+	_ZN20PhoneUIQtViewAdapter10SetHiddenLEb @ 105 NONAME
+	_ZN20PhoneUIQtViewAdapter9setHiddenEb @ 106 NONAME
+	_ZN20PhoneUIQtViewAdapter12openContactsEv @ 107 NONAME
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuiqtviewadapter/inc/phoneindicatorcontroller.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,46 @@
+/*!
+* 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:  Handles phone indicators.
+*/
+
+#ifndef PHONEINDICATORCONTROLLER_H_
+#define PHONEINDICATORCONTROLLER_H_
+
+
+#include <QObject>
+#include <xqsettingsmanager.h>
+#include <hbindicator.h>
+
+// FORWARD DECLARATION
+class LogsModel;
+class LogsFilter;
+class PhoneIndicatorController : public QObject
+    {
+    Q_OBJECT
+public:
+    PhoneIndicatorController(QObject *parent = 0);
+    virtual ~PhoneIndicatorController();
+    
+private slots:
+    void updateMissedCallIndicator(const XQSettingsKey &key, const QVariant &value);
+    void setMissedallIndicatorData();
+    
+private:
+    HbIndicator m_indicator;
+    LogsModel  *m_logsModel;
+    LogsFilter *m_missedCallsFilter;
+    XQSettingsManager * m_setManager;
+    };
+
+#endif /* PHONEINDICATORCONTROLLER_H_ */
--- a/phoneapp/phoneuiqtviewadapter/inc/phoneuiqtviewadapter.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/inc/phoneuiqtviewadapter.h	Mon May 03 12:31:11 2010 +0300
@@ -26,7 +26,9 @@
 
 #include <QObject>
 #include <QMap>
+#include <apgwgnam.h>
 #include "mphoneviewcommandhandle.h"
+#include "mphonepubsubobserver.h"
 #include "phoneaction.h"
 
 class PhoneUIQtViewIF;
@@ -39,10 +41,12 @@
 class PhoneUiCommandController;
 class TelephonyService;
 class QKeyEvent;
+class PhoneIndicatorController;
 
 class PHONEUIQTVIEWADAPTER_EXPORT PhoneUIQtViewAdapter : 
     public QObject, 
-    public MPhoneViewCommandHandle
+    public MPhoneViewCommandHandle,
+    public MPhonePubSubObserver
 {
     Q_OBJECT
 
@@ -145,6 +149,20 @@
     */
     PhoneNoteController* noteController() const;
     
+public: // from MPhonePubSubObserver
+
+        /**
+        * This function is called when there is property value change.
+        * @param aCategory Category of the property
+        * @param aKey Property key that is changed
+        * @param aValue New property value
+        */
+        void HandlePropertyChangedL( 
+            const TUid& aCategory,
+            const TUint aKey,
+            const TInt aValue);
+    
+
 private slots:
 
     /*!
@@ -488,6 +506,24 @@
     */
     void setBubbleSelectionFlag();
     
+    /*!
+        /fn void setHidden()
+        This method sets hidden status.
+    */    
+    void setHidden(bool hidden);
+    
+    /*!
+        /fn void SetHiddenL()
+        This method sets hidden status.
+    */
+    void SetHiddenL(bool hidden);
+    
+    /*!
+        /fn void openContacts()
+        This method opens contacts application.
+    */    
+    void openContacts();
+    
 private:
 
     PhoneUIQtViewIF &m_view;
@@ -499,8 +535,10 @@
     TelephonyService *m_telephonyService;
     PhoneUiCommandController *m_uiCommandController;
     PhoneMessageController *m_messageController;
+    PhoneIndicatorController *m_indicatorController;
     bool m_dialpadAboutToClose;
     bool m_homeScreenToForeground;
+    bool m_carModeEnabled;
 };
 
 #endif // PHONEUIQTVIEWADAPTER_H
--- a/phoneapp/phoneuiqtviewadapter/inc/phoneviewcommanddefinitions.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/inc/phoneviewcommanddefinitions.h	Mon May 03 12:31:11 2010 +0300
@@ -234,6 +234,7 @@
     EPhoneAppShutDown,
     EPhoneViewBackButtonActive,
     EPhoneViewHsToForegroundAfterCall,
+    EPhoneViewOpenContacts,
     EPhoneAmountOfCommands, // Don't remove this, this should always be the last in list.
 };
 
--- a/phoneapp/phoneuiqtviewadapter/phoneuiqtviewadapter.pri	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/phoneuiqtviewadapter.pri	Mon May 03 12:31:11 2010 +0300
@@ -25,6 +25,8 @@
 HEADERS += ./inc/phoneuicommandcontroller.h
 HEADERS += ./inc/phonecommandextensionwrapper.h
 HEADERS += ./inc/phonemessagecontroller.h
+HEADERS += ./inc/phoneindicatorcontroller.h
+
 
 SOURCES += ./src/phoneuiqtviewadapter.cpp
 SOURCES += ./src/phoneuiqtbuttonscontroller.cpp
@@ -35,3 +37,4 @@
 SOURCES += ./src/phoneuicommandcontroller.cpp
 SOURCES += ./src/phonecommandextensionwrapper.cpp
 SOURCES += ./src/phonemessagecontroller.cpp
+SOURCES += ./src/phoneindicatorcontroller.cpp
--- a/phoneapp/phoneuiqtviewadapter/phoneuiqtviewadapter.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/phoneuiqtviewadapter.pro	Mon May 03 12:31:11 2010 +0300
@@ -35,18 +35,19 @@
                    ../phonemediatorcenter/inc
 
     LIBS += -lphoneuiutils \
-            -lbubblemanager2 \
-            -lphoneringingtoneplayer \
-            -lphoneuiqtview \
-            -lphonemediatorcenter \
-            -lxqservice \
-            -lxqserviceutil \
-            -lserviceprovidersettings \
-            -lxqplugins
-
-    defFiles = \
-        "$${LITERAL_HASH}ifdef WINS" \
-            "DEFFILE bwins/phoneuiqtviewadapter.def" \
+        -lbubblemanager2 \
+        -lphoneringingtoneplayer \
+        -lphoneuiqtview \
+        -lphonemediatorcenter \
+        -lxqservice \
+        -lxqserviceutil \
+        -lserviceprovidersettings \
+        -lxqsettingsmanager \
+        -llogsengine \
+        -lxqplugins \
+        -lakncapserverclient
+    defFiles = "$${LITERAL_HASH}ifdef WINS" \
+        "DEFFILE bwins/phoneuiqtviewadapter.def" \
         "$${LITERAL_HASH}else" \
             "DEFFILE eabi/phoneuiqtviewadapter.def" \
         "$${LITERAL_HASH}endif"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuiqtviewadapter/src/phoneindicatorcontroller.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,153 @@
+/*!
+* 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:  Handles phone indicators.
+*
+*/
+
+#include "phoneindicatorcontroller.h"
+#include "phoneindicators.h"
+
+#include <QList>
+#include <QPair>
+
+#ifdef Q_OS_SYMBIAN
+#include <logsmodel.h>
+#include <logsfilter.h>
+#include <logsdomaincrkeys.h>
+#include <hbicon.h>
+#endif
+
+PhoneIndicatorController::PhoneIndicatorController(QObject *parent):
+    QObject(parent), m_missedCallsFilter(0), m_logsModel(0)
+{
+#ifdef Q_OS_SYMBIAN
+    m_setManager = new XQSettingsManager(this);
+ 
+    XQSettingsKey settingsKey( XQSettingsKey::TargetCentralRepository, 
+            KCRUidLogs.iUid, KLogsNewMissedCalls );
+    
+    bool ok = connect( m_setManager, 
+            SIGNAL( valueChanged(const XQSettingsKey & ,const QVariant &)),
+                this, SLOT(updateMissedCallIndicator(XQSettingsKey, 
+                        QVariant)));
+    ASSERT( ok );
+    ok = false;
+    ok = m_setManager->startMonitoring( settingsKey );
+    ASSERT(ok);
+    
+    qRegisterMetaType<PhoneIndicatorInfo>("PhoneIndicatorInfo");
+
+#endif
+}
+
+PhoneIndicatorController::~PhoneIndicatorController()
+{   
+#ifdef Q_OS_SYMBIAN
+    XQPublishAndSubscribeSettingsKey missedCallCountKey(
+                    (qint32)KCRUidLogs.iUid, (quint32)KLogsNewMissedCalls );
+    m_setManager->stopMonitoring(missedCallCountKey);
+    delete m_setManager;
+    delete m_missedCallsFilter;
+    delete m_logsModel;
+#endif
+}
+
+void PhoneIndicatorController::updateMissedCallIndicator(
+        const XQSettingsKey &key, const QVariant &value)
+{ 
+#ifdef Q_OS_SYMBIAN
+    if ( key.key() == (quint32)KLogsNewMissedCalls ){
+        if ( value.toInt() == 0 ){
+            QString indicatorType(indicatorName(PhoneMissedCallIndicator));
+            m_indicator.deactivate(indicatorType);
+            delete m_missedCallsFilter;
+            m_missedCallsFilter = NULL;
+            delete m_logsModel;
+            m_logsModel = NULL;
+        } else {
+            m_logsModel = new LogsModel(LogsModel::LogsFullModel);
+            m_missedCallsFilter = new LogsFilter(LogsFilter::Missed);
+            connect( m_missedCallsFilter, 
+                    SIGNAL(rowsInserted(const QModelIndex &, int, int )),
+                    this, SLOT(setMissedallIndicatorData()));
+            m_missedCallsFilter->setMaxSize(value.toInt() + 1);
+            m_missedCallsFilter->setSourceModel(m_logsModel);
+        }
+    }
+#endif  
+}
+
+void PhoneIndicatorController::setMissedallIndicatorData()
+{
+#ifdef Q_OS_SYMBIAN
+
+    XQSettingsKey settingsKey( XQSettingsKey::TargetCentralRepository, 
+            KCRUidLogs.iUid, KLogsNewMissedCalls );
+    QString indicatorType(indicatorName(PhoneMissedCallIndicator));
+    
+    int missedCallCount = m_setManager->readItemValue( settingsKey,
+            XQSettingsManager::TypeInt ).toInt();
+    
+    if ( missedCallCount > 0 ) {
+        QVariantMap parameters;
+        QString lastMissedCallFrom;
+        int repeatedMissedCalls(0);
+        
+        if ( m_missedCallsFilter->rowCount() > 0 ){
+                lastMissedCallFrom = m_missedCallsFilter->data(
+                        m_missedCallsFilter->index(0,0),
+                        Qt::DisplayRole).toStringList().takeFirst();
+                repeatedMissedCalls = 1;
+            }
+        for( int i = 1; i < missedCallCount && i 
+                < m_missedCallsFilter->rowCount(); i++ ){
+            QStringList displayData = m_missedCallsFilter->data(
+                    m_missedCallsFilter->index(i,0),
+                    Qt::DisplayRole).toStringList();
+            if ( lastMissedCallFrom == displayData.at(0) ){
+                repeatedMissedCalls++;
+            } else {
+                i = missedCallCount; // Break
+            }
+        }
+        // First row
+        parameters.insert( 
+                QVariant( HbIndicatorInterface::PrimaryTextRole ).toString(),
+                ( hbTrId("txt_phone_dblist_ln_missed_calls", 
+                        missedCallCount)));
+        
+        // Second row
+        if ( missedCallCount >= repeatedMissedCalls )
+            {
+            parameters.insert( 
+                    QVariant( HbIndicatorInterface::SecondaryTextRole ).toString(), 
+                    lastMissedCallFrom );
+            }
+        
+        // icon
+        //QList<QVariant> icons = m_missedCallsFilter->data( 
+        //        m_missedCallsFilter->index(0,0), 
+        //        Qt::DecorationRole).value<QList<QVariant> >();
+        //QString iconName = icons.first().value<HbIcon>().iconName();
+        QString iconName = "qtg_mono_missed_call_unseen";
+        parameters.insert(
+                QVariant( HbIndicatorInterface::DecorationNameRole ).toString(),
+                iconName );
+        
+        m_indicator.activate(indicatorType, parameters);
+    } else {
+        m_indicator.deactivate( indicatorType );
+    }
+#endif
+}
--- a/phoneapp/phoneuiqtviewadapter/src/phonenotecontroller.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/src/phonenotecontroller.cpp	Mon May 03 12:31:11 2010 +0300
@@ -73,16 +73,29 @@
             HbDeviceMessageBox messageBox(noteString, type);
             messageBox.setTimeout(HbDialog::StandardTimeout);
             messageBox.exec();
-        } else {    
-            HbDeviceMessageBox *messageBox = new HbDeviceMessageBox(
-                    noteString, type);
-            messageBox->setTimeout(HbDialog::StandardTimeout);
-            m_messageBoxList.append(messageBox);
+        } else {
+            bool showNote(true);
+            for (int i = 0;i<m_messageBoxList.count(); ++i) {
+                // Do not show same note/text several times, e.g when user hits
+                // the end button several times we should show only one "not allowed"
+                // note.
+                if (noteString == m_messageBoxList.at(i)->text()) {
+                    showNote = false;
+                    break;
+                }
+            }
             
-            if (1 == m_messageBoxList.size()) {
-                QObject::connect(messageBox, SIGNAL(aboutToClose()), 
-                                 this, SLOT(destroyDialog()));            
-                messageBox->show();
+            if (showNote) {
+                HbDeviceMessageBox *messageBox = new HbDeviceMessageBox(
+                        noteString, type);
+                messageBox->setTimeout(HbDialog::StandardTimeout);
+                m_messageBoxList.append(messageBox);
+                
+                if (1 == m_messageBoxList.size()) {
+                    QObject::connect(messageBox, SIGNAL(aboutToClose()), 
+                                     this, SLOT(destroyDialog()));            
+                    messageBox->show();
+                }
             }
         }
     }
--- a/phoneapp/phoneuiqtviewadapter/src/phoneresourceadapter.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/src/phoneresourceadapter.cpp	Mon May 03 12:31:11 2010 +0300
@@ -74,7 +74,7 @@
         translatedActions [PhoneAction::ToolbarButton1] = leftButton;       
         
         PhoneAction *rightButton = new PhoneAction;
-        rightButton->setIcon (HbIcon("qtg_mono_mute"));
+        rightButton->setIcon (HbIcon("qtg_mono_speaker_off"));
         rightButton->setCommand (EPhoneCallComingCmdSilent);
         translatedActions [PhoneAction::ToolbarButton2] = rightButton;            
         }
@@ -102,7 +102,7 @@
         translatedActions [PhoneAction::ToolbarButton1] = leftButton;    
         
         PhoneAction *rightButton = new PhoneAction;
-        rightButton->setIcon (HbIcon("qtg_mono_mute"));
+        rightButton->setIcon (HbIcon("qtg_mono_speaker_off"));
         rightButton->setDisabled(true);
         translatedActions [PhoneAction::ToolbarButton2] = rightButton;        
         }
@@ -141,7 +141,7 @@
         PhoneAction *centerButton2 = new PhoneAction;
         if (!m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Ihf))
             {
-            centerButton2->setIcon (HbIcon("qtg_mono_loudspeaker"));
+            centerButton2->setIcon (HbIcon("qtg_mono_speaker"));
             centerButton2->setCommand (EPhoneInCallCmdActivateIhf);
             }
         else
@@ -155,7 +155,8 @@
         rightButton->setIcon(HbIcon("qtg_mono_contacts"));
         rightButton->setDisabled( 
                 (symbianResourceId==
-                 R_PHONEUI_CALLHANDLING_CALLSETUP_EMPTY_DTMFDIALER_CBA));
+                 R_PHONEUI_CALLHANDLING_CALLSETUP_EMPTY_DTMFDIALER_CBA));        
+        rightButton->setCommand(EPhoneInCallCmdContacts);
         
         translatedActions[PhoneAction::ToolbarButton4] = rightButton;
         }
@@ -171,7 +172,7 @@
         PhoneAction *rightButton = new PhoneAction;
         if (!m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Ihf))
             {
-            rightButton->setIcon (HbIcon("qtg_mono_loudspeaker"));
+            rightButton->setIcon (HbIcon("qtg_mono_speaker"));
             rightButton->setCommand (EPhoneInCallCmdActivateIhf);
             }
         else
@@ -198,7 +199,7 @@
         PhoneAction *centerButton2 = new PhoneAction;
         if (!m_buttonsCtrl->getButtonFlags(PhoneUIQtButtonsController::Ihf))
             {
-            centerButton2->setIcon (HbIcon("qtg_mono_loudspeaker"));
+            centerButton2->setIcon (HbIcon("qtg_mono_speaker"));
             centerButton2->setCommand (EPhoneInCallCmdActivateIhf);
             }
         else
@@ -210,6 +211,7 @@
         
         PhoneAction *rightButton = new PhoneAction;
         rightButton->setIcon(HbIcon("qtg_mono_contacts"));
+        rightButton->setCommand(EPhoneInCallCmdContacts);
         translatedActions[PhoneAction::ToolbarButton4] = rightButton;   
         }
         break;
@@ -241,6 +243,7 @@
         
         PhoneAction *rightButton = new PhoneAction;
         rightButton->setIcon(HbIcon("qtg_mono_contacts"));
+        rightButton->setCommand(EPhoneInCallCmdContacts);
         translatedActions[PhoneAction::ToolbarButton4] = rightButton;
         }
         break;
@@ -380,7 +383,7 @@
         VA_END (list);
         }
         break;
-
+        
     default:
         break;
     }
@@ -395,13 +398,13 @@
     switch (symbianResourceId) {
         case R_PHONE_ERROR_CALL_NOT_ALLOWED:
             {
-            ret = hbTrId("Call not allowed");      
+            ret = hbTrId("txt_phone_dpopinfo_not_allowed");      
             }
             break;
             
         case R_ERROR_NOTE_NOT_ALLOWED:
             {
-            ret =  hbTrId("Not allowed");  
+            ret =  hbTrId("txt_phone_dpopinfo_not_allowed");  
             }
             break;
             
@@ -457,6 +460,41 @@
             ret = hbTrId("txt_phone_info_no_network_support_for_video_call");
             }
             break;
+        case R_PHONE_ERROR_EMERGENCY_CALLS_ONLY:
+            {
+            ret = hbTrId("txt_phone_info_emergency_calls_only");         
+            }
+            break;
+        case R_NOTETEXT_NUMBER_NOT_IN_USE:
+            {
+            ret = hbTrId("txt_phone_info_number_not_in_use");         
+            }
+            break;
+        case R_NOTETEXT_NETWORK_BUSY:
+            {
+            ret = hbTrId("txt_phone_info_network_busy");         
+            }
+            break;
+        case R_NOTETEXT_ERROR_IN_CONNECTION:
+            {
+            ret = hbTrId("txt_phone_info_error_in_connection");         
+            }
+            break;
+        case R_PHONEUI_ERROR_EMERGENCY_ATTEMPT_FAILED:
+            {
+            ret = hbTrId("txt_phone_info_emergency_call_failed");         
+            }
+            break;
+        case R_PHONE_SS_NOTIFICATION_INCAL_TRANSFERRED_TEXT:
+            {
+            ret = hbTrId("txt_phone_info_transferred");         
+            }
+            break;
+        case R_PHONE_ERROR_NO_SERVICE:
+            {
+            ret = hbTrId("txt_phone_dpopinfo_no_network_coverage");         
+            }
+            break;
         default:
             break;
     }
--- a/phoneapp/phoneuiqtviewadapter/src/phoneuicommandcontroller.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/src/phoneuicommandcontroller.cpp	Mon May 03 12:31:11 2010 +0300
@@ -144,7 +144,8 @@
     break;
     case 2: {
         if (!callStates.values().contains(EPEStateRinging) &&
-            !callStates.values().contains(EPEStateDisconnecting)) {
+            !callStates.values().contains(EPEStateDisconnecting) &&
+            !callStates.values().contains(EPEStateDialing)) {
             commands.append(PhoneInCallCmdEndAllCalls);
         }
         if (callStates.values().contains(EPEStateConnected) &&
--- a/phoneapp/phoneuiqtviewadapter/src/phoneuiqtviewadapter.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/src/phoneuiqtviewadapter.cpp	Mon May 03 12:31:11 2010 +0300
@@ -39,6 +39,7 @@
 #include "telephonyservice.h"
 #include "phoneuicommandcontroller.h"
 #include "phonemessagecontroller.h"
+#include "phoneindicatorcontroller.h"
 #include "qtphonelog.h"
 #include <UikonInternalPSKeys.h>
 #include <bubblemanagerif.h>
@@ -55,13 +56,18 @@
 #include <w32std.h>
 #include <apgtask.h>
 #include <hbstringutil.h>
+#include <telinformationpskeys.h>
+#include <AknSgcc.h>
+#include <AknCapServerClient.h>
+
 
 //CONSTANTS
 static const int PHONE_CALL_NOT_FOUND = -1;
 
 PhoneUIQtViewAdapter::PhoneUIQtViewAdapter (PhoneUIQtViewIF &view, QObject *parent) :
     QObject (parent), m_view (view), m_idleUid(-1),
-    m_dialpadAboutToClose(false), m_homeScreenToForeground(false)
+    m_dialpadAboutToClose(false), m_homeScreenToForeground(false),
+    m_carModeEnabled(false)
 {
     m_bubbleWrapper = new PhoneBubbleWrapper(m_view.bubbleManager (), this);
     m_noteController = new PhoneNoteController(this);
@@ -78,6 +84,21 @@
     setToolbarButtons(&intParam);
 
     m_telephonyService = new TelephonyService (this, this);
+	m_indicatorController = new PhoneIndicatorController(this);
+
+    // Define car mode pub sub key
+    int err = RProperty::Define(
+        KPSUidTelCarMode,
+        KTelCarMode,
+        RProperty::EInt,
+        KPhoneReadPolicy,
+        KPhoneWritePolicy);
+    
+    // Start listening to car mode changes
+    if(err == KErrNone) {
+        CPhonePubSubProxy::Instance()->NotifyChangeL(KPSUidTelCarMode,
+            KTelCarMode, this);
+    }
 }
 
 PhoneUIQtViewAdapter::~PhoneUIQtViewAdapter ()
@@ -114,14 +135,6 @@
         m_ringingtonecontroller->MuteRingingTone();
         break;
 
-    case EPhoneViewBeginUpdate:
-        m_bubbleWrapper->bubbleManager ().startChanges ();
-        break;
-
-    case EPhoneViewEndUpdate:
-        m_bubbleWrapper->bubbleManager ().endChanges ();
-        break;
-
     case EPhoneViewHideNaviPaneAudioVolume:
         m_view.removeVolumeSlider ();
         break;
@@ -176,7 +189,9 @@
     case EPhoneViewRemoveGlobalWaitNote:
         m_noteController->removeGlobalWaitNote();
         break;
-
+    case EPhoneViewUpdateFSW:
+        setHidden(true);
+        break;
     default:
         break;
     }
@@ -309,7 +324,11 @@
         TPhoneCmdParamInteger *time = static_cast<TPhoneCmdParamInteger *>(aCommandParam);
         QString duration = convertDuration(time->Integer());
         PHONE_DEBUG2("call duration:", duration);
-        m_bubbleWrapper->bubbleManager ().updateCallTime (m_bubbleWrapper->bubbleId (aCallId), duration);
+        int bubbleId = m_bubbleWrapper->bubbleId(aCallId);
+        
+        if (-1 != bubbleId) {
+            m_bubbleWrapper->bubbleManager().updateCallTime(bubbleId, duration);
+        }
         break;
     }
 
@@ -397,6 +416,15 @@
                 m_bubbleWrapper->conferenceCallList().size());
         m_bubbleWrapper->bubbleManager ().endChanges ();
         break;
+    case EPhoneViewBeginUpdate:
+        m_bubbleWrapper->bubbleManager ().startChanges ();
+        break;
+    case EPhoneViewEndUpdate:
+        m_bubbleWrapper->bubbleManager ().endChanges ();
+        break;
+    case EPhoneViewOpenContacts:
+        openContacts();
+        break;
     default:
         break;
     }
@@ -516,6 +544,10 @@
         m_bubbleWrapper->bubbleManager().setCallObjectFromTheme(bubble);
     }
     m_bubbleWrapper->bubbleManager ().endChanges ();
+    
+    if (1 == m_bubbleWrapper->bubbles().keys().count()) {
+        setHidden(false);
+    }
 }
 
 void PhoneUIQtViewAdapter::createEmergencyCallHeader(
@@ -599,11 +631,15 @@
 {
     TPhoneCmdParamCallHeaderData *param =
         static_cast<TPhoneCmdParamCallHeaderData*>(commandParam);
-    m_bubbleWrapper->bubbleManager().startChanges();
-    m_bubbleWrapper->setCiphering(m_bubbleWrapper->bubbleId(callId),
-                                  param->CipheringIndicatorAllowed(),
-                                  param->Ciphering());
-    m_bubbleWrapper->bubbleManager().endChanges();
+
+    int bubble = m_bubbleWrapper->bubbleId(callId);        
+    if ( -1 != bubble ) {        
+        m_bubbleWrapper->bubbleManager().startChanges();
+        m_bubbleWrapper->setCiphering(m_bubbleWrapper->bubbleId(callId),
+                                      param->CipheringIndicatorAllowed(),
+                                      param->Ciphering());
+        m_bubbleWrapper->bubbleManager().endChanges();
+    }
 }
 
 TPhoneViewResponseId PhoneUIQtViewAdapter::callIdByState (TPhoneCommandParam *commandParam)
@@ -947,7 +983,9 @@
 
 void PhoneUIQtViewAdapter::bringToForeground()
 {
-    m_view.bringToForeground();
+    if(!m_carModeEnabled) {
+        m_view.bringToForeground();
+    }
 }
 
 void PhoneUIQtViewAdapter::showGlobalNote(
@@ -1078,3 +1116,51 @@
     m_bubbleWrapper->bubbleManager().setBubbleSelectionDisabled(selectionFlag);
 }
 
+void PhoneUIQtViewAdapter::HandlePropertyChangedL(const TUid& aCategory, 
+    const TUint aKey, const TInt aValue)
+{
+    if((aCategory == KPSUidTelCarMode) && (aKey == KTelCarMode)) {
+        if(aValue == EPSCarModeOff) {
+            m_carModeEnabled = false;
+        } else if(aValue == EPSCarModeOn) {
+            m_carModeEnabled = true;
+        } else {
+            Q_ASSERT(false);
+        }
+    }
+}
+
+void PhoneUIQtViewAdapter::setHidden(bool hidden)
+{
+    TRAP_IGNORE(SetHiddenL(hidden));
+}
+
+void PhoneUIQtViewAdapter::SetHiddenL(bool hidden)
+{
+    CEikonEnv* env = CEikonEnv::Static();
+    
+    if (env) {
+        CApaWindowGroupName* windowGroupName =
+            CApaWindowGroupName::NewLC(
+                    env->WsSession(),
+                    env->RootWin().Identifier() );
+        
+        windowGroupName->SetHidden( hidden );
+        User::LeaveIfError(
+                windowGroupName->SetWindowGroupName(
+                        env->RootWin() ) );
+        
+        CleanupStack::PopAndDestroy( windowGroupName );
+
+        CAknSgcClient::AknSrv()->UpdateTaskList();
+    }
+}
+
+void PhoneUIQtViewAdapter::openContacts()
+{
+    XQServiceRequest snd("com.nokia.services.phonebookappservices.Launch","launch()", false);
+    int retValue;
+    snd.send(retValue);
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuiqtviewadapter/tsrc/u_carmodetester/main.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,82 @@
+/*
+* 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: 
+*
+*/
+#include <QtGui>
+#include <hbapplication.h>
+#include <hbmainwindow.h>
+#include <hbview.h>
+#include <hbpushbutton.h>
+#include <hblabel.h>
+#include <telinformationpskeys.h>
+#include "cphonepubsubproxy.h"
+
+class CarModeTester : public HbWidget
+{
+    Q_OBJECT
+
+public:
+    CarModeTester();
+
+private slots:
+    void setCarModeOn();
+    void setCarModeOff();
+};
+
+int main(int argc, char *argv[])
+{
+    // Initialization
+    HbApplication app(argc, argv);
+
+    // Main window widget. 
+    // Includes decorators such as signal strength and battery life indicator.
+    HbMainWindow mainWindow;
+
+    CarModeTester* cmt = new CarModeTester;
+    mainWindow.addView(cmt);
+
+    // Show widget
+    mainWindow.show();
+
+    // Enter event loop
+    return app.exec();
+}
+
+CarModeTester::CarModeTester() {
+    HbPushButton* button = new HbPushButton("Set Car Mode ON", this);
+    button->setMaximumHeight(50);
+    connect(button,SIGNAL(clicked()),SLOT(setCarModeOn()));
+
+    HbPushButton* button2 = new HbPushButton("Set Car Mode OFF", this);
+    button2->setMaximumHeight(50);
+    connect(button2,SIGNAL(clicked()),SLOT(setCarModeOff()));
+
+    QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical);
+    layout->addItem(button);
+    layout->addItem(button2);
+    setLayout(layout);
+}
+
+void CarModeTester::setCarModeOn()
+{
+    CPhonePubSubProxy::Instance()->ChangePropertyValue(KPSUidTelCarMode, KTelCarMode, EPSCarModeOn);
+}
+
+void CarModeTester::setCarModeOff()
+{
+    CPhonePubSubProxy::Instance()->ChangePropertyValue(KPSUidTelCarMode, KTelCarMode, EPSCarModeOff);
+}
+
+#include "main.moc"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuiqtviewadapter/tsrc/u_carmodetester/u_carmodetester.pro	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,49 @@
+#
+# 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 building unit test component
+#
+#
+
+TEMPLATE = app
+TARGET = 
+TARGET.UID3 = 0xEFF8FEA8
+DEPENDPATH += .
+INCLUDEPATH += .
+CONFIG += hb
+CONFIG += qtestlib
+
+symbian {
+
+    INCLUDEPATH += \epoc32\include\platform\mw \
+                   \epoc32\include\platform \
+                   \epoc32\include\platform\app \
+	                 \epoc32\include\mw \
+                   \sf\app\phone\inc \
+                   ../../../phoneuiutils/inc/ \
+                   ../../../phonemediatorcenter/inc/ \
+                   ../../../phoneuiview2/inc \
+                   ../../../../inc \
+                   ../../../phoneringingtoneplayer/inc \
+                   ../../../phoneui2/srcdata
+
+
+    LIBS += -lphoneuiutils
+
+    TARGET.CAPABILITY = ALL -TCB
+    DEFINES += FT_SYMBIAN_INTEGRATION
+}
+
+# Input
+SOURCES += main.cpp
+
--- a/phoneapp/phoneuiqtviewadapter/tsrc/ut_phonecommandextensionwrapper/menuextension_stub.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/tsrc/ut_phonecommandextensionwrapper/menuextension_stub.h	Mon May 03 12:31:11 2010 +0300
@@ -3,7 +3,7 @@
 *  Name        : 
 *  Part of     : 
 *  Description : 
-*  Version     : %version:  1 % 
+*  Version     : %version:  2 % 
 *
 *  Copyright 2008 Nokia.  All rights reserved.
 *  This material, including documentation and any related computer
--- a/phoneapp/phoneuiqtviewadapter/tsrc/ut_phoneresourceadapter/unit_tests.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/tsrc/ut_phoneresourceadapter/unit_tests.cpp	Mon May 03 12:31:11 2010 +0300
@@ -112,7 +112,7 @@
     action = map [PhoneAction::ToolbarButton1];
     QCOMPARE (action->icon (), HbIcon("qtg_mono_send"));    
     action = map [PhoneAction::ToolbarButton2];
-    QCOMPARE (action->icon (), HbIcon("qtg_mono_mute"));
+    QCOMPARE (action->icon (), HbIcon("qtg_mono_speaker_off"));
     QCOMPARE (action->command (), (int)EPhoneCallComingCmdSilent);    
     
     map = m_resourceAdapter->convert (R_PHONEUI_CALLHANDLING_INCOMINGCALL_REJECT_CBA);
@@ -129,7 +129,7 @@
     action = map [PhoneAction::ToolbarButton1];
     QCOMPARE (action->icon (), HbIcon("qtg_mono_send"));    
     action = map [PhoneAction::ToolbarButton2];
-    QCOMPARE (action->icon (), HbIcon("qtg_mono_mute"));
+    QCOMPARE (action->icon (), HbIcon("qtg_mono_speaker_off"));
     //Command is disabled
     //QCOMPARE (action->command (), (int)EPhoneCallComingCmdReject); 
 
@@ -214,7 +214,7 @@
     action = map [PhoneAction::ToolbarButton1];
     QCOMPARE (action->icon (), HbIcon("qtg_mono_dialer"));
     action = map [PhoneAction::ToolbarButton2];
-    QCOMPARE (action->icon (), HbIcon("qtg_mono_loudspeaker"));
+    QCOMPARE (action->icon (), HbIcon("qtg_mono_speaker"));
     QCOMPARE (action->command (), (int)EPhoneInCallCmdActivateIhf);        
     
     map = m_resourceAdapter->convert (R_PHONEUI_CONFERENCE_CALL);
@@ -277,8 +277,29 @@
     QString testString11 = m_resourceAdapter->convertToString(R_PHONE_INCALL_INFO_NO_NETWORK_SUPPORT); 
     QVERIFY( false == testString11.isEmpty() );
     
-    QString testString12 = m_resourceAdapter->convertToString(0); 
-    QCOMPARE( testString12, QString ("") );
+    QString testString12 = m_resourceAdapter->convertToString(R_PHONE_ERROR_EMERGENCY_CALLS_ONLY); 
+    QVERIFY( false == testString12.isEmpty() );
+    
+    QString testString13 = m_resourceAdapter->convertToString(R_NOTETEXT_NUMBER_NOT_IN_USE); 
+    QVERIFY( false == testString13.isEmpty() );
+    
+    QString testString14 = m_resourceAdapter->convertToString(R_NOTETEXT_NETWORK_BUSY); 
+    QVERIFY( false == testString14.isEmpty() );
+    
+    QString testString15 = m_resourceAdapter->convertToString(R_NOTETEXT_ERROR_IN_CONNECTION); 
+    QVERIFY( false == testString15.isEmpty() );
+    
+    QString testString16 = m_resourceAdapter->convertToString(R_PHONEUI_ERROR_EMERGENCY_ATTEMPT_FAILED); 
+    QVERIFY( false == testString16.isEmpty() );   
+    
+    QString testString17 = m_resourceAdapter->convertToString(R_PHONE_SS_NOTIFICATION_INCAL_TRANSFERRED_TEXT); 
+    QVERIFY( false == testString17.isEmpty() );    
+ 
+    QString testString18 = m_resourceAdapter->convertToString(R_PHONE_ERROR_NO_SERVICE); 
+    QVERIFY( false == testString18.isEmpty() ); 
+    
+    QString testString99 = m_resourceAdapter->convertToString(0); 
+    QCOMPARE( testString99, QString ("") );
 }
 
 void TestPhoneResourceAdapter::testConvertToString2 ()
@@ -309,7 +330,7 @@
         QCOMPARE (action->icon (), HbIcon("qtg_mono_mic_unmute"));
         QCOMPARE (action->command (), (int)EPhoneInCallCmdUnmute);    
         action = map [PhoneAction::ToolbarButton3];
-        QCOMPARE (action->icon (), HbIcon("qtg_mono_loudspeaker"));
+        QCOMPARE (action->icon (), HbIcon("qtg_mono_speaker"));
         QCOMPARE (action->command (), (int)EPhoneInCallCmdActivateIhf);        
         break;
     default:    
@@ -319,7 +340,7 @@
         QCOMPARE (action->icon (), HbIcon("qtg_mono_mic_mute"));
         QCOMPARE (action->command (), (int)EPhoneInCallCmdMute);    
         action = map [PhoneAction::ToolbarButton3];
-        QCOMPARE (action->icon (), HbIcon("qtg_mono_loudspeaker"));
+        QCOMPARE (action->icon (), HbIcon("qtg_mono_speaker"));
         QCOMPARE (action->command (), (int)EPhoneInCallCmdActivateIhf);
         break;
     }
--- a/phoneapp/phoneuiqtviewadapter/tsrc/ut_phoneuiqtviewadapter/unit_tests.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/tsrc/ut_phoneuiqtviewadapter/unit_tests.cpp	Mon May 03 12:31:11 2010 +0300
@@ -232,6 +232,8 @@
     void testNoteController();
     void testHsToForegroundAfterCall();
     void testCipheringInfoChange();
+    void testSetHidden();
+    void testBeginEndUiUpdate();
 
 private:
     PhoneUIQtViewAdapter *m_adapter; // class under test
@@ -640,13 +642,7 @@
 void TestPhoneUIQtViewAdapter::testExecuteCommandLwithCmdId ()
 {
     // Default
-    m_adapter->ExecuteCommandL (0);
-    
-    m_adapter->ExecuteCommandL (EPhoneViewBeginUpdate);
-    QVERIFY (m_startChangesCalled == true);
-    
-    m_adapter->ExecuteCommandL (EPhoneViewEndUpdate);
-    QVERIFY (m_endChangesCalled == true);
+    m_adapter->ExecuteCommandL (0);    
 }
 
 void TestPhoneUIQtViewAdapter::testExecuteCommandLwithCmdIdAndCallId ()
@@ -1245,6 +1241,7 @@
 
 void TestPhoneUIQtViewAdapter::testCipheringInfoChange()
 {
+	m_bubble_id = 1;
     TPhoneCmdParamCallHeaderData callHeader;
     callHeader.SetCipheringIndicatorAllowed(true);
     callHeader.SetCiphering(false);
@@ -1252,6 +1249,24 @@
     QVERIFY (m_startChangesCalled == true);
     QVERIFY (m_setCipheringCalled == true);
     QVERIFY (m_endChangesCalled == true);
+    m_setCipheringCalled = false;
+	m_bubble_id = -1;
+    m_adapter->ExecuteCommandL (EPhoneViewCipheringInfoChange, -1, &callHeader);
+    QVERIFY (m_setCipheringCalled == false);
+}
+
+void TestPhoneUIQtViewAdapter::testSetHidden()
+{
+    m_adapter->ExecuteCommandL(EPhoneViewUpdateFSW);
+}
+
+void TestPhoneUIQtViewAdapter::testBeginEndUiUpdate()
+{
+    m_adapter->ExecuteCommand(EPhoneViewBeginUpdate);
+    QVERIFY (m_startChangesCalled == true);
+    
+    m_adapter->ExecuteCommand(EPhoneViewEndUpdate);
+    QVERIFY (m_endChangesCalled == true);
 }
 
 PHONE_QT_VIEW_ADAPTER_TEST_MAIN(TestPhoneUIQtViewAdapter)
--- a/phoneapp/phoneuiqtviewadapter/tsrc/ut_phoneuiqtviewadapter/ut_phoneuiqtviewadapter.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/tsrc/ut_phoneuiqtviewadapter/ut_phoneuiqtviewadapter.pro	Mon May 03 12:31:11 2010 +0300
@@ -45,7 +45,10 @@
     LIBS += -lxqserviceutil
     LIBS += -lxqplugins
     LIBS += -lserviceprovidersettings
-
+    LIBS += -lakncapserverclient
+    LIBS += -lxqsettingsmanager
+    LIBS += -llogsengine
+    
     TARGET.CAPABILITY = ALL -TCB
     DEFINES += FT_SYMBIAN_INTEGRATION
     DEFINES += BUILD_PHONEUIQTVIEWADAPTER
@@ -66,6 +69,8 @@
 SOURCES += ../../src/phonecommandextensionwrapper.cpp
 HEADERS += ../../inc/phonemessagecontroller.h
 SOURCES += ../../src/phonemessagecontroller.cpp
+HEADERS += ../../inc/phoneindicatorcontroller.h
+SOURCES += ../../src/phoneindicatorcontroller.cpp
 SOURCES += phoneuiqtbuttonscontroller_stub.cpp
 HEADERS += phonebubblewrapper.h
 SOURCES += phonebubblewrapper_stub.cpp
--- a/phoneapp/phoneuiqtviewadapter/tsrc/ut_telephonyservice/phoneuiqtviewadapter_stub.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/tsrc/ut_telephonyservice/phoneuiqtviewadapter_stub.cpp	Mon May 03 12:31:11 2010 +0300
@@ -167,3 +167,8 @@
 void PhoneUIQtViewAdapter::keyReleased(QKeyEvent */*event*/)
 {}
 
+void PhoneUIQtViewAdapter::HandlePropertyChangedL( 
+    const TUid& aCategory,
+    const TUint aKey,
+    const TInt aValue)
+{}
\ No newline at end of file
--- a/phoneapp/phoneuistates/src/cphonesingleandcallsetup.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuistates/src/cphonesingleandcallsetup.cpp	Mon May 03 12:31:11 2010 +0300
@@ -237,6 +237,8 @@
     holdFlag.SetBoolean( EFalse );
     iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
 
+    SetTouchPaneButtons( EPhoneCallSetupAndSingleButtons );
+    
     // Go to alerting state
     UpdateCbaL( EPhoneCallHandlingInCallCBA );
     iStateMachine->ChangeState( EPhoneStateAlertingInSingle );
--- a/phoneapp/phoneuistates/src/cphonetwosinglesandwaiting.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuistates/src/cphonetwosinglesandwaiting.cpp	Mon May 03 12:31:11 2010 +0300
@@ -440,7 +440,7 @@
         } 
     else 
         {
-        iCbaManager->SetCbaL( EPhoneCallHandlingIncomingSoftRejectCBA );
+        iCbaManager->SetCbaL( EPhoneCallHandlingIncomingRejectCBA );
         }
     }
 
--- a/phoneapp/phoneuiview2/bwins/phoneuiqtviewu.def	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiview2/bwins/phoneuiqtviewu.def	Mon May 03 12:31:11 2010 +0300
@@ -1,5 +1,4 @@
-EXPORTS
-	?setExpandAction@PhoneUIQtView@@UAEXHH@Z @ 1 NONAME ; void PhoneUIQtView::setExpandAction(int, int)
+EXPORTS	?setExpandAction@PhoneUIQtView@@UAEXHH@Z @ 1 NONAME ; void PhoneUIQtView::setExpandAction(int, int)
 	?keyPressed@PhoneUIQtView@@IAEXPAVQKeyEvent@@@Z @ 2 NONAME ; void PhoneUIQtView::keyPressed(class QKeyEvent *)
 	?volumeSliderChanged@PhoneUIQtView@@QAEXH@Z @ 3 NONAME ; void PhoneUIQtView::volumeSliderChanged(int)
 	?menuReference@PhoneUIQtView@@UAEAAVHbMenu@@XZ @ 4 NONAME ; class HbMenu & PhoneUIQtView::menuReference(void)
@@ -60,6 +59,4 @@
 	?setVolumeSliderValue@PhoneUIQtView@@UAEXHHHH@Z @ 59 NONAME ; void PhoneUIQtView::setVolumeSliderValue(int, int, int, int)
 	?clearAndHideDialpad@PhoneUIQtView@@UAEXXZ @ 60 NONAME ; void PhoneUIQtView::clearAndHideDialpad(void)
 	?isDisabled@PhoneAction@@QBE_NXZ @ 61 NONAME ; bool PhoneAction::isDisabled(void) const
-	?endKeyLongPress@PhoneUIQtView@@IAEXXZ @ 62 NONAME ; void PhoneUIQtView::endKeyLongPress(void)
-	?longEndKeyPressEvent@PhoneUIQtView@@QAEXXZ @ 63 NONAME ; void PhoneUIQtView::longEndKeyPressEvent(void)
 
--- a/phoneapp/phoneuiview2/eabi/phoneuiqtviewu.def	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiview2/eabi/phoneuiqtviewu.def	Mon May 03 12:31:11 2010 +0300
@@ -89,6 +89,4 @@
 	_ZThn28_N13PhoneUIQtView27clearParticipantListActionsEv @ 88 NONAME
 	_ZThn8_N13PhoneUIQtViewD0Ev @ 89 NONAME
 	_ZThn8_N13PhoneUIQtViewD1Ev @ 90 NONAME
-	_ZN13PhoneUIQtView15endKeyLongPressEv @ 91 NONAME
-	_ZN13PhoneUIQtView20longEndKeyPressEventEv @ 92 NONAME
 
--- a/phoneapp/phoneuiview2/inc/phoneuiqtview.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiview2/inc/phoneuiqtview.h	Mon May 03 12:31:11 2010 +0300
@@ -29,7 +29,7 @@
 class HbToolBar;
 class HbVolumeSliderPopup;
 class Dialpad;
-class QTimer;
+class XqKeyCapture;
 
 #ifdef BUILD_PHONEUIQTVIEW
 #define PHONEUIQTVIEW_EXPORT Q_DECL_EXPORT
@@ -265,12 +265,6 @@
     */
     void shutdownPhoneApp();
     
-    /*!
-        \fn void PhoneUIQtView::longEndKeyPressEvent()
-        
-        This is called when end key's long press timer times out.
-    */
-    void longEndKeyPressEvent();
    
 signals:
 
@@ -287,8 +281,6 @@
         This signal is emitted when key is released.
     */
     void keyReleased (QKeyEvent *event);
-
-    void endKeyLongPress();
     
     /*!
         \fn void command(int command)
@@ -353,7 +345,7 @@
     HbAction            *m_backAction;
     Dialpad             *m_dialpad;
     QSignalMapper       *m_menuSignalMapper;
-    QTimer              *m_longPressTimer;
+    XqKeyCapture        *m_keyCapture;
 };
 
 #endif // PHONEUIQTVIEW_H
--- a/phoneapp/phoneuiview2/phoneuiview2.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiview2/phoneuiview2.pro	Mon May 03 12:31:11 2010 +0300
@@ -33,7 +33,8 @@
     LIBS += -lphoneuiutils \
             -lbubblemanager2 \
             -lxqserviceutil \
-            -ldialpad
+            -ldialpad \
+            -lxqkeycapture
 
     defFiles = \
         "$${LITERAL_HASH}ifdef WINS" \
--- a/phoneapp/phoneuiview2/src/phoneuiqtview.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiview2/src/phoneuiqtview.cpp	Mon May 03 12:31:11 2010 +0300
@@ -15,8 +15,7 @@
 *
 */
 #include <hbinstance.h>
-#include <qsignalmapper>
-#include <qtimer>
+#include <QSignalMapper>
 #include <hbaction.h>
 #include <hbtoolbar.h>
 #include <hbvolumesliderpopup.h>
@@ -26,12 +25,12 @@
 #include <hbmenu.h>
 
 #include <xqserviceutil.h>
+#include <xqkeycapture.h>
 #include <dialpad.h>
 
 #include "phoneuiqtview.h"
 #include "phoneaction.h"
 #include "qtphonelog.h"
-const int LongKeyPressTimeOut(600);
 
 PhoneUIQtView::PhoneUIQtView (HbMainWindow &window, QGraphicsItem *parent) :
     HbView (parent),
@@ -40,19 +39,15 @@
     m_expandSignalMapper(0),
     m_participantListSignalMapper(0),
     m_volumeCommandId(0),
-    m_longPressTimer(0)
+    m_keyCapture(0)
 {
     setTitle(hbTrId("txt_phone_title_telephone"));
 
-    // Call handling widget
-    m_bubbleManager = new BubbleManager (this);
-    setWidget(m_bubbleManager);
-
-    // Long press timer
-    m_longPressTimer = new QTimer(this);
-    m_longPressTimer->setSingleShot(true);
-    connect(m_longPressTimer, SIGNAL(timeout()), this, SLOT(longEndKeyPressEvent()));
-
+    // Capturing long press of end key
+    m_keyCapture = new XqKeyCapture();
+    m_keyCapture->captureLongKey(Qt::Key_No);
+    m_keyCapture->captureKey(Qt::Key_No);
+    
     // Dialpad
     m_dialpad = new Dialpad(m_window);
     m_dialpad->setCallButtonEnabled(false);
@@ -61,6 +56,10 @@
             SLOT(onEditorContentChanged()));
     connect(m_dialpad,SIGNAL(aboutToClose()),this,
                 SLOT(dialpadClosed()));
+                
+    // Call handling widget
+    m_bubbleManager = new BubbleManager (this);
+    setWidget(m_bubbleManager);
 
     // Set event filter
     m_window.installEventFilter(this);
@@ -76,7 +75,7 @@
     m_bubbleManager->handleOrientationChange(m_window.orientation());
 
     // change exit softkey to back button
-    m_backAction = new HbAction(Hb::BackAction, this);
+    m_backAction = new HbAction(Hb::BackNaviAction, this);
     connect(m_backAction, SIGNAL(triggered()), this, SLOT(backButtonClicked()));
     setNavigationAction(m_backAction);
 
@@ -424,20 +423,21 @@
 
 bool PhoneUIQtView::eventFilter(QObject * /*watched*/, QEvent * event)
 {
-    if (event->type() == QEvent::KeyPress) {
+    PHONE_DEBUG2("PhoneUIQtView::eventFilter event type:", event->type());
+    if(event->type() == QEvent::KeyPress) {
         QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
         PHONE_DEBUG2("PhoneUIQtView::eventFilter pressed key:", keyEvent->key());
-        if(keyEvent->key() == Qt::Key_No) {
-            m_longPressTimer->stop();
-            m_longPressTimer->start(LongKeyPressTimeOut);
-        }
-        emit keyPressed(keyEvent);
+        PHONE_DEBUG2("PhoneUIQtView::eventFilter isAutoRepeat:", keyEvent->isAutoRepeat());
+        emit keyPressed(keyEvent);        
+        keyEvent->accept();
+        
         return false;
-    } else if (event->type() == QEvent::KeyRelease) {
-        m_longPressTimer->stop();
+    } else if(event->type() == QEvent::KeyRelease) {
         QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
         PHONE_DEBUG2("PhoneUIQtView::eventFilter released key:", keyEvent->key());
         emit keyReleased(keyEvent);
+        keyEvent->accept();
+        
         return false;
     } else {
         return false;
@@ -446,8 +446,11 @@
 
 void PhoneUIQtView::setDialpadPosition()
 {
-    QRectF screenRect = m_window.layoutRect();
-
+    // workaround to tsw error JMKN-83NAPU (fix coming in MCL wk14)
+    // QRectF screenRect(m_window.layoutRect());
+    QRectF screenRect = (m_window.orientation() == Qt::Horizontal) ?
+                        QRectF(0,0,640,360) : QRectF(0,0,360,640);
+                        	
     if (m_window.orientation() == Qt::Horizontal) {
             // dialpad takes half of the screen
         m_dialpad->setPos(QPointF(screenRect.width()/2,
@@ -497,10 +500,3 @@
         setNavigationAction(0);
     }
 }
-
-void PhoneUIQtView::longEndKeyPressEvent()
-{
-    Q_ASSERT(m_longPressTimer);
-    m_longPressTimer->stop();
-    emit endKeyLongPress();
-}
--- a/phoneapp/phoneuiview2/tsrc/ut_phoneuiqtview/hbvolumesliderpopup.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiview2/tsrc/ut_phoneuiqtview/hbvolumesliderpopup.h	Mon May 03 12:31:11 2010 +0300
@@ -19,7 +19,7 @@
 #define HBVOLUMESLIDERPOPUP_H
 
 #include <QObject>
-#include <hbpopupbase.h>
+#include <hbpopup.h>
 
 extern bool m_volumeSliderContructorCalled;
 extern bool m_volumeSliderDesctructorCalled;
@@ -49,7 +49,7 @@
     void setTimeout (int time);
     void show();
     void hide();
-    void setDismissPolicy( HbPopupBase::DismissPolicy value ) {;};
+    void setDismissPolicy( HbPopup::DismissPolicy value ) {;};
     int minimum() {return m_sliderRangeMin;};
     int maximum() {return m_sliderRangeMax;};
     bool isVisible() {return m_isVisible;};
--- a/phoneapp/phoneuiview2/tsrc/ut_phoneuiqtview/unit_tests.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiview2/tsrc/ut_phoneuiqtview/unit_tests.cpp	Mon May 03 12:31:11 2010 +0300
@@ -20,13 +20,16 @@
 #include <QVariant>
 #include <QKeyEvent>
 #include <QTimer>
+#include <QShortcutEvent>
+#include <QSignalSpy>
 #include <hbapplication.h>
-#include <QSignalSpy>
 #include <hbmainwindow.h>
 #include <hbinstance.h>
 #include <hbmainwindow.h>
 #include <bubblemanagerif.h>
+#define protected public
 #include "phoneuiqtview.h"
+#undef public
 #include "phoneaction.h"
 #include <hbtoolbar.h>
 #include <hbvolumesliderpopup.h>
@@ -89,7 +92,7 @@
     void testShowDialpad();
     void testDialpadText();
     void testSetMenuActions();
-    void testLongEndKeyPressEvent();
+    void testLongEndKeyPressEventOutsideTelephony();
 
 private:
     int createCallHeader();
@@ -387,12 +390,15 @@
     return bubble;
 }
 
-void TestPhoneUIQtView::testLongEndKeyPressEvent()
+void TestPhoneUIQtView::testLongEndKeyPressEventOutsideTelephony()
 {
-    QSignalSpy spy(m_view, SIGNAL(endKeyLongPress()));
-    m_view->longEndKeyPressEvent();
-    QVERIFY(m_qtimer_stop_called == true);
-    QCOMPARE(spy.count(), 1);
+    /*QSignalSpy spy(m_view, SIGNAL(endKeyLongPress()));
+    QKeyEvent* event = new QKeyEvent(QEvent::ShortcutOverride, Qt::Key_No, Qt::NoModifier);
+
+    bool returnValue = m_view->eventFilter(new QObject(), event);
+
+    QVERIFY(returnValue == true);
+    QCOMPARE(spy.count(), 1);*/
 }
 
 PHONE_QT_VIEW_TEST_MAIN(TestPhoneUIQtView)
--- a/phoneapp/phoneuiview2/tsrc/ut_phoneuiqtview/ut_phoneuiqtview.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneapp/phoneuiview2/tsrc/ut_phoneuiqtview/ut_phoneuiqtview.pro	Mon May 03 12:31:11 2010 +0300
@@ -34,7 +34,8 @@
 
     LIBS += -lbubblemanager2 \
             -lxqserviceutil \
-            -ldialpad
+            -ldialpad \
+            -lxqkeycapture
 
     DEFINES += FT_SYMBIAN_INTEGRATION
 } else:win32 {
--- a/phoneengine/audiohandling/bwins/audiohandlingu.def	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/audiohandling/bwins/audiohandlingu.def	Mon May 03 12:31:11 2010 +0300
@@ -13,14 +13,13 @@
 	?PlayDtmfTone@CPEGsmAudioData@@QBEXABVTChar@@@Z @ 12 NONAME ; void CPEGsmAudioData::PlayDtmfTone(class TChar const &) const
 	?CreateAudioToneUtilityL@CPEAudioFactory@@UAEPAVCPEAudioToneUtility@@AAVMMdaAudioToneObserver@@@Z @ 13 NONAME ; class CPEAudioToneUtility * CPEAudioFactory::CreateAudioToneUtilityL(class MMdaAudioToneObserver &)
 	?CallAudioRoutePreferenceChanged@CPEAudioData@@UAEHXZ @ 14 NONAME ; int CPEAudioData::CallAudioRoutePreferenceChanged(void)
-	?SetDefaultVolume@CPEAudioData@@QAEXXZ @ 15 NONAME ; void CPEAudioData::SetDefaultVolume(void)
-	?HandleCallEnding@CPEAudioData@@UAEXXZ @ 16 NONAME ; void CPEAudioData::HandleCallEnding(void)
-	?NewLC@CPEAudioFactory@@SAPAV1@XZ @ 17 NONAME ; class CPEAudioFactory * CPEAudioFactory::NewLC(void)
-	?StartUp@CPEAudioData@@UAEXXZ @ 18 NONAME ; void CPEAudioData::StartUp(void)
-	?GetAudioMuteSync@CPEAudioData@@UBEXAAH@Z @ 19 NONAME ; void CPEAudioData::GetAudioMuteSync(int &) const
-	?NewL@CPEGsmAudioData@@SAPAV1@AAVMPEPhoneModelInternal@@AAVRFs@@@Z @ 20 NONAME ; class CPEGsmAudioData * CPEGsmAudioData::NewL(class MPEPhoneModelInternal &, class RFs &)
-	?StopDtmfTonePlay@CPEGsmAudioData@@UAEXXZ @ 21 NONAME ; void CPEGsmAudioData::StopDtmfTonePlay(void)
-	?NewL@CPEGsmAudioData@@SAPAV1@AAVMPEPhoneModelInternal@@AAVRFs@@AAVCPEAudioFactory@@@Z @ 22 NONAME ; class CPEGsmAudioData * CPEGsmAudioData::NewL(class MPEPhoneModelInternal &, class RFs &, class CPEAudioFactory &)
-	?SetAudioVolumeSync@CPEAudioData@@UAEXH@Z @ 23 NONAME ; void CPEAudioData::SetAudioVolumeSync(int)
-	?PlayInbandTone@CPEGsmAudioData@@QAEXXZ @ 24 NONAME ; void CPEGsmAudioData::PlayInbandTone(void)
+	?HandleCallEnding@CPEAudioData@@UAEXXZ @ 15 NONAME ; void CPEAudioData::HandleCallEnding(void)
+	?NewLC@CPEAudioFactory@@SAPAV1@XZ @ 16 NONAME ; class CPEAudioFactory * CPEAudioFactory::NewLC(void)
+	?StartUp@CPEAudioData@@UAEXXZ @ 17 NONAME ; void CPEAudioData::StartUp(void)
+	?GetAudioMuteSync@CPEAudioData@@UBEXAAH@Z @ 18 NONAME ; void CPEAudioData::GetAudioMuteSync(int &) const
+	?NewL@CPEGsmAudioData@@SAPAV1@AAVMPEPhoneModelInternal@@AAVRFs@@@Z @ 19 NONAME ; class CPEGsmAudioData * CPEGsmAudioData::NewL(class MPEPhoneModelInternal &, class RFs &)
+	?StopDtmfTonePlay@CPEGsmAudioData@@UAEXXZ @ 20 NONAME ; void CPEGsmAudioData::StopDtmfTonePlay(void)
+	?NewL@CPEGsmAudioData@@SAPAV1@AAVMPEPhoneModelInternal@@AAVRFs@@AAVCPEAudioFactory@@@Z @ 21 NONAME ; class CPEGsmAudioData * CPEGsmAudioData::NewL(class MPEPhoneModelInternal &, class RFs &, class CPEAudioFactory &)
+	?SetAudioVolumeSync@CPEAudioData@@UAEXH@Z @ 22 NONAME ; void CPEAudioData::SetAudioVolumeSync(int)
+	?PlayInbandTone@CPEGsmAudioData@@QAEXXZ @ 23 NONAME ; void CPEGsmAudioData::PlayInbandTone(void)
 
--- a/phoneengine/audiohandling/eabi/audiohandlingu.def	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/audiohandling/eabi/audiohandlingu.def	Mon May 03 12:31:11 2010 +0300
@@ -2,54 +2,53 @@
 	_ZN12CPEAudioData14SetAudioOutputE14TPEAudioOutputi @ 1 NONAME
 	_ZN12CPEAudioData16HandleCallEndingEv @ 2 NONAME
 	_ZN12CPEAudioData16SetAudioMuteSyncEi @ 3 NONAME
-	_ZN12CPEAudioData16SetDefaultVolumeEv @ 4 NONAME
-	_ZN12CPEAudioData18HandleCallStartingEi @ 5 NONAME
-	_ZN12CPEAudioData18SetAudioVolumeSyncEi @ 6 NONAME
-	_ZN12CPEAudioData27HandleEnergencyCallStartingEv @ 7 NONAME
-	_ZN12CPEAudioData31CallAudioRoutePreferenceChangedEv @ 8 NONAME
-	_ZN12CPEAudioData7StartUpEv @ 9 NONAME
-	_ZN12CPEAudioDataD0Ev @ 10 NONAME
-	_ZN12CPEAudioDataD1Ev @ 11 NONAME
-	_ZN12CPEAudioDataD2Ev @ 12 NONAME
-	_ZN15CPEAudioFactory23CreateAudioToneUtilityLER21MMdaAudioToneObserver @ 13 NONAME
-	_ZN15CPEAudioFactory28CreateTelephonyAudioRoutingLER30MTelephonyAudioRoutingObserver @ 14 NONAME
-	_ZN15CPEAudioFactory5NewLCEv @ 15 NONAME
-	_ZN15CPEAudioFactoryC1Ev @ 16 NONAME
-	_ZN15CPEAudioFactoryC2Ev @ 17 NONAME
-	_ZN15CPEGsmAudioData14PlayInbandToneEv @ 18 NONAME
-	_ZN15CPEGsmAudioData15HandleDTMFEventEN16MCCEDtmfObserver13TCCEDtmfEventEi5TChar @ 19 NONAME
-	_ZN15CPEGsmAudioData16StopDtmfTonePlayEv @ 20 NONAME
-	_ZN15CPEGsmAudioData18StopInbandTonePlayEv @ 21 NONAME
-	_ZN15CPEGsmAudioData4NewLER21MPEPhoneModelInternalR3RFs @ 22 NONAME
-	_ZN15CPEGsmAudioData4NewLER21MPEPhoneModelInternalR3RFsR15CPEAudioFactory @ 23 NONAME
-	_ZN15CPEGsmAudioDataD0Ev @ 24 NONAME
-	_ZN15CPEGsmAudioDataD1Ev @ 25 NONAME
-	_ZN15CPEGsmAudioDataD2Ev @ 26 NONAME
-	_ZNK12CPEAudioData16GetAudioMuteSyncERi @ 27 NONAME
-	_ZNK12CPEAudioData18GetAudioVolumeSyncERi @ 28 NONAME
-	_ZNK15CPEGsmAudioData12PlayDtmfToneERK5TChar @ 29 NONAME
-	_ZTI12CPEAudioData @ 30 NONAME ; #<TI>#
-	_ZTI15CPEGsmAudioData @ 31 NONAME ; #<TI>#
-	_ZTI22CPEAudioDtmfTonePlayer @ 32 NONAME ; #<TI>#
-	_ZTI22CPEAudioRoutingMonitor @ 33 NONAME ; #<TI>#
-	_ZTI24CPEAudioInbandTonePlayer @ 34 NONAME ; #<TI>#
-	_ZTI26CPECallAudioRoutingHandler @ 35 NONAME ; #<TI>#
-	_ZTV12CPEAudioData @ 36 NONAME ; #<VT>#
-	_ZTV15CPEGsmAudioData @ 37 NONAME ; #<VT>#
-	_ZTV22CPEAudioDtmfTonePlayer @ 38 NONAME ; #<VT>#
-	_ZTV22CPEAudioRoutingMonitor @ 39 NONAME ; #<VT>#
-	_ZTV24CPEAudioInbandTonePlayer @ 40 NONAME ; #<VT>#
-	_ZTV26CPECallAudioRoutingHandler @ 41 NONAME ; #<VT>#
-	_ZThn4_N12CPEAudioData14SetAudioOutputE14TPEAudioOutputi @ 42 NONAME ; #<thunk>#
-	_ZThn4_N12CPEAudioData16HandleCallEndingEv @ 43 NONAME ; #<thunk>#
-	_ZThn4_N12CPEAudioData16SetAudioMuteSyncEi @ 44 NONAME ; #<thunk>#
-	_ZThn4_N12CPEAudioData18HandleCallStartingEi @ 45 NONAME ; #<thunk>#
-	_ZThn4_N12CPEAudioData18SetAudioVolumeSyncEi @ 46 NONAME ; #<thunk>#
-	_ZThn4_N12CPEAudioData27HandleEnergencyCallStartingEv @ 47 NONAME ; #<thunk>#
-	_ZThn4_N12CPEAudioData31CallAudioRoutePreferenceChangedEv @ 48 NONAME ; #<thunk>#
-	_ZThn4_N12CPEAudioData7StartUpEv @ 49 NONAME ; #<thunk>#
-	_ZThn4_N15CPEGsmAudioData16StopDtmfTonePlayEv @ 50 NONAME ; #<thunk>#
-	_ZThn4_NK12CPEAudioData16GetAudioMuteSyncERi @ 51 NONAME ; #<thunk>#
-	_ZThn4_NK12CPEAudioData18GetAudioVolumeSyncERi @ 52 NONAME ; #<thunk>#
-	_ZThn72_N15CPEGsmAudioData15HandleDTMFEventEN16MCCEDtmfObserver13TCCEDtmfEventEi5TChar @ 53 NONAME ; #<thunk>#
+	_ZN12CPEAudioData18HandleCallStartingEi @ 4 NONAME
+	_ZN12CPEAudioData18SetAudioVolumeSyncEi @ 5 NONAME
+	_ZN12CPEAudioData27HandleEnergencyCallStartingEv @ 6 NONAME
+	_ZN12CPEAudioData31CallAudioRoutePreferenceChangedEv @ 7 NONAME
+	_ZN12CPEAudioData7StartUpEv @ 8 NONAME
+	_ZN12CPEAudioDataD0Ev @ 9 NONAME
+	_ZN12CPEAudioDataD1Ev @ 10 NONAME
+	_ZN12CPEAudioDataD2Ev @ 11 NONAME
+	_ZN15CPEAudioFactory23CreateAudioToneUtilityLER21MMdaAudioToneObserver @ 12 NONAME
+	_ZN15CPEAudioFactory28CreateTelephonyAudioRoutingLER30MTelephonyAudioRoutingObserver @ 13 NONAME
+	_ZN15CPEAudioFactory5NewLCEv @ 14 NONAME
+	_ZN15CPEAudioFactoryC1Ev @ 15 NONAME
+	_ZN15CPEAudioFactoryC2Ev @ 16 NONAME
+	_ZN15CPEGsmAudioData14PlayInbandToneEv @ 17 NONAME
+	_ZN15CPEGsmAudioData15HandleDTMFEventEN16MCCEDtmfObserver13TCCEDtmfEventEi5TChar @ 18 NONAME
+	_ZN15CPEGsmAudioData16StopDtmfTonePlayEv @ 19 NONAME
+	_ZN15CPEGsmAudioData18StopInbandTonePlayEv @ 20 NONAME
+	_ZN15CPEGsmAudioData4NewLER21MPEPhoneModelInternalR3RFs @ 21 NONAME
+	_ZN15CPEGsmAudioData4NewLER21MPEPhoneModelInternalR3RFsR15CPEAudioFactory @ 22 NONAME
+	_ZN15CPEGsmAudioDataD0Ev @ 23 NONAME
+	_ZN15CPEGsmAudioDataD1Ev @ 24 NONAME
+	_ZN15CPEGsmAudioDataD2Ev @ 25 NONAME
+	_ZNK12CPEAudioData16GetAudioMuteSyncERi @ 26 NONAME
+	_ZNK12CPEAudioData18GetAudioVolumeSyncERi @ 27 NONAME
+	_ZNK15CPEGsmAudioData12PlayDtmfToneERK5TChar @ 28 NONAME
+	_ZTI12CPEAudioData @ 29 NONAME
+	_ZTI15CPEGsmAudioData @ 30 NONAME
+	_ZTI22CPEAudioDtmfTonePlayer @ 31 NONAME
+	_ZTI22CPEAudioRoutingMonitor @ 32 NONAME
+	_ZTI24CPEAudioInbandTonePlayer @ 33 NONAME
+	_ZTI26CPECallAudioRoutingHandler @ 34 NONAME
+	_ZTV12CPEAudioData @ 35 NONAME
+	_ZTV15CPEGsmAudioData @ 36 NONAME
+	_ZTV22CPEAudioDtmfTonePlayer @ 37 NONAME
+	_ZTV22CPEAudioRoutingMonitor @ 38 NONAME
+	_ZTV24CPEAudioInbandTonePlayer @ 39 NONAME
+	_ZTV26CPECallAudioRoutingHandler @ 40 NONAME
+	_ZThn4_N12CPEAudioData14SetAudioOutputE14TPEAudioOutputi @ 41 NONAME
+	_ZThn4_N12CPEAudioData16HandleCallEndingEv @ 42 NONAME
+	_ZThn4_N12CPEAudioData16SetAudioMuteSyncEi @ 43 NONAME
+	_ZThn4_N12CPEAudioData18HandleCallStartingEi @ 44 NONAME
+	_ZThn4_N12CPEAudioData18SetAudioVolumeSyncEi @ 45 NONAME
+	_ZThn4_N12CPEAudioData27HandleEnergencyCallStartingEv @ 46 NONAME
+	_ZThn4_N12CPEAudioData31CallAudioRoutePreferenceChangedEv @ 47 NONAME
+	_ZThn4_N12CPEAudioData7StartUpEv @ 48 NONAME
+	_ZThn4_N15CPEGsmAudioData16StopDtmfTonePlayEv @ 49 NONAME
+	_ZThn4_NK12CPEAudioData16GetAudioMuteSyncERi @ 50 NONAME
+	_ZThn4_NK12CPEAudioData18GetAudioVolumeSyncERi @ 51 NONAME
+	_ZThn68_N15CPEGsmAudioData15HandleDTMFEventEN16MCCEDtmfObserver13TCCEDtmfEventEi5TChar @ 52 NONAME
 
--- a/phoneengine/audiohandling/group/audiohandling.mmp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/audiohandling/group/audiohandling.mmp	Mon May 03 12:31:11 2010 +0300
@@ -25,6 +25,12 @@
 
 CAPABILITY  CAP_GENERAL_DLL
 
+
+#ifndef WINSCW 
+EpocAllowDllData
+#endif
+
+
 //MACRO     UNIT_TESTING    //defined if running T_AudoHandlingMT tests
 SOURCEPATH      ../src
     
@@ -36,7 +42,8 @@
 SOURCE          peaudiohandlingpanic.cpp
 SOURCE        cpecallaudioroutinghandler.cpp
 SOURCE          cpeaudiofactory.cpp
-SOURCE        cpeaudiotoneutilityimpl.cpp
+SOURCE        cpeaudiotoneutilityimpl.cpp 
+SOURCE        cpeaudioeffect.cpp
 
 START RESOURCE  ../data/defaultbeep.rss
 TARGETPATH      RESOURCE_FILES_DIR
@@ -52,6 +59,12 @@
 SYSTEMINCLUDE   /epoc32/include/mmf/server
 SYSTEMINCLUDE   /epoc32/include/mmf/common
 
+
+MW_LAYER_SYSTEMINCLUDE
+OS_LAYER_LIBC_SYSTEMINCLUDE
+OS_LAYER_GLIB_SYSTEMINCLUDE
+SYSTEMINCLUDE /epoc32/include/stdapis/stlport
+
 LIBRARY         bafl.lib
 LIBRARY         cce.lib
 LIBRARY         telephonyaudiorouting.lib
@@ -63,4 +76,8 @@
 LIBRARY         mediaclientaudio.lib
 LIBRARY         mmfdevsound.lib
 
+LIBRARY         tmsfactory.lib
+LIBRARY         tmsapi.lib
+LIBRARY         libglib.lib
+
 LANG            SC
\ No newline at end of file
--- a/phoneengine/audiohandling/inc/cpeaudiodata.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/audiohandling/inc/cpeaudiodata.h	Mon May 03 12:31:11 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2002-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,7 @@
 *
 * Contributors:
 *
-* Description:  This file contains the header file of the class CPEAudioData 
+* Description:  This file contains the header file of the class CPEAudioData
 *                 which is the interface class for Audio Handling Module
 *
 */
@@ -23,8 +23,12 @@
 //  INCLUDES
 #include "mpeaudiodata.h"
 #include <PSVariables.h>
- 
+
 #include <TelephonyAudioRouting.h>
+#include <tmseffect.h>
+#include <tmseffectobsrvr.h>
+
+
 // CONSTANTS
 // None.
 
@@ -37,6 +41,8 @@
 // FUNCTION PROTOTYPES
 // None.
 
+using namespace TMS;
+
 // FORWARD DECLARATIONS
 class MPEPhoneModelInternal;
 class CPEAudioDtmfTonePlayer;
@@ -44,22 +50,23 @@
 class CPECallAudioRoutingHandler;
 class CPEAudioFactory;
 class CTelephonyAudioRouting;
+class CPEAudioEffect;
 
 // CLASS DECLARATION
 
 /**
-*  This file contains the header file of the class CPEAudioData, 
-*  which is an interface class to audio 
+*  This file contains the header file of the class CPEAudioData,
+*  which is an interface class to audio
 *  properties of the system
 *
 *  @lib audiohandling.lib
 *  @since S60_5.0
 */
-class CPEAudioData: 
-        public CBase, 
-        public MPEAudioData 
+class CPEAudioData : public CBase,
+                     public MPEAudioData,
+                     public TMSEffectObserver
     {
-    
+
     public:
 
         /**
@@ -75,7 +82,7 @@
         CPEAudioData( MPEPhoneModelInternal& aPhoneModel );
 
     public: // from MPEAudioData
-       
+
         /**
         * Retrieves Audio mute synchronously.
         * @param  aAudioMute, audio mute is returned in this parameter.
@@ -87,7 +94,7 @@
         * @param  aAudioVolume, audio volume is returned in this parameter.
         */
         IMPORT_C void GetAudioVolumeSync( TInt& aAudioVolume ) const;
-                
+
         /**
         * Makes synchronous request to set Audio Mute.
         * @param  aAudioMute, mute to be set.
@@ -106,47 +113,42 @@
         * @param aShowNote, audio note status
         * @return KErrNone or possible errorcode.
         */
-        IMPORT_C TInt SetAudioOutput( 
+        IMPORT_C TInt SetAudioOutput(
             const TPEAudioOutput aOutput,
             TBool aShowNote );
-  
+
         /**
-        * Gets volume levels, audio mute, audio mode and audio volume 
+        * Gets volume levels, audio mute, audio mode and audio volume
         * at startup and starts monitors.
         * @param  None.
         * @return None.
         */
         IMPORT_C void StartUp();
-  
-        /**
-        * Sets default volume level if muted when call ended
-        */
-        IMPORT_C void SetDefaultVolume();
- 
+
         /**
         * Handles call audio route preference changed
         */
         IMPORT_C TInt CallAudioRoutePreferenceChanged();
-     
+
         /**
         * Initialises call audio route when call is alerting or answered
         */
         IMPORT_C TInt HandleCallStarting( TBool aVideoCall );
-        
+
         /**
         * Initialises energency call audio route
         */
         IMPORT_C TInt HandleEnergencyCallStarting();
-        
+
         /**
         * Ends call audio route when call disconnected
         */
         IMPORT_C void HandleCallEnding();
-    
+
     public: // new
-        
+
         /**
-        * Sends AudioHandlingError message to PhoneEngine and saves 
+        * Sends AudioHandlingError message to PhoneEngine and saves
         * errorcode to member variable.
         * @param  aErrorCode, errorcode that is saved to member variable.
         * @return None.
@@ -158,7 +160,7 @@
         * @param  aMessage, message to be forwarded.
         * @return None.
         */
-        void SendMessage( 
+        void SendMessage(
             const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage );
 
         /**
@@ -167,7 +169,7 @@
         * @param  aOutput, audio output path that is saved in member variable.
         * @return None.
         */
-        void SendMessage( const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage, 
+        void SendMessage( const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage,
                           const CTelephonyAudioRouting::TAudioOutput aOutput );
 
         /**
@@ -176,82 +178,87 @@
         * @param  aOutput, audio output path that is saved in member variable.
         * @return None.
         */
-        void SendMessage( const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage, 
+        void SendMessage( const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage,
                           CTelephonyAudioRouting& aTelephonyAudioRouting );
 
         /**
         * Sets value of audio routing preference
-        */        
+        */
         void SetRoutePreference( TBool aShowNote );
 
         /**
         * Return value of audio routing preference
         */
         CTelephonyAudioRouting::TAudioOutput RoutePreference();
-        
+
         /**
         * Return value of previous output
-        */        
+        */
         CTelephonyAudioRouting::TAudioOutput PreviousOutput();
-        
+
         /**
         * Return value of current output
-        */        
+        */
         CTelephonyAudioRouting::TAudioOutput Output();
- 
+
         /**
         * Return status of wired accessory availability
         */
         TBool IsWiredAvailable();
-        
+
         /**
         * Return status of BT accessory availability
-        */        
+        */
         TBool IsBTAvailable();
 
         /**
         * Return status of TTY accessory availability
-        */        
+        */
         TBool IsTTYAvailable();
-        
+
         /**
         * Set new audio route to TAR
         */
         void SetTAROutput( CTelephonyAudioRouting::TAudioOutput aOutput,
                            TBool aShowNote );
-     
+
+        /**
+         * From TMSEffectObserver
+         */
+    void EffectsEvent(const TMSEffect& tmseffect, TMSSignalEvent event);
 
     protected:
 
         /**
-        * By default Symbian 2nd phase constructor is private, but we use 
+        * By default Symbian 2nd phase constructor is private, but we use
         * it at generalized class.
         */
-        void ConstructL( CPEAudioFactory& aAudioFactory ); 
+        void ConstructL( CPEAudioFactory& aAudioFactory );
 
     protected:  // New functions
-        
+
         /**
-         * Protected function for derived classes to implement for
-         * extended volume handling. Default implementation is empty.
+         * Updates volume on DataStore and if aSendMsg==ETrue sends
+         * notification to engine monitor.
          * @since S60 v5.0
          * @param aVolume New volume value.
+         * @param aSendMsg ETrue will send notification.
          */
-        virtual void DoHandleVolumeChange( TInt aVolume );
-     
+        virtual void DoHandleVolumeChange( TInt aVolume, TBool aSendMsg=EFalse );
+
     private:
-    
+
         /**
-        * Gets all audio volume values from reporitory and update member variables
+        * Gets all audio volume value and update member variable
         */
-        void InitializeAudioVolumes();
-        
-                       
+        void InitializeAudioVolume();
+
+
         /**
         * Makes request to Telephony Audio Routing to get available audio outputs
         * @return list of available outputs
         */
-        TArray< TPEAudioOutput> GetAvailableOutputs( 
+        TArray< TPEAudioOutput> GetAvailableOutputs(
                 CTelephonyAudioRouting& aTelephonyAudioRouting );
 
         /**
@@ -261,15 +268,11 @@
 
         /**
         * Converts PE route value to TAR value
-        */        
+        */
         CTelephonyAudioRouting::TAudioOutput ConvertToTAR( TPEAudioOutput aOutput );
-        /**
-        * Return status of mic mute
-        */
-        TBool IsMuted() const;
 
     protected:
-        // CPhoneModel object which owns this object. 
+        // CPhoneModel object which owns this object.
         MPEPhoneModelInternal& iPhoneModel;
         // Audio Routing Monitor
         CPEAudioRoutingMonitor* iAudioRoutingMonitor;
@@ -281,19 +284,10 @@
         RArray<TPEAudioOutput> iPEavailableOutputs;
         //Flag to indicate whether is Call audio route initialized
         TBool iRouteInitialized;
-        #ifdef __WINSCW__
-        // dummy implementation for WINSCW
-        TInt  iVolume;
-        TBool iMute; 
-        #endif        
-        // HeadSet Mode Audio volume
-        TInt iHeadSetVolume;
-        // Loudspeaker Mode Audio volume
-        TInt iLoudspeakerVolume;
-        // ETrue when audio output changed 
-        TBool iAudioOutputChanged; 
+
+        CPEAudioEffect* iAudioEffect;
      };
 
-#endif      // CPEAUDIODATA_H  
-            
+#endif      // CPEAUDIODATA_H
+
 // End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/audiohandling/inc/cpeaudioeffect.h	Mon May 03 12:31:11 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: Audio Effects handler
+ *
+ */
+
+#ifndef CPEAUDIOEFFECT_H
+#define CPEAUDIOEFFECT_H
+
+#include <e32base.h>
+#include <tmseffectobsrvr.h>
+
+namespace TMS {
+//FORWARD DECLARATIONS
+class TMSFactory;
+} //namespace TMS
+
+using namespace TMS;
+
+/**
+ *  Starts and stops TMS audio streams.
+ *  If the activation fails then there is a retry timer which
+ *  will try the activation later.
+ */
+NONSHARABLE_CLASS(CPEAudioEffect) : public CBase
+    {
+public:
+
+    /**
+     * Two-phased constructing.
+     */
+    static CPEAudioEffect* NewL(TMSEffectObserver& aObserver);
+
+    /**
+     * Two-phased constructing.
+     */
+    static CPEAudioEffect* NewLC(TMSEffectObserver& aObserver);
+
+    /**
+     * C++ default destructor.
+     */
+    virtual ~CPEAudioEffect();
+
+    /**
+     * Set muted.
+     */
+    TInt SetMuteState(TBool aMute);
+    /**
+     * Get mute.
+     */
+    TBool MuteState() const;
+
+    /**
+     * Set volume.
+     */
+    void SetVolume(TInt aVolume);
+
+    /**
+     * Get volume.
+     */
+    TInt Volume() const;
+
+public:
+    // Functions from base classes
+
+private:
+
+    /**
+     * C++ default constructor.
+     */
+    CPEAudioEffect();
+
+    void ConstructL(TMSEffectObserver& aObserver);
+
+private:
+    // data
+    TMSFactory* iFactory;
+    TMSEffect* iGlobalVol;
+    TMSEffect* iGlobalGain;
+    };
+
+#endif // CPEAUDIOEFFECT_H
--- a/phoneengine/audiohandling/inc/cpegsmaudiodata.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/audiohandling/inc/cpegsmaudiodata.h	Mon May 03 12:31:11 2010 +0300
@@ -130,7 +130,7 @@
 
     protected:  // From CPEAudioData
         
-        void DoHandleVolumeChange( TInt aVolume );
+        void DoHandleVolumeChange( TInt aVolume, TBool aSendMsg=EFalse );
     
     private:
         /**
--- a/phoneengine/audiohandling/src/cpeaudiodata.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/audiohandling/src/cpeaudiodata.cpp	Mon May 03 12:31:11 2010 +0300
@@ -1,21 +1,20 @@
 /*
-* Copyright (c) 2002-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:  This module contains the implementation of AudioData class 
-*                member functions
-*
-*/
-
+ * Copyright (c) 2002-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 module contains the implementation of AudioData class
+ *              member functions
+ *
+ */
 
 // INCLUDE FILES
 #include "cpeaudiodata.h"
@@ -27,16 +26,20 @@
 #include <talogger.h>
 #include <telmicmutestatuspskeys.h>
 #include <PSVariables.h>
-
+#include <tms.h>
+#include <tmseffectobsrvr.h>
+#include <tmsglobalvoleffect.h>
 #include "pepanic.pan"
 #include "cpeaudiodtmftoneplayer.h"
 #include "cpeaudioroutingmonitor.h"
 #include "cpecallaudioroutinghandler.h"
-#include "cpeaudiofactory.h"    
+#include "cpeaudiofactory.h"
+#include "cpeaudioeffect.h"
+
 #include <telinternalpskeys.h>
+
 // CONSTANTS
 //Mute Value for volume
-const TInt KPEDefaultVolume = 4;
 const TInt KPEMaxVolume = 10;
 
 // ================= MEMBER FUNCTIONS =======================
@@ -47,12 +50,10 @@
 // might leave.
 // -----------------------------------------------------------------------------
 //
-CPEAudioData::CPEAudioData( 
-        MPEPhoneModelInternal& aPhoneModel
-        ) : iPhoneModel( aPhoneModel )
+CPEAudioData::CPEAudioData(MPEPhoneModelInternal& aPhoneModel) :
+    iPhoneModel(aPhoneModel)
     {
     iRouteInitialized = EFalse;
-    iAudioOutputChanged = EFalse; 
     }
 
 // -----------------------------------------------------------------------------
@@ -60,66 +61,47 @@
 // Symbian 2nd phase constructor can leave
 // -----------------------------------------------------------------------------
 //
-void CPEAudioData::ConstructL( CPEAudioFactory& aAudioFactory )
+void CPEAudioData::ConstructL(CPEAudioFactory& aAudioFactory)
     {
     TEFLOGSTRING( KTAOBJECT, "AUD CPEAudioData::ConstructL start" );
-    iAudioRoutingMonitor = CPEAudioRoutingMonitor::NewL( *this );
-    iAudioRouting = aAudioFactory.CreateTelephonyAudioRoutingL(*iAudioRoutingMonitor);
-    iAudioRoutingHandler = CPECallAudioRoutingHandler::NewL( *this );
- 
-    //Gets audio volumes from repository
-    InitializeAudioVolumes();
-    
-    RProperty::TType type( RProperty::EInt );
-    TSecurityPolicy readPolicy( ECapability_None );
-    TSecurityPolicy writePolicy( ECapabilityWriteDeviceData );
-        
-    RProperty::Define( KPSUidTelMicrophoneMuteStatus, 
-        KTelMicrophoneMuteState,
-        type,
-        readPolicy,
-        writePolicy );
-                
-    TEFLOGSTRING( KTAINT, "AUD CPEAudioData::ConstructL  complete" );               
+    iAudioRoutingMonitor = CPEAudioRoutingMonitor::NewL(*this);
+    iAudioRouting = aAudioFactory.CreateTelephonyAudioRoutingL(
+            *iAudioRoutingMonitor);
+    iAudioRoutingHandler = CPECallAudioRoutingHandler::NewL(*this);
+    iAudioEffect = CPEAudioEffect::NewL(*this);
+
+    InitializeAudioVolume();
+
+    TEFLOGSTRING( KTAINT, "AUD CPEAudioData::ConstructL  complete" );
     }
 
 // Destructor
 EXPORT_C CPEAudioData::~CPEAudioData()
     {
     TEFLOGSTRING( KTAOBJECT, "AUD CPEAudioData::~CPEAudioData" );
- 
+
     delete iAudioRouting;
     delete iAudioRoutingMonitor;
     delete iAudioRoutingHandler;
-    
+
     iPEavailableOutputs.Close();
 
+    delete iAudioEffect;
     }
 
 // -----------------------------------------------------------------------------
-// CPEAudioData::InitializeAudioVolumes
-// Gets audio volume values from reporitory
+// CPEAudioData::InitializeAudioVolume
+// Gets audio volume value
 // -----------------------------------------------------------------------------
-//   
-void CPEAudioData::InitializeAudioVolumes()
+//
+void CPEAudioData::InitializeAudioVolume()
     {
-// Connect to CPEGsmExternalDataHandler missing from TEPhoneEngineTestUtils wrapper !!!
-    TInt volume;
-   
-    iPhoneModel.DataStoreExt()->Get( 
-        EPEIncallLoudspeakerVolumeSetting, volume ); 
-    iLoudspeakerVolume = volume;
-    TEFLOGSTRING2( KTAINT, 
-        "AUD CPEAudioData::CPEAudioData, DataStoreExt()->Get, iLoudspeakerVolume = %d",
-         iLoudspeakerVolume );
-         
-    iPhoneModel.DataStoreExt()->Get( 
-        EPEIncallEarVolumeSetting, volume ); 
-    iHeadSetVolume = volume;
-    TEFLOGSTRING2( KTAINT, 
-        "AUD CPEAudioData::CPEAudioData, DataStoreExt()->Get, iLoudspeakerVolume = %d",
-         iHeadSetVolume );
+    TInt volume = iAudioEffect->Volume();
+    iPhoneModel.DataStore()->SetAudioVolume(volume);
 
+    TEFLOGSTRING2( KTAINT,
+            "AUD CPEAudioData::InitializeAudioVolumes, volume = %d",
+            volume );
     }
 
 // -----------------------------------------------------------------------------
@@ -128,19 +110,14 @@
 // (other items were commented in a header).
 // -----------------------------------------------------------------------------
 //
-EXPORT_C void CPEAudioData::GetAudioMuteSync(
-        TBool& aAudioMute ) const 
+EXPORT_C void CPEAudioData::GetAudioMuteSync(TBool& aAudioMute) const
     {
-    TEFLOGSTRING( KTAINT, "AUD CPEAudioData::GetAudioMuteSync" );     
-    if ( IsMuted() ) 
-        {
-        //mute is on
-        aAudioMute = ETrue;
-        }
-    else
-        {
-        aAudioMute = EFalse;
-        }
+    aAudioMute = iAudioEffect->MuteState();
+    TEFLOGSTRING2(
+            KTAREQIN,
+            "AUD CPEAudioData::GetAudioMuteSync: value = %d",
+            aAudioMute);
+
     }
 
 // -----------------------------------------------------------------------------
@@ -148,25 +125,10 @@
 // Creates synchronous request to get audio volume.
 // -----------------------------------------------------------------------------
 //
-EXPORT_C void CPEAudioData::GetAudioVolumeSync(
-        TInt& aAudioVolume ) const
+EXPORT_C void CPEAudioData::GetAudioVolumeSync(TInt& aAudioVolume) const
     {
     TEFLOGSTRING( KTAINT, "AUD CPEAudioData::GetAudioVolumeSync" );
-
-    if ( iPhoneModel.DataStore()->AudioOutput() == EPELoudspeaker )
-        {
-        iPhoneModel.DataStoreExt()->Get( 
-            EPEIncallLoudspeakerVolumeSetting, aAudioVolume );
-        TEFLOGSTRING( KTAINT, 
-            "AUD CPEAudioData::GetAudioVolumeSync: EPEIncallLoudspeakerVolumeSetting");
-        }
-    else 
-        {
-        iPhoneModel.DataStoreExt()->Get( 
-            EPEIncallEarVolumeSetting, aAudioVolume );
-        TEFLOGSTRING( KTAINT, 
-            "AUD CPEAudioData::GetAudioVolumeSync: EPEIncallEarVolumeSetting");            
-        }
+    aAudioVolume = iAudioEffect->Volume();
     }
 
 // -----------------------------------------------------------------------------
@@ -174,14 +136,13 @@
 // Saves errorcode to member variable and sends error notification to PhoneEngine.
 // -----------------------------------------------------------------------------
 //
-void CPEAudioData::SendErrorMessage( 
-        const TInt aErrorCode )
+void CPEAudioData::SendErrorMessage(const TInt aErrorCode)
     {
-    iPhoneModel.DataStore()->SetErrorCode( aErrorCode );
-    TEFLOGSTRING( 
-        KTAREQOUT, 
-        "AUD CPEAudioData::SendErrorMessage: iPhoneModel.SendMessage( MEngineMonitor::EPEMessageAudioHandlingError )" );
-    iPhoneModel.SendMessage( MEngineMonitor::EPEMessageAudioHandlingError );
+    iPhoneModel.DataStore()->SetErrorCode(aErrorCode);
+    TEFLOGSTRING(
+            KTAREQOUT,
+            "AUD CPEAudioData::SendErrorMessage: iPhoneModel.SendMessage( MEngineMonitor::EPEMessageAudioHandlingError )" );
+    iPhoneModel.SendMessage(MEngineMonitor::EPEMessageAudioHandlingError);
     }
 
 // -----------------------------------------------------------------------------
@@ -189,41 +150,22 @@
 // Forwards message to PhoneEngine.
 // -----------------------------------------------------------------------------
 //
-void CPEAudioData::SendMessage( 
-        const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage )
+void CPEAudioData::SendMessage(
+        const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage)
     {
-    TEFLOGSTRING2( KTAREQIN, 
-        "AUD CPEAudioData::SendMessage: aMessage = %d", aMessage );
-   
-   if ( aMessage == MEngineMonitor::EPEMessageAudioVolumeChanged )
-       {
+    TEFLOGSTRING2( KTAREQIN,
+            "AUD CPEAudioData::SendMessage: aMessage = %d", aMessage );
+
+    if (aMessage == MEngineMonitor::EPEMessageAudioVolumeChanged)
+        {
         // update volume
-        if ( iPhoneModel.DataStore()->AudioOutput() == EPELoudspeaker )
-            {
-            iLoudspeakerVolume = iPhoneModel.DataStore()->AudioVolume();
-            TEFLOGSTRING2( KTAINT, 
-                "AUD CPEAudioData::SendMessage: iLoudspeakerVolume = %d", 
-                iLoudspeakerVolume );
-            }
-        else 
-            {
-            iHeadSetVolume = iPhoneModel.DataStore()->AudioVolume();
-            TEFLOGSTRING2( KTAINT, 
-                "AUD CPEAudioData::SendMessage: iHeadSetVolume = %d", 
-                iHeadSetVolume );
-            }   
-            
-        if ( !iAudioOutputChanged )
-            {
-            // EPEMessageAudioVolumeChanged message must not be sent 
-            // while audio output change is being processed
-            iPhoneModel.SendMessage( aMessage );    
-            }
-       }
-    else 
-        {
-        iPhoneModel.SendMessage( aMessage );    
-        }        
+        TInt volume = iPhoneModel.DataStore()->AudioVolume();
+        TEFLOGSTRING2( KTAINT,
+                "AUD CPEAudioData::SendMessage: volume = %d",
+                volume );
+        }
+
+    iPhoneModel.SendMessage(aMessage);
     }
 
 // -----------------------------------------------------------------------------
@@ -231,75 +173,30 @@
 // Forwards message to PhoneEngine. Output mode is saved.
 // -----------------------------------------------------------------------------
 //
-void CPEAudioData::SendMessage( 
+void CPEAudioData::SendMessage(
         const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage,
-        const CTelephonyAudioRouting::TAudioOutput aOutput )
+        const CTelephonyAudioRouting::TAudioOutput aOutput)
     {
-    TEFLOGSTRING3( 
-         KTAREQIN, 
-        "AUD CPEAudioData::SendMessage: aMessage = %d, aOutput = %d", 
-        aMessage, aOutput );
-        
+    TEFLOGSTRING3(
+            KTAREQIN,
+            "AUD CPEAudioData::SendMessage: aMessage = %d, aOutput = %d",
+            aMessage, aOutput );
+
     // BT long key press requires manual re-route to handset or loudspeaker
-    if ( aOutput == CTelephonyAudioRouting::ENone &&
-         iAudioRouting->PreviousOutput() == CTelephonyAudioRouting::EBTAudioAccessory )
+    if (aOutput == CTelephonyAudioRouting::ENone
+            && iAudioRouting->PreviousOutput()
+                    == CTelephonyAudioRouting::EBTAudioAccessory)
         {
-        SetRoutePreference( ETrue );
+        SetRoutePreference(ETrue);
         }
     else
         {
-        // store the old audio path volume
-        if ( iPhoneModel.DataStore()->AudioOutput() == EPELoudspeaker )
-            {
-            iLoudspeakerVolume = iPhoneModel.DataStore()->AudioVolume();
-            TEFLOGSTRING2( KTAINT, 
-                "AUD CPEAudioData::SendMessage: iLoudspeakerVolume = %d", 
-                iLoudspeakerVolume );
-            }
-        else 
-            {
-            iHeadSetVolume = iPhoneModel.DataStore()->AudioVolume();
-            TEFLOGSTRING2( KTAINT, 
-                "AUD CPEAudioData::SendMessage: iHeadSetVolume = %d", 
-                iHeadSetVolume );
-            }
-        
         // update the audio values in engineinfo
         TBool status;
-        iAudioRouting->GetShowNote( status );
-        iPhoneModel.DataStore()->SetAudioOutput( ConvertToPE( aOutput ), ConvertToPE( PreviousOutput() ), status );
-
-        // Set audio output change flag 
-        iAudioOutputChanged = ( MEngineMonitor::EPEMessageAudioOutputChanged == aMessage );
-          
-        // restore the stored volume for the new path
-        if ( aOutput == CTelephonyAudioRouting::ELoudspeaker )
-            {
-            // restore the stored volume for the new path
-            SetAudioVolumeSync( iLoudspeakerVolume );
-            iPhoneModel.DataStore()->SetAudioVolume( iLoudspeakerVolume );   
-            TEFLOGSTRING2( KTAINT, 
-                "AUD CPEAudioData::SendMessage: DataStoreExt()->Set, iLoudspeakerVolume = %d", 
-                iLoudspeakerVolume );
-            iPhoneModel.DataStoreExt()->Set( EPEIncallLoudspeakerVolumeSetting,
-                iLoudspeakerVolume );
-            }
-        else 
-            {
-            // restore the stored volume for the new path
-            SetAudioVolumeSync( iHeadSetVolume );
-            iPhoneModel.DataStore()->SetAudioVolume( iHeadSetVolume );   
-            TEFLOGSTRING2( KTAINT, 
-                "AUD CPEAudioData::SendMessage: DataStoreExt()->Set, iHeadSetVolume  = %d", 
-                iHeadSetVolume );
-            iPhoneModel.DataStoreExt()->Set( EPEIncallEarVolumeSetting,
-                iHeadSetVolume );
-            }
-        
-        // Reset audio output change flag 
-        iAudioOutputChanged = EFalse;                                                
-                     
-        iPhoneModel.SendMessage( aMessage );
+        iAudioRouting->GetShowNote(status);
+        iPhoneModel.DataStore()->SetAudioOutput(ConvertToPE(aOutput),
+                ConvertToPE(PreviousOutput()), status);
+        iPhoneModel.SendMessage(aMessage);
         }
     }
 
@@ -307,24 +204,24 @@
 // CPEAudioData::SendMessage
 // Forwards message to PhoneEngine.
 // -----------------------------------------------------------------------------
-//   
-void CPEAudioData::SendMessage( 
-        const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage, 
-        CTelephonyAudioRouting& aTelephonyAudioRouting )
+//
+void CPEAudioData::SendMessage(
+        const MEngineMonitor::TPEMessagesFromPhoneEngine aMessage,
+        CTelephonyAudioRouting& aTelephonyAudioRouting)
     {
-    TEFLOGSTRING2( 
-         KTAREQIN, 
-        "AUD CPEAudioData::SendMessage: aMessage = %d, available outputs changed ", aMessage );
-    iPhoneModel.DataStore()->SetAvailableAudioOutputs( 
-        GetAvailableOutputs( aTelephonyAudioRouting ) );
-    
-    if ( iRouteInitialized &&
-         aMessage == MEngineMonitor::EPEMessageAvailableAudioOutputsChanged )
+    TEFLOGSTRING2(
+            KTAREQIN,
+            "AUD CPEAudioData::SendMessage: aMessage = %d, available outputs changed ", aMessage );
+    iPhoneModel.DataStore()->SetAvailableAudioOutputs(GetAvailableOutputs(
+            aTelephonyAudioRouting));
+
+    if (iRouteInitialized && aMessage
+            == MEngineMonitor::EPEMessageAvailableAudioOutputsChanged)
         {
         iAudioRoutingHandler->HandleAudioRoutingAvailableChanged();
         }
- 
-    iPhoneModel.SendMessage( aMessage );
+
+    iPhoneModel.SendMessage(aMessage);
     }
 
 // -----------------------------------------------------------------------------
@@ -333,37 +230,29 @@
 // EPEMessageAudioMuteChanged message is sent when gain is changed
 // -----------------------------------------------------------------------------
 //
-EXPORT_C void CPEAudioData::SetAudioMuteSync( 
-        const TBool aAudioMute ) // Mute value to be set
+EXPORT_C void CPEAudioData::SetAudioMuteSync(const TBool aAudioMute) // Mute value to be set
     {
     TEFLOGSTRING( KTAINT, "AUD CPEAudioData::SetAudioMuteSync" );
-    
-    if ( aAudioMute )
+
+    if (aAudioMute)
         {
-        iPhoneModel.DataStore()->SetAudioMute( aAudioMute );
-        SendMessage( MEngineMonitor::EPEMessageAudioMuteChanged );
-        // Inform VoIP/PE Videocallmanager mute state. Error code not handled.
-        TInt err = RProperty::Set( 
-            KPSUidTelMicrophoneMuteStatus, 
-            KTelMicrophoneMuteState,
-            EPSTelMicMuteOn );
-            TEFLOGSTRING2( 
-                KTAREQOUT, 
-                "AUD CPEAudioData::SetAudioMuteSync: EPSTelephonyMicMuteOn , error = %d", 
-                err );            
+        iPhoneModel.DataStore()->SetAudioMute(aAudioMute);
+        SendMessage(MEngineMonitor::EPEMessageAudioMuteChanged);
+        TInt err = iAudioEffect->SetMuteState(ETrue);
+        TEFLOGSTRING2(
+                KTAREQOUT,
+                "AUD CPEAudioData::SetAudioMuteSync: error = %d",
+                err );
         }
     else
         {
-        iPhoneModel.DataStore()->SetAudioMute( aAudioMute );
-        SendMessage( MEngineMonitor::EPEMessageAudioMuteChanged );
-        TInt err = RProperty::Set( 
-            KPSUidTelMicrophoneMuteStatus, 
-            KTelMicrophoneMuteState,
-            EPSTelMicMuteOff );
-        TEFLOGSTRING2( 
-            KTAREQOUT, 
-            "AUD CPEAudioData::SetAudioMuteSync: EPSTelephonyMicMuteOff, error = %d", 
-            err );                
+        iPhoneModel.DataStore()->SetAudioMute(aAudioMute);
+        SendMessage(MEngineMonitor::EPEMessageAudioMuteChanged);
+        TInt err = iAudioEffect->SetMuteState(EFalse);
+        TEFLOGSTRING2(
+                KTAREQOUT,
+                "AUD CPEAudioData::SetAudioMuteSync: error = %d",
+                err );
         }
     }
 
@@ -372,43 +261,22 @@
 // Creates synchronous request to set audio volume.
 // -----------------------------------------------------------------------------
 //
-EXPORT_C void CPEAudioData::SetAudioVolumeSync( 
-        const TInt aAudioVolume ) // Volume to be set
+EXPORT_C void CPEAudioData::SetAudioVolumeSync(const TInt aAudioVolume) // Volume to be set
     {
-    TEFLOGSTRING2( 
-        KTAREQIN, 
-        "AUD CPEAudioData::SetAudioVolumeSync, aAudioVolume = %d", 
-        aAudioVolume );
- 
-    if ( aAudioVolume <= KPEMaxVolume ) 
-        {
-        TEFLOGSTRING2( KTAINT, 
+    TEFLOGSTRING2(
+            KTAREQIN,
             "AUD CPEAudioData::SetAudioVolumeSync, aAudioVolume = %d",
             aAudioVolume );
-        
-        if ( iPhoneModel.DataStore()->AudioOutput() == EPELoudspeaker )
-            {
-            iPhoneModel.DataStoreExt()->Set( 
-                EPEIncallLoudspeakerVolumeSetting, 
+
+    if (aAudioVolume <= KPEMaxVolume)
+        {
+        TEFLOGSTRING2( KTAINT,
+                "AUD CPEAudioData::SetAudioVolumeSync, aAudioVolume = %d",
                 aAudioVolume );
-            TEFLOGSTRING( KTAINT, 
-                "AUD CPEAudioData::SetAudioVolumeSync: EPEIncallLoudspeakerVolumeSetting");
-            }
-        else 
-            {
-            iPhoneModel.DataStoreExt()->Set( 
-                EPEIncallEarVolumeSetting, 
-                aAudioVolume );
-            TEFLOGSTRING( KTAINT, 
-                "AUD CPEAudioData::SetAudioVolumeSync: EPEIncallEarVolumeSetting");
-            }
-        }            
- 
-    iPhoneModel.DataStore()->SetAudioVolume( aAudioVolume );
 
-    DoHandleVolumeChange( aAudioVolume );
-
-    SendMessage( MEngineMonitor::EPEMessageAudioVolumeChanged );
+        iAudioEffect->SetVolume(aAudioVolume);
+        }
+    DoHandleVolumeChange(aAudioVolume, ETrue);
     }
 
 // -----------------------------------------------------------------------------
@@ -416,97 +284,95 @@
 // Makes request to Telephony Audio Routing to set audio output path
 // -----------------------------------------------------------------------------
 //
-EXPORT_C TInt CPEAudioData::SetAudioOutput( 
-        const TPEAudioOutput aOutput,
-        TBool aShowNote )
+EXPORT_C TInt CPEAudioData::SetAudioOutput(const TPEAudioOutput aOutput,
+        TBool aShowNote)
     {
-    TEFLOGSTRING2( 
-        KTAREQIN, 
-        "AUD CPEAudioData::SetAudioOutput: aOutput = %d", 
-        aOutput );
-        
-    TInt error( KErrNone );
-    
-    TEFLOGSTRING2( KTAERROR, 
-        "AUD CPEAudioData::SetAudioOutput: iRouteInitialized (%d)"
-        , iRouteInitialized );
+    TEFLOGSTRING2(
+            KTAREQIN,
+            "AUD CPEAudioData::SetAudioOutput: aOutput = %d",
+            aOutput );
+
+    TInt error(KErrNone);
 
-    if ( iRouteInitialized  && iPhoneModel.DataStore()->AudioOutputAvailable( aOutput ) )
+    TEFLOGSTRING2( KTAERROR,
+            "AUD CPEAudioData::SetAudioOutput: iRouteInitialized (%d)"
+            , iRouteInitialized );
+
+    if (iRouteInitialized && iPhoneModel.DataStore()->AudioOutputAvailable(
+            aOutput))
         {
-        SetTAROutput( ConvertToTAR( aOutput), aShowNote  );
+        SetTAROutput(ConvertToTAR(aOutput), aShowNote);
         }
     else
         {
-        if ( aOutput == EPEHandset )
+        if (aOutput == EPEHandset)
             {
-            iAudioRoutingHandler->SetAnswerToHandset( ETrue );
+            iAudioRoutingHandler->SetAnswerToHandset(ETrue);
             }
         else
             {
             TEFLOGSTRING2( KTAERROR,
-                 "AUD CPEAudioData::SetAudioOutput: Requested audio path not available (%d)"
-                 , aOutput );
-            error = KErrArgument;            
+                    "AUD CPEAudioData::SetAudioOutput: Requested audio path not available (%d)"
+                    , aOutput );
+            error = KErrArgument;
             }
         }
- 
+
     return error;
     }
 
-
 // -----------------------------------------------------------------------------
 // CPEAudioData::SetTAROutput
 // -----------------------------------------------------------------------------
 //
-void CPEAudioData::SetTAROutput( 
-    CTelephonyAudioRouting::TAudioOutput aOutput,
-    TBool aShowNote ) 
+void CPEAudioData::SetTAROutput(CTelephonyAudioRouting::TAudioOutput aOutput,
+        TBool aShowNote)
     {
-    TEFLOGSTRING2( 
-        KTAREQIN, 
-        "AUD CPEAudioData::SetTAROutput: aOutput = %d", 
-        aOutput );
+    TEFLOGSTRING2(
+            KTAREQIN,
+            "AUD CPEAudioData::SetTAROutput: aOutput = %d",
+            aOutput );
 
 #if defined(__WINSCW__ ) && !defined(UNIT_TESTING)
-    iAudioRouting->SetShowNote( aShowNote );
-    SendMessage( MEngineMonitor::EPEMessageAudioOutputChanged, aOutput);
-#else       
-    CTelephonyAudioRouting::TAudioOutput output = iAudioRouting->Output();      
-     
-    if ( output == aOutput ) 
+    iAudioRouting->SetShowNote(aShowNote);
+    SendMessage(MEngineMonitor::EPEMessageAudioOutputChanged, aOutput);
+#else
+    CTelephonyAudioRouting::TAudioOutput output = iAudioRouting->Output();
+
+    if ( output == aOutput )
         {
         // audio routing cannot changed
-        TEFLOGSTRING2( KTAERROR, 
-            "AUD CPEAudioData::SetTAROutput: audio path already (%d)"
-            , aOutput );
+        TEFLOGSTRING2( KTAERROR,
+                "AUD CPEAudioData::SetTAROutput: audio path already (%d)"
+                , aOutput );
         return;
         }
-    iAudioRouting->SetShowNote( aShowNote );            
+    iAudioRouting->SetShowNote( aShowNote );
     TRAPD( err, iAudioRouting->SetOutputL( aOutput ) );
-    
+
     if( err )
         {
-        TEFLOGSTRING2( KTAERROR, 
-            "AUD CPEAudioData::SetTAROutput:Leave.1 (%d)", err );
+        TEFLOGSTRING2( KTAERROR,
+                "AUD CPEAudioData::SetTAROutput:Leave.1 (%d)", err );
         switch ( aOutput )
             {
             case CTelephonyAudioRouting::ELoudspeaker:
-            case CTelephonyAudioRouting::EWiredAudioAccessory:              
+            case CTelephonyAudioRouting::EWiredAudioAccessory:
             case CTelephonyAudioRouting::EBTAudioAccessory:
                 // if leave try handset
                 TRAPD( err2, iAudioRouting->SetOutputL( CTelephonyAudioRouting::EHandset ) );
                 if( err2 )
                     {
-                    TEFLOGSTRING2( KTAERROR, 
-                        "AUD CPEAudioData::SetTAROutput:Leave.2 (%d)", err );
-                    }               
+                    TEFLOGSTRING2( KTAERROR,
+                            "AUD CPEAudioData::SetTAROutput:Leave.2 (%d)", err );
+                    }
                 break;
             default:
                 // None
-                break;     
+                break;
             }
         }
-#endif        
+#endif
     }
 
 // -----------------------------------------------------------------------------
@@ -519,8 +385,11 @@
     {
     TEFLOGSTRING( KTAREQIN, "AUD CPEAudioData::StartUp" );
     // get available audio output paths and current audio output
-    iPhoneModel.DataStore()->SetAvailableAudioOutputs( GetAvailableOutputs( *iAudioRouting ) );
-    iPhoneModel.DataStore()->SetAudioOutput( ConvertToPE( iAudioRouting->Output() ), ConvertToPE( iAudioRouting->PreviousOutput() ), EFalse );    
+    iPhoneModel.DataStore()->SetAvailableAudioOutputs(GetAvailableOutputs(
+            *iAudioRouting));
+    iPhoneModel.DataStore()->SetAudioOutput(ConvertToPE(
+            iAudioRouting->Output()), ConvertToPE(
+            iAudioRouting->PreviousOutput()), EFalse);
     }
 
 // -----------------------------------------------------------------------------
@@ -529,125 +398,98 @@
 // Return list of available outputs
 // -----------------------------------------------------------------------------
 //
-TArray<TPEAudioOutput> CPEAudioData::GetAvailableOutputs( 
-        CTelephonyAudioRouting& aTelephonyAudioRouting )
+TArray<TPEAudioOutput> CPEAudioData::GetAvailableOutputs(
+        CTelephonyAudioRouting& aTelephonyAudioRouting)
     {
-    TEFLOGSTRING( KTAREQOUT, 
-        "AUD CPEAudioData::GetAvailableOutputs > CTelephonyAudioRouting::AvailableOutputs()" );
-    TArray<CTelephonyAudioRouting::TAudioOutput> availableOutputs = 
-        aTelephonyAudioRouting.AvailableOutputs();
-    
+    TEFLOGSTRING( KTAREQOUT,
+            "AUD CPEAudioData::GetAvailableOutputs > CTelephonyAudioRouting::AvailableOutputs()" );
+    TArray<CTelephonyAudioRouting::TAudioOutput> availableOutputs =
+            aTelephonyAudioRouting.AvailableOutputs();
+
     iPEavailableOutputs.Reset();
 
-    for ( TInt j = 0; j < availableOutputs.Count(); j++ )
+    for (TInt j = 0; j < availableOutputs.Count(); j++)
         {
-        iPEavailableOutputs.Append( ConvertToPE( availableOutputs[j] ) );
-        TEFLOGSTRING3( KTAINT, 
-            "AUD CPEAudioData::GetAvailableOutputs, index: %d, available: %d", 
-            j, 
-            availableOutputs[j] );
-        }     
- 
-    return iPEavailableOutputs.Array();  
+        iPEavailableOutputs.Append(ConvertToPE(availableOutputs[j]));
+        TEFLOGSTRING3( KTAINT,
+                "AUD CPEAudioData::GetAvailableOutputs, index: %d, available: %d",
+                j,
+                availableOutputs[j] );
+        }
+
+    return iPEavailableOutputs.Array();
     }
- 
+
 // -----------------------------------------------------------------------------
-// CPEAudioData::SetDefaultVolume
+// CPEAudioData::HandleCallStarting
 // -----------------------------------------------------------------------------
 //
-EXPORT_C void CPEAudioData::SetDefaultVolume()
+EXPORT_C TInt CPEAudioData::HandleCallStarting(TBool aVideoCall)
     {
-    TEFLOGSTRING( KTAREQIN, "AUD CPEAudioData::SetDefaultVolume" );
-    if ( !iLoudspeakerVolume )
-        {
-        TEFLOGSTRING( KTAREQIN, "AUD CPEAudioData->SetDefaultLoudspeakerVolume" );
-        iLoudspeakerVolume = KPEDefaultVolume;
-        iPhoneModel.DataStore()->SetAudioVolume( iLoudspeakerVolume );
-        iPhoneModel.DataStoreExt()->Set( EPEIncallLoudspeakerVolumeSetting,
-                iLoudspeakerVolume );
-        }
-    if ( !iHeadSetVolume )
-        {
-        TEFLOGSTRING( KTAREQIN, "AUD CPEAudioData->SetDefaultHeadSetVolume" );
-        iHeadSetVolume = KPEDefaultVolume;
-        iPhoneModel.DataStore()->SetAudioVolume( iHeadSetVolume );
-        iPhoneModel.DataStoreExt()->Set( EPEIncallEarVolumeSetting, 
-                iHeadSetVolume );            
+    TEFLOGSTRING( KTAMESINT, "AUD CPEAudioData::HandleCallStarting()" );
+    TInt ret(KErrNone);
+
+    if (!iRouteInitialized) // if route not already initialized
+        { // Not new route init for multi calls
+        iRouteInitialized = ETrue;
+        ret = iAudioRoutingHandler->HandleAudioRoutingCallInit(aVideoCall);
         }
 
-    DoHandleVolumeChange( KPEDefaultVolume );
-    }    
-  
-// -----------------------------------------------------------------------------
-// CPEAudioData::HandleCallStarting  
-// -----------------------------------------------------------------------------
-//    
-EXPORT_C TInt CPEAudioData::HandleCallStarting( TBool aVideoCall )
-    {
-    TEFLOGSTRING( KTAMESINT, "AUD CPEAudioData::HandleCallStarting()" );
-    TInt ret( KErrNone );
-    
-    if ( !iRouteInitialized )  // if route not already initialized
-        {                      // Not new route init for multi calls
-        iRouteInitialized = ETrue;
-        ret  = iAudioRoutingHandler->HandleAudioRoutingCallInit( aVideoCall );
-        }
-    
-    return ret;        
+    return ret;
     }
 
 // -----------------------------------------------------------------------------
 // CPEAudioData::HandleEnergencyCallStarting
 // Can be called, if new call is created before previous call is idle state
-// One used situation is that emergency call is dialed during the video call or 
+// One used situation is that emergency call is dialed during the video call or
 // voice call. Audio routing have to initialized when emergency is dialing state
 // even previous call(voice or video) haven't got idle yet.
 // -----------------------------------------------------------------------------
-//    
+//
 EXPORT_C TInt CPEAudioData::HandleEnergencyCallStarting()
     {
     TEFLOGSTRING( KTAMESINT, "AUD CPEAudioData::HandleCallSwitching()" );
-    TInt ret( KErrNone );
-    
+    TInt ret(KErrNone);
+
     // Always new route init
-    ret = iAudioRoutingHandler->HandleAudioRoutingCallInit( EFalse );
+    ret = iAudioRoutingHandler->HandleAudioRoutingCallInit(EFalse);
     iRouteInitialized = ETrue;
-  
-    return ret;        
+
+    return ret;
     }
 
 // -----------------------------------------------------------------------------
 // CPEAudioData::HandleCallEnding()
 // -----------------------------------------------------------------------------
-//    
+//
 EXPORT_C void CPEAudioData::HandleCallEnding()
     {
     TEFLOGSTRING( KTAMESINT, "AUD CPEAudioData::HandleCallEnding()" );
-    
-    if ( iRouteInitialized )
+
+    if (iRouteInitialized)
         {
         iRouteInitialized = EFalse;
-        TEFLOGSTRING( KTAMESINT, 
-            "AUD CPEAudioData::HandleCallEnding() > CTelephonyAudioRouting::ENotActive" );
-        SetTAROutput( CTelephonyAudioRouting::ENotActive, EFalse  );        
+        TEFLOGSTRING( KTAMESINT,
+                "AUD CPEAudioData::HandleCallEnding() > CTelephonyAudioRouting::ENotActive" );
+        SetTAROutput(CTelephonyAudioRouting::ENotActive, EFalse);
         }
     }
-     
+
 // -----------------------------------------------------------------------------
 // CPEAudioData::CallAudioRoutePreferenceChanged()
-//  
+//
 // -----------------------------------------------------------------------------
-//    
+//
 EXPORT_C TInt CPEAudioData::CallAudioRoutePreferenceChanged()
     {
     TEFLOGSTRING( KTAMESINT, "AUD CPEAudioData::CallAudioRoutePreferenceChanged()" );
-    if ( iRouteInitialized )
+    if (iRouteInitialized)
         {
-        return iAudioRoutingHandler->HandleAudioRoutePreferenceChanged();         
+        return iAudioRoutingHandler->HandleAudioRoutePreferenceChanged();
         }
     return KErrNotReady;
-    }    
-        
+    }
+
 // -----------------------------------------------------------------------------
 // CPEAudioData::PreviousOutput
 // -----------------------------------------------------------------------------
@@ -656,7 +498,7 @@
     {
     return iAudioRouting->PreviousOutput();
     }
-        
+
 // -----------------------------------------------------------------------------
 // CPEAudioData::Output
 // -----------------------------------------------------------------------------
@@ -665,62 +507,64 @@
     {
     return iAudioRouting->Output();
     }
- 
+
 // -----------------------------------------------------------------------------
 // CPEAudioData::SetRoutePreference
 // -----------------------------------------------------------------------------
-//    
-void CPEAudioData::SetRoutePreference( TBool aShowNote )
+//
+void CPEAudioData::SetRoutePreference(TBool aShowNote)
     {
     TEFLOGSTRING( KTAMESINT, "AUD CPEAudioData::SetRoutePreference()" );
-    CTelephonyAudioRouting::TAudioOutput output = CTelephonyAudioRouting::EHandset;
-     
-    const TInt outputPreference = iPhoneModel.DataStore()->AudioOutputPreference();
-    if ( outputPreference == EPSAudioPublic )
+    CTelephonyAudioRouting::TAudioOutput output =
+            CTelephonyAudioRouting::EHandset;
+
+    const TInt outputPreference =
+            iPhoneModel.DataStore()->AudioOutputPreference();
+    if (outputPreference == EPSAudioPublic)
         {
         output = CTelephonyAudioRouting::ELoudspeaker;
         }
     TInt error;
-    iAudioRouting->SetShowNote( aShowNote );
+    iAudioRouting->SetShowNote(aShowNote);
     TRAP( error, iAudioRouting->SetOutputL( output ) );
     TEFLOGSTRING2( KTAMESINT, "AUD CPEAudioData::SetRoutePreference() err %d", error );
-    }    
-    
+    }
+
 // -----------------------------------------------------------------------------
 // CPEAudioData::RoutePreference
 // -----------------------------------------------------------------------------
-//    
+//
 CTelephonyAudioRouting::TAudioOutput CPEAudioData::RoutePreference()
     {
-    CTelephonyAudioRouting::TAudioOutput output = CTelephonyAudioRouting::EHandset;
-     
-    const TInt outputPreference = iPhoneModel.DataStore()->AudioOutputPreference();
-    if ( outputPreference == EPSAudioPublic )
+    CTelephonyAudioRouting::TAudioOutput output =
+            CTelephonyAudioRouting::EHandset;
+
+    const TInt outputPreference =
+            iPhoneModel.DataStore()->AudioOutputPreference();
+    if (outputPreference == EPSAudioPublic)
         {
         output = CTelephonyAudioRouting::ELoudspeaker;
         }
     TEFLOGSTRING2( KTAMESINT, "AUD CPEAudioData::RoutePreference() output %d", output );
     return output;
-    }    
+    }
 // -----------------------------------------------------------------------------
 // CPEAudioData::IsWiredAvailable
 // -----------------------------------------------------------------------------
 //
 TBool CPEAudioData::IsWiredAvailable()
     {
-    return iPhoneModel.DataStore()->AudioOutputAvailable( 
-         EPEWiredAudioAccessory );
+    return iPhoneModel.DataStore()->AudioOutputAvailable(
+            EPEWiredAudioAccessory);
     }
 
-    
 // -----------------------------------------------------------------------------
 // CPEAudioData::IsBTAvailable
 // -----------------------------------------------------------------------------
 //
 TBool CPEAudioData::IsBTAvailable()
     {
-    return iPhoneModel.DataStore()->AudioOutputAvailable( 
-         EPEBTAudioAccessory );
+    return iPhoneModel.DataStore()->AudioOutputAvailable(EPEBTAudioAccessory);
     }
 
 // -----------------------------------------------------------------------------
@@ -729,39 +573,20 @@
 //
 TBool CPEAudioData::IsTTYAvailable()
     {
-    return iPhoneModel.DataStore()->AudioOutputAvailable( 
-         EPETTY );
+    return iPhoneModel.DataStore()->AudioOutputAvailable(EPETTY);
     }
- // -----------------------------------------------------------------------------
-// CPEAudioData::IsMuted
-// -----------------------------------------------------------------------------
-//
-TBool CPEAudioData::IsMuted() const
-    {
-    TInt value;
-    TInt err = RProperty::Get( 
-        KPSUidTelMicrophoneMuteStatus, 
-        KTelMicrophoneMuteState,
-        value );
- 
-    TEFLOGSTRING3( 
-         KTAREQIN, 
-        "AUD CPEAudioData::IsMuted: value = %d, error = %d", 
-        value, err );        
-    return ( value == EPSTelMicMuteOn ) ? ETrue : EFalse;
-    }   
-   
 
 // -----------------------------------------------------------------------------
 // CPEAudioData::ConvertToPE
 // -----------------------------------------------------------------------------
 //
-TPEAudioOutput CPEAudioData::ConvertToPE( CTelephonyAudioRouting::TAudioOutput aOutput )
+TPEAudioOutput CPEAudioData::ConvertToPE(
+        CTelephonyAudioRouting::TAudioOutput aOutput)
     {
     TEFLOGSTRING2( KTAMESINT, "AUD CPEAudioData::ConvertToPE, aOutput %d", aOutput );
-    TPEAudioOutput newOutput( EPENotActive );
-    
-    switch( aOutput )
+    TPEAudioOutput newOutput(EPENotActive);
+
+    switch (aOutput)
         {
         case CTelephonyAudioRouting::ENotActive:
             newOutput = EPENotActive;
@@ -782,9 +607,9 @@
             newOutput = EPETTY;
             break;
         default:
-            break;    
+            break;
         }
-    
+
     return newOutput;
     }
 
@@ -792,13 +617,15 @@
 // CPEAudioData::ConvertToTAR
 // -----------------------------------------------------------------------------
 //
-CTelephonyAudioRouting::TAudioOutput CPEAudioData::ConvertToTAR( TPEAudioOutput aOutput )
+CTelephonyAudioRouting::TAudioOutput CPEAudioData::ConvertToTAR(
+        TPEAudioOutput aOutput)
     {
     TEFLOGSTRING2( KTAMESINT, "AUD CPEAudioData::ConvertToTAR, aOutput %d", aOutput );
-    
-    CTelephonyAudioRouting::TAudioOutput newOutput ( CTelephonyAudioRouting::ENotActive );
-    
-    switch( aOutput )
+
+    CTelephonyAudioRouting::TAudioOutput newOutput(
+            CTelephonyAudioRouting::ENotActive);
+
+    switch (aOutput)
         {
         case EPENotActive:
             newOutput = CTelephonyAudioRouting::ENotActive;
@@ -819,7 +646,7 @@
             newOutput = CTelephonyAudioRouting::ETTY;
             break;
         default:
-            break;    
+            break;
         }
     return newOutput;
     }
@@ -828,9 +655,43 @@
 // CPEAudioData::DoHandleVolumeChange
 // -----------------------------------------------------------------------------
 //
-void CPEAudioData::DoHandleVolumeChange( TInt /*aVolume*/ )
+void CPEAudioData::DoHandleVolumeChange(TInt aVolume, TBool aSendMsg)
     {
-    
+    iPhoneModel.DataStore()->SetAudioVolume(aVolume);
+
+    if (aSendMsg)
+        {
+        SendMessage(MEngineMonitor::EPEMessageAudioVolumeChanged);
+        }
     }
 
-// End of File 
+// -----------------------------------------------------------------------------
+// CPEAudioData::EffectsEvent
+// -----------------------------------------------------------------------------
+//
+void CPEAudioData::EffectsEvent(const TMSEffect& tmseffect,
+        TMSSignalEvent event)
+    {
+    TMSEffectType effecttype;
+    const_cast<TMSEffect&>(tmseffect).GetType(effecttype);
+
+    if (effecttype == TMS_EFFECT_GLOBAL_VOL &&
+            event.type == TMS_EVENT_EFFECT_VOL_CHANGED)
+        {
+        TMSVolumeEventChangeData* vd;
+        vd = static_cast<TMSVolumeEventChangeData*>(event.event_data);
+
+        // If volume change event has been triggered by routing change, we
+        // do not want to send EPEMessageAudioVolumeChanged message.
+        if (!vd->output_changed)
+            {
+            DoHandleVolumeChange(iAudioEffect->Volume(), ETrue);
+            }
+        else
+            {
+            DoHandleVolumeChange(iAudioEffect->Volume(), EFalse);
+            }
+        }
+    }
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/audiohandling/src/cpeaudioeffect.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,153 @@
+/*
+ * 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:  TMS AudioEffect.
+ *
+ */
+
+#include <glib.h>
+#include <tms.h>
+#include <tmsfactory.h>
+#include <tmsglobalvoleffect.h>
+#include <tmsglobalgaineffect.h>
+#include "cpeaudioeffect.h"
+#include "pepanic.pan"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Static constructor
+// ---------------------------------------------------------------------------
+//
+CPEAudioEffect* CPEAudioEffect::NewL(TMSEffectObserver& aObserver)
+    {
+    CPEAudioEffect* self = CPEAudioEffect::NewLC(aObserver);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Static constructor
+// ---------------------------------------------------------------------------
+//
+CPEAudioEffect* CPEAudioEffect::NewLC(TMSEffectObserver& aObserver)
+    {
+    CPEAudioEffect* self = new (ELeave) CPEAudioEffect();
+    CleanupStack::PushL(self);
+    self->ConstructL(aObserver);
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CPEAudioEffect::CPEAudioEffect
+// ---------------------------------------------------------------------------
+//
+CPEAudioEffect::CPEAudioEffect()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor
+// ---------------------------------------------------------------------------
+//
+void CPEAudioEffect::ConstructL(TMSEffectObserver& aObserver)
+    {
+    TMSVer* v = NULL;
+    TInt err(KErrNotFound);
+    TMSFactory::CreateFactory(iFactory, *v);
+    if (iFactory)
+        {
+        err = iFactory->CreateEffect(TMS_EFFECT_GLOBAL_GAIN, iGlobalGain);
+        err |= iFactory->CreateEffect(TMS_EFFECT_GLOBAL_VOL, iGlobalVol);
+        }
+    if (err)
+        {
+        User::Leave(KErrNotFound);
+        }
+    err = static_cast<TMSGlobalVolEffect*>(iGlobalVol)->AddObserver(aObserver,
+            NULL);
+    User::LeaveIfError(err);
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CPEAudioEffect::~CPEAudioEffect()
+    {
+    iFactory->DeleteEffect(iGlobalGain);
+    iFactory->DeleteEffect(iGlobalVol);
+    delete iFactory;
+    }
+
+// ---------------------------------------------------------------------------
+// CPEAudioEffect::SetMuteState(TBool aMute)
+// ---------------------------------------------------------------------------
+//
+TInt CPEAudioEffect::SetMuteState(TBool aMute)
+    {
+    __ASSERT_DEBUG(iGlobalGain, Panic(EPEPanicBadHandle));
+    guint value(0);
+    TInt err(KErrNotFound);
+    if (aMute)
+        {
+        err = static_cast<TMSGlobalGainEffect*>(iGlobalGain)->SetLevel(0);
+        }
+    else
+        {
+        err = static_cast<TMSGlobalGainEffect*>(iGlobalGain)->GetMaxLevel(
+                value);
+        if (err == TMS_RESULT_SUCCESS)
+            {
+            err = static_cast<TMSGlobalGainEffect*>(iGlobalGain)->SetLevel(
+                    value);
+            }
+        }
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CPEAudioEffect::SetUnmuted
+// ---------------------------------------------------------------------------
+//
+TBool CPEAudioEffect::MuteState() const
+    {
+    __ASSERT_DEBUG(iGlobalGain, Panic(EPEPanicBadHandle));
+    guint value;
+    static_cast<TMSGlobalGainEffect*>(iGlobalGain)->GetLevel(value);
+    return (value == 0) ? ETrue : EFalse;
+    }
+
+// ---------------------------------------------------------------------------
+// CPEAudioEffect::SetVolume
+// ---------------------------------------------------------------------------
+//
+void CPEAudioEffect::SetVolume(TInt aVolume)
+    {
+    __ASSERT_DEBUG(iGlobalVol, Panic(EPEPanicBadHandle));
+    static_cast<TMSGlobalVolEffect*>(iGlobalVol)->SetLevel(aVolume);
+    }
+
+// ---------------------------------------------------------------------------
+// CPEAudioEffect::Volume
+// ---------------------------------------------------------------------------
+//
+TInt CPEAudioEffect::Volume() const
+    {
+    __ASSERT_DEBUG(iGlobalVol, Panic(EPEPanicBadHandle));
+    guint value(0);
+    static_cast<TMSGlobalVolEffect*>(iGlobalVol)->GetLevel(value);
+    return value;
+    }
+
+//  End of File
--- a/phoneengine/audiohandling/src/cpegsmaudiodata.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/audiohandling/src/cpegsmaudiodata.cpp	Mon May 03 12:31:11 2010 +0300
@@ -83,6 +83,9 @@
     
     iInbandTonePlayer = 
         CPEAudioInbandTonePlayer::NewL( *this, iFsSession, aAudioFactory );
+    TInt volume = iPhoneModel.DataStore()->AudioVolume(); 
+    iInbandTonePlayer->SetVolume( volume );
+    
     iDtmfTonePlayer = CPEAudioDtmfTonePlayer::NewL();
     }
 
@@ -295,10 +298,11 @@
 // CPEGsmAudioData::DoHandleVolumeChange
 // -----------------------------------------------------------------------------
 //
-void CPEGsmAudioData::DoHandleVolumeChange( TInt aVolume )
+void CPEGsmAudioData::DoHandleVolumeChange( TInt aVolume, TBool aSendMsg)
 
     {
     iInbandTonePlayer->SetVolume( aVolume );
+    CPEAudioData::DoHandleVolumeChange(aVolume , aSendMsg);
     }
 
 // ================= OTHER EXPORTED FUNCTIONS ===============================
--- a/phoneengine/contacthandling2/src/cpecontactmatch.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/contacthandling2/src/cpecontactmatch.cpp	Mon May 03 12:31:11 2010 +0300
@@ -367,11 +367,6 @@
 
     iDataStore.SetRemoteTextToSpeechText( aMatch.TextToSpeechTextL(), aCallId );
 
-    if ( aMatch.Number().Length() > 0 )
-        {
-        iDataStore.SetRemotePhoneNumber( aMatch.Number(), aCallId );    
-        }   
-
     TInt phcntfinderNumberType = aMatch.NumberType();
             
     switch ( phcntfinderNumberType )
--- a/phoneengine/contacthandling2/tsrc/run_auto_tests.bat	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/contacthandling2/tsrc/run_auto_tests.bat	Mon May 03 12:31:11 2010 +0300
@@ -56,7 +56,7 @@
 set INSTRUMENT=TRUE
 set REMOVEINSTRUMENT=TRUE
 set DOMODULESTESTS=TRUE
-set ABLD_CALL=abld test build winscw udeb -keepgoing
+set SBS_CALL=sbs --config winscw_udeb.test --keepgoing BUILD
 set PATH_TO_DLL=\epoc32\release\winscw\udeb
 set PATH_TO_MOVE_DLL=\epoc32\release\winscw\udeb\z\sys\bin
 set PATH_TO_COVERAGE_DATA=\coverage_data
@@ -147,12 +147,11 @@
 
 pushd .
 call cd %1\group
-call bldmake bldfiles
-call abld test clean winscw udeb
+call sbs --config winscw_udeb.test --keepgoing CLEAN
 if [%INSTRUMENT%] EQU [TRUE] (
-call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
+call ctcwrap -2comp -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" "%SBS_CALL%"
 ) else (
-call %ABLD_CALL%
+call %SBS_CALL%
 )
 
 popd
--- a/phoneengine/loghandling/tsrc/run_auto_tests.bat	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/loghandling/tsrc/run_auto_tests.bat	Mon May 03 12:31:11 2010 +0300
@@ -56,7 +56,7 @@
 set INSTRUMENT=TRUE
 set REMOVEINSTRUMENT=TRUE
 set DOMODULESTESTS=TRUE
-set ABLD_CALL=abld test build winscw udeb -keepgoing
+set SBS_CALL=sbs --config winscw_udeb.test --keepgoing BUILD
 set PATH_TO_DLL=\epoc32\release\winscw\udeb
 set PATH_TO_MOVE_DLL=\epoc32\release\winscw\udeb\z\sys\bin
 set PATH_TO_COVERAGE_DATA=\coverage_data
@@ -147,12 +147,11 @@
 
 pushd .
 call cd %1\group
-call bldmake bldfiles
-call abld test clean winscw udeb
+call sbs --config winscw_udeb.test --keepgoing CLEAN
 if [%INSTRUMENT%] EQU [TRUE] (
-call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i m -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
+call ctcwrap -2comp -n %PATH_TO_COVERAGE_DATA%\%1 -i m -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" "%SBS_CALL%"
 ) else (
-call %ABLD_CALL%
+call %SBS_CALL%
 )
 
 popd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/inc/cnetworklistener.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,132 @@
+/*
+* Copyright (c) 2005-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:  Network info listener.
+*
+*/
+
+
+#ifndef CNETWORKLISTENER_H
+#define CNETWORKLISTENER_H
+
+// System includes
+#include <e32base.h>
+#include <NWHandlingEngine.h>
+
+// User includes
+
+// Forward declarations
+class CNWSession;
+class CRepository;
+class MNetworkListenerObserver;
+
+/**
+ *  Network info listener.
+ */
+NONSHARABLE_CLASS( CNetworkListener ) : public CBase, 
+    public MNWMessageObserver
+    {
+public:
+
+    /**
+     * Get pointer to network info listener.
+     * @return pointer to network info listener.
+     */
+    static CNetworkListener* NewL( MNetworkListenerObserver& aObserver );
+    
+    ~CNetworkListener();
+
+    // from base class MNWMessageObserver
+
+    /**
+     * From MNWMessageObserver.
+     * Called by network handling engine when network info changes.
+     * @param aMessage is type of the change.
+     */
+    void HandleNetworkMessage( const TNWMessages aMessage );
+
+    /**
+     * From MNWMessageObserver.
+     * Called fi network handling engine fails.
+     * @param aOperation is failed operation.
+     * @param aErrorCode is fail reason.
+     */
+    void HandleNetworkError( const TNWOperation aOperation, TInt aErrorCode );
+    
+    static TInt NWLostDelayCallBack(TAny* aParam);
+
+private:
+    
+    CNetworkListener( MNetworkListenerObserver& aObserver );
+    
+    void ConstructL();
+    
+    void HandleNetworkFound();
+     
+    void HandleNetworkLost();
+    
+    /**
+     * Tests if offline mode is engaged.
+     * @return ETrue if offline mode is currently active
+     */
+    TBool IsOffLineMode() const;
+    
+    /**
+     * Tests if Bluetooth SAP is in connected mode.
+     * @return ETrue if Bluetooth SAP is active.
+     */
+    TBool IsBluetoothSAPConnected() const;
+    
+    /**
+     * Tests if SIM is in OK state.
+     * @return ETrue if SIM is in OK state.
+     */
+    TBool IsSimOk() const;
+    
+private: // data
+
+    /**
+     * Session to network handling engine.
+     * Own.
+     */
+    CNWSession* iSession;
+
+    /**
+     * Cached network info structure.
+     */
+    TNWInfo iInfo;
+    
+    /**
+     * Timer to delay the showing of the notification if needed
+     * Own
+     */
+    CPeriodic *iTimer;
+    
+    /**
+     * A true value if registered to network.
+     */
+    TBool iRegistered;
+    
+    /**
+     * Profile API.
+     */
+    CRepository* iProfileApi;
+    
+    /**
+     * Observer.
+     */
+    MNetworkListenerObserver& iObserver;
+    
+    };
+    
+#endif // CNETWORKLISTENER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/inc/mnetworklistenerobserver.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,33 @@
+/*
+ * 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 MNETWORKLISTENEROBSERVER_H
+#define MNETWORKLISTENEROBSERVER_H
+
+/*!
+    \class NetworkStatusObserver
+ */
+class MNetworkListenerObserver
+{
+public: 
+    
+    virtual void ShowNote() = 0;
+    
+    virtual void RemoveNote() = 0;
+    
+};
+
+#endif // MNETWORKLISTENEROBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/inc/networkhandlingstarter.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,61 @@
+/*
+ * 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 NETWORKHANDLINGSTARTER_H
+#define NETWORKHANDLINGSTARTER_H
+
+#include <xqserviceprovider.h>
+
+#ifdef BUILD_NETWORKHANDLINGSTARTER
+#define NETWORKHANDLINGSTARTER_EXPORT Q_DECL_EXPORT
+#else
+#define NETWORKHANDLINGSTARTER_EXPORT Q_DECL_IMPORT
+#endif
+
+class NetworkHandlingStarterPrivate;
+
+/*!
+    \class NetworkStatusObserver
+ */
+class NETWORKHANDLINGSTARTER_EXPORT NetworkHandlingStarter
+    : public XQServiceProvider
+{
+    Q_OBJECT
+    
+public:
+    
+    NetworkHandlingStarter(QObject *parent = 0);
+    
+    ~NetworkHandlingStarter();
+    
+public slots:
+    /*!
+        \fn start()
+        
+        This method start networkhandling. It is intended to be used via Qt Highway.
+        
+        Usage example:
+        XQServiceRequest snd("com.nokia.services.networkhandling","start()");
+    */
+    void start();
+    
+private:
+    
+    NetworkHandlingStarterPrivate* m_privateImpl;
+    
+};
+
+#endif // NETWORKHANDLINGSTARTER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/inc/networkhandlingstarter_p.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,71 @@
+/*
+ * 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 NETWORKHANDLINGSTARTERPRIVATE_H
+#define NETWORKHANDLINGSTARTERPRIVATE_H
+
+#include <QObject>
+#include "mnetworklistenerobserver.h"
+
+class CNetworkListener;
+class HbDeviceMessageBox;
+class HbMainWindow;
+
+/*!
+    \class NetworkHandlingStarterPrivate
+ */
+class NetworkHandlingStarterPrivate
+    : public QObject,
+      public MNetworkListenerObserver
+{
+    Q_OBJECT
+    
+public:
+    
+    NetworkHandlingStarterPrivate(QObject *parent = NULL);
+    
+    ~NetworkHandlingStarterPrivate();
+    
+public slots:
+
+    void LaunchCpNetworkPluginView();
+
+    void ViewDone();
+
+signals:
+    
+    void SearchAvailableNetworks();
+    
+public: // From MNetworkListenerObserver
+    
+    void ShowNote();
+    
+    void RemoveNote();
+        
+private:
+    
+    HbMainWindow * MainWindow();
+    
+    void InitaliseCpNetworkPluginView();
+    
+private:
+    
+    CNetworkListener* m_networkListener;
+    HbDeviceMessageBox *m_note;
+    
+};
+
+#endif // NETWORKHANDLINGSTARTERPRIVATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/inc/networkhandlingstarterlogging.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,77 @@
+/*
+ * 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 NETWORKHANDLINGSTARTERSLOGGING_H
+#define NETWORKHANDLINGSTARTERSLOGGING_H
+
+#include <QDebug>
+
+
+/*!
+  Define MSG_OUTPUT_RDEBUG 
+  for enabling RDebug prints in development tracing. 
+  Shouldn't be used in release code.
+  */
+#define MSG_OUTPUT_RDEBUG
+
+
+
+#ifdef MSG_OUTPUT_RDEBUG
+#ifdef Q_OS_SYMBIAN
+#include <e32debug.h>
+
+static void networkHandlingStarterMsgOutput(QtMsgType type, const char *msg)
+{
+    switch (type) {
+    
+    case QtDebugMsg:
+        RDebug::Printf("networkhandlingstarter Debug: %s\n", msg);
+        break;
+        
+    case QtWarningMsg:
+        RDebug::Printf("networkhandlingstarter Warning: %s\n", msg);
+        break;
+
+    case QtCriticalMsg:
+        RDebug::Printf("networkhandlingstarter Critical: %s\n", msg);
+        break;
+        
+    case QtFatalMsg:
+        RDebug::Printf("networkhandlingstarter Fatal: %s\n", msg);
+        abort();
+    }
+}
+
+    #define INSTALL_TRACE_MSG_HANDLER qInstallMsgHandler(networkHandlingStarterMsgOutput)
+    #define UNINSTALL_TRACE_MSG_HANDLER qInstallMsgHandler(0)
+#else //Q_OS_SYMBIAN
+    #define INSTALL_TRACE_MSG_HANDLER
+    #define UNINSTALL_TRACE_MSG_HANDLER
+#endif
+#else 
+    #define INSTALL_TRACE_MSG_HANDLER 
+    #define UNINSTALL_TRACE_MSG_HANDLER 
+#endif //MSG_OUTPUT_RDEBUG
+
+/*!
+  Debug macros
+  */
+#define DPRINT qDebug() << __PRETTY_FUNCTION__
+
+
+#endif // NETWORKHANDLINGSTARTERSLOGGING_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/networkhandlingstarter.pro	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,54 @@
+#
+# 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: Project file for building unit test component
+#
+#
+
+CONFIG += hb
+TEMPLATE = app
+TARGET = networkhandlingstarter
+TRANSLATIONS = telephone_cp.ts
+
+INCLUDEPATH += ./inc/
+DEFINES += BUILD_NETWORKHANDLINGSTARTER
+MOC_DIR = moc
+
+symbian: {
+    TARGET.CAPABILITY = ALL -TCB
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.UID3 = 0x2002E67A
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+    LIBS += -lnetworkhandling
+    LIBS += -lcentralrepository
+    LIBS += -lxqservice
+    LIBS += -lxqserviceutil
+    LIBS += -lcpframework
+    
+    BLD_INF_RULES.prj_exports +=  \
+     "./rom/networkhandlingstarter.iby    CORE_APP_LAYER_IBY_EXPORT_PATH(networkhandlingstarter.iby)"
+}
+
+HEADERS += ./inc/networkhandlingstarter.h
+HEADERS += ./inc/networkhandlingstarter_p.h
+HEADERS += ./inc/cnetworklistener.h
+
+SOURCES += ./src/main.cpp
+SOURCES += ./src/networkhandlingstarter.cpp
+SOURCES += ./src/networkhandlingstarter_p.cpp
+SOURCES += ./src/cnetworklistener.cpp
+
+CONFIG += service
+SERVICE.FILE = service_conf.xml
+SERVICE.OPTIONS = embeddable
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/rom/networkhandlingstarter.iby	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,27 @@
+/*
+* 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 __NETWORKHANDLINGSTARTER_IBY__
+#define __NETWORKHANDLINGSTARTER_IBY__
+
+#include <bldvariant.hrh>
+
+file=ABI_DIR\UREL\networkhandlingstarter.exe PROGRAMS_DIR\networkhandlingstarter.exe
+data=DATAZ_\private\10003a3f\import\apps\networkhandlingstarter_reg.rsc \private\10003a3f\import\apps\networkhandlingstarter_reg.rsc
+data=DATAZ_\resource\apps\networkhandlingstarter.rsc \resource\apps\networkhandlingstarter.rsc
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/service_conf.xml	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<service name="com.nokia.services"  filepath="must-not-be-empty" >
+  <description>Networkhandling services</description>
+  <interface name="networkhandling" version="1.0" capabilities="">
+    <description>Networkhandling starter interface</description>
+  </interface>
+</service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/src/cnetworklistener.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,256 @@
+/*
+ * 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:  
+ *
+ */
+#include <NetworkHandlingProxy.h>
+#include <CNWSession.h>
+#include <e32property.h>
+#include <centralrepository.h>
+#include <ProfileEngineSDKCRKeys.h>
+#include <BTSapDomainPSKeys.h>
+#include <startupdomainpskeys.h>
+
+#include "cnetworklistener.h"
+#include "mnetworklistenerobserver.h"
+#include "networkhandlingstarterlogging.h"
+
+// Constants
+
+// 1-minute timeout before showing soft notification
+const TInt KNetworkLostTimeout = 60*1000000;
+
+// Offline profile, from ProfileEngineSDKCRKeys.h
+const TInt KOfflineProfileId = 5;
+
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructor of CNetworkListener.
+ */
+CNetworkListener::CNetworkListener(MNetworkListenerObserver& aObserver) : 
+    iRegistered(ETrue),
+    iObserver(aObserver)
+{
+    DPRINT << ": IN";
+    
+    DPRINT << ": OUT";
+}
+
+/*!
+    Constructor of CNetworkListener.
+ */
+void CNetworkListener::ConstructL()
+{
+    DPRINT << ": IN";
+    
+    //Create network handling engine session.
+    iSession = CreateL(*this, iInfo);
+    iTimer = CPeriodic::NewL(CActive::EPriorityStandard);
+    iProfileApi = CRepository::NewL(KCRUidProfileEngine);
+    
+    DPRINT << ": OUT";
+}
+
+/*!
+    Constructor of CNetworkListener.
+ */
+CNetworkListener* CNetworkListener::NewL(MNetworkListenerObserver& aObserver)
+{
+    DPRINT << ": IN";
+    
+    CNetworkListener* self = new(ELeave) CNetworkListener(aObserver);
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    
+    DPRINT << ": OUT";
+    return self;
+ }
+    
+/*!
+    Destructor of CNetworkListener.
+ */
+CNetworkListener::~CNetworkListener()
+{
+    DPRINT << ": IN";
+    
+    delete iSession;
+    delete iTimer;
+    delete iProfileApi;
+    
+    DPRINT << ": OUT";
+}
+
+/*!
+    CNetworkListener::HandleNetworkMessage.
+ */
+void CNetworkListener::HandleNetworkMessage(const TNWMessages aMessage)
+{
+    DPRINT << ": IN";
+    
+    if(aMessage == ENWMessageNetworkRegistrationStatusChange) {
+        switch(iInfo.iRegistrationStatus) {
+            case ENWNotRegisteredNoService:
+                // Fall-through
+            case ENWNotRegisteredEmergencyOnly:
+                // Fall-through
+            case ENWNotRegisteredSearching:
+                // Fall-through
+            case ENWRegistrationDenied:
+                HandleNetworkLost();
+                break;
+            
+            case ENWRegisteredBusy:
+                // Fall-through
+            case ENWRegisteredOnHomeNetwork:
+                // Fall-through
+            case ENWRegisteredRoaming:
+                HandleNetworkFound();
+                break;
+            
+            case ENWRegistrationUnknown:
+                // Take no action
+            default:
+                break;
+        }
+    }
+    
+    DPRINT << ": OUT";
+}
+
+/*!
+    CNetworkListener::HandleNetworkError.
+ */
+void CNetworkListener::HandleNetworkError( 
+    const TNWOperation /*aOperation*/, TInt /*aErrorCode*/)
+    {
+    DPRINT << ": IN";
+    }
+
+/*!
+    CNetworkListener::NWLostDelayCallBack.
+ */
+TInt CNetworkListener::NWLostDelayCallBack(TAny* aParam)
+{
+    DPRINT << ": IN";
+    
+    CNetworkListener* self = 
+        reinterpret_cast< CNetworkListener* >( aParam );
+    
+    if ( self ) {
+        self->iTimer->Cancel();
+        self->iObserver.ShowNote();
+    }
+    
+    DPRINT << ": OUT";
+    return KErrNone;
+}
+    
+/*!
+    CNetworkListener::HandleNetworkFound
+ */
+void CNetworkListener::HandleNetworkFound()
+{
+    DPRINT << ": IN";
+    
+    if (!iRegistered) {
+        iTimer->Cancel();
+        iObserver.RemoveNote();
+    }
+    iRegistered = ETrue;
+    
+    DPRINT << ": OUT";
+}
+
+/*!
+    CNetworkListener::HandleNetworkLost
+ */
+void CNetworkListener::HandleNetworkLost()
+{
+    DPRINT << ": IN";
+    
+    if (iInfo.iSelectionSetting == ENWNetworkSelectionManual) {
+        // See if we were registered before
+        if (iRegistered) {
+            iRegistered = EFalse;
+
+            if (!IsOffLineMode() &&
+                !IsBluetoothSAPConnected() &&
+                IsSimOk()) {
+                // Start 60 second timer and when expired show the
+                // notifier
+                iTimer->Cancel();
+                iTimer->Start(KNetworkLostTimeout,
+                              KNetworkLostTimeout,
+                              TCallBack( NWLostDelayCallBack, this ));
+             }
+        }
+    }
+    
+    DPRINT << ": OUT";
+}
+
+/*!
+    CNetworkListener::IsOffLineMode
+ */
+TBool CNetworkListener::IsOffLineMode() const
+{
+    DPRINT << ": IN";
+    
+    TInt profileId;
+    TInt err = iProfileApi->Get(KProEngActiveProfile, profileId);
+    
+    DPRINT << ": OUT";
+    
+    return profileId == KOfflineProfileId && err == KErrNone;
+    }
+    
+/*!
+    CNetworkListener::IsBluetoothSAPConnected
+ */
+TBool CNetworkListener::IsBluetoothSAPConnected() const
+{
+    DPRINT << ": IN";
+    
+    TInt btSapState( EBTSapNotConnected );
+    TInt err = RProperty::Get(KPSUidBluetoothSapConnectionState,
+                              KBTSapConnectionState,
+                              btSapState );
+    
+    DPRINT << ": OUT";
+    
+    return btSapState != EBTSapNotConnected && err == KErrNone;
+}
+    
+/*!
+    CNetworkListener::IsSimOk
+ */
+TBool CNetworkListener::IsSimOk() const
+{
+    DPRINT << ": IN";
+    
+    TInt simState(ESimStatusUninitialized);
+    TInt err = RProperty::Get(KPSUidStartup,
+                              KPSSimStatus,
+                              simState );
+    
+    DPRINT << ": OUT";
+    
+    return simState == ESimUsable && err == KErrNone;
+}
+
+// End of file
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/src/main.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,49 @@
+/*
+ * 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:  
+ *
+ */
+#include <QLocale>
+#include <QTranslator>
+#include <hbapplication.h>
+#include <hbmainwindow.h>
+#include <networkhandlingstarter.h>
+
+/*!
+    main.
+ */
+int main(int argc, char **argv)
+{
+    HbApplication app(argc, argv);
+    
+    // Load telephone_cp translator
+    QTranslator translator; 
+    QString lang = QLocale::system().name();
+    QString path = "z:/resource/qt/translations/";
+    bool translatorLoaded = translator.load(path + "telephone_cp_" + lang);
+    if (translatorLoaded) {
+        app.installTranslator(&translator);
+    }
+    // Load common translator
+    QTranslator commontranslator;
+    translatorLoaded = commontranslator.load( path + "common_" + lang);
+    if (translatorLoaded) {
+        app.installTranslator(&commontranslator);
+    }
+    
+    HbMainWindow mainWindow;
+    NetworkHandlingStarter service;
+    return app.exec();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/src/networkhandlingstarter.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,56 @@
+/*
+ * 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:  
+ *
+ */
+#include <networkhandlingstarter.h>
+#include <networkhandlingstarterlogging.h>
+#include <networkhandlingstarter_p.h>
+
+/*!
+    Constructor of NetworkHandlingStarter.
+ */
+NetworkHandlingStarter::NetworkHandlingStarter(QObject *parent) : 
+    XQServiceProvider(QLatin1String("com.nokia.services.networkhandling"), parent),
+    m_privateImpl(NULL)
+{
+    // Install plugin specific msg handler
+    INSTALL_TRACE_MSG_HANDLER;
+    
+    publishAll();
+    
+    DPRINT;
+}
+
+/*!
+    Destructor of NetworkHandlingStarter.
+ */
+NetworkHandlingStarter::~NetworkHandlingStarter()
+{
+    DPRINT;
+    delete m_privateImpl;
+    // Uninstall plugin specific msg handler
+    UNINSTALL_TRACE_MSG_HANDLER;
+}
+
+void NetworkHandlingStarter::start()
+{
+    DPRINT;
+    
+    if(!m_privateImpl) {
+        m_privateImpl = new NetworkHandlingStarterPrivate();
+    }
+}
+
+// End of File.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/src/networkhandlingstarter_p.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,173 @@
+/*
+ * 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:  
+ *
+ */
+
+#include <hbdevicemessagebox.h>
+#include <HbAction.h>
+#include <CpPluginLauncher.h>
+#include <hbinstance.h>
+#include <HbView.h>
+#include <xqserviceutil.h>
+
+#include "networkhandlingstarter_p.h"
+#include "networkhandlingstarterlogging.h"
+#include "cnetworklistener.h"
+
+/*!
+    Constructor of NetworkHandlingStarterPrivate.
+ */
+NetworkHandlingStarterPrivate::NetworkHandlingStarterPrivate(QObject *parent) : 
+    QObject(parent), m_note(NULL)
+{
+    DPRINT << ": IN";
+    
+    QT_TRAP_THROWING(m_networkListener = CNetworkListener::NewL(*this));
+    
+    DPRINT << ": OUT";
+}
+
+/*!
+    Destructor of NetworkHandlingStarterPrivate.
+ */
+NetworkHandlingStarterPrivate::~NetworkHandlingStarterPrivate()
+{
+    DPRINT << ": IN";
+    
+    delete m_networkListener;
+    if (m_note) {
+        delete m_note;
+    }
+    
+    DPRINT << ": OUT";
+}
+    
+/*!
+    NetworkHandlingStarterPrivate::ShowNote()
+ */
+void NetworkHandlingStarterPrivate::ShowNote()
+{
+    DPRINT << ": IN";
+    
+    if (m_note) {
+        m_note->close();
+        delete m_note;
+        m_note = NULL;
+    }
+    m_note = new HbDeviceMessageBox(
+        hbTrId("txt_phone_info_network_lost_select_network"), 
+        HbMessageBox::MessageTypeQuestion);
+    HbAction *primaryAction = new HbAction(hbTrId("txt_common_button_yes"), m_note);
+    m_note->setPrimaryAction(primaryAction);
+    HbAction *secondaryAction = new HbAction(hbTrId("txt_common_button_no"), m_note);
+    m_note->setSecondaryAction(secondaryAction);
+    QObject::connect(
+        primaryAction, SIGNAL(triggered()),
+        this, SLOT(LaunchCpNetworkPluginView()));
+    m_note->setTimeout(0);
+    m_note->show();
+    
+    DPRINT << ": OUT";
+}
+
+/*!
+    NetworkHandlingStarterPrivate::RemoveNote()
+ */
+void NetworkHandlingStarterPrivate::RemoveNote()
+{
+    DPRINT << ": IN";
+    
+    if (m_note) {
+        m_note->close();
+        delete m_note;
+        m_note = NULL;
+    }
+    
+    DPRINT << ": OUT";
+}
+
+/*!
+    NetworkHandlingStarterPrivate::InitaliseCpNetworkPluginView()
+ */
+void NetworkHandlingStarterPrivate::InitaliseCpNetworkPluginView()
+{
+    DPRINT << ": IN";
+    
+    HbMainWindow *mainWnd = MainWindow();
+    if (mainWnd) {
+        if (CpPluginLauncher::launchCpPluginView(
+                "resource\\qt\\plugins\\controlpanel\\cpnetworkplugin.qtplugin")) {
+            foreach (HbView *view, mainWnd->views()) {
+                if (QString(view->metaObject()->className()) == 
+                    QString("CpNetworkPluginView")) {
+                    QObject::connect(
+                        view, SIGNAL(aboutToClose()), 
+                        this, SLOT(ViewDone()));
+                    QObject::connect(
+                        this, SIGNAL(SearchAvailableNetworks()), 
+                        view, SLOT(SearchAvailableNetworks()));
+                }
+            }
+        }
+    }
+    
+    DPRINT << ": OUT";
+}
+
+/*!
+    NetworkHandlingStarterPrivate::LaunchCpNetworkPluginView()
+ */
+void NetworkHandlingStarterPrivate::LaunchCpNetworkPluginView()
+{
+    DPRINT << ": IN";
+    
+    InitaliseCpNetworkPluginView();
+    HbMainWindow *mainWnd = MainWindow();
+    if (mainWnd) {
+        mainWnd->show();
+        XQServiceUtil::toBackground(false);
+    }
+    emit SearchAvailableNetworks();
+    
+    DPRINT << ": OUT";
+}
+
+/*!
+    NetworkHandlingStarterPrivate::ViewDone()
+ */
+void NetworkHandlingStarterPrivate::ViewDone()
+{
+    HbMainWindow *mainWnd = MainWindow();
+    if (mainWnd) {
+        mainWnd->hide();
+    }
+    XQServiceUtil::toBackground(true);
+}
+
+/*!
+    NetworkHandlingStarterPrivate::MainWindow()
+ */
+
+HbMainWindow * NetworkHandlingStarterPrivate::MainWindow() 
+{
+    HbMainWindow *window(NULL);
+    QList<HbMainWindow*> mainWindows = hbInstance->allMainWindows();
+    if (!mainWindows.isEmpty()) {
+        window = mainWindows.front();
+    }
+    return window;
+}
+
+// End of File.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/common/qtestmains60.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* 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 QTESTMAINS60
+#define QTESTMAINS60
+
+#define QTEST_MAIN_S60(TestObject) \
+int main(int argc, char *argv[]) \
+{ \
+char *new_argv[3]; \
+QCoreApplication app(argc, argv); \
+\
+QString str = "C:\\data\\" + QFileInfo(QCoreApplication::applicationFilePath()).baseName() + ".log"; \
+QByteArray   bytes  = str.toAscii(); \
+\
+char arg1[] = "-o"; \
+\
+new_argv[0] = argv[0]; \
+new_argv[1] = arg1; \
+new_argv[2] = bytes.data(); \
+\
+TestObject tc; \
+return QTest::qExec(&tc, 3, new_argv); \
+}
+
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/mocks/mock_centralrepository.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,628 @@
+/* 
+* 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:
+*
+*/
+#include <smcmockclassincludes.h>
+#include <centralrepository.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CRepository::NewL
+// -----------------------------------------------------------------------------
+//
+CRepository * CRepository::NewL( 
+        TUid aRepositoryUid )
+    {
+    SMC_MOCK_NEWL1( CRepository *, TUid, aRepositoryUid )
+
+    CRepository* self = new( ELeave ) CRepository;
+    CleanupStack::PushL( self );
+    //self->ConstructL()
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::NewLC
+// -----------------------------------------------------------------------------
+//
+CRepository * CRepository::NewLC( 
+        TUid aRepositoryUid )
+    {
+    SMC_MOCK_NEWLC1( CRepository *, TUid, aRepositoryUid )
+
+    CRepository* self = new( ELeave ) CRepository;
+    CleanupStack::PushL( self );
+    //self->ConstructL()
+    return self;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::~CRepository
+// -----------------------------------------------------------------------------
+//
+CRepository::~CRepository(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Create
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Create( 
+        TUint32 aKey,
+        TInt aValue )
+    {
+    SMC_MOCK_METHOD2( TInt, TUint32, aKey, 
+        TInt, aValue )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Create
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Create( 
+        TUint32 aKey,
+        const TReal & aValue )
+    {
+    SMC_MOCK_METHOD2( TInt, TUint32, aKey, 
+        const TReal &, aValue )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Create
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Create( 
+        TUint32 aKey,
+        const TDesC8 & aValue )
+    {
+    SMC_MOCK_METHOD2( TInt, TUint32, aKey, 
+        const TDesC8 &, aValue )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Create
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Create( 
+        TUint32 aKey,
+        const TDesC16 & aValue )
+    {
+    SMC_MOCK_METHOD2( TInt, TUint32, aKey, 
+        const TDesC16 &, aValue )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Delete
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Delete( 
+        TUint32 aKey )
+    {
+    SMC_MOCK_METHOD1( TInt, TUint32, aKey )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Delete
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Delete( 
+        TUint32 aPartialKey,
+        TUint32 aMask,
+        TUint32 & aErrorKey )
+    {
+    SMC_MOCK_METHOD3( TInt, TUint32, aPartialKey, 
+        TUint32, aMask, 
+        TUint32 &, aErrorKey )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Get
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Get( 
+        TUint32 aKey,
+        TInt & aValue )
+    {
+    SMC_MOCK_METHOD2( TInt, TUint32, aKey, 
+        TInt &, aValue )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Set
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Set( 
+        TUint32 aKey,
+        TInt aValue )
+    {
+    SMC_MOCK_METHOD2( TInt, TUint32, aKey, 
+        TInt, aValue )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Get
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Get( 
+        TUint32 aKey,
+        TReal & aValue )
+    {
+    SMC_MOCK_METHOD2( TInt, TUint32, aKey, 
+        TReal &, aValue )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Set
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Set( 
+        TUint32 aKey,
+        const TReal & aValue )
+    {
+    SMC_MOCK_METHOD2( TInt, TUint32, aKey, 
+        const TReal &, aValue )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Get
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Get( 
+        TUint32 aKey,
+        TDes8 & aValue )
+    {
+    SMC_MOCK_METHOD2( TInt, TUint32, aKey, 
+        TDes8 &, aValue )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Get
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Get( 
+        TUint32 aId,
+        TDes8 & aValue,
+        TInt & aActualLength )
+    {
+    SMC_MOCK_METHOD3( TInt, TUint32, aId, 
+        TDes8 &, aValue, 
+        TInt &, aActualLength )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Set
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Set( 
+        TUint32 aKey,
+        const TDesC8 & aValue )
+    {
+    SMC_MOCK_METHOD2( TInt, TUint32, aKey, 
+        const TDesC8 &, aValue )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Get
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Get( 
+        TUint32 aKey,
+        TDes16 & aValue )
+    {
+    SMC_MOCK_METHOD2( TInt, TUint32, aKey, 
+        TDes16 &, aValue )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Get
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Get( 
+        TUint32 aId,
+        TDes16 & aValue,
+        TInt & aActualLength )
+    {
+    SMC_MOCK_METHOD3( TInt, TUint32, aId, 
+        TDes16 &, aValue, 
+        TInt &, aActualLength )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Set
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Set( 
+        TUint32 aKey,
+        const TDesC16 & aValue )
+    {
+    SMC_MOCK_METHOD2( TInt, TUint32, aKey, 
+        const TDesC16 &, aValue )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::GetMeta
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::GetMeta( 
+        TUint32 aKey,
+        TUint32 & aMeta )
+    {
+    SMC_MOCK_METHOD2( TInt, TUint32, aKey, 
+        TUint32 &, aMeta )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Move
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Move( 
+        TUint32 aSourcePartialKey,
+        TUint32 aTargetPartialKey,
+        TUint32 aMask,
+        TUint32 & aErrorKey )
+    {
+    SMC_MOCK_METHOD4( TInt, TUint32, aSourcePartialKey, 
+        TUint32, aTargetPartialKey, 
+        TUint32, aMask, 
+        TUint32 &, aErrorKey )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::FindL
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::FindL( 
+        TUint32 aPartialKey,
+        TUint32 aMask,
+        RArray<TUint32> & aFoundKeys )
+    {
+    SMC_MOCK_METHOD3( TInt, TUint32, aPartialKey, 
+        TUint32, aMask, 
+        RArray<TUint32> &, aFoundKeys )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::FindEqL
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::FindEqL( 
+        TUint32 aPartialKey,
+        TUint32 aMask,
+        TInt aValue,
+        RArray<TUint32> & aFoundKeys )
+    {
+    SMC_MOCK_METHOD4( TInt, TUint32, aPartialKey, 
+        TUint32, aMask, 
+        TInt, aValue, 
+        RArray<TUint32> &, aFoundKeys )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::FindEqL
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::FindEqL( 
+        TUint32 aPartialKey,
+        TUint32 aMask,
+        const TReal & aValue,
+        RArray<TUint32> & aFoundKeys )
+    {
+    SMC_MOCK_METHOD4( TInt, TUint32, aPartialKey, 
+        TUint32, aMask, 
+        const TReal &, aValue, 
+        RArray<TUint32> &, aFoundKeys )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::FindEqL
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::FindEqL( 
+        TUint32 aPartialKey,
+        TUint32 aMask,
+        const TDesC8 & aValue,
+        RArray<TUint32> & aFoundKeys )
+    {
+    SMC_MOCK_METHOD4( TInt, TUint32, aPartialKey, 
+        TUint32, aMask, 
+        const TDesC8 &, aValue, 
+        RArray<TUint32> &, aFoundKeys )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::FindEqL
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::FindEqL( 
+        TUint32 aPartialKey,
+        TUint32 aMask,
+        const TDesC16 & aValue,
+        RArray<TUint32> & aFoundKeys )
+    {
+    SMC_MOCK_METHOD4( TInt, TUint32, aPartialKey, 
+        TUint32, aMask, 
+        const TDesC16 &, aValue, 
+        RArray<TUint32> &, aFoundKeys )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::FindNeqL
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::FindNeqL( 
+        TUint32 aPartialKey,
+        TUint32 aMask,
+        TInt aValue,
+        RArray<TUint32> & aFoundKeys )
+    {
+    SMC_MOCK_METHOD4( TInt, TUint32, aPartialKey, 
+        TUint32, aMask, 
+        TInt, aValue, 
+        RArray<TUint32> &, aFoundKeys )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::FindNeqL
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::FindNeqL( 
+        TUint32 aPartialKey,
+        TUint32 aMask,
+        const TReal & aValue,
+        RArray<TUint32> & aFoundKeys )
+    {
+    SMC_MOCK_METHOD4( TInt, TUint32, aPartialKey, 
+        TUint32, aMask, 
+        const TReal &, aValue, 
+        RArray<TUint32> &, aFoundKeys )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::FindNeqL
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::FindNeqL( 
+        TUint32 aPartialKey,
+        TUint32 aMask,
+        const TDesC8 & aValue,
+        RArray<TUint32> & aFoundKeys )
+    {
+    SMC_MOCK_METHOD4( TInt, TUint32, aPartialKey, 
+        TUint32, aMask, 
+        const TDesC8 &, aValue, 
+        RArray<TUint32> &, aFoundKeys )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::FindNeqL
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::FindNeqL( 
+        TUint32 aPartialKey,
+        TUint32 aMask,
+        const TDesC16 & aValue,
+        RArray<TUint32> & aFoundKeys )
+    {
+    SMC_MOCK_METHOD4( TInt, TUint32, aPartialKey, 
+        TUint32, aMask, 
+        const TDesC16 &, aValue, 
+        RArray<TUint32> &, aFoundKeys )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::NotifyRequest
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::NotifyRequest( 
+        TUint32 aKey,
+        TRequestStatus & aStatus )
+    {
+    SMC_MOCK_METHOD2( TInt, TUint32, aKey, 
+        TRequestStatus &, aStatus )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::NotifyRequest
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::NotifyRequest( 
+        TUint32 aPartialKey,
+        TUint32 aMask,
+        TRequestStatus & aStatus )
+    {
+    SMC_MOCK_METHOD3( TInt, TUint32, aPartialKey, 
+        TUint32, aMask, 
+        TRequestStatus &, aStatus )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::NotifyCancel
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::NotifyCancel( 
+        TUint32 aKey )
+    {
+    SMC_MOCK_METHOD1( TInt, TUint32, aKey )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::NotifyCancel
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::NotifyCancel( 
+        TUint32 aPartialKey,
+        TUint32 aMask )
+    {
+    SMC_MOCK_METHOD2( TInt, TUint32, aPartialKey, 
+        TUint32, aMask )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::NotifyCancelAll
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::NotifyCancelAll(  )
+    {
+    SMC_MOCK_METHOD0( TInt )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Reset
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Reset(  )
+    {
+    SMC_MOCK_METHOD0( TInt )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::Reset
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::Reset( 
+        TUint32 aKey )
+    {
+    SMC_MOCK_METHOD1( TInt, TUint32, aKey )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::StartTransaction
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::StartTransaction( 
+        TTransactionMode aMode )
+    {
+    SMC_MOCK_METHOD1( TInt, TTransactionMode, aMode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::StartTransaction
+// -----------------------------------------------------------------------------
+//
+void CRepository::StartTransaction( 
+        TTransactionMode aMode,
+        TRequestStatus & aStatus )
+    {
+    SMC_MOCK_METHOD2( void, TTransactionMode, aMode, 
+        TRequestStatus &, aStatus )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::CommitTransaction
+// -----------------------------------------------------------------------------
+//
+TInt CRepository::CommitTransaction( 
+        TUint32 & aKeyInfo )
+    {
+    SMC_MOCK_METHOD1( TInt, TUint32 &, aKeyInfo )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::CommitTransaction
+// -----------------------------------------------------------------------------
+//
+void CRepository::CommitTransaction( 
+        TDes8 & aKeyInfo,
+        TRequestStatus & aStatus )
+    {
+    SMC_MOCK_METHOD2( void, TDes8 &, aKeyInfo, 
+        TRequestStatus &, aStatus )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::CancelTransaction
+// -----------------------------------------------------------------------------
+//
+void CRepository::CancelTransaction(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::CleanupCancelTransactionPushL
+// -----------------------------------------------------------------------------
+//
+void CRepository::CleanupCancelTransactionPushL(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::FailTransaction
+// -----------------------------------------------------------------------------
+//
+void CRepository::FailTransaction(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CRepository::CleanupFailTransactionPushL
+// -----------------------------------------------------------------------------
+//
+void CRepository::CleanupFailTransactionPushL(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/mocks/mock_cnetworklistener.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,107 @@
+/*
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include <cnetworklistener.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CNetworkListener::CNetworkListener
+// -----------------------------------------------------------------------------
+//
+CNetworkListener::CNetworkListener( 
+        MNetworkListenerObserver & aObserver ) :
+    iRegistered( ETrue ),
+    iObserver( aObserver )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNetworkListener::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CNetworkListener::ConstructL(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNetworkListener::NewL
+// -----------------------------------------------------------------------------
+//
+CNetworkListener * CNetworkListener::NewL( 
+        MNetworkListenerObserver & aObserver )
+    {
+    //SMC_MOCK_NEWL1( CNetworkListener *, MNetworkListenerObserver &, aObserver )
+
+    CNetworkListener* self = new( ELeave ) CNetworkListener( aObserver );
+    CleanupStack::PushL( self );
+    //self->ConstructL()
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNetworkListener::~CNetworkListener
+// -----------------------------------------------------------------------------
+//
+CNetworkListener::~CNetworkListener(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNetworkListener::HandleNetworkMessage
+// -----------------------------------------------------------------------------
+//
+void CNetworkListener::HandleNetworkMessage( 
+        const TNWMessages aMessage )
+    {
+    SMC_MOCK_METHOD1( void, const TNWMessages, aMessage )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNetworkListener::HandleNetworkError
+// -----------------------------------------------------------------------------
+//
+void CNetworkListener::HandleNetworkError( 
+        const TNWOperation aOperation,
+        TInt aErrorCode )
+    {
+    SMC_MOCK_METHOD2( void, const TNWOperation, aOperation, 
+        TInt, aErrorCode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNetworkListener::NWLostDelayCallBack
+// -----------------------------------------------------------------------------
+//
+TInt CNetworkListener::NWLostDelayCallBack( 
+        TAny * aParam )
+    {
+    //SMC_MOCK_METHOD1( TInt, TAny *, aParam )
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/mocks/mock_cnwsession.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,41 @@
+/* 
+* 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:
+*
+*/
+#include <smcmockclassincludes.h>
+#include <CNWSession.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CNWSession::CNWSession
+// -----------------------------------------------------------------------------
+//
+CNWSession::CNWSession(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNWSession::~CNWSession
+// -----------------------------------------------------------------------------
+//
+CNWSession::~CNWSession(  )
+    {
+    
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/mocks/mock_cppluginlauncher.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,35 @@
+/* 
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include "cppluginlauncher.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CpPluginLauncher::launchCpPluginView
+// -----------------------------------------------------------------------------
+//
+bool CpPluginLauncher::launchCpPluginView( 
+        const QString & pluginFile,
+        int index )
+    {
+    SMC_MOCK_METHOD2( bool, const QString &, pluginFile, 
+        int, index )
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/mocks/mock_hbaction.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,169 @@
+/* 
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include <hbaction.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// HbAction::HbAction
+// -----------------------------------------------------------------------------
+//
+HbAction::HbAction( 
+        const QString & text,
+        QObject * parent )
+    : QAction( parent ), d_ptr(NULL)
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbAction::HbAction
+// -----------------------------------------------------------------------------
+//
+HbAction::HbAction( 
+        const HbIcon & icon,
+        const QString & text,
+        QObject * parent )
+    : QAction( parent ), d_ptr(NULL)
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbAction::HbAction
+// -----------------------------------------------------------------------------
+//
+HbAction::HbAction( 
+        Hb::SoftKeyAction action,
+        QObject * parent )
+    : QAction( parent ), d_ptr(NULL)
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbAction::~HbAction
+// -----------------------------------------------------------------------------
+//
+HbAction::~HbAction(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbAction::setIcon
+// -----------------------------------------------------------------------------
+//
+void HbAction::setIcon( 
+        const HbIcon & icon )
+    {
+ //   SMC_MOCK_METHOD1( void, const HbIcon &, icon )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbAction::icon
+// -----------------------------------------------------------------------------
+//
+HbIcon HbAction::icon(  ) const
+    {
+ //   SMC_MOCK_METHOD0( HbIcon )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbAction::setMenu
+// -----------------------------------------------------------------------------
+//
+void HbAction::setMenu( 
+        HbMenu * menu )
+    {
+ //   SMC_MOCK_METHOD1( void, HbMenu *, menu )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbAction::menu
+// -----------------------------------------------------------------------------
+//
+HbMenu * HbAction::menu(  ) const
+    {
+ //   SMC_MOCK_METHOD0( HbMenu * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbAction::setToolBarExtension
+// -----------------------------------------------------------------------------
+//
+void HbAction::setToolBarExtension( 
+        HbToolBarExtension * extension )
+    {
+//    SMC_MOCK_METHOD1( void, HbToolBarExtension *, extension )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbAction::toolBarExtension
+// -----------------------------------------------------------------------------
+//
+HbToolBarExtension * HbAction::toolBarExtension(  ) const
+    {
+//    SMC_MOCK_METHOD0( HbToolBarExtension * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbAction::setCommandRole
+// -----------------------------------------------------------------------------
+//
+void HbAction::setCommandRole( 
+        HbAction::CommandRole commandRole )
+    {
+ //   SMC_MOCK_METHOD1( void, CommandRole, commandRole )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbAction::commandRole
+// -----------------------------------------------------------------------------
+//
+HbAction::CommandRole HbAction::commandRole(  ) const
+    {
+ //   SMC_MOCK_METHOD0( CommandRole )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbAction::HbAction
+// -----------------------------------------------------------------------------
+//
+HbAction::HbAction( 
+        HbActionPrivate & dd,
+        QObject * parent )
+    : QAction( parent ), d_ptr(NULL)
+    {
+    
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/mocks/mock_hbdevicemessagebox.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,303 @@
+/* 
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include <hbdevicemessagebox.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::HbDeviceMessageBox
+// -----------------------------------------------------------------------------
+//
+HbDeviceMessageBox::HbDeviceMessageBox( 
+        const QString & text,
+        HbMessageBox::MessageBoxType type,
+        QObject * parent )
+    //:
+    //QObject( /*text, type, parent*/ )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::~HbDeviceMessageBox
+// -----------------------------------------------------------------------------
+//
+HbDeviceMessageBox::~HbDeviceMessageBox(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::question
+// -----------------------------------------------------------------------------
+//
+bool HbDeviceMessageBox::question( 
+        const QString & text,
+        const QString & primaryButtonText,
+        const QString & secondaryButtonText )
+    {
+    SMC_MOCK_METHOD3( bool, const QString &, text, 
+        const QString &, primaryButtonText, 
+        const QString &, secondaryButtonText )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::information
+// -----------------------------------------------------------------------------
+//
+void HbDeviceMessageBox::information( 
+        const QString & text )
+    {
+    SMC_MOCK_METHOD1( void, const QString &, text )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::warning
+// -----------------------------------------------------------------------------
+//
+void HbDeviceMessageBox::warning( 
+        const QString & text )
+    {
+    SMC_MOCK_METHOD1( void, const QString &, text )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::show
+// -----------------------------------------------------------------------------
+//
+void HbDeviceMessageBox::show(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::close
+// -----------------------------------------------------------------------------
+//
+void HbDeviceMessageBox::close(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::exec
+// -----------------------------------------------------------------------------
+//
+HbAction * HbDeviceMessageBox::exec(  )
+    {
+    SMC_MOCK_METHOD0( HbAction * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::setText
+// -----------------------------------------------------------------------------
+//
+void HbDeviceMessageBox::setText( 
+        const QString & text )
+    {
+    SMC_MOCK_METHOD1( void, const QString &, text )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::text
+// -----------------------------------------------------------------------------
+//
+QString HbDeviceMessageBox::text(  ) const
+    {
+    SMC_MOCK_METHOD0( QString )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::setIconName
+// -----------------------------------------------------------------------------
+//
+void HbDeviceMessageBox::setIconName( 
+        const QString & iconName )
+    {
+    SMC_MOCK_METHOD1( void, const QString &, iconName )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::iconName
+// -----------------------------------------------------------------------------
+//
+QString HbDeviceMessageBox::iconName(  ) const
+    {
+    SMC_MOCK_METHOD0( QString )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::setIconAlignment
+// -----------------------------------------------------------------------------
+//
+void HbDeviceMessageBox::setIconAlignment( 
+        Qt::Alignment align )
+    {
+ //   SMC_MOCK_METHOD1( void, Qt::Alignment, align )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::iconAlignment
+// -----------------------------------------------------------------------------
+//
+Qt::Alignment HbDeviceMessageBox::iconAlignment(  ) const
+    {
+ //   SMC_MOCK_METHOD0( Qt::Alignment )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::setTimeout
+// -----------------------------------------------------------------------------
+//
+void HbDeviceMessageBox::setTimeout( 
+        int timeout )
+    {
+    SMC_MOCK_METHOD1( void, int, timeout )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::setTimeout
+// -----------------------------------------------------------------------------
+//
+void HbDeviceMessageBox::setTimeout( 
+        HbPopup::DefaultTimeout timeout )
+    {
+  //  SMC_MOCK_METHOD1( void, HbPopup::DefaultTimeout, timeout )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::timeout
+// -----------------------------------------------------------------------------
+//
+int HbDeviceMessageBox::timeout(  ) const
+    {
+    SMC_MOCK_METHOD0( int )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::setDismissPolicy
+// -----------------------------------------------------------------------------
+//
+void HbDeviceMessageBox::setDismissPolicy( 
+        HbPopup::DismissPolicy dismissPolicy )
+    {
+  //  SMC_MOCK_METHOD1( void, HbPopup::DismissPolicy, dismissPolicy )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::dismissPolicy
+// -----------------------------------------------------------------------------
+//
+HbPopup::DismissPolicy HbDeviceMessageBox::dismissPolicy(  ) const
+    {
+ //   SMC_MOCK_METHOD0( HbPopup::DismissPolicy )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::primaryAction
+// -----------------------------------------------------------------------------
+//
+HbAction * HbDeviceMessageBox::primaryAction(  ) const
+    {
+    SMC_MOCK_METHOD0( HbAction * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::setPrimaryAction
+// -----------------------------------------------------------------------------
+//
+void HbDeviceMessageBox::setPrimaryAction( 
+        HbAction * action )
+    {
+  //  SMC_MOCK_METHOD1( void, HbAction *, action )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::secondaryAction
+// -----------------------------------------------------------------------------
+//
+HbAction * HbDeviceMessageBox::secondaryAction(  ) const
+    {
+    SMC_MOCK_METHOD0( HbAction * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::setSecondaryAction
+// -----------------------------------------------------------------------------
+//
+void HbDeviceMessageBox::setSecondaryAction( 
+        HbAction * action )
+    {
+  //  SMC_MOCK_METHOD1( void, HbAction *, action )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::setAnimationDefinition
+// -----------------------------------------------------------------------------
+//
+void HbDeviceMessageBox::setAnimationDefinition( 
+        QString & animationDefinition )
+    {
+    SMC_MOCK_METHOD1( void, QString &, animationDefinition )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::animationDefinition
+// -----------------------------------------------------------------------------
+//
+QString HbDeviceMessageBox::animationDefinition(  ) const
+    {
+    SMC_MOCK_METHOD0( QString )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbDeviceMessageBox::aboutToClose
+// -----------------------------------------------------------------------------
+//
+void HbDeviceMessageBox::aboutToClose(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/mocks/mock_hbinstance.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,138 @@
+/*
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include <hbinstance.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// HbInstance::instance
+// -----------------------------------------------------------------------------
+//
+HbInstance * HbInstance::instance(  )
+    {
+    SMC_MOCK_METHOD0( HbInstance * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbInstance::allMainWindows
+// -----------------------------------------------------------------------------
+//
+QList <HbMainWindow * > HbInstance::allMainWindows(  ) const
+    {
+    SMC_MOCK_METHOD0( QList <HbMainWindow * > )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbInstance::orientation
+// -----------------------------------------------------------------------------
+//
+Qt::Orientation HbInstance::orientation(  ) const
+    {
+    SMC_MOCK_METHOD0( Qt::Orientation )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbInstance::setOrientation
+// -----------------------------------------------------------------------------
+//
+void HbInstance::setOrientation( 
+        Qt::Orientation orientation,
+        bool animate )
+    {
+    SMC_MOCK_METHOD2( void, Qt::Orientation, orientation, 
+        bool, animate )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbInstance::style
+// -----------------------------------------------------------------------------
+//
+HbStyle * HbInstance::style(  ) const
+    {
+    SMC_MOCK_METHOD0( HbStyle * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbInstance::theme
+// -----------------------------------------------------------------------------
+//
+HbTheme * HbInstance::theme(  ) const
+    {
+    SMC_MOCK_METHOD0( HbTheme * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbInstance::typefaceInfo
+// -----------------------------------------------------------------------------
+//
+HbTypefaceInfo * HbInstance::typefaceInfo(  ) const
+    {
+    SMC_MOCK_METHOD0( HbTypefaceInfo * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbInstance::addLibraryPath
+// -----------------------------------------------------------------------------
+//
+void HbInstance::addLibraryPath( 
+        const QString & path )
+    {
+    SMC_MOCK_METHOD1( void, const QString &, path )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbInstance::removeLibraryPath
+// -----------------------------------------------------------------------------
+//
+void HbInstance::removeLibraryPath( 
+        const QString & path )
+    {
+    SMC_MOCK_METHOD1( void, const QString &, path )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbInstance::libraryPaths
+// -----------------------------------------------------------------------------
+//
+QStringList HbInstance::libraryPaths(  ) const
+    {
+    SMC_MOCK_METHOD0( QStringList )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbInstance::setLibraryPaths
+// -----------------------------------------------------------------------------
+//
+void HbInstance::setLibraryPaths( 
+        const QStringList & paths )
+    {
+    SMC_MOCK_METHOD1( void, const QStringList &, paths )
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/mocks/mock_hbmainwindow.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,565 @@
+/*
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include <hbmainwindow.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::HbMainWindow
+// -----------------------------------------------------------------------------
+//
+HbMainWindow::HbMainWindow( 
+        QWidget * parent,
+        Hb::WindowFlags windowFlags )
+    : d_ptr(NULL)
+    //QGraphicsView( /*parent, windowFlags*/ )
+    {
+    
+    }
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::~HbMainWindow
+// -----------------------------------------------------------------------------
+//
+HbMainWindow::~HbMainWindow(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::insertView
+// -----------------------------------------------------------------------------
+//
+HbView * HbMainWindow::insertView( 
+        int index,
+        QGraphicsWidget * widget )
+    {
+    //SMC_MOCK_METHOD2( HbView *, int, index, 
+      //  QGraphicsWidget *, widget )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::removeView
+// -----------------------------------------------------------------------------
+//
+QGraphicsWidget * HbMainWindow::removeView( 
+        int index )
+    {
+    SMC_MOCK_METHOD1( QGraphicsWidget *, int, index )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::currentViewIndex
+// -----------------------------------------------------------------------------
+//
+int HbMainWindow::currentViewIndex(  ) const
+    {
+    SMC_MOCK_METHOD0( int )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::viewCount
+// -----------------------------------------------------------------------------
+//
+int HbMainWindow::viewCount(  ) const
+    {
+    SMC_MOCK_METHOD0( int )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::indexOfView
+// -----------------------------------------------------------------------------
+//
+int HbMainWindow::indexOfView( 
+        HbView * view ) const
+    {
+    //SMC_MOCK_METHOD1( int, HbView *, view )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::viewAt
+// -----------------------------------------------------------------------------
+//
+HbView * HbMainWindow::viewAt( 
+        int index ) const
+    {
+    SMC_MOCK_METHOD1( HbView *, int, index )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::addView
+// -----------------------------------------------------------------------------
+//
+HbView * HbMainWindow::addView( 
+        QGraphicsWidget * widget )
+    {
+    //SMC_MOCK_METHOD1( HbView *, QGraphicsWidget *, widget )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::removeView
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::removeView( 
+        QGraphicsWidget * widget )
+    {
+    //SMC_MOCK_METHOD1( void, QGraphicsWidget *, widget )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::views
+// -----------------------------------------------------------------------------
+//
+QList <HbView * > HbMainWindow::views(  ) const
+    {
+    //SMC_MOCK_METHOD0( QList <HbView * > )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::currentView
+// -----------------------------------------------------------------------------
+//
+HbView * HbMainWindow::currentView(  ) const
+    {
+    SMC_MOCK_METHOD0( HbView * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::setCurrentView
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::setCurrentView( 
+        HbView * view,
+        bool animate,
+        Hb::ViewSwitchFlags flags )
+    {
+    //SMC_MOCK_METHOD3( void, HbView *, view, 
+    //    bool, animate, 
+    //    Hb::ViewSwitchFlags, flags )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::element
+// -----------------------------------------------------------------------------
+//
+QGraphicsWidget * HbMainWindow::element( 
+        HbMainWindow::Element element ) const
+    {
+    //SMC_MOCK_METHOD1( QGraphicsWidget *, HbMainWindow::Element, element )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::setViewSwitchingEnabled
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::setViewSwitchingEnabled( 
+        bool enabled )
+    {
+    SMC_MOCK_METHOD1( void, bool, enabled )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::isViewSwitchingEnabled
+// -----------------------------------------------------------------------------
+//
+bool HbMainWindow::isViewSwitchingEnabled(  ) const
+    {
+    SMC_MOCK_METHOD0( bool )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::softKeyAction
+// -----------------------------------------------------------------------------
+//
+HbAction * HbMainWindow::softKeyAction( 
+        Hb::SoftKeyId key ) const
+    {
+    //SMC_MOCK_METHOD1( HbAction *, Hb::SoftKeyId, key )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::addSoftKeyAction
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::addSoftKeyAction( 
+        Hb::SoftKeyId key,
+        HbAction * action )
+    {
+    //SMC_MOCK_METHOD2( void, Hb::SoftKeyId, key, 
+    //    HbAction *, action )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::removeSoftKeyAction
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::removeSoftKeyAction( 
+        Hb::SoftKeyId key,
+        HbAction * action )
+    {
+    //SMC_MOCK_METHOD2( void, Hb::SoftKeyId, key, 
+    //    HbAction *, action )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::orientation
+// -----------------------------------------------------------------------------
+//
+Qt::Orientation HbMainWindow::orientation(  ) const
+    {
+    SMC_MOCK_METHOD0( Qt::Orientation )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::setOrientation
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::setOrientation( 
+        Qt::Orientation orientation,
+        bool animate )
+    {
+    //SMC_MOCK_METHOD2( void, Qt::Orientation, orientation, 
+    //    bool, animate )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::unsetOrientation
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::unsetOrientation( 
+        bool animate )
+    {
+    SMC_MOCK_METHOD1( void, bool, animate )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::showItems
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::showItems( 
+        Hb::SceneItems items )
+    {
+    //SMC_MOCK_METHOD1( void, Hb::SceneItems, items )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::hideItems
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::hideItems( 
+        Hb::SceneItems items )
+    {
+    //SMC_MOCK_METHOD1( void, Hb::SceneItems, items )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::visibleItems
+// -----------------------------------------------------------------------------
+//
+Hb::SceneItems HbMainWindow::visibleItems(  ) const
+    {
+    SMC_MOCK_METHOD0( Hb::SceneItems )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::isItemVisible
+// -----------------------------------------------------------------------------
+//
+bool HbMainWindow::isItemVisible( 
+        Hb::SceneItem item ) const
+    {
+    //SMC_MOCK_METHOD1( bool, Hb::SceneItem, item )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::setItemVisible
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::setItemVisible( 
+        Hb::SceneItem item,
+        bool visible )
+    {
+    //SMC_MOCK_METHOD2( void, Hb::SceneItem, item, 
+    //    bool, visible )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::nativeBackgroundWindow
+// -----------------------------------------------------------------------------
+//
+WId HbMainWindow::nativeBackgroundWindow(  )
+    {
+    SMC_MOCK_METHOD0( WId )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::resetNativeBackgroundWindow
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::resetNativeBackgroundWindow(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::layoutRect
+// -----------------------------------------------------------------------------
+//
+QRectF HbMainWindow::layoutRect(  ) const
+    {
+    SMC_MOCK_METHOD0( QRectF )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::setCurrentViewIndex
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::setCurrentViewIndex( 
+        int index )
+    {
+    SMC_MOCK_METHOD1( void, int, index )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::nextView
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::nextView(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::previousView
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::previousView(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::broadcastEvent
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::broadcastEvent( 
+        int eventType )
+    {
+    SMC_MOCK_METHOD1( void, int, eventType )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::toggleOrientation
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::toggleOrientation(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::currentViewIndexChanged
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::currentViewIndexChanged( 
+        int index )
+    {
+    SMC_MOCK_METHOD1( void, int, index )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::viewReady
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::viewReady(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::currentViewChanged
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::currentViewChanged( 
+        HbView * view )
+    {
+    //SMC_MOCK_METHOD1( void, HbView *, view )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::aboutToChangeOrientation
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::aboutToChangeOrientation(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::aboutToChangeOrientation
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::aboutToChangeOrientation( 
+        Qt::Orientation newOrientation,
+        bool animated )
+    {
+    //SMC_MOCK_METHOD2( void, Qt::Orientation, newOrientation, 
+    //    bool, animated )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::orientationChanged
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::orientationChanged( 
+        Qt::Orientation orientation )
+    {
+    //SMC_MOCK_METHOD1( void, Qt::Orientation, orientation )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::changeEvent
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::changeEvent( 
+        QEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::closeEvent
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::closeEvent( 
+        QCloseEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QCloseEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::keyPressEvent
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::keyPressEvent( 
+        QKeyEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QKeyEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::keyReleaseEvent
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::keyReleaseEvent( 
+        QKeyEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QKeyEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::resizeEvent
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::resizeEvent( 
+        QResizeEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QResizeEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::customEvent
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::customEvent( 
+        QEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::scrollContentsBy
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::scrollContentsBy( 
+        int dx,
+        int dy )
+    {
+    SMC_MOCK_METHOD2( void, int, dx, 
+        int, dy )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbMainWindow::paintEvent
+// -----------------------------------------------------------------------------
+//
+void HbMainWindow::paintEvent( 
+        QPaintEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QPaintEvent *, event )
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/mocks/mock_mnetworklistenerobserver.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include "mnetworklistenerobserver.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// MNetworkListenerObserver::ShowNote
+// -----------------------------------------------------------------------------
+//
+void MNetworkListenerObserver::ShowNote(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// MNetworkListenerObserver::RemoveNote
+// -----------------------------------------------------------------------------
+//
+void MNetworkListenerObserver::RemoveNote(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/mocks/mock_networkhandlingstarter.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include <networkhandlingstarter.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// NetworkHandlingStarter::NetworkHandlingStarter
+// -----------------------------------------------------------------------------
+//
+NetworkHandlingStarter::NetworkHandlingStarter( 
+        QObject * parent )
+    //:
+    //XQServiceProvider( /*parent*/ )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// NetworkHandlingStarter::~NetworkHandlingStarter
+// -----------------------------------------------------------------------------
+//
+NetworkHandlingStarter::~NetworkHandlingStarter(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// NetworkHandlingStarter::start
+// -----------------------------------------------------------------------------
+//
+void NetworkHandlingStarter::start(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/mocks/mock_networkhandlingstarter_p.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,81 @@
+/*
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include <networkhandlingstarter_p.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// NetworkHandlingStarterPrivate::NetworkHandlingStarterPrivate
+// -----------------------------------------------------------------------------
+//
+NetworkHandlingStarterPrivate::NetworkHandlingStarterPrivate( 
+        QObject *  )
+    //:
+    //QObject( /*parent*/ )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// NetworkHandlingStarterPrivate::~NetworkHandlingStarterPrivate
+// -----------------------------------------------------------------------------
+//
+NetworkHandlingStarterPrivate::~NetworkHandlingStarterPrivate(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// NetworkHandlingStarterPrivate::LaunchCpNetworkPluginView
+// -----------------------------------------------------------------------------
+//
+void NetworkHandlingStarterPrivate::LaunchCpNetworkPluginView(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// NetworkHandlingStarterPrivate::ShowNote
+// -----------------------------------------------------------------------------
+//
+void NetworkHandlingStarterPrivate::ShowNote(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// NetworkHandlingStarterPrivate::RemoveNote
+// -----------------------------------------------------------------------------
+//
+void NetworkHandlingStarterPrivate::RemoveNote(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+/*!
+    NetworkHandlingStarterPrivate::ViewDone()
+ */
+void NetworkHandlingStarterPrivate::ViewDone()
+{
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/mocks/mock_qabstractscrollarea.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,447 @@
+/*
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include <qabstractscrollarea.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::QAbstractScrollArea
+// -----------------------------------------------------------------------------
+//
+QAbstractScrollArea::QAbstractScrollArea( 
+        QAbstractScrollAreaPrivate & dd,
+        QWidget * parent )
+    //:
+    //QFrame( /*dd, parent*/ )
+    {
+    
+    }
+
+QAbstractScrollArea::QAbstractScrollArea(QWidget *parent)
+{
+
+}
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::~QAbstractScrollArea
+// -----------------------------------------------------------------------------
+//
+QAbstractScrollArea::~QAbstractScrollArea(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::verticalScrollBarPolicy
+// -----------------------------------------------------------------------------
+//
+Qt::ScrollBarPolicy QAbstractScrollArea::verticalScrollBarPolicy(  ) const
+    {
+    SMC_MOCK_METHOD0( Qt::ScrollBarPolicy )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::setVerticalScrollBarPolicy
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::setVerticalScrollBarPolicy( 
+        Qt::ScrollBarPolicy )
+    {
+    // SMC_MOCK_METHOD1( void, Qt::, ScrollBarPolicy )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::verticalScrollBar
+// -----------------------------------------------------------------------------
+//
+QScrollBar * QAbstractScrollArea::verticalScrollBar(  ) const
+    {
+    SMC_MOCK_METHOD0( QScrollBar * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::setVerticalScrollBar
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::setVerticalScrollBar( 
+        QScrollBar * scrollbar )
+    {
+    //SMC_MOCK_METHOD1( void, QScrollBar *, scrollbar )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::horizontalScrollBarPolicy
+// -----------------------------------------------------------------------------
+//
+Qt::ScrollBarPolicy QAbstractScrollArea::horizontalScrollBarPolicy(  ) const
+    {
+    SMC_MOCK_METHOD0( Qt::ScrollBarPolicy )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::setHorizontalScrollBarPolicy
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::setHorizontalScrollBarPolicy( 
+        Qt:: ScrollBarPolicy )
+    {
+    //SMC_MOCK_METHOD1( void, Qt::, ScrollBarPolicy )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::horizontalScrollBar
+// -----------------------------------------------------------------------------
+//
+QScrollBar * QAbstractScrollArea::horizontalScrollBar(  ) const
+    {
+    SMC_MOCK_METHOD0( QScrollBar * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::setHorizontalScrollBar
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::setHorizontalScrollBar( 
+        QScrollBar * scrollbar )
+    {
+    //SMC_MOCK_METHOD1( void, QScrollBar *, scrollbar )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::cornerWidget
+// -----------------------------------------------------------------------------
+//
+QWidget * QAbstractScrollArea::cornerWidget(  ) const
+    {
+    SMC_MOCK_METHOD0( QWidget * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::setCornerWidget
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::setCornerWidget( 
+        QWidget * widget )
+    {
+    //SMC_MOCK_METHOD1( void, QWidget *, widget )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::addScrollBarWidget
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::addScrollBarWidget( 
+        QWidget * widget,
+        Qt::Alignment alignment )
+    {
+    //SMC_MOCK_METHOD2( void, QWidget *, widget, 
+    //    Qt::Alignment, alignment )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::scrollBarWidgets
+// -----------------------------------------------------------------------------
+//
+QWidgetList QAbstractScrollArea::scrollBarWidgets( 
+        Qt::Alignment alignment )
+    {
+    //SMC_MOCK_METHOD1( QWidgetList, Qt::Alignment, alignment )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::viewport
+// -----------------------------------------------------------------------------
+//
+QWidget * QAbstractScrollArea::viewport(  ) const
+    {
+    SMC_MOCK_METHOD0( QWidget * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::setViewport
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::setViewport( 
+        QWidget * widget )
+    {
+    //SMC_MOCK_METHOD1( void, QWidget *, widget )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::maximumViewportSize
+// -----------------------------------------------------------------------------
+//
+QSize QAbstractScrollArea::maximumViewportSize(  ) const
+    {
+    SMC_MOCK_METHOD0( QSize )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::minimumSizeHint
+// -----------------------------------------------------------------------------
+//
+QSize QAbstractScrollArea::minimumSizeHint(  ) const
+    {
+    SMC_MOCK_METHOD0( QSize )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::sizeHint
+// -----------------------------------------------------------------------------
+//
+QSize QAbstractScrollArea::sizeHint(  ) const
+    {
+    SMC_MOCK_METHOD0( QSize )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::setupViewport
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::setupViewport( 
+        QWidget * viewport )
+    {
+    //SMC_MOCK_METHOD1( Q_SLOTS : void, QWidget *, viewport )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::setViewportMargins
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::setViewportMargins( 
+        int left,
+        int top,
+        int right,
+        int bottom )
+    {
+    //SMC_MOCK_METHOD4( void, int, left, 
+    //    int, top, 
+    //    int, right, 
+    //    int, bottom )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::setViewportMargins
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::setViewportMargins( 
+        const QMargins & margins )
+    {
+    //SMC_MOCK_METHOD1( void, const QMargins &, margins )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::event
+// -----------------------------------------------------------------------------
+//
+bool QAbstractScrollArea::event( 
+        QEvent * )
+    {
+    //SMC_MOCK_METHOD1( bool, QEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::viewportEvent
+// -----------------------------------------------------------------------------
+//
+bool QAbstractScrollArea::viewportEvent( 
+        QEvent * )
+    {
+    //SMC_MOCK_METHOD1( bool, QEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::resizeEvent
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::resizeEvent( 
+        QResizeEvent * )
+    {
+    //SMC_MOCK_METHOD1( void, QResizeEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::paintEvent
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::paintEvent( 
+        QPaintEvent * )
+    {
+    //SMC_MOCK_METHOD1( void, QPaintEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::mousePressEvent
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::mousePressEvent( 
+        QMouseEvent * )
+    {
+    //SMC_MOCK_METHOD1( void, QMouseEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::mouseReleaseEvent
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::mouseReleaseEvent( 
+        QMouseEvent * )
+    {
+    //SMC_MOCK_METHOD1( void, QMouseEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::mouseDoubleClickEvent
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::mouseDoubleClickEvent( 
+        QMouseEvent * )
+    {
+    //SMC_MOCK_METHOD1( void, QMouseEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::mouseMoveEvent
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::mouseMoveEvent( 
+        QMouseEvent * )
+    {
+    //SMC_MOCK_METHOD1( void, QMouseEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::wheelEvent
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::wheelEvent( 
+        QWheelEvent * )
+    {
+    //SMC_MOCK_METHOD1( void, QWheelEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::contextMenuEvent
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::contextMenuEvent( 
+        QContextMenuEvent * )
+    {
+    //SMC_MOCK_METHOD1( void, QContextMenuEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::dragEnterEvent
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::dragEnterEvent( 
+        QDragEnterEvent * )
+    {
+    //SMC_MOCK_METHOD1( void, QDragEnterEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::dragMoveEvent
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::dragMoveEvent( 
+        QDragMoveEvent * )
+    {
+    //SMC_MOCK_METHOD1( void, QDragMoveEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::dragLeaveEvent
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::dragLeaveEvent( 
+        QDragLeaveEvent * )
+    {
+    //SMC_MOCK_METHOD1( void, QDragLeaveEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::dropEvent
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::dropEvent( 
+        QDropEvent * )
+    {
+    //SMC_MOCK_METHOD1( void, QDropEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::keyPressEvent
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::keyPressEvent( 
+        QKeyEvent * )
+    {
+    //SMC_MOCK_METHOD1( void, QKeyEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QAbstractScrollArea::scrollContentsBy
+// -----------------------------------------------------------------------------
+//
+void QAbstractScrollArea::scrollContentsBy( 
+        int dx,
+        int dy )
+    {
+    SMC_MOCK_METHOD2( void, int, dx, 
+        int, dy )
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/mocks/mock_qframe.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,256 @@
+/*
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include <qframe.h>
+#include <QWidget>
+
+
+QWidget::QWidget(QWidget* parent, Qt::WindowFlags f)
+    {};
+
+QWidget::~QWidget()
+    {};
+
+void QWidget::setVisible(bool visible)
+    {};
+
+inline bool QWidget::testAttribute_helper(Qt::WidgetAttribute attribute) const
+{
+    return true;
+}
+    
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// QFrame::QFrame
+// -----------------------------------------------------------------------------
+//
+QFrame::QFrame( 
+        QWidget * parent,
+        Qt::WindowFlags f )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::~QFrame
+// -----------------------------------------------------------------------------
+//
+QFrame::~QFrame(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::frameStyle
+// -----------------------------------------------------------------------------
+//
+int QFrame::frameStyle(  ) const
+    {
+    SMC_MOCK_METHOD0( int )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::setFrameStyle
+// -----------------------------------------------------------------------------
+//
+void QFrame::setFrameStyle( int )
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::frameWidth
+// -----------------------------------------------------------------------------
+//
+int QFrame::frameWidth(  ) const
+    {
+    SMC_MOCK_METHOD0( int )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::sizeHint
+// -----------------------------------------------------------------------------
+//
+QSize QFrame::sizeHint(  ) const
+    {
+    SMC_MOCK_METHOD0( QSize )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::frameShape
+// -----------------------------------------------------------------------------
+//
+QFrame::Shape QFrame::frameShape(  ) const
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::setFrameShape
+// -----------------------------------------------------------------------------
+//
+void QFrame::setFrameShape( Shape )
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::frameShadow
+// -----------------------------------------------------------------------------
+//
+QFrame::Shadow QFrame::frameShadow(  ) const
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::setFrameShadow
+// -----------------------------------------------------------------------------
+//
+void QFrame::setFrameShadow( Shadow )
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::lineWidth
+// -----------------------------------------------------------------------------
+//
+int QFrame::lineWidth(  ) const
+    {
+    SMC_MOCK_METHOD0( int )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::setLineWidth
+// -----------------------------------------------------------------------------
+//
+void QFrame::setLineWidth( int )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::midLineWidth
+// -----------------------------------------------------------------------------
+//
+int QFrame::midLineWidth(  ) const
+    {
+    SMC_MOCK_METHOD0( int )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::setMidLineWidth
+// -----------------------------------------------------------------------------
+//
+void QFrame::setMidLineWidth( int )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::frameRect
+// -----------------------------------------------------------------------------
+//
+QRect QFrame::frameRect(  ) const
+    {
+    SMC_MOCK_METHOD0( QRect )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::setFrameRect
+// -----------------------------------------------------------------------------
+//
+void QFrame::setFrameRect( 
+        const QRect & )
+    {
+    //SMC_MOCK_METHOD1( void, const QRect, & )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::event
+// -----------------------------------------------------------------------------
+//
+bool QFrame::event( 
+        QEvent * e )
+    {
+    //SMC_MOCK_METHOD1( bool, QEvent *, e )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::paintEvent
+// -----------------------------------------------------------------------------
+//
+void QFrame::paintEvent( 
+        QPaintEvent * )
+    {
+    //SMC_MOCK_METHOD1( void, QPaintEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::changeEvent
+// -----------------------------------------------------------------------------
+//
+void QFrame::changeEvent( 
+        QEvent * )
+    {
+    //SMC_MOCK_METHOD1( void, QEvent, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::drawFrame
+// -----------------------------------------------------------------------------
+//
+void QFrame::drawFrame( 
+        QPainter * )
+    {
+    //SMC_MOCK_METHOD1( void, QPainter, * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QFrame::QFrame
+// -----------------------------------------------------------------------------
+//
+QFrame::QFrame( 
+        QFramePrivate & dd,
+        QWidget * parent,
+        Qt::WindowFlags f )
+    //:
+    //QWidget( /*dd, parent, f*/ )
+    {
+    
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/mocks/mock_qgraphicsview.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,1150 @@
+/*
+* 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:
+*
+*/
+#include <QDebug>
+#include <QVariant>
+#include <smcmockclassincludes.h>
+#include <qgraphicsview.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::QGraphicsView
+// -----------------------------------------------------------------------------
+//
+QGraphicsView::QGraphicsView( 
+        QWidget * parent )
+    //:
+    //QAbstractScrollArea( /*parent*/ )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::QGraphicsView
+// -----------------------------------------------------------------------------
+//
+QGraphicsView::QGraphicsView( 
+        QGraphicsScene * scene,
+        QWidget * parent )
+    //:
+    //QAbstractScrollArea( /*scene, parent*/ )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::~QGraphicsView
+// -----------------------------------------------------------------------------
+//
+QGraphicsView::~QGraphicsView(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::sizeHint
+// -----------------------------------------------------------------------------
+//
+QSize QGraphicsView::sizeHint(  ) const
+    {
+    SMC_MOCK_METHOD0( QSize )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::renderHints
+// -----------------------------------------------------------------------------
+//
+QPainter::RenderHints QGraphicsView::renderHints(  ) const
+    {
+    SMC_MOCK_METHOD0( QPainter::RenderHints )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setRenderHint
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setRenderHint( 
+        QPainter::RenderHint hint,
+        bool enabled )
+    {
+    //SMC_MOCK_METHOD2( void, QPainter::RenderHint, hint, 
+    //    bool, enabled )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setRenderHints
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setRenderHints( 
+        QPainter::RenderHints hints )
+    {
+    //SMC_MOCK_METHOD1( void, QPainter::RenderHints, hints )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::alignment
+// -----------------------------------------------------------------------------
+//
+Qt::Alignment QGraphicsView::alignment(  ) const
+    {
+    SMC_MOCK_METHOD0( Qt::Alignment )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setAlignment
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setAlignment( 
+        Qt::Alignment alignment )
+    {
+    //SMC_MOCK_METHOD1( void, Qt::Alignment, alignment )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::transformationAnchor
+// -----------------------------------------------------------------------------
+//
+QGraphicsView::ViewportAnchor QGraphicsView::transformationAnchor(  ) const
+    {
+    SMC_MOCK_METHOD0( ViewportAnchor )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setTransformationAnchor
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setTransformationAnchor( 
+        ViewportAnchor anchor )
+    {
+    //SMC_MOCK_METHOD1( void, ViewportAnchor, anchor )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::resizeAnchor
+// -----------------------------------------------------------------------------
+//
+/*
+ViewportAnchor QGraphicsView::resizeAnchor(  ) const
+    {
+    SMC_MOCK_METHOD0( ViewportAnchor )
+    }
+*/
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setResizeAnchor
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setResizeAnchor( 
+        QGraphicsView::ViewportAnchor anchor )
+    {
+    //SMC_MOCK_METHOD1( void, ViewportAnchor, anchor )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::viewportUpdateMode
+// -----------------------------------------------------------------------------
+//
+QGraphicsView::ViewportUpdateMode QGraphicsView::viewportUpdateMode(  ) const
+    {
+    SMC_MOCK_METHOD0( ViewportUpdateMode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setViewportUpdateMode
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setViewportUpdateMode( 
+        QGraphicsView::ViewportUpdateMode mode )
+    {
+    //SMC_MOCK_METHOD1( void, ViewportUpdateMode, mode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::optimizationFlags
+// -----------------------------------------------------------------------------
+//
+QGraphicsView::OptimizationFlags QGraphicsView::optimizationFlags(  ) const
+    {
+    SMC_MOCK_METHOD0( OptimizationFlags )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setOptimizationFlag
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setOptimizationFlag( 
+        QGraphicsView::OptimizationFlag flag,
+        bool enabled )
+    {
+    SMC_MOCK_METHOD2( void, OptimizationFlag, flag, 
+        bool, enabled )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setOptimizationFlags
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setOptimizationFlags( 
+        OptimizationFlags flags )
+    {
+    //SMC_MOCK_METHOD1( void, OptimizationFlags, flags )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::dragMode
+// -----------------------------------------------------------------------------
+//
+QGraphicsView::DragMode QGraphicsView::dragMode(  ) const
+    {
+    SMC_MOCK_METHOD0( DragMode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setDragMode
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setDragMode( 
+        DragMode mode )
+    {
+    //SMC_MOCK_METHOD1( void, DragMode, mode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::rubberBandSelectionMode
+// -----------------------------------------------------------------------------
+//
+Qt::ItemSelectionMode QGraphicsView::rubberBandSelectionMode(  ) const
+    {
+    SMC_MOCK_METHOD0( Qt::ItemSelectionMode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setRubberBandSelectionMode
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setRubberBandSelectionMode( 
+        Qt::ItemSelectionMode mode )
+    {
+    //SMC_MOCK_METHOD1( void, Qt::ItemSelectionMode, mode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::cacheMode
+// -----------------------------------------------------------------------------
+//
+QGraphicsView::CacheMode QGraphicsView::cacheMode(  ) const
+    {
+    SMC_MOCK_METHOD0( CacheMode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setCacheMode
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setCacheMode( 
+        CacheMode mode )
+    {
+    //SMC_MOCK_METHOD1( void, CacheMode, mode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::resetCachedContent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::resetCachedContent(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::isInteractive
+// -----------------------------------------------------------------------------
+//
+bool QGraphicsView::isInteractive(  ) const
+    {
+    SMC_MOCK_METHOD0( bool )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setInteractive
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setInteractive( 
+        bool allowed )
+    {
+    SMC_MOCK_METHOD1( void, bool, allowed )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::scene
+// -----------------------------------------------------------------------------
+//
+QGraphicsScene * QGraphicsView::scene(  ) const
+    {
+    SMC_MOCK_METHOD0( QGraphicsScene * )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setScene
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setScene( 
+        QGraphicsScene * scene )
+    {
+    //SMC_MOCK_METHOD1( void, QGraphicsScene *, scene )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::sceneRect
+// -----------------------------------------------------------------------------
+//
+QRectF QGraphicsView::sceneRect(  ) const
+    {
+    SMC_MOCK_METHOD0( QRectF )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setSceneRect
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setSceneRect( 
+        const QRectF & rect )
+    {
+    //SMC_MOCK_METHOD1( void, const QRectF &, rect )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::matrix
+// -----------------------------------------------------------------------------
+//
+QMatrix QGraphicsView::matrix(  ) const
+    {
+    SMC_MOCK_METHOD0( QMatrix )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setMatrix
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setMatrix( 
+        const QMatrix & matrix,
+        bool combine )
+    {
+    //SMC_MOCK_METHOD2( void, const QMatrix &, matrix, 
+    //    bool, combine )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::resetMatrix
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::resetMatrix(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::transform
+// -----------------------------------------------------------------------------
+//
+QTransform QGraphicsView::transform(  ) const
+    {
+    SMC_MOCK_METHOD0( QTransform )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::viewportTransform
+// -----------------------------------------------------------------------------
+//
+QTransform QGraphicsView::viewportTransform(  ) const
+    {
+    SMC_MOCK_METHOD0( QTransform )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::isTransformed
+// -----------------------------------------------------------------------------
+//
+bool QGraphicsView::isTransformed(  ) const
+    {
+    SMC_MOCK_METHOD0( bool )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setTransform
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setTransform( 
+        const QTransform & matrix,
+        bool combine )
+    {
+    //SMC_MOCK_METHOD2( void, const QTransform &, matrix, 
+    //    bool, combine )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::resetTransform
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::resetTransform(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::rotate
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::rotate( 
+        qreal angle )
+    {
+    //SMC_MOCK_METHOD1( void, qreal, angle )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::scale
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::scale( 
+        qreal sx,
+        qreal sy )
+    {
+    //SMC_MOCK_METHOD2( void, qreal, sx, 
+    //    qreal, sy )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::shear
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::shear( 
+        qreal sh,
+        qreal sv )
+    {
+    //SMC_MOCK_METHOD2( void, qreal, sh, 
+    //    qreal, sv )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::translate
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::translate( 
+        qreal dx,
+        qreal dy )
+    {
+    SMC_MOCK_METHOD2( void, qreal, dx, 
+        qreal, dy )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::centerOn
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::centerOn( 
+        const QPointF & pos )
+    {
+    //SMC_MOCK_METHOD1( void, const QPointF &, pos )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::centerOn
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::centerOn( 
+        const QGraphicsItem * item )
+    {
+    //SMC_MOCK_METHOD1( void, const QGraphicsItem *, item )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::ensureVisible
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::ensureVisible( 
+        const QRectF & rect,
+        int xmargin,
+        int ymargin )
+    {
+    //SMC_MOCK_METHOD3( void, const QRectF &, rect, 
+    //    int, xmargin, 
+    //    int, ymargin )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::ensureVisible
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::ensureVisible( 
+        const QGraphicsItem * item,
+        int xmargin,
+        int ymargin )
+    {
+    //SMC_MOCK_METHOD3( void, const QGraphicsItem *, item, 
+    //    int, xmargin, 
+    //    int, ymargin )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::fitInView
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::fitInView( 
+        const QRectF & rect,
+        Qt::AspectRatioMode aspectRadioMode )
+    {
+    //SMC_MOCK_METHOD2( void, const QRectF &, rect, 
+    //    Qt::AspectRatioMode, aspectRadioMode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::fitInView
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::fitInView( 
+        const QGraphicsItem * item,
+        Qt::AspectRatioMode aspectRadioMode )
+    {
+    //SMC_MOCK_METHOD2( void, const QGraphicsItem *, item, 
+    //    Qt::AspectRatioMode, aspectRadioMode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::render
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::render( 
+        QPainter * painter,
+        const QRectF & target,
+        const QRect & source,
+        Qt::AspectRatioMode aspectRatioMode )
+    {
+    //SMC_MOCK_METHOD4( void, QPainter *, painter, 
+    //    const QRectF &, target, 
+    //    const QRect &, source, 
+    //    Qt::AspectRatioMode, aspectRatioMode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::items
+// -----------------------------------------------------------------------------
+//
+QList <QGraphicsItem * > QGraphicsView::items(  ) const
+    {
+    SMC_MOCK_METHOD0( QList <QGraphicsItem * > )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::items
+// -----------------------------------------------------------------------------
+//
+QList <QGraphicsItem * > QGraphicsView::items( 
+        const QPoint & pos ) const
+    {
+    //SMC_MOCK_METHOD1( QList <QGraphicsItem * >, const QPoint &, pos )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::items
+// -----------------------------------------------------------------------------
+//
+QList <QGraphicsItem * > QGraphicsView::items( 
+        const QRect & rect,
+        Qt::ItemSelectionMode mode ) const
+    {
+    //SMC_MOCK_METHOD2( QList <QGraphicsItem * >, const QRect &, rect, 
+    //   Qt::ItemSelectionMode, mode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::items
+// -----------------------------------------------------------------------------
+//
+QList <QGraphicsItem * > QGraphicsView::items( 
+        const QPolygon & polygon,
+        Qt::ItemSelectionMode mode ) const
+    {
+    //SMC_MOCK_METHOD2( QList <QGraphicsItem * >, const QPolygon &, polygon, 
+    //    Qt::ItemSelectionMode, mode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::items
+// -----------------------------------------------------------------------------
+//
+QList <QGraphicsItem * > QGraphicsView::items( 
+        const QPainterPath & path,
+        Qt::ItemSelectionMode mode ) const
+    {
+    //SMC_MOCK_METHOD2( QList <QGraphicsItem * >, const QPainterPath &, path, 
+    //    Qt::ItemSelectionMode, mode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::itemAt
+// -----------------------------------------------------------------------------
+//
+QGraphicsItem * QGraphicsView::itemAt( 
+        const QPoint & pos ) const
+    {
+    //SMC_MOCK_METHOD1( QGraphicsItem *, const QPoint &, pos )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::mapToScene
+// -----------------------------------------------------------------------------
+//
+QPointF QGraphicsView::mapToScene( 
+        const QPoint & point ) const
+    {
+    //SMC_MOCK_METHOD1( QPointF, const QPoint &, point )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::mapToScene
+// -----------------------------------------------------------------------------
+//
+QPolygonF QGraphicsView::mapToScene( 
+        const QRect & rect ) const
+    {
+    //SMC_MOCK_METHOD1( QPolygonF, const QRect &, rect )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::mapToScene
+// -----------------------------------------------------------------------------
+//
+QPolygonF QGraphicsView::mapToScene( 
+        const QPolygon & polygon ) const
+    {
+    //SMC_MOCK_METHOD1( QPolygonF, const QPolygon &, polygon )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::mapToScene
+// -----------------------------------------------------------------------------
+//
+QPainterPath QGraphicsView::mapToScene( 
+        const QPainterPath & path ) const
+    {
+    //SMC_MOCK_METHOD1( QPainterPath, const QPainterPath &, path )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::mapFromScene
+// -----------------------------------------------------------------------------
+//
+QPoint QGraphicsView::mapFromScene( 
+        const QPointF & point ) const
+    {
+    SMC_MOCK_METHOD1( QPoint, const QPointF &, point )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::mapFromScene
+// -----------------------------------------------------------------------------
+//
+QPolygon QGraphicsView::mapFromScene( 
+        const QRectF & rect ) const
+    {
+    //SMC_MOCK_METHOD1( QPolygon, const QRectF &, rect )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::mapFromScene
+// -----------------------------------------------------------------------------
+//
+QPolygon QGraphicsView::mapFromScene( 
+        const QPolygonF & polygon ) const
+    {
+    //SMC_MOCK_METHOD1( QPolygon, const QPolygonF &, polygon )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::mapFromScene
+// -----------------------------------------------------------------------------
+//
+QPainterPath QGraphicsView::mapFromScene( 
+        const QPainterPath & path ) const
+    {
+    //SMC_MOCK_METHOD1( QPainterPath, const QPainterPath &, path )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::inputMethodQuery
+// -----------------------------------------------------------------------------
+//
+QVariant QGraphicsView::inputMethodQuery( 
+        Qt::InputMethodQuery query ) const
+    {
+    //SMC_MOCK_METHOD1( QVariant, Qt::InputMethodQuery, query )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::backgroundBrush
+// -----------------------------------------------------------------------------
+//
+QBrush QGraphicsView::backgroundBrush(  ) const
+    {
+    SMC_MOCK_METHOD0( QBrush )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setBackgroundBrush
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setBackgroundBrush( 
+        const QBrush & brush )
+    {
+    //SMC_MOCK_METHOD1( void, const QBrush &, brush )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::foregroundBrush
+// -----------------------------------------------------------------------------
+//
+QBrush QGraphicsView::foregroundBrush(  ) const
+    {
+    SMC_MOCK_METHOD0( QBrush )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setForegroundBrush
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setForegroundBrush( 
+        const QBrush & brush )
+    {
+    //SMC_MOCK_METHOD1( void, const QBrush &, brush )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::updateScene
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::updateScene( 
+        const QList<QRectF> & rects )
+    {
+    //SMC_MOCK_METHOD1( Q_SLOTS : void, const QList<QRectF> &, rects )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::invalidateScene
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::invalidateScene( 
+        const QRectF & rect,
+        QGraphicsScene::SceneLayers layers )
+    {
+    //SMC_MOCK_METHOD2( void, const QRectF &, rect, 
+    //    QGraphicsScene::SceneLayers, layers )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::updateSceneRect
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::updateSceneRect( 
+        const QRectF & rect )
+    {
+    //SMC_MOCK_METHOD1( void, const QRectF &, rect )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::setupViewport
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::setupViewport( 
+        QWidget * widget )
+    {
+    //SMC_MOCK_METHOD1( Q_SLOTS : void, QWidget *, widget )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::QGraphicsView
+// -----------------------------------------------------------------------------
+//
+QGraphicsView::QGraphicsView( 
+        QGraphicsViewPrivate &,
+        QWidget * parent )
+    //:
+    //QAbstractScrollArea( /*&, parent*/ )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::event
+// -----------------------------------------------------------------------------
+//
+bool QGraphicsView::event( 
+        QEvent * event )
+    {
+    //SMC_MOCK_METHOD1( bool, QEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::viewportEvent
+// -----------------------------------------------------------------------------
+//
+bool QGraphicsView::viewportEvent( 
+        QEvent * event )
+    {
+    //SMC_MOCK_METHOD1( bool, QEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::contextMenuEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::contextMenuEvent( 
+        QContextMenuEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QContextMenuEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::dragEnterEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::dragEnterEvent( 
+        QDragEnterEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QDragEnterEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::dragLeaveEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::dragLeaveEvent( 
+        QDragLeaveEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QDragLeaveEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::dragMoveEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::dragMoveEvent( 
+        QDragMoveEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QDragMoveEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::dropEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::dropEvent( 
+        QDropEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QDropEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::focusInEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::focusInEvent( 
+        QFocusEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QFocusEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::focusNextPrevChild
+// -----------------------------------------------------------------------------
+//
+bool QGraphicsView::focusNextPrevChild( 
+        bool next )
+    {
+    //SMC_MOCK_METHOD1( bool, bool, next )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::focusOutEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::focusOutEvent( 
+        QFocusEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QFocusEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::keyPressEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::keyPressEvent( 
+        QKeyEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QKeyEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::keyReleaseEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::keyReleaseEvent( 
+        QKeyEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QKeyEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::mouseDoubleClickEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::mouseDoubleClickEvent( 
+        QMouseEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QMouseEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::mousePressEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::mousePressEvent( 
+        QMouseEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QMouseEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::mouseMoveEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::mouseMoveEvent( 
+        QMouseEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QMouseEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::mouseReleaseEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::mouseReleaseEvent( 
+        QMouseEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QMouseEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::wheelEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::wheelEvent( 
+        QWheelEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QWheelEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::paintEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::paintEvent( 
+        QPaintEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QPaintEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::resizeEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::resizeEvent( 
+        QResizeEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QResizeEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::scrollContentsBy
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::scrollContentsBy( 
+        int dx,
+        int dy )
+    {
+    //SMC_MOCK_METHOD2( void, int, dx, 
+    //    int, dy )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::showEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::showEvent( 
+        QShowEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QShowEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::inputMethodEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::inputMethodEvent( 
+        QInputMethodEvent * event )
+    {
+    //SMC_MOCK_METHOD1( void, QInputMethodEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::drawBackground
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::drawBackground( 
+        QPainter * painter,
+        const QRectF & rect )
+    {
+    //SMC_MOCK_METHOD2( void, QPainter *, painter, 
+    //    const QRectF &, rect )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::drawForeground
+// -----------------------------------------------------------------------------
+//
+void QGraphicsView::drawForeground( 
+        QPainter * painter,
+        const QRectF & rect )
+    {
+    //SMC_MOCK_METHOD2( void, QPainter *, painter, 
+    //    const QRectF &, rect )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsView::drawItems
+// -----------------------------------------------------------------------------
+//
+/*
+void QGraphicsView::drawItems( 
+        QPainter * painter,
+        int numItems,
+        QGraphicsItem * items,
+        const QStyleOptionGraphicsItem options )
+    {
+    //SMC_MOCK_METHOD4( void, QPainter *, painter, 
+    //    int, numItems, 
+    //    QGraphicsItem *, items, 
+    //    const QStyleOptionGraphicsItem, options )
+    }
+
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,194 @@
+rem
+rem Copyright (c) 2009 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
+
+@echo off
+setlocal
+goto :startup 
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function DEFAULT
+::
+:: Modify this function
+::  - TESTED_SRC can be changed to match tested code.
+::    Specifies path from testcode group directory to
+::    tested code
+::  - Add test directories to be runned
+::    ie. "call :build ut_projectdirectory" or use
+::    "for /f %%a in ('dir /b ut_*') do call :build %%a"
+::    which compiles, instruments and runs all test directories
+::    starting with "ut_".
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:DEFAULT
+set TESTED_SRC=..\..\src\*.cpp
+
+for /f %%a in ('dir /b ut_*') do call :build %%a
+if [%DOMODULESTESTS%] EQU [TRUE] (
+for /f %%a in ('dir /b mt_*') do call :build %%a
+)
+
+call :finish
+goto :END
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function STARTUP
+::
+:: Initializing script
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:STARTUP
+
+set BUILDTESTS=TRUE
+set RUNTESTS=TRUE
+set INSTRUMENT=TRUE
+set REMOVEINSTRUMENT=TRUE
+set DOMODULESTESTS=TRUE
+set SBS_CALL=sbs --config winscw_udeb --keepgoing BUILD
+set PATH_TO_DLL=\epoc32\release\winscw\udeb
+set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
+
+if not exist %PATH_TO_COVERAGE_DATA% (
+mkdir %PATH_TO_COVERAGE_DATA%
+)
+
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
+if [%1] EQU [] ( goto default )
+
+call :%1
+call :%2
+call :%3
+call :%4
+call :%5
+echo Running tests = %RUNTESTS%
+echo Instrumenting tests = %INSTRUMENT%
+goto default
+
+:/NOCLEANUP
+set REMOVEINSTRUMENT=FALSE
+goto end
+
+:/NORUN
+set RUNTESTS=FALSE
+set REMOVEINSTRUMENT=FALSE
+goto end
+
+:/NOINSTRUMENT
+set INSTRUMENT=FALSE
+goto end
+
+:/NOBUILD
+set BUILDTESTS=FALSE
+goto end
+
+:/ONLYUNITTESTS
+set DOMODULESTESTS=FALSE
+goto end
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function FINISH
+::
+:: Finishes run_auto_tests.bat
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:FINISH
+
+if [%RUNTESTS%] EQU [TRUE] (
+call :runtests
+)
+
+if [%INSTRUMENT%] EQU [TRUE] (
+call :calculatecoverage
+)
+
+if [%REMOVEINSTRUMENT%] EQU [TRUE] (
+call :removecoverage
+)
+goto end
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function BUILD
+::    param directory
+::
+:: builds test from given directory
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:BUILD
+setlocal
+if [%BUILDTESTS%] EQU [FALSE] ( goto end )
+echo Building %1
+if not exist %1 ( 
+echo %1 Not found! 
+goto end
+)
+
+pushd .
+call cd %1
+call qmake
+call sbs --config winscw_udeb --keepgoing CLEAN
+if [%INSTRUMENT%] EQU [TRUE] (
+call ctcwrap -2comp -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" "%SBS_CALL%"
+) else (
+call %SBS_CALL%
+)
+
+popd
+endlocal
+goto end
+
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function RUNTESTS
+::
+:: NOTE! Function assumes that test binary is named according to test directory.
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:RUNTESTS
+echo Running tests
+for /f %%a in ('dir /b ut_*') do (
+    call %PATH_TO_DLL%\%%a.exe -dtextshell --
+    move \epoc32\winscw\c\data\%%a.log %PATH_TO_RESULT%\%%a.log
+)
+goto end
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function CALCULATECOVERAGE
+::
+:: Calculates test coverage. Generates html
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:CALCULATECOVERAGE
+echo Calculating coverage
+ctcpost %PATH_TO_COVERAGE_DATA%\*.sym | ctcmerge -i - -o profile.txt
+call ctc2html -t 70 -i profile.txt -o \coverage_result -nsb
+goto end
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function REMOVECOVERAGE
+::
+:: Removes data from coverage directory
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:REMOVECOVERAGE
+echo Removing deleting coverage data
+call del %PATH_TO_COVERAGE_DATA%\*.sym
+call del %PATH_TO_COVERAGE_DATA%\*.dat
+call del profile.txt
+goto end
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function END
+::
+:: Prints done
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:END
+echo Done!
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/ut_cnetworklistener/inc/ut_cnetworklistener.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* 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 UT_CNETWORKLISTENER_H
+#define UT_CNETWORKLISTENER_H
+
+#include <QtTest/QtTest>
+#include <mockservice.h>
+#include <mnetworklistenerobserver.h>
+
+class CNetworkListener;
+
+class ut_cnetworklistener : public QObject, public MockService, public MNetworkListenerObserver
+{
+    Q_OBJECT
+
+public:
+    
+    ut_cnetworklistener();
+    ~ut_cnetworklistener();
+    
+public: 
+    // From MNetworkListenerObserver
+    void ShowNote();
+    void RemoveNote();
+    
+private slots:
+
+    void init();
+    void cleanup();
+    
+    void t_HandleNetworkMessage();
+    void t_HandleNetworkError();
+    void t_NWLostDelayCallBack();
+
+    
+private:
+    
+    CNetworkListener *m_networkListener;
+
+};
+
+#endif // UT_CNETWORKLISTENER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/ut_cnetworklistener/src/ut_cnetworklistener.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,149 @@
+/*
+* 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:
+*
+*/
+#include <ut_cnetworklistener.h>
+#include <qtestmains60.h>
+#include <cnetworklistener.h>
+#include <NetworkHandlingProxy.h>
+#include <CNWSession.h>
+#include <NWHandlingEngine.h>
+
+TNWInfo* PoiterNWInfo;
+
+CNWSession* CreateL( MNWMessageObserver& /*aMessage*/, TNWInfo& aTNWInfo )
+{
+    PoiterNWInfo = &aTNWInfo;
+    aTNWInfo.iSelectionSetting = ENWNetworkSelectionManual;
+    aTNWInfo.iRegistrationStatus = ENWRegistrationDenied;
+    CNWSession* nullPointer(NULL);
+    return nullPointer;
+}
+
+/*!
+  ut_cnetworklistener::ut_cnetworklistener
+ */
+ut_cnetworklistener::ut_cnetworklistener() 
+    : m_networkListener(0)
+{
+}
+
+/*!
+  ut_cnetworklistener::~ut_cnetworklistener
+ */
+ut_cnetworklistener::~ut_cnetworklistener()
+{
+    delete m_networkListener;
+}
+
+/*!
+  ut_cnetworklistener::init
+ */
+void ut_cnetworklistener::init()
+{
+    initialize();
+    
+    m_networkListener = CNetworkListener::NewL(*this);
+    
+    QVERIFY(verify());
+}
+
+/*!
+  ut_cnetworklistener::cleanup
+ */
+void ut_cnetworklistener::cleanup()
+{
+    delete m_networkListener;
+    m_networkListener = 0;
+    
+    reset();
+}
+
+/*!
+    From MNetworkListenerObserver
+ */
+void ut_cnetworklistener::ShowNote()
+{
+}
+
+/*!
+    From MNetworkListenerObserver
+ */
+void ut_cnetworklistener::RemoveNote()
+{
+}
+
+/*!
+  ut_cnetworklistener::t_HandleNetworkMessage
+ */
+void ut_cnetworklistener::t_HandleNetworkMessage()
+{
+    m_networkListener->HandleNetworkMessage(MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange);
+    
+    PoiterNWInfo->iRegistrationStatus = ENWNotRegisteredNoService;
+    m_networkListener->HandleNetworkMessage(MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange);
+    
+    PoiterNWInfo->iRegistrationStatus = ENWNotRegisteredEmergencyOnly;
+    m_networkListener->HandleNetworkMessage(MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange);
+    PoiterNWInfo->iRegistrationStatus = ENWNotRegisteredSearching;
+    m_networkListener->HandleNetworkMessage(MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange);
+    
+    PoiterNWInfo->iRegistrationStatus = ENWRegisteredBusy;
+    m_networkListener->HandleNetworkMessage(MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange);
+    
+    PoiterNWInfo->iRegistrationStatus = ENWRegisteredOnHomeNetwork;
+    m_networkListener->HandleNetworkMessage(MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange);
+    
+    PoiterNWInfo->iRegistrationStatus = ENWRegisteredRoaming;
+    m_networkListener->HandleNetworkMessage(MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange);
+    
+    PoiterNWInfo->iRegistrationStatus = ENWRegistrationUnknown;
+    m_networkListener->HandleNetworkMessage(MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange);
+    
+    PoiterNWInfo->iSelectionSetting = ENWNetworkSelectionAutomatic;
+    PoiterNWInfo->iRegistrationStatus = ENWNotRegisteredNoService;
+    m_networkListener->HandleNetworkMessage(MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange);
+    PoiterNWInfo->iRegistrationStatus = ENWRegisteredOnHomeNetwork;
+    m_networkListener->HandleNetworkMessage(MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange);
+    
+    m_networkListener->HandleNetworkMessage(MNWMessageObserver::ENWMessageNetworkModeChange);
+    
+    PoiterNWInfo->iRegistrationStatus = (TNWRegistrationStatus)123456789;
+    m_networkListener->HandleNetworkMessage(MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange);  
+}
+
+/*!
+  ut_cnetworklistener::t_HandleNetworkError
+ */
+void ut_cnetworklistener::t_HandleNetworkError()
+{
+    m_networkListener->HandleNetworkError( 
+        MNWMessageObserver::ENWGetServiceProviderName, KErrGeneral );
+}
+
+/*!
+  ut_cnetworklistener::t_NWLostDelayCallBack
+ */
+void ut_cnetworklistener::t_NWLostDelayCallBack()
+{
+    TAny* pointer(NULL); 
+    m_networkListener->NWLostDelayCallBack(pointer);
+    
+    CNetworkListener* networklistener = CNetworkListener::NewL(*this);; 
+    m_networkListener->NWLostDelayCallBack( networklistener );
+    delete networklistener;
+}
+
+QTEST_MAIN_S60(ut_cnetworklistener)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/ut_cnetworklistener/ut_cnetworklistener.pro	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,48 @@
+#
+# 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: Project file for building unit test component
+#
+#
+
+CONFIG += qtestlib hb
+TEMPLATE = app
+TARGET = 
+
+INCLUDEPATH += ./inc
+INCLUDEPATH += ../../inc
+INCLUDEPATH += ../common
+DEFINES += QT_NO_DEBUG_STREAM BUILD_NETWORKHANDLINGSTARTER
+
+QT -= gui
+QT += testlib
+
+symbian: {
+  CONFIG += no_icon
+  INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+  LIBS += -lmocklib \
+          -lsymbianmock
+}
+
+# test code
+HEADERS += ./inc/ut_cnetworklistener.h
+SOURCES += ./src/ut_cnetworklistener.cpp
+
+# code to be tested
+HEADERS += ../../inc/cnetworklistener.h
+SOURCES += ../../src/cnetworklistener.cpp
+
+# mocks needed for testing
+SOURCES += ../mocks/mock_cnwsession.cpp
+SOURCES += ../mocks/mock_centralrepository.cpp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/ut_networkhandlingstarter/inc/ut_networkhandlingstarter.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* 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 UT_NETWORKHANDLINGSTARTER_H
+#define UT_NETWORKHANDLINGSTARTER_H
+
+#include <QtTest/QtTest>
+#include <mockservice.h>
+
+class NetworkHandlingStarter;
+
+class ut_networkhandlingstarter : public QObject, public MockService
+{
+    Q_OBJECT
+
+public:
+    
+    ut_networkhandlingstarter();
+    ~ut_networkhandlingstarter();
+    
+private slots:
+
+    void init();
+    void cleanup();
+    
+    void t_test();
+
+    
+private:
+    
+    NetworkHandlingStarter *m_NetworkHandlingStarter;
+
+};
+
+#endif // UT_NETWORKHANDLINGSTARTER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/ut_networkhandlingstarter/src/ut_networkhandlingstarter.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,68 @@
+/*
+* 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:
+*
+*/
+#include <ut_networkhandlingstarter.h>
+#include <qtestmains60.h>
+#include <networkhandlingstarter.h>
+
+/*!
+  ut_networkhandlingstarter::ut_networkhandlingstarter
+ */
+ut_networkhandlingstarter::ut_networkhandlingstarter() 
+    : m_NetworkHandlingStarter(0)
+{
+}
+
+/*!
+  ut_networkhandlingstarter::~ut_networkhandlingstarter
+ */
+ut_networkhandlingstarter::~ut_networkhandlingstarter()
+{
+}
+
+/*!
+  ut_networkhandlingstarter::init
+ */
+void ut_networkhandlingstarter::init()
+{
+    initialize();
+    
+    m_NetworkHandlingStarter = new NetworkHandlingStarter();
+    
+    QVERIFY(verify());
+}
+
+/*!
+  ut_networkhandlingstarter::cleanup
+ */
+void ut_networkhandlingstarter::cleanup()
+{
+    delete m_NetworkHandlingStarter;
+    m_NetworkHandlingStarter = 0;
+    
+    reset();
+}
+
+/*!
+  ut_networkhandlingstarter::t_test
+ */
+void ut_networkhandlingstarter::t_test()
+{
+    m_NetworkHandlingStarter->start();
+    m_NetworkHandlingStarter->start();
+}
+
+QTEST_MAIN_S60(ut_networkhandlingstarter)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/ut_networkhandlingstarter/ut_networkhandlingstarter.pro	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,50 @@
+#
+# 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: Project file for building unit test component
+#
+#
+
+CONFIG += qtestlib hb
+TEMPLATE = app
+TARGET = 
+
+INCLUDEPATH += ./inc
+INCLUDEPATH += ../../inc
+INCLUDEPATH += ../common
+DEFINES += QT_NO_DEBUG_STREAM BUILD_NETWORKHANDLINGSTARTER
+
+QT -= gui
+QT += testlib
+
+symbian: {
+  CONFIG += no_icon
+  INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+  LIBS += -lmocklib \
+          -lsymbianmock \
+          -lxqservice
+}
+
+# test code
+HEADERS += ./inc/ut_networkhandlingstarter.h
+SOURCES += ./src/ut_networkhandlingstarter.cpp
+
+# code to be tested
+HEADERS += ../../inc/networkhandlingstarter.h
+SOURCES += ../../src/networkhandlingstarter.cpp
+
+# mocks needed for testing
+HEADERS += ../../inc/networkhandlingstarter_p.h
+SOURCES += ../mocks/mock_networkhandlingstarter_p.cpp
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/ut_networkhandlingstarter_p/inc/ut_networkhandlingstarter_p.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* 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 UT_NETWORKHANDLINGSTARTER_P_H
+#define UT_NETWORKHANDLINGSTARTER_P_H
+
+#include <QtTest/QtTest>
+#include <mockservice.h>
+#include <hbmainwindow.h>
+
+class NetworkHandlingStarterPrivate;
+
+class ut_networkhandlingstarter_p : public QObject, public MockService
+{
+    Q_OBJECT
+
+public:
+    
+    ut_networkhandlingstarter_p();
+    ~ut_networkhandlingstarter_p();
+    
+private slots:
+
+    void init();
+    void cleanup();
+    
+    void t_LaunchNetworksettingsPlugin();
+    void t_ViewDone();
+    void t_ShowNote();
+    void t_RemoveNote();
+
+    
+private:
+    
+    NetworkHandlingStarterPrivate *m_NetworkHandlingStarterPrivate;
+    HbMainWindow m_HbMainWindow;
+    QList<HbMainWindow *> m_MainWindowList;
+
+};
+
+#endif // UT_NETWORKHANDLINGSTARTER_P_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/ut_networkhandlingstarter_p/src/ut_networkhandlingstarter_p.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,107 @@
+/*
+* 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:
+*
+*/
+#include <ut_networkhandlingstarter_p.h>
+#include <qtestmains60.h>
+#include <networkhandlingstarter_p.h>
+
+/*!
+  ut_networkhandlingstarter_p::ut_networkhandlingstarter_p
+ */
+ut_networkhandlingstarter_p::ut_networkhandlingstarter_p() 
+    : m_NetworkHandlingStarterPrivate(0)
+{
+    SmcDefaultValue< QList<HbMainWindow *> >::SetL(m_MainWindowList);
+}
+
+/*!
+  ut_networkhandlingstarter_p::~ut_networkhandlingstarter_p
+ */
+ut_networkhandlingstarter_p::~ut_networkhandlingstarter_p()
+{
+    delete m_NetworkHandlingStarterPrivate;
+}
+
+/*!
+  ut_networkhandlingstarter_p::init
+ */
+void ut_networkhandlingstarter_p::init()
+{
+    initialize();
+    
+    m_NetworkHandlingStarterPrivate = new NetworkHandlingStarterPrivate();
+    
+    QVERIFY(verify());
+}
+
+/*!
+  ut_networkhandlingstarter_p::cleanup
+ */
+void ut_networkhandlingstarter_p::cleanup()
+{
+    delete m_NetworkHandlingStarterPrivate;
+    m_NetworkHandlingStarterPrivate = 0;
+    m_MainWindowList.clear();
+    
+    reset();
+}
+
+/*!
+  ut_networkhandlingstarter_p::t_LaunchNetworksettingsPlugin
+ */
+void ut_networkhandlingstarter_p::t_LaunchNetworksettingsPlugin()
+{
+    m_NetworkHandlingStarterPrivate->LaunchCpNetworkPluginView();
+    
+    m_MainWindowList.append(&m_HbMainWindow);
+    expect("HbInstance::allMainWindows").returns(m_MainWindowList).times(2);
+    m_NetworkHandlingStarterPrivate->LaunchCpNetworkPluginView();
+}
+
+/*!
+  ut_networkhandlingstarter_p::t_ViewDone
+ */
+void ut_networkhandlingstarter_p::t_ViewDone()
+{
+    m_NetworkHandlingStarterPrivate->ViewDone();
+    
+    m_MainWindowList.append(&m_HbMainWindow);
+    expect("HbInstance::allMainWindows").returns(m_MainWindowList);
+    m_NetworkHandlingStarterPrivate->ViewDone();
+}
+
+/*!
+  ut_networkhandlingstarter_p::t_ShowNote
+ */
+void ut_networkhandlingstarter_p::t_ShowNote()
+{
+    m_NetworkHandlingStarterPrivate->ShowNote();
+    m_NetworkHandlingStarterPrivate->ShowNote();
+}
+
+/*!
+  ut_networkhandlingstarter_p::t_RemoveNote
+ */
+void ut_networkhandlingstarter_p::t_RemoveNote()
+{
+    // Create note
+    m_NetworkHandlingStarterPrivate->ShowNote();
+    // Test
+    m_NetworkHandlingStarterPrivate->RemoveNote();
+    m_NetworkHandlingStarterPrivate->RemoveNote();
+}
+
+QTEST_MAIN_S60(ut_networkhandlingstarter_p)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/networkhandlingstarter/tsrc/ut_networkhandlingstarter_p/ut_networkhandlingstarter_p.pro	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,56 @@
+#
+# 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: Project file for building unit test component
+#
+#
+
+CONFIG += qtestlib hb
+TEMPLATE = app
+TARGET = 
+
+INCLUDEPATH += ./inc
+INCLUDEPATH += ../../inc
+INCLUDEPATH += ../common
+DEFINES += QT_NO_DEBUG_STREAM BUILD_NETWORKHANDLINGSTARTER
+
+QT -= gui
+QT += testlib
+
+symbian: {
+  CONFIG += no_icon
+  INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+  LIBS += -lmocklib \
+          -lsymbianmock \
+          -lxqserviceutil
+}
+
+# test code
+HEADERS += ./inc/ut_networkhandlingstarter_p.h
+SOURCES += ./src/ut_networkhandlingstarter_p.cpp
+
+# code to be tested
+HEADERS += ../../inc/networkhandlingstarter_p.h
+SOURCES += ../../src/networkhandlingstarter_p.cpp
+
+# mocks needed for testing
+SOURCES += ../mocks/mock_cnetworklistener.cpp
+SOURCES += ../mocks/mock_cppluginlauncher.cpp
+SOURCES += ../mocks/mock_hbdevicemessagebox.cpp
+SOURCES += ../mocks/mock_hbaction.cpp
+SOURCES += ../mocks/mock_hbinstance.cpp
+SOURCES += ../mocks/mock_hbmainwindow.cpp
+SOURCES += ../mocks/mock_qgraphicsview.cpp
+SOURCES += ../mocks/mock_qabstractscrollarea.cpp
+SOURCES += ../mocks/mock_qframe.cpp
+
--- a/phoneengine/parserrecognizer/parserrecognizer.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/parserrecognizer/parserrecognizer.pro	Mon May 03 12:31:11 2010 +0300
@@ -25,7 +25,7 @@
     DEFINES += BUILD_PARSERRECOGNIZER
     
     INCLUDEPATH += ../../inc \
-                   ../phonemodel/inc 
+                   ../phonemodel/inc
     INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
     
     parserDefFiles = \
--- a/phoneengine/parserrecognizer/tsrc/ut_parserrecognizer/moc_parserrecognizer.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/****************************************************************************
-** Meta object code from reading C++ file 'parserrecognizer.h'
-**
-** Created: Fri 18. Sep 14:27:09 2009
-**      by: The Qt Meta Object Compiler version 61 (Qt 4.5.2-tower)
-**
-** WARNING! All changes made in this file will be lost!
-*****************************************************************************/
-
-#include "../../inc/parserrecognizer.h"
-#if !defined(Q_MOC_OUTPUT_REVISION)
-#error "The header file 'parserrecognizer.h' doesn't include <QObject>."
-#elif Q_MOC_OUTPUT_REVISION != 61
-#error "This file was generated using the moc from 4.5.2-tower. It"
-#error "cannot be used with the include files from this version of Qt."
-#error "(The moc has changed too much.)"
-#endif
-
-QT_BEGIN_MOC_NAMESPACE
-static const uint qt_meta_data_ParserRecognizer[] = {
-
- // content:
-       2,       // revision
-       0,       // classname
-       0,    0, // classinfo
-       0,    0, // methods
-       0,    0, // properties
-       0,    0, // enums/sets
-       0,    0, // constructors
-
-       0        // eod
-};
-
-static const char qt_meta_stringdata_ParserRecognizer[] = {
-    "ParserRecognizer\0"
-};
-
-const QMetaObject ParserRecognizer::staticMetaObject = {
-    { &QObject::staticMetaObject, qt_meta_stringdata_ParserRecognizer,
-      qt_meta_data_ParserRecognizer, 0 }
-};
-
-const QMetaObject *ParserRecognizer::metaObject() const
-{
-    return &staticMetaObject;
-}
-
-void *ParserRecognizer::qt_metacast(const char *_clname)
-{
-    if (!_clname) return 0;
-    if (!strcmp(_clname, qt_meta_stringdata_ParserRecognizer))
-        return static_cast<void*>(const_cast< ParserRecognizer*>(this));
-    return QObject::qt_metacast(_clname);
-}
-
-int ParserRecognizer::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
-{
-    _id = QObject::qt_metacall(_c, _id, _a);
-    if (_id < 0)
-        return _id;
-    return _id;
-}
-QT_END_MOC_NAMESPACE
--- a/phoneengine/parserrecognizer/tsrc/ut_parserrecognizer/moc_xqservicerequest.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/****************************************************************************
-** Meta object code from reading C++ file 'xqservicerequest.h'
-**
-** Created: Tue 22. Sep 12:22:55 2009
-**      by: The Qt Meta Object Compiler version 61 (Qt 4.5.2-tower)
-**
-** WARNING! All changes made in this file will be lost!
-*****************************************************************************/
-
-#include "xqservicerequest.h"
-#if !defined(Q_MOC_OUTPUT_REVISION)
-#error "The header file 'xqservicerequest.h' doesn't include <QObject>."
-#elif Q_MOC_OUTPUT_REVISION != 61
-#error "This file was generated using the moc from 4.5.2-tower. It"
-#error "cannot be used with the include files from this version of Qt."
-#error "(The moc has changed too much.)"
-#endif
-
-QT_BEGIN_MOC_NAMESPACE
-static const uint qt_meta_data_XQServiceRequest[] = {
-
- // content:
-       2,       // revision
-       0,       // classname
-       0,    0, // classinfo
-       0,    0, // methods
-       0,    0, // properties
-       0,    0, // enums/sets
-       0,    0, // constructors
-
-       0        // eod
-};
-
-static const char qt_meta_stringdata_XQServiceRequest[] = {
-    "XQServiceRequest\0"
-};
-
-const QMetaObject XQServiceRequest::staticMetaObject = {
-    { &QObject::staticMetaObject, qt_meta_stringdata_XQServiceRequest,
-      qt_meta_data_XQServiceRequest, 0 }
-};
-
-const QMetaObject *XQServiceRequest::metaObject() const
-{
-    return &staticMetaObject;
-}
-
-void *XQServiceRequest::qt_metacast(const char *_clname)
-{
-    if (!_clname) return 0;
-    if (!strcmp(_clname, qt_meta_stringdata_XQServiceRequest))
-        return static_cast<void*>(const_cast< XQServiceRequest*>(this));
-    return QObject::qt_metacast(_clname);
-}
-
-int XQServiceRequest::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
-{
-    _id = QObject::qt_metacall(_c, _id, _a);
-    if (_id < 0)
-        return _id;
-    return _id;
-}
-QT_END_MOC_NAMESPACE
--- a/phoneengine/parserrecognizer/tsrc/ut_parserrecognizer/unit_tests.moc	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/****************************************************************************
-** Meta object code from reading C++ file 'unit_tests.cpp'
-**
-** Created: Tue 22. Sep 16:19:35 2009
-**      by: The Qt Meta Object Compiler version 61 (Qt 4.5.2-tower)
-**
-** WARNING! All changes made in this file will be lost!
-*****************************************************************************/
-
-#if !defined(Q_MOC_OUTPUT_REVISION)
-#error "The header file 'unit_tests.cpp' doesn't include <QObject>."
-#elif Q_MOC_OUTPUT_REVISION != 61
-#error "This file was generated using the moc from 4.5.2-tower. It"
-#error "cannot be used with the include files from this version of Qt."
-#error "(The moc has changed too much.)"
-#endif
-
-QT_BEGIN_MOC_NAMESPACE
-static const uint qt_meta_data_TestParserRecognizer[] = {
-
- // content:
-       2,       // revision
-       0,       // classname
-       0,    0, // classinfo
-      14,   12, // methods
-       0,    0, // properties
-       0,    0, // enums/sets
-       0,    0, // constructors
-
- // slots: signature, parameters, type, tag, flags
-      22,   21,   21,   21, 0x0a,
-      37,   21,   21,   21, 0x0a,
-      55,   21,   21,   21, 0x0a,
-      62,   21,   21,   21, 0x0a,
-      72,   21,   21,   21, 0x08,
-      94,   21,   21,   21, 0x08,
-     118,   21,   21,   21, 0x08,
-     145,   21,   21,   21, 0x08,
-     171,   21,   21,   21, 0x08,
-     192,   21,   21,   21, 0x08,
-     218,   21,   21,   21, 0x08,
-     233,   21,   21,   21, 0x08,
-     251,   21,   21,   21, 0x08,
-     276,   21,   21,   21, 0x08,
-
-       0        // eod
-};
-
-static const char qt_meta_stringdata_TestParserRecognizer[] = {
-    "TestParserRecognizer\0\0initTestCase()\0"
-    "cleanupTestCase()\0init()\0cleanup()\0"
-    "testActivateRfsDeep()\0testActivateRfsNormal()\0"
-    "testActivateWarrantyMode()\0"
-    "testShowBTDeviceAddress()\0"
-    "testShowBTLoopback()\0testActivateBTDebugMode()\0"
-    "testShowIMEI()\0testShowVersion()\0"
-    "testShowWLANMacAddress()\0testSSRequestFailed()\0"
-};
-
-const QMetaObject TestParserRecognizer::staticMetaObject = {
-    { &QObject::staticMetaObject, qt_meta_stringdata_TestParserRecognizer,
-      qt_meta_data_TestParserRecognizer, 0 }
-};
-
-const QMetaObject *TestParserRecognizer::metaObject() const
-{
-    return &staticMetaObject;
-}
-
-void *TestParserRecognizer::qt_metacast(const char *_clname)
-{
-    if (!_clname) return 0;
-    if (!strcmp(_clname, qt_meta_stringdata_TestParserRecognizer))
-        return static_cast<void*>(const_cast< TestParserRecognizer*>(this));
-    return QObject::qt_metacast(_clname);
-}
-
-int TestParserRecognizer::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
-{
-    _id = QObject::qt_metacall(_c, _id, _a);
-    if (_id < 0)
-        return _id;
-    if (_c == QMetaObject::InvokeMetaMethod) {
-        switch (_id) {
-        case 0: initTestCase(); break;
-        case 1: cleanupTestCase(); break;
-        case 2: init(); break;
-        case 3: cleanup(); break;
-        case 4: testActivateRfsDeep(); break;
-        case 5: testActivateRfsNormal(); break;
-        case 6: testActivateWarrantyMode(); break;
-        case 7: testShowBTDeviceAddress(); break;
-        case 8: testShowBTLoopback(); break;
-        case 9: testActivateBTDebugMode(); break;
-        case 10: testShowIMEI(); break;
-        case 11: testShowVersion(); break;
-        case 12: testShowWLANMacAddress(); break;
-        case 13: testSSRequestFailed(); break;
-        default: ;
-        }
-        _id -= 14;
-    }
-    return _id;
-}
-QT_END_MOC_NAMESPACE
--- a/phoneengine/parserrecognizer/tsrc/ut_parserrecognizer/ut_parserrecognizer_0xE31F4ECF.mmp	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-// ==============================================================================
-// Generated by qmake (2.01a) (Qt 4.6.1) on: 2010-01-13T16:02:37
-// This file is generated by qmake and should not be modified by the
-// user.
-//  Name        : ut_parserrecognizer.mmp
-// ==============================================================================
-
-TARGET		ut_parserrecognizer.exe
-TARGETTYPE		EXE
-
-UID		0x100039CE 0xE31F4ECF
-SECUREID		0xE31F4ECF
-
-EPOCSTACKSIZE		0x14000
-EPOCHEAPSIZE		0x020000 0x800000
-EPOCALLOWDLLDATA
-
-SOURCEPATH			. 
-LANG SC 
-START RESOURCE		ut_parserrecognizer.rss
-HEADER
-TARGETPATH			/resource/apps
-END
-
-SOURCEPATH			.
-START RESOURCE		ut_parserrecognizer_reg.rss
-TARGETPATH		/private/10003a3f/import/apps
-END
-
-
-// Qt Macros
-MACRO		UNICODE
-MACRO		QT_KEYPAD_NAVIGATION
-MACRO		QT_SOFTKEYS_ENABLED
-MACRO		QT_USE_MATH_H_FLOATS
-MACRO		BUILD_PARSERRECOGNIZER
-MACRO		QT_NO_DEBUG
-MACRO		QT_GUI_LIB
-MACRO		QT_CORE_LIB
-
-SYSTEMINCLUDE		/epoc32/include/mw/QtCore
-SYSTEMINCLUDE		/epoc32/include/mw/QtGui
-SYSTEMINCLUDE		/epoc32/include/mw
-SYSTEMINCLUDE		/epoc32/include/mw/QtTest
-SYSTEMINCLUDE		../../../../../../mw/qt/mkspecs/common/symbian
-SYSTEMINCLUDE		../../../../../../mw/qt/mkspecs/common/symbian/tmp
-SYSTEMINCLUDE		/epoc32/include
-SYSTEMINCLUDE		/epoc32/include/stdapis
-SYSTEMINCLUDE		/epoc32/include/stdapis/sys
-SYSTEMINCLUDE		.
-SYSTEMINCLUDE		tmp
-SYSTEMINCLUDE		../../../../inc
-SYSTEMINCLUDE		../../../../inc/tmp
-SYSTEMINCLUDE		/epoc32/include/platform/mw
-SYSTEMINCLUDE		/epoc32/include/platform
-SYSTEMINCLUDE		/epoc32/include/app
-SYSTEMINCLUDE		/epoc32/include/platform/app
-SYSTEMINCLUDE		/epoc32/include/platform/loc
-SYSTEMINCLUDE		/epoc32/include/platform/mw/loc
-SYSTEMINCLUDE		/epoc32/include/platform/app/loc
-SYSTEMINCLUDE		/epoc32/include/platform/loc/sc
-SYSTEMINCLUDE		/epoc32/include/platform/mw/loc/sc
-SYSTEMINCLUDE		/epoc32/include/platform/app/loc/sc
-SYSTEMINCLUDE		/epoc32/include/mw/qtgui
-SYSTEMINCLUDE		/epoc32/include/mw/qtcore
-SYSTEMINCLUDE		/epoc32/include/stdapis/stlportv5
-SYSTEMINCLUDE		../../inc
-SYSTEMINCLUDE		../../inc/tmp
-SYSTEMINCLUDE		../../src
-SYSTEMINCLUDE		../../src/tmp
-
-SOURCEPATH 	../../src
-SOURCE		parserrecognizer.cpp
-
-SOURCEPATH 	.
-SOURCE		unit_tests.cpp
-SOURCE		moc_xqservicerequest.cpp
-SOURCE		moc_parserrecognizer.cpp
-
-
-LIBRARY		QtTest.lib
-LIBRARY		QtGui.lib
-LIBRARY		QtCore.lib
-LIBRARY		libstdcppv5.lib
-LIBRARY		libc.lib
-LIBRARY		libm.lib
-LIBRARY		euser.lib
-LIBRARY		libdl.lib
-LIBRARY		cone.lib
-LIBRARY		eikcore.lib
-LIBRARY		mediaclientaudio.lib
-LIBRARY		eikcoctl.lib
-LIBRARY		eiksrv.lib
-LIBRARY		apparc.lib
-LIBRARY		avkon.lib
-LIBRARY		efsrv.lib
-LIBRARY		charconv.lib
-LIBRARY		ws32.lib
-LIBRARY		hal.lib
-LIBRARY		gdi.lib
-LIBRARY		apgrfx.lib
-STATICLIBRARY	qtmain.lib
-
-CAPABILITY		ALL -TCB 
-
-OPTION CW -wchar_t on
-OPTION ARMCC --visibility_inlines_hidden
-
-VERSION 10.0
-
-PAGED
-
-OPTION_REPLACE ARMCC --export_all_vtbl -D__QT_NOEFFECTMACRO_DONOTUSE
-
-STDCPP
--- a/phoneengine/phonemodel/inc/cpeexternaldatahandler.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/phonemodel/inc/cpeexternaldatahandler.h	Mon May 03 12:31:11 2010 +0300
@@ -22,8 +22,6 @@
 //  INCLUDE FILES
 #include "cpeaudiooutputpreferencemonitor.h"
 #include "cpecalldurationdisplaysettingmonitor.h"
-#include "cpeincallearvolumesettingmonitor.h"
-#include "cpeincallloudspeakervolumesettingmonitor.h"
 #include "cpenetworkregistrationstatusmonitor.h"
 #include "cpeprofilesettingmonitor.h"
 #include "mpeexternaldatahandler.h"
@@ -107,9 +105,7 @@
 
         // Monitor objects
         CPEAudioOutputPreferenceMonitor* iAudioOutputPreferenceMonitor;
-        CPECallDurationDisplaySettingMonitor* iCallDurationDisplay;
-        CPEIncallEarVolumeSettingMonitor* iEarVolumeSetting;
-        CPEIncallLoudspeakerVolumeSettingMonitor* iLoudspeakerVolumeSetting;
+        CPECallDurationDisplaySettingMonitor* iCallDurationDisplay;     
         CPENetworkRegistrationStatusMonitor* iNetworkRegistrationStatus;
         CPEProfileSettingMonitor* iProfileSettings;
         CPEAccessoryModeMonitor* iAccessoryModeMonitor;
--- a/phoneengine/phonemodel/inc/cpeincallearvolumesettingmonitor.h	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +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:  This file contains the header of the phone engine base 
-*                central repository monitor class
-*
-*/
-
-
-#ifndef CPEINCALLEARVOLUMESETTINGMONITOR_H
-#define CPEINCALLEARVOLUMESETTINGMONITOR_H
-
-// INCLUDE FILES
-#include "cpecenrepmonitor.h"
-
-// Forward declarations
-class MPEPhoneModelInternal;
-
-/**
-*   CPEIncallEarVolumeSettingMonitor
-*   For set/get of the phone ear volume setting (KTelIncallEarVolume) from 
-*   the central repository 
-*
-*  @lib PhoneEngine.lib
-*/
-NONSHARABLE_CLASS( CPEIncallEarVolumeSettingMonitor ) : public CPECenRepMonitor
-{
-public:
-    static CPEIncallEarVolumeSettingMonitor* NewL( MPEPhoneModelInternal& aModel );
-    ~CPEIncallEarVolumeSettingMonitor();
-public:
-    TInt Set( TInt aValue );
-protected: // From base class
-    virtual void UpdateL();
-protected:
-    CPEIncallEarVolumeSettingMonitor( MPEPhoneModelInternal& aModel );
-    void ConstructL();    
-private:
-    MPEPhoneModelInternal& iModel;
-    TBool iUpdateInProgress;
-};
-
-#endif // CPEINCALLEARVOLUMESETTINGMONITOR_H
--- a/phoneengine/phonemodel/inc/cpeincallloudspeakervolumesettingmonitor.h	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +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:  This file contains the header of the phone engine base 
-*                central repository monitor class
-*
-*/
-
-
-#ifndef CPEINCALLLOUDSPEAKERVOLUMESETTINGMONITOR_H
-#define CPEINCALLLOUDSPEAKERVOLUMESETTINGMONITOR_H
-
-// INCLUDE FILES
-#include "cpecenrepmonitor.h"
-
-// Forward declarations
-class MPEPhoneModelInternal;
-
-/**
-*   CPEIncallLoudspeakerVolumeSettingMonitor
-*   For set/get of the phone ear volume setting (KTelIncallLoudspeakerVolume)
-*   from the central repository 
-*
-*  @lib PhoneEngine.lib
-*/
-NONSHARABLE_CLASS( CPEIncallLoudspeakerVolumeSettingMonitor ) : public CPECenRepMonitor
-{
-public:
-    static CPEIncallLoudspeakerVolumeSettingMonitor* NewL( 
-        MPEPhoneModelInternal& aModel );
-    ~CPEIncallLoudspeakerVolumeSettingMonitor();
-public:
-    TInt Set( TInt aValue );
-protected: // From base class
-    virtual void UpdateL();
-protected:
-    CPEIncallLoudspeakerVolumeSettingMonitor( MPEPhoneModelInternal& aModel );
-    void ConstructL();    
-private:
-    MPEPhoneModelInternal& iModel;
-    TBool iUpdateInProgress;
-};
-
-#endif // CPEINCALLLOUDSPEAKERVOLUMESETTINGMONITOR_H
--- a/phoneengine/phonemodel/inc/cpephonemodel.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/phonemodel/inc/cpephonemodel.h	Mon May 03 12:31:11 2010 +0300
@@ -77,9 +77,10 @@
             EPESimStatusMonitorStart,
             EPELogHandlingPhaseTwo,
             EPEContactHandlingPhaseTwo,
-            EPEMediatorCommandHandler
-           ,EPEPhoneServices
-           ,EPEParserRecognizer
+            EPEMediatorCommandHandler,
+            EPEPhoneServices,
+            EPEParserRecognizer,
+            EPENetworkHandling
             };
 
         /**
--- a/phoneengine/phonemodel/inc/mpeexternaldatahandler.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/phonemodel/inc/mpeexternaldatahandler.h	Mon May 03 12:31:11 2010 +0300
@@ -38,9 +38,7 @@
     EPEAutomaticAnswerWirelessCarkitSetting,
     EPECallDurationDisplaySetting,
     EPEDialPrefixChangeSetting,
-    EPEDialPrefixTextSetting,
-    EPEIncallEarVolumeSetting,
-    EPEIncallLoudspeakerVolumeSetting,
+    EPEDialPrefixTextSetting,  
     EPENetworkRegistrationStatus,
     EPETelephonyVariationFlags,
     EPEAccessoryMode,
--- a/phoneengine/phonemodel/inc/telinternalpskeys.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/phonemodel/inc/telinternalpskeys.h	Mon May 03 12:31:11 2010 +0300
@@ -124,7 +124,6 @@
 */
 const TUint32 KTelGenCmdLaunchLogApp = 0x00000001;
 
-
 #endif      // TELINTERNALPSKEYS_H
 
 // End of file
\ No newline at end of file
--- a/phoneengine/phonemodel/phonemodel.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/phonemodel/phonemodel.pro	Mon May 03 12:31:11 2010 +0300
@@ -24,7 +24,8 @@
     TARGET.VID = VID_DEFAULT
     TARGET.CAPABILITY = ALL -TCB
     
-    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE 
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE  \
+                   $$OS_LAYER_GLIB_SYSTEMINCLUDE
     INCLUDEPATH += ../../inc \
                    ../inc \
                    ../phoneservices/inc \
@@ -71,7 +72,10 @@
             -lengineinfo \
             -lparserrecognizer \
             -lmediatorclient \
-            -lestor       
+            -lestor \
+	    -lxqservice \
+            -llibglib
+            
     TARGET.EPOCALLOWDLLDATA =1
     
 }
@@ -88,8 +92,6 @@
 HEADERS += ./inc/cpedevicemodehandler.h
 HEADERS += ./inc/cpeexternaldatahandler.h
 HEADERS += ./inc/cpeidlestatusmonitor.h
-HEADERS += ./inc/cpeincallearvolumesettingmonitor.h
-HEADERS += ./inc/cpeincallloudspeakervolumesettingmonitor.h
 HEADERS += ./inc/cpemanualcallcontrolhandler.h
 HEADERS += ./inc/cpemessagehandler.h
 HEADERS += ./inc/cpemessagehandler.inl
@@ -136,8 +138,6 @@
 SOURCES += ./src/cpeclientservices.cpp
 SOURCES += ./src/cpedevicemodehandler.cpp
 SOURCES += ./src/cpeexternaldatahandler.cpp
-SOURCES += ./src/cpeincallearvolumesettingmonitor.cpp
-SOURCES += ./src/cpeincallloudspeakervolumesettingmonitor.cpp
 SOURCES += ./src/cpemessagehandler.cpp
 SOURCES += ./src/cpenetworkregistrationstatusmonitor.cpp
 SOURCES += ./src/cpeprofilesettingmonitor.cpp
--- a/phoneengine/phonemodel/src/cpeexternaldatahandler.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/phonemodel/src/cpeexternaldatahandler.cpp	Mon May 03 12:31:11 2010 +0300
@@ -60,9 +60,7 @@
     delete iTelephonyVariationRepository;
     delete iTelephonySettingsRepository;
     delete iProfileSettings;
-    delete iNetworkRegistrationStatus;
-    delete iLoudspeakerVolumeSetting;
-    delete iEarVolumeSetting;
+    delete iNetworkRegistrationStatus;   
     delete iCallDurationDisplay;
     delete iAudioOutputPreferenceMonitor;
     delete iAccessorySettingsRepository;
@@ -81,9 +79,7 @@
     TEFLOGSTRING( KTAOBJECT, "PE CPEExternalDataHandler::BaseConstructL" );
 
     // Instantiate monitor objects
-    iAudioOutputPreferenceMonitor = CPEAudioOutputPreferenceMonitor::NewL( aModel );
-    iEarVolumeSetting = CPEIncallEarVolumeSettingMonitor::NewL( aModel );
-    iLoudspeakerVolumeSetting = CPEIncallLoudspeakerVolumeSettingMonitor::NewL( aModel );
+    iAudioOutputPreferenceMonitor = CPEAudioOutputPreferenceMonitor::NewL( aModel );    
     iCallDurationDisplay = CPECallDurationDisplaySettingMonitor::NewL(); 
     iProfileSettings = CPEProfileSettingMonitor::NewL( aModel );
     
@@ -97,6 +93,7 @@
     //iTelephonySettingsRepository = CRepository::NewL( KCRUidTelephonySettings );
     iTelephonyVariationRepository = CRepository::NewL( KCRUidTelVariation );
     //iCoreApplicationRepository = CRepository::NewL( KCRUidCoreApplicationUIs ); 
+   
     TEFLOGSTRING( KTAOBJECT, "PE CPEExternalDataHandler::BaseConstructL 2" );
     }
 
@@ -123,20 +120,10 @@
         {
         errorCode = iAudioOutputPreferenceMonitor->Get( aValue );
         TEFLOGSTRING2( KTAINT, "CPEExternalDataHandler::Get EPEAudioOutputPreference, error code: %d", errorCode );
-        }
-    else if ( EPEIncallEarVolumeSetting == aSetting )
-        {
-        errorCode = iEarVolumeSetting->Get( aValue );
-        TEFLOGSTRING2( KTAINT, "CPEExternalDataHandler::Get EPEIncallEarVolumeSetting, error code: %d", errorCode );
-        }
-    else if ( EPEIncallLoudspeakerVolumeSetting == aSetting )
-        {
-        errorCode = iLoudspeakerVolumeSetting->Get( aValue );
-        TEFLOGSTRING2( KTAINT, "CPEExternalDataHandler::Get EPEIncallLoudspeakerVolumeSetting, error code: %d", errorCode );
-        }
+        }    
     else if ( EPECallDurationDisplaySetting == aSetting )
         {
-        errorCode = iCallDurationDisplay->GetValue( aValue );
+        errorCode = iCallDurationDisplay->Get( aValue );
         TEFLOGSTRING2( KTAINT, "CPEExternalDataHandler::Get EPECallDurationDisplaySetting, error code: %d", errorCode );
         }
     else
@@ -196,16 +183,6 @@
 
     switch ( aSetting )
         {
-        case EPEIncallEarVolumeSetting:
-            {
-            errorCode = iEarVolumeSetting->Set( aValue );
-            break;
-            }
-        case EPEIncallLoudspeakerVolumeSetting:
-            {
-            errorCode = iLoudspeakerVolumeSetting->Set( aValue );
-            break;
-            }
         case EPEEmergencyCallInfo:
             {
             errorCode = RProperty::Set( KPSUidCtsyEmergencyCallInfo, 
--- a/phoneengine/phonemodel/src/cpeincallearvolumesettingmonitor.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +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:  Contains phone engine base central repository monitor class
-*
-*/
-
-
-// INCLUDE FILES
-#include "cpeincallearvolumesettingmonitor.h"
-#include "mpephonemodelinternal.h"
-#include <centralrepository.h>
-#include <mpedatastore.h>
-#include <talogger.h>
-#include <telephonyvariant.hrh>
-#include <telincallvolcntrlcrkeys.h>
-
-
-// -----------------------------------------------------------------------------
-// CPEIncallEarVolumeSettingMonitor::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CPEIncallEarVolumeSettingMonitor* CPEIncallEarVolumeSettingMonitor::NewL(
-        MPEPhoneModelInternal& aModel )
-    {
-    CPEIncallEarVolumeSettingMonitor* self = new ( ELeave ) CPEIncallEarVolumeSettingMonitor( 
-        aModel );
-    CleanupStack::PushL( self );
-    self->ConstructL(); 
-    CleanupStack::Pop( self);
-    return ( self );
-    }
-
-// Destructor
-CPEIncallEarVolumeSettingMonitor::~CPEIncallEarVolumeSettingMonitor()
-    {
-    // Cancel() is called by base class destructor, which also deletes iRepository
-    }
-
-// -----------------------------------------------------------------------------
-// CPEIncallEarVolumeSettingMonitor::CPEIncallEarVolumeSettingMonitor
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CPEIncallEarVolumeSettingMonitor::CPEIncallEarVolumeSettingMonitor(
-        MPEPhoneModelInternal& aModel
-        ) : CPECenRepMonitor( KTelIncallEarVolume ),
-            iModel( aModel ),
-            iUpdateInProgress( EFalse )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CPEIncallEarVolumeSettingMonitor::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CPEIncallEarVolumeSettingMonitor::ConstructL()
-    {
-    BaseConstructL( KCRUidInCallVolume );
-
-    TInt volume = KPEDefaultAudioVolume; // Default setting
-    Get( volume );   
-    TEFLOGSTRING2( 
-        KTAREQOUT, 
-        "PE CPEIncallEarVolumeSettingMonitor::ConstructL, Incall ear volume = %d ",
-        volume );
-    // Write audio volume to EngineInfo.
-    iModel.DataStore()->SetAudioVolume( volume );
-    }
-
-// -----------------------------------------------------------------------------
-// CPEIncallEarVolumeSettingMonitor::Set
-// -----------------------------------------------------------------------------
-//
-TInt CPEIncallEarVolumeSettingMonitor::Set(
-        TInt aValue )
-    {
-    TInt errorCode( KErrNone );
-
-    // Check whether this function call was initiated by a central repository
-    // change notification.
-    if( iUpdateInProgress == EFalse )
-        {
-        errorCode = iRepository->Set( iMonitorSetting, aValue );
-        TEFLOGSTRING3( KTAREQOUT, "PE CPEIncallEarVolumeSettingMonitor::Set \
-> CRepository::Set, Incall ear volume = %d, error code: %d", aValue, errorCode );
-        }
-
-    return errorCode;
-    }
-
-// -----------------------------------------------------------------------------
-// CPEIncallEarVolumeSettingMonitor::UpdateL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CPEIncallEarVolumeSettingMonitor::UpdateL()
-    {
-    TInt volume;
-    // The headset volume has changed in repository.
-    // Retrieve the current volume from repository.
-    User::LeaveIfError( Get( volume ) );
-
-    TEFLOGSTRING2( 
-        KTAREQOUT,
-        "PE: CPEIncallEarVolumeSettingMonitor::UpdateL, Incall ear volume = %d ",
-        volume );
-
-    // Update headset volume using an audiohandling routine
-    // The routine will try to update the repository as well,
-    // ensure this is blocked using an internal flag.
-    iUpdateInProgress = ETrue;
-    iModel.DataStore()->SetAudioVolumeCommand( volume );
-    iModel.HandleInternalMessage( MPEPhoneModel::EPEMessageSetAudioVolume );
-
-    // Reset the flag when synchronization is complete
-    iUpdateInProgress = EFalse;
-
-    }
-    
-// End of file
--- a/phoneengine/phonemodel/src/cpeincallloudspeakervolumesettingmonitor.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +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:  Contains phone engine base central repository monitor class
-*
-*/
-
-
-// INCLUDE FILES
-#include "cpeincallloudspeakervolumesettingmonitor.h"
-#include "mpephonemodelinternal.h"
-#include <centralrepository.h>
-#include <mpedatastore.h>
-#include <talogger.h>
-#include <telephonyvariant.hrh>
-#include <telincallvolcntrlcrkeys.h>
-
-
-// -----------------------------------------------------------------------------
-// CPEIncallLoudspeakerVolumeSettingMonitor::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CPEIncallLoudspeakerVolumeSettingMonitor* CPEIncallLoudspeakerVolumeSettingMonitor::NewL(
-        MPEPhoneModelInternal& aModel
-        )
-    {
-    CPEIncallLoudspeakerVolumeSettingMonitor* me = 
-        new ( ELeave ) CPEIncallLoudspeakerVolumeSettingMonitor( aModel );
-    CleanupStack::PushL( me );
-    me->ConstructL(); 
-    CleanupStack::Pop( me );
-    return ( me );
-    }
-
-// Destructor
-CPEIncallLoudspeakerVolumeSettingMonitor::~CPEIncallLoudspeakerVolumeSettingMonitor()
-    {
-    // Cancel() is called by base class destructor, which also deletes iRepository
-    }
-
-// -----------------------------------------------------------------------------
-// CPEIncallLoudspeakerVolumeSettingMonitor::CPEIncallLoudspeakerVolumeSettingMonitor
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CPEIncallLoudspeakerVolumeSettingMonitor::CPEIncallLoudspeakerVolumeSettingMonitor(
-        MPEPhoneModelInternal& aModel
-        ) : CPECenRepMonitor( KTelIncallLoudspeakerVolume ),
-            iModel( aModel ),
-            iUpdateInProgress( EFalse )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CPEIncallLoudspeakerVolumeSettingMonitor::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CPEIncallLoudspeakerVolumeSettingMonitor::ConstructL()
-    {
-    BaseConstructL( KCRUidInCallVolume );
-
-    TInt volume = KPEDefaultAudioVolume; // Default setting
-    Get( volume );   
-    TEFLOGSTRING2( 
-        KTAREQOUT, 
-        "PE CPEIncallLoudspeakerVolumeSettingMonitor::ConstructL, Incall loudspeaker volume = %d ",
-        volume );
-    //In boot, cannot write volume value to datastore. It override HeadSet mode 
-    // volume ( default value ).
-    }
-
-// -----------------------------------------------------------------------------
-// CPEIncallLoudspeakerVolumeSettingMonitor::Set
-// -----------------------------------------------------------------------------
-//
-TInt CPEIncallLoudspeakerVolumeSettingMonitor::Set(
-        TInt aValue
-        )
-    {
-    TInt errorCode( KErrNone );
-
-    // Check whether this function call was initiated by a central repository
-    // change notification.
-    if( iUpdateInProgress == EFalse )
-        {
-        errorCode = iRepository->Set( iMonitorSetting, aValue );
-        TEFLOGSTRING3( KTAREQOUT, "PE CPEIncallLoudspeakerVolumeSettingMonitor::Set \
-> CRepository::Set, Incall loudspeaker volume = %d, error code: %d", aValue, errorCode );
-        }
-
-    return errorCode;
-    }
-
-// -----------------------------------------------------------------------------
-// CPEIncallLoudspeakerVolumeSettingMonitor::UpdateL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CPEIncallLoudspeakerVolumeSettingMonitor::UpdateL()
-    {
-    TInt volume;
-    // The loudspeaker volume has changed in repository.
-    // Retrieve the current volume from repository.
-    User::LeaveIfError( Get( volume ) );
-
-    TEFLOGSTRING2( 
-        KTAREQOUT,
-        "PE CPEIncallLoudspeakerVolumeSettingMonitor::UpdateL, Incall loudspeaker volume = %d ",
-        volume );
-
-    // Update loudspeaker volume using an audiohandling routine
-    // The routine will try to update the repository as well,
-    // ensure this is blocked using an internal flag.
-    iUpdateInProgress = ETrue;
-    iModel.DataStore()->SetAudioVolumeCommand( volume );
-    iModel.HandleInternalMessage( MPEPhoneModel::EPEMessageSetAudioVolume );
-
-    // Reset the flag when synchronization is complete
-    iUpdateInProgress = EFalse;
-    }
-
-// End of file
--- a/phoneengine/phonemodel/src/cpemessagehandler.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/phonemodel/src/cpemessagehandler.cpp	Mon May 03 12:31:11 2010 +0300
@@ -1961,11 +1961,6 @@
     {
     TEFLOGSTRING( KTAINT, "PE CPEMessageHandler::HandleDialingStateL <");
     
-    if( iCallHandling.GetNumberOfCalls() == 1 )
-        {
-        // Check volume levels - zero level needs to be reset to default value
-        iGsmAudioData.SetDefaultVolume();
-        }
     // Save call direction to engine info.
     iDataStore.SetCallDirection( RMobileCall::EMobileOriginated, aCallId );
     
@@ -2020,11 +2015,7 @@
         iGsmAudioData.PlayInbandTone();
         iWaitingCallId = aCallId;
         }
-    else if( numberOfCalls == 1 )
-        {
-        // Check volume levels - zero level needs to be reset to default value
-        iGsmAudioData.SetDefaultVolume();
-        }
+
     if( AutomaticAnswer( aCallId ) )
         {
         TEFLOGSTRING( KTAINT, 
--- a/phoneengine/phonemodel/src/cpephonemodel.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/phonemodel/src/cpephonemodel.cpp	Mon May 03 12:31:11 2010 +0300
@@ -39,6 +39,7 @@
 #include <mccedtmfinterface.h>
 #include <mpecontacthandling.h>
 #include <mpeloghandling.h>
+#include <xqservicerequest.h>
 #include "phoneservices.h"
 #include "parserrecognizer.h"
 
@@ -1426,6 +1427,22 @@
             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 17.1" );
             iParserRecognizer = new ParserRecognizer;
             TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 17.2" );
+            break;
+            }
+            
+        case CPEPhoneModel::EPENetworkHandling:
+            {
+            TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 18.1" );
+            XQServiceRequest request("com.nokia.services.networkhandling","start()");
+            bool res = request.send();
+            if  (!res) {
+                int error = request.latestError();
+                TEFLOGSTRING2( 
+                    KTAOBJECT, 
+                    "CPEPhoneModel::StepL 18.2 error %d",
+                    error );
+            }
+            TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 18.2" );
             continueStepping = EFalse;
             break;
             }
--- a/phoneengine/phoneservices/phoneservices.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/phoneservices/phoneservices.pro	Mon May 03 12:31:11 2010 +0300
@@ -25,7 +25,7 @@
     DEFINES += BUILD_PHONESERVICES
     
     INCLUDEPATH += ../../inc \
-                   ../phonemodel/inc 
+                   ../phonemodel/inc
     INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
 
     servicesDefFiles = \
--- a/phoneengine/phoneservices/src/dialservice.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneengine/phoneservices/src/dialservice.cpp	Mon May 03 12:31:11 2010 +0300
@@ -35,7 +35,8 @@
 int DialService::dial(const QString& number)
 {
     PHONE_DEBUG2("DialService::dial number:", number);
-    TPtrC16 numberPtr (reinterpret_cast<const TUint16*>(number.utf16 ()));
+    QString simplifiedNumber = simplified(number);
+    TPtrC16 numberPtr(reinterpret_cast<const TUint16*>(simplifiedNumber.utf16()));
     m_parameters.SetPhoneNumber (numberPtr);
     m_parameters.SetCallTypeCommand (EPECallTypeCSVoice);
     return m_call.HandleDialServiceCall ();
@@ -45,7 +46,7 @@
 {
     PHONE_DEBUG4("DialService::dial number:", number, "contactId:", contactId);
     QString simplifiedNumber = simplified(number);
-    TPtrC16 numberPtr (reinterpret_cast<const TUint16*>(simplifiedNumber.utf16 ()));
+    TPtrC16 numberPtr (reinterpret_cast<const TUint16*>(simplifiedNumber.utf16()));
     m_parameters.SetPhoneNumber (numberPtr);
     m_parameters.SetCallTypeCommand (EPECallTypeCSVoice);
     m_parameters.SetContactId2 (contactId);
@@ -55,7 +56,8 @@
 void DialService::dialVideo(const QString& number)
 {
     PHONE_DEBUG2("DialService::dialVideo number:", number);
-    TPtrC16 numberPtr (reinterpret_cast<const TUint16*>(number.utf16 ()));
+    QString simplifiedNumber = simplified(number);
+    TPtrC16 numberPtr(reinterpret_cast<const TUint16*>(simplifiedNumber.utf16()));
     m_parameters.SetPhoneNumber (numberPtr);
     m_parameters.SetCallTypeCommand (EPECallTypeVideo);
     m_call.HandleDialServiceCall ();
@@ -65,7 +67,7 @@
 {
     PHONE_DEBUG4("DialService::dialVideo number:", number, "contactId:", contactId);
     QString simplifiedNumber = simplified(number);
-    TPtrC16 numberPtr (reinterpret_cast<const TUint16*>(simplifiedNumber.utf16 ()));
+    TPtrC16 numberPtr (reinterpret_cast<const TUint16*>(simplifiedNumber.utf16()));
     m_parameters.SetPhoneNumber (numberPtr);
     m_parameters.SetCallTypeCommand (EPECallTypeVideo);
     m_parameters.SetContactId2 (contactId);
--- a/phoneplugins/csplugin/group/csplugin.mmp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/csplugin/group/csplugin.mmp	Mon May 03 12:31:11 2010 +0300
@@ -29,9 +29,14 @@
 // ECOM Dll recognition UID followed by the unique UID for this dll
 UID                     0x10009D8D 0x102828E3
 
-CAPABILITY              CAP_ECOM_PLUGIN NetworkControl NetworkServices ReadDeviceData
+CAPABILITY              CAP_ECOM_PLUGIN NetworkControl NetworkServices ReadDeviceData MultimediaDD
 VENDORID                VID_DEFAULT
 
+#ifndef WINSCW 
+EpocAllowDllData
+#endif
+
+
 SOURCEPATH              ../src
 SOURCE                  csprovider.cpp
 SOURCE                  cspproxy.cpp
@@ -63,7 +68,6 @@
 SOURCE                  csppanic.cpp
 SOURCE                  cspaudiohandler.cpp
 SOURCE                  csppubsublistener.cpp
-SOURCE                  cspcenreplistener.cpp
 SOURCE                  cspetelcallwaitingrequester.cpp
 SOURCE                  cspsupplementaryservicesmonitor.cpp
 SOURCE                  cspcipheringstatusmonitor.cpp
@@ -71,16 +75,13 @@
 SOURCE                  cspuuimessagesender.cpp
 SOURCE                  cspuuimonitor.cpp
 SOURCE                  tcspskypeidparser.cpp
-SOURCE                  cspdevsound.cpp
-SOURCE                  cspmicrophone.cpp
-SOURCE                  cspspeaker.cpp
-SOURCE                  cspaudiostreams.cpp
 SOURCE                  csptimer.cpp
 SOURCE                  cspcallcommandhandler.cpp
 SOURCE                  cspremotealertingtonelistener.cpp
 SOURCE                  cspetellinestatusmonitor.cpp
 SOURCE                  cspclientvideocall.cpp
 SOURCE                  cspclientvoicecall.cpp
+SOURCE					tmshandler.cpp
 
 // user include paths
 USERINCLUDE             ../inc
@@ -91,9 +92,13 @@
 APP_LAYER_SYSTEMINCLUDE 
 
 SYSTEMINCLUDE   /epoc32/include/ecom
-SYSTEMINCLUDE   /epoc32/include/mmf/server
-SYSTEMINCLUDE   /epoc32/include/mmf/common
-SYSTEMINCLUDE   /epoc32/include/mda/client
+
+
+MW_LAYER_SYSTEMINCLUDE
+OS_LAYER_LIBC_SYSTEMINCLUDE
+OS_LAYER_GLIB_SYSTEMINCLUDE
+SYSTEMINCLUDE /epoc32/include/stdapis/stlport
+
 
 SOURCEPATH              ../data
 START RESOURCE          102828e3.rss
@@ -109,8 +114,12 @@
 LIBRARY                 esock.lib
 LIBRARY                 serviceprovidersettings.lib // Reading service id and related
 LIBRARY                 featmgr.lib
-LIBRARY                 mmfdevsound.lib
 LIBRARY                 centralrepository.lib 
 LIBRARY                 sssettings.lib
 LIBRARY                 telephonyaudiorouting.lib callprovider.lib cce.lib
+
+LIBRARY                 tmsfactory.lib
+LIBRARY                 tmsapi.lib
+LIBRARY                 libglib.lib
+
 DEBUGLIBRARY            flogger.lib
--- a/phoneplugins/csplugin/inc/cspaudiohandler.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/csplugin/inc/cspaudiohandler.h	Mon May 03 12:31:11 2010 +0300
@@ -1,199 +1,108 @@
 /*
-* Copyright (c) 2007-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:  Declarations for class CSPAudioHandler
-*
-*/
-
+ * Copyright (c) 2007-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:  Declarations for class CSPAudioHandler
+ *
+ */
 
 #ifndef CSPAUDIOHANDLER_H
 #define CSPAUDIOHANDLER_H
 
 #include <e32base.h>
-#include <sounddevice.h>
+
+class TmsHandler;
+/**
+ * Handles call adding from calls not done by the plugin.
+ *
+ */
+class CSPAudioHandler : public CBase
+    {
+public:
+    //Constructors and descructor
+
+    /**
+     * Two-phased constructing for the monitor.
+     *
+     * @param aObserver the observer for getting notification
+     * @param aLine the line to monitor
+     * @param aLineId line identifier
+     */
+    static CSPAudioHandler* NewL();
+
+    /**
+     * C++ default destructor.
+     */
+    virtual ~CSPAudioHandler();
+
+    /**
+     * Start audio streams.
+     */
+    void Start();
+
+    /**
+     * Stop audio streams.
+     */
+    void Stop();
 
-#include "mcsppubsubobserver.h"
-#include "mcspcenrepobserver.h"
+protected:
+    // From CActive
+    /**
+     * From CActive
+     * RunL
+     */
+    void RunL();
+
+    /**
+     * From CActive
+     * Catches errors if RunL leaves
+     * @param aError error code
+     * @return error code
+     */
+    TInt RunError(TInt aError);
+
+    /**
+     * From CActive
+     * Cancels the monitor
+     */
+    void DoCancel();
+
+private:
+    /**
+     * C++ default constructor
+     * @param aObserver the observer for status change (incoming call)
+     * @param aLine the line associated with the call
+     * @param aLineId line identifier
+     */
+    CSPAudioHandler();
+
+    /**
+     * Constructs the monitor in the second phase.
+     */
+    void ConstructL();
+
+private:
+    // data
 
 
-class CSPPubSubListener;
-class CSPCenRepListener;
-class CSPAudioStreams;
-
-/**
-* Handles call adding from calls not done by the plugin.
-*
-*/
-class CSPAudioHandler: public CBase,
-                       public MCSPPubSubObserver,
-                       public MCSPCenRepObserver,
-                       public MDevSoundObserver
-    {
-    
-    public: //Constructors and descructor    
-    
-        /**
-        * Two-phased constructing for the monitor.
-        *
-        * @param aObserver the observer for getting notification
-        * @param aLine the line to monitor
-        * @param aLineId line identifier
-        */
-        static CSPAudioHandler* NewL(  );
-
-        /**
-        * C++ default destructor.
-        */
-        virtual ~CSPAudioHandler( );
-
-        /**
-        * Start audio streams.  
-        */
-        void Start();
-
-        /**
-        * Stop audio streams. 
-        */
-        void Stop();
-
-        /**
-        * From base class MCSPPubSubObserver.
-        * Handler for changed event.
-        * @param aUid uid of setting 
-        * @param aKey id of setting
-        * @param aStatus status of completed AO operation
-        */
-        virtual void HandleNotifyPSL( const TUid aUid, const TInt& aKey, 
-            const TRequestStatus& aStatus );
- 
-        /**
-        * From base class MCSPCenRepObserver. 
-        * Handler for changed event.
-        * @param aUid uid of setting 
-        * @param aVal value
-        */
-        virtual void CSPAudioHandler::HandleNotifyCenRepL( 
-                const TUid aUid, 
-                const TUint32 aKey,
-                TInt aVal );
+    /**
+     * Audio streams handler.
+     */
+    TmsHandler* iTmsHandler;
 
-    protected: //From DevSound
-        
-        /**
-        * Handles DevDound initialization completion event.
-        * @param  aError.  KErrNone if successful. Other values are possible
-        * indicating a problem initializing CMMFDevSound object.
-        */
-        void InitializeComplete( TInt aError );  
-        
-        /**
-        * Handles CMMFDevSound object's data request event.
-        * @param aBuffer. Buffer to be filled
-        */
-        void BufferToBeFilled( CMMFBuffer* aBuffer ); 
-        
-        /**
-        * Handles play completion or cancel event.
-        * @param  aError. The status of playback
-        */
-        void PlayError( TInt aError ); 
-        
-        /**
-        * Not Supported
-        */
-        void ToneFinished( TInt aError );         
-        
-        /**
-        * Not supported.
-        */
-        void BufferToBeEmptied( CMMFBuffer* aBuffer ); 
-        
-        /**
-        * Not supported.
-        */ 
-        void RecordError( TInt aError );
-         
-        /**
-        * Not supported.
-        */ 
-        void ConvertError( TInt aError ); 
-        
-        /**
-        * Not supported.
-        */ 
-        void DeviceMessage( TUid aMessageType, const TDesC8& aMsg );  
-    
-    protected: // From CActive
-        /**
-        * From CActive
-        * RunL
-        */
-        void RunL();
-        
-        /**
-        * From CActive
-        * Catches errors if RunL leaves
-        * @param aError error code
-        * @return error code
-        */
-        TInt RunError( TInt aError );
-        
-        /**
-        * From CActive
-        * Cancels the monitor
-        */
-        void DoCancel();
+    /**
+     * Call count
+     */
+    TInt iCallCount;
+    };
 
-    private:
-        /**
-        * C++ default constructor
-        * @param aObserver the observer for status change (incoming call)
-        * @param aLine the line associated with the call
-        * @param aLineId line identifier
-        */
-        CSPAudioHandler(  );
-                                          
-        /**
-        * Constructs the monitor in the second phase.
-        */
-        void ConstructL();
-        
-    private: // data
-
-        /**
-        * Mute listening from Publish&Subscribe.
-        */        
-        CSPPubSubListener* iMuteListener;
-
-        /**
-        * Incall loudspeaker listening from Central Repository.
-        */        
-        CSPCenRepListener* iIncallLoudspeakerVolumeListener;
-
-        /**
-        * Incall ear volume listening from Central Repository.
-        */        
-        CSPCenRepListener* iIncallEarVolumeListener;
-        
-        /**
-        * Audio streams handler.
-        */
-        CSPAudioStreams* iAudioStreams;
-        
-        /** 
-        * Call count
-        */
-        TInt iCallCount;
-    };
-    
 #endif // CSPAUDIOHANDLER_H
--- a/phoneplugins/csplugin/inc/cspaudiostreams.h	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +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:  Starts and stops audio streams.
-*
-*/
-
-
-#ifndef CSPAUDIOSTREAMS_H
-#define CSPAUDIOSTREAMS_H
-
-
-#include <e32base.h>
-#include <TelephonyAudioRouting.h>
-#include "MTelephonyAudioRoutingObserver.h"
-#include "mcspdevsoundobserver.h"
-#include "mcsptimerobserver.h"
-
-class MCSPDevSoundFactory;
-class CSPTimer;
-class CSPMicrophone;
-class CSPSpeaker;
-class MCSPAudioStreamObserver;
-class CSPTimer;
-
-
-/**
- *  Starts and stops audio streams.
- *  If the activation fails then there is a retry timer which
- *  will try the activation later.
- */
-NONSHARABLE_CLASS( CSPAudioStreams ) : 
-    public CBase, 
-    public MCSPDevSoundObserver,
-    public MCSPTimerObserver,
-    public MTelephonyAudioRoutingObserver
-    {
-
-public:
-
-    /**
-    * Two-phased constructing.
-    */
-    static CSPAudioStreams* NewL( );
-
-    /**
-    * Two-phased constructing.
-    */    
-    static CSPAudioStreams* NewLC( );
-
-    /**
-    * C++ default destructor.
-    */
-    virtual ~CSPAudioStreams();
-
-    /**
-    * Starts audio streams ie inits mic and speaker.
-    */
-    void StartStreams();
-    
-    /**     
-    * Stops audio streams ie shuts down mic and speaker.
-    */
-    void StopStreams();
-    
-    /**
-    * Sets volume for ear. 
-    */
-    void VolumeChangedEar( TInt aVolume );
-    
-    /**
-    * Sets volume for loudspeaker. 
-    */
-    void VolumeChangedLoudspeaker( TInt aVolume );
-    
-    /**
-    * Stores volume levels.
-    */
-    void StoreVolumes(TInt aVolumeEar, TInt aVolumeLoudspeaker);
-
-    /**
-    * Set unmuted.
-    */    
-    void SetUnmuted();
-
-    /**
-    * Set muted.
-    */
-    void SetMuted();
-
-    /**
-    * Gives access to CSPMicrophone instance. Ownership not given.
-    * @return MCSPMic instance.
-    */
-    CSPMicrophone& Mic() const;
-    
-    /**
-    * Gives access to CSPSpeaker instance. Ownership not given.
-    * @return MCSPSpeaker instance.
-    */
-    CSPSpeaker& Speaker() const;
-    
-    /**
-    * Set observer for audio stream events.
-    * @param aObserver
-    */
-    void SetAudioStreamObserver( MCSPAudioStreamObserver& aObserver );
-    
-// from base class MCSPDevSoundObserver
-
-    /**
-    * From MCSPDevSoundObserver
-    * Notification that Mic has been activated successfully
-    */
-    void MicActivatedSuccessfully();
-    
-    /**
-    * From MCSPDevSoundObserver
-    * Notification that speaker has been activated successfully
-    */   
-    void SpeakerActivatedSuccessfully();
-    
-    /**
-    * From MCSPDevSoundObserver
-    * Notification that Mic initialisation failed.
-    */
-    void MicActivationFailed();
-    
-    /**
-    * From MCSPDevSoundObserver
-    * Notification that Speaker activation failed.
-    */
-    void SpeakerActivationFailed();
-    
-// from base class MCSPTimerObserver
-
-    /**
-    * From MCSPTimerObserver.
-    * Notify from CSPTimer that timeout passed.
-    */
-    void TimerEvent();
-    
-protected:  // Functions from base classes  
-
-// from base class MTelephonyAudioRoutingObserver
-        
-    /**
-    * @see MTelephonyAudioRoutingObserver.
-    */
-    void AvailableOutputsChanged( CTelephonyAudioRouting& aTelephonyAudioRouting );
-            
-    /**
-    * @see MTelephonyAudioRoutingObserver.
-    */
-    void OutputChanged( CTelephonyAudioRouting& aTelephonyAudioRouting);
-    
-    /**
-    * @see MTelephonyAudioRoutingObserver.
-    */
-    void SetOutputComplete( CTelephonyAudioRouting& aTelephonyAudioRouting, TInt aError);
-  
-private:
-    
-    /** 
-    * C++ default constructor. 
-    */  
-    CSPAudioStreams( );
-
-    void ConstructL( );
-    
-    static TInt TimerCallBack( TAny* aThisPtr );
-    
-    void AudioStreamsStarted();
-    
-    void StartTimer();
-    
-    void StartMicAndSpeaker();
-    
-    TBool IsMicAndSpeakerStarted();
-    
-    void ApplyVolume(TInt aVolumeEar, TInt aVolumeLoudspeaker);
-
-private: // data
-
-    /**
-    * Mic.
-    * own.
-    */     
-    CSPMicrophone* iMic;
-    
-    /**
-    * Speaker.
-    * Own.
-    */
-    CSPSpeaker* iSpeaker;
-     
-    /**
-    * Timer for retrying the activation of streams (mic & speaker) if
-    * there was a failure in activation.
-    * Own.
-    */
-    CSPTimer* iTimer;
-    
-    /**
-    * Timeout value used with timer. Timeout value doubles every retry to
-    * activate the streams.
-    */
-    TInt iTimeout;
-    
-    /**
-    * Audio output for checking if loadspeaker or ear volume should be used.
-    * Own.
-    */
-    CTelephonyAudioRouting* iAudioRouting;
-    
-    /**
-    *  Observer for stream events.
-    * Not own.
-    */
-    MCSPAudioStreamObserver* iStreamObserver;
-    
-    /**
-    *  Ear volume. 
-    */    
-    TInt iVolumeEar;
-    
-    /**
-    *  Loudspeaker volume. 
-    */
-    TInt iVolumeLoudspeaker;
-         
-    };
-
-#endif // CSPAUDIOSTREAMS_H
--- a/phoneplugins/csplugin/inc/cspcenreplistener.h	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +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:  This file contains the header of CenRep Listener class.
-*
-*/
-
-
-#ifndef CSPCENREPLISTENER_H
-#define CSPCENREPLISTENER_H
-
-// INCLUDE FILES
-#include <e32base.h>
-
-// Forward declarations
-class CRepository;
-class MCSPCenRepObserver;
-
-// BASE CLASS
-
-// CLASS DECLARATION
-
-/**
-*   CSPCenRepListener manages getting notification on CenRep key changes.
-*/
-class CSPCenRepListener : public CActive
-    {
-    public:
-        
-        /**
-        * Two-phased construction.
-        *
-        * @param aUid cenrep Uid
-        * @param aKey key to be listened
-        * @param aObserver observer for key change.
-        * @return instance of the class
-        */
-        static CSPCenRepListener* NewL( TUid aUid, TUint32 aKey, 
-                   MCSPCenRepObserver* aObserver );
-
-        /**
-        * Destructor.
-        */
-        virtual ~CSPCenRepListener();
-
-    public:
-
-        /**
-        * Gets the current value of the monitored setting
-        * @param aValue the current value of the monitored setting
-        * @return TInt Symbian OS error code from central repository
-        */
-        TInt Get( TInt& aValue );
-
-
-    protected: // From CActive
-
-        void DoCancel();
-        TInt RunError( TInt aError );
-        void RunL();
-        
-    private:
-
-        /**
-        * Constructor
-        * @param aUid cenrep Uid
-        * @param aKey key to be listened
-        * @param aObserver observer for key change.
-        */    
-        CSPCenRepListener( TUid aUid, TUint32 aKey, 
-                           MCSPCenRepObserver* aObserver );
-    
-
-        /**
-        * Private constructing.
-        */
-        void ConstructL();
-
-        /**
-        * Submits a notification request
-        */
-        void SubmitNotifyRequestL();
-        
-
-    private: // Owned by this object
-
-        /**
-        * UID of CR key.
-        */
-        TUid iUid;
-        
-        /**
-        * Repository access.
-        * Own.
-        */
-        CRepository* iRepository;
-        
-        /**
-        * Identification number of the monitored setting.
-        */
-        TUint32 iMonitorSetting;
-        
-        MCSPCenRepObserver* iObserver;
-};
-
-#endif // CSPCENREPLISTENER_H
--- a/phoneplugins/csplugin/inc/cspdevsound.h	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,165 +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:  Wrapper for CMMFDevSound
-*
-*/
-
-#ifndef CSPDEVSOUND_H
-#define CSPDEVSOUND_H
-
-#include <sounddevice.h>
-
-class MCSPDevSoundObserver;
-
-/**
- *  Wrapper for CMMFDevSound
- *
- */
-NONSHARABLE_CLASS( CSPDevSound ): 
-    public CBase, 
-    public MDevSoundObserver
-    {
-public:
-
-    /**
-    * Destructor.
-    */
-    virtual ~CSPDevSound();
-    
-    /**
-     * Activates the dev sound stream. MCSPDevSoundObserver methods are called 
-     * when activation goes ok or fails. If the stream is already active or 
-     * activating then nothing is done.
-     */
-    virtual void Activate();
-    
-    /**
-     * Deactivates the devsound stream. If stream is not active or
-     * activation is not ongoing then nothing is done. 
-     */     
-    virtual void Deactivate();
-    
-    /**
-     * Indicates that activation is ongoing,
-     * but the result of the activation is still unknown.
-     * @return ETrue - activation ongoing, EFalse - activation not ongoing.
-     */
-    TBool IsActivationOngoing() const;
-    
-    /**
-     * Determines wether the devsound stream is active or not.
-     * @return ETrue - Stream is active, EFalse - Stream not active.
-     */
-    TBool IsActive() const;
-    
-    CMMFDevSound& DevSound();
-
-// from base class MDevSoundObserver
-
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
-     */
-    void InitializeComplete( TInt aError );  
-
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
-     */
-    void BufferToBeFilled( CMMFBuffer* aBuffer ); 
-
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
-     */
-    void PlayError( TInt aError ); 
-        
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
-     */
-    void ToneFinished( TInt aError );         
-        
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
-     */
-    void BufferToBeEmptied( CMMFBuffer* aBuffer ); 
-        
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
-     */
-    void RecordError( TInt aError );
-        
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
-     */
-    void ConvertError( TInt aError ); 
-        
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
-     */
-    void DeviceMessage( TUid aMessageType, const TDesC8& aMsg );  
-    
-protected:
-
-    CSPDevSound( MCSPDevSoundObserver& aObserver );
-
-    void ConstructL( 
-        TMMFState aMode, TUint aAudioPreference, TUint aAudioPriority );
-        
-private:
-
-    /**
-     * Derived class has to activate the stream here.
-     */
-    virtual void DoActivateL() = 0;
-    
-protected: // Data
-
-    /**
-     * Indication if device is activated. Derived class has to update this.
-     */
-    TBool iActive;
-    
-    /**
-     * Indication if activation is ongoing.
-     * Derived class has to update this.
-     */
-    TBool iActivationOngoing;
-    
-    /**
-     * Devsound instance
-     * Own.  
-     */
-    CMMFDevSound* iDevSound;
-      
-    /**
-     * Observer for successfull activation.
-     * Not own.
-     */
-    MCSPDevSoundObserver& iObserver;
-    
-    /**
-     * Audio priority settings for Devsound. 
-     */
-    TMMFPrioritySettings iPrioritySettings;
-    
-
-    };
-
-#endif // CSPDEVSOUND_H
--- a/phoneplugins/csplugin/inc/cspmicrophone.h	Fri Apr 16 14:58:25 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:  Mic stream to DevSound.
-*
-*/
-
-
-#ifndef CSPMICROPHONE_H
-#define CSPMICROPHONE_H
-
-#include "cspdevsound.h" 
-
-/**
- *  Provides mic functionality.
- *
- */
-NONSHARABLE_CLASS( CSPMicrophone ): public CSPDevSound
-    {
-
-public:
-
-    static CSPMicrophone* NewL( MCSPDevSoundObserver& aObserver );
-
-    virtual ~CSPMicrophone();
-
-    /**
-     * Determines mic mute state.
-     *
-    *
-     * @return ETrue - mic is muted, EFalse - mic is not muted.
-     */
-    TBool IsMuted();
-    
-    /**
-     * Set mic muted.
-     *
-    *
-     */
-    void SetMuted();
-    
-    /**
-     * Set mic unmuted.
-     *
-    *
-     */
-    void SetUnmuted();
-   
-// from base class MDevSoundObserver
-
-    /**
-     * From MDevSoundObserver
-     * Notification from Devsound that stream (mic) is
-     * activated successfully.
-     *
-    *
-     */
-    void BufferToBeEmptied( CMMFBuffer* aBuffer ); 
-    
-    /**
-     * From MDevSoundObserver
-     * Notification from devsound that downstream(mic) activation
-     * feiled.
-     *
-    *
-     */
-    void RecordError( TInt aError );
-    
-private:
-    
-// from base class MCSPDevSound
-    
-    /**
-     * From MCSPDevSound.
-     * Tries to activate the mic stream.
-     * 
-    *
-     */
-    void DoActivateL();
-
-protected:
-
-    CSPMicrophone( MCSPDevSoundObserver& aObserver );
-
-    void ConstructL();
-
-   };
-
-#endif // CSPMICROPHONE_H
--- a/phoneplugins/csplugin/inc/cspspeaker.h	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +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:  Provides speaker functionality
-*
-*/
-
-
-#ifndef CSPSPEAKER_H
-#define CSPSPEAKER_H
-
-#include "cspdevsound.h"
-
-class MCSPDevSoundObserver;
-
-/**
- *  Provides speaker functionality.
- *
- */
-NONSHARABLE_CLASS( CSPSpeaker ): public CSPDevSound
-    {
-
-public:
-
-    static CSPSpeaker* NewL( MCSPDevSoundObserver& aObserver );
-
-    virtual ~CSPSpeaker();
-
-    /** 
-     * Sets volume.
-     * @param aVolume Volume.     
-     */
-    void SetVolume( TInt aVolume );
-    
-    /**
-     * Gets volume.
-     * @return Current volume.
-     */
-    TInt Volume();
-
-// from base class MDevSoundObserver
-
-    /**
-     * From MDevSoundObserver.
-     * Indication from devsound that stream (speaker) has been activated
-     * successfully.
-     */
-    void BufferToBeFilled( CMMFBuffer* /*aBuffer*/ );
-
-    /**
-     * From MDevSoundObserver.
-     * Indication from devsound that activation of stream( speaker)
-     * failed.
-     */
-    void PlayError( TInt aErrorCode );
-
-private:
-        
-    /**
-     * From CSPDevSound.
-     * Tries to activate the mic stream.
-     */
-    void DoActivateL();
-
-protected:
-
-    CSPSpeaker( MCSPDevSoundObserver& aObserver );
-
-    void ConstructL();
-
-    };
-
-#endif // CSPSPEAKER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/csplugin/inc/tmshandler.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,154 @@
+/*
+ * 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: Starts and stops audio streams.
+ *
+ */
+
+#ifndef TMSHandler_H
+#define TMSHandler_H
+
+#include <e32base.h>
+#include "mcsptimerobserver.h"
+#include <tms.h>
+#include <tmsstreamobsrvr.h>
+
+namespace TMS {
+//FORWARD DECLARATIONS
+class TMSFactory;
+class TMSCall;
+class TMSStream;
+class TMSSource;
+class TMSSink;
+} //namespace TMS
+
+using namespace TMS;
+
+//FORWARD DECLARATIONS
+class CSPTimer;
+
+/**
+ *  Starts and stops TMS audio streams.
+ *  If the activation fails then there is a retry timer which
+ *  will try the activation later.
+ */
+NONSHARABLE_CLASS(TmsHandler) : public CBase,
+                                public MCSPTimerObserver,
+                                public TMSStreamObserver
+    {
+public:
+
+    /**
+     * Two-phased constructing.
+     */
+    static TmsHandler* NewL();
+
+    /**
+     * Two-phased constructing.
+     */
+    static TmsHandler* NewLC();
+
+    /**
+     * C++ default destructor.
+     */
+    virtual ~TmsHandler();
+
+    /**
+     * Starts audio streams ie inits mic and speaker.
+     */
+    void StartStreams();
+
+    /**
+     * Stops audio streams ie shuts down mic and speaker.
+     */
+    void StopStreams();
+
+    /**
+     * From MCSPTimerObserver.
+     * Notify from CSPTimer that timeout passed.
+     */
+    void TimerEvent();
+
+protected:
+    // Functions from base classes
+
+    // From TMSStreamObserver
+    void TMSStreamEvent(const TMSStream& stream, TMSSignalEvent event);
+
+private:
+
+    /**
+     * C++ default constructor.
+     */
+    TmsHandler();
+
+    void ConstructL();
+
+    static TInt TimerCallBack(TAny* aThisPtr);
+
+    void AudioStreamsStarted();
+
+    void StartTimer();
+
+    void StartMicAndSpeaker();
+
+    TBool IsMicAndSpeakerStarted();
+
+    gint CreateTMSCallControl();
+    gint CreateFactory();
+    gint CreateCall();
+
+    gint CreateUplink();
+    gint CreateDownlink();
+    gint OpenUplink();
+    gint OpenDownlink();
+
+    gint CreateModemSource();
+    gint AddModemSourceToStream();
+    gint CreateModemSink();
+    gint AddModemSinkToStream();
+    gint CreateMicSource();
+    gint AddMicSourceToStream();
+    gint CreateSpeakerSink();
+    gint AddSpeakerSinkToStream();
+
+private:
+    // data
+
+    /**
+     * Timer for retrying the activation of streams (mic & speaker) if
+     * there was a failure in activation.
+     * Own.
+     */
+    CSPTimer* iTimer;
+
+    /**
+     * Timeout value used with timer. Timeout value doubles every retry to
+     * activate the streams.
+     */
+    TInt iTimeout;
+
+    TMSFactory* iFactory;
+    TMSCall* iTmsCall;
+    TMSCallType iCallType;
+    TMSStream* iTmsDnlink;
+    TMSStream* iTmsUplink;
+    TMSSource* iTmsMicSource;
+    TMSSource* iTmsModemSource;
+    TMSSink* iTmsSpeakerSink;
+    TMSSink* iTmsModemSink;
+    TBool iUplinkStarted;
+    TBool iDnlinkStarted;
+    };
+
+#endif // TMSHANDLER_H
--- a/phoneplugins/csplugin/src/cspaudiohandler.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/csplugin/src/cspaudiohandler.cpp	Mon May 03 12:31:11 2010 +0300
@@ -1,61 +1,46 @@
 /*
-* 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:  Implements the class CSPAudioHandler
-*
-*/
-
+ * Copyright (c) 2007-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:  Implements the class CSPAudioHandler
+ *
+ */
 
 #include "cspaudiohandler.h"
-
-#include <telmicmutestatuspskeys.h>
-#include <telincallvolcntrlcrkeys.h>
-#include <PSVariables.h>
-#include <AudioPreference.h>
-
-#include "cspaudiostreams.h"
-#include "csppubsublistener.h"
-#include "cspcenreplistener.h"
+#include "tmshandler.h"
 #include "csplogger.h"
 
-
 // ---------------------------------------------------------------------------
 // CSPAudioHandler::NewL.
 // ---------------------------------------------------------------------------
 //
-CSPAudioHandler* CSPAudioHandler::NewL(  )
+CSPAudioHandler* CSPAudioHandler::NewL()
     {
-    CSPLOGSTRING(CSPOBJECT, 
-        "CSPAudioHandler::NewL()" );
-    CSPAudioHandler* self = new ( ELeave ) CSPAudioHandler(  );
-    CleanupStack::PushL( self );
+    CSPLOGSTRING(CSPOBJECT, "CSPAudioHandler::NewL()" );
+    CSPAudioHandler* self = new (ELeave) CSPAudioHandler();
+    CleanupStack::PushL(self);
     self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;    
+    CleanupStack::Pop(self);
+    return self;
     }
 
 // ---------------------------------------------------------------------------
 // Destructs the object by canceling first ongoing monitoring.
 // ---------------------------------------------------------------------------
 //
-CSPAudioHandler::~CSPAudioHandler( )
+CSPAudioHandler::~CSPAudioHandler()
     {
-    CSPLOGSTRING(CSPOBJECT, 
-        "CSPAudioHandler::~CSPAudioHandler()" );
-    delete iMuteListener;
-    delete iIncallLoudspeakerVolumeListener;
-    delete iIncallEarVolumeListener;
-    delete iAudioStreams;
+    CSPLOGSTRING(CSPOBJECT, "CSPAudioHandler::~CSPAudioHandler()" );
+    delete iTmsHandler;
     }
 
 // ---------------------------------------------------------------------------
@@ -65,11 +50,11 @@
 void CSPAudioHandler::Start()
     {
     iCallCount++;
-    CSPLOGSTRING2( CSPINT, "CSPAudioHandler::Start callcount: %d", iCallCount );
+    CSPLOGSTRING2(CSPINT, "CSPAudioHandler::Start callcount: %d", iCallCount);
 
-    if ( iCallCount == 1 )
+    if (iTmsHandler && iCallCount == 1)
         {
-        iAudioStreams->StartStreams();
+        iTmsHandler->StartStreams();
         }
     }
 
@@ -79,205 +64,38 @@
 //
 void CSPAudioHandler::Stop()
     {
-    CSPLOGSTRING2( CSPINT, "CSPAudioHandler::Stop callcount: %d", iCallCount );
-    if ( iCallCount == 1 )
+    CSPLOGSTRING2(CSPINT, "CSPAudioHandler::Stop callcount: %d", iCallCount);
+    if (iTmsHandler && iCallCount == 1)
         {
-        iAudioStreams->StopStreams();
+        iTmsHandler->StopStreams();
         iCallCount--;
         }
-    else if ( iCallCount > 1 )
+    else if (iCallCount > 1)
         {
         iCallCount--;
         }
     }
 
 // ---------------------------------------------------------------------------
-// From MCSPPubSubObserver
-// CSPAudioHandler::HandleNotifyPSL
-// ---------------------------------------------------------------------------
-//
-void CSPAudioHandler::HandleNotifyPSL( const TUid /*aUid*/, const TInt& /*aKey*/, 
-            const TRequestStatus& /*aStatus*/ )
-    {
-    TInt muteVal;
-    TInt err = iMuteListener->Get( muteVal );
-    if (  err == KErrNone && muteVal == EPSTelMicMuteOn )
-        {
-        CSPLOGSTRING2( CSPINT, 
-            "CSPAudioHandler::HandleNotifyPSL_MUTE %d", muteVal);   
-        #if !defined(__WINSCW__) 
-        iAudioStreams->SetMuted();
-        #endif //__WINSCW__
-        }
-    else if ( err == KErrNone )
-        {
-        CSPLOGSTRING2( CSPINT, 
-            "CSPAudioHandler::HandleNotifyPSL_UNMUTE %d", muteVal);
-        #if !defined(__WINSCW__) 
-        // Change when gain is really changed
-        iAudioStreams->SetUnmuted();
-        #endif //__WINSCW__
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// From MCSPCenRepObserver
-// CSPAudioHandler::HandleNotifyCenRepL
-// ---------------------------------------------------------------------------
-//
-void CSPAudioHandler::HandleNotifyCenRepL( const TUid /*aUid*/, 
-                        const TUint32 aKey, 
-                        TInt aVal )
-    {
-    if ( aKey == KTelIncallLoudspeakerVolume )
-        {
-        CSPLOGSTRING( CSPINT, "CSPAudioHandler::HandleNotifyCenRepL IncallLoudspeaker" );
-        iAudioStreams->VolumeChangedLoudspeaker( aVal );
-        }
-    else if ( aKey == KTelIncallEarVolume )
-        {
-        CSPLOGSTRING( CSPINT, "CSPAudioHandler::HandleNotifyCenRepL IncallEar" );
-        iAudioStreams->VolumeChangedEar( aVal );
-        }
-    else
-        {
-        CSPLOGSTRING( CSPINT, "CSPAudioHandler::HandleNotifyCenRepL  UNKNOWN" );
-        }   
-    }
-
-// ---------------------------------------------------------
-// CSPAudioHandler::InitializeComplete
-//
-// Handles DevSound initialisation callback
-// ---------------------------------------------------------
-//
-void CSPAudioHandler::InitializeComplete( TInt aError )
-    {
-    if ( KErrNone != aError )
-        {
-        // If initialisation failed, volume can not be adjusted
-        CSPLOGSTRING2( CSPERROR, 
-           "CSPAudioHandler::InitializeComplete Error:%d", aError );
-        }
-    else
-        {
-        CSPLOGSTRING( CSPINT, 
-           "CSPAudioHandler::InitializeComplete");        
-        }
-    }
-    
-// ---------------------------------------------------------
-// CSPAudioHandler::BufferToBeFilled
-// ---------------------------------------------------------
-//
-void CSPAudioHandler::BufferToBeFilled( CMMFBuffer* /*aBuffer*/ )
-    {
-    }
-    
-// ---------------------------------------------------------
-// CSPAudioHandler::BufferToBeEmptied()
-// Not supported
-// ---------------------------------------------------------
-//
-void CSPAudioHandler::BufferToBeEmptied( CMMFBuffer* /*aBuffer*/ )
-    {
-    }
-
-// ---------------------------------------------------------
-// CSPAudioHandler::PlayError
-// Not supported
-// ---------------------------------------------------------
-//    
-void CSPAudioHandler::PlayError( TInt /*aError*/ )
-    {       
-    }
-    
-// ---------------------------------------------------------
-// CSPAudioHandler::RecordError
-// Not supported
-// ---------------------------------------------------------
-//
-void CSPAudioHandler::RecordError( TInt /*aError*/ )
-    {
-    }
-    
-// ---------------------------------------------------------
-// CSPAudioHandler::ConvertError
-// Not supported
-// ---------------------------------------------------------
-// 
-void CSPAudioHandler::ConvertError( TInt /*aError*/ )
-    {
-    }
-
-// ---------------------------------------------------------
-// CSPAudioHandler::DeviceMessage
-// Not supported
-// ---------------------------------------------------------
-//
-void CSPAudioHandler::DeviceMessage( TUid /*aMessageType*/, const TDesC8& /*aMsg*/ )
-    { 
-    }
-    
-// ---------------------------------------------------------
-// CSPAudioHandler::ToneFinished
-// Not supported
-// ---------------------------------------------------------
-//   
-void CSPAudioHandler::ToneFinished( TInt /*aError*/ ) 
-    {
-    }
-
-// ---------------------------------------------------------------------------
 // Constructs the monitor.
 // ---------------------------------------------------------------------------
 //
-CSPAudioHandler::CSPAudioHandler( )
+CSPAudioHandler::CSPAudioHandler()
     {
-    CSPLOGSTRING(CSPOBJECT, 
-        "CSPAudioHandler::CSPAudioHandler()" );
+    CSPLOGSTRING(CSPOBJECT, "CSPAudioHandler::CSPAudioHandler()");
     iCallCount = 0; // Active calls count
     }
-    
+
 // ---------------------------------------------------------------------------
 // Second phase construction.
 // ---------------------------------------------------------------------------
 //
 void CSPAudioHandler::ConstructL()
     {
-    RProperty::TType type( RProperty::EInt );
-    TSecurityPolicy readPolicy( ECapability_None );
-    TSecurityPolicy writePolicy( ECapabilityWriteDeviceData );
-    
-    RProperty::Define( KPSUidTelMicrophoneMuteStatus, 
-        KTelMicrophoneMuteState,
-        type,
-        readPolicy,
-        writePolicy );
-    
-    iMuteListener = CSPPubSubListener::NewL( 
-        KPSUidTelMicrophoneMuteStatus, 
-        KTelMicrophoneMuteState, 
-        this );
-        
-    iIncallLoudspeakerVolumeListener = CSPCenRepListener::NewL( KCRUidInCallVolume,
-                         KTelIncallLoudspeakerVolume, this );
-    
-    iIncallEarVolumeListener = CSPCenRepListener::NewL( KCRUidInCallVolume,
-                        KTelIncallEarVolume, this );
-    
-    iAudioStreams = CSPAudioStreams::NewL();
-
-    // Initialize audio volumes
-    TInt volEar;
-    TInt volLoud;
-    
-    TInt volGetRes = iIncallEarVolumeListener->Get( volEar );
-    CSPLOGSTRING3(CSPINT, "CSPAudioHandler::ConstructL() ear     %d %d", volGetRes, volEar );
-    volGetRes = iIncallLoudspeakerVolumeListener->Get( volLoud );
-    CSPLOGSTRING3(CSPINT, "CSPAudioHandler::ConstructL() loudspkr %d %d", volGetRes, volLoud );    
-    
-    iAudioStreams->StoreVolumes( volEar, volLoud );
+    if (!iTmsHandler)
+        {
+        iTmsHandler = TmsHandler::NewL();
+        }
     }
 
 // End of file
--- a/phoneplugins/csplugin/src/cspaudiostreams.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,419 +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:  Starts and stops audio streams.
-*
-*/
-
-
-#include "cspaudiostreams.h"
-#include "cspmicrophone.h"
-#include "cspspeaker.h"
-#include "csplogger.h"
-#include "mcspaudiostreamobserver.h"
-#include "csptimer.h"
-
-#include <TelephonyAudioRouting.h>
-
-/**
-* Timeout initial value.
-*/
-const TInt KTimeoutInitial = 200000; // 0.2s
-
-/**
-* Double the timeout for every retry.
-*/
-const TInt KTimeoutMultiplier = 2;
-
-// ======== MEMBER FUNCTIONS ========
-   
-// ---------------------------------------------------------------------------
-// Static constructor
-// ---------------------------------------------------------------------------
-//
-CSPAudioStreams* CSPAudioStreams::NewL( )
-    {
-    CSPAudioStreams* self = 
-        CSPAudioStreams::NewLC();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Static constructor
-// ---------------------------------------------------------------------------
-//
-CSPAudioStreams* CSPAudioStreams::NewLC(  )
-    {
-    CSPAudioStreams* self = new( ELeave ) CSPAudioStreams( );
-    CleanupStack::PushL( self );
-    self->ConstructL( );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CSPAudioStreams::~CSPAudioStreams()
-    {
-    if (iTimer)
-        {
-        iTimer->CancelNotify();    
-        delete iTimer;
-        }
-    
-    delete iSpeaker;
-    delete iMic;
-    delete iAudioRouting;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets observer for audio stream.
-// ---------------------------------------------------------------------------
-//
-void CSPAudioStreams::SetAudioStreamObserver( 
-    MCSPAudioStreamObserver& aObserver )
-    {
-    iStreamObserver = &aObserver;
-    }
-    
-// ---------------------------------------------------------------------------
-// Gives access to mic
-// ---------------------------------------------------------------------------
-//
-CSPMicrophone& CSPAudioStreams::Mic() const
-    {
-    return *iMic;
-    }
-
-// ---------------------------------------------------------------------------
-// Gives access to speaker
-// ---------------------------------------------------------------------------
-//
-CSPSpeaker& CSPAudioStreams::Speaker() const
-    {
-    return *iSpeaker;
-    }
-    
-// ---------------------------------------------------------------------------
-// From class MCSPAudioStream
-// Activates mic and speaker.
-// ---------------------------------------------------------------------------
-//
-void CSPAudioStreams::StartStreams() 
-    {
-    CSPLOGSTRING(CSPINT, "CSPAudioStreams::StartStreams");
-    
-    if( !IsMicAndSpeakerStarted() )    
-        {
-        StartMicAndSpeaker(); 
-        
-        if( iStreamObserver )
-            {
-            iStreamObserver->AudioStreamsStarted();
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// From class MCSPAudioStream
-// Deactivates mic and speaker if the streams are active or they are 
-// activating. 
-// ---------------------------------------------------------------------------
-//
-void CSPAudioStreams::StopStreams() 
-    {
-    CSPLOGSTRING(CSPINT, "CSPAudioStreams::StopStreams");
-    
-    if( IsMicAndSpeakerStarted() )
-        {
-            CSPLOGSTRING(CSPINT, "CSPAudioStreams::StopStreams Stopping");
-        iTimer->CancelNotify(); 
-        iTimeout = KTimeoutInitial;
-        if( iStreamObserver ) 
-            {
-            iStreamObserver->AudioStreamsGoingToStop();
-            }
-        iMic->Deactivate();
-        iSpeaker->Deactivate();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CSPAudioStreams::VolumeChangedEar
-// ---------------------------------------------------------------------------
-//
-void CSPAudioStreams::VolumeChangedEar(TInt aVolume)
-    {
-    CSPLOGSTRING2(CSPINT, "CSPAudioStreams::SetVolume %d", aVolume);
-    iVolumeEar = aVolume;
-    iSpeaker->SetVolume( aVolume );
-    }
-
-// ---------------------------------------------------------------------------
-// CSPAudioStreams::VolumeChangedLoudspeaker
-// ---------------------------------------------------------------------------
-//
-void CSPAudioStreams::VolumeChangedLoudspeaker(TInt aVolume)
-    {
-    CSPLOGSTRING2(CSPINT, "CSPAudioStreams::SetVolume %d", aVolume);
-    iVolumeLoudspeaker = aVolume;
-    iSpeaker->SetVolume( aVolume );
-    }
-
-// ---------------------------------------------------------------------------
-// CSPAudioStreams::StoreVolumes
-// ---------------------------------------------------------------------------
-//
-void CSPAudioStreams::StoreVolumes(TInt aVolumeEar, TInt aVolumeLoudspeaker )
-    {
-    iVolumeEar = aVolumeEar;
-    iVolumeLoudspeaker = aVolumeLoudspeaker;
-    }
-    
-// ---------------------------------------------------------------------------
-// CSPAudioStreams::ApplyVolume
-// ---------------------------------------------------------------------------
-//
-void CSPAudioStreams::ApplyVolume(TInt aVolumeEar, TInt aVolumeLoudspeaker )
-    {
-    CTelephonyAudioRouting::TAudioOutput current = iAudioRouting->Output();
-    if ( current == CTelephonyAudioRouting::ELoudspeaker )
-        {
-        CSPLOGSTRING( CSPINT, "CSPAudioStreams::ApplyVolume Loudspeaker Active: SetVolume" );
-        iSpeaker->SetVolume( aVolumeLoudspeaker );
-        }
-        // else: ear volume should be used
-     else if ( current == CTelephonyAudioRouting::EHandset )
-        {
-        CSPLOGSTRING( CSPINT, "CSPAudioStreams::ApplyVolume Ear Active: SetVolume" );
-        iSpeaker->SetVolume( aVolumeEar );
-        }
-    else
-        {
-        CSPLOGSTRING2( CSPINT, "CSPAudioStreams::ApplyVolume UNKNOWN AUDIO OUTPUT MODE %d", current );
-        // No volume setting
-        iSpeaker->SetVolume( aVolumeEar );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CSPAudioStreams::SetMuted
-// ---------------------------------------------------------------------------
-//  
-void CSPAudioStreams::SetMuted() 
-    {
-    iMic->SetMuted();
-    }
-
-// ---------------------------------------------------------------------------
-// CSPAudioStreams::SetUnmuted
-// ---------------------------------------------------------------------------
-//  
-void CSPAudioStreams::SetUnmuted() 
-    {
-    iMic->SetUnmuted();
-    }
-
-// ---------------------------------------------------------------------------
-// From class MCSPAudioStreamObserver
-// If speaker is already active then the streams are active.
-// If speker is not active and it is not activating then speaker then
-// activation has failed and start retry timer.
-// ---------------------------------------------------------------------------
-//   
-void CSPAudioStreams::MicActivatedSuccessfully()
-    {
-    CSPLOGSTRING(CSPINT, "CSPAudioStreams::MicActivatedSuccessfully" );
-    if( iSpeaker->IsActive() )
-        {
-        // Mic and speaker are active.
-        AudioStreamsStarted();
-        }
-    else if( !iSpeaker->IsActivationOngoing() ) 
-        {
-        // Start retry timer for activating speaker again
-        StartTimer();
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// From class MCSPAudioStreamObserver
-// If mic is already active then streams are active.
-// If mic is not active and it is not activating then mic activation has
-// failed and start retry timer.
-// ---------------------------------------------------------------------------
-//   
-void CSPAudioStreams::SpeakerActivatedSuccessfully()
-    {
-    CSPLOGSTRING(CSPINT, "CSPAudioStreams::SpeakerActivatedSuccessfully" );
-    if( iMic->IsActive() ) 
-        {
-        // Mic and speaker are active.
-        AudioStreamsStarted();
-        }
-    else if( !iMic->IsActivationOngoing() ) 
-        {
-        // Start retry timer for activating mic again.
-        StartTimer();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// From class MCSPAudioStreamObserver
-// Starts timer for trying activation again.
-// ---------------------------------------------------------------------------
-//    
-void CSPAudioStreams::MicActivationFailed()
-    {
-    CSPLOGSTRING(CSPINT, "CSPAudioStreams::MicActivationFailed" );
-   
-    // Dont start timer until speaker has stopped activation.
-    if( !iSpeaker->IsActivationOngoing() ) 
-        {
-        StartTimer();
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// From class MCSPAudioStreamObserver
-// Starts timer for trying activation again.
-// ---------------------------------------------------------------------------
-// 
-void CSPAudioStreams::SpeakerActivationFailed()
-    {
-    CSPLOGSTRING(CSPINT, "PE.AudioStreams::SpeakerActivationFailed" );
-    
-    // Dont start timer until mic has stopped activation.
-    if( !iMic->IsActivationOngoing() )
-        {
-        StartTimer();
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// From class MCSPTimerObserver
-// Notify from CSPTimer that timeout passed. Try to start mic and
-// speaker again.
-// ---------------------------------------------------------------------------
-// 
-void CSPAudioStreams::TimerEvent()
-    {
-    CSPLOGSTRING(CSPINT, "CSPAudioStreams.TimerEvent" );
-    iTimeout *= KTimeoutMultiplier;
-    StartMicAndSpeaker();
-    }
-
-// -----------------------------------------------------------------------------
-// CTSEAudioRouteObserver::AvailableOutputsChanged
-// -----------------------------------------------------------------------------
-//
-void CSPAudioStreams::AvailableOutputsChanged( 
-        CTelephonyAudioRouting& /*aTelephonyAudioRouting*/ )
-    {
-    CSPLOGSTRING(CSPINT, "CSPAudioStreams::AvailableOutputsChanged" );
-    }
-    
-// -----------------------------------------------------------------------------
-// CTSEAudioRouteObserver::OutputChanged
-// -----------------------------------------------------------------------------
-//
-void CSPAudioStreams::OutputChanged( 
-        CTelephonyAudioRouting& /*aTelephonyAudioRouting*/ )
-    {
-    CSPLOGSTRING(CSPINT, "CSPAudioStreams::OutputChanged" );
-    ApplyVolume(iVolumeEar, iVolumeLoudspeaker);
-    }
-
-// -----------------------------------------------------------------------------
-// CSPAudioStreams::SetOutputComplete
-// -----------------------------------------------------------------------------
-//
-void CSPAudioStreams::SetOutputComplete( CTelephonyAudioRouting& /*aTelephonyAudioRouting*/,
-                                         TInt /*aError*/ )
-   {
-   }  
-
-// ---------------------------------------------------------------------------
-// Constructor
-// ---------------------------------------------------------------------------
-//
-CSPAudioStreams::CSPAudioStreams( ): iTimeout(KTimeoutInitial)
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Second phase constructor
-// ---------------------------------------------------------------------------
-//
-void CSPAudioStreams::ConstructL( )
-    {
-    CSPLOGSTRING(CSPINT, "CSPAudioStreams::ConstructL");
-
-    iTimer = CSPTimer::NewL();
-    iMic = CSPMicrophone::NewL( *this );
-    iSpeaker = CSPSpeaker::NewL( *this );
-    
-    #if !defined(__WINSCW__)
-    iAudioRouting = CTelephonyAudioRouting::NewL( *this );
-    #endif //__WINSCW__        
-    }
-    
-// ---------------------------------------------------------------------------
-// Resets timer
-// ---------------------------------------------------------------------------
-//
-void CSPAudioStreams::AudioStreamsStarted()
-    {
-    CSPLOGSTRING(CSPINT, "CSPAudioStreams::AudioStreamsStarted" );
-    iTimeout = KTimeoutInitial; 
-    iTimer->CancelNotify();
-    }
-
-// ---------------------------------------------------------------------------
-// Starts timer
-// ---------------------------------------------------------------------------
-//
-void CSPAudioStreams::StartTimer() 
-    {
-    CSPLOGSTRING(CSPINT, "CSPAudioStreams::StartTimer" );
-    iTimer->NotifyAfter( iTimeout, *this );
-    }
-    
-// ---------------------------------------------------------------------------
-// Starts mic and speaker
-// ---------------------------------------------------------------------------
-//
-void CSPAudioStreams::StartMicAndSpeaker()
-    {
-    // if speaker and mic is active then activation does not
-    // cause any actions.
-    iSpeaker->Activate();
-    iMic->Activate();   
-    }
-
-// ---------------------------------------------------------------------------
-// Indicated if mic and speaker are started or starting up.
-// ---------------------------------------------------------------------------
-//    
-TBool CSPAudioStreams::IsMicAndSpeakerStarted()
-    {
-    TBool areStreamsActive( iSpeaker->IsActive() && iMic->IsActive() );
-    TBool areStreamsActivating( iMic->IsActivationOngoing() ||  
-        iSpeaker->IsActivationOngoing() || iTimer->IsNotifyOngoing() );
-        
-    return areStreamsActive || areStreamsActivating;
-    }
-
-//  End of File  
--- a/phoneplugins/csplugin/src/cspcenreplistener.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +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:  Central Repository listening
-*
-*/
-
-
-// INCLUDE FILES
-#include "cspcenreplistener.h"
-#include <centralrepository.h>
-#include "csppanic.pan"
-#include "mcspcenrepobserver.h"
-#include "csplogger.h"
-
-
-// -----------------------------------------------------------------------------
-// CSPCenRepListener::CSPCenRepListener
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CSPCenRepListener* CSPCenRepListener::NewL(
-        TUid aUid,
-        TUint32 aMonitorSetting,
-        MCSPCenRepObserver* aObserver
-        )
-    {
-    CSPLOGSTRING( CSPINT, "CSPCenRepListener::NewL" )
-    CSPCenRepListener* self = new( ELeave ) 
-        CSPCenRepListener( aUid, aMonitorSetting, aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop();
-    return self;
-    }
-    
-
-// Destructor
-CSPCenRepListener::~CSPCenRepListener()
-    {
-    Cancel();
-    delete iRepository;
-    }
-    
-
-// -----------------------------------------------------------------------------
-// CSPCenRepListener::Get
-// -----------------------------------------------------------------------------
-//
-TInt CSPCenRepListener::Get( TInt& aValue )
-    {
-    return ( iRepository->Get( iMonitorSetting, aValue ) );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CSPCenRepListener::DoCancel
-// -----------------------------------------------------------------------------
-//
-void CSPCenRepListener::DoCancel()
-    {
-    __ASSERT_DEBUG( iRepository, Panic( ECSPPanicNoRepository ) );
-    iRepository->NotifyCancel( iMonitorSetting );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CSPCenRepListener::RunError
-// -----------------------------------------------------------------------------
-//
-TInt CSPCenRepListener::RunError(
-        #ifdef _DEBUG
-        TInt aError // Log the leavecode from RunL
-        #else
-        TInt /*aError*/
-        #endif
-        )
-    {
-    #ifdef _DEBUG
-    CSPLOGSTRING2( CSPERROR, "CSPCenRepListener::RunError %d", aError );
-    #endif
-    return ( KErrNone );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CSPCenRepListener::RunL
-// -----------------------------------------------------------------------------
-//
-void CSPCenRepListener::RunL()
-    {
-    CSPLOGSTRING( CSPINT, "CSPCenRepListener::RunL");
-
-    // Don't resubmit the request on error
-    // Central repositry completes notifications with id of setting
-    // so check only that value of iStatus is negative
-    User::LeaveIfError( iStatus.Int() < KErrNone ); 
-    SubmitNotifyRequestL();
-
-    TInt volume;
-    // The loudspeaker volume has changed in repository.
-    // Retrieve the current volume from repository.
-    User::LeaveIfError( Get( volume ) );
-
-    CSPLOGSTRING2( CSPINT, "CSPCenRepListener::RunL vol %d", volume);
-    iObserver->HandleNotifyCenRepL( iUid, iMonitorSetting, volume ); 
-    }
-
-
-// -----------------------------------------------------------------------------
-// CSPCenRepListener::CSPCenRepListener
-// -----------------------------------------------------------------------------
-//
-CSPCenRepListener::CSPCenRepListener(
-        TUid aUid,
-        TUint32 aMonitorSetting,
-        MCSPCenRepObserver* aObserver
-        ) : CActive( EPriorityStandard ),
-            iUid( aUid ),
-            iMonitorSetting( aMonitorSetting ),
-            iObserver( aObserver )
-    {
-    CSPLOGSTRING( CSPINT, "CSPCenRepListener::CSPCenRepListener, start");
-    CActiveScheduler::Add( this );
-    
-    CSPLOGSTRING( CSPINT, "CSPCenRepListener::CSPCenRepListener, complete");
-    }
-
-        
-// -----------------------------------------------------------------------------
-// CSPCenRepListener::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CSPCenRepListener::ConstructL()
-    {
-    // Create repository instance
-    iRepository = CRepository::NewL( iUid );
-    // Start monitoring
-    SubmitNotifyRequestL();
-    }
-
-
-// -----------------------------------------------------------------------------
-// CSPCenRepListener::SubmitNotifyRequestL
-// -----------------------------------------------------------------------------
-//
-void CSPCenRepListener::SubmitNotifyRequestL()
-    {
-    CSPLOGSTRING( CSPINT, "CSPCenRepListener::SubmitNotifyRequestL");
-    __ASSERT_DEBUG( iRepository, Panic( ECSPPanicNoRepository ) );
-    __ASSERT_DEBUG( !IsActive(), Panic( ECSPPanicRepositoryAlreadyActive ) );
-    iRepository->NotifyRequest( iMonitorSetting, iStatus );
-    SetActive();
-    CSPLOGSTRING( CSPINT, "CSPCenRepListener::SubmitNotifyRequestL, complete");
-    }
-
-    
-// End of file
--- a/phoneplugins/csplugin/src/cspdevsound.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +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:  Wrapper for CMMFDevSound
-*
-*/
-
-
-#include "cspdevsound.h"
-#include "csplogger.h"
-#include "mcspdevsoundobserver.h"
-
-#include <AudioPreference.h>
-#include <S60FourCC.h>
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CSPDevSound
-// ---------------------------------------------------------------------------
-//
-CSPDevSound::CSPDevSound( MCSPDevSoundObserver& aObserver ) : 
-    iObserver( aObserver )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// ConstructL
-// ---------------------------------------------------------------------------
-//
-void CSPDevSound::ConstructL( 
-    TMMFState aMode, 
-    TUint aAudioPreference,
-    TUint aAudioPriority )
-    {
-    CSPLOGSTRING( CSPINT, "CSPDevSound::ConstructL; Entry" );
-
-    TFourCC modemFourCC;
-    modemFourCC.Set(KS60FourCCCodeModem);
-
-    iDevSound = CMMFDevSound::NewL();
-#ifndef __WINSCW__
-    iDevSound->InitializeL( *this, modemFourCC, aMode  );   
-#endif
-    iPrioritySettings.iPriority = aAudioPriority;
-    iPrioritySettings.iPref = 
-        static_cast<TMdaPriorityPreference>( aAudioPreference );
-    iPrioritySettings.iState = aMode;    
-    CSPLOGSTRING( CSPINT, "CSPDevSound::ConstructL; Exit" );
-    }
-    
-// ---------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// ---------------------------------------------------------------------------
-//
-CSPDevSound::~CSPDevSound()
-    {
-    delete iDevSound;
-    }
-    
-// ---------------------------------------------------------------------------
-// Tries to activate the audio stream if not active or activating
-// ---------------------------------------------------------------------------
-//
-void CSPDevSound::Activate() 
-    {
-    CSPLOGSTRING( CSPINT, "CSPDevSound::Activate" );
-    if( !IsActive() && !IsActivationOngoing() )
-        {
-        iActivationOngoing = ETrue;
-        TInt err = KErrNone; 
-        TRAP( err, DoActivateL() );
-        CSPLOGSTRING2( CSPINT, "CSPDevSound::Activate %d", err );
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// Deactivates the audio device.
-// ---------------------------------------------------------------------------
-//
-void CSPDevSound::Deactivate()
-    {
-    CSPLOGSTRING( CSPINT, "CSPDevSound::Deactivate" );
-    if( IsActive() || IsActivationOngoing() )
-        {
-        CSPLOGSTRING( CSPINT, "CSPDevSound::Deactivate Stopping" );
-        iDevSound->Stop();
-        iActive = EFalse;
-        iActivationOngoing = EFalse;
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// ActivationOngoing
-// ---------------------------------------------------------------------------
-//
-TBool CSPDevSound::IsActivationOngoing() const 
-    {
-    return iActivationOngoing;
-    }
-    
-// ---------------------------------------------------------------------------
-// IsActive
-// ---------------------------------------------------------------------------
-//
-TBool CSPDevSound::IsActive() const
-    {
-    return iActive;
-    }
-    
-CMMFDevSound& CSPDevSound::DevSound()
-    {
-    return *iDevSound;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// ---------------------------------------------------------------------------
-//
-void CSPDevSound::InitializeComplete( TInt aError ) 
-    {
-    CSPLOGSTRING( CSPINT, "CSPDevSound::InitializeComplete" );
-    if( aError == KErrNone )
-        {
-        iDevSound->SetPrioritySettings( iPrioritySettings );   
-            
-        }
-        
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// ---------------------------------------------------------------------------
-//
-void CSPDevSound::BufferToBeFilled( CMMFBuffer* /*aBuffer*/ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// ---------------------------------------------------------------------------
-//
-void CSPDevSound::PlayError( TInt /*aError*/ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// ---------------------------------------------------------------------------
-//
-void CSPDevSound::ToneFinished( TInt /*aError*/ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// ---------------------------------------------------------------------------
-//
-void CSPDevSound::BufferToBeEmptied( CMMFBuffer* /*aBuffer*/ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// ---------------------------------------------------------------------------
-//
-void CSPDevSound::RecordError( TInt /*aError*/ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// ---------------------------------------------------------------------------
-//
-void CSPDevSound::ConvertError( TInt /*aError*/ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// ---------------------------------------------------------------------------
-//
-void CSPDevSound::DeviceMessage( 
-    TUid /*aMessageType*/, 
-    const TDesC8& /*aMsg*/ )
-    {
-    }
- 
-//  End of File
-
--- a/phoneplugins/csplugin/src/cspmicrophone.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +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:  Mic stream to DevSound.
-*
-*/
-
-
-#include "cspmicrophone.h"
-#include "csplogger.h"
-#include "mcspdevsoundobserver.h"
-
-#include <AudioPreference.h>
-
-// Mute value
-const TInt KSetMuteToDevSound = 0;
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Static constructor.
-// ---------------------------------------------------------------------------
-//
-CSPMicrophone* CSPMicrophone::NewL( 
-    MCSPDevSoundObserver& aObserver )
-    {
-    CSPMicrophone* self = new( ELeave ) CSPMicrophone( aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CSPMicrophone::~CSPMicrophone()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Gives mic mute state
-// ---------------------------------------------------------------------------
-//
-TBool CSPMicrophone::IsMuted()
-    {
-    const TInt gain( iDevSound->Gain() );
-    TBool isMuted = EFalse;
-    if ( !gain )
-        {
-        // Mute is on
-        isMuted = ETrue;
-        }
-    CSPLOGSTRING( CSPINT, "CSPMicrophone::IsMuted" );
-    return isMuted;
-    }
-    
-// ---------------------------------------------------------------------------
-// Set mic muted.
-// ---------------------------------------------------------------------------
-//
-void CSPMicrophone::SetMuted()
-    {
-    CSPLOGSTRING( CSPINT, "CSPMicrophone::SetMicMuted" );
-    iDevSound->SetGain( KSetMuteToDevSound );
-    }
-    
-// ---------------------------------------------------------------------------
-// Set mic unmuted
-// ---------------------------------------------------------------------------
-//
-void CSPMicrophone::SetUnmuted()
-    {
-    CSPLOGSTRING( CSPINT, "CSPMicrophone::SetUnmuted" );
-    iDevSound->SetGain( iDevSound->MaxGain() );
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Activation was successfull. 
-// ---------------------------------------------------------------------------
-//
-void CSPMicrophone::BufferToBeEmptied( CMMFBuffer* /*aBuffer*/ )
-    {
-    CSPLOGSTRING( CSPINT, "CSPMicrophone::BufferToBeEmptied" );
-    
-    // We dont react to devsound messages unless we are activating.
-    if( IsActivationOngoing() ) 
-        {
-        iActive = ETrue;
-        iActivationOngoing = EFalse;
-        iObserver.MicActivatedSuccessfully();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Activation feiled
-// ---------------------------------------------------------------------------
-//    
-void CSPMicrophone::RecordError( TInt aError )
-    {
-    CSPLOGSTRING( CSPINT, "CSPMicrophone::RecordError" );
-    
-    // We dont react to devsound messages unless we are activating.
-    if( IsActivationOngoing() )
-        {
-        if( aError == KErrAccessDenied ) 
-            {
-            iActivationOngoing = EFalse;
-            iObserver.MicActivationFailed();    
-            }
-        }   
-    }
-    
-// ---------------------------------------------------------------------------
-// From class CSPDevSound
-// Tries to activate mic stream. Stream becomes active when BufferToBeFilled
-// gets called.
-// ---------------------------------------------------------------------------
-//
-void CSPMicrophone::DoActivateL() 
-    {
-    iDevSound->RecordInitL();
-    }
-    
-// ---------------------------------------------------------------------------
-// Constructor
-// ---------------------------------------------------------------------------
-//
-CSPMicrophone::CSPMicrophone(
-    MCSPDevSoundObserver& aObserver ) : 
-    CSPDevSound( aObserver )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Second phase constructor
-// ---------------------------------------------------------------------------
-//
-void CSPMicrophone::ConstructL()
-    {
-    CSPDevSound::ConstructL( 
-        EMMFStateRecording, 
-        KAudioPrefCSCallUplink, 
-        KAudioPriorityCSCallUplink );
-    }
-
-//  End of File  
--- a/phoneplugins/csplugin/src/cspspeaker.cpp	Fri Apr 16 14:58:25 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:  Provides speaker functionality
-*
-*/
-
-
-#include <AudioPreference.h>
-
-#include "cspspeaker.h"
-#include "csplogger.h"
-#include "mcspdevsoundobserver.h"
-
-//Audio levels
-//Max volume level
-const TInt KMaxVolumeLevel = 10;
-
-// ---------------------------------------------------------------------------
-// Static constructor
-// ---------------------------------------------------------------------------
-//
-CSPSpeaker* CSPSpeaker::NewL(
-    MCSPDevSoundObserver& aObserver )
-    {
-    CSPSpeaker* self = new( ELeave ) CSPSpeaker( aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-CSPSpeaker::~CSPSpeaker()
-    {
-    }
-   
-// ---------------------------------------------------------------------------
-// Sets volume
-// Volume needs to be converted from 0-10 scale to the volume scale used by 
-// DevSound 0 - MaxVolume().
-// No need to check aVolume value, because devsound takes care
-// than illegal value are converted to legal, ie <0 are 0 and >MaxVolume
-// are set to MaxVolume.
-// ---------------------------------------------------------------------------
-//    
-void CSPSpeaker::SetVolume( TInt aVolume )
-    {
-    TInt vol( 0 );    
-    vol = iDevSound->MaxVolume() * aVolume / KMaxVolumeLevel;
-    iDevSound->SetVolume( vol );
-    CSPLOGSTRING2(CSPINT, "CSPSpeaker::SetVolume() \
-                vol=%d", vol ); 
-    CSPLOGSTRING2(CSPINT, "CSPSpeaker::SetVolume() \
-                maxVol=%d", iDevSound->MaxVolume() );
-    }
-
-// ---------------------------------------------------------------------------
-// Gives volume
-// ---------------------------------------------------------------------------
-//    
-TInt CSPSpeaker::Volume()
-    {
-    TInt devVol = iDevSound->Volume();
-    CSPLOGSTRING2(CSPINT, "CSPSpeaker::Volume \
-                    vol from DevSound =%d", devVol );
-    TInt vol = devVol * KMaxVolumeLevel / iDevSound->MaxVolume();
-    
-    CSPLOGSTRING2(CSPINT, "CSPSpeaker::Volume() \
-                       vol=%d", vol );
-       
-    return vol;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Speaker stream has been activated successfully.
-// ---------------------------------------------------------------------------
-//    
-void CSPSpeaker::BufferToBeFilled( CMMFBuffer* /*aBuffer*/ )
-    {
-    CSPLOGSTRING( CSPINT, "CSPSpeaker::BufferToBeFilled activated" );
-    // We dont react to devsound messages unless we are activating.
-    if( IsActivationOngoing() )
-        {
-        iActive = ETrue;
-        iActivationOngoing = EFalse;
-        iObserver.SpeakerActivatedSuccessfully();
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Speaker stream activation failed
-// ---------------------------------------------------------------------------
-//    
-void CSPSpeaker::PlayError( TInt aError )   
-    {
-    CSPLOGSTRING( CSPINT, "CSPSpeaker::PlayError" );
-    
-    // We dont react to devsound messages unless we are activating.
-    if( IsActivationOngoing() )
-        {
-        CSPLOGSTRING( CSPINT, "CSPSpeaker::PlayError activation failed" );
-        if( aError == KErrAccessDenied ) 
-            {
-            iActivationOngoing = EFalse;
-            iObserver.SpeakerActivationFailed();
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// From class CSPDevsound
-// Tries to activate speaker stream.
-// ---------------------------------------------------------------------------
-//
-void CSPSpeaker::DoActivateL()
-    {
-    iDevSound->PlayInitL();
-    }  
-    
-// ---------------------------------------------------------------------------
-// Constructor
-// ---------------------------------------------------------------------------
-//
-CSPSpeaker::CSPSpeaker( 
-    MCSPDevSoundObserver& aObserver ) :
-    CSPDevSound( aObserver )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Second phase constructor
-// ---------------------------------------------------------------------------
-//
-void CSPSpeaker::ConstructL()
-    {
-    CSPDevSound::ConstructL( 
-        EMMFStatePlaying, 
-        KAudioPrefCSCallDownlink,
-        KAudioPriorityCSCallDownlink );
-    }
-
-//  End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/csplugin/src/tmshandler.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,508 @@
+/*
+ * 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:  Starts and stops audio streams.
+ *
+ */
+
+#include <tmsfactory.h>
+#include <tmscall.h>
+#include <tmsstream.h>
+#include "tmshandler.h"
+#include "csplogger.h"
+#include "csptimer.h"
+#include "csppanic.pan"
+
+/**
+ * Timeout initial value.
+ */
+const TInt KTimeoutInitial = 200000; // 0.2s
+
+/**
+ * Double the timeout for every retry.
+ */
+const TInt KTimeoutMultiplier = 2;
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Static constructor
+// ---------------------------------------------------------------------------
+//
+TmsHandler* TmsHandler::NewL()
+    {
+    TmsHandler* self = TmsHandler::NewLC();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Static constructor
+// ---------------------------------------------------------------------------
+//
+TmsHandler* TmsHandler::NewLC()
+    {
+    TmsHandler* self = new (ELeave) TmsHandler();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+TmsHandler::~TmsHandler()
+    {
+    if (iTimer)
+        {
+        iTimer->CancelNotify();
+        delete iTimer;
+        }
+    if (iTmsUplink && iTmsCall)
+        {
+        // CloseUplink();
+        iTmsCall->DeleteStream(iTmsUplink);
+        }
+    if (iTmsDnlink && iTmsCall)
+        {
+        // CloseDownlink();
+        iTmsCall->DeleteStream(iTmsDnlink);
+        }
+    if (iFactory && iTmsCall)
+        {
+        iFactory->DeleteCall(iTmsCall);
+        }
+    if (iFactory && iTmsMicSource)
+        {
+        iFactory->DeleteSource(iTmsMicSource);
+        }
+    if (iFactory && iTmsModemSource)
+        {
+        iFactory->DeleteSource(iTmsModemSource);
+        }
+    if (iFactory && iTmsSpeakerSink)
+        {
+        iFactory->DeleteSink(iTmsSpeakerSink);
+        }
+    if (iFactory && iTmsModemSink)
+        {
+        iFactory->DeleteSink(iTmsModemSink);
+        }
+
+    delete iFactory;
+
+    }
+
+// ---------------------------------------------------------------------------
+// From class MCSPAudioStream
+// Activates mic and speaker.
+// ---------------------------------------------------------------------------
+//
+void TmsHandler::StartStreams()
+    {
+    CSPLOGSTRING(CSPINT, "TmsHandler::StartStreams");
+
+    StartMicAndSpeaker();
+    }
+
+// ---------------------------------------------------------------------------
+// From class MCSPAudioStream
+// Deactivates mic and speaker if the streams are active or they are
+// activating.
+// ---------------------------------------------------------------------------
+//
+void TmsHandler::StopStreams()
+    {
+    CSPLOGSTRING(CSPINT, "TmsHandler::StopStreams");
+    gint status(TMS_RESULT_SUCCESS);
+    if (iTimer && IsMicAndSpeakerStarted())
+        {
+        CSPLOGSTRING(CSPINT, "TmsHandler::StopStreams Stopping");
+        iTimer->CancelNotify();
+        iTimeout = KTimeoutInitial;
+        status = iTmsUplink->Stop();
+        iUplinkStarted = FALSE;
+        status |= iTmsDnlink->Stop();
+        iDnlinkStarted = FALSE;
+
+        if (status != TMS_RESULT_SUCCESS)
+            {
+            status = TMS_RESULT_GENERAL_ERROR;
+            }
+        }
+    CSPLOGSTRING2(CSPINT, "TmsHandler::StopStreams status %d", status);
+    }
+
+// ---------------------------------------------------------------------------
+// From class MCSPTimerObserver
+// Notify from CSPTimer that timeout passed. Try to start mic and
+// speaker again.
+// ---------------------------------------------------------------------------
+//
+void TmsHandler::TimerEvent()
+    {
+    CSPLOGSTRING(CSPINT, "TmsHandler.TimerEvent" );
+    iTimeout *= KTimeoutMultiplier;
+    StartMicAndSpeaker();
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+TmsHandler::TmsHandler() :
+    iTimeout(KTimeoutInitial)
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor
+// ---------------------------------------------------------------------------
+//
+void TmsHandler::ConstructL()
+    {
+    CSPLOGSTRING(CSPINT, "TmsHandler::ConstructL");
+    iTimer = CSPTimer::NewL();
+
+    if (CreateTMSCallControl())
+        {
+        User::LeaveIfError(TMS_RESULT_UNINITIALIZED_OBJECT);
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// TmsHandler::CreateTMSCallControl()
+// ---------------------------------------------------------------------------
+//
+gint TmsHandler::CreateTMSCallControl()
+    {
+    TMSVer* v = NULL;
+    TInt status;
+    status = TMSFactory::CreateFactory(iFactory, *v);
+
+    __ASSERT_ALWAYS(iFactory, Panic( ECSPPanicBadHandle));
+
+    status = iFactory->CreateCall(TMS_CALL_CS, iTmsCall, 0);
+
+    status |= CreateUplink();
+    status |= CreateDownlink();
+    status |= CreateMicSource();
+    status |= AddMicSourceToStream();
+    status |= CreateModemSink();
+    status |= AddModemSinkToStream();
+    status |= CreateModemSource();
+    status |= AddModemSourceToStream();
+    status |= CreateSpeakerSink();
+    status |= AddSpeakerSinkToStream();
+    status |= OpenDownlink();
+
+    return status;
+    }
+
+// ---------------------------------------------------------------------------
+// Resets timer
+// ---------------------------------------------------------------------------
+//
+void TmsHandler::AudioStreamsStarted()
+    {
+    CSPLOGSTRING(CSPINT, "TmsHandler::AudioStreamsStarted" );
+    iTimeout = KTimeoutInitial;
+    iTimer->CancelNotify();
+    }
+
+// ---------------------------------------------------------------------------
+// Starts timer
+// ---------------------------------------------------------------------------
+//
+void TmsHandler::StartTimer()
+    {
+    CSPLOGSTRING(CSPINT, "TmsHandler::StartTimer" );
+    iTimer->NotifyAfter(iTimeout, *this);
+    }
+
+// ---------------------------------------------------------------------------
+// Starts mic and speaker
+// ---------------------------------------------------------------------------
+//
+void TmsHandler::StartMicAndSpeaker()
+    {
+    // if speaker and mic is active then activation does not cause any actions.
+    gint status(TMS_RESULT_SUCCESS);
+
+    if (iTmsUplink)
+        {
+        status = iTmsUplink->Start();
+        }
+    CSPLOGSTRING2( CSPINT, "TmsHandler::StartMicAndSpeaker status %d", status );
+    }
+
+// ---------------------------------------------------------------------------
+// Indicated if mic and speaker are started or starting up.
+// ---------------------------------------------------------------------------
+//
+TBool TmsHandler::IsMicAndSpeakerStarted()
+    {
+    return (iUplinkStarted || iDnlinkStarted);
+    }
+
+// ----------------------------------------------------------------------------
+// CreateUplink
+// ----------------------------------------------------------------------------
+//
+gint TmsHandler::CreateUplink()
+    {
+    CSPLOGSTRING(CSPINT, "TmsHandler::CreateUplink");
+    gint status(TMS_RESULT_SUCCESS);
+    if (iTmsCall)
+        {
+        status = iTmsCall->CreateStream(TMS_STREAM_UPLINK, iTmsUplink);
+        }
+    return status;
+    }
+
+// ----------------------------------------------------------------------------
+// CreateDownlink
+// ----------------------------------------------------------------------------
+//
+gint TmsHandler::CreateDownlink()
+    {
+    CSPLOGSTRING(CSPINT, "TmsHandler::CreateDownlink");
+    gint status(TMS_RESULT_SUCCESS);
+
+    if (iTmsCall)
+        {
+        status = iTmsCall->CreateStream(TMS_STREAM_DOWNLINK, iTmsDnlink);
+        }
+    return status;
+    }
+
+// ----------------------------------------------------------------------------
+// OpenUplink
+// ----------------------------------------------------------------------------
+//
+gint TmsHandler::OpenUplink()
+    {
+    CSPLOGSTRING(CSPINT, "TmsHandler::OpenUplink");
+    gint status = TMS_RESULT_SUCCESS;
+
+    if (iTmsUplink)
+        {
+        status = iTmsUplink->AddObserver(*this, NULL);
+        if (status == TMS_RESULT_SUCCESS)
+            {
+            status = iTmsUplink->Init();
+            }
+        }
+    return status;
+    }
+
+// ----------------------------------------------------------------------------
+// OpenDownlink
+// ----------------------------------------------------------------------------
+//
+gint TmsHandler::OpenDownlink()
+    {
+    CSPLOGSTRING(CSPINT, "TmsHandler::OpenDownlink");
+    gint status = TMS_RESULT_SUCCESS;
+
+    if (iTmsDnlink)
+        {
+        status = iTmsDnlink->AddObserver(*this, NULL);
+        if (status == TMS_RESULT_SUCCESS)
+            {
+            status = iTmsDnlink->Init();
+            }
+        }
+    return status;
+    }
+
+// ----------------------------------------------------------------------------
+// CreateModemSource
+// ----------------------------------------------------------------------------
+//
+gint TmsHandler::CreateModemSource()
+    {
+    gint status(TMS_RESULT_SUCCESS);
+
+    if (iFactory && !iTmsModemSource)
+        {
+        status = iFactory->CreateSource(TMS_SOURCE_MODEM, iTmsModemSource);
+        }
+    return status;
+    }
+
+// ----------------------------------------------------------------------------
+// AddModemSourceToStream
+// ----------------------------------------------------------------------------
+//
+gint TmsHandler::AddModemSourceToStream()
+    {
+    gint status(TMS_RESULT_SUCCESS);
+    if (iTmsDnlink && iTmsModemSource)
+        {
+        status = iTmsDnlink->AddSource(iTmsModemSource);
+        }
+    return status;
+    }
+
+// ----------------------------------------------------------------------------
+// CreateModemSink
+// ----------------------------------------------------------------------------
+//
+gint TmsHandler::CreateModemSink()
+    {
+    gint status(TMS_RESULT_SUCCESS);
+
+    if (iFactory && !iTmsModemSink)
+        {
+        status = iFactory->CreateSink(TMS_SINK_MODEM, iTmsModemSink);
+        }
+    return status;
+    }
+
+// ----------------------------------------------------------------------------
+// AddModemSinkToStream
+// ----------------------------------------------------------------------------
+//
+gint TmsHandler::AddModemSinkToStream()
+    {
+    gint status(TMS_RESULT_SUCCESS);
+    if (iTmsUplink && iTmsModemSink)
+        {
+        status = iTmsUplink->AddSink(iTmsModemSink);
+        }
+    return status;
+    }
+
+// ----------------------------------------------------------------------------
+// CreateMicSource
+// ----------------------------------------------------------------------------
+//
+gint TmsHandler::CreateMicSource()
+    {
+    gint status(TMS_RESULT_SUCCESS);
+
+    if (iFactory && !iTmsMicSource)
+        {
+        status = iFactory->CreateSource(TMS_SOURCE_MIC, iTmsMicSource);
+        }
+    return status;
+    }
+
+// ----------------------------------------------------------------------------
+// AddMicSourceToStream
+// ----------------------------------------------------------------------------
+//
+gint TmsHandler::AddMicSourceToStream()
+    {
+    gint status(TMS_RESULT_SUCCESS);
+    if (iTmsUplink && iTmsMicSource)
+        {
+        status = iTmsUplink->AddSource(iTmsMicSource);
+        }
+    return status;
+    }
+
+// ----------------------------------------------------------------------------
+// CreateSpeakerSink
+// ----------------------------------------------------------------------------
+//
+gint TmsHandler::CreateSpeakerSink()
+    {
+    gint status(TMS_RESULT_SUCCESS);
+
+    if (iFactory && !iTmsSpeakerSink)
+        {
+        status = iFactory->CreateSink(TMS_SINK_SPEAKER, iTmsSpeakerSink);
+        }
+    return status;
+    }
+
+// ----------------------------------------------------------------------------
+// AddSpeakerSinkToStream
+// ----------------------------------------------------------------------------
+//
+gint TmsHandler::AddSpeakerSinkToStream()
+    {
+    gint status(TMS_RESULT_SUCCESS);
+    if (iTmsDnlink && iTmsSpeakerSink)
+        {
+        status = iTmsDnlink->AddSink(iTmsSpeakerSink);
+        }
+    return status;
+    }
+
+// TMS CALLBACKS
+
+// ----------------------------------------------------------------------------
+// TmsHandler::TMSStreamEvent
+// ----------------------------------------------------------------------------
+//
+void TmsHandler::TMSStreamEvent(const TMSStream& stream, TMSSignalEvent event)
+    {
+    CSPLOGSTRING2(CSPINT, "TmsHandler::TMSStreamEvent status %d", event.reason);
+
+    TMSStreamType strmType = const_cast<TMSStream&>(stream).GetStreamType();
+
+    if (strmType == TMS_STREAM_UPLINK &&
+            event.type == TMS_EVENT_STREAM_STATE_CHANGED)
+        {
+        switch (event.curr_state)
+            {
+            case TMS_STREAM_INITIALIZED:
+                //notify stream ready state
+                break;
+            case TMS_STREAM_UNINITIALIZED:
+                //notify initialization error
+                break;
+            case TMS_STREAM_PAUSED:
+                break;
+            case TMS_STREAM_STARTED:
+                iUplinkStarted = TRUE;
+                iTmsDnlink->Start();
+                break;
+            default:
+                break;
+            }
+        }
+    else if (strmType == TMS_STREAM_DOWNLINK &&
+            event.type == TMS_EVENT_STREAM_STATE_CHANGED)
+        {
+        switch (event.curr_state)
+            {
+            case TMS_STREAM_INITIALIZED:
+                {
+                if ((iTmsCall->GetCallType() == TMS_CALL_CS)
+                        && (!iUplinkStarted))
+                    {
+                    OpenUplink();
+                    }
+                //notify stream ready state
+                }
+                break;
+            case TMS_STREAM_UNINITIALIZED:
+                //notify initialization error
+                break;
+            case TMS_STREAM_PAUSED:
+                break;
+            case TMS_STREAM_STARTED:
+                iDnlinkStarted = TRUE;
+                break;
+            default:
+                break;
+            }
+        }
+    }
+
+//  End of File
--- a/phoneplugins/hsdialerwidgetplugin/hsdialerwidgetplugin.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/hsdialerwidgetplugin/hsdialerwidgetplugin.pro	Mon May 03 12:31:11 2010 +0300
@@ -1,46 +1,36 @@
-#
 # 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:
-#
-
 TEMPLATE = lib
-
-CONFIG += plugin hb mobility
-
+CONFIG += plugin \
+    hb \
+    mobility
 MOBILITY = serviceframework
-
-win32: PLUGIN_SUBDIR = /hsresources/import/widgetregistry/20022F44
-symbian: PLUGIN_SUBDIR = /private/20022F35/import/widgetregistry/20022F44
-
+win32:PLUGIN_SUBDIR = /hsresources/import/widgetregistry/20022F44
+symbian:PLUGIN_SUBDIR = /private/20022F35/import/widgetregistry/20022F44
 LIBS += -lhswidgetmodel
-
 DEPENDPATH += ./inc \
-              ./src
-
+    ./src
 INCLUDEPATH += ./inc \
-               ../../inc
-
-symbian: {
+    ../../inc
+symbian: { 
     LIBS += -lxqservice \
-            -lxqtelephonyservice
-
+        -lxqtelephonyservice \
+        -lxqsettingsmanager \
+        -llogsengine
     TARGET.UID3 = 0x20022F44
-    TARGET.EPOCALLOWDLLDATA=1
-    TARGET.CAPABILITY = ALL -TCB
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.CAPABILITY = ALL \
+        -TCB
     INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
 }
-
 OUTPUT_DIR = $$PWD/bin
 SOURCE_DIR = $$PWD/inc
 OBJECTS_DIR = $$OUTPUT_DIR/tmp/$$TARGET
@@ -49,12 +39,14 @@
 RCC_DIR = $$OUTPUT_DIR/tmp/$$TARGET/rcc
 UI_DIR = $$OUTPUT_DIR/tmp/$$TARGET/ui
 LIBS += -L$$DESTDIR
-DEPENDPATH += . $$SOURCE_DIR
-INCLUDEPATH += . $$SOURCE_DIR
+DEPENDPATH += . \
+    $$SOURCE_DIR
+INCLUDEPATH += . \
+    $$SOURCE_DIR
 INCLUDEPATH += $$MOC_DIR
-plugin: !isEmpty(PLUGIN_SUBDIR): DESTDIR = $$OUTPUT_DIR/$$PLUGIN_SUBDIR
-
+plugin:!isEmpty(PLUGIN_SUBDIR):DESTDIR = $$OUTPUT_DIR/$$PLUGIN_SUBDIR
 include(hsdialerwidgetplugin.pri)
-
 exportResources(./resource/*.manifest, $$PLUGIN_SUBDIR)
 exportResources(./resource/*.svg, $$PLUGIN_SUBDIR)
+exportResources(./resource/*.png, $$PLUGIN_SUBDIR)
+RESOURCES += hsdialerwidgetpluging.qrc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/hsdialerwidgetplugin/hsdialerwidgetpluging.qrc	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,7 @@
+<RCC>
+    <qresource prefix="/icons">
+        <file>resource/qtg_fr_shortcut_badge_bg_r.png</file>
+        <file>resource/qtg_fr_shortcut_badge_bg_c.png</file>
+        <file>resource/qtg_fr_shortcut_badge_bg_l.png</file>
+    </qresource>
+</RCC>
--- a/phoneplugins/hsdialerwidgetplugin/inc/hsdialerwidget.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/hsdialerwidgetplugin/inc/hsdialerwidget.h	Mon May 03 12:31:11 2010 +0300
@@ -19,6 +19,12 @@
 #define HSDIALERWIDGET_H
 
 #include <HbWidget>
+#ifdef Q_OS_SYMBIAN
+#include <xqsettingsmanager.h>
+#else
+class XQSettingsManager;
+class XQSettingsKey;
+#endif
 
 #ifndef HOMESCREEN_TEST
     #define HOMESCREEN_TEST_CLASS(aClassName)
@@ -31,7 +37,7 @@
 HOMESCREEN_TEST_CLASS(TestDialerWidgetPlugin)
 
 class XQCallInfo;
-
+class HbFrameItem;
 class HsDialerWidget : public HbWidget
 {
     Q_OBJECT
@@ -40,8 +46,14 @@
     HsDialerWidget(QGraphicsItem* parent = 0, Qt::WindowFlags flags = 0);
     ~HsDialerWidget();
     
+    void paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 );
+
+private:
+    void setItemPositions();
+    
 public slots:
     void startDialer();
+    void updateMissedCallBadge(const XQSettingsKey &key, const QVariant &value);
 
     void onShow();
     void onHide();
@@ -49,9 +61,15 @@
 protected:
     void mousePressEvent(QGraphicsSceneMouseEvent *event) { Q_UNUSED(event) }
     void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+    
+
 
 private:
     XQCallInfo *mXQCallInfo;
+    HbFrameItem *m_shortcutBadge;
+    HbFrameItem *m_backgroud;
+    XQSettingsManager * m_setManager;
+    int m_missedCalls;
     HOMESCREEN_TEST_FRIEND_CLASS(TestDialerWidgetPlugin)
 };
 
Binary file phoneplugins/hsdialerwidgetplugin/resource/qtg_fr_shortcut_badge_bg_c.png has changed
Binary file phoneplugins/hsdialerwidgetplugin/resource/qtg_fr_shortcut_badge_bg_l.png has changed
Binary file phoneplugins/hsdialerwidgetplugin/resource/qtg_fr_shortcut_badge_bg_r.png has changed
--- a/phoneplugins/hsdialerwidgetplugin/src/hsdialerwidget.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/hsdialerwidgetplugin/src/hsdialerwidget.cpp	Mon May 03 12:31:11 2010 +0300
@@ -15,10 +15,13 @@
 *
 */
 
-#include <QGraphicsLinearLayout>
-#include <HbIconItem>
-#include "hsdialerwidget.h"
+
+#include <QPainter>
+#include <hbframedrawer.h>
+#include <hbframeitem.h>
+#include <hbtextitem.h>
 #ifdef Q_OS_SYMBIAN
+#include <logsdomaincrkeys.h>
 #include "qtphonelog.h"
 #include <xqservicerequest.h>
 #include <xqcallinfo.h>
@@ -27,9 +30,12 @@
 #include <logsservices.h>
 #endif
 
+#include "hsdialerwidget.h"
+
 namespace
 {
     const char KDialerWidgetIcon[] = "qtg_graf_hs_dialer";
+    const char KMissedCallShortcutBadge[] = ":/icons/resource/qtg_fr_shortcut_badge_bg";
 }
 
 /*!
@@ -47,15 +53,36 @@
   : HbWidget(parent, flags),
     mXQCallInfo(0)
 {
-    HbIconItem *iconItem = new HbIconItem;
-    HbIcon icon(KDialerWidgetIcon);
-    iconItem->setIcon(icon);
+#ifdef Q_OS_SYMBIAN
+    m_setManager = new XQSettingsManager(this);
+
+    XQSettingsKey settingsKey( XQSettingsKey::TargetCentralRepository,
+            KCRUidLogs.iUid, KLogsNewMissedCalls );
+
+    bool ok = connect( m_setManager,
+            SIGNAL( valueChanged(const XQSettingsKey & ,const QVariant &)),
+                this, SLOT(updateMissedCallBadge(XQSettingsKey,
+                        QVariant)));
+    ASSERT( ok );
+    ok = false;
+    ok = m_setManager->startMonitoring( settingsKey );
+    ASSERT(ok);
 
-    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout;
-    layout->addItem(iconItem);
-    setLayout(layout);
+#endif
+
+    HbFrameDrawer *drawer = new HbFrameDrawer(
+            KDialerWidgetIcon, HbFrameDrawer::OnePiece);
+    m_backgroud = new HbFrameItem(drawer, this);
+    m_backgroud->setZValue(1);
 
-    setPreferredSize(icon.size());
+    drawer = new HbFrameDrawer(KMissedCallShortcutBadge,
+            HbFrameDrawer::ThreePiecesHorizontal );
+
+    m_shortcutBadge = new HbFrameItem(drawer, this);
+    m_shortcutBadge->setZValue(2);
+    m_shortcutBadge->setVisible(true);
+    m_missedCalls=2;
+    setItemPositions();
     resize(preferredSize());
 }
 
@@ -66,6 +93,48 @@
 {
 }
 
+void HsDialerWidget::paint(
+        QPainter *painter,
+        const QStyleOptionGraphicsItem *option,
+        QWidget *widget)
+{
+    Q_UNUSED(option);
+    Q_UNUSED(widget);
+    painter->setPen(QPen( Qt::transparent ) );
+
+    QRectF rect(m_backgroud->boundingRect());
+    painter->drawRect((int)m_backgroud->pos().x(),
+                      (int)m_backgroud->pos().y(),
+                      rect.toRect().width(),
+                      rect.toRect().height());
+
+    if ( m_shortcutBadge->isVisible())
+        {
+        rect = m_shortcutBadge->boundingRect();
+        HbTextItem *text = new HbTextItem( m_shortcutBadge->graphicsItem());
+        
+        QFont badgefont = font();
+#ifdef Q_OS_SYMBIAN
+        badgefont.setPointSize( 4 );
+#else
+        badgefont.setPointSize( 8 );
+#endif
+        text->setFont(badgefont);
+        text->setText(QString::number(m_missedCalls));
+        text->setZValue(3);
+        text->setTextColor(Qt::white);
+       // text->font().setPointSizeF(2);
+
+        text->setX( ( rect.toRect().width() / 2 ) - 2);
+        text->setY( ( rect.toRect().height() / 5 ) - 1);
+
+        painter->drawRect( (int)m_shortcutBadge->pos().x(),
+                           (int)m_shortcutBadge->pos().y(),
+                           rect.toRect().width(),
+                           rect.toRect().height() );
+    }
+}
+
 /*!
     \fn void HsDialerWidget::startDialer()
 
@@ -108,6 +177,22 @@
 #endif
 }
 
+void HsDialerWidget::updateMissedCallBadge(
+        const XQSettingsKey &key, const QVariant &value)
+{
+#ifdef Q_OS_SYMBIAN
+    if ( key.key() == (quint32)KLogsNewMissedCalls ){
+        m_missedCalls = value.toInt();
+        m_shortcutBadge->setVisible(value.toBool());
+        setItemPositions();
+        m_backgroud->update();
+    }
+#else
+   Q_UNUSED(key);
+   Q_UNUSED(value);
+#endif
+}
+
 /*!
     \fn void HsDialerWidget::onShow()
 
@@ -137,3 +222,22 @@
     Q_UNUSED(event);
     startDialer();
 }
+
+void HsDialerWidget::setItemPositions()
+{
+    HbIcon icon(KDialerWidgetIcon);
+    setPreferredWidth( icon.width());
+    int badgeSize = 20;
+    if ( m_shortcutBadge->isVisible()){
+        m_backgroud->setGeometry(QRectF(QPointF(0,badgeSize / 2 ), 
+                QSizeF(icon.width(),icon.height())));
+        m_shortcutBadge->setGeometry(QRectF(
+                QPointF(m_backgroud->boundingRect().width() - (badgeSize / 2),0 ),
+                QSizeF(badgeSize, badgeSize)));
+        setPreferredHeight(icon.height()+(badgeSize / 2));
+    } else {
+        m_backgroud->setGeometry(QRectF(QPointF(0,0), 
+                QSizeF(icon.width(),icon.height())));
+        setPreferredHeight(icon.height());
+    }
+}
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidget.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidget.h	Mon May 03 12:31:11 2010 +0300
@@ -20,19 +20,23 @@
 
 #include <hbwidget.h>
 #include <QGraphicsSceneMouseEvent>
+#include <QList>
 #include <QFlags>
 #include "infowidgetlayoutmanager.h"
 
 class QLabel;
-class QGraphicsLinearLayout; 
+class QGraphicsLinearLayout;
+class QTranslator; 
 class HbDialog;
 class HbIconItem; 
 class HbMarqueeItem;
 class HbLabel; 
 class HbCheckBox; 
-class HbPushButton; 
+class HbPushButton;
+class HbFrameDrawer;
 class InfoWidgetEngine; 
 class InfoWidgetPreferences;
+ 
 
 class InfoWidget : public HbWidget
 {
@@ -48,11 +52,12 @@
     QSizeF sizeHint(Qt::SizeHint which, const QSizeF & constraint) const;  
     QSizePolicy sizePolicy () const;  
     
-public: // Property definitions with read and write functions
+public: // Property definitions
     Q_PROPERTY(QString homeZoneDisplay READ homeZoneDisplay WRITE setHomeZoneDisplay)
     Q_PROPERTY(QString mcnDisplay READ mcnDisplay WRITE setMcnDisplay)
     Q_PROPERTY(QString activeLineDisplay READ activeLineDisplay WRITE setActiveLineDisplay)
     Q_PROPERTY(QString satDisplay READ satDisplay WRITE setSatDisplay)
+    Q_PROPERTY(QString spnDisplay READ spnDisplay WRITE setSpnDisplay)
     QString homeZoneDisplay();
     void setHomeZoneDisplay(QString value);
     QString mcnDisplay();
@@ -61,6 +66,8 @@
     void setActiveLineDisplay(QString value);
     QString satDisplay();
     void setSatDisplay(QString value);
+    QString spnDisplay();
+    void setSpnDisplay(QString value);
     
 protected:
     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); 
@@ -69,21 +76,21 @@
     void mouseMoveEvent(QGraphicsSceneMouseEvent *event); 
     
     void updateInfoDisplay();
-    void initializePreferences(); 
-    
+    bool readPersistentPreferences();
+    void initializeCheckBoxStates(); 
     void changeEvent(QEvent *event);
+    bool installTranslator(QString translationFile); 
+    void removeTranslators(); 
     
 private: 
     void updateItemsVisibility();
     void layoutInfoDisplay(); 
     void layoutSettingsDisplay(); 
-    
     void initializeInfoDisplayItems(); 
-    void initializeSettingsDisplayItems(); 
-     
+    void initializeSettingsDisplayItems();
     void startChanges(); 
     void endChanges(); 
-    
+
 public slots: 
     // Slots from HsWidget
     void onInitialize();
@@ -94,12 +101,11 @@
     // Info widget specific slots 
     void readModel(); 
     void handleModelError(int operation,int errorCode);  
-    void homeZoneDisplaySettingChanged(int state);
+    void spnDisplaySettingChanged(int state);
     void mcnDisplaySettingChanged(int state);
-    void activeLineDisplaySettingChanged(int state);
     void satDisplaySettingChanged(int state);
-
     void settingsEditingFinished();
+    void settingsValidationFailed(); 
     
 signals: 
     void setPreferences(const QStringList &names);
@@ -113,14 +119,16 @@
     // Widget preference store  
     InfoWidgetPreferences *m_preferences;
 
-    // Layout for widget
-    InfoWidgetLayoutManager *m_layoutManager;    
-    QGraphicsLinearLayout *m_layout; 
+    // Layout manager for widget
+    InfoWidgetLayoutManager *m_layoutManager;
     
-    bool m_layoutChanging; 
-    bool m_isDragEvent; 
-    QColor m_backGroundColor;
-    
+    QGraphicsLinearLayout *m_layout; 
+    QList<QTranslator *> m_translators;
+    QColor m_backGroundColor; 
+    HbFrameDrawer *m_frameDrawer;
+    bool m_layoutChanging;
+    bool m_dragEvent; 
+    bool m_initialized;
 };
 
 
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetengine.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetengine.h	Mon May 03 12:31:11 2010 +0300
@@ -56,6 +56,11 @@
         const QString& serviceProviderName() const { return m_serviceProviderName; };
         void setServiceProviderName(const QString& name){ m_serviceProviderName = name; };
         
+        bool serviceProviderNameDisplayRequired() const { 
+            return m_serviceProviderNameDisplayRequired; };
+        void setServiceProviderNameDisplayRequired(bool required){ 
+            m_serviceProviderNameDisplayRequired = required; };
+        
         const QString& homeZoneTextTag() const { return m_homeZoneTextTag; };
         void setHomeZoneTextTag(const QString& tag){ m_homeZoneTextTag = tag; };
 
@@ -66,6 +71,7 @@
         int m_mcnIndicatorType; 
         int m_homeZoneIndicatorType;
         int m_activeLine; 
+        bool m_serviceProviderNameDisplayRequired; 
         
         QString m_mcnName;
         QString m_serviceProviderName;
@@ -94,11 +100,17 @@
     void handleSatError(int operation, int errorCode); 
     void handleLineError(int operation, int errorCode);
     
+    void suspend(); 
+    void resume();
+    
+    void preferenceChanged(int option, int displaySetting);
+    
 private: 
     ModelData m_modelData;
     
     // Own
     QScopedPointer<InfoWidgetNetworkHandler> m_networkHandler;
+    QScopedPointer<InfoWidgetSatHandler> m_satHandler;
     }; 
 
 #endif /* INFOWIDGETENGINE_H_ */
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetlayoutmanager.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetlayoutmanager.h	Mon May 03 12:31:11 2010 +0300
@@ -54,21 +54,19 @@
         // Content widget, the main widget from document 
         RoleContent,
         // Marquee items 
-        RoleMcnMarqueeItem, 
+        RoleMcnMarqueeItem,
+        RoleSatMarqueeItem,
         // Labels 
-        RoleHomeZoneLabel, 
+        RoleSpnLabel,
         RoleMcnLabel, 
-        RoleActiveLineLabel, 
         RoleSatTextLabel,
-        // Icons 
-        RoleHomeZoneIcon, 
+        // Icons
+        RoleSpnIcon, 
         RoleMcnIcon, 
-        RoleActiveLineIcon, 
         RoleSatTextIcon, 
         // Check boxes 
-        RoleHomeZoneCheckBox, 
+        RoleSpnCheckBox,
         RoleMcnCheckBox, 
-        RoleActiveLineCheckBox, 
         RoleSatTextCheckBox,
         // Buttons 
         RoleOkButton,
@@ -91,17 +89,19 @@
     QList<LayoutItemRole> currentWidgetRoles(); 
     
     int layoutRows() const; 
-    void setLayoutRows(int rows); 
+    void setLayoutRows(int rows);
+    qreal rowHeight() const; 
     
     QGraphicsLayout* layoutInfoDisplay();
     QGraphicsLayout* layoutSettingsDisplay(); 
     
     const QList<InfoWidgetLayoutManager::LayoutItemRole> widgetRoles(
             DisplayRole displayRole) const; 
-    
+
     bool loadWidgets(const DisplayRole displayRole, 
             const QList<LayoutItemRole> &displayWidgets,
             QMap<LayoutItemRole, QGraphicsWidget *> &widgetMap);
+    bool reloadWidgets(const DisplayRole displayRole);
     
     QGraphicsWidget* loadWidget(InfoWidgetDocumentLoader &loader, 
             DisplayRole displayRole, 
@@ -110,10 +110,12 @@
     QGraphicsWidget* getWidget(LayoutItemRole itemRole);
     QGraphicsWidget* contentWidget();
     
+    void removeWidget(LayoutItemRole itemRole);
     void hideWidget(LayoutItemRole itemRole);
     void hideAll();
     void showAll();
     
+    
 private:
     QMap<LayoutItemRole, QGraphicsWidget *> m_widgets; 
     QMap<LayoutItemRole, QGraphicsWidget *> m_infoDisplayWidgets; 
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetnetworkhandler.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetnetworkhandler.h	Mon May 03 12:31:11 2010 +0300
@@ -31,18 +31,32 @@
 public:
     InfoWidgetNetworkHandler(QObject *parent = NULL);
     ~InfoWidgetNetworkHandler();    
-    
+
+    QString serviceProviderName() const;
+    bool serviceProviderNameDisplayRequired() const; 
     QString homeZoneTextTag() const; 
     int homeZoneIndicatorType() const; 
-    
     QString mcnName() const; 
     int mcnIndicatorType() const; 
-
+    int networkRegistrationStatus() const;  
+    bool isOnline() const;
+    
     void logCurrentInfo(); 
 
 public: // From MNWMessageObserver
     void HandleNetworkMessage(const TNWMessages aMessage);
     void HandleNetworkError(const TNWOperation aOperation, TInt aErrorCode);
+
+public slots: 
+    void suspend(); 
+    void resume();
+    
+    void enableMcn(); 
+    void disableMcn(); 
+    
+protected:     
+    void writeMcnDisplayState(bool enabled);
+    bool readMcnDisplayState(); 
     
 signals: 
     void networkDataChanged();
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetpreferences.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetpreferences.h	Mon May 03 12:31:11 2010 +0300
@@ -19,6 +19,7 @@
 #define INFOWIDGETPREFERENCES_H
 
 #include <QObject>
+#include <QStringList>
 #include <QFlags>
 
 // Preference string values
@@ -39,7 +40,8 @@
         DisplayHomeZone = 0x1,
         DisplayMcn = 0x2,
         DisplayActiveLine = 0x4, 
-        DisplaySatText = 0x8 
+        DisplaySatText = 0x8,
+        DisplaySpn = 0x10
     };
     Q_DECLARE_FLAGS(Options, Option)
 
@@ -47,19 +49,26 @@
     InfoWidgetPreferences(QObject *parent = NULL);
     ~InfoWidgetPreferences();
 
-    void loadPreferences();
-    void storePreferences();
-    
-public:
+    bool storePreferences();
+    void restorePreferences();
+    QStringList preferenceNames();
+            
+    bool isPreferenceSet(Option preferenceId) const;
     QString preference(Option preferenceId) const;
+    InfoWidgetPreferences::Options preferences() const;
     void setPreference(Option preferenceId, const QString &preferenceString);
-    
-    int visibleItemCount(); 
-    
+     
+    bool validate(); 
+    int visibleItemCount();
+
+signals:
+    void prefChanged(int option,int displaySetting);
+		
 private:
     Q_DISABLE_COPY(InfoWidgetPreferences)
 
     InfoWidgetPreferences::Options m_options; 
+    InfoWidgetPreferences::Options m_validatedOptions;
 };
 
 Q_DECLARE_OPERATORS_FOR_FLAGS(InfoWidgetPreferences::Options)
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetsathandler.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetsathandler.h	Mon May 03 12:31:11 2010 +0300
@@ -19,19 +19,28 @@
 #define INFOWIDGETSATHANDLER_H_
 
 #include <QObject>
+#include <rsatservice.h>
 
-class InfoWidgetSatHandler: public QObject 
+
+class InfoWidgetSatHandlerPrivate;
+
+class InfoWidgetSatHandler: public QObject
     {
     Q_OBJECT
     
 public:    
     InfoWidgetSatHandler(QObject *parent = NULL);
     ~InfoWidgetSatHandler();    
-
+    
+    void connect(bool connect);
+        
     const QString& satDisplayText() const; 
     void setSatDisplayText(const QString& displayText);
 
     void logCurrentInfo(); 
+    
+    void handleIdleModeTxtMessage( int idleResult );
+    void handleSatError( int operation, int errorCode );
 
 signals: 
     void handleMessage( int message );
@@ -39,7 +48,13 @@
 
     
 private: 
-    QString m_displayText; 
+    QString m_displayText;
+    
+    int m_connected;
+    
+    InfoWidgetSatHandlerPrivate *d_ptr;
+    RSatService m_satService;
+    
     }; 
 
 #endif /* INFOWIDGETSATHANDLER_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/inc/infowidgetsathandlerprivate.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,52 @@
+/*
+ * 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:  
+ *
+ */
+ 
+#include <rsatservice.h>
+#include <rsatsession.h>
+#include <QString>
+
+class InfoWidgetSatHandler;
+
+class InfoWidgetSatHandlerPrivate: public CActive
+{
+public:  
+    
+    InfoWidgetSatHandlerPrivate(InfoWidgetSatHandler *iwSatHandler, RSatService& iSatService);
+    ~InfoWidgetSatHandlerPrivate();
+ 
+    void startObserving();
+    
+    int connect();
+    int disconnect();
+
+private: 
+ 
+    void activate();
+    void getIdleModeData();
+    
+    void RunL();
+    void DoCancel();
+       
+private: // Data
+   
+    InfoWidgetSatHandler *q_ptr;
+    RSatService& m_satService;
+    RSatSession m_satSession;
+    RSatService::TSATIdleResult m_idleResult;
+    
+    QString m_idleTxt;
+};
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidget.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidget.cpp	Mon May 03 12:31:11 2010 +0300
@@ -28,6 +28,8 @@
 #include <hbpushbutton.h>
 #include <hbevent.h>
 #include <hbcolorscheme.h>
+#include <hbmessagebox.h>
+#include <hbframedrawer.h>
 #include <QPainter>
 #include <QPainterPath>
 #include <QBrush>
@@ -40,10 +42,25 @@
 #include "infowidgetlayoutmanager.h"
 #include "infowidgetpreferences.h"
 
-const int INFOWIDGET_LINE_WIDTH = 0; 
-const int INFOWIDGET_MARGIN = 5;
 const int INFOWIDGET_ROUNDING = 15;
+const int INFOWIDGET_DEFAULT_HEIGHT = 100;
+const int INFOWIDGET_DEFAULT_WIDTH = 100;
+const char *TS_FILE_OPERATOR_WIDGET = "operator_widget"; 
+const char *TS_FILE_COMMON = "common";
+const char *BACKGROUND_COLOR_GROUP_ID = "qtc_default_popup_normal"; 
+const char *BACKGROUND_FRAME_NAME = "qtg_fr_hswidget_normal"; 
 
+/*!
+  \class InfoWidget
+  \brief Operator info widget main class. 
+
+   Implements HomeScreen specific slots and 
+   graphical representation of the 
+   Operator Info widget. 
+
+   Derived from HbWidget.
+    
+*/
 
 /*!
     InfoWidget::InfoWidget() 
@@ -54,55 +71,54 @@
     m_preferences(NULL),
     m_layoutManager(NULL),
     m_layout(NULL),
+    m_frameDrawer(NULL),
     m_layoutChanging(false),
-    m_isDragEvent(false)
+    m_dragEvent(false), 
+    m_initialized(false)
 {
     INSTALL_TRACE_MSG_HANDLER; 
     
     DPRINT << ": IN";
     
     // Localization file loading
-    QTranslator translator; 
-    QString lang = QLocale::system().name();
-    QString path = "z:/resource/qt/translations/";
-    DPRINT << ": loading translation: " << QString(path + "operator_widget_" + lang);
-    bool translatorLoaded = translator.load(path + "operator_widget_" + lang);
-    DPRINT << ": translator loaded: " << translatorLoaded; 
-    if (translatorLoaded) {
-        qApp->installTranslator(&translator);
-        DPRINT << ": translator installed"; 
-    }
+    installTranslator(TS_FILE_OPERATOR_WIDGET);
+    installTranslator(TS_FILE_COMMON);
     
     m_layoutManager = new InfoWidgetLayoutManager(this);
     Q_ASSERT(m_layoutManager); 
     
-    // Create network engine  
     m_engine = new InfoWidgetEngine(this); 
-
-    // Create widget preference handler 
+    Q_ASSERT(m_engine);
+    
     m_preferences = new InfoWidgetPreferences(this);
-
-    DPRINT << ": reading preferences from meta-object properties";
-    initializePreferences();
-
-    // Create widget main layout 
+    Q_ASSERT(m_preferences);
+    
+    QObject::connect( m_preferences, SIGNAL(prefChanged(int,int)),
+                    m_engine, SLOT(preferenceChanged(int,int)));
+    
+    // Setup widget main layout 
     m_layout = new QGraphicsLinearLayout;    
     m_layout->setSpacing(0); 
     m_layout->setContentsMargins(0,0,0,0); 
-    
-    // Layout info display
-    layoutInfoDisplay();
-
     setLayout(m_layout);
 
-    // Read initial data from model
-    updateInfoDisplay(); 
+    // Read color definitions 
+    m_backGroundColor = HbColorScheme::color(
+            BACKGROUND_COLOR_GROUP_ID);
+    if (!m_backGroundColor.isValid()) {
+        m_backGroundColor = Qt::black; 
+    }
     
-    QObject::connect(m_engine, SIGNAL(modelChanged()), 
-            this, SLOT(readModel())); 
+    // Create background frame drawer 
+    m_frameDrawer = new HbFrameDrawer(
+            BACKGROUND_FRAME_NAME, 
+            HbFrameDrawer::NinePieces);
+    Q_ASSERT(m_frameDrawer); 
     
-    m_backGroundColor = HbColorScheme::color("popupbackground");
-
+    // Set widget initial size
+    resize(INFOWIDGET_DEFAULT_WIDTH,
+           INFOWIDGET_DEFAULT_HEIGHT); 
+    
     DPRINT << ": OUT";
 }
 
@@ -120,34 +136,156 @@
         m_layout->removeAt(i);
         } 
     
+    if (m_frameDrawer) {
+        delete m_frameDrawer;
+        m_frameDrawer = NULL; 
+    }
+    
+    // Remove and delete language translators 
+    removeTranslators(); 
+    
     DPRINT << ": OUT"; 
     UNINSTALL_TRACE_MSG_HANDLER;
 }
 
 /*!
+    InfoWidget::onInitialize()
+    
+    Called by HS framework, saved preference data
+    is available when onInitialize() is called and 
+    meta-object data reading should be done here      
+*/
+void InfoWidget::onInitialize()
+{
+    DPRINT << ": IN";
+    
+    m_initialized = true; 
+    
+    // Initialize preferences from meta-object data
+    if (!readPersistentPreferences()) {
+
+        // Reading failed, initialize default values  
+        m_preferences->setPreference(InfoWidgetPreferences::DisplaySpn, 
+                DISPLAY_SETTING_ON);
+        m_preferences->setPreference(InfoWidgetPreferences::DisplayMcn, 
+                DISPLAY_SETTING_ON);
+        m_preferences->setPreference(InfoWidgetPreferences::DisplaySatText, 
+                DISPLAY_SETTING_ON);
+    } 
+    m_preferences->storePreferences(); 
+    
+    // Layout components 
+    layoutInfoDisplay();
+    m_layout->activate(); 
+    
+    // Read initial data from model
+    updateInfoDisplay(); 
+    
+    // Listen for model changes 
+    QObject::connect(m_engine, SIGNAL(modelChanged()), 
+            this, SLOT(readModel())); 
+
+    DPRINT << ": OUT";
+}
+
+/*!
+    InfoWidget::onUninitialize() 
+*/
+void InfoWidget::onUninitialize()
+{
+    DPRINT;
+    m_initialized = false; 
+    m_engine->suspend(); 
+}
+
+/*!
+    InfoWidget::onShow() 
+*/
+void InfoWidget::onShow()
+{
+    DPRINT;
+    m_engine->resume(); 
+}
+
+/*!
+    InfoWidget::onHide() 
+*/
+void InfoWidget::onHide()
+{
+    DPRINT;
+    m_engine->suspend(); 
+}
+
+/*!
+    InfoWidget::installTranslator() const
+*/
+bool InfoWidget::installTranslator(QString translationFile)
+{
+    DPRINT << ": IN";
+
+    QString lang = QLocale::system().name();
+    QString path = "z:/resource/qt/translations/";
+    bool translatorLoaded(false);  
+    
+    QTranslator* widgetTranslator = new QTranslator;
+    translatorLoaded = widgetTranslator->load(
+            path + translationFile + "_" + lang);
+    if (translatorLoaded) {
+        qApp->installTranslator(widgetTranslator);
+        m_translators.append(widgetTranslator); 
+        DPRINT << ": translator installed: " << translationFile; 
+    } else {
+        delete widgetTranslator; 
+        widgetTranslator = NULL; 
+    }
+    
+    DPRINT << ": OUT";
+    return translatorLoaded;
+}
+
+/*!
+    InfoWidget::removeTranslators() const
+*/
+void InfoWidget::removeTranslators()
+{
+    DPRINT << ": IN";
+
+    foreach (QTranslator *translator, m_translators) {
+        qApp->removeTranslator(translator);
+    }    
+    qDeleteAll(m_translators);
+    m_translators.clear();
+    
+    DPRINT << ": OUT";
+}
+
+/*!
     InfoWidget::boundingRect() const
 */
 QRectF InfoWidget::boundingRect() const
-{
-    DPRINT;
-    
-    QRectF rectF = rect();
-    rectF.adjust(-INFOWIDGET_MARGIN, -INFOWIDGET_MARGIN, 
-            INFOWIDGET_MARGIN, INFOWIDGET_MARGIN);
-    
-    return rectF;
+{   
+    return rect();
 }
 
 /*!
     InfoWidget::shape() const
-    Return shape
+    
+    Return Operator widget's shape 
+    according to currect display 
 */
 QPainterPath InfoWidget::shape() const
 {
     DPRINT;    
     
     QPainterPath path;
-    path.addRoundRect(boundingRect(), INFOWIDGET_ROUNDING, INFOWIDGET_ROUNDING);
+    if (m_layoutManager->currentDisplayRole() == 
+                    InfoWidgetLayoutManager::InfoDisplay) {
+        path.addRoundRect(boundingRect(), 
+                INFOWIDGET_ROUNDING, 
+                INFOWIDGET_ROUNDING);
+    } else {
+        path.addRect(boundingRect()); 
+    }
     return path;
 }
 
@@ -159,24 +297,32 @@
     Q_UNUSED(which);
     Q_UNUSED(constraint); 
     
-    QSizeF requiredSize(70,160);
+    QSizeF requiredSize(
+            INFOWIDGET_DEFAULT_WIDTH,
+            INFOWIDGET_DEFAULT_HEIGHT);
     
-    // Try to get size hint from docml content, if not found use default  
-    // size preference 
-    if (m_layoutManager->currentDisplayRole() == 
-                InfoWidgetLayoutManager::InfoDisplay) {
-        if (m_layoutManager->contentWidget()) {
-            requiredSize = m_layoutManager->contentWidget()->minimumSize();
+    if (m_initialized) { 
+        // Read size hint from docml content
+        if (m_layoutManager->currentDisplayRole() == 
+                    InfoWidgetLayoutManager::InfoDisplay) {
+            if (m_layoutManager->contentWidget()) {
+                requiredSize = m_layoutManager->contentWidget()->minimumSize();
+                // Height according number of rows, if 0 or 1 row use minimum size
+                int rowCount = m_preferences->visibleItemCount();
+                if (1 < rowCount) {
+                        requiredSize.rheight() += (rowCount-1)*
+                                m_layoutManager->rowHeight();
+                }
             }
-    }
-    else if (m_layoutManager->currentDisplayRole() == 
-            InfoWidgetLayoutManager::SettingsDisplay) {
-        requiredSize = QSizeF(250,250);
-        if (m_layoutManager->contentWidget()) {
-            requiredSize = m_layoutManager->contentWidget()->preferredSize();
-            }
+        }
+        else if (m_layoutManager->currentDisplayRole() == 
+                InfoWidgetLayoutManager::SettingsDisplay) {
+            if (m_layoutManager->contentWidget()) {
+                requiredSize= m_layoutManager->contentWidget()->size();
+                }
+        } 
     } 
-
+    
     DPRINT << ": returning size: " << requiredSize;
     return requiredSize; 
 }
@@ -187,49 +333,9 @@
 QSizePolicy InfoWidget::sizePolicy () const 
 {
     DPRINT;
-
-    // Size tells the exact size for the widget    
-    return QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); 
-}
-
-/*!
-    InfoWidget::onInitialize() 
-*/
-void InfoWidget::onInitialize()
-{
-    DPRINT << ": IN";
-    
-    // Initialize preferences from meta-object data 
-    // set by homescreen framework. Homescreen framework 
-    // has restored the properties before calling onInitialize  
-    DPRINT << ": reading preferences from meta-object properties";
-    initializePreferences();
-    
-    DPRINT << ": OUT";
-}
-
-/*!
-    InfoWidget::onUninitialize() 
-*/
-void InfoWidget::onUninitialize()
-{
-    DPRINT;
-}
-
-/*!
-    InfoWidget::onShow() 
-*/
-void InfoWidget::onShow()
-{
-    DPRINT;
-}
-
-/*!
-    InfoWidget::onHide() 
-*/
-void InfoWidget::onHide()
-{
-    DPRINT;
+    return QSizePolicy(
+            QSizePolicy::Fixed, 
+            QSizePolicy::Fixed); 
 }
 
 /*!
@@ -242,37 +348,28 @@
     QList<QGraphicsWidget *> widgetsToHide; 
     
     // Update layout according to item visibility settings
-    // 1. read visible items
-    if (m_preferences->preference(InfoWidgetPreferences::DisplayHomeZone).compare(
+    if (m_preferences->preference(InfoWidgetPreferences::DisplaySpn).compare(
             DISPLAY_SETTING_ON) == 0) {
         layoutRows++;
     } else if (m_layoutManager->currentDisplayRole() != InfoWidgetLayoutManager::SettingsDisplay) {
-        m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleHomeZoneLabel); 
-        m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleHomeZoneIcon); 
+        m_layoutManager->removeWidget(InfoWidgetLayoutManager::RoleSpnLabel); 
+        m_layoutManager->removeWidget(InfoWidgetLayoutManager::RoleSpnIcon); 
     }
-    
+
     if (m_preferences->preference(InfoWidgetPreferences::DisplayMcn).compare(
             DISPLAY_SETTING_ON) == 0) {
         layoutRows++;
     } else if (m_layoutManager->currentDisplayRole() != InfoWidgetLayoutManager::SettingsDisplay) {
-        m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleMcnMarqueeItem); 
-        m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleMcnIcon); 
-    }
-
-    if (m_preferences->preference(InfoWidgetPreferences::DisplayActiveLine).compare(
-            DISPLAY_SETTING_ON) == 0) {
-        layoutRows++;
-    } else if (m_layoutManager->currentDisplayRole() != InfoWidgetLayoutManager::SettingsDisplay) {
-        m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleActiveLineLabel); 
-        m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleActiveLineIcon); 
+        m_layoutManager->removeWidget(InfoWidgetLayoutManager::RoleMcnMarqueeItem); 
+        m_layoutManager->removeWidget(InfoWidgetLayoutManager::RoleMcnIcon); 
     }
     
     if (m_preferences->preference(InfoWidgetPreferences::DisplaySatText).compare(
             DISPLAY_SETTING_ON) == 0) {
         layoutRows++;
     } else if (m_layoutManager->currentDisplayRole() != InfoWidgetLayoutManager::SettingsDisplay) {
-        m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleSatTextLabel); 
-        m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleSatTextIcon); 
+        m_layoutManager->removeWidget(InfoWidgetLayoutManager::RoleSatMarqueeItem); 
+        m_layoutManager->removeWidget(InfoWidgetLayoutManager::RoleSatTextIcon); 
     }
     
     DPRINT << ": visible layout rows count: " << layoutRows;
@@ -307,14 +404,15 @@
             
             // Add content widget to main layout 
             m_layout->addItem(contentWidget);
-            
-            resize(contentWidget->preferredSize()); 
         }       
     }
     
     m_layoutManager->showAll(); 
     updateItemsVisibility(); 
 
+    m_layout->invalidate();
+    m_layout->activate(); 
+    
     endChanges(); 
     
     DPRINT << ": OUT";
@@ -348,8 +446,6 @@
             
             // Add content widget to main layout 
             m_layout->addItem(contentWidget); 
-
-            resize(contentWidget->preferredSize()); 
         }
         
         // Connect settings display widget signals 
@@ -357,7 +453,6 @@
     }
      
     m_layoutManager->showAll(); 
-
     endChanges(); 
     
     DPRINT << ": OUT";
@@ -384,52 +479,39 @@
     HbPushButton *okButton = qobject_cast<HbPushButton *>(m_layoutManager->getWidget(
             InfoWidgetLayoutManager::RoleOkButton));
     if (okButton) {
-        DPRINT << ": okButton has been returned from layout manager, connecting signal";
         QObject::connect(okButton, SIGNAL(clicked()), 
-                this, SLOT(settingsEditingFinished())); 
+                this, SLOT(settingsEditingFinished()), Qt::UniqueConnection); 
     }
 
     // Connect display setting check boxes
-    HbCheckBox *homeZoneBox = qobject_cast<HbCheckBox *>(m_layoutManager->getWidget(
-            InfoWidgetLayoutManager::RoleHomeZoneCheckBox));
-    if (homeZoneBox) {
-        DPRINT << ": homeZoneBox has been returned from layout manager, initializing";
-        // Make checkable when home zone display is supported
-        homeZoneBox->setCheckable(false); 
-        QObject::connect(homeZoneBox, SIGNAL(stateChanged(int)), 
-                this, SLOT(homeZoneDisplaySettingChanged(int))); 
+    HbCheckBox *spnCheckBox = qobject_cast<HbCheckBox *>(m_layoutManager->getWidget(
+            InfoWidgetLayoutManager::RoleSpnCheckBox));
+    if (spnCheckBox) {
+        spnCheckBox->setChecked(m_preferences->isPreferenceSet(
+                InfoWidgetPreferences::DisplaySpn));
+        
+        QObject::connect(spnCheckBox, SIGNAL(stateChanged(int)), 
+                this, SLOT(spnDisplaySettingChanged(int)), Qt::UniqueConnection); 
     }
     
     HbCheckBox *mcnCheckBox = qobject_cast<HbCheckBox *>(m_layoutManager->getWidget(
             InfoWidgetLayoutManager::RoleMcnCheckBox));
     if (mcnCheckBox) {
-        mcnCheckBox->setChecked(true);
+        mcnCheckBox->setChecked(m_preferences->isPreferenceSet(
+                InfoWidgetPreferences::DisplayMcn));
         
-        DPRINT << ": mcnCheckBox has been returned from layout manager, connecting signal";
         QObject::connect(mcnCheckBox, SIGNAL(stateChanged(int)), 
-                this, SLOT(mcnDisplaySettingChanged(int))); 
-    }
-    
-    HbCheckBox *activeLineCheckBox = qobject_cast<HbCheckBox *>(m_layoutManager->getWidget(
-            InfoWidgetLayoutManager::RoleActiveLineCheckBox));
-    if (activeLineCheckBox) {
-        // Make checkable when active line display is supported
-        activeLineCheckBox->setCheckable(false); 
-
-        DPRINT << ": activeLineCheckBox has been returned from layout manager, connecting signal";
-        QObject::connect(activeLineCheckBox, SIGNAL(stateChanged(int)), 
-                this, SLOT(activeLineDisplaySettingChanged(int))); 
+                this, SLOT(mcnDisplaySettingChanged(int)), Qt::UniqueConnection); 
     }
     
     HbCheckBox *satTextCheckBox = qobject_cast<HbCheckBox *>(m_layoutManager->getWidget(
             InfoWidgetLayoutManager::RoleSatTextCheckBox));
     if (satTextCheckBox) {
-        // Make checkable when sat text display is supported
-        satTextCheckBox->setCheckable(false); 
-
-        DPRINT << ": satTextCheckBox has been returned from layout manager, connecting signal";
+        satTextCheckBox->setChecked(m_preferences->isPreferenceSet(
+                InfoWidgetPreferences::DisplaySatText));
+        
         QObject::connect(satTextCheckBox, SIGNAL(stateChanged(int)), 
-                this, SLOT(satDisplaySettingChanged(int))); 
+                this, SLOT(satDisplaySettingChanged(int)), Qt::UniqueConnection); 
     }
     
     DPRINT << ": OUT";
@@ -440,30 +522,32 @@
 */
 void InfoWidget::updateInfoDisplay()
 {
-    DPRINT; 
+    DPRINT << ": IN"; 
+    
+    if (m_layoutManager->currentDisplayRole() == 
+            InfoWidgetLayoutManager::InfoDisplay )
+        {
+        QString text;
+        InfoWidgetEngine::ModelData modelData = m_engine->modelData(); 
     
-    QString text;
-    InfoWidgetEngine::ModelData modelData = m_engine->modelData(); 
-
-    HbLabel *homeZoneLabel = qobject_cast<HbLabel *>(m_layoutManager->getWidget(
-            InfoWidgetLayoutManager::RoleHomeZoneLabel));
-    if (homeZoneLabel && 
-            m_layoutManager->currentDisplayRole() == InfoWidgetLayoutManager::InfoDisplay) {
-        text = modelData.homeZoneTextTag(); 
-        homeZoneLabel->setPlainText(text);
-    }        
-    
-    HbMarqueeItem *mcnMarqueeItem = qobject_cast<HbMarqueeItem *>(m_layoutManager->getWidget(
-            InfoWidgetLayoutManager::RoleMcnMarqueeItem));
-    if (mcnMarqueeItem && 
-            m_layoutManager->currentDisplayRole() == InfoWidgetLayoutManager::InfoDisplay) {
-        text = modelData.mcnName(); 
-        if (text.length()) {
+        HbLabel *spnLabel = qobject_cast<HbLabel *>(m_layoutManager->getWidget(
+                InfoWidgetLayoutManager::RoleSpnLabel));
+        if (spnLabel) {
+            if (m_engine->modelData().serviceProviderNameDisplayRequired()) {
+                text = modelData.serviceProviderName();  
+                spnLabel->setPlainText(text);
+            }
+        }        
+        
+        HbMarqueeItem *mcnMarqueeItem = qobject_cast<HbMarqueeItem *>(m_layoutManager->getWidget(
+                InfoWidgetLayoutManager::RoleMcnMarqueeItem));
+        if (mcnMarqueeItem) {
+            text = modelData.mcnName(); 
             mcnMarqueeItem->setText(text);
-                
+            
             // Set marquee animation looping mode to infinite
             mcnMarqueeItem->setLoopCount(-1); 
-            
+                
             // Finally, start marquee animation
             DPRINT << ": mcnMarqueeItem->isAnimating()"; 
             if (!mcnMarqueeItem->isAnimating()) {
@@ -471,32 +555,25 @@
                 mcnMarqueeItem->startAnimation();
             }
         }
-    }
-
-    HbLabel *activeLineLabel = qobject_cast<HbLabel *>(m_layoutManager->getWidget(
-            InfoWidgetLayoutManager::RoleActiveLineLabel));
-    if (activeLineLabel && 
-            m_layoutManager->currentDisplayRole() == InfoWidgetLayoutManager::InfoDisplay) {
-        text.setNum(modelData.activeLine());
-        text.insert(0, hbTrId("Line: "));
+    
+        HbMarqueeItem *satMarqueeItem = qobject_cast<HbMarqueeItem *>(m_layoutManager->getWidget(
+                InfoWidgetLayoutManager::RoleSatMarqueeItem));
+        if (satMarqueeItem) {
+            text = modelData.satDisplayText(); 
     
-        if (text.length()) {
-            activeLineLabel->setPlainText(text);
+            satMarqueeItem->setText(text);
+            
+            // Set marquee animation looping mode to infinite
+            satMarqueeItem->setLoopCount(-1); 
+                        
+            // Finally, start marquee animation
+            DPRINT << ": satMarqueeItem->isAnimating()"; 
+            if (!satMarqueeItem->isAnimating()) {
+                DPRINT << ": mcnMarqueeItem->startAnimation()";   
+                satMarqueeItem->startAnimation();
+            }
         }
-    }    
-
-    HbLabel *satTextLabel = qobject_cast<HbLabel *>(m_layoutManager->getWidget(
-            InfoWidgetLayoutManager::RoleSatTextLabel));
-    if (satTextLabel && 
-            m_layoutManager->currentDisplayRole() == InfoWidgetLayoutManager::InfoDisplay) {
-
-        text = modelData.satDisplayText(); 
-
-        if (text.length()) {
-            satTextLabel->setPlainText(text);
-        }
-    }    
-
+    }
 }
 
 /*!
@@ -508,7 +585,8 @@
 {
     DPRINT << ": IN"; 
 
-    if (m_layoutManager->currentDisplayRole() == InfoWidgetLayoutManager::InfoDisplay) { 
+    if (m_layoutManager->currentDisplayRole() == 
+            InfoWidgetLayoutManager::InfoDisplay) { 
         updateInfoDisplay(); 
     }
     DPRINT << ": OUT";
@@ -529,26 +607,31 @@
 /*!
     InfoWidget::paint() 
 */
-void InfoWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+void InfoWidget::paint(QPainter *painter, 
+        const QStyleOptionGraphicsItem *option, 
+        QWidget *widget)
 {
     Q_UNUSED(option); 
     Q_UNUSED(widget);
     DPRINT;
 
     if (!m_layoutChanging) {
-        QBrush brush(Qt::white); 
-        if (m_backGroundColor.isValid()) {
-            brush.setColor(m_backGroundColor);
+        painter->save();
+        
+        if (m_layoutManager->currentDisplayRole() == 
+                InfoWidgetLayoutManager::InfoDisplay) { 
+            if (m_frameDrawer) {
+                m_frameDrawer->paint(painter,boundingRect());
+            }
+        } else {            
+            QBrush brush(Qt::black); 
+            QPainterPath path;
+            path.addRoundRect(boundingRect(), 
+                    INFOWIDGET_ROUNDING, 
+                    INFOWIDGET_ROUNDING);
+            painter->fillPath(path, brush);
         }
-        QRectF drawRect = boundingRect(); 
-        drawRect.adjust( INFOWIDGET_LINE_WIDTH, INFOWIDGET_LINE_WIDTH, 
-                         -INFOWIDGET_LINE_WIDTH, -INFOWIDGET_LINE_WIDTH );
         
-        QPainterPath path;
-        path.addRoundRect(drawRect, INFOWIDGET_ROUNDING, INFOWIDGET_ROUNDING);
-    
-        painter->save();
-        painter->fillPath(path, brush);
         painter->restore();
     }
 }
@@ -556,16 +639,12 @@
 /*!
     InfoWidget::mousePressEvent() 
 */
-
 void InfoWidget::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
     Q_UNUSED(event);
-    DPRINT; 
     
-    // Initialize flag 
-    m_isDragEvent = false; 
-    
-    DPRINT; 
+    // Clear flag 
+    m_dragEvent = false; 
 }
 
 /*!
@@ -577,14 +656,15 @@
 
     // If in info display and widget wasn't dragged 
     // change to settings display
-    if ((!m_isDragEvent) && 
+    if ((!m_dragEvent) && 
           m_layoutManager->currentDisplayRole() == 
                   InfoWidgetLayoutManager::InfoDisplay) {
         DPRINT << ": layout settings display";
         layoutSettingsDisplay(); 
     }
     
-    m_isDragEvent = false; 
+    // Clear flag 
+    m_dragEvent = false; 
 }
 
 /*!
@@ -594,20 +674,21 @@
 {
     Q_UNUSED(event);
     
-    // Mouse is moving after mouse press event
-    m_isDragEvent = true; 
+    // Mouse is moving 
+    // after mouse press event
+    m_dragEvent = true; 
 }
 
 /*!
-    InfoWidget::homeZoneDisplaySettingChanged() 
+    InfoWidget::spnDisplaySettingChanged() 
 */
-void InfoWidget::homeZoneDisplaySettingChanged(int state)
+void InfoWidget::spnDisplaySettingChanged(int state)
 {
     DPRINT << ": state: " << state;
     if (state == Qt::Checked){
-        m_preferences->setPreference(InfoWidgetPreferences::DisplayHomeZone, DISPLAY_SETTING_ON);
+        m_preferences->setPreference(InfoWidgetPreferences::DisplaySpn, DISPLAY_SETTING_ON);
     } else {
-        m_preferences->setPreference(InfoWidgetPreferences::DisplayHomeZone, DISPLAY_SETTING_OFF);
+        m_preferences->setPreference(InfoWidgetPreferences::DisplaySpn, DISPLAY_SETTING_OFF);
     }
 }
 
@@ -625,19 +706,6 @@
 }
 
 /*!
-    InfoWidget::activeLineDisplaySettingChanged() 
-*/
-void InfoWidget::activeLineDisplaySettingChanged(int state)
-{
-    DPRINT << ": state: " << state; 
-    if (state == Qt::Checked){
-        m_preferences->setPreference(InfoWidgetPreferences::DisplayActiveLine, DISPLAY_SETTING_ON);
-    } else {
-        m_preferences->setPreference(InfoWidgetPreferences::DisplayActiveLine, DISPLAY_SETTING_OFF);
-    }
-}
-
-/*!
     InfoWidget::satDisplaySettingChanged() 
 */
 void InfoWidget::satDisplaySettingChanged(int state)
@@ -739,14 +807,38 @@
 }
 
 /*!
-    InfoWidget::initializePreferences()
+    InfoWidget::spnDisplay()
+    
+    Getter function for Meta-object property "spnDisplay" 
+*/
+QString InfoWidget::spnDisplay()
+{
+    DPRINT; 
+    return m_preferences->preference(InfoWidgetPreferences::DisplaySpn);
+}
+
+/*!
+    InfoWidget::setSpnDisplay()
     
-    Read initial Meta-object properties and store to preference handler. 
+    Setter function for Meta-object property "spnDisplay" 
+*/
+void InfoWidget::setSpnDisplay(QString value)
+{
+    DPRINT;
+    m_preferences->setPreference(InfoWidgetPreferences::DisplaySpn, value);
+}
+
+/*!
+    InfoWidget::readPersistentPreferences()
+    
+    Read Meta-object properties and store to preference handler. 
     Restores preferences from previous session.   
 */
-void InfoWidget::initializePreferences()
+bool InfoWidget::readPersistentPreferences()
 {
     DPRINT << ": IN";
+    bool changed(false); 
+    
     QString propertyValue;
     
     propertyValue = QObject::property("homeZoneDisplay").toString();
@@ -765,12 +857,46 @@
     m_preferences->setPreference(InfoWidgetPreferences::DisplaySatText, 
             propertyValue);
 
-    // Check that at least one item is set visible. If not 
-    // set default item(s) visible. TBD which items and how selected.   
-    if (m_preferences->visibleItemCount() == 0) {
-        DPRINT << ": no visible items initially, setting MCN on by default"; 
-        m_preferences->setPreference(InfoWidgetPreferences::DisplayMcn, 
-                DISPLAY_SETTING_ON);
+    propertyValue = QObject::property("spnDisplay").toString();
+    m_preferences->setPreference(InfoWidgetPreferences::DisplaySpn, 
+            propertyValue);
+
+    // Check that at least one item is set visible and  
+    // store preferences if true 
+    if (m_preferences->validate()) {
+        changed = m_preferences->storePreferences(); 
+    } 
+        
+    DPRINT << ": OUT";
+    return changed; 
+}
+
+/*!
+    InfoWidget::initializeCheckBoxStates()
+*/
+void InfoWidget::initializeCheckBoxStates()
+{
+    DPRINT << ": IN";
+
+    HbCheckBox *spnCheckBox = qobject_cast<HbCheckBox *>(m_layoutManager->getWidget(
+            InfoWidgetLayoutManager::RoleSpnCheckBox));
+    if (spnCheckBox) {
+    spnCheckBox->setChecked(m_preferences->isPreferenceSet(
+                InfoWidgetPreferences::DisplaySpn));
+    }
+    
+    HbCheckBox *mcnCheckBox = qobject_cast<HbCheckBox *>(m_layoutManager->getWidget(
+            InfoWidgetLayoutManager::RoleMcnCheckBox));
+    if (mcnCheckBox) {
+        mcnCheckBox->setChecked(m_preferences->isPreferenceSet(
+                InfoWidgetPreferences::DisplayMcn));
+    }
+    
+    HbCheckBox *satTextCheckBox = qobject_cast<HbCheckBox *>(m_layoutManager->getWidget(
+            InfoWidgetLayoutManager::RoleSatTextCheckBox));
+    if (satTextCheckBox) {
+        satTextCheckBox->setChecked(m_preferences->isPreferenceSet(
+                InfoWidgetPreferences::DisplaySatText));
     }
         
     DPRINT << ": OUT"; 
@@ -783,9 +909,33 @@
 {
     DPRINT << ": IN";
     
-    layoutInfoDisplay();
-    
-    updateInfoDisplay(); 
+    // Save settings data if validation succeeds 
+    if (m_preferences->validate()) {
+        DPRINT << ": switching to info display";
+        
+        // Store preferences if changed 
+        if (m_preferences->storePreferences()) {
+            // Signal Homescreen FW   
+            emit setPreferences(
+                    m_preferences->preferenceNames());
+            }
+        
+        // ToDo: do only if settings have really changed 
+        m_layoutManager->reloadWidgets(
+                InfoWidgetLayoutManager::InfoDisplay);
+
+        // Switch to info display 
+        layoutInfoDisplay();
+        updateInfoDisplay();
+        
+    } else {
+        DPRINT << ": staying in settings display";    
+        // Display warning note
+        settingsValidationFailed(); 
+        
+        // Restore check box states 
+        initializeCheckBoxStates(); 
+    }
     
     DPRINT << ": OUT";
 }
@@ -795,11 +945,8 @@
 */
 void InfoWidget::startChanges()
 {
-    DPRINT << ": IN";
-    
-    m_layoutChanging = true;
-    
-    DPRINT << ": OUT";
+    DPRINT;
+    m_layoutChanging = true; 
 }
 
 /*!
@@ -807,11 +954,8 @@
 */
 void InfoWidget::endChanges()
 {
-    DPRINT << ": IN";
-    
-    m_layoutChanging = false;
-    
-    DPRINT << ": OUT";
+    DPRINT;
+    m_layoutChanging = false; 
 }
 
 /*!
@@ -822,12 +966,34 @@
    DPRINT << ": IN";
    
    if (event->type() == HbEvent::ThemeChanged) {
-       m_backGroundColor = HbColorScheme::color("popupbackground");
+       DPRINT << ": HbEvent::ThemeChanged";
+       m_backGroundColor = HbColorScheme::color(
+               BACKGROUND_COLOR_GROUP_ID);
+       if (!m_backGroundColor.isValid()) {
+           m_backGroundColor = Qt::black; 
+       }
    }
-   HbWidget::changeEvent( event );
+   HbWidget::changeEvent(event);
    
    DPRINT << ": OUT";
 }
 
+/*!
+   InfoWidget::settingsValidationFailed()
+*/
+void InfoWidget::settingsValidationFailed()
+{
+   DPRINT << ": IN";
+   
+   if (m_layoutManager->currentDisplayRole() == 
+                  InfoWidgetLayoutManager::SettingsDisplay) {
+       HbMessageBox::warning(
+               hbTrId("txt_operatorwidget_info_select_one"));
+   }
+
+   DPRINT << ": OUT";
+}
+
+
 // End of File. 
 
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetengine.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetengine.cpp	Mon May 03 12:31:11 2010 +0300
@@ -17,18 +17,25 @@
 
 #include "infowidgetengine.h"
 #include "infowidgetnetworkhandler.h"
+#include "infowidgetsathandler.h"
 #include <networkhandlingproxy.h>
 #include "infowidgetlogging.h"
-#include <xqsettingsmanager.h>
-#include <xqsettingskey.h>
-#include <settingsinternalcrkeys.h>
+#include "infowidgetpreferences.h"
+
+/*!
+  \class InfoWidgetEngine
+  \brief Engine functionality of 
+         Operator info widget
+*/
+
 
 /*!
    InfoWidgetEngine::InfoWidgetEngine
  */
 InfoWidgetEngine::InfoWidgetEngine(QObject *parent): 
     QObject(parent),
-    m_networkHandler(new InfoWidgetNetworkHandler)
+    m_networkHandler(new InfoWidgetNetworkHandler),
+    m_satHandler(new InfoWidgetSatHandler)
 {
     DPRINT << ": IN";
     
@@ -39,14 +46,17 @@
     QObject::connect(
         m_networkHandler.data(), SIGNAL(networkDataChanged()),
         this, SLOT(updateNetworkDataToModel()));
+
+    QObject::connect(m_satHandler.data(), 
+            SIGNAL(handleError(int, int)),
+            this, SLOT(handleSatError(int, int))); 
     
-    XQSettingsManager *settingsManager = new XQSettingsManager(0); 
-    XQSettingsKey settingsKey(XQSettingsKey::TargetCentralRepository, 
-        KCRUidNetworkSettings.iUid, KSettingsMcnDisplay); 
-    bool result = settingsManager->writeItemValue(settingsKey, 1 );
-    delete settingsManager;
+    QObject::connect(m_satHandler.data(), 
+                SIGNAL(handleMessage(int)),
+                this, SLOT(updateSatDataToModel())); 
 
-    updateNetworkDataToModel(); 
+    updateNetworkDataToModel();
+    updateSatDataToModel();
     
     DPRINT << ": OUT";
 }
@@ -66,13 +76,19 @@
  */
 void InfoWidgetEngine::logModelData()
 {
-    DPRINT << ": mcn name: " << m_modelData.mcnName(); 
-    DPRINT << ": service provider name: " << m_modelData.serviceProviderName();
-    DPRINT << ": homezone text tag: " << m_modelData.homeZoneTextTag();
-    
-    DPRINT << ": mcn type: " << m_modelData.mcnIndicatorType(); 
-    DPRINT << ": active line: " << m_modelData.activeLine(); 
-    DPRINT << ": homezone indicator type: " << m_modelData.homeZoneIndicatorType(); 
+    DPRINT << ": mcn name: " << m_modelData.mcnName();
+    DPRINT << ": mcn type: " << m_modelData.mcnIndicatorType();
+    DPRINT << ": service provider name: " << 
+            m_modelData.serviceProviderName();
+    DPRINT << ": service provider display required: " << 
+            m_modelData.serviceProviderNameDisplayRequired(); 
+
+    DPRINT << ": homezone text tag: " << 
+            m_modelData.homeZoneTextTag();
+    DPRINT << ": homezone indicator type: " << 
+            m_modelData.homeZoneIndicatorType(); 
+    DPRINT << ": active line: " << 
+            m_modelData.activeLine(); 
 } 
 
 /*!
@@ -95,13 +111,28 @@
     
     m_networkHandler->logCurrentInfo();
     
-    // Read network handler data to model data
-    m_modelData.setHomeZoneIndicatorType(
-        m_networkHandler->homeZoneIndicatorType());
-    m_modelData.setHomeZoneTextTag(m_networkHandler->homeZoneTextTag()); 
-    m_modelData.setMcnName(m_networkHandler->mcnName()); 
-    m_modelData.setMcnIndicatorType(m_networkHandler->mcnIndicatorType());
+    if (m_networkHandler->isOnline()) {
+        // Read network handler data to model data
+        m_modelData.setServiceProviderName(
+                m_networkHandler->serviceProviderName());
+        m_modelData.setServiceProviderNameDisplayRequired(
+                m_networkHandler->serviceProviderNameDisplayRequired());
     
+        m_modelData.setMcnName(m_networkHandler->mcnName()); 
+        m_modelData.setMcnIndicatorType(
+                m_networkHandler->mcnIndicatorType());
+        
+        m_modelData.setHomeZoneIndicatorType(
+            m_networkHandler->homeZoneIndicatorType());
+        m_modelData.setHomeZoneTextTag(
+                m_networkHandler->homeZoneTextTag());
+    } else {
+        // Not registered to network, clear data
+        m_modelData.setServiceProviderName(QString(""));
+        m_modelData.setMcnName(QString(""));
+        m_modelData.setHomeZoneTextTag(QString("")); 
+    }
+        
     emit modelChanged();
     
     DPRINT << ": OUT";
@@ -112,7 +143,19 @@
  */
 void InfoWidgetEngine::updateSatDataToModel()
 {
-    DPRINT;
+    DPRINT << ": IN";
+    
+    if (m_satHandler) {
+        // Log current network data 
+        m_satHandler->logCurrentInfo();
+        // Read SAT handler data to model data
+        m_modelData.setSatDisplayText(
+                m_satHandler->satDisplayText());
+        
+        emit modelChanged(); 
+    } 
+     
+    DPRINT << ": OUT";
 }
 
 /*!
@@ -126,26 +169,81 @@
 /*!
    InfoWidgetEngine::handleNetworkError
  */
-void InfoWidgetEngine::handleNetworkError(int operation, int errorCode)
+void InfoWidgetEngine::handleNetworkError(
+        int operation, int errorCode)
 {
-    DPRINT << ": operation: " << operation << " error code: " << errorCode; 
+    DPRINT << ": operation: " << operation << 
+            " error code: " << errorCode; 
 }
 
 /*!
    InfoWidgetEngine::handleSatError
  */
-void InfoWidgetEngine::handleSatError(int operation, int errorCode)
+void InfoWidgetEngine::handleSatError(
+        int operation, int errorCode)
 {
-    DPRINT << ": operation: " << operation << " error code: " << errorCode; 
+    DPRINT << ": operation: " << operation << 
+            " error code: " << errorCode; 
 }
 
 /*!
    InfoWidgetEngine::handleLineError
  */
-void InfoWidgetEngine::handleLineError(int operation, int errorCode)
+void InfoWidgetEngine::handleLineError(
+        int operation, int errorCode)
 {
     DPRINT << ": operation: " << operation << " error code: " << errorCode; 
 }
 
+/*!
+   InfoWidgetEngine::preferenceChanged
+ */
+void InfoWidgetEngine::preferenceChanged(
+        int option, int displaySetting)
+{
+    DPRINT << "option: " << option << " displaySetting: " << displaySetting;
+    switch(option){
+    case InfoWidgetPreferences::DisplayMcn:
+        if (displaySetting == InfoWidgetPreferences::DisplayOn) {
+            m_networkHandler->enableMcn();
+        } else {
+            m_networkHandler->disableMcn();
+        }   
+        break; 
+    case InfoWidgetPreferences::DisplaySatText:
+        m_satHandler->connect(displaySetting);
+        break;
+    default:
+        break;
+    }
+    DPRINT << ": OUT";
+}
+
+/*!
+   InfoWidgetEngine::suspend
+   
+   Called when widget is deactivated 
+   and widget should suspend all 
+   possible activities 
+ */
+void InfoWidgetEngine::suspend() 
+{
+    DPRINT;
+    m_networkHandler->suspend(); 
+}
+
+/*!
+   InfoWidgetEngine::preferenceChanged
+   
+   Called when widget is activated 
+   and widget can resume activities
+ */
+void InfoWidgetEngine::resume()
+{
+    DPRINT;
+    m_networkHandler->resume(); 
+}
+
+
 // End of File. 
 
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetengine_s.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetengine_s.cpp	Mon May 03 12:31:11 2010 +0300
@@ -32,7 +32,7 @@
  */
 InfoWidgetEngine::~InfoWidgetEngine()
 {
-DPRINT;
+    DPRINT;
 }    
 
 /*!
@@ -97,17 +97,25 @@
     DPRINT;
 }
 
-
+/*!
+   InfoWidgetEngine::handleNetworkError
+ */
 void InfoWidgetEngine::handleNetworkError(int operation, int errorCode)
 {
     DPRINT << ": operation: " << operation << " error code: " << errorCode; 
 }
 
+/*!
+   InfoWidgetEngine::handleSatError
+ */
 void InfoWidgetEngine::handleSatError(int operation, int errorCode)
 {
     DPRINT << ": operation: " << operation << " error code: " << errorCode; 
 }
 
+/*!
+   InfoWidgetEngine::handleLineError
+ */
 void InfoWidgetEngine::handleLineError(int operation, int errorCode)
 {
     DPRINT << ": operation: " << operation << " error code: " << errorCode; 
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetlayoutmanager.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetlayoutmanager.cpp	Mon May 03 12:31:11 2010 +0300
@@ -35,16 +35,14 @@
 const char LAYOUT_NAME_CONTENT[] = "content";
 const char LAYOUT_NAME_MCNMARQUEEITEM[] = "mcnMarqueeItem";
 const char LAYOUT_NAME_MCNLABEL[] = "mcnLabel";
-const char LAYOUT_NAME_HOMEZONELABEL[] = "homeZoneLabel";
-const char LAYOUT_NAME_ACTIVELINELABEL[] = "activeLineLabel";
+const char LAYOUT_NAME_SPNLABEL[] = "spnLabel";
+const char LAYOUT_NAME_SATMARQUEEITEM[] = "satMarqueeItem";
 const char LAYOUT_NAME_SATTEXTLABEL[] = "satTextLabel";
-const char LAYOUT_NAME_HOMEZONEICON[] = "homeZoneIcon";
+const char LAYOUT_NAME_SPNICON[] = "spnIcon";
 const char LAYOUT_NAME_MCNICON[] = "mcnIcon";
-const char LAYOUT_NAME_ACTIVELINEICON[] = "activeLineIcon";
 const char LAYOUT_NAME_SATTEXTICON[] = "satTextIcon";
-const char LAYOUT_NAME_HOMEZONECHECKBOX[] = "homeZoneCheckBox";
+const char LAYOUT_NAME_SPNCHECKBOX[] = "spnCheckBox";
 const char LAYOUT_NAME_MCNCHECKBOX[] = "mcnCheckBox";
-const char LAYOUT_NAME_ACTIVELINECHECKBOX[] = "activeLineCheckBox";
 const char LAYOUT_NAME_SATTEXTCHECKBOX[] = "satTextCheckBox";
 const char LAYOUT_NAME_OKBUTTON[] = "okButton";
 const char LAYOUT_NAME_CONTAINER[] = "container";
@@ -52,6 +50,14 @@
 
 
 /*!
+  \class InfoWidgetDocumentLoader
+  \brief Custom document loader for Operator info widget  
+
+   Derived from HbDocumentLoader.
+    
+*/
+
+/*!
   InfoWidgetDocumentLoader::InfoWidgetDocumentLoader()
  */
 InfoWidgetDocumentLoader::InfoWidgetDocumentLoader()
@@ -77,14 +83,24 @@
         DPRINT << ": HbMarqueeitem found, OUT";
         return object;
     }
-
+    
     DPRINT << ": OUT";
-    
     return HbDocumentLoader::createObject(type, name);
 }
 
+
 /*!
- */
+  \class InfoWidgetLayoutManager
+  \brief Layout manager class for Operator info widget.   
+
+   Handles layout document loading and accessing the loaded 
+   widgets.   
+    
+*/
+
+/*!
+   InfoWidgetLayoutManager::InfoWidgetLayoutManager()
+*/
 InfoWidgetLayoutManager::InfoWidgetLayoutManager(QObject *parent) 
 : QObject(parent), 
   m_documentLoader(NULL), 
@@ -115,7 +131,8 @@
 }
 
 /*!
- */
+   InfoWidgetLayoutManager::~InfoWidgetLayoutManager()
+*/
 InfoWidgetLayoutManager::~InfoWidgetLayoutManager()
 {
     DPRINT << ": IN";
@@ -128,7 +145,8 @@
 }
 
 /*!
- */
+   InfoWidgetLayoutManager::currentDisplayRole()
+*/
 InfoWidgetLayoutManager::DisplayRole InfoWidgetLayoutManager::currentDisplayRole() 
 {
     DPRINT; 
@@ -136,19 +154,26 @@
 } 
 
 /*!
- */
+   InfoWidgetLayoutManager::currentWidgetRoles()
+*/
 QList<InfoWidgetLayoutManager::LayoutItemRole> InfoWidgetLayoutManager::currentWidgetRoles() 
 {
     DPRINT; 
     return m_widgets.keys(); 
 } 
 
+/*!
+   InfoWidgetLayoutManager::layoutRows()
+*/
 int InfoWidgetLayoutManager::layoutRows() const 
 {
     DPRINT; 
     return m_layoutRows;
 } 
 
+/*!
+   InfoWidgetLayoutManager::setLayoutRows()
+*/
 void InfoWidgetLayoutManager::setLayoutRows(int rows) 
 {
     DPRINT; 
@@ -156,6 +181,26 @@
 } 
 
 /*!
+   InfoWidgetLayoutManager::rowHeight()
+*/
+qreal InfoWidgetLayoutManager::rowHeight() const
+{
+    DPRINT; 
+    HbStyle style; 
+    qreal rowHeight;
+
+    bool ok = style.parameter("hb-param-graphic-size-primary-small", 
+            rowHeight);
+    if (!ok) {
+        DPRINT << ": ERROR! Paremeters reading failed!! Using default";
+        rowHeight = 26.8;
+    }
+    
+    DPRINT << ": rowHeight: " << rowHeight;
+    return rowHeight; 
+}
+
+/*!
    InfoWidgetLayoutManager::contentWidget()
 */
 QGraphicsWidget* InfoWidgetLayoutManager::contentWidget()
@@ -180,6 +225,21 @@
 }
 
 /*!
+   InfoWidgetLayoutManager::removeWidget();
+*/
+void InfoWidgetLayoutManager::removeWidget(LayoutItemRole itemRole)
+{
+    DPRINT << ": item role: " << itemRole;
+    
+    QGraphicsWidget *widget = m_widgets.value(itemRole); 
+    if (widget) {
+        DPRINT << ": removing widget: " << widget;        
+        m_widgets.remove(itemRole);
+        delete widget;
+    }
+}
+
+/*!
    InfoWidgetLayoutManager::hideWidget();
 */
 void InfoWidgetLayoutManager::hideWidget(LayoutItemRole itemRole)
@@ -189,7 +249,7 @@
     QGraphicsWidget *widget = m_widgets.value(itemRole); 
     if (widget) {
         DPRINT << ": hiding widget: " << widget;
-        widget->hide(); 
+        widget->hide();
     }
 }
 
@@ -205,14 +265,13 @@
         iterator.next();
         QGraphicsWidget *widget = iterator.value(); 
         if (widget) {
-            widget->hide(); 
+            widget->hide();
         }
     }
     
     DPRINT << ": OUT";
 }
 
-
 /*!
    InfoWidgetLayoutManager::showAll();
 */
@@ -301,7 +360,10 @@
     
     bool loaded = false;
     m_documentLoader->load(INFOWIDGET_DOCML_FILE, &loaded);
-        
+    Q_ASSERT_X(loaded, 
+            "InfoWidgetLayoutManager", 
+            "Invalid docml file");    
+    
     if (!loaded) {
         qWarning() << "Unable to load .docml:  " << INFOWIDGET_DOCML_FILE;
     }
@@ -344,6 +406,27 @@
 }
 
 /*!
+    InfoWidgetLayoutManager::reloadWidgets()
+*/
+bool InfoWidgetLayoutManager::reloadWidgets(const DisplayRole displayRole)
+{
+    QList<LayoutItemRole> displayWidgetRoles = widgetRoles(displayRole); 
+    bool loadResult(false); 
+    
+    switch (displayRole) {
+        case InfoDisplay:
+            loadResult = loadWidgets(displayRole, 
+                        displayWidgetRoles,
+                        m_infoDisplayWidgets); 
+            break; 
+        case SettingsDisplay: // Fall through 
+        default: 
+            break; 
+    }
+    return loadResult; 
+}
+
+/*!
     InfoWidgetLayoutManager::loadWidget()
     
     Initialize loader with corresponding document file before calling this single widget loader utility   
@@ -372,39 +455,33 @@
         case RoleMcnMarqueeItem: 
             widgetName.append(LAYOUT_NAME_MCNMARQUEEITEM);
         break; 
-        case RoleHomeZoneLabel: 
-            widgetName.append(LAYOUT_NAME_HOMEZONELABEL);
+        case RoleSpnLabel: 
+            widgetName.append(LAYOUT_NAME_SPNLABEL);
         break;
         case RoleMcnLabel: 
             widgetName.append(LAYOUT_NAME_MCNLABEL);
         break;
-        case RoleActiveLineLabel: 
-            widgetName.append(LAYOUT_NAME_ACTIVELINELABEL);
+        case RoleSatMarqueeItem: 
+            widgetName.append(LAYOUT_NAME_SATMARQUEEITEM);
         break; 
         case RoleSatTextLabel: 
             widgetName.append(LAYOUT_NAME_SATTEXTLABEL);
         break; 
-        case RoleHomeZoneIcon: 
-            widgetName.append(LAYOUT_NAME_HOMEZONEICON);
+        case RoleSpnIcon: 
+            widgetName.append(LAYOUT_NAME_SPNICON);
         break; 
         case RoleMcnIcon: 
             widgetName.append(LAYOUT_NAME_MCNICON);
         break; 
-        case RoleActiveLineIcon: 
-            widgetName.append(LAYOUT_NAME_ACTIVELINEICON);
-        break; 
         case RoleSatTextIcon: 
             widgetName.append(LAYOUT_NAME_SATTEXTICON);
         break;
-        case RoleHomeZoneCheckBox: 
-            widgetName.append(LAYOUT_NAME_HOMEZONECHECKBOX);
+        case RoleSpnCheckBox: 
+            widgetName.append(LAYOUT_NAME_SPNCHECKBOX);
         break; 
         case RoleMcnCheckBox: 
             widgetName.append(LAYOUT_NAME_MCNCHECKBOX);
         break; 
-        case RoleActiveLineCheckBox: 
-            widgetName.append(LAYOUT_NAME_ACTIVELINECHECKBOX);
-        break; 
         case RoleSatTextCheckBox: 
             widgetName.append(LAYOUT_NAME_SATTEXTCHECKBOX);
         break; 
@@ -451,35 +528,22 @@
         case SettingsDisplay: 
             // Fill supported layout item roles for settings display
             widgetRoles.append(RoleContent); 
-            widgetRoles.append(RoleHomeZoneLabel);
-            widgetRoles.append(RoleMcnLabel); 
-            widgetRoles.append(RoleActiveLineLabel);
-            widgetRoles.append(RoleSatTextLabel);
-            widgetRoles.append(RoleHomeZoneIcon);
-            widgetRoles.append(RoleMcnIcon);
-            widgetRoles.append(RoleActiveLineIcon);
-            widgetRoles.append(RoleSatTextIcon);
-            widgetRoles.append(RoleHomeZoneCheckBox);
+            widgetRoles.append(RoleSpnCheckBox);
             widgetRoles.append(RoleMcnCheckBox);
-            widgetRoles.append(RoleActiveLineCheckBox);
             widgetRoles.append(RoleSatTextCheckBox);
             widgetRoles.append(RoleOkButton);
             widgetRoles.append(RoleSettingsContainer); 
             break;
         case InfoDisplay: 
             // Fill supported layout item roles for info display
-            widgetRoles.append(RoleContent); 
-            widgetRoles.append(RoleHomeZoneLabel);
+            widgetRoles.append(RoleContent);
+            widgetRoles.append(RoleSpnIcon);
+            widgetRoles.append(RoleSpnLabel);
+            widgetRoles.append(RoleMcnIcon);
             widgetRoles.append(RoleMcnMarqueeItem);
-            widgetRoles.append(RoleActiveLineLabel);
-            widgetRoles.append(RoleSatTextLabel);
-            widgetRoles.append(RoleHomeZoneIcon);
-            widgetRoles.append(RoleMcnIcon);
-            widgetRoles.append(RoleActiveLineIcon);
             widgetRoles.append(RoleSatTextIcon);
-            widgetRoles.append(RoleSettingsContainer); 
+            widgetRoles.append(RoleSatMarqueeItem);
             break;
-            
         default: 
             break; 
     }
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetlinehandler.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetlinehandler.cpp	Mon May 03 12:31:11 2010 +0300
@@ -20,31 +20,27 @@
 #include "infowidgetlogging.h"
 
 
-/*!
+/*! 
  */
 InfoWidgetLineHandler::InfoWidgetLineHandler(QObject *parent):
     QObject(parent), 
     m_activeLine(1)
 {
-    DPRINT << ": IN";
-    DPRINT << ": OUT";
+    DPRINT; 
 }
 
 /*!
  */
 InfoWidgetLineHandler::~InfoWidgetLineHandler()
 {
-    DPRINT << ": IN";
-    DPRINT << ": OUT";
+    DPRINT; 
 }    
 
 /*!
  */
 void InfoWidgetLineHandler::logCurrentInfo()
 {
-    DPRINT << ": IN"; 
-    DPRINT << ": OUT";
-    
+    DPRINT; 
 } 
 
 /*!
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetnetworkhandler.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetnetworkhandler.cpp	Mon May 03 12:31:11 2010 +0300
@@ -17,13 +17,22 @@
 
 #include <networkhandlingproxy.h>
 #include <cnwsession.h>
+#include <xqsettingsmanager.h>
+#include <xqsettingskey.h>
+#include <settingsinternalcrkeys.h>
 #include "infowidgetnetworkhandler.h"
 #include "infowidgetlogging.h"
 
 
 /*!
- * InfoWidgetNetworkHandler::InfoWidgetNetworkHandler
- */
+  \class InfoWidgetNetworkHandler
+  \brief Handles network specific functionality of 
+         Operator info widget
+*/
+
+/*!
+    InfoWidgetNetworkHandler::InfoWidgetNetworkHandler()
+*/
 InfoWidgetNetworkHandler::InfoWidgetNetworkHandler(QObject *parent) 
     : 
     QObject(parent), 
@@ -31,6 +40,10 @@
 {
     DPRINT << ": IN";
     
+    // Initialize key
+    // ToDo: need to check if preference is ON initially
+    enableMcn(); 
+    
     CNWSession *session = 0;
     QT_TRAP_THROWING(session = CreateL(*this, m_nwInfo));
     m_nwSession.reset(session);
@@ -39,18 +52,70 @@
 }
 
 /*!
- * InfoWidgetNetworkHandler::~InfoWidgetNetworkHandler
- */
+    InfoWidgetNetworkHandler::~InfoWidgetNetworkHandler()
+*/
 InfoWidgetNetworkHandler::~InfoWidgetNetworkHandler()
 {
-    DPRINT << ": IN";
-    
-    DPRINT << ": OUT";
+    DPRINT;
+
+    // Disable MCN setting, 
+    // no display client
+    disableMcn(); 
 }    
 
 /*!
- * InfoWidgetNetworkHandler::homeZoneTextTag
- */
+    InfoWidgetNetworkHandler::suspend()
+*/
+void InfoWidgetNetworkHandler::suspend()
+{
+    DPRINT;
+    disableMcn(); 
+}
+
+/*!
+    InfoWidgetNetworkHandler::suspend()
+*/
+void InfoWidgetNetworkHandler::resume()
+{
+    DPRINT;
+    enableMcn(); 
+}
+
+/*!
+    InfoWidgetNetworkHandler::serviceProviderName()
+*/
+QString InfoWidgetNetworkHandler::serviceProviderName() const 
+{
+    DPRINT;
+    QString qBuf;
+    qBuf = QString((QChar*)m_nwInfo.iSPName.Ptr(), 
+        m_nwInfo.iSPName.Length());
+    DPRINT << ": serviceProviderName: " << qBuf;
+    
+    return qBuf; 
+}
+
+/*!
+    InfoWidgetNetworkHandler::serviceProviderNameDisplayRequired()
+*/
+bool InfoWidgetNetworkHandler::serviceProviderNameDisplayRequired() const 
+{
+    DPRINT;
+    bool displayRequired(true); 
+    
+    if (m_nwInfo.iServiceProviderNameDisplayReq == 
+            RMobilePhone::KDisplaySPNNotRequired) {
+        displayRequired = false; 
+    } 
+    DPRINT << ": serviceProviderNameDisplayRequired: " <<
+            displayRequired;
+    
+    return displayRequired; 
+}
+
+/*!
+    InfoWidgetNetworkHandler::homeZoneTextTag()
+*/
 QString InfoWidgetNetworkHandler::homeZoneTextTag() const 
 {
     DPRINT;
@@ -63,8 +128,8 @@
 }
 
 /*!
- * InfoWidgetNetworkHandler::homeZoneIndicatorType
- */
+    InfoWidgetNetworkHandler::homeZoneIndicatorType()
+*/
 int InfoWidgetNetworkHandler::homeZoneIndicatorType() const 
 {
     DPRINT;
@@ -75,8 +140,32 @@
 }
 
 /*!
- * InfoWidgetNetworkHandler::mcnName
- */
+    InfoWidgetNetworkHandler::enableMcn()
+*/
+void InfoWidgetNetworkHandler::enableMcn() 
+{
+    DPRINT;
+    if (!readMcnDisplayState()) {
+        DPRINT << ": enabling mcn display cenrep";
+        writeMcnDisplayState(true); 
+    }
+}
+
+/*!
+    InfoWidgetNetworkHandler::disableMcn()
+*/
+void InfoWidgetNetworkHandler::disableMcn()
+{
+    DPRINT;
+    if (readMcnDisplayState()) {
+        DPRINT << ": disabling mcn display cenrep";
+        writeMcnDisplayState(false); 
+    }
+}
+
+/*!
+    InfoWidgetNetworkHandler::mcnName()
+*/
 QString InfoWidgetNetworkHandler::mcnName() const 
 {
     DPRINT;
@@ -89,8 +178,8 @@
 }
 
 /*!
- * InfoWidgetNetworkHandler::mcnIndicatorType
- */
+    InfoWidgetNetworkHandler::mcnIndicatorType()
+*/
 int InfoWidgetNetworkHandler::mcnIndicatorType() const 
 {
     DPRINT;
@@ -100,78 +189,71 @@
     return indicatorType; 
 }
 
+
 /*!
- * InfoWidgetNetworkHandler::logCurrentInfo
- */
+    InfoWidgetNetworkHandler::networkRegistrationStatus()
+*/
+int InfoWidgetNetworkHandler::networkRegistrationStatus() const 
+{
+    DPRINT << ": registration status: " <<
+            static_cast<int>(m_nwInfo.iRegistrationStatus);
+    
+    return static_cast<int>(m_nwInfo.iRegistrationStatus); 
+}
+
+/*!
+    InfoWidgetNetworkHandler::isOnline()
+    
+    Check if network registration status is registered and 
+    return status accordingly 
+*/
+bool InfoWidgetNetworkHandler::isOnline() const
+{
+    bool online(false); 
+    
+    switch (networkRegistrationStatus()) {
+        case ENWRegisteredBusy: // Fall through
+        case ENWRegisteredOnHomeNetwork: // Fall through
+        case ENWRegisteredRoaming: 
+            online = true;
+            break; 
+        default: 
+            break; 
+    }
+    
+    DPRINT << ": online: " << online;
+    return online; 
+}
+
+/*!
+    InfoWidgetNetworkHandler::logCurrentInfo()
+*/
 void InfoWidgetNetworkHandler::logCurrentInfo()
 {
     DPRINT << ": IN"; 
     
-    DPRINT << "iRegistrationStatus " << m_nwInfo.iRegistrationStatus;
-    DPRINT << "iNetworkMode " << m_nwInfo.iNetworkMode;      
-    DPRINT << "iStatus " << m_nwInfo.iStatus;           
     QString qBuf; 
-    
-    qBuf = QString((QChar*)m_nwInfo.iCountryCode.Ptr(),
-        m_nwInfo.iCountryCode.Length());
-    DPRINT << "iCountryCode " << qBuf;       
-    
-    qBuf = QString((QChar*)m_nwInfo.iNetworkId.Ptr(),
-        m_nwInfo.iNetworkId.Length());
-    DPRINT << "iNetworkId " << qBuf; 
-    
-    qBuf = QString((QChar*)m_nwInfo.iDisplayTag.Ptr(),
-        m_nwInfo.iDisplayTag.Length());
-    DPRINT << "iDisplayTag " << qBuf;
-    
-    qBuf = QString((QChar*)m_nwInfo.iShortName.Ptr(),
-        m_nwInfo.iShortName.Length());
-    DPRINT << "iShortName " << qBuf;       
-    
-    qBuf = QString((QChar*)m_nwInfo.iLongName.Ptr(),
-        m_nwInfo.iLongName.Length());
-    DPRINT << "iLongName " << qBuf;
-    
-    DPRINT << "iViagIndicatorType " << m_nwInfo.iViagIndicatorType; 
-
-    qBuf = QString((QChar*)m_nwInfo.iViagTextTag.Ptr(),
-        m_nwInfo.iViagTextTag.Length());
-    DPRINT << "iViagTextTag " << qBuf;
-    
     DPRINT << "iMCNIndicatorType " << m_nwInfo.iMCNIndicatorType;  
-    
     qBuf = QString((QChar*)m_nwInfo.iMCNName.Ptr(),
         m_nwInfo.iMCNName.Length());
     DPRINT << "iMCNName " << qBuf;
     
     qBuf = QString((QChar*)m_nwInfo.iSPName.Ptr(),m_nwInfo.iSPName.Length());
     DPRINT << "iSPName " << qBuf;
-    
     DPRINT << "iServiceProviderNameDisplayReq " 
         << m_nwInfo.iServiceProviderNameDisplayReq;
     
-    qBuf = QString((QChar*)m_nwInfo.iNPName.Ptr(), m_nwInfo.iNPName.Length());
-    DPRINT << "iNPName " << qBuf;
-    
-    qBuf = QString((QChar*)m_nwInfo.iOperatorNameInfo.iName.Ptr(),
-        m_nwInfo.iOperatorNameInfo.iName.Length());
-    DPRINT << "iOperatorNameInfo iName" << qBuf;
-    DPRINT << "iOperatorNameInfo iType" << m_nwInfo.iOperatorNameInfo.iType;
-    
-    DPRINT << "iNoServerMode " << m_nwInfo.iNoServerMode;
-    
-    DPRINT << "iVoicePrivacyStatus " << m_nwInfo.iVoicePrivacyStatus;
-    
-    qBuf = QString((QChar*)m_nwInfo.iPLMNField.Ptr(),
-        m_nwInfo.iPLMNField.Length());
-    DPRINT << "iPLMNField " << qBuf;                    
+    DPRINT << "iViagIndicatorType " << m_nwInfo.iViagIndicatorType; 
+    qBuf = QString((QChar*)m_nwInfo.iViagTextTag.Ptr(),
+        m_nwInfo.iViagTextTag.Length());
+    DPRINT << "iViagTextTag " << qBuf;
     
     DPRINT << ": OUT";
 } 
 
 /*!
- * InfoWidgetNetworkHandler::HandleNetworkMessage
- */
+    InfoWidgetNetworkHandler::HandleNetworkMessage()
+*/
 void InfoWidgetNetworkHandler::HandleNetworkMessage( 
     const TNWMessages aMessage )
 {   
@@ -179,7 +261,9 @@
     
     bool acceptedMessage = false;
     switch (aMessage) {
-        case ENWMessageCurrentCellInfoMessage:
+        case ENWMessageCurrentCellInfoMessage: // Fall through 
+        case ENWMessageServiceProviderNameChange: // Fall through
+        case ENWMessageNetworkRegistrationStatusChange: // Fall through
             acceptedMessage = true;
             break;
         default:
@@ -198,8 +282,8 @@
 }
 
 /*!
- * InfoWidgetNetworkHandler::HandleNetworkError
- */
+    InfoWidgetNetworkHandler::HandleNetworkError()
+*/
 void InfoWidgetNetworkHandler::HandleNetworkError( 
     const TNWOperation aOperation, 
     TInt aErrorCode )
@@ -207,6 +291,18 @@
     DPRINT << ": operation: " << aOperation <<  
         " error code: " << aErrorCode;
     
+    // Reset invalid data  
+    switch (aOperation) {
+        case MNWMessageObserver::ENWGetServiceProviderName:
+            m_nwInfo.iServiceProviderNameDisplayReq = 
+                    RMobilePhone::KDisplaySPNNotRequired;
+            m_nwInfo.iSPName.Zero();
+        break;
+        default: 
+            break; 
+    }
+    
+    // Emit error signal 
     int result = 0;
     QT_TRYCATCH_ERROR(result, emit networkError( 
         static_cast<int>(aOperation), static_cast<int>(aErrorCode)));
@@ -215,4 +311,54 @@
     }
 }
 
+/*!
+    InfoWidgetNetworkHandler::writeMcnDisplayState()
+    
+    Handler for cenrep key writing   
+*/
+void InfoWidgetNetworkHandler::writeMcnDisplayState(bool enabled)
+{
+    DPRINT << ": IN";
+    
+    XQSettingsManager *settingsManager = new XQSettingsManager(0); 
+    XQSettingsKey settingsKey(XQSettingsKey::TargetCentralRepository, 
+        KCRUidNetworkSettings.iUid, KSettingsMcnDisplay);
+    int value; 
+    if (enabled) {
+        value = 1; 
+    } else {
+        value = 0; 
+    }
+    bool result = settingsManager->writeItemValue(settingsKey, value );
+    delete settingsManager;
+    
+    DPRINT << ": OUT"; 
+}
+
+/*!
+    InfoWidgetNetworkHandler::readMcnDisplayState()
+*/
+bool InfoWidgetNetworkHandler::readMcnDisplayState()
+{
+    DPRINT << ": IN";
+    bool mcnDisplayKeyOn(false); 
+    
+    XQSettingsManager *settingsManager = new XQSettingsManager(0); 
+    XQSettingsKey settingsKey(XQSettingsKey::TargetCentralRepository, 
+        KCRUidNetworkSettings.iUid, KSettingsMcnDisplay); 
+    bool conversionOk(false); 
+    int value = settingsManager->readItemValue(
+            settingsKey,
+            XQSettingsManager::TypeInt).toInt(&conversionOk);
+    
+    if (conversionOk && value == 1) {
+        mcnDisplayKeyOn = true; 
+    }
+    delete settingsManager;
+        
+    DPRINT << ": OUT";
+    return mcnDisplayKeyOn; 
+}
+
+
 // End of File. 
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetpreferences.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetpreferences.cpp	Mon May 03 12:31:11 2010 +0300
@@ -18,6 +18,12 @@
 #include "infowidgetpreferences.h"
 #include "infowidgetlogging.h"
 
+/*!
+  \class InfoWidgetPreferences
+  \brief Preference store for widget  
+         display etc. options   
+*/
+
 
 /*!
     InfoWidgetPreferences::InfoWidgetPreferences() 
@@ -37,19 +43,38 @@
 }
 
 /*!
-    InfoWidgetPreferences::loadPreferences() 
+    InfoWidgetPreferences::storePreferences()
+    
+    Store acceptable preference set  
 */
-void InfoWidgetPreferences::loadPreferences()
+bool InfoWidgetPreferences::storePreferences()
 {
     DPRINT;
+    bool changed(false); 
+    
+    if (validate() && 
+        m_validatedOptions != m_options){
+            DPRINT << ": preferences differ";
+            changed = true; 
+            m_validatedOptions = m_options;
+        }
+    else if (visibleItemCount() <= 0) { 
+        DPRINT << ": invalid options, restoring initial options";
+        restorePreferences();
+    }
+
+    return changed; 
 }
 
 /*!
-    InfoWidgetPreferences::storePreferences() 
+    InfoWidgetPreferences::restorePreferences()
+    
+    Restores last acceptable preference set 
 */
-void InfoWidgetPreferences::storePreferences()
+void InfoWidgetPreferences::restorePreferences()
 {
     DPRINT;
+    m_options = m_validatedOptions; 
 }
 
 /*!
@@ -70,6 +95,23 @@
 }
 
 /*!
+    InfoWidgetPreferences::isPreferenceSet()
+*/
+bool InfoWidgetPreferences::isPreferenceSet(Option preferenceId) const
+{
+    DPRINT << ": preference id: " << static_cast<int>(preferenceId); 
+    return m_options.testFlag(preferenceId); 
+}
+
+/*!
+    InfoWidgetPreferences::preferences()
+*/
+InfoWidgetPreferences::Options InfoWidgetPreferences::preferences() const
+{
+    return m_options; 
+}
+
+/*!
     InfoWidgetPreferences::setPreference() 
 */
 void InfoWidgetPreferences::setPreference(Option preferenceId, 
@@ -81,8 +123,10 @@
     
     if (preferenceString.compare(DISPLAY_SETTING_ON) == 0) {
         m_options |= preferenceId; 
+        emit prefChanged(preferenceId,DisplayOn);
     } else {
-        m_options &= ~preferenceId; 
+        m_options &= ~preferenceId;
+        emit prefChanged(preferenceId,DisplayOff);
     }
     
     DPRINT << ": modified options: " << m_options;
@@ -108,10 +152,35 @@
     if (m_options.testFlag(DisplaySatText)){
         visibleItems++; 
     }
+    if (m_options.testFlag(DisplaySpn)){
+        visibleItems++; 
+    }
     
     DPRINT << ": visible item count: " << visibleItems;
     return visibleItems; 
 }
 
+/*!
+    InfoWidgetPreferences::validate() 
+*/
+bool InfoWidgetPreferences::validate() 
+{
+    return visibleItemCount() > 0; 
+}
+
+/*!
+   InfoWidgetPreferences::preferenceNames()
+   
+   Convenience function for getting all preference names
+*/
+QStringList InfoWidgetPreferences::preferenceNames()
+{
+    QStringList preferenceList; 
+    preferenceList << "spnDisplay" << "homeZoneDisplay" << 
+            "activeLineDisplay" << "satDisplay" << "mcnDisplay";
+    return preferenceList; 
+}
+
+
 // End of File. 
 
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetsathandler.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetsathandler.cpp	Mon May 03 12:31:11 2010 +0300
@@ -17,19 +17,24 @@
 
 
 #include "infowidgetsathandler.h"
+#include "infowidgetsathandlerprivate.h"
 #include "infowidgetlogging.h"
+#include <rsatservice.h>
 
+/*!
+  \class InfoWidgetSatHandler
+  \brief Handles SIM Application Toolkit specific functionality of 
+         Operator info widget
+*/
 
 /*!
  */
 InfoWidgetSatHandler::InfoWidgetSatHandler(QObject *parent):
-    QObject(parent)
+    QObject(parent) , m_connected(false)
 {
     DPRINT << ": IN";
-    
-    // ToDo: remove when SAT implemented / releasing 
-    DPRINT << ": setting DUMMY DATA to sat display text";
-    m_displayText = "SAT DISPLAY TEXT"; 
+   
+    d_ptr = new InfoWidgetSatHandlerPrivate(this, m_satService);
     
     DPRINT << ": OUT";
 }
@@ -39,19 +44,41 @@
 InfoWidgetSatHandler::~InfoWidgetSatHandler()
 {
     DPRINT << ": IN";
+    delete d_ptr;
     DPRINT << ": OUT";
-}    
+} 
 
 /*!
+   InfoWidgetSatHandler::connect
+ */
+void InfoWidgetSatHandler::connect(bool connect)
+{
+    DPRINT << ": IN : connected = " << m_connected << " : connect = " << connect;
+    if(connect && !m_connected){
+        DPRINT << "connect and startObserving() ";
+        m_connected = d_ptr->connect();
+        if(m_connected){
+            d_ptr->startObserving();
+        }
+    }else if (!connect && m_connected){
+        DPRINT << "disconnect and stopObserving() ";
+        m_connected = d_ptr->disconnect();
+    }
+    DPRINT << ": OUT : connected = " << m_connected;
+}
+
+/*!
+   InfoWidgetSatHandler::logCurrentInfo
  */
 void InfoWidgetSatHandler::logCurrentInfo()
 {
     DPRINT << ": IN"; 
-    DPRINT << ": OUT";
-    
+    DPRINT << "SAT IdleModeText: " << m_displayText;
+    DPRINT << ": OUT";    
 } 
 
 /*!
+   InfoWidgetSatHandler::satDisplayText
  */
 const QString& InfoWidgetSatHandler::satDisplayText() const
 {
@@ -60,6 +87,7 @@
 }
 
 /*!
+   InfoWidgetSatHandler::setSatDisplayText
  */
 void InfoWidgetSatHandler::setSatDisplayText(const QString& displayText)
 {
@@ -67,5 +95,33 @@
     m_displayText = displayText;
 }
 
+/*!
+   InfoWidgetSatHandler::handleIdleModeTxtMessage
+ */
+void InfoWidgetSatHandler::handleIdleModeTxtMessage( int idleResult )
+{
+    DPRINT << ": handleIdleModeTxtMessage: " << idleResult;
+    if(m_connected){
+        m_satService.SetIdleModeTextResponse((RSatService::TSATIdleResult)idleResult);
+    }
+    else{
+        //TODO: What's correct response if widget isn't visible? For now it's permanen problem
+        m_satService.SetIdleModeTextResponse( RSatService::ESATIdleCmdBeyondMeCapabilities );
+    }
+ 
+    //Pass the result
+    emit handleMessage(idleResult);
+}
+
+/*!
+   InfoWidgetSatHandler::handleSatError
+ */
+void InfoWidgetSatHandler::handleSatError( int operation, int errorCode )
+{
+    DPRINT << ": satError : operation: " << operation << ": errorCode: "<<errorCode;
+    m_satService.SetIdleModeTextResponse( RSatService::ESATIdleMeUnableToProcessCmd );
+    emit handleError(operation, errorCode);
+}
+
 // End of File. 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetsathandlerprivate.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,182 @@
+/*
+ * 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:
+ *
+ */
+
+#include <FBS.H>
+
+#include "InfoWidgetSatHandlerPrivate.h"
+#include "InfoWidgetSatHandler.h"
+#include "infowidgetlogging.h"
+
+/*!
+   InfoWidgetSatHandlerPrivate::InfoWidgetSatHandlerPrivate   
+ */
+InfoWidgetSatHandlerPrivate::InfoWidgetSatHandlerPrivate(
+        InfoWidgetSatHandler *iwSatHandler, RSatService& satService)
+    : CActive(CActive::EPriorityStandard), 
+	  q_ptr(iwSatHandler),
+      m_satService(satService)
+{
+    DPRINT << ": IN";
+    CActiveScheduler::Add(this);
+    DPRINT << ": OUT";
+}
+/*!
+   InfoWidgetSatHandlerPrivate::~InfoWidgetSatHandlerPrivate           
+*/
+InfoWidgetSatHandlerPrivate::~InfoWidgetSatHandlerPrivate()
+{
+    DPRINT << ": IN";
+    Cancel();
+    DPRINT << ": OUT";
+}
+/*!
+   InfoWidgetSatHandlerPrivate::connect
+ */
+int InfoWidgetSatHandlerPrivate::connect()
+{
+    TInt result( KErrGeneral  );
+    TRAP(result, m_satSession.ConnectL());
+    if (0 != result) {
+        DPRINT << ": Exception occured while connecting SatSession:" << result;
+    }
+    else{
+        TRAP(result, m_satService.OpenL(m_satSession));
+        if (0 != result) {
+            DPRINT << ": Exception occured while opening SatService:" << result;
+        }
+    }
+    return !result;
+}
+/*! 
+   InfoWidgetSatHandlerPrivate::startObserving
+    
+   To get initial content if any and start listening    
+ */
+void InfoWidgetSatHandlerPrivate::startObserving()
+{
+    //not observing yet but
+    getIdleModeData();
+    // in case there were content, there is need to send response to SAT
+    if(!m_idleTxt.isEmpty()){
+        q_ptr->handleIdleModeTxtMessage( m_idleResult );
+    }
+    // Start observing for changes
+    activate();
+}
+/*!
+   InfoWidgetSatHandlerPrivate::disconnect   
+ */
+int InfoWidgetSatHandlerPrivate::disconnect()
+{
+    DPRINT << ": IN";
+    m_idleTxt = "";
+    Cancel();
+    m_satService.NotifySetupIdleModeTextChangeCancel(); 
+    m_satService.Close();
+    m_satSession.Close();
+    
+    DPRINT << ": OUT";
+    return 0;//TODO:Fixme
+}
+/*!
+   InfoWidgetSatHandlerPrivate::getIdleModeData   
+ */
+void InfoWidgetSatHandlerPrivate::getIdleModeData()
+{
+    HBufC* string( NULL );
+    TUint8 recordId( NULL );
+    RSatService::TSatIconQualifier iconQualifier( 
+        RSatService::ESatIconNoIcon );
+    
+    // Get setup idle mode text, icon qualifier and record id.
+    TInt result( KErrNotFound  );
+    TRAP(result, m_satService.GetSetupIdleModeTextL( string, iconQualifier, recordId )); 
+    if (0 != result) {
+        DPRINT << ": Exception occured while GetSetupIdleModeTextL :" << result;
+        m_idleResult = RSatService::ESATIdleMeUnableToProcessCmd;
+    }
+    else{
+        DPRINT << "string->Length() : " << string->Length();
+        if(RSatService::ESatIconSelfExplanatory != iconQualifier){ 
+            m_idleTxt = QString((QChar*)string->Des().Ptr(), string->Length());
+        }else{
+            m_idleTxt = "";
+        }
+        //determine result
+        if(RSatService::ESatIconNoIcon != iconQualifier
+                && !m_idleTxt.isEmpty()){
+            //icon requested but we don't have icon support
+            m_idleResult = RSatService::ESATIdleSuccessRequestedIconNotDisplayed;
+        }else if(RSatService::ESatIconNoIcon == iconQualifier
+                && !m_idleTxt.isEmpty()){
+            m_idleResult = RSatService::ESATIdleSuccess;
+        }else{ //got empty string, could be permanen problem as well?
+            //m_idleResult = RSatService::ESATIdleCmdBeyondMeCapabilities
+            m_idleResult = RSatService::ESATIdleMeUnableToProcessCmd;
+        }
+    }
+    delete string;
+    q_ptr->setSatDisplayText(m_idleTxt);//empty in case of selexplanatory icon
+}
+
+/*!
+   InfoWidgetSatHandlerPrivate::RunL   
+ */
+void InfoWidgetSatHandlerPrivate::RunL()
+{ 
+    DPRINT << ": IN";
+    if ( KErrNone == iStatus.Int() )
+        {   
+        getIdleModeData();
+        q_ptr->handleIdleModeTxtMessage( m_idleResult );
+    } else {
+        q_ptr->handleSatError(1,iStatus.Int());
+    }
+    if ( !IsActive() )
+        {
+        activate();
+        }       
+    DPRINT << ": OUT";
+}
+/*!
+   InfoWidgetSatHandlerPrivate::DoCancel   
+ */
+void InfoWidgetSatHandlerPrivate::DoCancel()
+{
+    DPRINT << ": IN";
+    m_satService.NotifySetupIdleModeTextChangeCancel(); 
+    DPRINT << ": OUT";
+}
+/*!
+   InfoWidgetSatHandlerPrivate::activate   
+ */
+void InfoWidgetSatHandlerPrivate::activate()
+{
+    DPRINT << ": IN";
+    Cancel();   
+    TInt error = m_satService.NotifySetupIdleModeTextChange( iStatus );
+    
+    if ( KErrNone == error )
+        {
+        SetActive();
+        }
+    DPRINT << ": OUT";
+}
+
+
+    
+
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidgetprovider.pri	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidgetprovider.pri	Mon May 03 12:31:11 2010 +0300
@@ -20,19 +20,20 @@
            ./infowidget/inc/infowidget.h \
            ./infowidget/inc/infowidgetlayoutmanager.h \
            ./infowidget/inc/infowidgetpreferences.h \
-           ./infowidget/inc/infowidgetengine.h 
+           ./infowidget/inc/infowidgetengine.h \
+           ./infowidget/inc/infowidgetsathandlerprivate.h
 
 symbian: {
     HEADERS += ./infowidget/inc/infowidgetnetworkhandler.h \
                ./infowidget/inc/infowidgetsathandler.h \
                ./infowidget/inc/infowidgetlinehandler.h
-} 
-           
-SOURCES += ./src/infowidgetprovider.cpp \
-            ./infowidget/src/infowidget.cpp \
-           ./infowidget/src/infowidgetlayoutmanager.cpp \
-           ./infowidget/src/infowidgetengine.cpp 
-                    
+}
+SOURCES += infowidget/src/infowidgetsathandlerprivate.cpp \
+    ./src/infowidgetprovider.cpp \
+    ./infowidget/src/infowidget.cpp \
+    ./infowidget/src/infowidgetlayoutmanager.cpp \
+    ./infowidget/src/infowidgetengine.cpp
+    
 symbian: {
     SOURCES += ./infowidget/src/infowidgetpreferences.cpp \
                ./infowidget/src/infowidgetnetworkhandler.cpp \
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidgetprovider.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidgetprovider.pro	Mon May 03 12:31:11 2010 +0300
@@ -30,7 +30,8 @@
     -lnetworkhandling \
     -lcbsclient \
     -lcbsmcnclient \
-    -lxqsettingsmanager
+    -lxqsettingsmanager \
+    -lsatclient
 }
    
 INCLUDEPATH += ./inc \
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidgetprovider.qrc	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidgetprovider.qrc	Mon May 03 12:31:11 2010 +0300
@@ -1,12 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <RCC>
-    <qresource prefix="/" >
-        <file>resource/infowidget.png</file>        
-        <file>resource/infowidget.docml</file>        
-        <file>resource/qgn_prop_network_2g.svg</file>
-        <file>resource/qgn_prop_pb_call.svg</file>
-        <file>resource/qgn_prop_pb_sim.svg</file>
-        <file>resource/qgn_stat_zone_home_uni.svg</file>
+    <qresource prefix="/">
+        <file>resource/infowidget.png</file>
+        <file>resource/infowidget.docml</file>
     </qresource>
 </RCC>
-
-
Binary file phoneplugins/infowidgetplugin/infowidgetprovider/resource/infowidget.png has changed
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/resource/infowidgetprovider.manifest	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/resource/infowidgetprovider.manifest	Mon May 03 12:31:11 2010 +0300
@@ -3,5 +3,5 @@
     <widget library="infowidgetprovider"
             uri="infowidgetprovider"
             title="Operator info"
-            description="Info widget for operator info."/>
+            description=""/>
 </widgetprovider>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_RSatSession.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,52 @@
+/*
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include "RSatSession.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// RSatSession::RSatSession
+// -----------------------------------------------------------------------------
+//
+RSatSession::RSatSession(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// RSatSession::ConnectL
+// -----------------------------------------------------------------------------
+//
+void RSatSession::ConnectL(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RSatSession::Version
+// -----------------------------------------------------------------------------
+//
+TVersion RSatSession::Version(  ) const
+    {
+    SMC_MOCK_METHOD0( TVersion )
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_hbframedrawer.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,347 @@
+/*
+* 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:
+*
+*/
+#include <QDebug>
+#include <QBitmap>
+#include <QPainter>
+#include <QGraphicsItem>
+#include <smcmockclassincludes.h>
+#include <hbframedrawer.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::HbFrameDrawer
+// -----------------------------------------------------------------------------
+//
+HbFrameDrawer::HbFrameDrawer( 
+        bool cacheFlag )
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::HbFrameDrawer
+// -----------------------------------------------------------------------------
+//
+HbFrameDrawer::HbFrameDrawer( 
+        const QString & frameGraphicsName,
+        FrameType type,
+        bool cacheFlag )
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::~HbFrameDrawer
+// -----------------------------------------------------------------------------
+//
+HbFrameDrawer::~HbFrameDrawer(  )
+    {
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::isNull
+// -----------------------------------------------------------------------------
+//
+bool HbFrameDrawer::isNull(  ) const
+    {
+    SMC_MOCK_METHOD0( bool )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::frameGraphicsName
+// -----------------------------------------------------------------------------
+//
+QString HbFrameDrawer::frameGraphicsName(  ) const
+    {
+    SMC_MOCK_METHOD0( QString )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::setFrameGraphicsName
+// -----------------------------------------------------------------------------
+//
+void HbFrameDrawer::setFrameGraphicsName( 
+        const QString & frameGraphicsName )
+    {
+    SMC_MOCK_METHOD1( void, const QString &, frameGraphicsName )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::frameType
+// -----------------------------------------------------------------------------
+//
+HbFrameDrawer::FrameType HbFrameDrawer::frameType() const
+    {
+    SMC_MOCK_METHOD0( FrameType )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::setFrameType
+// -----------------------------------------------------------------------------
+//
+void HbFrameDrawer::setFrameType( 
+        HbFrameDrawer::FrameType type )
+    {
+    SMC_MOCK_METHOD1( void, FrameType, type )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::borderWidths
+// -----------------------------------------------------------------------------
+//
+void HbFrameDrawer::borderWidths( 
+        qreal & left,
+        qreal & top,
+        qreal & right,
+        qreal & bottom ) const
+    {
+    SMC_MOCK_METHOD4( void, qreal &, left, 
+        qreal &, top, 
+        qreal &, right, 
+        qreal &, bottom )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::setBorderWidths
+// -----------------------------------------------------------------------------
+//
+void HbFrameDrawer::setBorderWidths( 
+        const qreal left,
+        const qreal top,
+        const qreal right,
+        const qreal bottom )
+    {
+    SMC_MOCK_METHOD4( void, const qreal, left, 
+        const qreal, top, 
+        const qreal, right, 
+        const qreal, bottom )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::setBorderWidths
+// -----------------------------------------------------------------------------
+//
+void HbFrameDrawer::setBorderWidths( 
+        const qreal horizontal,
+        const qreal vertical )
+    {
+    SMC_MOCK_METHOD2( void, const qreal, horizontal, 
+        const qreal, vertical )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::setBorderWidth
+// -----------------------------------------------------------------------------
+//
+void HbFrameDrawer::setBorderWidth( 
+        const qreal width )
+    {
+    SMC_MOCK_METHOD1( void, const qreal, width )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::fillWholeRect
+// -----------------------------------------------------------------------------
+//
+bool HbFrameDrawer::fillWholeRect(  ) const
+    {
+    SMC_MOCK_METHOD0( bool )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::setFillWholeRect
+// -----------------------------------------------------------------------------
+//
+void HbFrameDrawer::setFillWholeRect( 
+        bool fill )
+    {
+    SMC_MOCK_METHOD1( void, bool, fill )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::mirroringMode
+// -----------------------------------------------------------------------------
+//
+HbIcon::MirroringMode HbFrameDrawer::mirroringMode(  ) const
+    {
+    SMC_MOCK_METHOD0( HbIcon::MirroringMode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::setMirroringMode
+// -----------------------------------------------------------------------------
+//
+void HbFrameDrawer::setMirroringMode( 
+        HbIcon::MirroringMode mode )
+    {
+    SMC_MOCK_METHOD1( void, HbIcon::MirroringMode, mode )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::fileNameSuffixList
+// -----------------------------------------------------------------------------
+//
+QStringList HbFrameDrawer::fileNameSuffixList(  ) const
+    {
+    SMC_MOCK_METHOD0( QStringList )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::setFileNameSuffixList
+// -----------------------------------------------------------------------------
+//
+void HbFrameDrawer::setFileNameSuffixList( 
+        const QStringList & list )
+    {
+    SMC_MOCK_METHOD1( void, const QStringList &, list )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::setMask
+// -----------------------------------------------------------------------------
+//
+void HbFrameDrawer::setMask( 
+        const QPixmap & mask )
+    {
+    SMC_MOCK_METHOD1( void, const QPixmap &, mask )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::setMask
+// -----------------------------------------------------------------------------
+//
+void HbFrameDrawer::setMask( 
+        const QBitmap & mask )
+    {
+    SMC_MOCK_METHOD1( void, const QBitmap &, mask )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::mask
+// -----------------------------------------------------------------------------
+//
+QPixmap HbFrameDrawer::mask(  ) const
+    {
+    SMC_MOCK_METHOD0( QPixmap )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::maskBitmap
+// -----------------------------------------------------------------------------
+//
+QBitmap HbFrameDrawer::maskBitmap(  ) const
+    {
+    SMC_MOCK_METHOD0( QBitmap )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::frameSize
+// -----------------------------------------------------------------------------
+//
+QSize HbFrameDrawer::frameSize(  ) const
+    {
+    SMC_MOCK_METHOD0( QSize )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::themeChanged
+// -----------------------------------------------------------------------------
+//
+void HbFrameDrawer::themeChanged(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::setLayoutDirection
+// -----------------------------------------------------------------------------
+//
+void HbFrameDrawer::setLayoutDirection( 
+        Qt::LayoutDirection direction )
+    {
+    SMC_MOCK_METHOD1( void, Qt::LayoutDirection, direction )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::setGraphicsItem
+// -----------------------------------------------------------------------------
+//
+void HbFrameDrawer::setGraphicsItem( 
+        QGraphicsItem * item )
+    {
+    SMC_MOCK_METHOD1( void, QGraphicsItem *, item )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::paint
+// -----------------------------------------------------------------------------
+//
+void HbFrameDrawer::paint( 
+        QPainter * painter,
+        const QRectF & rect ) const
+    {
+    SMC_MOCK_METHOD2( void, QPainter *, painter, 
+        const QRectF &, rect )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::rect
+// -----------------------------------------------------------------------------
+//
+QRectF HbFrameDrawer::rect(  ) const
+    {
+    SMC_MOCK_METHOD0( QRectF )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbFrameDrawer::setRect
+// -----------------------------------------------------------------------------
+//
+void HbFrameDrawer::setRect( 
+        const QRectF & rect )
+    {
+    SMC_MOCK_METHOD1( void, const QRectF &, rect )
+    }
+
+
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_hblabel.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_hblabel.cpp	Mon May 03 12:31:11 2010 +0300
@@ -1,4 +1,5 @@
-/** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+/* 
+* 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"
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_hbmarqueeitem.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_hbmarqueeitem.cpp	Mon May 03 12:31:11 2010 +0300
@@ -26,10 +26,8 @@
 //
 HbMarqueeItem::HbMarqueeItem( 
         QGraphicsItem * parent )
-    //:
-    //HbWidgetBase( /*parent*/ )
     {
-    
+    Q_UNUSED(parent)
     }
 
 
@@ -40,10 +38,9 @@
 HbMarqueeItem::HbMarqueeItem( 
         const QString & text,
         QGraphicsItem * parent )
-    //:
-    //HbWidgetBase( /*text, parent*/ )
     {
-    
+    Q_UNUSED(text)
+    Q_UNUSED(parent)
     }
 
 
@@ -224,10 +221,9 @@
 HbMarqueeItem::HbMarqueeItem( 
         HbMarqueeItemPrivate & dd,
         QGraphicsItem * parent )
-    //:
-    //HbWidgetBase( /*dd, parent*/ )
     {
-    
+    Q_UNUSED(dd)
+    Q_UNUSED(parent)
     }
 
 
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_hbstyleoptionlabel.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_hbstyleoptionlabel.cpp	Mon May 03 12:31:11 2010 +0300
@@ -1,4 +1,5 @@
-/** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+/* 
+* 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"
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidget.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidget.cpp	Mon May 03 12:31:11 2010 +0300
@@ -185,6 +185,27 @@
 
 
 // -----------------------------------------------------------------------------
+// InfoWidget::spnDisplay
+// -----------------------------------------------------------------------------
+//
+QString InfoWidget::spnDisplay(  )
+    {
+    SMC_MOCK_METHOD0( QString )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidget::setSpnDisplay
+// -----------------------------------------------------------------------------
+//
+void InfoWidget::setSpnDisplay( 
+        QString value )
+    {
+    SMC_MOCK_METHOD1( void, QString, value )
+    }
+
+
+// -----------------------------------------------------------------------------
 // InfoWidget::onInitialize
 // -----------------------------------------------------------------------------
 //
@@ -248,6 +269,17 @@
 
 
 // -----------------------------------------------------------------------------
+// InfoWidget::spnDisplaySettingChanged
+// -----------------------------------------------------------------------------
+//
+void InfoWidget::spnDisplaySettingChanged( 
+        int state )
+    {
+    SMC_MOCK_METHOD1( void, int, state )
+    }
+
+
+// -----------------------------------------------------------------------------
 // InfoWidget::homeZoneDisplaySettingChanged
 // -----------------------------------------------------------------------------
 //
@@ -302,6 +334,18 @@
 
 
 // -----------------------------------------------------------------------------
+// InfoWidget::settingsValidationFailed
+// -----------------------------------------------------------------------------
+//
+void InfoWidget::settingsValidationFailed(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+
+
+// -----------------------------------------------------------------------------
 // InfoWidget::paint
 // -----------------------------------------------------------------------------
 //
@@ -358,10 +402,20 @@
 
 
 // -----------------------------------------------------------------------------
-// InfoWidget::initializePreferences
+// InfoWidget::readPersistentPreferences
 // -----------------------------------------------------------------------------
 //
-void InfoWidget::initializePreferences(  )
+bool InfoWidget::readPersistentPreferences(  )
+    {
+    SMC_MOCK_METHOD0( bool )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidget::initializeCheckBoxStates
+// -----------------------------------------------------------------------------
+//
+void InfoWidget::initializeCheckBoxStates(  )
     {
     SMC_MOCK_METHOD0( void )
     }
@@ -378,3 +432,24 @@
     }
 
 
+// -----------------------------------------------------------------------------
+// InfoWidget::installTranslator
+// -----------------------------------------------------------------------------
+//
+bool InfoWidget::installTranslator( 
+        QString translationFile )
+    {
+    SMC_MOCK_METHOD1( bool, QString, translationFile )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidget::removeTranslators
+// -----------------------------------------------------------------------------
+//
+void InfoWidget::removeTranslators(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidgetengine.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidgetengine.cpp	Mon May 03 12:31:11 2010 +0300
@@ -17,6 +17,7 @@
 #include <QDebug>
 #include <smcmockclassincludes.h>
 #include "infowidgetnetworkhandler.h"
+#include "infowidgetsathandler.h"
 #include "infowidgetengine.h"
 
 // ============================ MEMBER FUNCTIONS ===============================
@@ -62,6 +63,7 @@
     SMC_MOCK_METHOD0( void )
     }
 
+
 // -----------------------------------------------------------------------------
 // InfoWidgetEngine::updateNetworkDataToModel
 // -----------------------------------------------------------------------------
@@ -131,3 +133,36 @@
     }
 
 
+// -----------------------------------------------------------------------------
+// InfoWidgetEngine::suspend
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetEngine::suspend(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetEngine::resume
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetEngine::resume(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetEngine::preferenceChanged
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetEngine::preferenceChanged( 
+        int option,
+        int displaySetting )
+    {
+    SMC_MOCK_METHOD2( void, int, option, 
+        int, displaySetting )
+    }
+
+
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidgetlayoutmanager.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidgetlayoutmanager.cpp	Mon May 03 12:31:11 2010 +0300
@@ -1,4 +1,4 @@
-/* 
+/*
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
@@ -86,6 +86,16 @@
 
 
 // -----------------------------------------------------------------------------
+// InfoWidgetLayoutManager::rowHeight
+// -----------------------------------------------------------------------------
+//
+qreal InfoWidgetLayoutManager::rowHeight(  ) const
+    {
+    SMC_MOCK_METHOD0( qreal )
+    }
+
+
+// -----------------------------------------------------------------------------
 // InfoWidgetLayoutManager::layoutInfoDisplay
 // -----------------------------------------------------------------------------
 //
@@ -133,6 +143,16 @@
         TYPE3, widgetMap )
     }
 
+// -----------------------------------------------------------------------------
+// InfoWidgetLayoutManager::reloadWidgets
+// -----------------------------------------------------------------------------
+//
+bool InfoWidgetLayoutManager::reloadWidgets( 
+        const DisplayRole displayRole )
+    {
+    SMC_MOCK_METHOD1( bool, const DisplayRole, displayRole )
+    }
+
 
 // -----------------------------------------------------------------------------
 // InfoWidgetLayoutManager::loadWidget
@@ -149,7 +169,6 @@
     }
 
 
-
 // -----------------------------------------------------------------------------
 // InfoWidgetLayoutManager::getWidget
 // -----------------------------------------------------------------------------
@@ -172,6 +191,17 @@
 
 
 // -----------------------------------------------------------------------------
+// InfoWidgetLayoutManager::removeWidget
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetLayoutManager::removeWidget( 
+        LayoutItemRole itemRole )
+    {
+    SMC_MOCK_METHOD1( void, LayoutItemRole, itemRole )
+    }
+
+
+// -----------------------------------------------------------------------------
 // InfoWidgetLayoutManager::hideWidget
 // -----------------------------------------------------------------------------
 //
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidgetnetworkhandler.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidgetnetworkhandler.cpp	Mon May 03 12:31:11 2010 +0300
@@ -47,6 +47,26 @@
 
 
 // -----------------------------------------------------------------------------
+// InfoWidgetNetworkHandler::serviceProviderName
+// -----------------------------------------------------------------------------
+//
+QString InfoWidgetNetworkHandler::serviceProviderName(  ) const
+    {
+    SMC_MOCK_METHOD0( QString )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetNetworkHandler::serviceProviderNameDisplayRequired
+// -----------------------------------------------------------------------------
+//
+bool InfoWidgetNetworkHandler::serviceProviderNameDisplayRequired(  ) const
+    {
+    SMC_MOCK_METHOD0( bool )
+    }
+
+
+// -----------------------------------------------------------------------------
 // InfoWidgetNetworkHandler::homeZoneTextTag
 // -----------------------------------------------------------------------------
 //
@@ -84,6 +104,25 @@
     {
     SMC_MOCK_METHOD0( int )
     }
+    
+// -----------------------------------------------------------------------------
+// InfoWidgetNetworkHandler::networkRegistrationStatus
+// -----------------------------------------------------------------------------
+//
+int InfoWidgetNetworkHandler::networkRegistrationStatus(  ) const
+    {
+    SMC_MOCK_METHOD0( int )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetNetworkHandler::isOnline
+// -----------------------------------------------------------------------------
+//
+bool InfoWidgetNetworkHandler::isOnline(  ) const
+    {
+    SMC_MOCK_METHOD0( bool )
+    }
 
 
 // -----------------------------------------------------------------------------
@@ -118,3 +157,68 @@
     SMC_MOCK_METHOD2( void, const TNWOperation, aOperation, 
         TInt, aErrorCode )
     }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetNetworkHandler::suspend
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetNetworkHandler::suspend(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetNetworkHandler::resume
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetNetworkHandler::resume(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetNetworkHandler::enableMcn
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetNetworkHandler::enableMcn(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetNetworkHandler::disableMcn
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetNetworkHandler::disableMcn(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetNetworkHandler::writeMcnDisplayState
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetNetworkHandler::writeMcnDisplayState( 
+        bool enabled )
+    {
+    SMC_MOCK_METHOD1( void, bool, enabled )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetNetworkHandler::readMcnDisplayState
+// -----------------------------------------------------------------------------
+//
+bool InfoWidgetNetworkHandler::readMcnDisplayState(  )
+    {
+    SMC_MOCK_METHOD0( bool )
+    }
+
+
+
+
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidgetpreferences.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidgetpreferences.cpp	Mon May 03 12:31:11 2010 +0300
@@ -46,7 +46,7 @@
 // InfoWidgetPreferences::loadPreferences
 // -----------------------------------------------------------------------------
 //
-void InfoWidgetPreferences::loadPreferences(  )
+void InfoWidgetPreferences::restorePreferences(  )
     {
     SMC_MOCK_METHOD0( void )
     }
@@ -56,9 +56,9 @@
 // InfoWidgetPreferences::storePreferences
 // -----------------------------------------------------------------------------
 //
-void InfoWidgetPreferences::storePreferences(  )
+bool InfoWidgetPreferences::storePreferences(  )
     {
-    SMC_MOCK_METHOD0( void )
+    SMC_MOCK_METHOD0( bool )
     }
 
 
@@ -72,6 +72,14 @@
     SMC_MOCK_METHOD1( QString, Option, preferenceId )
     }
 
+// -----------------------------------------------------------------------------
+// InfoWidgetPreferences::preferences
+// -----------------------------------------------------------------------------
+//
+InfoWidgetPreferences::Options InfoWidgetPreferences::preferences() const
+    {
+    SMC_MOCK_METHOD0( InfoWidgetPreferences::Options )
+    }
 
 // -----------------------------------------------------------------------------
 // InfoWidgetPreferences::setPreference
@@ -87,6 +95,27 @@
 
 
 // -----------------------------------------------------------------------------
+// InfoWidgetPreferences::isPreferenceSet
+// -----------------------------------------------------------------------------
+//
+bool InfoWidgetPreferences::isPreferenceSet( Option preferenceId ) const
+    {
+    SMC_MOCK_METHOD1( bool, Option, preferenceId)
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetPreferences::validate
+// -----------------------------------------------------------------------------
+//
+bool InfoWidgetPreferences::validate(  )
+    {
+    SMC_MOCK_METHOD0( bool)
+    }
+
+
+
+// -----------------------------------------------------------------------------
 // InfoWidgetPreferences::visibleItemCount
 // -----------------------------------------------------------------------------
 //
@@ -96,3 +125,14 @@
     }
 
 
+// -----------------------------------------------------------------------------
+// InfoWidgetPreferences::preferenceNames
+// -----------------------------------------------------------------------------
+//
+QStringList InfoWidgetPreferences::preferenceNames() 
+    {
+    SMC_MOCK_METHOD0( QStringList )
+    }
+    
+    
+    
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidgetsathandler.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,109 @@
+/*
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include "infowidgetsathandler.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// InfoWidgetSatHandler::InfoWidgetSatHandler
+// -----------------------------------------------------------------------------
+//
+InfoWidgetSatHandler::InfoWidgetSatHandler( 
+        QObject * parent )
+    {
+    Q_UNUSED(parent);
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetSatHandler::~InfoWidgetSatHandler
+// -----------------------------------------------------------------------------
+//
+InfoWidgetSatHandler::~InfoWidgetSatHandler(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetSatHandler::connect
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetSatHandler::connect( 
+        bool connect )
+    {
+    SMC_MOCK_METHOD1( void, bool, connect )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetSatHandler::satDisplayText
+// -----------------------------------------------------------------------------
+//
+const QString & InfoWidgetSatHandler::satDisplayText(  ) const
+    {
+    SMC_MOCK_METHOD0( const QString & )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetSatHandler::setSatDisplayText
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetSatHandler::setSatDisplayText( 
+        const QString & displayText )
+    {
+    SMC_MOCK_METHOD1( void, const QString &, displayText )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetSatHandler::logCurrentInfo
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetSatHandler::logCurrentInfo(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetSatHandler::handleIdleModeTxtMessage
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetSatHandler::handleIdleModeTxtMessage( 
+        int idleResult )
+    {
+    SMC_MOCK_METHOD1( void, int, idleResult )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetSatHandler::handleSatError
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetSatHandler::handleSatError( 
+        int operation,
+        int errorCode )
+    {
+    SMC_MOCK_METHOD2( void, int, operation, 
+        int, errorCode )
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_infowidgetsathandlerprivate.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,95 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include "infowidgetsathandlerprivate.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// InfoWidgetSatHandlerPrivate::InfoWidgetSatHandlerPrivate
+// -----------------------------------------------------------------------------
+//
+InfoWidgetSatHandlerPrivate::InfoWidgetSatHandlerPrivate( 
+        InfoWidgetSatHandler * iwSatHandler,
+        RSatService & iSatService )
+    :CActive( 0 ),
+        m_satService(iSatService)
+    
+    {
+    Q_UNUSED(iwSatHandler)
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetSatHandlerPrivate::~InfoWidgetSatHandlerPrivate
+// -----------------------------------------------------------------------------
+//
+InfoWidgetSatHandlerPrivate::~InfoWidgetSatHandlerPrivate(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetSatHandlerPrivate::startObserving
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetSatHandlerPrivate::startObserving(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetSatHandlerPrivate::connect
+// -----------------------------------------------------------------------------
+//
+int InfoWidgetSatHandlerPrivate::connect(  )
+    {
+    SMC_MOCK_METHOD0( int )
+    }
+
+
+// -----------------------------------------------------------------------------
+// InfoWidgetSatHandlerPrivate::disconnect
+// -----------------------------------------------------------------------------
+//
+int InfoWidgetSatHandlerPrivate::disconnect(  )
+    {
+    SMC_MOCK_METHOD0( int )
+    }
+    
+// -----------------------------------------------------------------------------
+// InfoWidgetSatHandlerPrivate::DoCancel
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetSatHandlerPrivate::DoCancel( )
+	 {
+	 SMC_MOCK_METHOD0( void )	
+	 }
+	
+	
+// -----------------------------------------------------------------------------
+// InfoWidgetSatHandlerPrivate::RunL
+// -----------------------------------------------------------------------------
+//
+void InfoWidgetSatHandlerPrivate::RunL( )
+	 {
+	 SMC_MOCK_METHOD0( void )		
+	 }
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_qgraphicslayout.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,187 @@
+/*
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include "qgraphicslayout.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// QGraphicsLayout::QGraphicsLayout
+// -----------------------------------------------------------------------------
+//
+QGraphicsLayout::QGraphicsLayout( 
+        QGraphicsLayoutItem * parent )
+    //:
+    //QGraphicsLayoutItem( /*parent*/ )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLayout::~QGraphicsLayout
+// -----------------------------------------------------------------------------
+//
+QGraphicsLayout::~QGraphicsLayout(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLayout::setContentsMargins
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLayout::setContentsMargins( 
+        qreal left,
+        qreal top,
+        qreal right,
+        qreal bottom )
+    {
+    SMC_MOCK_METHOD4( void, qreal, left, 
+        qreal, top, 
+        qreal, right, 
+        qreal, bottom )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLayout::getContentsMargins
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLayout::getContentsMargins( 
+        qreal * left,
+        qreal * top,
+        qreal * right,
+        qreal * bottom ) const
+    {
+    SMC_MOCK_METHOD4( void, qreal *, left, 
+        qreal *, top, 
+        qreal *, right, 
+        qreal *, bottom )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLayout::activate
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLayout::activate(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLayout::isActivated
+// -----------------------------------------------------------------------------
+//
+bool QGraphicsLayout::isActivated(  ) const
+    {
+    SMC_MOCK_METHOD0( bool )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLayout::invalidate
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLayout::invalidate(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLayout::updateGeometry
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLayout::updateGeometry(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLayout::widgetEvent
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLayout::widgetEvent( 
+        QEvent * e )
+    {
+    SMC_MOCK_METHOD1( void, QEvent *, e )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLayout::count
+// -----------------------------------------------------------------------------
+//
+int QGraphicsLayout::count(  ) const
+    {
+    SMC_MOCK_METHOD0( int )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLayout::itemAt
+// -----------------------------------------------------------------------------
+//
+QGraphicsLayoutItem * QGraphicsLayout::itemAt( 
+        int i ) const
+    {
+    SMC_MOCK_METHOD1( QGraphicsLayoutItem *, int, i )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLayout::removeAt
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLayout::removeAt( 
+        int index )
+    {
+    SMC_MOCK_METHOD1( void, int, index )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLayout::QGraphicsLayout
+// -----------------------------------------------------------------------------
+//
+QGraphicsLayout::QGraphicsLayout( 
+        QGraphicsLayoutPrivate &,
+        QGraphicsLayoutItem * )
+    //:
+    //QGraphicsLayoutItem( /*&, **/ )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLayout::addChildLayoutItem
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLayout::addChildLayoutItem( 
+        QGraphicsLayoutItem * layoutItem )
+    {
+    SMC_MOCK_METHOD1( void, QGraphicsLayoutItem *, layoutItem )
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_qgraphicslinearlayout.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,289 @@
+/*
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include "qgraphicslinearlayout.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::QGraphicsLinearLayout
+// -----------------------------------------------------------------------------
+//
+QGraphicsLinearLayout::QGraphicsLinearLayout( 
+        QGraphicsLayoutItem * parent )
+    //:
+    //QGraphicsLayout( /*parent*/ )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::QGraphicsLinearLayout
+// -----------------------------------------------------------------------------
+//
+QGraphicsLinearLayout::QGraphicsLinearLayout( 
+        Qt::Orientation orientation,
+        QGraphicsLayoutItem * parent )
+    //:
+    //QGraphicsLayout( /*orientation, parent*/ )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::~QGraphicsLinearLayout
+// -----------------------------------------------------------------------------
+//
+QGraphicsLinearLayout::~QGraphicsLinearLayout(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::setOrientation
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLinearLayout::setOrientation( 
+        Qt::Orientation orientation )
+    {
+    SMC_MOCK_METHOD1( void, Qt::Orientation, orientation )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::orientation
+// -----------------------------------------------------------------------------
+//
+Qt::Orientation QGraphicsLinearLayout::orientation(  ) const
+    {
+    SMC_MOCK_METHOD0( Qt::Orientation )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::insertItem
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLinearLayout::insertItem( 
+        int index,
+        QGraphicsLayoutItem * item )
+    {
+    SMC_MOCK_METHOD2( void, int, index, 
+        QGraphicsLayoutItem *, item )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::insertStretch
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLinearLayout::insertStretch( 
+        int index,
+        int stretch )
+    {
+    SMC_MOCK_METHOD2( void, int, index, 
+        int, stretch )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::removeItem
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLinearLayout::removeItem( 
+        QGraphicsLayoutItem * item )
+    {
+    SMC_MOCK_METHOD1( void, QGraphicsLayoutItem *, item )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::removeAt
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLinearLayout::removeAt( 
+        int index )
+    {
+    SMC_MOCK_METHOD1( void, int, index )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::setSpacing
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLinearLayout::setSpacing( 
+        qreal spacing )
+    {
+    SMC_MOCK_METHOD1( void, qreal, spacing )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::spacing
+// -----------------------------------------------------------------------------
+//
+qreal QGraphicsLinearLayout::spacing(  ) const
+    {
+    SMC_MOCK_METHOD0( qreal )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::setItemSpacing
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLinearLayout::setItemSpacing( 
+        int index,
+        qreal spacing )
+    {
+    SMC_MOCK_METHOD2( void, int, index, 
+        qreal, spacing )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::itemSpacing
+// -----------------------------------------------------------------------------
+//
+qreal QGraphicsLinearLayout::itemSpacing( 
+        int index ) const
+    {
+    SMC_MOCK_METHOD1( qreal, int, index )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::setStretchFactor
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLinearLayout::setStretchFactor( 
+        QGraphicsLayoutItem * item,
+        int stretch )
+    {
+    SMC_MOCK_METHOD2( void, QGraphicsLayoutItem *, item, 
+        int, stretch )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::stretchFactor
+// -----------------------------------------------------------------------------
+//
+int QGraphicsLinearLayout::stretchFactor( 
+        QGraphicsLayoutItem * item ) const
+    {
+    SMC_MOCK_METHOD1( int, QGraphicsLayoutItem *, item )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::setAlignment
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLinearLayout::setAlignment( 
+        QGraphicsLayoutItem * item,
+        Qt::Alignment alignment )
+    {
+//    SMC_MOCK_METHOD2( void, QGraphicsLayoutItem *, item, 
+//        Qt::Alignment, alignment )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::alignment
+// -----------------------------------------------------------------------------
+//
+Qt::Alignment QGraphicsLinearLayout::alignment( 
+        QGraphicsLayoutItem * item ) const
+    {
+    //SMC_MOCK_METHOD1( Qt::Alignment, QGraphicsLayoutItem *, item )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::setGeometry
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLinearLayout::setGeometry( 
+        const QRectF & rect )
+    {
+    SMC_MOCK_METHOD1( void, const QRectF &, rect )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::count
+// -----------------------------------------------------------------------------
+//
+int QGraphicsLinearLayout::count(  ) const
+    {
+    SMC_MOCK_METHOD0( int )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::itemAt
+// -----------------------------------------------------------------------------
+//
+QGraphicsLayoutItem * QGraphicsLinearLayout::itemAt( 
+        int index ) const
+    {
+    SMC_MOCK_METHOD1( QGraphicsLayoutItem *, int, index )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::invalidate
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLinearLayout::invalidate(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::sizeHint
+// -----------------------------------------------------------------------------
+//
+QSizeF QGraphicsLinearLayout::sizeHint( 
+        Qt::SizeHint which,
+        const QSizeF & constraint ) const
+    {
+    SMC_MOCK_METHOD2( QSizeF, Qt::SizeHint, which, 
+        const QSizeF &, constraint )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QGraphicsLinearLayout::dump
+// -----------------------------------------------------------------------------
+//
+void QGraphicsLinearLayout::dump( 
+        int indent ) const
+    {
+    SMC_MOCK_METHOD1( void, int, indent )
+    }
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_rsatservice.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,137 @@
+/*
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include "rsatservice.h"
+
+class TSatIconInfo{
+    
+};
+
+class RSatSession{
+
+};
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// RSatService::RSatService
+// -----------------------------------------------------------------------------
+//
+RSatService::RSatService(  )
+    //:
+    //RSubSessionBase( /**/ )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// RSatService::OpenL
+// -----------------------------------------------------------------------------
+//
+void RSatService::OpenL( 
+        const RSatSession & aSession )
+    {
+    SMC_MOCK_METHOD1( void, const RSatSession &, aSession )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RSatService::Close
+// -----------------------------------------------------------------------------
+//
+void RSatService::Close(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RSatService::NotifySetupIdleModeTextChange
+// -----------------------------------------------------------------------------
+//
+TInt RSatService::NotifySetupIdleModeTextChange( 
+        TRequestStatus & aStatus )
+    {
+    SMC_MOCK_METHOD1( TInt, TRequestStatus &, aStatus )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RSatService::NotifySetupIdleModeTextChangeCancel
+// -----------------------------------------------------------------------------
+//
+void RSatService::NotifySetupIdleModeTextChangeCancel(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RSatService::GetSetupIdleModeTextL
+// -----------------------------------------------------------------------------
+//
+TBool RSatService::GetSetupIdleModeTextL( 
+        HBufC * & aText,
+        TSatIconQualifier & aIconQualifier,
+        TUint8 & aRecordNumber )
+    {
+    aText = HBufC::NewL(15);
+    SMC_MOCK_METHOD3( TBool, 
+            HBufC* , aText,
+            TSatIconQualifier &, aIconQualifier,
+            TUint8 &, aRecordNumber )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RSatService::GetIconInfoL
+// -----------------------------------------------------------------------------
+//
+void RSatService::GetIconInfoL( 
+        TUint8 aRecordNumber,
+        RIconEf & aIconEf ) const
+    {
+    SMC_MOCK_METHOD2( void, TUint8, aRecordNumber, 
+        RIconEf &, aIconEf )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RSatService::GetIconL
+// -----------------------------------------------------------------------------
+//
+CFbsBitmap * RSatService::GetIconL( 
+        const TSatIconInfo & aIconInfo ) const
+    {
+    SMC_MOCK_METHOD1( CFbsBitmap *, const TSatIconInfo &, aIconInfo )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RSatService::SetIdleModeTextResponse
+// -----------------------------------------------------------------------------
+//
+void RSatService::SetIdleModeTextResponse( 
+        const TSATIdleResult & aResult ) const
+    {
+    SMC_MOCK_METHOD1( void, const TSATIdleResult &, aResult )
+    }
+
+
+
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_xqsettingskey.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_xqsettingskey.cpp	Mon May 03 12:31:11 2010 +0300
@@ -28,7 +28,9 @@
         long int uid,
         unsigned long int key )
     {
-    
+    Q_UNUSED(target)
+    Q_UNUSED(uid)
+    Q_UNUSED(key)
     }
 
 
@@ -49,7 +51,7 @@
 XQSettingsKey::Target XQSettingsKey::target(  ) const
     {
     
-    XQSettingsKey::Target variable;
+    XQSettingsKey::Target variable = (XQSettingsKey::Target)1;
     return variable;
     }
 
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_xqsettingsmanager.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/mocks/mock_xqsettingsmanager.cpp	Mon May 03 12:31:11 2010 +0300
@@ -61,10 +61,7 @@
         const XQSettingsKey & key,
         const QVariant & value )
     {
-    Q_UNUSED( key )
-    Q_UNUSED( value )
-    bool variable;
-    return variable;
+    SMC_MOCK_METHOD2( bool, XQSettingsKey &, key, QVariant &, value )
     }
 
 
@@ -76,10 +73,7 @@
         const XQSettingsKey & key,
         XQSettingsManager::Type type )
     {
-    Q_UNUSED( key )
-    Q_UNUSED( type )
-    bool variable;
-    return variable;
+    SMC_MOCK_METHOD2( bool, XQSettingsKey &, key, XQSettingsManager::Type, type )
     }
 
 
@@ -90,9 +84,7 @@
 bool XQSettingsManager::stopMonitoring( 
         const XQSettingsKey & key )
     {
-    Q_UNUSED( key )
-    bool variable;
-    return variable;
+    SMC_MOCK_METHOD1( bool, XQSettingsKey &, key )
     }
 
 
@@ -102,9 +94,7 @@
 //
 XQSettingsManager::Error XQSettingsManager::error(  ) const
     {
-    
-    XQSettingsManager::Error variable;
-    return variable;
+    SMC_MOCK_METHOD0( XQSettingsManager::Error )
     }
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,194 @@
+rem
+rem Copyright (c) 2009 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
+
+@echo off
+setlocal
+goto :startup 
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function DEFAULT
+::
+:: Modify this function
+::  - TESTED_SRC can be changed to match tested code.
+::    Specifies path from testcode group directory to
+::    tested code
+::  - Add test directories to be runned
+::    ie. "call :build ut_projectdirectory" or use
+::    "for /f %%a in ('dir /b ut_*') do call :build %%a"
+::    which compiles, instruments and runs all test directories
+::    starting with "ut_".
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:DEFAULT
+set TESTED_SRC=..\..\infowidget\src\*.cpp
+
+for /f %%a in ('dir /b ut_*') do call :build %%a
+if [%DOMODULESTESTS%] EQU [TRUE] (
+for /f %%a in ('dir /b mt_*') do call :build %%a
+)
+
+call :finish
+goto :END
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function STARTUP
+::
+:: Initializing script
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:STARTUP
+
+set BUILDTESTS=TRUE
+set RUNTESTS=TRUE
+set INSTRUMENT=TRUE
+set REMOVEINSTRUMENT=TRUE
+set DOMODULESTESTS=TRUE
+set ABLD_CALL= -2comp  sbs.bat -c winscw_udeb --keepgoing
+set PATH_TO_DLL=\epoc32\release\winscw\udeb
+set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
+
+if not exist %PATH_TO_COVERAGE_DATA% (
+mkdir %PATH_TO_COVERAGE_DATA%
+)
+
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
+if [%1] EQU [] ( goto default )
+
+call :%1
+call :%2
+call :%3
+call :%4
+call :%5
+echo Running tests = %RUNTESTS%
+echo Instrumenting tests = %INSTRUMENT%
+goto default
+
+:/NOCLEANUP
+set REMOVEINSTRUMENT=FALSE
+goto end
+
+:/NORUN
+set RUNTESTS=FALSE
+set REMOVEINSTRUMENT=FALSE
+goto end
+
+:/NOINSTRUMENT
+set INSTRUMENT=FALSE
+goto end
+
+:/NOBUILD
+set BUILDTESTS=FALSE
+goto end
+
+:/ONLYUNITTESTS
+set DOMODULESTESTS=FALSE
+goto end
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function FINISH
+::
+:: Finishes run_auto_tests.bat
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:FINISH
+
+if [%RUNTESTS%] EQU [TRUE] (
+call :runtests
+)
+
+if [%INSTRUMENT%] EQU [TRUE] (
+call :calculatecoverage
+)
+
+if [%REMOVEINSTRUMENT%] EQU [TRUE] (
+call :removecoverage
+)
+goto end
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function BUILD
+::    param directory
+::
+:: builds test from given directory
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:BUILD
+setlocal
+if [%BUILDTESTS%] EQU [FALSE] ( goto end )
+echo Building %1
+if not exist %1 ( 
+echo %1 Not found! 
+goto end
+)
+
+pushd .
+call cd %1
+call qmake
+call sbs -c winscw_udeb clean
+if [%INSTRUMENT%] EQU [TRUE] (
+call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
+) else (
+call %ABLD_CALL%
+)
+
+popd
+endlocal
+goto end
+
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function RUNTESTS
+::
+:: NOTE! Function assumes that test binary is named according to test directory.
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:RUNTESTS
+echo Running tests
+for /f %%a in ('dir /b ut_*') do (
+     call %PATH_TO_DLL%\%%a.exe
+     move \epoc32\winscw\c\data\%%a.log %PATH_TO_RESULT%\%%a.log
+)
+goto end
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function CALCULATECOVERAGE
+::
+:: Calculates test coverage. Generates html
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:CALCULATECOVERAGE
+echo Calculating coverage
+ctcpost %PATH_TO_COVERAGE_DATA%\*.sym | ctcmerge -i - -o profile.txt
+call ctc2html -t 70 -i profile.txt -o \coverage_result -nsb
+goto end
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function REMOVECOVERAGE
+::
+:: Removes data from coverage directory
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:REMOVECOVERAGE
+echo Removing deleting coverage data
+call del %PATH_TO_COVERAGE_DATA%\*.sym
+call del %PATH_TO_COVERAGE_DATA%\*.dat
+call del profile.txt
+goto end
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function END
+::
+:: Prints done
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:END
+echo Done!
\ No newline at end of file
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidget/inc/ut_infowidget.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidget/inc/ut_infowidget.h	Mon May 03 12:31:11 2010 +0300
@@ -45,7 +45,6 @@
     //From QGraphicsItem.
     void t_boundingRect();
     void t_shape();
-    void t_sizeHint();
     void t_sizePolicy();
     
     void t_setHomeZoneDisplay(); 
@@ -58,8 +57,7 @@
     void t_mouseReleaseEvent(); 
     void t_mouseMoveEvent(); 
     void t_updateInfoDisplay();
-    void t_initializePreferences();
-    
+    void t_readPersistentPreferences();
 
     void t_onInitialize();
     void t_onUninitialize(); 
@@ -67,9 +65,7 @@
     void t_onHide();
     void t_readModel();
     void t_handleModelError();
-    void t_homeZoneDisplaySettingChanged();
     void t_mcnDisplaySettingChanged();
-    void t_activeLineDisplaySettingChanged();
     void t_satDisplaySettingChanged();
     void t_settingsEditingFinished();
 
@@ -82,11 +78,15 @@
     void t_startChanges();
     void t_endChanges();
     
+    void t_sizeHint();
+    
     /*
      * Not work from commmand prompt.
      */
     void t_changeEvent();
     
+    
+
 private:
     
     InfoWidget *m_infoWidget;
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidget/run_auto_tests_qt.bat	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidget/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -54,14 +54,19 @@
 set INSTRUMENT=TRUE
 set REMOVEINSTRUMENT=TRUE
 set DOMODULESTESTS=TRUE
-set ABLD_CALL=abld build winscw udeb -keepgoing
+set ABLD_CALL= -2comp  sbs.bat -c winscw_udeb --keepgoing
 set PATH_TO_DLL=\epoc32\release\winscw\udeb
 set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
 
 if not exist %PATH_TO_COVERAGE_DATA% (
 mkdir %PATH_TO_COVERAGE_DATA%
 )
 
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
 if [%1] EQU [] ( goto default )
 
 call :%1
@@ -132,8 +137,7 @@
 pushd .
 call cd %1
 call qmake
-call bldmake bldfiles
-call abld clean winscw udeb
+call sbs -c winscw_udeb clean
 if [%INSTRUMENT%] EQU [TRUE] (
 call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
 ) else (
@@ -153,6 +157,7 @@
 :RUNTESTS
 echo Running tests
 call %PATH_TO_DLL%\ut_infowidget.exe -- 
+move \epoc32\winscw\c\data\ut_infowidget.log %PATH_TO_RESULT%\ut_infowidget.log
 goto end
 
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidget/src/ut_infowidget.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidget/src/ut_infowidget.cpp	Mon May 03 12:31:11 2010 +0300
@@ -24,6 +24,7 @@
 #include <HbCheckBox>
 #include <HbEvent>
 #include <HbColorScheme>
+#include <hbframedrawer.h>
 #include "ut_infowidget.h"
 #include "qtestmains60.h"
 
@@ -103,53 +104,6 @@
     m_infoWidget->shape();
 }
 
-/*!
-  UT_InfoWidget::t_sizeHint
- */
-void UT_InfoWidget::t_sizeHint()
-{   
-    const QSizeF KMinimumSize(50, 50);
-    const QSizeF KPreferredSize(70, 70);
-    const QSizeF KDefaultSizeInfoDisplay(70, 160);
-    const QSizeF KDefaultSizeSettingsDisplay(250, 250);
-    
-    // current display is info display
-    EXPECT(InfoWidgetLayoutManager::currentDisplayRole)
-        .returns(InfoWidgetLayoutManager::InfoDisplay);
-    EXPECT(InfoWidgetLayoutManager::contentWidget);
-    m_qgraphicswidget.setMinimumSize(KMinimumSize);
-    m_qgraphicswidget.setPreferredSize(KPreferredSize);
-    Qt::SizeHint sizeHint = Qt::MinimumSize;
-    QSizeF constraint = QSizeF();
-    QVERIFY(KMinimumSize == m_infoWidget->sizeHint(sizeHint, constraint));
-    
-    // current display is settings display
-    EXPECT(InfoWidgetLayoutManager::currentDisplayRole)
-        .returns(InfoWidgetLayoutManager::SettingsDisplay);
-    EXPECT(InfoWidgetLayoutManager::currentDisplayRole)
-        .returns(InfoWidgetLayoutManager::SettingsDisplay);
-    EXPECT(InfoWidgetLayoutManager::contentWidget);
-    QVERIFY(KPreferredSize == m_infoWidget->sizeHint(sizeHint, constraint));
-    
-    QGraphicsWidget* nullPoiter(NULL);
-    // cannot fetch info display size from docml, default size to be used
-    EXPECT(InfoWidgetLayoutManager::currentDisplayRole)
-        .returns(InfoWidgetLayoutManager::InfoDisplay);
-    EXPECT(InfoWidgetLayoutManager::contentWidget).returns(nullPoiter);
-    QVERIFY(KDefaultSizeInfoDisplay == 
-        m_infoWidget->sizeHint(sizeHint, constraint));
-    
-    // cannot fetch settings display size from docml, default size to be used
-    EXPECT(InfoWidgetLayoutManager::currentDisplayRole)
-        .returns(InfoWidgetLayoutManager::SettingsDisplay);
-    EXPECT(InfoWidgetLayoutManager::currentDisplayRole)
-        .returns(InfoWidgetLayoutManager::SettingsDisplay);
-    EXPECT(InfoWidgetLayoutManager::contentWidget).returns(nullPoiter);
-    QVERIFY(KDefaultSizeSettingsDisplay == 
-        m_infoWidget->sizeHint(sizeHint, constraint)); 
-    
-    QVERIFY(verify());
-}
 
 /*!
   UT_InfoWidget::t_sizePolicy
@@ -284,33 +238,23 @@
 {
     HbLabel hbLabel;
     QGraphicsWidget* pointerHbLabel(&hbLabel);
-    
-    EXPECT(InfoWidgetLayoutManager::getWidget)
-        .with(InfoWidgetLayoutManager::RoleHomeZoneLabel)
-        .returns(pointerHbLabel);
+
     EXPECT(InfoWidgetLayoutManager::currentDisplayRole)
         .returns(InfoWidgetLayoutManager::InfoDisplay);
+
+    EXPECT(InfoWidgetLayoutManager::getWidget)
+        .with(InfoWidgetLayoutManager::RoleSpnLabel)
+        .returns(pointerHbLabel);
     
     HbMarqueeItem mcnMarqueeItem; 
     QGraphicsWidget* pointerMcnMarqueeItem(&mcnMarqueeItem);
     EXPECT(InfoWidgetLayoutManager::getWidget)
         .with(InfoWidgetLayoutManager::RoleMcnMarqueeItem)
         .returns(pointerMcnMarqueeItem);
-    EXPECT(InfoWidgetLayoutManager::currentDisplayRole)
-        .returns(InfoWidgetLayoutManager::InfoDisplay);
     EXPECT(HbMarqueeItem::isAnimating).returns(true);
-    
     EXPECT(InfoWidgetLayoutManager::getWidget)
-        .with(InfoWidgetLayoutManager::RoleActiveLineLabel)
-        .returns(pointerHbLabel);
-    EXPECT(InfoWidgetLayoutManager::currentDisplayRole)
-        .returns(InfoWidgetLayoutManager::InfoDisplay);
-    
-    EXPECT(InfoWidgetLayoutManager::getWidget)
-        .with(InfoWidgetLayoutManager::RoleSatTextLabel)
-        .returns(pointerHbLabel);
-    EXPECT(InfoWidgetLayoutManager::currentDisplayRole)
-        .returns(InfoWidgetLayoutManager::InfoDisplay);
+        .with(InfoWidgetLayoutManager::RoleSatMarqueeItem)
+        .returns(pointerMcnMarqueeItem);
     
     m_infoWidget->updateInfoDisplay();
     
@@ -318,46 +262,36 @@
 }
 
 /*!
-  UT_InfoWidget::t_initializePreferences
+  UT_InfoWidget::t_readPersistentPreferences
  */
-void UT_InfoWidget::t_initializePreferences()
+void UT_InfoWidget::t_readPersistentPreferences()
 {    
-    EXPECT(InfoWidgetPreferences::preference)
-        .with(InfoWidgetPreferences::DisplayHomeZone)
-        .returns(KPreferenceOff);
     EXPECT(InfoWidgetPreferences::setPreference)
-        .with(InfoWidgetPreferences::DisplayHomeZone, KPreferenceOff);
+        .with(InfoWidgetPreferences::DisplayHomeZone, QString(""));
 
-    EXPECT(InfoWidgetPreferences::preference)
-        .with(InfoWidgetPreferences::DisplayMcn)
-        .returns(KPreferenceOff);
     EXPECT(InfoWidgetPreferences::setPreference)
-        .with(InfoWidgetPreferences::DisplayMcn, KPreferenceOff);
+        .with(InfoWidgetPreferences::DisplayMcn, QString(""));
     
-    EXPECT(InfoWidgetPreferences::preference)
-        .with(InfoWidgetPreferences::DisplayActiveLine)
-        .returns(KPreferenceOff);
     EXPECT(InfoWidgetPreferences::setPreference)
-        .with(InfoWidgetPreferences::DisplayActiveLine, KPreferenceOff);
+        .with(InfoWidgetPreferences::DisplayActiveLine, QString(""));
     
-    EXPECT(InfoWidgetPreferences::preference)
-        .with(InfoWidgetPreferences::DisplaySatText)
-        .returns(KPreferenceOff);
     EXPECT(InfoWidgetPreferences::setPreference)
-        .with(InfoWidgetPreferences::DisplaySatText, KPreferenceOff);
+        .with(InfoWidgetPreferences::DisplaySatText, QString(""));
+
+    EXPECT(InfoWidgetPreferences::setPreference)
+        .with(InfoWidgetPreferences::DisplaySpn, QString(""));
     
-    EXPECT(InfoWidgetPreferences::visibleItemCount).returns(0);
-    EXPECT(InfoWidgetPreferences::setPreference)
-        .with(InfoWidgetPreferences::DisplayMcn, KPreferenceOn);
-    
-    m_infoWidget->initializePreferences();
+    EXPECT(InfoWidgetPreferences::validate);
+
+    m_infoWidget->readPersistentPreferences();
     
     QVERIFY(verify());
     
     // one visible item initially
-    EXPECT(InfoWidgetPreferences::visibleItemCount).returns(1);
+    EXPECT(InfoWidgetPreferences::validate).returns(true);
+    EXPECT(InfoWidgetPreferences::storePreferences);
     
-    m_infoWidget->initializePreferences();
+    m_infoWidget->readPersistentPreferences();
     
     QVERIFY(verify());
 }
@@ -366,8 +300,22 @@
   UT_InfoWidget::t_onInitialize
  */
 void UT_InfoWidget::t_onInitialize()
-{
-    m_infoWidget->onInitialize(); 
+{    
+    // Test onInitialize sequence where 
+    // meta-object properties have been 
+    // initialized 
+    EXPECT(InfoWidgetPreferences::validate)
+        .returns(true);
+    EXPECT(InfoWidgetPreferences::storePreferences)
+        .returns(true);
+    m_infoWidget->onInitialize();
+    
+    // Test onInitialize sequence where 
+    // meta-object properties are 
+    // uninitialized 
+    EXPECT(InfoWidgetPreferences::validate)
+        .returns(false);
+    m_infoWidget->onInitialize();
 }
 
 /*!
@@ -420,23 +368,9 @@
     m_infoWidget->handleModelError(operation, errorCode); 
 }
 
-void UT_InfoWidget::t_homeZoneDisplaySettingChanged()
-{
-    // user enables home zone setting
-    EXPECT(InfoWidgetPreferences::setPreference)
-        .with(InfoWidgetPreferences::DisplayHomeZone, KPreferenceOn);
-    int setting(Qt::Checked);
-    m_infoWidget->homeZoneDisplaySettingChanged(setting);
-    
-    // user disables home zone setting
-    EXPECT(InfoWidgetPreferences::setPreference)
-        .with(InfoWidgetPreferences::DisplayHomeZone, KPreferenceOff);
-    setting = Qt::Unchecked;
-    m_infoWidget->homeZoneDisplaySettingChanged(setting);
-    
-    QVERIFY(verify());
-}
-
+/*!
+  UT_InfoWidget::t_mcnDisplaySettingChanged
+ */
 void UT_InfoWidget::t_mcnDisplaySettingChanged()
 {
     // user enables MCN setting
@@ -454,23 +388,6 @@
     QVERIFY(verify());
 }
 
-void UT_InfoWidget::t_activeLineDisplaySettingChanged()
-{
-    // user enables active line setting
-    EXPECT(InfoWidgetPreferences::setPreference)
-        .with(InfoWidgetPreferences::DisplayActiveLine, KPreferenceOn);
-    int setting(Qt::Checked);
-    m_infoWidget->activeLineDisplaySettingChanged(setting);
-    
-    // user disables active line setting
-    EXPECT(InfoWidgetPreferences::setPreference)
-        .with(InfoWidgetPreferences::DisplayActiveLine, KPreferenceOff);
-    setting = Qt::Unchecked;
-    m_infoWidget->activeLineDisplaySettingChanged(setting);
-    
-    QVERIFY(verify());
-}
-
 void UT_InfoWidget::t_satDisplaySettingChanged()
 {
     // user enables SAT setting
@@ -495,60 +412,48 @@
 
 void UT_InfoWidget::t_updateItemsVisibility()
 {
-    // all items visible
-    EXPECT(InfoWidgetLayoutManager::currentDisplayRole)
-        .returns(InfoWidgetLayoutManager::InfoDisplay);
+    // All items visible
     EXPECT(InfoWidgetPreferences::preference)
-        .with(InfoWidgetPreferences::DisplayHomeZone)
+        .with(InfoWidgetPreferences::DisplaySpn)
         .returns(KPreferenceOn);
     EXPECT(InfoWidgetPreferences::preference)
         .with(InfoWidgetPreferences::DisplayMcn)
         .returns(KPreferenceOn);
     EXPECT(InfoWidgetPreferences::preference)
-        .with(InfoWidgetPreferences::DisplayActiveLine)
-        .returns(KPreferenceOn);
-    EXPECT(InfoWidgetPreferences::preference)
         .with(InfoWidgetPreferences::DisplaySatText)
         .returns(KPreferenceOn);
     EXPECT(InfoWidgetLayoutManager::setLayoutRows)
-        .with(4);
+        .with(3);
     
     m_infoWidget->updateItemsVisibility();
-
+    QVERIFY(verify());
+    
     // none of items visible
     EXPECT(InfoWidgetLayoutManager::currentDisplayRole)
         .returns(InfoWidgetLayoutManager::InfoDisplay);
     
     EXPECT(InfoWidgetPreferences::preference)
-        .with(InfoWidgetPreferences::DisplayHomeZone)
+        .with(InfoWidgetPreferences::DisplaySpn)
         .returns(KPreferenceOff);
-    EXPECT(InfoWidgetLayoutManager::hideWidget)
-        .with(InfoWidgetLayoutManager::RoleHomeZoneLabel);
-    EXPECT(InfoWidgetLayoutManager::hideWidget)
-        .with(InfoWidgetLayoutManager::RoleHomeZoneIcon);
-    
+    EXPECT(InfoWidgetLayoutManager::removeWidget)
+        .with(InfoWidgetLayoutManager::RoleSpnLabel);
+    EXPECT(InfoWidgetLayoutManager::removeWidget)
+        .with(InfoWidgetLayoutManager::RoleSpnIcon);
+
     EXPECT(InfoWidgetPreferences::preference)
         .with(InfoWidgetPreferences::DisplayMcn)
         .returns(KPreferenceOff);
-    EXPECT(InfoWidgetLayoutManager::hideWidget)
+    EXPECT(InfoWidgetLayoutManager::removeWidget)
         .with(InfoWidgetLayoutManager::RoleMcnMarqueeItem);
-    EXPECT(InfoWidgetLayoutManager::hideWidget)
+    EXPECT(InfoWidgetLayoutManager::removeWidget)
         .with(InfoWidgetLayoutManager::RoleMcnIcon);
     
     EXPECT(InfoWidgetPreferences::preference)
-        .with(InfoWidgetPreferences::DisplayActiveLine)
-        .returns(KPreferenceOff);
-    EXPECT(InfoWidgetLayoutManager::hideWidget)
-        .with(InfoWidgetLayoutManager::RoleActiveLineLabel);
-    EXPECT(InfoWidgetLayoutManager::hideWidget)
-        .with(InfoWidgetLayoutManager::RoleActiveLineIcon);
-    
-    EXPECT(InfoWidgetPreferences::preference)
         .with(InfoWidgetPreferences::DisplaySatText)
         .returns(KPreferenceOff);
-    EXPECT(InfoWidgetLayoutManager::hideWidget)
-        .with(InfoWidgetLayoutManager::RoleSatTextLabel);
-    EXPECT(InfoWidgetLayoutManager::hideWidget)
+    EXPECT(InfoWidgetLayoutManager::removeWidget)
+        .with(InfoWidgetLayoutManager::RoleSatMarqueeItem);
+    EXPECT(InfoWidgetLayoutManager::removeWidget)
         .with(InfoWidgetLayoutManager::RoleSatTextIcon);
     
     EXPECT(InfoWidgetLayoutManager::setLayoutRows)
@@ -591,21 +496,11 @@
         .with(InfoWidgetLayoutManager::RoleOkButton)
         .returns(&okButton);
     
-    QGraphicsWidget homeZoneBox;
-    EXPECT(InfoWidgetLayoutManager::getWidget)
-        .with(InfoWidgetLayoutManager::RoleHomeZoneCheckBox)
-        .returns(&homeZoneBox);
-
     QGraphicsWidget mcnCheckBox;
     EXPECT(InfoWidgetLayoutManager::getWidget)
         .with(InfoWidgetLayoutManager::RoleMcnCheckBox)
         .returns(&mcnCheckBox);
     
-    QGraphicsWidget activeLineCheckBox;
-    EXPECT(InfoWidgetLayoutManager::getWidget)
-        .with(InfoWidgetLayoutManager::RoleActiveLineCheckBox)
-        .returns(&activeLineCheckBox);
-
     QGraphicsWidget satTextCheckBox;
     EXPECT(InfoWidgetLayoutManager::getWidget)
         .with(InfoWidgetLayoutManager::RoleSatTextCheckBox)
@@ -644,4 +539,49 @@
     QVERIFY(verify());
 }
 
+
+/*!
+  UT_InfoWidget::t_sizeHint
+ */
+void UT_InfoWidget::t_sizeHint()
+{   
+    const QSizeF KMinimumSize(33.5, 160);
+    const QSizeF KPreferredSize(134, 160);
+    const QSizeF KDefaultSizeInfoDisplay(100, 100);
+    const QSizeF KDefaultSizeSettingsDisplay(230, 220);
+
+    // Test: initial size after construction  
+    Qt::SizeHint sizeHint = Qt::PreferredSize;
+    QSizeF constraint = QSizeF();
+    QVERIFY(KDefaultSizeInfoDisplay == m_infoWidget->sizeHint(
+            sizeHint, constraint));
+    
+    // Test: size after onInitialize is called 
+    // and current display is InfoDisplay 
+    m_infoWidget->onInitialize();
+    
+    EXPECT(InfoWidgetLayoutManager::currentDisplayRole).
+            returns(InfoWidgetLayoutManager::InfoDisplay);
+    QGraphicsWidget *contentWidget = new QGraphicsWidget;
+    contentWidget->setMinimumSize(KMinimumSize); 
+    EXPECT(InfoWidgetLayoutManager::contentWidget).
+            returns(contentWidget);
+    EXPECT(InfoWidgetPreferences::visibleItemCount).
+            returns(1);
+    
+    // No strict verification, approximate values.
+    // Data in docml is in "un" format and strict comparison to pixels won't work  
+    //QVERIFY(abs(KMinimumSize.width()-m_infoWidget->sizeHint(sizeHint, constraint).width()) < 1);
+    //QVERIFY(abs(KMinimumSize.height()-m_infoWidget->sizeHint(sizeHint, constraint).height()) < 1);
+    QVERIFY(KDefaultSizeInfoDisplay != m_infoWidget->sizeHint(sizeHint, constraint));
+    
+    // Test: size after onInitialize is called 
+    // and current display is SettingsDisplay 
+
+    delete contentWidget;
+    contentWidget = NULL;
+    
+    QVERIFY(verify());
+}
+
 QTEST_MAIN_S60(UT_InfoWidget)
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidget/ut_infowidget.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidget/ut_infowidget.pro	Mon May 03 12:31:11 2010 +0300
@@ -18,14 +18,13 @@
 CONFIG += qtestlib hb
 TEMPLATE = app
 TARGET = 
-DEPENDPATH  += . ../../infowidget/src ../../infowidget/inc
+DEPENDPATH  += . ../../infowidget/src 
 INCLUDEPATH += .
 INCLUDEPATH += ../common
 INCLUDEPATH += ../../inc/
 INCLUDEPATH += ../../infowidget/inc/
 DEFINES += QT_NO_DEBUG_STREAM
 
-MOC_DIR = moc
 
 QT -= gui
 QT += testlib
@@ -47,9 +46,6 @@
 SOURCES += ../../infowidget/src/infowidget.cpp
 
 # mocks needed for testing
-#HEADERS += hbdocumentloader.h
-#SOURCES += ../mocks/mock_hbdocumentloader.cpp
-
 HEADERS += ../../infowidget/inc/infowidgetpreferences.h
 SOURCES += ../mocks/mock_infowidgetpreferences.cpp
 HEADERS += ../../infowidget/inc/infowidgetengine.h
@@ -58,10 +54,14 @@
 SOURCES += ../mocks/mock_infowidgetlayoutmanager.cpp
 HEADERS += ../../infowidget/inc/infowidgetnetworkhandler.h
 SOURCES += ../mocks/mock_infowidgetnetworkhandler.cpp
+HEADERS += ../../infowidget/inc/infowidgetsathandler.h
+SOURCES += ../mocks/mock_infowidgetsathandler.cpp
 
 SOURCES += ../mocks/mock_hbcolorscheme.cpp
 SOURCES += ../mocks/mock_hblabel.cpp
 SOURCES += ../mocks/mock_hbstyleoptionlabel.cpp
 SOURCES += ../mocks/mock_hbmarqueeitem.cpp
 SOURCES += ../mocks/mock_hbwidget.cpp
-
+SOURCES += ../mocks/mock_qgraphicslinearlayout.cpp
+SOURCES += ../mocks/mock_qgraphicslayout.cpp
+SOURCES += ../mocks/mock_hbframedrawer.cpp
\ No newline at end of file
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetengine/inc/ut_infowidgetengine.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetengine/inc/ut_infowidgetengine.h	Mon May 03 12:31:11 2010 +0300
@@ -45,6 +45,11 @@
     void t_handleSatError(); 
     void t_handleLineError();
     
+    void t_logModelData();
+    void t_preferenceChanged();
+    void t_suspend();
+    void t_resume();
+    
 private:
     
     InfoWidgetEngine *m_infoWidgetEngine;
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetengine/run_auto_tests_qt.bat	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetengine/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -54,14 +54,19 @@
 set INSTRUMENT=TRUE
 set REMOVEINSTRUMENT=TRUE
 set DOMODULESTESTS=TRUE
-set ABLD_CALL=abld build winscw udeb -keepgoing
+set ABLD_CALL= -2comp  sbs.bat -c winscw_udeb --keepgoing
 set PATH_TO_DLL=\epoc32\release\winscw\udeb
 set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
 
 if not exist %PATH_TO_COVERAGE_DATA% (
 mkdir %PATH_TO_COVERAGE_DATA%
 )
 
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
 if [%1] EQU [] ( goto default )
 
 call :%1
@@ -132,8 +137,7 @@
 pushd .
 call cd %1
 call qmake
-call bldmake bldfiles
-call abld clean winscw udeb
+call sbs -c winscw_udeb clean
 if [%INSTRUMENT%] EQU [TRUE] (
 call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
 ) else (
@@ -153,6 +157,7 @@
 :RUNTESTS
 echo Running tests
 call %PATH_TO_DLL%\ut_infowidgetengine.exe -dtextshell --
+move \epoc32\winscw\c\data\ut_infowidgetengine.log %PATH_TO_RESULT%\ut_infowidgetengine.log
 goto end
 
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetengine/src/ut_infowidgetengine.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetengine/src/ut_infowidgetengine.cpp	Mon May 03 12:31:11 2010 +0300
@@ -17,8 +17,11 @@
 #include "ut_infowidgetengine.h"
 #include "infowidgetengine.h"
 #include "qtestmains60.h"
+#include "infowidgetpreferences.h"
+
 // mocked dependencies of the class under test
 #include "infowidgetnetworkhandler.h"
+#include "infowidgetsathandler.h"
 
 const QString KHomeZoneTextTag("HomeZoneText0");    // max length 13
 const TNWViagIndicatorType 
@@ -38,7 +41,6 @@
     
 }
 
-
 /*!
   UT_InfoWidgetEngine::~UT_InfoWidgetEngine
  */
@@ -47,7 +49,6 @@
     delete m_infoWidgetEngine;
 }
 
-
 /*!
   UT_InfoWidgetEngine::init
  */
@@ -55,6 +56,9 @@
 {
     initialize();
     
+    SmcDefaultValue<QString>::SetL("");
+    SmcDefaultValue<const QString & >::SetL("");
+    
     EXPECT(InfoWidgetNetworkHandler::logCurrentInfo);
     EXPECT(InfoWidgetNetworkHandler::homeZoneTextTag)
         .returns(KHomeZoneTextTag);
@@ -69,7 +73,6 @@
     QVERIFY(verify());
 }
 
-
 /*!
   UT_InfoWidgetEngine::cleanup
  */
@@ -81,7 +84,6 @@
     m_infoWidgetEngine = 0;
 }
 
-
 /*!
   UT_InfoWidgetEngine::t_modelData
  */
@@ -94,7 +96,6 @@
     QVERIFY(data.mcnIndicatorType() == KMcnIndicatorType);
 }
 
-
 /*!
   UT_InfoWidgetEngine::t_updateNetworkDataToModel
  */
@@ -120,49 +121,112 @@
     QVERIFY(verify());
 }
 
-
 /*!
   UT_InfoWidgetEngine::t_updateSatDataToModel
  */
 void UT_InfoWidgetEngine::t_updateSatDataToModel()
 {
+    EXPECT(InfoWidgetSatHandler::satDisplayText)
+        .returns(QString(""));
+    
     m_infoWidgetEngine->updateSatDataToModel();
 }
 
-
 /*!
   UT_InfoWidgetEngine::t_updateLineDataToModel
  */
 void UT_InfoWidgetEngine::t_updateLineDataToModel()
 {
     m_infoWidgetEngine->updateLineDataToModel();
+    
+    QVERIFY(verify());
 }
 
-
 /*!
   UT_InfoWidgetEngine::t_handleNetworkError
  */
 void UT_InfoWidgetEngine::t_handleNetworkError()
 {
     m_infoWidgetEngine->handleNetworkError(0, 0);
+    
+    QVERIFY(verify());
 }
 
-
 /*!
   UT_InfoWidgetEngine::t_handleSatError
  */
-void UT_InfoWidgetEngine:: t_handleSatError()
+void UT_InfoWidgetEngine::t_handleSatError()
 {
     m_infoWidgetEngine->handleSatError(0, 0);
+    
+    QVERIFY(verify());
 }
 
+/*!
+  UT_InfoWidgetEngine::t_handleLineError
+ */
+void UT_InfoWidgetEngine::t_handleLineError()
+{
+    m_infoWidgetEngine->handleLineError(0, 0);
+    
+    QVERIFY(verify());
+}
 
 /*!
   UT_InfoWidgetEngine::t_handleLineError
  */
-void UT_InfoWidgetEngine:: t_handleLineError()
+void UT_InfoWidgetEngine::t_logModelData()
+{
+    m_infoWidgetEngine->logModelData();
+    
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidgetEngine::t_preferenceChanged
+ */
+void UT_InfoWidgetEngine::t_preferenceChanged()
 {
-    m_infoWidgetEngine->handleLineError(0, 0);    
+    m_infoWidgetEngine->preferenceChanged
+        (InfoWidgetPreferences::DisplayMcn,
+            InfoWidgetPreferences::DisplayOn);
+
+    m_infoWidgetEngine->preferenceChanged
+        (InfoWidgetPreferences::DisplayMcn,
+            InfoWidgetPreferences::DisplayOff);
+
+    m_infoWidgetEngine->preferenceChanged
+        (InfoWidgetPreferences::DisplaySatText,
+            InfoWidgetPreferences::DisplayOn);        
+
+    m_infoWidgetEngine->preferenceChanged
+        (InfoWidgetPreferences::DisplaySatText,
+            InfoWidgetPreferences::DisplayOff);        
+
+    m_infoWidgetEngine->preferenceChanged(-1,
+            InfoWidgetPreferences::DisplayOff);        
+
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidgetEngine::t_suspend
+ */
+void UT_InfoWidgetEngine::t_suspend()
+{
+    m_infoWidgetEngine->suspend();
+        
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidgetEngine::t_resume
+ */
+void UT_InfoWidgetEngine::t_resume()
+{
+    m_infoWidgetEngine->resume();
+        
+    QVERIFY(verify());
 }
 
 QTEST_MAIN_S60(UT_InfoWidgetEngine)
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetengine/ut_infowidgetengine.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetengine/ut_infowidgetengine.pro	Mon May 03 12:31:11 2010 +0300
@@ -46,9 +46,14 @@
 SOURCES += ../../infowidget/src/infowidgetengine.cpp
 
 # mocks needed for testing
-HEADERS += ../../infowidget/inc/infowidgetnetworkhandler.h
+HEADERS += ../../infowidget/inc/infowidgetnetworkhandler.h \
+           ../../infowidget/inc/infowidgetsathandler.h
 HEADERS += /epoc32/include/mw/xqsettingskey.h \
            /epoc32/include/mw/xqsettingsmanager.h
+
 SOURCES += ../mocks/mock_xqsettingsmanager.cpp \
            ../mocks/mock_xqsettingskey.cpp     \
-           ../mocks/mock_infowidgetnetworkhandler.cpp
+           ../mocks/mock_infowidgetnetworkhandler.cpp \
+           ../mocks/mock_infowidgetsathandler.cpp \
+           ../mocks/mock_rsatservice.cpp 
+           
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetlayoutmanager/inc/ut_infowidgetlayoutmanager.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetlayoutmanager/inc/ut_infowidgetlayoutmanager.h	Mon May 03 12:31:11 2010 +0300
@@ -35,6 +35,7 @@
 private:     
     void fillDisplayContainers();
     void fillCurrentWidgetsContainer();
+    void fillParams(const QString & fileName, bool * ok);
     
 private slots:
     void init();
@@ -45,6 +46,7 @@
     
     void t_layoutRows(); 
     void t_setLayoutRows();
+    //void t_rowHeight();
     
     void t_layoutInfoDisplay();
     void t_layoutSettingsDisplay();
@@ -53,10 +55,16 @@
     void t_loadWidgets();
     void t_loadWidget();
     void t_getWidget();
+    void t_hideWidget();
+
     void t_contentWidget();
-    void t_hideWidget();
+    
+    void t_showAll();
     void t_hideAll();
-    void t_showAll();
+        
+    void t_reloadWidgets();
+    
+    void t_removeWidget();
     
     // InfoWidgetDocumentLoader tests 
     void t_createObject();
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetlayoutmanager/run_auto_tests_qt.bat	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetlayoutmanager/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -54,14 +54,19 @@
 set INSTRUMENT=TRUE
 set REMOVEINSTRUMENT=TRUE
 set DOMODULESTESTS=TRUE
-set ABLD_CALL=abld build winscw udeb -keepgoing
+set ABLD_CALL= -2comp  sbs.bat -c winscw_udeb --keepgoing
 set PATH_TO_DLL=\epoc32\release\winscw\udeb
 set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
 
 if not exist %PATH_TO_COVERAGE_DATA% (
 mkdir %PATH_TO_COVERAGE_DATA%
 )
 
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
 if [%1] EQU [] ( goto default )
 
 call :%1
@@ -132,8 +137,7 @@
 pushd .
 call cd %1
 call qmake
-call bldmake bldfiles
-call abld clean winscw udeb
+call sbs -c winscw_udeb clean
 if [%INSTRUMENT%] EQU [TRUE] (
 call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
 ) else (
@@ -153,6 +157,7 @@
 :RUNTESTS
 echo Running tests
 call %PATH_TO_DLL%\ut_infowidgetlayoutmanager.exe -dtextshell --
+move \epoc32\winscw\c\data\ut_infowidgetlayoutmanager.log %PATH_TO_RESULT%\ut_infowidgetlayoutmanager.log
 goto end
 
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetlayoutmanager/src/ut_infowidgetlayoutmanager.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetlayoutmanager/src/ut_infowidgetlayoutmanager.cpp	Mon May 03 12:31:11 2010 +0300
@@ -17,15 +17,17 @@
 #include "ut_infowidgetlayoutmanager.h"
 
 #include <QGraphicsWidget>
-
+#include <hbmarqueeitem.h>
 #define private public
 #include "infowidgetlayoutmanager.h"
 #include "qtestmains60.h"
 
 
-const int KNumOfSettingsDisplayRoles = 15;
-const int KNumOfInfoDisplayRoles = 10;
+const int KNumOfSettingsDisplayRoles = 12;
+const int KNumOfInfoDisplayRoles = 8;
 const QString KInfoWidgetDocmlFile = ":/resource/infowidget.docml";
+const QString KMargueeItemClassName = HbMarqueeItem::staticMetaObject.className();
+
 
 /*!
   UT_InfoWidgetLayoutManager::UT_InfoWidgetLayoutManager
@@ -115,6 +117,15 @@
 }
 
 /*!
+  UT_InfoWidgetLayoutManager::fillParams
+ */
+void UT_InfoWidgetLayoutManager::fillParams(const QString & fileName,
+        bool * ok){
+    Q_UNUSED(fileName)
+    *ok = true;
+}
+
+/*!
   UT_InfoWidgetLayoutManager::fillCurrentWidgetsContainer
  */
 void UT_InfoWidgetLayoutManager::fillCurrentWidgetsContainer()
@@ -164,20 +175,16 @@
         QVERIFY(0 <= roles.indexOf(
             InfoWidgetLayoutManager::RoleContent));
         QVERIFY(0 <= roles.indexOf(
-            InfoWidgetLayoutManager::RoleHomeZoneLabel));
+            InfoWidgetLayoutManager::RoleSpnLabel));
         QVERIFY(0 <= roles.indexOf(
             InfoWidgetLayoutManager::RoleMcnMarqueeItem));
         QVERIFY(0 <= roles.indexOf(
-            InfoWidgetLayoutManager::RoleActiveLineLabel));
+            InfoWidgetLayoutManager::RoleSatMarqueeItem));
         QVERIFY(0 <= roles.indexOf(
-            InfoWidgetLayoutManager::RoleSatTextLabel));
-        QVERIFY(0 <= roles.indexOf(
-            InfoWidgetLayoutManager::RoleHomeZoneIcon));
+            InfoWidgetLayoutManager::RoleSpnIcon));
         QVERIFY(0 <= roles.indexOf(
             InfoWidgetLayoutManager::RoleMcnIcon));
         QVERIFY(0 <= roles.indexOf(
-            InfoWidgetLayoutManager::RoleActiveLineIcon));
-        QVERIFY(0 <= roles.indexOf(
             InfoWidgetLayoutManager::RoleSatTextIcon));
         QVERIFY(0 <= roles.indexOf(
             InfoWidgetLayoutManager::RoleSettingsContainer));
@@ -213,13 +220,20 @@
     QVERIFY(KLayoutRows == m_layoutManager->layoutRows());
 }
 
+/*!
+  UT_InfoWidgetLayoutManager::t_setLayoutRows
+ *//*
+void UT_InfoWidgetLayoutManager::t_rowHeight()
+{
+    QVERIFY(m_layoutManager->rowHeight()); 
+}*/
 
 /*!
   UT_InfoWidgetLayoutManager::t_layoutInfoDisplay
  */
 void UT_InfoWidgetLayoutManager::t_layoutInfoDisplay()
 {
-    m_layoutManager->layoutInfoDisplay();
+    QVERIFY(!m_layoutManager->layoutInfoDisplay());
 }
 
 
@@ -228,7 +242,7 @@
  */
 void UT_InfoWidgetLayoutManager::t_layoutSettingsDisplay()
 {
-    m_layoutManager->layoutSettingsDisplay();
+    QVERIFY(!m_layoutManager->layoutSettingsDisplay());
 }
 
 /*!
@@ -244,32 +258,27 @@
         QVERIFY(0 <= settingDisplayRoles.indexOf(
             InfoWidgetLayoutManager::RoleContent));
         QVERIFY(0 <= settingDisplayRoles.indexOf(
-            InfoWidgetLayoutManager::RoleHomeZoneLabel));
-        QVERIFY(0 <= settingDisplayRoles.indexOf(
             InfoWidgetLayoutManager::RoleMcnLabel));
         QVERIFY(0 <= settingDisplayRoles.indexOf(
-            InfoWidgetLayoutManager::RoleActiveLineLabel));
-        QVERIFY(0 <= settingDisplayRoles.indexOf(
             InfoWidgetLayoutManager::RoleSatTextLabel));
         QVERIFY(0 <= settingDisplayRoles.indexOf(
-            InfoWidgetLayoutManager::RoleHomeZoneIcon));
-        QVERIFY(0 <= settingDisplayRoles.indexOf(
             InfoWidgetLayoutManager::RoleMcnIcon));
         QVERIFY(0 <= settingDisplayRoles.indexOf(
-            InfoWidgetLayoutManager::RoleActiveLineIcon));
-        QVERIFY(0 <= settingDisplayRoles.indexOf(
             InfoWidgetLayoutManager::RoleSatTextIcon));
         QVERIFY(0 <= settingDisplayRoles.indexOf(
-            InfoWidgetLayoutManager::RoleHomeZoneCheckBox));
-        QVERIFY(0 <= settingDisplayRoles.indexOf(
             InfoWidgetLayoutManager::RoleMcnCheckBox));
         QVERIFY(0 <= settingDisplayRoles.indexOf(
-            InfoWidgetLayoutManager::RoleActiveLineCheckBox));
-        QVERIFY(0 <= settingDisplayRoles.indexOf(
             InfoWidgetLayoutManager::RoleSatTextCheckBox));
         QVERIFY(0 <= settingDisplayRoles.indexOf(
             InfoWidgetLayoutManager::RoleOkButton));
         QVERIFY(0 <= settingDisplayRoles.indexOf(
+            InfoWidgetLayoutManager::RoleSpnLabel));
+        QVERIFY(0 <= settingDisplayRoles.indexOf(
+            InfoWidgetLayoutManager::RoleSpnIcon));
+        QVERIFY(0 <= settingDisplayRoles.indexOf(
+            InfoWidgetLayoutManager::RoleSpnCheckBox));
+
+        QVERIFY(0 <= settingDisplayRoles.indexOf(
             InfoWidgetLayoutManager::RoleSettingsContainer));
     }
     
@@ -280,34 +289,38 @@
         QVERIFY(0 <= infoDisplayRoles.indexOf(
             InfoWidgetLayoutManager::RoleContent));
         QVERIFY(0 <= infoDisplayRoles.indexOf(
-            InfoWidgetLayoutManager::RoleHomeZoneLabel));
+            InfoWidgetLayoutManager::RoleSpnLabel));
         QVERIFY(0 <= infoDisplayRoles.indexOf(
             InfoWidgetLayoutManager::RoleMcnMarqueeItem));
         QVERIFY(0 <= infoDisplayRoles.indexOf(
-            InfoWidgetLayoutManager::RoleActiveLineLabel));
+            InfoWidgetLayoutManager::RoleSatMarqueeItem));
         QVERIFY(0 <= infoDisplayRoles.indexOf(
-            InfoWidgetLayoutManager::RoleSatTextLabel));
-        QVERIFY(0 <= infoDisplayRoles.indexOf(
-            InfoWidgetLayoutManager::RoleHomeZoneIcon));
+            InfoWidgetLayoutManager::RoleSpnIcon));
         QVERIFY(0 <= infoDisplayRoles.indexOf(
             InfoWidgetLayoutManager::RoleMcnIcon));
         QVERIFY(0 <= infoDisplayRoles.indexOf(
-            InfoWidgetLayoutManager::RoleActiveLineIcon));
-        QVERIFY(0 <= infoDisplayRoles.indexOf(
             InfoWidgetLayoutManager::RoleSatTextIcon));
         QVERIFY(0 <= infoDisplayRoles.indexOf(
             InfoWidgetLayoutManager::RoleSettingsContainer));
     }
 }
 
-
 /*!
   UT_InfoWidgetLayoutManager::t_loadWidgets
  */
 void UT_InfoWidgetLayoutManager::t_loadWidgets()
 {
-    bool loadResult; 
-    //m_layoutManager->loadWidgets();
+    QObjectList list = QObjectList();
+    EXPECT(HbDocumentLoader::load)
+        .willOnce(invoke(this, &fillParams)).returns(list);
+    
+    const QList<InfoWidgetLayoutManager::LayoutItemRole> settingDisplayRoles =
+            m_layoutManager->widgetRoles(InfoWidgetLayoutManager::SettingsDisplay);
+    bool loadResult = m_layoutManager->loadWidgets(InfoWidgetLayoutManager::SettingsDisplay, 
+            settingDisplayRoles,
+            m_layoutManager->m_infoDisplayWidgets); 
+    
+    QVERIFY(!loadResult);
 }
 
 /*!
@@ -321,11 +334,16 @@
     QList<InfoWidgetLayoutManager::LayoutItemRole> 
         infoDisplayWidgetRoles = m_layoutManager->widgetRoles(
                 InfoWidgetLayoutManager::InfoDisplay); 
+    
+    infoDisplayWidgetRoles.append(InfoWidgetLayoutManager::RoleUndefined); 
+    infoDisplayWidgetRoles.append(InfoWidgetLayoutManager::RoleContainer);
+    
 
     foreach (currentRole, infoDisplayWidgetRoles) {
         currentWidget = m_layoutManager->loadWidget(*m_documentLoader,
                 InfoWidgetLayoutManager::InfoDisplay,
                 currentRole);
+        QVERIFY(!currentWidget);
     }
     
     QList<InfoWidgetLayoutManager::LayoutItemRole> 
@@ -336,8 +354,14 @@
         currentWidget = m_layoutManager->loadWidget(*m_documentLoader,
                 InfoWidgetLayoutManager::SettingsDisplay,
                 currentRole);
+        QVERIFY(!currentWidget);
     }
-
+    
+    currentWidget = m_layoutManager->loadWidget(*m_documentLoader,
+                (InfoWidgetLayoutManager::DisplayRole)2,
+                        InfoWidgetLayoutManager::RoleLastEnum );
+    
+    QVERIFY(!currentWidget);
 }
 
 /*!
@@ -347,9 +371,23 @@
 {
     fillCurrentWidgetsContainer();
     
-    m_layoutManager->getWidget(InfoWidgetLayoutManager::RoleUndefined);
-    m_layoutManager->getWidget(InfoWidgetLayoutManager::RoleContent);
-    m_layoutManager->getWidget(InfoWidgetLayoutManager::RoleLastEnum);
+    QVERIFY(!m_layoutManager->getWidget(InfoWidgetLayoutManager::RoleUndefined));
+    QVERIFY(m_layoutManager->getWidget(InfoWidgetLayoutManager::RoleContent));
+    QVERIFY(!m_layoutManager->getWidget(InfoWidgetLayoutManager::RoleLastEnum));
+}
+
+/*!
+  UT_InfoWidgetLayoutManager::t_removeWidget
+ */
+void UT_InfoWidgetLayoutManager::t_removeWidget()
+{
+    fillCurrentWidgetsContainer();
+        
+    m_layoutManager->removeWidget(InfoWidgetLayoutManager::RoleUndefined);
+    m_layoutManager->removeWidget(InfoWidgetLayoutManager::RoleContent);
+    m_layoutManager->removeWidget(InfoWidgetLayoutManager::RoleLastEnum);
+    
+    QVERIFY(verify());
 }
 
 
@@ -360,7 +398,7 @@
 {
     fillCurrentWidgetsContainer();
     
-    m_layoutManager->contentWidget();
+    QVERIFY(m_layoutManager->contentWidget());
 }
 
 
@@ -374,6 +412,8 @@
     m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleUndefined);
     m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleContent);
     m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleLastEnum);
+    
+    QVERIFY(verify());
 }
 
 
@@ -382,9 +422,9 @@
  */
 void UT_InfoWidgetLayoutManager::t_hideAll()
 {
-    fillCurrentWidgetsContainer();
+    m_layoutManager->hideAll();
     
-    m_layoutManager->hideAll();
+    QVERIFY(verify());
 }
 
 
@@ -393,14 +433,35 @@
  */
 void UT_InfoWidgetLayoutManager::t_showAll()
 {
-    fillCurrentWidgetsContainer();
+    fillCurrentWidgetsContainer();//times 2 HbDocumentLoader::load
+    m_layoutManager->showAll();
     
-    m_layoutManager->showAll();
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidgetLayoutManager::t_reloadWidgets
+ */
+void UT_InfoWidgetLayoutManager::t_reloadWidgets()
+{
+    QVERIFY(!m_layoutManager->reloadWidgets(InfoWidgetLayoutManager::SettingsDisplay));
+    QVERIFY(!m_layoutManager->reloadWidgets((InfoWidgetLayoutManager::DisplayRole)101));
 }
 
+/*!
+  UT_InfoWidgetLayoutManager::t_createObject
+ */
 void UT_InfoWidgetLayoutManager::t_createObject()
 {
-    m_documentLoader->createObject(QString(), QString());
+    QObject *object = m_documentLoader->createObject(QString(), QString());
+    QVERIFY(!object);
+    object = m_documentLoader->createObject(KMargueeItemClassName, QString());
+    QVERIFY(object);
+    delete object;
+    
+    //For destructor coverage
+    delete m_layoutManager->m_documentLoader;
+    m_layoutManager->m_documentLoader = NULL;
 }
 
 QTEST_MAIN_S60(UT_InfoWidgetLayoutManager)
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetlayoutmanager/ut_infowidgetlayoutmanager.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetlayoutmanager/ut_infowidgetlayoutmanager.pro	Mon May 03 12:31:11 2010 +0300
@@ -41,4 +41,5 @@
 
 # mocks needed for testing
 SOURCES += ../mocks/mock_hbdocumentloader.cpp
+SOURCES += ../mocks/mock_hbmarqueeitem.cpp
 RESOURCES = ../../infowidgetprovider.qrc
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetlinehandler/run_auto_tests_qt.bat	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetlinehandler/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -54,14 +54,19 @@
 set INSTRUMENT=TRUE
 set REMOVEINSTRUMENT=TRUE
 set DOMODULESTESTS=TRUE
-set ABLD_CALL=abld build winscw udeb -keepgoing
+set ABLD_CALL= -2comp  sbs.bat -c winscw_udeb --keepgoing
 set PATH_TO_DLL=\epoc32\release\winscw\udeb
 set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
 
 if not exist %PATH_TO_COVERAGE_DATA% (
 mkdir %PATH_TO_COVERAGE_DATA%
 )
 
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
 if [%1] EQU [] ( goto default )
 
 call :%1
@@ -132,8 +137,7 @@
 pushd .
 call cd %1
 call qmake
-call bldmake bldfiles
-call abld clean winscw udeb
+call sbs -c winscw_udeb clean
 if [%INSTRUMENT%] EQU [TRUE] (
 call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
 ) else (
@@ -153,6 +157,7 @@
 :RUNTESTS
 echo Running tests
 call %PATH_TO_DLL%\ut_infowidgetlinehandler.exe -dtextshell --
+move \epoc32\winscw\c\data\ut_infowidgetlinehandler.log %PATH_TO_RESULT%\ut_infowidgetlinehandler.log
 goto end
 
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetnetworkhandler/inc/ut_infowidgetnetworkhandler.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetnetworkhandler/inc/ut_infowidgetnetworkhandler.h	Mon May 03 12:31:11 2010 +0300
@@ -36,6 +36,7 @@
     
 public slots:
     void generateException();
+    void doLeaveL();
     
 private slots:
 
@@ -50,6 +51,12 @@
     void t_HandleNetworkMessageExceptionWhileEmittingSignal();
     void t_HandleNetworkError();
     void t_HandleNetworkErrorExceptionWhileEmittingSignal();
+    void t_resume();
+    void t_suspend();
+    void t_serviceProviderName();
+    void t_serviceProviderNameDisplayRequired();
+    void t_logCurrentInfo();
+    void t_createLeave();
     
 private:
     
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetnetworkhandler/run_auto_tests_qt.bat	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetnetworkhandler/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -54,14 +54,19 @@
 set INSTRUMENT=TRUE
 set REMOVEINSTRUMENT=TRUE
 set DOMODULESTESTS=TRUE
-set ABLD_CALL=abld build winscw udeb -keepgoing
+set ABLD_CALL= -2comp  sbs.bat -c winscw_udeb --keepgoing
 set PATH_TO_DLL=\epoc32\release\winscw\udeb
 set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
 
 if not exist %PATH_TO_COVERAGE_DATA% (
 mkdir %PATH_TO_COVERAGE_DATA%
 )
 
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
 if [%1] EQU [] ( goto default )
 
 call :%1
@@ -132,8 +137,7 @@
 pushd .
 call cd %1
 call qmake
-call bldmake bldfiles
-call abld clean winscw udeb
+call sbs -c winscw_udeb clean
 if [%INSTRUMENT%] EQU [TRUE] (
 call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
 ) else (
@@ -153,6 +157,7 @@
 :RUNTESTS
 echo Running tests
 call %PATH_TO_DLL%\ut_infowidgetnetworkhandler.exe -dtextshell --
+move \epoc32\winscw\c\data\ut_infowidgetnetworkhandler.log %PATH_TO_RESULT%\ut_infowidgetnetworkhandler.log
 goto end
 
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetnetworkhandler/src/ut_infowidgetnetworkhandler.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetnetworkhandler/src/ut_infowidgetnetworkhandler.cpp	Mon May 03 12:31:11 2010 +0300
@@ -16,9 +16,22 @@
 */
 #include <networkhandlingproxy.h>
 #include <nwhandlingengine.h>
+#include "qtestmains60.h"
+#include <xqsettingskey.h>
+#include <xqsettingsmanager.h>
 #include "ut_infowidgetnetworkhandler.h"
 #include "infowidgetnetworkhandler.h"
-#include "qtestmains60.h"
+
+#define EXPECT_EXCEPTION(statements)    \
+{                                       \
+    bool exceptionDetected = false;     \
+    try {                               \
+        statements                      \
+    } catch (...) {                     \
+        exceptionDetected = true;       \
+    }                                   \
+    QVERIFY(true == exceptionDetected); \
+}
 
 const QString KHomeZoneTextTag("HomeZoneText0");    // max length 13
 const TNWViagIndicatorType 
@@ -28,6 +41,7 @@
 const TNWMCNIndicatorType 
     KMcnIndicatorType = ENWMCNIndicatorTypeActive;
 
+
 /*!
   UT_InfoWidgetNetworkHandler::UT_InfoWidgetNetworkHandler
  */
@@ -48,6 +62,14 @@
 }
 
 /*!
+  UT_InfoWidgetNetworkHandler::doLeaveL
+ */
+void UT_InfoWidgetNetworkHandler::doLeaveL()
+{
+    User::Leave(KErrGeneral);
+}
+
+/*!
   UT_InfoWidgetNetworkHandler::generateException
  */
 void UT_InfoWidgetNetworkHandler::generateException()
@@ -62,6 +84,10 @@
 {
     initialize();
     
+    SmcDefaultValue<QString>::SetL("");
+    SmcDefaultValue<const QString & >::SetL("");
+    QVariant i(1);
+    EXPECT(XQSettingsManager::readItemValue).returns(i);
     EXPECT(CreateL).willOnce(invoke(this, &initializeNetworkInfo));
     m_networkHandler =  new InfoWidgetNetworkHandler();
     
@@ -76,8 +102,12 @@
 {
     reset();
     
+    QVariant i(1);
+    EXPECT(XQSettingsManager::readItemValue).returns(i);  
     delete m_networkHandler;
     m_networkHandler = 0;
+    
+    QVERIFY(verify());
 }
 
 /*!
@@ -85,6 +115,9 @@
  */
 void UT_InfoWidgetNetworkHandler::t_homeZoneTextTag()
 {
+    QVariant i(1);
+    EXPECT(XQSettingsManager::readItemValue).returns(i);
+    
     QVERIFY(m_networkHandler->homeZoneTextTag() == KHomeZoneTextTag);
 }
 
@@ -178,7 +211,7 @@
     m_networkHandler->HandleNetworkMessage(
         MNWMessageObserver::ENWMessageStopProtocolStackRequestCompleteFail);
     
-    const int KExpectedNumOfSignalEmissions = 1;
+    const int KExpectedNumOfSignalEmissions = 2;
     QCOMPARE(spy.count(), KExpectedNumOfSignalEmissions);
     
     const QList<QVariant> &arguments = spy.at(0);
@@ -197,6 +230,8 @@
     
     m_networkHandler->HandleNetworkMessage(
         MNWMessageObserver::ENWMessageCurrentCellInfoMessage);
+    
+    QVERIFY(verify());
 }
 
 
@@ -210,11 +245,15 @@
     qRegisterMetaType<MNWMessageObserver::TNWOperation>
         ("MNWMessageObserver::TNWOperation");
     
-    MNWMessageObserver::TNWOperation operation = MNWMessageObserver::ENWNone;
     const int errorCode = -4;
+    MNWMessageObserver::TNWOperation operation = 
+            MNWMessageObserver::ENWGetServiceProviderName;
+    m_networkHandler->HandleNetworkError(operation, errorCode);
+        
+    operation = MNWMessageObserver::ENWNone;
     m_networkHandler->HandleNetworkError(operation, errorCode);
     
-    const int KExpectedNumOfSignalEmissions = 1;
+    const int KExpectedNumOfSignalEmissions = 2;
     QCOMPARE(spy.count(), KExpectedNumOfSignalEmissions);
     const QList<QVariant> &arguments = spy.at(0);
     QCOMPARE(arguments.count(), 2);
@@ -238,6 +277,8 @@
     MNWMessageObserver::TNWOperation operation = MNWMessageObserver::ENWNone;
     const int errorCode = -4;
     m_networkHandler->HandleNetworkError(operation, errorCode);
+    
+    QVERIFY(verify());
 }
 
 
@@ -254,4 +295,70 @@
     aTNWInfo.iMCNIndicatorType = KMcnIndicatorType;
 }
 
+/*!
+  UT_InfoWidgetNetworkHandler::t_suspend
+ */
+void UT_InfoWidgetNetworkHandler::t_suspend()
+{
+    QVariant i(0);
+    EXPECT(XQSettingsManager::readItemValue).returns(i);
+    m_networkHandler->suspend();
+    
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidgetNetworkHandler::t_resume
+ */
+void UT_InfoWidgetNetworkHandler::t_resume()
+{
+    QVariant i(0);
+    bool b = true;
+    EXPECT(XQSettingsManager::readItemValue).returns(i);  
+    EXPECT(XQSettingsManager::writeItemValue).returns(b);
+    m_networkHandler->resume();
+    
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidgetNetworkHandler::t_serviceProviderName
+ */
+void UT_InfoWidgetNetworkHandler::t_serviceProviderName()
+{
+    QString s = "";
+    QCOMPARE(m_networkHandler->serviceProviderName(), s);
+}
+
+/*!
+  UT_InfoWidgetNetworkHandler::t_serviceProviderNameDisplayRequired
+ */
+void UT_InfoWidgetNetworkHandler::t_serviceProviderNameDisplayRequired()
+{
+    QCOMPARE(m_networkHandler->serviceProviderNameDisplayRequired(),true);    
+}
+
+/*!
+  UT_InfoWidgetNetworkHandler::t_logCurrentInfo
+ */
+void UT_InfoWidgetNetworkHandler::t_logCurrentInfo()
+{
+    m_networkHandler->logCurrentInfo();
+    
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidgetNetworkHandler::t_createLeave
+ */
+void UT_InfoWidgetNetworkHandler::t_createLeave()
+{
+    QVariant i(1);
+    EXPECT(XQSettingsManager::readItemValue).returns(i);
+    EXPECT(CreateL)
+            .willOnce(invokeWithoutArguments(this, &doLeaveL));
+    
+    EXPECT_EXCEPTION(InfoWidgetNetworkHandler * p = new InfoWidgetNetworkHandler(););
+}
+
 QTEST_MAIN_S60(UT_InfoWidgetNetworkHandler)
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetnetworkhandler/ut_infowidgetnetworkhandler.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetnetworkhandler/ut_infowidgetnetworkhandler.pro	Mon May 03 12:31:11 2010 +0300
@@ -23,6 +23,7 @@
 INCLUDEPATH += ../common
 INCLUDEPATH += ../../inc/
 INCLUDEPATH += ../../infowidget/inc/
+DEFINES += XQSETTINGSMANAGER_NO_LIBRARY
 
 QT -= gui
 QT += testlib
@@ -45,3 +46,8 @@
 
 # mocks needed for testing
 SOURCES += ../mocks/mock_networkhandlingproxy.cpp
+
+HEADERS += /epoc32/include/mw/xqsettingskey.h \
+           /epoc32/include/mw/xqsettingsmanager.h
+SOURCES += ../mocks/mock_xqsettingskey.cpp
+SOURCES += ../mocks/mock_xqsettingsmanager.cpp
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetpreferences/inc/ut_infowidgetpreferences.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetpreferences/inc/ut_infowidgetpreferences.h	Mon May 03 12:31:11 2010 +0300
@@ -37,11 +37,13 @@
     void init();
     void cleanup();
 
-    void t_loadPreferences();
     void t_storePreferences();
     void t_preference();
     void t_setPreference();
     void t_visibleItemCount();
+    void t_isPreferenceSet();
+    void t_preferences();
+    void t_preferenceNames();
     
 private:
     
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetpreferences/run_auto_tests_qt.bat	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetpreferences/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -54,14 +54,19 @@
 set INSTRUMENT=TRUE
 set REMOVEINSTRUMENT=TRUE
 set DOMODULESTESTS=TRUE
-set ABLD_CALL=abld build winscw udeb -keepgoing
+set ABLD_CALL= -2comp  sbs.bat -c winscw_udeb --keepgoing
 set PATH_TO_DLL=\epoc32\release\winscw\udeb
 set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
 
 if not exist %PATH_TO_COVERAGE_DATA% (
 mkdir %PATH_TO_COVERAGE_DATA%
 )
 
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
 if [%1] EQU [] ( goto default )
 
 call :%1
@@ -132,8 +137,7 @@
 pushd .
 call cd %1
 call qmake
-call bldmake bldfiles
-call abld clean winscw udeb
+call sbs -c winscw_udeb clean
 if [%INSTRUMENT%] EQU [TRUE] (
 call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
 ) else (
@@ -153,6 +157,7 @@
 :RUNTESTS
 echo Running tests
 call %PATH_TO_DLL%\ut_infowidgetpreferences.exe -dtextshell --
+move \epoc32\winscw\c\data\ut_infowidgetpreferences.log %PATH_TO_RESULT%\ut_infowidgetpreferences.log
 goto end
 
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetpreferences/src/ut_infowidgetpreferences.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetpreferences/src/ut_infowidgetpreferences.cpp	Mon May 03 12:31:11 2010 +0300
@@ -15,6 +15,7 @@
 *
 */
 #include "ut_infowidgetpreferences.h"
+#define private public
 #include "infowidgetpreferences.h"
 #include "qtestmains60.h"
 
@@ -64,20 +65,17 @@
 
 
 /*!
-  UT_InfoWidgetPreferences::t_loadPreferences
- */
-void UT_InfoWidgetPreferences::t_loadPreferences()
-{
-    m_infoWidgetPreferences->loadPreferences();
-}
-
-
-/*!
   UT_InfoWidgetPreferences::t_storePreferences
  */
 void UT_InfoWidgetPreferences::t_storePreferences()
 {
     m_infoWidgetPreferences->storePreferences();
+    
+    m_infoWidgetPreferences->m_options = (InfoWidgetPreferences::Option)1;
+    m_infoWidgetPreferences->m_validatedOptions = (InfoWidgetPreferences::Option)2;
+    m_infoWidgetPreferences->storePreferences();
+            
+    QVERIFY(verify());
 }
 
 
@@ -151,8 +149,41 @@
         InfoWidgetPreferences::DisplayActiveLine, DISPLAY_SETTING_ON);
     m_infoWidgetPreferences->setPreference(
         InfoWidgetPreferences::DisplaySatText, DISPLAY_SETTING_ON);
+    m_infoWidgetPreferences->setPreference(
+        InfoWidgetPreferences::DisplaySpn, DISPLAY_SETTING_ON);
     visibleItems = m_infoWidgetPreferences->visibleItemCount();
-    QVERIFY(visibleItems == 4);
+    QVERIFY(visibleItems == 5);
+}
+
+/*!
+  UT_InfoWidgetPreferences::t_isPreferenceSet
+ */
+void UT_InfoWidgetPreferences::t_isPreferenceSet()
+{
+    m_infoWidgetPreferences->isPreferenceSet
+        (InfoWidgetPreferences::DisplayHomeZone);
+            
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidgetPreferences::t_preferences
+ */
+void UT_InfoWidgetPreferences::t_preferences()
+{
+    m_infoWidgetPreferences->preferences();
+                
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidgetPreferences::t_preferenceNames
+ */
+void UT_InfoWidgetPreferences::t_preferenceNames()
+{
+    m_infoWidgetPreferences->preferenceNames();
+                
+    QVERIFY(verify());
 }
 
 QTEST_MAIN_S60(UT_InfoWidgetPreferences)
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetprovider/inc/ut_infowidgetprovider.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetprovider/inc/ut_infowidgetprovider.h	Mon May 03 12:31:11 2010 +0300
@@ -41,10 +41,6 @@
     void cleanup();
     void t_createInstance(); 
     
-private:
-    
-    InfoWidgetProvider *m_infoWidgetProvider;
-
 };
 
 #endif // UT_INFOWIDGET_H
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetprovider/run_auto_tests_qt.bat	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetprovider/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -54,14 +54,19 @@
 set INSTRUMENT=TRUE
 set REMOVEINSTRUMENT=TRUE
 set DOMODULESTESTS=TRUE
-set ABLD_CALL=abld build winscw udeb -keepgoing
+set ABLD_CALL= -2comp  sbs.bat -c winscw_udeb --keepgoing
 set PATH_TO_DLL=\epoc32\release\winscw\udeb
 set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
 
 if not exist %PATH_TO_COVERAGE_DATA% (
 mkdir %PATH_TO_COVERAGE_DATA%
 )
 
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
 if [%1] EQU [] ( goto default )
 
 call :%1
@@ -132,8 +137,7 @@
 pushd .
 call cd %1
 call qmake
-call bldmake bldfiles
-call abld clean winscw udeb
+call sbs -c winscw_udeb clean
 if [%INSTRUMENT%] EQU [TRUE] (
 call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
 ) else (
@@ -153,6 +157,7 @@
 :RUNTESTS
 echo Running tests
 call %PATH_TO_DLL%\ut_infowidgetprovider.exe -dtextshell --
+move \epoc32\winscw\c\data\ut_infowidgetprovider.log %PATH_TO_RESULT%\ut_infowidgetprovider.log
 goto end
 
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetprovider/src/ut_infowidgetprovider.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetprovider/src/ut_infowidgetprovider.cpp	Mon May 03 12:31:11 2010 +0300
@@ -23,6 +23,8 @@
 #include <qservicecontext.h>
 #include <QString>
 
+Q_EXTERN_C const char * qt_plugin_query_verification_data();
+Q_EXTERN_C ::QObject *  qt_plugin_instance();
 
 class MyQServiceInterfaceDescriptor : public QServiceInterfaceDescriptor
 {}; 
@@ -30,16 +32,22 @@
 class MyQServiceContext : public QServiceContext
 {
 public: 
-    virtual void notify( ContextType type, const QVariant& variant){};
+    virtual void notify( ContextType type, const QVariant& variant){
+    Q_UNUSED(type)
+    Q_UNUSED(variant)
+    };
 }; 
 
 class MyQAbstractSecuritySession : public QAbstractSecuritySession
 {
 public: 
-    virtual bool isAllowed(const QStringList& capabilityList){return true;};
+    virtual bool isAllowed(const QStringList& capabilityList){
+    Q_UNUSED(capabilityList)
+    return true;
+    };
 }; 
 
-QString KValidInfoWidgetInterfaceName("com.nokia.homescreen.widget"); 
+QString KValidInfoWidgetInterfaceName("com.nokia.IHomeScreenWidget"); 
 QString KInvalidInfoWidgetInterfaceName("com");
 
 
@@ -47,10 +55,8 @@
   UT_InfoWidgetProvider::UT_InfoWidgetProvider
  */
 UT_InfoWidgetProvider::UT_InfoWidgetProvider() 
-    : 
-    m_infoWidgetProvider(0)
 {
-    
+    const char * verificationData = qt_plugin_query_verification_data();
 }
 
 
@@ -59,7 +65,7 @@
  */
 UT_InfoWidgetProvider::~UT_InfoWidgetProvider()
 {
-    delete m_infoWidgetProvider;
+
 }
 
 
@@ -69,9 +75,7 @@
 void UT_InfoWidgetProvider::init()
 {
     initialize();
-    
-    m_infoWidgetProvider = new InfoWidgetProvider();
-    
+
     QVERIFY(verify());
 }
 
@@ -83,8 +87,7 @@
 {
     reset();
     
-    delete m_infoWidgetProvider;
-    m_infoWidgetProvider = 0;
+    delete (InfoWidgetProvider*)qt_plugin_instance();
 }
 
 
@@ -94,25 +97,23 @@
     MyQServiceContext myQServiceContext; 
     MyQAbstractSecuritySession myAbstractSecuritySession; 
     
-    QObject *instanceValue = NULL; 
-
+    QObject *instanceValue = NULL;
+    InfoWidgetProvider* p = (InfoWidgetProvider*)qt_plugin_instance();
     // Test: instance creation with valid interface name
     expect("QtMobility::QServiceInterfaceDescriptor::interfaceName").returns(KValidInfoWidgetInterfaceName);
     expect("InfoWidget::InfoWidget"); 
-    instanceValue = m_infoWidgetProvider->createInstance(myServiceInterfaceDescriptor,
+    instanceValue = p->createInstance(myServiceInterfaceDescriptor,
                                              &myQServiceContext,
                                              &myAbstractSecuritySession);
     Q_ASSERT(instanceValue); 
     
     // Test: instance creation with invalid interface name
     expect("QtMobility::QServiceInterfaceDescriptor::interfaceName").returns(KInvalidInfoWidgetInterfaceName);
-    instanceValue = m_infoWidgetProvider->createInstance(myServiceInterfaceDescriptor,
+    instanceValue = p->createInstance(myServiceInterfaceDescriptor,
                                              &myQServiceContext,
                                              &myAbstractSecuritySession);
     Q_ASSERT(instanceValue == NULL); 
-    
 
 }
 
-
 QTEST_MAIN_S60(UT_InfoWidgetProvider)
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandler/inc/ut_infowidgetsathandler.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandler/inc/ut_infowidgetsathandler.h	Mon May 03 12:31:11 2010 +0300
@@ -41,6 +41,10 @@
     void t_setSatDisplayText();
     void t_logCurrentInfo(); 
     
+    void t_connect();
+    void t_handleIdleModeTxtMessage();
+    void t_handleSatError();
+    
 private:
     
     InfoWidgetSatHandler *m_satHandler;
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandler/run_auto_tests_qt.bat	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandler/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -54,14 +54,19 @@
 set INSTRUMENT=TRUE
 set REMOVEINSTRUMENT=TRUE
 set DOMODULESTESTS=TRUE
-set ABLD_CALL=abld build winscw udeb -keepgoing
+set ABLD_CALL= -2comp  sbs.bat -c winscw_udeb --keepgoing
 set PATH_TO_DLL=\epoc32\release\winscw\udeb
 set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
 
 if not exist %PATH_TO_COVERAGE_DATA% (
 mkdir %PATH_TO_COVERAGE_DATA%
 )
 
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
 if [%1] EQU [] ( goto default )
 
 call :%1
@@ -132,8 +137,7 @@
 pushd .
 call cd %1
 call qmake
-call bldmake bldfiles
-call abld clean winscw udeb
+call sbs -c winscw_udeb clean
 if [%INSTRUMENT%] EQU [TRUE] (
 call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
 ) else (
@@ -153,6 +157,9 @@
 :RUNTESTS
 echo Running tests
 call %PATH_TO_DLL%\ut_infowidgetsathandler.exe -dtextshell --
+
+move \epoc32\winscw\c\data\ut_infowidgetsathandler.log %PATH_TO_RESULT%\ut_infowidgetsathandler.log
+
 goto end
 
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandler/src/ut_infowidgetsathandler.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandler/src/ut_infowidgetsathandler.cpp	Mon May 03 12:31:11 2010 +0300
@@ -15,6 +15,7 @@
 *
 */
 #include "ut_infowidgetsathandler.h"
+#define private public
 #include "infowidgetsathandler.h"
 #include "qtestmains60.h"
 
@@ -67,8 +68,9 @@
  */
 void UT_InfoWidgetSatHandler::t_satDisplayText()
 {
-    const QString& satDisplayText = m_satHandler->satDisplayText();
-    QVERIFY(satDisplayText == QString("SAT DISPLAY TEXT"));
+    QString satDisplayText("satDisplayText");
+    m_satHandler->setSatDisplayText(satDisplayText);
+    QVERIFY(satDisplayText == m_satHandler->satDisplayText());
 }
 
 
@@ -90,6 +92,41 @@
 void UT_InfoWidgetSatHandler::t_logCurrentInfo()
 {
     m_satHandler->logCurrentInfo();
+    
+    QVERIFY(verify());
 }
 
+void UT_InfoWidgetSatHandler::t_connect()
+{
+    //}else if (!connect && m_connected){
+    m_satHandler->m_connected = 1;
+    m_satHandler->connect(0);
+    
+        
+    m_satHandler->m_connected = 1;
+    m_satHandler->connect(1);
+    
+    //if(connect && !m_connected){
+    m_satHandler->m_connected = 0;
+    m_satHandler->connect(1);
+    
+    QVERIFY(verify());
+}
+void UT_InfoWidgetSatHandler::t_handleIdleModeTxtMessage()
+{
+    m_satHandler->m_connected = 0;
+    m_satHandler->handleIdleModeTxtMessage(0);
+    m_satHandler->m_connected = 1;
+    m_satHandler->handleIdleModeTxtMessage(0);
+    
+    QVERIFY(verify());
+}
+void UT_InfoWidgetSatHandler::t_handleSatError()
+{
+    m_satHandler->handleSatError(1,1);
+    
+    QVERIFY(verify());
+}
+    
+
 QTEST_MAIN_S60(UT_InfoWidgetSatHandler)
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandler/ut_infowidgetsathandler.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandler/ut_infowidgetsathandler.pro	Mon May 03 12:31:11 2010 +0300
@@ -41,7 +41,9 @@
 
 # code to be tested
 HEADERS += ../../infowidget/inc/infowidgetsathandler.h
-SOURCES += ../../infowidget/src/infowidgetsathandler.cpp
+SOURCES += ../../infowidget/src/infowidgetsathandler.cpp 
 
 # mocks needed for testing
-#SOURCES += ../mocks/mock_networkhandlingproxy.cpp
+SOURCES += ../mocks/mock_rsatservice.cpp  \
+           ../mocks/mock_RSatSession.cpp  \
+           ../mocks/mock_infowidgetsathandlerprivate.cpp
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandlerprivate/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,194 @@
+rem
+rem Copyright (c) 2009 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
+
+@echo off
+setlocal
+goto :startup 
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function DEFAULT
+::
+:: Modify this function
+::  - TESTED_SRC can be changed to match tested code.
+::    Specifies path from testcode group directory to
+::    tested code
+::  - Add test directories to be runned
+::    ie. "call :build ut_projectdirectory" or use
+::    "for /f %%a in ('dir /b ut_*') do call :build %%a"
+::    which compiles, instruments and runs all test directories
+::    starting with "ut_".
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:DEFAULT
+set TESTED_SRC=..\..\infowidget\src\*.cpp
+
+for /f %%a in ('dir /b ut_*') do call :build %%a
+if [%DOMODULESTESTS%] EQU [TRUE] (
+for /f %%a in ('dir /b mt_*') do call :build %%a
+)
+
+call :finish
+goto :END
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function STARTUP
+::
+:: Initializing script
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:STARTUP
+
+set BUILDTESTS=TRUE
+set RUNTESTS=TRUE
+set INSTRUMENT=TRUE
+set REMOVEINSTRUMENT=TRUE
+set DOMODULESTESTS=TRUE
+set ABLD_CALL= -2comp  sbs.bat -c winscw_udeb --keepgoing
+set PATH_TO_DLL=\epoc32\release\winscw\udeb
+set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
+
+if not exist %PATH_TO_COVERAGE_DATA% (
+mkdir %PATH_TO_COVERAGE_DATA%
+)
+
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
+if [%1] EQU [] ( goto default )
+
+call :%1
+call :%2
+call :%3
+call :%4
+call :%5
+echo Running tests = %RUNTESTS%
+echo Instrumenting tests = %INSTRUMENT%
+goto default
+
+:/NOCLEANUP
+set REMOVEINSTRUMENT=FALSE
+goto end
+
+:/NORUN
+set RUNTESTS=FALSE
+set REMOVEINSTRUMENT=FALSE
+goto end
+
+:/NOINSTRUMENT
+set INSTRUMENT=FALSE
+goto end
+
+:/NOBUILD
+set BUILDTESTS=FALSE
+goto end
+
+:/ONLYUNITTESTS
+set DOMODULESTESTS=FALSE
+goto end
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function FINISH
+::
+:: Finishes run_auto_tests.bat
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:FINISH
+
+if [%RUNTESTS%] EQU [TRUE] (
+call :runtests
+)
+
+if [%INSTRUMENT%] EQU [TRUE] (
+call :calculatecoverage
+)
+
+if [%REMOVEINSTRUMENT%] EQU [TRUE] (
+call :removecoverage
+)
+goto end
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function BUILD
+::    param directory
+::
+:: builds test from given directory
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:BUILD
+setlocal
+if [%BUILDTESTS%] EQU [FALSE] ( goto end )
+echo Building %1
+if not exist %1 ( 
+echo %1 Not found! 
+goto end
+)
+
+pushd .
+call cd %1
+call qmake
+call sbs -c winscw_udeb clean
+if [%INSTRUMENT%] EQU [TRUE] (
+call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
+) else (
+call %ABLD_CALL%
+)
+
+popd
+endlocal
+goto end
+
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function RUNTESTS
+::
+:: NOTE! Function assumes that test binary is named according to test directory.
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:RUNTESTS
+echo Running tests
+call %PATH_TO_DLL%\ut_infowidgetsathandlerprivate.exe -dtextshell --
+
+move \epoc32\winscw\c\data\ut_infowidgetsathandlerprivate.log %PATH_TO_RESULT%\ut_infowidgetsathandlerprivate.log
+
+goto end
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function CALCULATECOVERAGE
+::
+:: Calculates test coverage. Generates html
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:CALCULATECOVERAGE
+echo Calculating coverage
+ctcpost %PATH_TO_COVERAGE_DATA%\*.sym | ctcmerge -i - -o profile.txt
+call ctc2html -t 70 -i profile.txt -o \coverage_result -nsb
+goto end
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function REMOVECOVERAGE
+::
+:: Removes data from coverage directory
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:REMOVECOVERAGE
+echo Removing deleting coverage data
+call del %PATH_TO_COVERAGE_DATA%\*.sym
+call del %PATH_TO_COVERAGE_DATA%\*.dat
+call del profile.txt
+goto end
+
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: function END
+::
+:: Prints done
+::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:END
+echo Done!
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandlerprivate/src/ut_infowidgetsathandlerprivate.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,221 @@
+/*
+* 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:
+*
+*/
+
+#include "ut_infowidgetsathandlerprivate.h"
+#define private public
+#include "infowidgetsathandlerprivate.h"
+#include "infowidgetsathandler.h"
+#include "infowidgetlogging.h"
+#include "qtestmains60.h"
+
+void SimulateLeaveL()
+{
+    User::Leave(KErrGeneral);
+}
+
+void FillData( HBufC * aText,
+        RSatService::TSatIconQualifier & aIconQualifier,
+        TUint8 & aRecordNumber)
+{
+    _LIT(KText,"Idle Text");
+    TPtr p(aText->Des());
+    p.Copy(KText);
+    aIconQualifier=RSatService::ESatIconNotSelfExplanatory;
+    aRecordNumber=1;
+}
+
+void FillDataNoIcon( HBufC * aText,
+        RSatService::TSatIconQualifier & aIconQualifier,
+        TUint8 & aRecordNumber)
+{
+    Q_UNUSED(aIconQualifier);
+    Q_UNUSED(aRecordNumber);
+    _LIT(KText,"Idle Text");
+    TPtr p(aText->Des());
+    p.Copy(KText);
+}
+
+void FillDataSelfExplIcon( HBufC * aText,
+        RSatService::TSatIconQualifier & aIconQualifier,
+        TUint8 & aRecordNumber)
+{
+    Q_UNUSED(aText);
+    aIconQualifier=RSatService::ESatIconSelfExplanatory;
+    aRecordNumber=1;
+}
+
+/*!
+  UT_InfoWidgetSatHandlerPrivate ::UT_InfoWidgetSatHandlerPrivate 
+ */
+UT_InfoWidgetSatHandlerPrivate::UT_InfoWidgetSatHandlerPrivate () //:
+{
+    DPRINT << "IN";
+    
+    m_satHandler = 0;
+    m_iwSatHandler = 0;
+    
+    DPRINT << "OUT";
+}
+
+/*!
+  UT_InfoWidgetSatHandlerPrivate ::~UT_InfoWidgetSatHandlerPrivate 
+ */
+UT_InfoWidgetSatHandlerPrivate::~UT_InfoWidgetSatHandlerPrivate ()
+{
+    DPRINT << "IN";
+    
+    delete m_satHandler;
+    delete m_iwSatHandler;
+    
+    DPRINT << "OUT";
+}
+
+/*!
+  UT_InfoWidgetSatHandlerPrivate ::init
+ */
+void UT_InfoWidgetSatHandlerPrivate::init()
+{
+    DPRINT << "IN";
+    
+    initialize();
+    m_iwSatHandler = new InfoWidgetSatHandler;
+    m_satHandler =  new InfoWidgetSatHandlerPrivate( m_iwSatHandler, m_satService);
+    
+    QVERIFY(verify());
+
+    DPRINT << "OUT";
+}
+
+/*!
+  UT_InfoWidgetSatHandlerPrivate ::cleanup
+ */
+void UT_InfoWidgetSatHandlerPrivate::cleanup()
+{
+    DPRINT << "IN";
+    
+    reset();
+    delete m_satHandler;
+    delete m_iwSatHandler;
+
+    DPRINT << "OUT";
+}
+
+/*!
+  UT_InfoWidgetSatHandlerPrivate::t_connect
+ */
+void UT_InfoWidgetSatHandlerPrivate::t_connect()
+{
+    DPRINT << "IN";
+    
+    expect("RSatSession::ConnectL");
+    expect("RSatService::OpenL");
+    m_satHandler->connect();
+     
+    expect("RSatSession::ConnectL")
+        .willOnce(invokeWithoutArguments(SimulateLeaveL));
+    m_satHandler->connect();
+    
+    expect("RSatService::OpenL")
+        .willOnce(invokeWithoutArguments(SimulateLeaveL));
+    m_satHandler->connect();
+
+    QVERIFY(verify());
+
+    DPRINT << "OUT";
+}
+
+/*!
+  UT_InfoWidgetSatHandlerPrivate::t_disconnect
+ */
+void UT_InfoWidgetSatHandlerPrivate::t_disconnect()
+{
+    DPRINT << "IN";
+    
+    m_satHandler->disconnect();
+    QVERIFY(verify());
+
+    DPRINT << "OUT";
+}
+
+/*!
+  UT_InfoWidgetSatHandlerPrivate::t_startObserving
+ */
+void UT_InfoWidgetSatHandlerPrivate::t_startObserving()
+{
+    DPRINT << "IN";
+    
+    int i = KErrGeneral;
+    expect("RSatService::NotifySetupIdleModeTextChange").returns(i);
+    expect("RSatService::GetSetupIdleModeTextL")
+        .willOnce(invoke(FillData));
+    m_satHandler->startObserving();
+    
+    expect("RSatService::NotifySetupIdleModeTextChange").returns(i);
+    expect("RSatService::GetSetupIdleModeTextL")
+        .willOnce(invoke(FillDataNoIcon));
+    m_satHandler->startObserving();
+    
+    expect("RSatService::NotifySetupIdleModeTextChange").returns(i);
+    expect("RSatService::GetSetupIdleModeTextL")
+        .willOnce(invoke(FillDataSelfExplIcon));
+    m_satHandler->startObserving();
+    
+    expect("RSatService::GetSetupIdleModeTextL")
+        .willOnce(invokeWithoutArguments(SimulateLeaveL));
+    m_satHandler->startObserving();
+    
+    QVERIFY(verify());
+
+    DPRINT << "OUT";
+}
+
+/*!
+  UT_InfoWidgetSatHandlerPrivate::t_runL
+ */
+void UT_InfoWidgetSatHandlerPrivate::t_runL()
+{
+    DPRINT << "IN";
+    
+    int i = 1;
+    expect("RSatService::GetSetupIdleModeTextL")
+          .willOnce(invoke(FillData));
+    expect("RSatService::NotifySetupIdleModeTextChange").returns(i);
+    m_satHandler->RunL();
+    
+    m_satHandler->iStatus = KErrGeneral;
+    expect("RSatService::NotifySetupIdleModeTextChange").returns(i);
+    m_satHandler->RunL();
+        
+    QVERIFY(verify());
+
+    DPRINT << "OUT";
+}
+
+/*!
+  UT_InfoWidgetSatHandlerPrivate::t_doCancel
+ */
+void UT_InfoWidgetSatHandlerPrivate::t_doCancel()
+{    
+    DPRINT << "IN";
+
+    m_satHandler->DoCancel();
+    QVERIFY(verify());
+
+    DPRINT << "OUT";
+}
+
+QTEST_MAIN_S60(UT_InfoWidgetSatHandlerPrivate )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/tsrc/ut_infowidgetsathandlerprivate/ut_infowidgetsathandlerprivate.pro	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,51 @@
+#
+# 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: Project file for building unit test component
+#
+#
+
+CONFIG += qtestlib hb
+TEMPLATE = app
+TARGET = 
+DEPENDPATH  += . ../../infowidget/src
+INCLUDEPATH += .
+INCLUDEPATH += ../common
+INCLUDEPATH += ../../inc/
+INCLUDEPATH += ../../infowidget/inc/
+
+QT -= gui
+QT += testlib
+
+symbian: {
+  CONFIG += no_icon
+  INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+  LIBS += -lmocklib 		\
+          -lsymbianmock 	\
+          -lcpframework
+}
+    
+# test code
+HEADERS += ./inc/ut_infowidgetsathandlerprivate.h
+SOURCES += ./src/ut_infowidgetsathandlerprivate.cpp
+
+# code to be tested
+HEADERS += ../../infowidget/inc/infowidgetsathandler.h
+HEADERS += ../../infowidget/inc/infowidgetsathandlerprivate.h 
+
+SOURCES += ../../infowidget/src/infowidgetsathandlerprivate.cpp
+
+# mocks needed for testing
+SOURCES += ../mocks/mock_rsatservice.cpp  \
+           ../mocks/mock_RSatSession.cpp  \
+           ../mocks/mock_infowidgetsathandler.cpp
--- a/phoneplugins/infowidgetplugin/infowidgetproviderinstaller/infowidgetproviderinstaller.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetproviderinstaller/infowidgetproviderinstaller.cpp	Mon May 03 12:31:11 2010 +0300
@@ -11,7 +11,8 @@
 *
 * Contributors:
 *
-* Description:  Example of home screen widget
+* Description:  Infowidgetplugin service manager 
+* registration handler
 *
 */
 
--- a/phoneplugins/infowidgetplugin/infowidgetproviderinstaller/infowidgetproviderinstaller.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetproviderinstaller/infowidgetproviderinstaller.pro	Mon May 03 12:31:11 2010 +0300
@@ -27,6 +27,7 @@
 symbian {    
     load(data_caging_paths)
     TARGET.CAPABILITY = ALL -TCB
+    TARGET.UID3 = 0x2002EA1E
     BLD_INF_RULES.prj_exports +=  \
      "$${LITERAL_HASH}include <platform_paths.hrh>" \
      "./rom/infowidgetproviderinstaller.iby    CORE_APP_LAYER_IBY_EXPORT_PATH(infowidgetproviderinstaller.iby)" 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/phoneindicatorplugin/inc/api_headers.pri	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,18 @@
+#
+# 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: 
+#
+
+PHONEINDICATORPLUGIN_API_HEADERS = \
+    ./inc/phoneindicators.h
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/phoneindicatorplugin/inc/phoneindicatorinterface.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,54 @@
+/*
+ * 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 PHONEINDICATORINTERFACE_H
+#define PHONEINDICATORINTERFACE_H
+
+#include <QObject>
+#include <QString>
+#include <QVariant>
+#include <hbindicatorinterface.h>
+#include "phoneindicators.h"
+
+class PhoneIndicatorInterface : public HbIndicatorInterface
+{
+public:
+    PhoneIndicatorInterface(const QString &indicatorType,
+                                 int typeIndex,
+                                 Interaction interaction);
+
+    ~PhoneIndicatorInterface();
+
+    bool handleInteraction(InteractionType type);
+    QVariant indicatorData(int role) const;
+
+protected:
+
+    bool handleClientRequest(RequestType type, const QVariant &parameter);
+
+private:
+
+    int m_typeIndex;
+    Interaction m_interaction;
+    QString m_primaryText;
+    QString m_secondaryText;
+    QString m_icon;
+    QString m_icon2;
+    QVariant m_parameter;
+};
+
+#endif // PHONEINDICATORINTERFACE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/phoneindicatorplugin/inc/phoneindicatorplugin.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,46 @@
+/*
+ * 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 PHONEINDICATORPLUGIN_H
+#define PHONEINDICATORPLUGIN_H
+
+#include <hbindicatorplugininterface.h>
+#include <hbindicatorinterface.h>
+
+class PhoneIndicatorPlugin : public QObject, public HbIndicatorPluginInterface
+{
+Q_OBJECT
+Q_INTERFACES(HbIndicatorPluginInterface)
+public:
+    PhoneIndicatorPlugin();
+    ~PhoneIndicatorPlugin();
+
+    QStringList indicatorTypes() const;
+    bool accessAllowed(const QString &indicatorType,
+                       const QVariantMap &securityInfo) const;
+    HbIndicatorInterface* createIndicator(const QString &indicatorType);
+    int error() const;
+private:
+    int typeIndex(const QString &indicatorType) const;
+
+private:
+    Q_DISABLE_COPY(PhoneIndicatorPlugin)
+    int m_error;
+    QStringList m_indicatorTypes;
+};
+
+#endif // PHONEINDICATORPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/phoneindicatorplugin/inc/phoneindicators.h	Mon May 03 12:31:11 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:  
+ *
+ */
+
+#ifndef PHONEINDICATORS_H
+#define PHONEINDICATORS_H
+
+#include <hbindicatorinterface.h>
+#include <QObject>
+#include <QString>
+
+
+static const char *IndicatorNameTemplate = "PhoneIndicator_%1";
+
+enum Interaction
+{
+    InteractionNone,
+    OpenMissedCallView,
+    Deactivate
+};
+
+enum PhoneIndicatorTypes
+{
+    PhoneMissedCallIndicator = 0
+};
+
+inline QString indicatorName(int indicatorType) {
+    return QString(IndicatorNameTemplate).arg(indicatorType);
+}
+
+struct PhoneIndicatorInfo
+{
+    const char *icon;
+    const char *primaryText;
+    const char *secondaryText;
+    HbIndicatorInterface::GroupPriority priority;
+    Interaction interaction;
+};
+
+Q_DECLARE_METATYPE(PhoneIndicatorInfo)
+
+static const int PhoneIndicatorCount = 1;
+static const PhoneIndicatorInfo IndicatorInfos[PhoneIndicatorCount] = {
+    {"qtg_mono_info.svg",   "Missed call", "Name/Number", HbIndicatorInterface::GroupPriorityHigh, OpenMissedCallView } // TODO: change icon
+};
+
+#endif // PHONEINDICATORS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/phoneindicatorplugin/phoneindicatorplugin.pri	Mon May 03 12:31:11 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:
+#
+
+HEADERS += ./inc/*.h
+
+SOURCES += ./src/*.cpp
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/phoneindicatorplugin/phoneindicatorplugin.pro	Mon May 03 12:31:11 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:
+#
+
+TEMPLATE = lib
+TARGET = phoneindicatorplugin
+CONFIG += plugin hb
+
+DEPENDPATH += ./inc \
+              ./src
+
+INCLUDEPATH += ./inc \
+
+symbian {
+	load(data_caging_paths)
+	include(./inc/api_headers.pri)
+
+    headers.sources = $$PHONEINDICATORPLUGIN_API_HEADERS
+    headers.path = |../../inc
+    for(header, headers.sources):BLD_INF_RULES.prj_exports += "$$header $$headers.path/$$basename(header)"
+    
+    BLD_INF_RULES.prj_exports += \
+    "$${LITERAL_HASH}include <platform_paths.hrh>" \
+    "./rom/phoneindicatorplugin.iby    CORE_APP_LAYER_IBY_EXPORT_PATH(phoneindicatorplugin.iby)"
+    
+    LIBS += -lxqservice 
+    
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.CAPABILITY = ALL -TCB
+    TARGET.UID3 = 0x2002E6B1
+    
+    pluginstub.sources = phoneindicatorplugin.dll
+    pluginstub.path = /resource/plugins/indicators
+    DEPLOYMENT += pluginstub
+
+}else:win32 {
+
+    # Put it to Hb/lib because it is in path
+    DESTDIR = c:/hb/lib
+    DLLDESTDIR = c:/hb/bin
+    INCLUDEPATH += c:/hb/include/hbcore \
+        c:/hb/include/hbwidgets \
+        c:/hb/include/hbtools
+}
+
+OUTPUT_DIR = $$PWD/bin
+SOURCE_DIR = $$PWD/inc
+OBJECTS_DIR = $$OUTPUT_DIR/tmp/$$TARGET
+DESTDIR = $$OUTPUT_DIR
+MOC_DIR = $$OUTPUT_DIR/tmp/$$TARGET/moc
+RCC_DIR = $$OUTPUT_DIR/tmp/$$TARGET/rcc
+UI_DIR = $$OUTPUT_DIR/tmp/$$TARGET/ui
+DEPENDPATH += . $$SOURCE_DIR
+INCLUDEPATH += . $$SOURCE_DIR
+INCLUDEPATH += $$MOC_DIR
+
+include(phoneindicatorplugin.pri)
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/phoneindicatorplugin/rom/phoneindicatorplugin.iby	Mon May 03 12:31:11 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 __PHONEINDICATORPLUGIN_IBY__
+#define __PHONEINDICATORPLUGIN_IBY__
+ 
+#include <data_caging_paths_for_iby.hrh>
+
+file=ABI_DIR\UREL\phoneindicatorplugin.dll               SHARED_LIB_DIR\phoneindicatorplugin.dll 
+data=\epoc32\data\z\resource\plugins\indicators\phoneindicatorplugin.qtplugin   \resource\plugins\indicators\phoneindicatorplugin.qtplugin
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/phoneindicatorplugin/src/phoneindicatorinterface.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,109 @@
+/*
+ * 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 "Phoneindicatorinterface.h"
+#include "phoneindicators.h"
+#include <QTime>
+#include <QStringList> 
+#ifdef Q_OS_SYMBIAN
+#include <logsservices.h>
+#include <xqservicerequest.h>
+#endif
+
+PhoneIndicatorInterface::PhoneIndicatorInterface(
+                const QString &indicatorType,
+                int typeIndex,
+                Interaction interaction) :
+        HbIndicatorInterface( indicatorType, IndicatorInfos[typeIndex].priority,
+        (interaction == InteractionNone) ? NoInteraction : InteractionActivated),
+        m_typeIndex(typeIndex),
+        m_interaction(interaction),
+        m_primaryText(IndicatorInfos[typeIndex].primaryText),
+        m_secondaryText(IndicatorInfos[typeIndex].secondaryText),
+        m_icon(IndicatorInfos[typeIndex].icon)
+
+{
+}
+
+PhoneIndicatorInterface::~PhoneIndicatorInterface()
+{
+
+}
+
+bool PhoneIndicatorInterface::handleInteraction(InteractionType type)
+{
+    if (type == InteractionActivated) {
+        switch (m_interaction) {
+            
+        case OpenMissedCallView: {
+#ifdef Q_OS_SYMBIAN
+            XQServiceRequest snd("com.nokia.services.logsservices.starter",
+                                 "start(int,bool)", false);
+            snd << (int)LogsServices::ViewMissed;
+            snd << false;
+            int retValue;
+            snd.send(retValue);
+
+//            LogsServices::start( LogsServices::ViewMissed, false );
+#endif
+            }
+            break;
+        case Deactivate:
+            emit deactivate();
+            break;
+        default:
+            return false;
+        }
+        emit dataChanged();
+    }
+    return false;
+}
+
+QVariant PhoneIndicatorInterface::indicatorData(int role) const
+{
+    QVariantMap map = m_parameter.value<QVariantMap>();
+    
+    if (role == PrimaryTextRole) {
+        return map.value( (QVariant(PrimaryTextRole)).toString()).toString();
+    } else if (role == SecondaryTextRole ) {
+        return map.value( (QVariant(SecondaryTextRole)).toString()).toString();
+    } else if (role == IconNameRole) {
+        return m_icon;
+    } else if (role == DecorationNameRole) {
+        return map.value( (QVariant(DecorationNameRole)).toString()).toString();
+    }
+    return QVariant();
+}
+
+bool PhoneIndicatorInterface::handleClientRequest(RequestType type, const QVariant &parameter)
+{
+    bool handled(false);
+    switch (type) {
+        // TODO:
+    case RequestActivate:
+        if (m_parameter != parameter) {
+            m_parameter = parameter;
+            emit dataChanged();
+        }
+        handled =  true;
+        break;
+    default:
+        m_parameter.clear();
+    }
+
+    return handled;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/phoneindicatorplugin/src/phoneindicatorplugin.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,75 @@
+/*
+ * 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 <QtPlugin>
+#include <QVariant>
+#include <HbInstance>
+
+#include "phoneindicatorplugin.h"
+#include "phoneindicatorinterface.h"
+
+Q_EXPORT_PLUGIN(PhoneIndicatorPlugin)
+PhoneIndicatorPlugin::PhoneIndicatorPlugin(): m_error(0)
+{
+    for (int i = 0; i < PhoneIndicatorCount; ++i) {
+        m_indicatorTypes.append(indicatorName(i));
+    }
+}
+
+PhoneIndicatorPlugin::~PhoneIndicatorPlugin()
+{
+}
+
+QStringList PhoneIndicatorPlugin::indicatorTypes() const
+{
+    return m_indicatorTypes;
+}
+
+bool PhoneIndicatorPlugin::accessAllowed(const QString &indicatorType,
+        const QVariantMap &securityInfo) const
+{
+    Q_UNUSED(indicatorType);
+    Q_UNUSED(securityInfo);
+    return true; // constant for hats =)
+}
+
+int PhoneIndicatorPlugin::typeIndex(const QString &indicatorType) const
+{
+    for (int i = 0; i < m_indicatorTypes.count(); ++i) {
+        if (m_indicatorTypes.at(i) == indicatorType) {
+            return i;
+        }
+    }
+    return -1;
+}
+
+HbIndicatorInterface* PhoneIndicatorPlugin::createIndicator(
+        const QString &indicatorType)
+{
+    HbIndicatorInterface *indicator = 0;
+    int index(typeIndex(indicatorType));
+    if (index >= 0) {
+        indicator = new PhoneIndicatorInterface(
+                indicatorType, index, IndicatorInfos[index].interaction);
+    }
+    return indicator;
+}
+
+int PhoneIndicatorPlugin::error() const
+{
+    return m_error;
+}
--- a/phonesettings/cpphonesettingsplugins/barringplugin/inc/cpbarringplugingroup.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/barringplugin/inc/cpbarringplugingroup.h	Mon May 03 12:31:11 2010 +0300
@@ -24,10 +24,12 @@
 class PSetWrapper;
 class QModelIndex;
 class CpPhoneNotes;
+class QValidator;
+class QTranslator;
 
 /*!
     \class CpBarringPluginGroup
-    \brief The class CpBarringPluginGroup defines items shown on UI. 
+    \brief The class CpBarringPluginGroup defines barring items shown on UI. 
  */
 class CpBarringPluginGroup : public CpSettingFormItemData
 {
@@ -45,17 +47,26 @@
 private:
     
     void setupLocalization();
-    void connectToWrapper();
+    void setupConnectionsToWrapper();
     
-    void createAllOutgoingBarringItem();
-    void createOutgoingInternationalBarringItem();
-    void createOutgoingInternationalExceptToHomeCountryBarringItem();
-    void createAllIncomingBarringItem();
-    void createIncomingWhenRoamingBarringItem();
+    void createBarringItems();
+    CpSettingFormItemData *createBarringItem(
+        const HbDataFormModelItem::DataItemType &itemType,
+        const QString &label,
+        const QString &widgetTextData,
+        const PSetCallBarringWrapper::BarringType &barringType);
     
     void processBarringStatusRequestQueue();
-    void revertCheckStateForItem(CpSettingFormItemData *barringItem);
-
+    bool updateDependentBarringProgramStatuses(
+        const CpSettingFormItemData &changedBarringItem);
+    CpSettingFormItemData &barringItemByProgram(
+        const PSetCallBarringWrapper::BarringType &barringProgram);
+    void revertCheckStateOfItem(
+        CpSettingFormItemData *barringItem);
+    void updateCheckStateOfItem(
+        CpSettingFormItemData &barringItem, 
+        const Qt::CheckState &newState);
+    
 private slots:
 
     void barringStatusRequestCompleted(
@@ -75,22 +86,25 @@
         PSetCallBarringWrapper::BarringStatus barringStatus, 
         bool plural);
     
+    void barringPasswordChangeRequestCompleted(int result);
+    
     void changeBarringStateRequested(int checkState);
     
+    void changeBarringPasswordRequested(bool checked = false);
+    
 private: 
     
     CpItemDataHelper &m_helper;
-    PSetWrapper *m_pSetWrapper;
+    QScopedPointer<QTranslator> m_translator;
+    QScopedPointer<PSetWrapper> m_pSetWrapper;
     PSetCallBarringWrapper *m_barringWrapper;
-    CpSettingFormItemData *m_allOutgoingBarringItem;
-    CpSettingFormItemData *m_outgoingInternationalBarringItem;
-    CpSettingFormItemData *m_outgoingInternationalExceptToHomeCountryBarringItem;
-    CpSettingFormItemData *m_allIncomingBarringItem;
-    CpSettingFormItemData *m_incomingWhenRoamingBarringItem;
+    CpSettingFormItemData *m_editBarringPasswordItem;
     QQueue<CpSettingFormItemData *> m_barringRequestQueue;
     bool m_barringStatusRequestOngoing;
     int m_activeNoteId;
     CpPhoneNotes* m_phoneNotes;
+    QValidator *m_barringPasswordValidator;
+    bool m_delayedBarringActivationNote;
 };
 
 #endif // CPBARRINGPLUGINGROUP_H
--- a/phonesettings/cpphonesettingsplugins/barringplugin/src/cpbarringplugingroup.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/barringplugin/src/cpbarringplugingroup.cpp	Mon May 03 12:31:11 2010 +0300
@@ -22,6 +22,7 @@
 #include <QLocale>
 #include <QApplication>
 #include <QTimer>
+#include <QValidator>
 #include <cpitemdatahelper.h>
 #include <psetwrapper.h>
 #include <psetcallbarringwrapper.h>
@@ -30,10 +31,9 @@
 #include "cpphonenotes.h"
 #include "cppluginlogging.h"
 
-Q_DECLARE_METATYPE(PSetCallBarringWrapper::BarringType)
+const int KMaxPasswordLength = 4;
 
-// TODO: use logical identifiers for texts
-// TODO: barring password implementation
+Q_DECLARE_METATYPE(PSetCallBarringWrapper::BarringType)
 
 /*!
   CpBarringPluginGroup::CpBarringPluginGroup.
@@ -41,18 +41,18 @@
 CpBarringPluginGroup::CpBarringPluginGroup(CpItemDataHelper &helper)
     :
     CpSettingFormItemData(
-        HbDataFormModelItem::GroupItem, hbTrId("Call barring"), 0),
+        HbDataFormModelItem::GroupItem, 
+        hbTrId("txt_phone_subhead_call_barring"), 0),
     m_helper(helper),
+    m_translator(0),
     m_pSetWrapper(0),
     m_barringWrapper(0),
-    m_allOutgoingBarringItem(0),
-    m_outgoingInternationalBarringItem(0),
-    m_outgoingInternationalExceptToHomeCountryBarringItem(0),
-    m_allIncomingBarringItem(0),
-    m_incomingWhenRoamingBarringItem(0),
+    m_editBarringPasswordItem(0),
     m_barringStatusRequestOngoing(false),
     m_activeNoteId(0),
-    m_phoneNotes(NULL)
+    m_phoneNotes(0),
+    m_barringPasswordValidator(0),
+    m_delayedBarringActivationNote(false)
 {
     DPRINT << ": IN";
     
@@ -63,23 +63,22 @@
     
     setupLocalization();
     
-    m_pSetWrapper = new PSetWrapper(this); 
+    m_pSetWrapper.reset(new PSetWrapper(NULL));
     m_barringWrapper = &m_pSetWrapper->callBarringWrapper(); 
-    connectToWrapper();
+    setupConnectionsToWrapper();
     
     // itemShown signal is used to trigger barring status query process 
     helper.connectToForm(
         SIGNAL(itemShown(QModelIndex)), 
         this, SLOT(itemShown(QModelIndex)));
     
-    createAllOutgoingBarringItem();
-    createOutgoingInternationalBarringItem();
-    createOutgoingInternationalExceptToHomeCountryBarringItem();
-    createAllIncomingBarringItem();
-    createIncomingWhenRoamingBarringItem();
+    createBarringItems();
     
     m_phoneNotes = CpPhoneNotes::instance();
     
+    QRegExp regExpression("\\d{4}");
+    m_barringPasswordValidator = new QRegExpValidator(regExpression, this);
+    
     DPRINT << ": OUT";
 }
 
@@ -106,7 +105,16 @@
         static_cast<CpSettingFormItemData*>(
             qobject_cast<HbDataFormModel*>(model())->itemFromIndex(item));
     
-    if (formItem->contentWidgetData("checkState").isValid()) {
+    if (!formItem->property("barringType").isValid()) {
+        // Shown item does not belong to the barring settings group.
+        return;
+        }
+    
+    if (formItem == m_editBarringPasswordItem) {
+        return;
+    }
+    
+    if (formItem->isEnabled()) {
         // Initial status for the barring item is already queried. Do not 
         // start querying again if user does close/open for the barring group.
         return;
@@ -115,6 +123,8 @@
     // start barring status query
     m_barringRequestQueue.enqueue(formItem);
     processBarringStatusRequestQueue();
+    
+    DPRINT << ": OUT";
 }
 
 
@@ -125,26 +135,28 @@
 {
     DPRINT << ": IN";
     
-    QTranslator translator; 
+    m_translator.reset(new QTranslator);
     QString lang = QLocale::system().name();
     QString path = "z:/resource/qt/translations/";
     QString fullName = path + "telephone_cp_" + lang;
     
     DPRINT << ": loading translation:" << fullName;
-    bool translatorLoaded = translator.load(fullName);
+    bool translatorLoaded = m_translator->load(fullName);
     DPRINT << ": translator loaded: " << translatorLoaded; 
     
     if (translatorLoaded) {
-        qApp->installTranslator(&translator);
+        qApp->installTranslator(m_translator.data());
         DPRINT << ": translator installed"; 
     }
+    
+    DPRINT << ": OUT";
 }
 
 
 /*!
-  CpBarringPluginGroup::connectToWrapper.
+  CpBarringPluginGroup::setupConnectionsToWrapper.
  */
-void CpBarringPluginGroup::connectToWrapper()
+void CpBarringPluginGroup::setupConnectionsToWrapper()
 {
     DPRINT << ": IN";
     
@@ -196,116 +208,94 @@
             bool)
         )
     );
-}
-
-
-/*!
-  CpBarringPluginGroup::createAllOutgoingBarringItem.
- */
-void CpBarringPluginGroup::createAllOutgoingBarringItem()
-{
-    DPRINT << ": IN";
-    
-    m_allOutgoingBarringItem = new CpSettingFormItemData(
-        HbDataFormModelItem::CheckBoxItem, hbTrId(""), this);
-    
-    m_allOutgoingBarringItem->setContentWidgetData(
-        "text", QVariant(hbTrId("Outgoing calls")));
-    
-    QVariant value;
-    value.setValue(PSetCallBarringWrapper::BarringTypeAllOutgoing);
-    m_allOutgoingBarringItem->setProperty("barringType", value);
     
-    appendChild(m_allOutgoingBarringItem);
-}
-
-
-/*!
-  CpBarringPluginGroup::createOutgoingInternationalBarringItem.
- */
-void CpBarringPluginGroup::createOutgoingInternationalBarringItem()
-{
-    DPRINT << ": IN";
+    QObject::connect(
+        m_barringWrapper, 
+        SIGNAL(barringPasswordChangeRequestCompleted(int)),
+        this, 
+        SLOT(barringPasswordChangeRequestCompleted(int))
+    );
     
-    m_outgoingInternationalBarringItem = new CpSettingFormItemData(
-        HbDataFormModelItem::CheckBoxItem, hbTrId(""), this);
-    
-    m_outgoingInternationalBarringItem->setContentWidgetData(
-        "text", QVariant(hbTrId("International calls")));
-    
-    QVariant value;
-    value.setValue(PSetCallBarringWrapper::BarringTypeOutgoingInternational);
-    m_outgoingInternationalBarringItem->setProperty("barringType", value);
-    
-    appendChild(m_outgoingInternationalBarringItem);
+    DPRINT << ": OUT";
 }
 
 
 /*!
-  CpBarringPluginGroup::
-      createOutgoingInternationalExceptToHomeCountryBarringItem.
+  CpBarringPluginGroup::createBarringItems.
  */
-void CpBarringPluginGroup::
-    createOutgoingInternationalExceptToHomeCountryBarringItem()
+void CpBarringPluginGroup::createBarringItems()
 {
     DPRINT << ": IN";
     
-    m_outgoingInternationalExceptToHomeCountryBarringItem = 
-        new CpSettingFormItemData(
-            HbDataFormModelItem::CheckBoxItem, hbTrId(""), this);
+    createBarringItem(
+        HbDataFormModelItem::CheckBoxItem,
+        QString(""),
+        hbTrId("txt_phone_list_outgoing_calls"),
+        PSetCallBarringWrapper::BarringTypeAllOutgoing);
     
-    m_outgoingInternationalExceptToHomeCountryBarringItem->setContentWidgetData(
-        "text", QVariant(hbTrId("International calls except to home country")));
+    createBarringItem(
+        HbDataFormModelItem::CheckBoxItem,
+        QString(""),
+        hbTrId("txt_phone_list_international_calls"),
+        PSetCallBarringWrapper::BarringTypeOutgoingInternational);
+    
+    createBarringItem(
+        HbDataFormModelItem::CheckBoxItem,
+        QString(""),
+        hbTrId("txt_phone_list_international_calls_except_to_home"),
+        PSetCallBarringWrapper::BarringTypeOutgoingInternationalExceptToHomeCountry);
     
-    QVariant value;
-    value.setValue(PSetCallBarringWrapper::BarringTypeOutgoingInternationalExceptToHomeCountry);
-    m_outgoingInternationalExceptToHomeCountryBarringItem->setProperty(
-        "barringType", value);
+    createBarringItem(
+        HbDataFormModelItem::CheckBoxItem,
+        QString(""),
+        hbTrId("txt_phone_list_incoming_calls"),
+        PSetCallBarringWrapper::BarringTypeAllIncoming);
+    
+    createBarringItem(
+        HbDataFormModelItem::CheckBoxItem,
+        QString(""),
+        hbTrId("txt_phone_list_incoming_call_when_abroad"),
+        PSetCallBarringWrapper::BarringTypeIncomingWhenRoaming);
     
-    appendChild(m_outgoingInternationalExceptToHomeCountryBarringItem);
+    // Dummy BarringTypeAllServices is used to indicate that this item belongs 
+    // to the barring settings group. Information is needed in itemShown().
+    m_editBarringPasswordItem = createBarringItem(
+        HbDataFormModelItem::ToggleValueItem,
+        hbTrId("txt_phone_setlabel_edit_barring_password"),
+        hbTrId("txt_phone_setlabel_edit_barring_password_val_edit"),
+        PSetCallBarringWrapper::BarringTypeAllServices);
+    m_editBarringPasswordItem->setContentWidgetData(
+        QString("additionalText"),
+        hbTrId("txt_phone_setlabel_edit_barring_password_val_edit"));
     
+    DPRINT << ": OUT";
 }
 
 
 /*!
-  CpBarringPluginGroup::createAllIncomingBarringItem.
+  CpBarringPluginGroup::createBarringItem.
  */
-void CpBarringPluginGroup::createAllIncomingBarringItem()
+CpSettingFormItemData *CpBarringPluginGroup::createBarringItem(
+    const HbDataFormModelItem::DataItemType &itemType,
+    const QString &label,
+    const QString &widgetTextData,
+    const PSetCallBarringWrapper::BarringType &barringType)
 {
     DPRINT << ": IN";
     
-    m_allIncomingBarringItem = new CpSettingFormItemData(
-        HbDataFormModelItem::CheckBoxItem, hbTrId(""), this);
+    QScopedPointer<CpSettingFormItemData> barringItem(
+        new CpSettingFormItemData(itemType, label, this));
     
-    m_allIncomingBarringItem->setContentWidgetData(
-        "text", QVariant(hbTrId("Incoming calls")));
+    barringItem->setContentWidgetData("text", QVariant(widgetTextData));
+    barringItem->setEnabled(false);
     
     QVariant value;
-    value.setValue(PSetCallBarringWrapper::BarringTypeAllIncoming);
-    m_allIncomingBarringItem->setProperty("barringType", value);
+    value.setValue(barringType);
+    barringItem->setProperty("barringType", value);
     
-    appendChild(m_allIncomingBarringItem);
-}
-
-
-/*!
-  CpBarringPluginGroup::createIncomingWhenRoamingBarringItem.
- */
-void CpBarringPluginGroup::createIncomingWhenRoamingBarringItem()
-{
-    DPRINT << ": IN";
-    
-    m_incomingWhenRoamingBarringItem = new CpSettingFormItemData(
-        HbDataFormModelItem::CheckBoxItem, hbTrId(""), this);
-    
-    m_incomingWhenRoamingBarringItem->setContentWidgetData(
-        "text", QVariant(hbTrId("Incoming calls when abroad")));
-    
-    QVariant value;
-    value.setValue(PSetCallBarringWrapper::BarringTypeIncomingWhenRoaming);
-    m_incomingWhenRoamingBarringItem->setProperty("barringType", value);
-    
-    appendChild(m_incomingWhenRoamingBarringItem);
+    appendChild(barringItem.data());
+    DPRINT << ": OUT";
+    return barringItem.take();
 }
 
 
@@ -314,10 +304,10 @@
  */
 void CpBarringPluginGroup::barringStatusRequestCompleted(
     int result,
-    const QList<unsigned char> & basicServiceGroupIds,
+    const QList<unsigned char> &basicServiceGroupIds,
     PSetCallBarringWrapper::BarringStatus status)
 {
-    DPRINT << ": IN";
+    DPRINT << ": IN" << ": result:" << result << "status:" << status;
     Q_UNUSED(result)
     Q_UNUSED(basicServiceGroupIds)
     
@@ -326,35 +316,58 @@
     if (PSetCallBarringWrapper::BarringErrorNone != result) {
         // Stop status query process for this time. Statuses are tried to 
         // query again for uncompleted items when user expands/opens barring 
-        // view again.
+        // settings group again.
         m_phoneNotes->cancelNote(m_activeNoteId);
         m_phoneNotes->showGlobalErrorNote(m_activeNoteId, result);
         m_barringRequestQueue.clear();
         return;
     }
     
-    // Update check state to correct value. After setting valid value here
-    // status query will not be started again for the item when user collapses
-    // and expands view again.
+    CpSettingFormItemData *itemForCompletedRequest = 
+        m_barringRequestQueue.dequeue();
+    
+    if (!itemForCompletedRequest->isEnabled()) {
+        // After enabling setting item here status query will not be started 
+        // again for the item when user collapses and expands the barring 
+        // settings group again.
+        itemForCompletedRequest->setEnabled(true);
+        // start to observe user initiated state changes
+        m_helper.addConnection(
+            itemForCompletedRequest, SIGNAL(stateChanged(int)),
+            this, SLOT(changeBarringStateRequested(int)));
+    }
+    
     Qt::CheckState checkState = 
         (PSetCallBarringWrapper::BarringStatusActive == status) 
             ? Qt::Checked 
             : Qt::Unchecked;
-    CpSettingFormItemData *itemForCompletedRequest = 
-        m_barringRequestQueue.dequeue();
-    itemForCompletedRequest->setContentWidgetData(
-        "checkState", QVariant(checkState));
-    
-    // start to observe user initiated state changes
-    m_helper.addConnection(
-        itemForCompletedRequest, SIGNAL(stateChanged(int)),
-        this, SLOT(changeBarringStateRequested(int)));
+    updateCheckStateOfItem(*itemForCompletedRequest, checkState);
     
     if (m_barringRequestQueue.isEmpty()) {
         m_phoneNotes->cancelNote(m_activeNoteId);
+        if (m_delayedBarringActivationNote) {
+            m_delayedBarringActivationNote = false;
+            m_phoneNotes->showGlobalNote(
+                m_activeNoteId, 
+                hbTrId("txt_phone_info_barring_activated"),
+                HbMessageBox::MessageTypeInformation);
+        }
+        
+        // Password editing is enabled only after all barring statuses are 
+        // queried. Otherwise user may be able to issue two requests 
+        // simultaneously by hiding status query progress note and clicking 
+        // edit password.
+        if (!m_editBarringPasswordItem->isEnabled()) {
+            m_editBarringPasswordItem->setEnabled(true);
+            m_helper.addConnection(
+                m_editBarringPasswordItem, SIGNAL(clicked(bool)),
+                this, SLOT(changeBarringPasswordRequested(bool)));
+        }
     } else {
         processBarringStatusRequestQueue();
     }
+    
+    DPRINT << ": OUT";
 }
 
 
@@ -367,24 +380,33 @@
     PSetCallBarringWrapper::BarringStatus barringStatus, 
     bool plural)
 {
-    DPRINT << ": IN";
+    DPRINT << ": IN: result:" << result << "barringType:" << barringType 
+        << "barringStatus:" << barringStatus << "plural:" << plural;
     Q_UNUSED(barringType)
     Q_UNUSED(barringStatus)
     Q_UNUSED(plural)
     
-    m_phoneNotes->cancelNote(m_activeNoteId);
-    
     CpSettingFormItemData *barringItem = m_barringRequestQueue.dequeue();
     if (PSetCallBarringWrapper::BarringErrorNone == result) {
-        m_phoneNotes->showGlobalNote(
-            m_activeNoteId, 
-            hbTrId("Barring activated"),
-            HbMessageBox::MessageTypeInformation);
+        if (updateDependentBarringProgramStatuses(*barringItem)) {
+            // Indicate barring activation completion only when dependent 
+            // barring items are also updated.
+            m_delayedBarringActivationNote = true;
+        } else {
+            m_phoneNotes->cancelNote(m_activeNoteId);
+            m_phoneNotes->showGlobalNote(
+                m_activeNoteId, 
+                hbTrId("txt_phone_info_barring_activated"),
+                HbMessageBox::MessageTypeInformation);
+        }
     } else {
-        revertCheckStateForItem(barringItem);
+        revertCheckStateOfItem(barringItem);
         
+        m_phoneNotes->cancelNote(m_activeNoteId);
         m_phoneNotes->showGlobalErrorNote(m_activeNoteId, result);
     }
+    
+    DPRINT << ": OUT";
 }
 
 
@@ -397,7 +419,8 @@
     PSetCallBarringWrapper::BarringStatus barringStatus, 
     bool plural)
 {
-    DPRINT << ": IN";
+    DPRINT << ": IN: result:" << result << "barringType:" << barringType 
+        << "barringStatus:" << barringStatus << "plural:" << plural;
     Q_UNUSED(barringType)
     Q_UNUSED(barringStatus)
     Q_UNUSED(plural)
@@ -408,13 +431,35 @@
     if (PSetCallBarringWrapper::BarringErrorNone == result) {
         m_phoneNotes->showGlobalNote(
             m_activeNoteId, 
-            hbTrId("Barring cancelled"),
+            hbTrId("txt_phone_info_barring_deactivated"),
             HbMessageBox::MessageTypeInformation);
     } else {
-        revertCheckStateForItem(barringItem);
+        revertCheckStateOfItem(barringItem);
         
         m_phoneNotes->showGlobalErrorNote(m_activeNoteId, result);
     }
+    
+    DPRINT << ": OUT";
+}
+
+
+/*!
+  CpBarringPluginGroup::barringPasswordChangeRequestCompleted.
+ */
+void CpBarringPluginGroup::barringPasswordChangeRequestCompleted(int result)
+{
+    DPRINT << ": IN: result:" << result;
+    
+    m_phoneNotes->cancelNote(m_activeNoteId);
+    
+    if (PSetCallBarringWrapper::BarringErrorNone == result) {
+        m_phoneNotes->showGlobalNote(
+            m_activeNoteId, 
+            hbTrId("txt_phone_info_password_changed"),
+            HbMessageBox::MessageTypeInformation);
+    } else {
+        m_phoneNotes->showGlobalErrorNote(m_activeNoteId, result);
+    }
 }
 
 
@@ -424,7 +469,7 @@
 void CpBarringPluginGroup::processBarringStatusRequestQueue()
 {
     DPRINT << ": IN";
-
+    
     if ((m_barringStatusRequestOngoing == false) && 
         (!m_barringRequestQueue.isEmpty())) {
         
@@ -436,37 +481,14 @@
         
         m_barringStatusRequestOngoing = true;
         
-        if (0 == m_activeNoteId) {
-            // Status request note is very first note to show. Launch progress
-            // note only once for status update.
+        if (!m_phoneNotes->noteShowing()) {
+            // Launch progress note only once for status update.
             m_phoneNotes->showGlobalProgressNote(
-                m_activeNoteId, hbTrId("Requesting..."));
+                m_activeNoteId, hbTrId("txt_phone_info_requesting"));
         }
     }
-}
-
-
-/*!
-  CpBarringPluginGroup::revertCheckStateForItem.
- */
-void CpBarringPluginGroup::revertCheckStateForItem(
-    CpSettingFormItemData *barringItem)
-{
-    m_helper.removeConnection(
-        barringItem, SIGNAL(stateChanged(int)),
-        this, SLOT(changeBarringStateRequested(int)));
     
-    HbDataFormModel *formModel = qobject_cast<HbDataFormModel*>(model());
-    QModelIndex modelIndex = formModel->indexFromItem(barringItem);
-    HbCheckBox *checkBox = static_cast<HbCheckBox*>(
-        m_helper.widgetFromModelIndex(modelIndex));
-    Qt::CheckState revertedCheckState = 
-        (checkBox->checkState() == Qt::Checked) ? Qt::Unchecked : Qt::Checked;
-    checkBox->setCheckState(revertedCheckState);
-    
-    m_helper.addConnection(
-        barringItem, SIGNAL(stateChanged(int)),
-        this, SLOT(changeBarringStateRequested(int)));
+    DPRINT << ": OUT";
 }
 
 
@@ -475,9 +497,10 @@
  */
 void CpBarringPluginGroup::changeBarringStateRequested(int checkState)
 {
-    QObject *signalSender = sender();
+    DPRINT << ": IN";
     
     // find form item for which user has requested barring status change
+    QObject *signalSender = sender();
     HbDataFormModel *formModel = qobject_cast<HbDataFormModel*>(model());
     CpSettingFormItemData* barringItem = NULL;
     int numOfChilds = childCount();
@@ -489,26 +512,260 @@
         }
     }
     
-    // TODO: remove hardcoded password when setting of password is implemented
     if (NULL != barringItem) {
+        QString barringPasswordQueryDialogTitle(
+            hbTrId("txt_phone_info_barring_password"));
+        QString barringPassword;
+        bool okPressed = false;
+        m_phoneNotes->showPasswordQueryDialog(
+            barringPasswordQueryDialogTitle, *m_barringPasswordValidator,
+            KMaxPasswordLength, barringPassword, okPressed);
+        if (!okPressed) {
+            revertCheckStateOfItem(barringItem);
+            return;
+        }
+        
         if (Qt::Checked == checkState) {
             m_barringWrapper->enableBarring(
                 ServiceGroupVoice,
                 qvariant_cast<PSetCallBarringWrapper::BarringType>(
                     barringItem->property("barringType")), 
-                QString("1234"));
+                barringPassword);
         } else {
             m_barringWrapper->disableBarring(
                 ServiceGroupVoice,
                 qvariant_cast<PSetCallBarringWrapper::BarringType>(
                     barringItem->property("barringType")), 
-                QString("1234"));
+                barringPassword);
         }
         
         m_barringRequestQueue.enqueue(barringItem);
         m_phoneNotes->showGlobalProgressNote(
-            m_activeNoteId, hbTrId("Requesting..."));
+            m_activeNoteId, hbTrId("txt_phone_info_requesting"));
+    }
+    
+    DPRINT << ": OUT";
+}
+
+
+/*!
+  CpBarringPluginGroup::changeBarringPasswordRequested.
+ */
+void CpBarringPluginGroup::changeBarringPasswordRequested(bool checked)
+{
+    DPRINT << ": IN";
+    Q_UNUSED(checked)
+    
+    bool okPressed = false;
+    
+    QString currentPassword;
+    QString currentPasswordQueryDialogTitle(
+        hbTrId("txt_phone_info_current_password"));
+    m_phoneNotes->showPasswordQueryDialog(
+        currentPasswordQueryDialogTitle, *m_barringPasswordValidator, 
+        KMaxPasswordLength, currentPassword, okPressed);
+    if (!okPressed) {
+        return;
+    }
+    
+    QString newPassword;
+    QString newPasswordQueryDialogTitle(
+        hbTrId("txt_phone_info_new_password"));
+    m_phoneNotes->showPasswordQueryDialog(
+        newPasswordQueryDialogTitle, *m_barringPasswordValidator,
+        KMaxPasswordLength, newPassword, okPressed);
+    if (!okPressed) {
+        return;
+    }
+    
+    QString newPasswordVerifyDialogTitle(
+        hbTrId("txt_phone_info_verify_new_password"));
+    QString newPasswordVerified;
+    QRegExp regExpression(newPassword);
+    QScopedPointer<QValidator> verifyPasswordValidator(
+        new QRegExpValidator(regExpression, NULL));
+    m_phoneNotes->showPasswordQueryDialog(
+        newPasswordVerifyDialogTitle, *verifyPasswordValidator.data(),
+        KMaxPasswordLength, newPasswordVerified, okPressed);
+    
+    if (okPressed) {
+        m_barringWrapper->changeBarringPassword(
+            currentPassword,
+            newPassword,
+            newPasswordVerified);
+        
+        m_phoneNotes->showGlobalProgressNote(
+            m_activeNoteId, hbTrId("txt_phone_info_requesting"));
     }
+    
+    DPRINT << ": OUT";
+}
+
+
+/*!
+  CpBarringPluginGroup::updateDependentBarringProgramStatuses.
+  According to the ETSI TS 100 548 v7.0.0 specification only one outgoing 
+  and one incoming barring program can be active at the same time. We must,
+  however, query barring statuses again because some networks do not conform
+  to the standards and allow multiple simultaneous barring programs.
+ */
+bool CpBarringPluginGroup::updateDependentBarringProgramStatuses(
+    const CpSettingFormItemData &changedBarringItem)
+{
+    DPRINT << ": IN";
+    
+    CpSettingFormItemData* barringItem = NULL;
+    PSetCallBarringWrapper::BarringType barringType =
+        qvariant_cast<PSetCallBarringWrapper::BarringType>(
+            changedBarringItem.property("barringType"));
+    QList<CpSettingFormItemData*> itemCandidatesForUpdate;
+    switch (barringType) {
+        case PSetCallBarringWrapper::BarringTypeAllOutgoing:
+        {
+            barringItem = &barringItemByProgram(
+                PSetCallBarringWrapper::BarringTypeOutgoingInternational);
+            itemCandidatesForUpdate.append(barringItem);
+            
+            barringItem = &barringItemByProgram(
+                PSetCallBarringWrapper::
+                    BarringTypeOutgoingInternationalExceptToHomeCountry);
+            itemCandidatesForUpdate.append(barringItem);
+            break;
+        }
+        case PSetCallBarringWrapper::BarringTypeOutgoingInternational:
+        {
+            barringItem = &barringItemByProgram(
+                PSetCallBarringWrapper::BarringTypeAllOutgoing);
+            itemCandidatesForUpdate.append(barringItem);
+
+            barringItem = &barringItemByProgram(
+                PSetCallBarringWrapper::
+                    BarringTypeOutgoingInternationalExceptToHomeCountry);
+            itemCandidatesForUpdate.append(barringItem);
+            break;
+        }
+        case PSetCallBarringWrapper::
+            BarringTypeOutgoingInternationalExceptToHomeCountry:
+        {
+            // ETSI TS 100 548 v7.0.0, 1.1.2.2. BOIC barring will be activated 
+            // instead of BOIC-exHC if roamed network does not suport BOIC-exHC
+            // => we must update statuses for all outgoing barring programs. 
+            barringItem = &barringItemByProgram(
+                PSetCallBarringWrapper::BarringTypeAllOutgoing);
+            itemCandidatesForUpdate.append(barringItem);
+
+            barringItem = &barringItemByProgram(
+                PSetCallBarringWrapper::BarringTypeOutgoingInternational);
+            itemCandidatesForUpdate.append(barringItem);
+            
+            barringItem = &barringItemByProgram(
+                PSetCallBarringWrapper::
+                    BarringTypeOutgoingInternationalExceptToHomeCountry);
+            itemCandidatesForUpdate.append(barringItem);
+            break;
+        }
+        case PSetCallBarringWrapper::BarringTypeAllIncoming:
+        {
+            barringItem = &barringItemByProgram(
+                PSetCallBarringWrapper::BarringTypeIncomingWhenRoaming);
+            itemCandidatesForUpdate.append(barringItem);
+            break;
+        }
+        case PSetCallBarringWrapper::BarringTypeIncomingWhenRoaming:
+        {
+            barringItem = &barringItemByProgram(
+                PSetCallBarringWrapper::BarringTypeAllIncoming);
+            itemCandidatesForUpdate.append(barringItem);
+            break;
+        }
+        default:
+            break;
+    }
+    
+    const int numOfItemCandidates = itemCandidatesForUpdate.count();
+    for (int i = 0; i < numOfItemCandidates; i++) {
+        barringItem = itemCandidatesForUpdate[i];
+        Qt::CheckState checkState = static_cast<Qt::CheckState>
+            (barringItem->contentWidgetData("checkState").toInt());
+        if (Qt::Checked == checkState || 
+            PSetCallBarringWrapper::
+                BarringTypeOutgoingInternationalExceptToHomeCountry 
+                    == barringType) {
+            m_barringRequestQueue.enqueue(barringItem);
+        }
+    }
+    
+    processBarringStatusRequestQueue();
+    DPRINT << ": OUT";
+    return (0 < m_barringRequestQueue.count());
+}
+
+
+/*!
+  CpBarringPluginGroup::barringItemByProgram.
+ */
+CpSettingFormItemData &CpBarringPluginGroup::barringItemByProgram(
+    const PSetCallBarringWrapper::BarringType &barringProgram)
+{
+    DPRINT << ": IN";
+    
+    HbDataFormModel *formModel = qobject_cast<HbDataFormModel*>(model());
+    CpSettingFormItemData *item = NULL;
+    int numOfChilds = childCount();
+    for (int childInd = 0; (childInd < numOfChilds) && (!item); childInd++) {
+        CpSettingFormItemData *itemCandidate = 
+            static_cast<CpSettingFormItemData*>(childAt(childInd));
+        PSetCallBarringWrapper::BarringType candidateBarringProgram =
+            qvariant_cast<PSetCallBarringWrapper::BarringType>(
+                itemCandidate->property("barringType"));
+        if (candidateBarringProgram == barringProgram) {
+            item = itemCandidate;
+        }
+    }
+    
+    Q_ASSERT(item);
+    DPRINT << ": OUT";
+    return *item;
+}
+
+
+/*!
+  CpBarringPluginGroup::revertCheckStateOfItem.
+ */
+void CpBarringPluginGroup::revertCheckStateOfItem(
+    CpSettingFormItemData *barringItem)
+{
+    DPRINT << ": IN";
+    
+    Qt::CheckState currentCheckState = static_cast<Qt::CheckState>
+        (barringItem->contentWidgetData("checkState").toInt());
+    Qt::CheckState revertedCheckState = 
+        (currentCheckState == Qt::Checked) ? Qt::Unchecked : Qt::Checked;
+    updateCheckStateOfItem(*barringItem, revertedCheckState);
+    
+    DPRINT << ": OUT";
+}
+
+
+/*!
+  CpBarringPluginGroup::updateCheckStateOfItem.
+ */
+void CpBarringPluginGroup::updateCheckStateOfItem(
+    CpSettingFormItemData &barringItem, const Qt::CheckState &newState)
+{
+    DPRINT << ": IN";
+    
+    m_helper.removeConnection(
+        &barringItem, SIGNAL(stateChanged(int)),
+        this, SLOT(changeBarringStateRequested(int)));
+    
+    barringItem.setContentWidgetData("checkState", QVariant(newState));
+    
+    m_helper.addConnection(
+        &barringItem, SIGNAL(stateChanged(int)),
+        this, SLOT(changeBarringStateRequested(int)));
+    
+    DPRINT << ": OUT";
 }
 
 // End of File. 
--- a/phonesettings/cpphonesettingsplugins/barringplugin/tsrc/run_auto_tests_qt.bat	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/barringplugin/tsrc/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -54,14 +54,19 @@
 set INSTRUMENT=TRUE
 set REMOVEINSTRUMENT=TRUE
 set DOMODULESTESTS=TRUE
-set ABLD_CALL=abld build winscw udeb -keepgoing
+set SBS_CALL=sbs --config winscw_udeb --keepgoing BUILD
 set PATH_TO_DLL=\epoc32\release\winscw\udeb
 set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
 
 if not exist %PATH_TO_COVERAGE_DATA% (
 mkdir %PATH_TO_COVERAGE_DATA%
 )
 
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
 if [%1] EQU [] ( goto default )
 
 call :%1
@@ -132,12 +137,11 @@
 pushd .
 call cd %1
 call qmake
-call bldmake bldfiles
-call abld clean winscw udeb
+call sbs --config winscw_udeb --keepgoing CLEAN
 if [%INSTRUMENT%] EQU [TRUE] (
-call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
+call ctcwrap -2comp -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" "%SBS_CALL%"
 ) else (
-call %ABLD_CALL%
+call %SBS_CALL%
 )
 
 popd
@@ -152,7 +156,10 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
 :RUNTESTS
 echo Running tests
-for /f %%a in ('dir /b ut_*') do call %PATH_TO_DLL%\%%a.exe -dtextshell --
+for /f %%a in ('dir /b ut_*') do (
+    call %PATH_TO_DLL%\%%a.exe -dtextshell --
+    move \epoc32\winscw\c\data\%%a.log %PATH_TO_RESULT%\%%a.log
+)
 goto end
 
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
--- a/phonesettings/cpphonesettingsplugins/barringplugin/tsrc/ut_barringplugingroup/ut_barringplugingroup.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/barringplugin/tsrc/ut_barringplugingroup/ut_barringplugingroup.cpp	Mon May 03 12:31:11 2010 +0300
@@ -27,20 +27,75 @@
 
 void setNoteIdentifier(int &noteId, const QString& text)
 {
+    Q_UNUSED(text)
+    
     noteId = 1;
 }
 
+
+const QString KCurrentPassword = "1234";
+void setCurrentPasswordParams(
+    const QString &title, 
+    const QValidator &validator,
+    int maxPasswordLength,
+    QString &password, 
+    bool &ok)
+{
+    Q_UNUSED(title)
+    Q_UNUSED(validator)
+    Q_UNUSED(maxPasswordLength)
+    
+    password = KCurrentPassword;
+    ok = true;
+}
+
+
+const QString KNewAndVerifiedPassword = "4321";
+void setNewAndVerifiedPasswordParams(
+    const QString &title, 
+    const QValidator &validator,
+    int maxPasswordLength,
+    QString &password, 
+    bool &ok)
+{
+    Q_UNUSED(title)
+    Q_UNUSED(validator)
+    Q_UNUSED(maxPasswordLength)
+    
+    password = KNewAndVerifiedPassword;
+    ok = true;
+}
+
+
+void setPasswordParamsCancel(
+    const QString &title, 
+    const QValidator &validator,
+    int maxPasswordLength,
+    QString &password, 
+    bool &ok)
+{
+    Q_UNUSED(title)
+    Q_UNUSED(validator)
+    Q_UNUSED(maxPasswordLength)
+    Q_UNUSED(password)
+    
+    ok = false;
+}
+
+
 /*!
   UT_CpBarringPluginGroup::UT_CpBarringPluginGroup
  */
 UT_CpBarringPluginGroup::UT_CpBarringPluginGroup() 
     : 
     m_barringpluginGroup(NULL),
-    m_barringWrapperMock(NULL)
+    m_barringWrapperMock(NULL),
+    m_dataFormModel(NULL)
 {
 
 }
 
+
 /*!
   UT_CpBarringPluginGroup::~UT_CpBarringPluginGroup
  */
@@ -50,16 +105,19 @@
     delete m_barringWrapperMock;
 }
 
+
 /*!
   UT_CpBarringPluginGroup::init
  */
 void UT_CpBarringPluginGroup::init()
 {
     initialize();
+    QT_TRAP_THROWING(SmcDefaultValue<QString>::SetL(QString("")));
     
     CPsetContainer &dummyContainer = reinterpret_cast<CPsetContainer &>(*this);
     m_barringWrapperMock = new PSetCallBarringWrapper(dummyContainer);
     EXPECT(PSetWrapper::callBarringWrapper).returns(m_barringWrapperMock);
+    EXPECT(QTranslator::load).returns(true);
     
     CpItemDataHelper itemDataHelper;
     m_barringpluginGroup = new CpBarringPluginGroup(itemDataHelper);
@@ -68,6 +126,10 @@
     m_barringpluginGroup->setModel(m_dataFormModel);
     
     QVERIFY(verify());
+    
+    connect(
+        this, SIGNAL(simulateCheckStateChange(int)), 
+        m_barringpluginGroup, SLOT(changeBarringStateRequested(int)));
 }
 
 
@@ -78,12 +140,19 @@
 {
     reset();
     
+    disconnect(
+        this, SIGNAL(simulateCheckStateChange(int)), 
+        m_barringpluginGroup, SLOT(changeBarringStateRequested(int)));
+    
     delete m_barringpluginGroup;
     m_barringpluginGroup = NULL;
     delete m_barringWrapperMock;
     m_barringWrapperMock = NULL;
+    delete m_dataFormModel;
+    m_dataFormModel = NULL;
 }
 
+
 /*!
   UT_CpBarringPluginGroup::t_memleak
  */
@@ -94,6 +163,126 @@
 
 
 /*!
+  UT_CpBarringPluginGroup::t_translatorInstallationOk
+ */
+void UT_CpBarringPluginGroup::t_translatorInstallationOk()
+{
+    CPsetContainer &dummyContainer = reinterpret_cast<CPsetContainer &>(*this);
+    CpItemDataHelper itemDataHelper;
+    
+    EXPECT(PSetWrapper::callBarringWrapper).returns(m_barringWrapperMock);
+    EXPECT(QTranslator::load).returns(true);
+    
+    CpBarringPluginGroup *barringpluginGroup = 
+        new CpBarringPluginGroup(itemDataHelper);
+    
+    QString expectedTranslation("translation");
+    EXPECT(QTranslator::translate).returns(expectedTranslation);
+    QString actualTranslation = hbTrId("txt_sourcetext");
+    QCOMPARE(actualTranslation, expectedTranslation);
+    
+    delete barringpluginGroup;
+    
+    QVERIFY(verify());
+}
+
+
+/*!
+  UT_CpBarringPluginGroup::t_translatorInstallationFails
+ */
+void UT_CpBarringPluginGroup::t_translatorInstallationFails()
+{
+    CPsetContainer &dummyContainer = reinterpret_cast<CPsetContainer &>(*this);
+    CpItemDataHelper itemDataHelper;
+    
+    EXPECT(PSetWrapper::callBarringWrapper).returns(m_barringWrapperMock);
+    EXPECT(QTranslator::load).returns(false);
+    
+    CpBarringPluginGroup *barringpluginGroup = 
+        new CpBarringPluginGroup(itemDataHelper);
+    
+    QString translation = hbTrId("txt_sourcetext");
+    QCOMPARE(translation, QString("txt_sourcetext"));
+    
+    delete barringpluginGroup;
+    
+    QVERIFY(verify());
+}
+
+
+/*!
+  UT_CpBarringPluginGroup::t_itemShownNotBarringItem
+  Tests that itemShown() for other setting group's item is not handled.
+ */
+void UT_CpBarringPluginGroup::t_itemShownNotBarringItem()
+{
+    EXPECT(PSetCallBarringWrapper::barringStatus).times(0);
+    
+    QScopedPointer<CpSettingFormItemData> item(new CpSettingFormItemData(
+        HbDataFormModelItem::CheckBoxItem, hbTrId(""), NULL));
+    m_dataFormModel->appendDataFormItem(item.data(), m_barringpluginGroup);
+    m_barringpluginGroup->itemShown(
+        m_dataFormModel->indexFromItem(item.data()));
+    m_dataFormModel->removeItem(item.take());
+    
+    QVERIFY(verify());
+}
+
+
+/*!
+  UT_CpBarringPluginGroup::t_itemShownBarringStatusRequestOngoing
+  Tests that another progress note is not launched if one is already shown.
+ */
+void UT_CpBarringPluginGroup::t_itemShownBarringStatusRequestOngoing()
+{
+    EXPECT(PSetCallBarringWrapper::barringStatus);
+    EXPECT(CpPhoneNotes::noteShowing).returns(true);
+    EXPECT(CpPhoneNotes::showGlobalProgressNote).times(0);
+    
+    HbDataFormModelItem *item = m_barringpluginGroup->childAt(0);
+    m_barringpluginGroup->itemShown(m_dataFormModel->indexFromItem(item));
+    
+    QVERIFY(verify());
+}
+
+
+/*!
+  UT_CpBarringPluginGroup::t_barringStatusRequestCompletedForUpdateInquiry
+ */
+void UT_CpBarringPluginGroup::t_barringStatusRequestCompletedForUpdateInquiry()
+{
+    // simulate successfull initial status inquiry
+    QList<unsigned char> basicServiceGroupIds;
+    const int errorCode = 0;
+    int numOfChilds = m_barringpluginGroup->childCount();
+    for (int childIndex = 0; childIndex < numOfChilds - 1; childIndex++) {
+        HbDataFormModelItem *item = m_barringpluginGroup->childAt(childIndex);
+        m_barringpluginGroup->itemShown(m_dataFormModel->indexFromItem(item));
+        
+        m_barringpluginGroup->barringStatusRequestCompleted(
+            errorCode,
+            basicServiceGroupIds, 
+            PSetCallBarringWrapper::BarringStatusActive);
+    }
+    
+    // simulate barring enable request
+    EXPECT(CpItemDataHelper::widgetFromModelIndex).returns(this).times(1);
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
+    emit simulateCheckStateChange(Qt::Checked);
+    
+    // verify that already connected items are not enabled/connected again
+    EXPECT(CpItemDataHelper::removeConnection).times(1);
+    EXPECT(CpItemDataHelper::addConnection).times(1);
+    m_barringpluginGroup->barringStatusRequestCompleted(
+        errorCode,
+        basicServiceGroupIds, 
+        PSetCallBarringWrapper::BarringStatusActive);
+    QVERIFY(verify());
+}
+
+
+/*!
   UT_CpBarringPluginGroup::t_barringStatusRequestCompletedWithAnError
  */
 void UT_CpBarringPluginGroup::t_barringStatusRequestCompletedWithAnError()
@@ -141,15 +330,20 @@
             PSetCallBarringWrapper::BarringTypeIncomingWhenRoaming);
     EXPECT(CpPhoneNotes::showGlobalProgressNote)
         .willOnce(invoke(setNoteIdentifier));
-    EXPECT(CpItemDataHelper::addConnection).times(5);
+    EXPECT(CpItemDataHelper::addConnection).times(6);
     
     int numOfChilds = m_barringpluginGroup->childCount();
     for (int childIndex = 0; childIndex < numOfChilds; childIndex++) {
         HbDataFormModelItem *item = m_barringpluginGroup->childAt(childIndex);
-        m_dataFormModel->appendDataFormItem(item);
         m_barringpluginGroup->itemShown(m_dataFormModel->indexFromItem(item));
     }
     
+    connect(
+        m_dataFormModel, 
+        SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)),
+        this,
+        SLOT(dataChanged(const QModelIndex &, const QModelIndex &)));
+    
     QSignalSpy spy(
         m_dataFormModel, 
         SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)));
@@ -169,8 +363,9 @@
     m_barringpluginGroup->barringStatusRequestCompleted(
         PSetCallBarringWrapper::BarringErrorNone,
         basicServiceGroupIds, PSetCallBarringWrapper::BarringStatusUnknown);
+    QCOMPARE(spy.count(), 11);
     
-    QCOMPARE(spy.count(), 5);
+    QVERIFY(verify());
     
     // Verify that barring status checking is not started on item show if 
     // status is already queried.
@@ -188,12 +383,10 @@
  */
 void UT_CpBarringPluginGroup::t_enableBarringRequestCompleted()
 {
-    connect(
-        this, SIGNAL(simulateCheckStateChange(int)), 
-        m_barringpluginGroup, SLOT(changeBarringStateRequested(int)));
-    
 // request completed succesfully -case
     EXPECT(CpItemDataHelper::widgetFromModelIndex).returns(this).times(1);
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
     EXPECT(CpPhoneNotes::cancelNote);
     EXPECT(CpPhoneNotes::showGlobalNote);
     
@@ -205,13 +398,18 @@
         false);
     
     QVERIFY(verify());
+    QList<unsigned char> basicServiceGroupIds;
     
 // request completed with an error -case
-    EXPECT(CpItemDataHelper::widgetFromModelIndex).returns(this).times(2);
+    HbDataFormModelItem *item = m_barringpluginGroup->childAt(0);
+    item->setContentWidgetData("checkState", QVariant(Qt::Checked));
+    EXPECT(CpItemDataHelper::widgetFromModelIndex).returns(this);
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
+    EXPECT(CpItemDataHelper::removeConnection);
+    EXPECT(CpItemDataHelper::addConnection);
     EXPECT(CpPhoneNotes::cancelNote);
     EXPECT(CpPhoneNotes::showGlobalErrorNote);
-    EXPECT(HbCheckBox::checkState).returns(Qt::Checked);    
-    EXPECT(HbCheckBox::setCheckState).with(Qt::Unchecked);
     
     emit simulateCheckStateChange(Qt::Checked);
     m_barringpluginGroup->enableBarringRequestCompleted(
@@ -219,22 +417,277 @@
         PSetCallBarringWrapper::BarringTypeAllBarrings,
         PSetCallBarringWrapper::BarringStatusActive,
         false);
+
+    QVERIFY(verify());
+    
+// request completed successfully and dependent barring setting needs 
+// status inquiry
+    EXPECT(CpItemDataHelper::widgetFromModelIndex).returns(this);
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
+    // some other (outgoing) barring is enabled, status inquiery for that
+    // should be done.
+    item = m_barringpluginGroup->childAt(1);
+    item->setContentWidgetData("checkState", QVariant(Qt::Checked));
+    EXPECT(PSetCallBarringWrapper::barringStatus);
+    EXPECT(CpPhoneNotes::cancelNote).times(0);
+    EXPECT(CpPhoneNotes::showGlobalNote).times(0);
+    
+    emit simulateCheckStateChange(Qt::Checked);
+    m_barringpluginGroup->enableBarringRequestCompleted(
+        0, 
+        PSetCallBarringWrapper::BarringTypeAllBarrings,
+        PSetCallBarringWrapper::BarringStatusActive,
+        false);
+    
+    QVERIFY(verify());
+    m_barringpluginGroup->barringStatusRequestCompleted(
+        PSetCallBarringWrapper::BarringErrorNone,
+        basicServiceGroupIds, PSetCallBarringWrapper::BarringStatusActive);
+}
+
+
+/*!
+  UT_CpBarringPluginGroup::t_enableBarringRequestCompletedUnknownBarring
+ */
+void UT_CpBarringPluginGroup::t_enableBarringRequestCompletedUnknownBarring()
+{
+    // something very weird has happened and enable request completes for unknown
+    // barring type.
+    HbDataFormModel *formModel = qobject_cast<HbDataFormModel*>(
+        m_barringpluginGroup->model());
+    HbDataFormModelItem *item = m_barringpluginGroup->childAt(5);
+    QModelIndex modelIndex = formModel->indexFromItem(item);
+    
+    EXPECT(CpItemDataHelper::widgetFromModelIndex).with(modelIndex).returns(this);
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
+    EXPECT(CpPhoneNotes::cancelNote);
+    EXPECT(CpPhoneNotes::showGlobalNote);
+    // completion of unknown barring type should not lead to updating
+    EXPECT(PSetCallBarringWrapper::barringStatus).times(0);
+    emit simulateCheckStateChange(Qt::Checked);
+    m_barringpluginGroup->enableBarringRequestCompleted(
+        0, 
+        PSetCallBarringWrapper::BarringTypeAllBarrings,
+        PSetCallBarringWrapper::BarringStatusActive,
+        false);
     
     QVERIFY(verify());
 }
 
 
 /*!
+  UT_CpBarringPluginGroup::t_enableBAOCRequestCompletedStatusUpdate
+ */
+void UT_CpBarringPluginGroup::t_enableBAOCRequestCompletedStatusUpdate()
+{
+    int numOfChilds = m_barringpluginGroup->childCount();
+    for (int childIndex = 0; childIndex < numOfChilds - 1; childIndex++) {
+        HbDataFormModelItem *item = m_barringpluginGroup->childAt(childIndex);
+        item->setContentWidgetData("checkState", QVariant(Qt::Checked));
+    }
+    
+    QList<unsigned char> basicServiceGroupIds;
+    EXPECT(CpItemDataHelper::widgetFromModelIndex).returns(this);
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
+    emit simulateCheckStateChange(Qt::Checked);
+    EXPECT(PSetCallBarringWrapper::barringStatus).with(
+        ServiceGroupVoice, PSetCallBarringWrapper::BarringTypeOutgoingInternational);
+    EXPECT(PSetCallBarringWrapper::barringStatus).with(
+        ServiceGroupVoice, 
+        PSetCallBarringWrapper::BarringTypeOutgoingInternationalExceptToHomeCountry);
+    m_barringpluginGroup->enableBarringRequestCompleted(
+        0, 
+        PSetCallBarringWrapper::BarringTypeAllOutgoing,
+        PSetCallBarringWrapper::BarringStatusActive,
+        false);
+    m_barringpluginGroup->barringStatusRequestCompleted(
+        PSetCallBarringWrapper::BarringErrorNone,
+        basicServiceGroupIds, PSetCallBarringWrapper::BarringStatusActive);
+    m_barringpluginGroup->barringStatusRequestCompleted(
+        PSetCallBarringWrapper::BarringErrorNone,
+        basicServiceGroupIds, PSetCallBarringWrapper::BarringStatusActive);
+    QVERIFY(verify());
+}
+
+
+/*!
+  UT_CpBarringPluginGroup::t_enableBOICRequestCompletedStatusUpdate
+ */
+void UT_CpBarringPluginGroup::t_enableBOICRequestCompletedStatusUpdate()
+{
+    QModelIndex modelIndex;
+    HbDataFormModel *formModel = qobject_cast<HbDataFormModel*>(
+        m_barringpluginGroup->model());
+    int numOfChilds = m_barringpluginGroup->childCount();
+    for (int childIndex = 0; childIndex < numOfChilds - 1; childIndex++) {
+        HbDataFormModelItem *item = m_barringpluginGroup->childAt(childIndex);
+        item->setContentWidgetData("checkState", QVariant(Qt::Checked));
+        if (childIndex == 1) {
+            modelIndex = formModel->indexFromItem(item);
+        }
+    }
+    
+    QList<unsigned char> basicServiceGroupIds;
+    EXPECT(CpItemDataHelper::widgetFromModelIndex).with(modelIndex).returns(this);
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
+    emit simulateCheckStateChange(Qt::Checked);
+    EXPECT(PSetCallBarringWrapper::barringStatus).with(
+        ServiceGroupVoice, 
+        PSetCallBarringWrapper::BarringTypeAllOutgoing);
+    EXPECT(PSetCallBarringWrapper::barringStatus).with(
+        ServiceGroupVoice, 
+        PSetCallBarringWrapper::BarringTypeOutgoingInternationalExceptToHomeCountry);
+    m_barringpluginGroup->enableBarringRequestCompleted(
+        0, 
+        PSetCallBarringWrapper::BarringTypeOutgoingInternational,
+        PSetCallBarringWrapper::BarringStatusActive,
+        false);
+    m_barringpluginGroup->barringStatusRequestCompleted(
+        PSetCallBarringWrapper::BarringErrorNone,
+        basicServiceGroupIds, PSetCallBarringWrapper::BarringStatusActive);
+    m_barringpluginGroup->barringStatusRequestCompleted(
+        PSetCallBarringWrapper::BarringErrorNone,
+        basicServiceGroupIds, PSetCallBarringWrapper::BarringStatusActive);
+    QVERIFY(verify());
+}
+
+
+/*!
+  UT_CpBarringPluginGroup::t_enableBOICexHCRequestCompletedStatusUpdate
+ */
+void UT_CpBarringPluginGroup::t_enableBOICexHCRequestCompletedStatusUpdate()
+{
+    QModelIndex modelIndex;
+    HbDataFormModel *formModel = qobject_cast<HbDataFormModel*>(
+        m_barringpluginGroup->model());
+    int numOfChilds = m_barringpluginGroup->childCount();
+    for (int childIndex = 0; childIndex < numOfChilds - 1; childIndex++) {
+        HbDataFormModelItem *item = m_barringpluginGroup->childAt(childIndex);
+        item->setContentWidgetData("checkState", QVariant(Qt::Checked));
+        if (childIndex == 2) {
+            modelIndex = formModel->indexFromItem(item);
+        }
+    }
+    
+    QList<unsigned char> basicServiceGroupIds;
+    EXPECT(CpItemDataHelper::widgetFromModelIndex).with(modelIndex).returns(this);
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
+    emit simulateCheckStateChange(Qt::Checked);
+    EXPECT(PSetCallBarringWrapper::barringStatus).with(
+        ServiceGroupVoice, 
+        PSetCallBarringWrapper::BarringTypeAllOutgoing);
+    EXPECT(PSetCallBarringWrapper::barringStatus).with(
+        ServiceGroupVoice, 
+        PSetCallBarringWrapper::BarringTypeOutgoingInternational);
+    EXPECT(PSetCallBarringWrapper::barringStatus).with(
+        ServiceGroupVoice, 
+        PSetCallBarringWrapper::BarringTypeOutgoingInternationalExceptToHomeCountry);
+    m_barringpluginGroup->enableBarringRequestCompleted(
+        0, 
+        PSetCallBarringWrapper::BarringTypeOutgoingInternationalExceptToHomeCountry,
+        PSetCallBarringWrapper::BarringStatusActive,
+        false);
+    m_barringpluginGroup->barringStatusRequestCompleted(
+        PSetCallBarringWrapper::BarringErrorNone,
+        basicServiceGroupIds, PSetCallBarringWrapper::BarringStatusActive);
+    m_barringpluginGroup->barringStatusRequestCompleted(
+        PSetCallBarringWrapper::BarringErrorNone,
+        basicServiceGroupIds, PSetCallBarringWrapper::BarringStatusActive);
+    m_barringpluginGroup->barringStatusRequestCompleted(
+        PSetCallBarringWrapper::BarringErrorNone,
+        basicServiceGroupIds, PSetCallBarringWrapper::BarringStatusActive);
+    QVERIFY(verify());
+}
+
+
+/*!
+  UT_CpBarringPluginGroup::t_enableBAICRequestCompletedStatusUpdate
+ */
+void UT_CpBarringPluginGroup::t_enableBAICRequestCompletedStatusUpdate()
+{
+    QModelIndex modelIndex;
+    HbDataFormModel *formModel = qobject_cast<HbDataFormModel*>(
+        m_barringpluginGroup->model());
+    int numOfChilds = m_barringpluginGroup->childCount();
+    for (int childIndex = 0; childIndex < numOfChilds - 1; childIndex++) {
+        HbDataFormModelItem *item = m_barringpluginGroup->childAt(childIndex);
+        item->setContentWidgetData("checkState", QVariant(Qt::Checked));
+        if (childIndex == 3) {
+            modelIndex = formModel->indexFromItem(item);
+        }
+    }
+    
+    QList<unsigned char> basicServiceGroupIds;
+    EXPECT(CpItemDataHelper::widgetFromModelIndex).with(modelIndex).returns(this);
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
+    emit simulateCheckStateChange(Qt::Checked);
+    EXPECT(PSetCallBarringWrapper::barringStatus).with(
+        ServiceGroupVoice, 
+        PSetCallBarringWrapper::BarringTypeIncomingWhenRoaming);
+    m_barringpluginGroup->enableBarringRequestCompleted(
+        0, 
+        PSetCallBarringWrapper::BarringTypeAllIncoming,
+        PSetCallBarringWrapper::BarringStatusActive,
+        false);
+    m_barringpluginGroup->barringStatusRequestCompleted(
+        PSetCallBarringWrapper::BarringErrorNone,
+        basicServiceGroupIds, PSetCallBarringWrapper::BarringStatusActive);
+    QVERIFY(verify());
+}
+
+
+/*!
+  UT_CpBarringPluginGroup::t_enableBICRoamRequestCompletedStatusUpdate
+ */
+void UT_CpBarringPluginGroup::t_enableBICRoamRequestCompletedStatusUpdate()
+{
+    QModelIndex modelIndex;
+    HbDataFormModel *formModel = qobject_cast<HbDataFormModel*>(
+        m_barringpluginGroup->model());
+    int numOfChilds = m_barringpluginGroup->childCount();
+    for (int childIndex = 0; childIndex < numOfChilds - 1; childIndex++) {
+        HbDataFormModelItem *item = m_barringpluginGroup->childAt(childIndex);
+        item->setContentWidgetData("checkState", QVariant(Qt::Checked));
+        if (childIndex == 4) {
+            modelIndex = formModel->indexFromItem(item);
+        }
+    }
+    
+    QList<unsigned char> basicServiceGroupIds;
+    EXPECT(CpItemDataHelper::widgetFromModelIndex).with(modelIndex).returns(this);
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
+    emit simulateCheckStateChange(Qt::Checked);
+    EXPECT(PSetCallBarringWrapper::barringStatus).with(
+        ServiceGroupVoice, 
+        PSetCallBarringWrapper::BarringTypeAllIncoming);
+    m_barringpluginGroup->enableBarringRequestCompleted(
+        0, 
+        PSetCallBarringWrapper::BarringTypeIncomingWhenRoaming,
+        PSetCallBarringWrapper::BarringStatusActive,
+        false);
+    m_barringpluginGroup->barringStatusRequestCompleted(
+        PSetCallBarringWrapper::BarringErrorNone,
+        basicServiceGroupIds, PSetCallBarringWrapper::BarringStatusActive);
+    QVERIFY(verify());
+}
+
+
+/*!
   UT_CpBarringPluginGroup::t_disableBarringRequestCompleted
  */
 void UT_CpBarringPluginGroup::t_disableBarringRequestCompleted()
 {
-    connect(
-        this, SIGNAL(simulateCheckStateChange(int)), 
-        m_barringpluginGroup, SLOT(changeBarringStateRequested(int)));
-    
 // request completed succesfully -case
     EXPECT(CpItemDataHelper::widgetFromModelIndex).returns(this).times(1);
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
     EXPECT(CpPhoneNotes::cancelNote);
     EXPECT(CpPhoneNotes::showGlobalNote);
     emit simulateCheckStateChange(Qt::Unchecked);
@@ -248,11 +701,15 @@
     QVERIFY(verify());
     
 // request completed with an error -case
-    EXPECT(CpItemDataHelper::widgetFromModelIndex).returns(this).times(2);
+    HbDataFormModelItem *item = m_barringpluginGroup->childAt(0);
+    item->setContentWidgetData("checkState", QVariant(Qt::Unchecked));
+    EXPECT(CpItemDataHelper::widgetFromModelIndex).returns(this);
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
+    EXPECT(CpItemDataHelper::removeConnection);
+    EXPECT(CpItemDataHelper::addConnection);
     EXPECT(CpPhoneNotes::cancelNote);
     EXPECT(CpPhoneNotes::showGlobalErrorNote);
-    EXPECT(HbCheckBox::checkState).returns(Qt::Unchecked);    
-    EXPECT(HbCheckBox::setCheckState).with(Qt::Checked);
     
     emit simulateCheckStateChange(Qt::Unchecked);
     m_barringpluginGroup->disableBarringRequestCompleted(
@@ -266,36 +723,126 @@
 
 
 /*!
+  UT_CpBarringPluginGroup::t_barringPasswordChangeRequestCompleted
+ */
+void UT_CpBarringPluginGroup::t_barringPasswordChangeRequestCompleted()
+{
+// request completed with no error
+    EXPECT(CpPhoneNotes::cancelNote);
+    EXPECT(CpPhoneNotes::showGlobalNote);
+    
+    m_barringpluginGroup->barringPasswordChangeRequestCompleted(0);
+    
+    QVERIFY(verify());
+
+// request completed with an error
+    EXPECT(CpPhoneNotes::cancelNote);
+    EXPECT(CpPhoneNotes::showGlobalErrorNote);
+    
+    m_barringpluginGroup->barringPasswordChangeRequestCompleted(-1);
+    
+    QVERIFY(verify());
+}
+
+
+/*!
   UT_CpBarringPluginGroup::t_changeBarringStateRequested
  */
 void UT_CpBarringPluginGroup::t_changeBarringStateRequested()
 {
 // barring enable request case
     EXPECT(CpItemDataHelper::widgetFromModelIndex).returns(this);
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
     EXPECT(PSetCallBarringWrapper::enableBarring)
         .with(ServiceGroupVoice, 
-            PSetCallBarringWrapper::BarringTypeAllOutgoing, QString("1234"));
+            PSetCallBarringWrapper::BarringTypeAllOutgoing, KCurrentPassword);
     EXPECT(CpPhoneNotes::showGlobalProgressNote);
-    connect(
-        this, SIGNAL(simulateCheckStateChange(int)), 
-        m_barringpluginGroup, SLOT(changeBarringStateRequested(int)));
     
     emit simulateCheckStateChange(Qt::Checked);
     
+    QVERIFY(verify());
+    
 // barring disable request case
     EXPECT(CpItemDataHelper::widgetFromModelIndex).returns(this);
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
     EXPECT(PSetCallBarringWrapper::disableBarring)
         .with(ServiceGroupVoice, 
-            PSetCallBarringWrapper::BarringTypeAllOutgoing, QString("1234"));
+            PSetCallBarringWrapper::BarringTypeAllOutgoing, KCurrentPassword);
     EXPECT(CpPhoneNotes::showGlobalProgressNote);
+    
     emit simulateCheckStateChange(Qt::Unchecked);
     
+    QVERIFY(verify());
+
+// cancel pressed while querying barring password
+    EXPECT(CpItemDataHelper::widgetFromModelIndex).returns(this);
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setPasswordParamsCancel));
+    EXPECT(CpItemDataHelper::removeConnection);
+    EXPECT(CpItemDataHelper::addConnection);
+    EXPECT(PSetCallBarringWrapper::disableBarring).times(0);
+    EXPECT(CpPhoneNotes::showGlobalProgressNote).times(0);
+    
+    emit simulateCheckStateChange(Qt::Unchecked);
+    
+    QVERIFY(verify());
+    
 // barring item not found case
     EXPECT(PSetCallBarringWrapper::enableBarring).times(0);
     EXPECT(CpPhoneNotes::showGlobalProgressNote).times(0);
+    
     emit simulateCheckStateChange(Qt::Checked);
     
     QVERIFY(verify());
 }
 
+
+/*!
+  UT_CpBarringPluginGroup::t_changeBarringPasswordRequested
+ */
+void UT_CpBarringPluginGroup::t_changeBarringPasswordRequested()
+{
+    connect(
+        this, SIGNAL(simulateEditPasswordButtonClicked(bool)), 
+        m_barringpluginGroup, SLOT(changeBarringPasswordRequested(bool)));
+    
+    // cancel from current password query
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setPasswordParamsCancel));
+    emit simulateEditPasswordButtonClicked(false);
+    QVERIFY(verify());
+    
+    // cancel from new password query
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setPasswordParamsCancel));
+    emit simulateEditPasswordButtonClicked(false);
+    QVERIFY(verify());
+    
+    // cancel from verify new password query
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setNewAndVerifiedPasswordParams));
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setPasswordParamsCancel));
+    emit simulateEditPasswordButtonClicked(false);
+    QVERIFY(verify());
+    
+    // all data successfully queried
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setCurrentPasswordParams));
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setNewAndVerifiedPasswordParams));
+    EXPECT(CpPhoneNotes::showPasswordQueryDialog)
+        .willOnce(invoke(setNewAndVerifiedPasswordParams));
+    EXPECT(PSetCallBarringWrapper::changeBarringPassword)
+        .with(KCurrentPassword, KNewAndVerifiedPassword, KNewAndVerifiedPassword);
+    emit simulateEditPasswordButtonClicked(false);
+    QVERIFY(verify());
+}
+
 QTEST_MAIN_S60(UT_CpBarringPluginGroup)
--- a/phonesettings/cpphonesettingsplugins/barringplugin/tsrc/ut_barringplugingroup/ut_barringplugingroup.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/barringplugin/tsrc/ut_barringplugingroup/ut_barringplugingroup.h	Mon May 03 12:31:11 2010 +0300
@@ -33,21 +33,35 @@
     
     UT_CpBarringPluginGroup();
     ~UT_CpBarringPluginGroup();
-    
+
 private slots:
 
     void init();
     void cleanup();
     
     void t_memleak();
+    void t_translatorInstallationOk();
+    void t_translatorInstallationFails();
+    void t_itemShownNotBarringItem();
+    void t_itemShownBarringStatusRequestOngoing();
+    void t_barringStatusRequestCompletedForUpdateInquiry();
     void t_barringStatusRequestCompletedWithAnError();
     void t_getBarringStatuses();
     void t_enableBarringRequestCompleted();
+    void t_enableBarringRequestCompletedUnknownBarring();
+    void t_enableBAOCRequestCompletedStatusUpdate();
+    void t_enableBOICRequestCompletedStatusUpdate();
+    void t_enableBOICexHCRequestCompletedStatusUpdate();
+    void t_enableBAICRequestCompletedStatusUpdate();
+    void t_enableBICRoamRequestCompletedStatusUpdate();
     void t_disableBarringRequestCompleted();
+    void t_barringPasswordChangeRequestCompleted();
     void t_changeBarringStateRequested();
+    void t_changeBarringPasswordRequested();
 
 signals:
     void simulateCheckStateChange(int checkState);
+    void simulateEditPasswordButtonClicked(bool checked);
     
 private:
     
--- a/phonesettings/cpphonesettingsplugins/barringplugin/tsrc/ut_barringplugingroup/ut_barringplugingroup.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/barringplugin/tsrc/ut_barringplugingroup/ut_barringplugingroup.pro	Mon May 03 12:31:11 2010 +0300
@@ -71,3 +71,4 @@
 SOURCES += ../../../tsrc/mocks/mock_cpplugincommon.cpp
 SOURCES += ../../../tsrc/mocks/mock_cpitemdatahelper.cpp
 SOURCES += ../../../tsrc/mocks/mock_hbcheckbox.cpp
+SOURCES += ../../../tsrc/mocks/mock_qtranslator.cpp
--- a/phonesettings/cpphonesettingsplugins/bwins/cptelephonyutilsu.def	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/bwins/cptelephonyutilsu.def	Mon May 03 12:31:11 2010 +0300
@@ -9,33 +9,33 @@
 	?getStaticMetaObject@Tools@@SAABUQMetaObject@@XZ @ 8 NONAME ; struct QMetaObject const & Tools::getStaticMetaObject(void)
 	??1CpSettingsWrapper@@UAE@XZ @ 9 NONAME ; CpSettingsWrapper::~CpSettingsWrapper(void)
 	?qt_metacast@CpPhoneNotes@@UAEPAXPBD@Z @ 10 NONAME ; void * CpPhoneNotes::qt_metacast(char const *)
-	?tr@CpPhoneNotes@@SA?AVQString@@PBD0H@Z @ 11 NONAME ; class QString CpPhoneNotes::tr(char const *, char const *, int)
-	?instance@CpPhoneNotes@@SAPAV1@XZ @ 12 NONAME ; class CpPhoneNotes * CpPhoneNotes::instance(void)
-	?tr@CpSettingsWrapper@@SA?AVQString@@PBD0H@Z @ 13 NONAME ; class QString CpSettingsWrapper::tr(char const *, char const *, int)
-	??1CpPhoneNotes@@EAE@XZ @ 14 NONAME ; CpPhoneNotes::~CpPhoneNotes(void)
-	?formatPhoneNumber@CpPhoneNotes@@ABE?AVQString@@V2@@Z @ 15 NONAME ; class QString CpPhoneNotes::formatPhoneNumber(class QString) const
-	?showGlobalNote@CpPhoneNotes@@QAEXAAHABVQString@@W4MessageBoxType@HbMessageBox@@@Z @ 16 NONAME ; void CpPhoneNotes::showGlobalNote(int &, class QString const &, enum HbMessageBox::MessageBoxType)
-	?metaObject@Tools@@UBEPBUQMetaObject@@XZ @ 17 NONAME ; struct QMetaObject const * Tools::metaObject(void) const
-	?readSoftRejectText@CpSettingsWrapper@@QAEXAAVQString@@AA_N@Z @ 18 NONAME ; void CpSettingsWrapper::readSoftRejectText(class QString &, bool &)
-	?getStaticMetaObject@CpSettingsWrapper@@SAABUQMetaObject@@XZ @ 19 NONAME ; struct QMetaObject const & CpSettingsWrapper::getStaticMetaObject(void)
-	?metaObject@CpSettingsWrapper@@UBEPBUQMetaObject@@XZ @ 20 NONAME ; struct QMetaObject const * CpSettingsWrapper::metaObject(void) const
-	?videoSupported@Tools@@SA_NXZ @ 21 NONAME ; bool Tools::videoSupported(void)
-	?showCallDuration@CpSettingsWrapper@@QAE_NXZ @ 22 NONAME ; bool CpSettingsWrapper::showCallDuration(void)
-	?isPhoneOffline@CpSettingsWrapper@@QBE_NXZ @ 23 NONAME ; bool CpSettingsWrapper::isPhoneOffline(void) const
-	?errorCodeTextMapping@Tools@@SA_NHAAVQString@@@Z @ 24 NONAME ; bool Tools::errorCodeTextMapping(int, class QString &)
-	?convertEtelMobileServiceCode@CpPhoneNotes@@ABE?AW4BasicServiceGroups@CpTelephonyUtils@@H@Z @ 25 NONAME ; enum CpTelephonyUtils::BasicServiceGroups CpPhoneNotes::convertEtelMobileServiceCode(int) const
-	?trUtf8@CpPhoneNotes@@SA?AVQString@@PBD0H@Z @ 26 NONAME ; class QString CpPhoneNotes::trUtf8(char const *, char const *, int)
-	?readCenrepString@CpSettingsWrapper@@ABE?AVQString@@JK@Z @ 27 NONAME ; class QString CpSettingsWrapper::readCenrepString(long, unsigned long) const
-	?writeSoftRejectText@CpSettingsWrapper@@QAEHABVQString@@_N@Z @ 28 NONAME ; int CpSettingsWrapper::writeSoftRejectText(class QString const &, bool)
-	?showBasicServiceList@CpPhoneNotes@@QAEXABVQString@@ABV?$QList@E@@@Z @ 29 NONAME ; void CpPhoneNotes::showBasicServiceList(class QString const &, class QList<unsigned char> const &)
-	?setShowCallDuration@CpSettingsWrapper@@QAEH_N@Z @ 30 NONAME ; int CpSettingsWrapper::setShowCallDuration(bool)
-	?qt_metacall@CpPhoneNotes@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 31 NONAME ; int CpPhoneNotes::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?qt_metacall@Tools@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 32 NONAME ; int Tools::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?tr@CpPhoneNotes@@SA?AVQString@@PBD0@Z @ 33 NONAME ; class QString CpPhoneNotes::tr(char const *, char const *)
-	?getStaticMetaObject@CpPhoneNotes@@SAABUQMetaObject@@XZ @ 34 NONAME ; struct QMetaObject const & CpPhoneNotes::getStaticMetaObject(void)
-	?convertEtelMobileServiceCode@Tools@@SA?AW4BasicServiceGroups@CpTelephonyUtils@@H@Z @ 35 NONAME ; enum CpTelephonyUtils::BasicServiceGroups Tools::convertEtelMobileServiceCode(int)
-	?trUtf8@CpSettingsWrapper@@SA?AVQString@@PBD0@Z @ 36 NONAME ; class QString CpSettingsWrapper::trUtf8(char const *, char const *)
-	??_ECpSettingsWrapper@@UAE@I@Z @ 37 NONAME ; CpSettingsWrapper::~CpSettingsWrapper(unsigned int)
+	?passwordTextChanged@CpPhoneNotes@@AAEXXZ @ 11 NONAME ; void CpPhoneNotes::passwordTextChanged(void)
+	?tr@CpPhoneNotes@@SA?AVQString@@PBD0H@Z @ 12 NONAME ; class QString CpPhoneNotes::tr(char const *, char const *, int)
+	?instance@CpPhoneNotes@@SAPAV1@XZ @ 13 NONAME ; class CpPhoneNotes * CpPhoneNotes::instance(void)
+	?tr@CpSettingsWrapper@@SA?AVQString@@PBD0H@Z @ 14 NONAME ; class QString CpSettingsWrapper::tr(char const *, char const *, int)
+	??1CpPhoneNotes@@EAE@XZ @ 15 NONAME ; CpPhoneNotes::~CpPhoneNotes(void)
+	?formatPhoneNumber@CpPhoneNotes@@ABE?AVQString@@V2@@Z @ 16 NONAME ; class QString CpPhoneNotes::formatPhoneNumber(class QString) const
+	?showGlobalNote@CpPhoneNotes@@QAEXAAHABVQString@@W4MessageBoxType@HbMessageBox@@@Z @ 17 NONAME ; void CpPhoneNotes::showGlobalNote(int &, class QString const &, enum HbMessageBox::MessageBoxType)
+	?metaObject@Tools@@UBEPBUQMetaObject@@XZ @ 18 NONAME ; struct QMetaObject const * Tools::metaObject(void) const
+	?readSoftRejectText@CpSettingsWrapper@@QAEXAAVQString@@AA_N@Z @ 19 NONAME ; void CpSettingsWrapper::readSoftRejectText(class QString &, bool &)
+	?getStaticMetaObject@CpSettingsWrapper@@SAABUQMetaObject@@XZ @ 20 NONAME ; struct QMetaObject const & CpSettingsWrapper::getStaticMetaObject(void)
+	?showPasswordQueryDialog@CpPhoneNotes@@QAEXABVQString@@ABVQValidator@@HAAV2@AA_N@Z @ 21 NONAME ; void CpPhoneNotes::showPasswordQueryDialog(class QString const &, class QValidator const &, int, class QString &, bool &)
+	?metaObject@CpSettingsWrapper@@UBEPBUQMetaObject@@XZ @ 22 NONAME ; struct QMetaObject const * CpSettingsWrapper::metaObject(void) const
+	?videoSupported@Tools@@SA_NXZ @ 23 NONAME ; bool Tools::videoSupported(void)
+	?showCallDuration@CpSettingsWrapper@@QAE_NXZ @ 24 NONAME ; bool CpSettingsWrapper::showCallDuration(void)
+	?isPhoneOffline@CpSettingsWrapper@@QBE_NXZ @ 25 NONAME ; bool CpSettingsWrapper::isPhoneOffline(void) const
+	?errorCodeTextMapping@Tools@@SA_NHAAVQString@@@Z @ 26 NONAME ; bool Tools::errorCodeTextMapping(int, class QString &)
+	?trUtf8@CpPhoneNotes@@SA?AVQString@@PBD0H@Z @ 27 NONAME ; class QString CpPhoneNotes::trUtf8(char const *, char const *, int)
+	?readCenrepString@CpSettingsWrapper@@ABE?AVQString@@JK@Z @ 28 NONAME ; class QString CpSettingsWrapper::readCenrepString(long, unsigned long) const
+	?writeSoftRejectText@CpSettingsWrapper@@QAEHABVQString@@_N@Z @ 29 NONAME ; int CpSettingsWrapper::writeSoftRejectText(class QString const &, bool)
+	?showBasicServiceList@CpPhoneNotes@@QAEXABVQString@@ABV?$QList@E@@@Z @ 30 NONAME ; void CpPhoneNotes::showBasicServiceList(class QString const &, class QList<unsigned char> const &)
+	?setShowCallDuration@CpSettingsWrapper@@QAEH_N@Z @ 31 NONAME ; int CpSettingsWrapper::setShowCallDuration(bool)
+	?qt_metacall@CpPhoneNotes@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 32 NONAME ; int CpPhoneNotes::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacall@Tools@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 33 NONAME ; int Tools::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?trUtf8@CpSettingsWrapper@@SA?AVQString@@PBD0@Z @ 34 NONAME ; class QString CpSettingsWrapper::trUtf8(char const *, char const *)
+	?tr@CpPhoneNotes@@SA?AVQString@@PBD0@Z @ 35 NONAME ; class QString CpPhoneNotes::tr(char const *, char const *)
+	??_ECpSettingsWrapper@@UAE@I@Z @ 36 NONAME ; CpSettingsWrapper::~CpSettingsWrapper(unsigned int)
+	?getStaticMetaObject@CpPhoneNotes@@SAABUQMetaObject@@XZ @ 37 NONAME ; struct QMetaObject const & CpPhoneNotes::getStaticMetaObject(void)
 	?progressNoteCanceled@CpPhoneNotes@@IAEXXZ @ 38 NONAME ; void CpPhoneNotes::progressNoteCanceled(void)
 	?trUtf8@CpSettingsWrapper@@SA?AVQString@@PBD0H@Z @ 39 NONAME ; class QString CpSettingsWrapper::trUtf8(char const *, char const *, int)
 	?staticMetaObject@CpPhoneNotes@@2UQMetaObject@@B @ 40 NONAME ; struct QMetaObject const CpPhoneNotes::staticMetaObject
@@ -58,8 +58,7 @@
 	?isFeatureCallWaitingDistiquishNotProvisionedEnabled@CpSettingsWrapper@@QAE_NXZ @ 57 NONAME ; bool CpSettingsWrapper::isFeatureCallWaitingDistiquishNotProvisionedEnabled(void)
 	?writeCenrepValue@CpSettingsWrapper@@ABEHJKABVQVariant@@@Z @ 58 NONAME ; int CpSettingsWrapper::writeCenrepValue(long, unsigned long, class QVariant const &) const
 	?staticMetaObject@Tools@@2UQMetaObject@@B @ 59 NONAME ; struct QMetaObject const Tools::staticMetaObject
-	?showBasicServiceCallDivertList@CpPhoneNotes@@QAEXABVQString@@ABV?$QList@PAVPSCallDivertingStatus@@@@AAHW4CallDivertType@CpTelephonyUtils@@AAW445@@Z @ 60 NONAME ; void CpPhoneNotes::showBasicServiceCallDivertList(class QString const &, class QList<class PSCallDivertingStatus *> const &, int &, enum CpTelephonyUtils::CallDivertType, enum CpTelephonyUtils::CallDivertType &)
-	?trUtf8@Tools@@SA?AVQString@@PBD0@Z @ 61 NONAME ; class QString Tools::trUtf8(char const *, char const *)
-	?staticMetaObject@CpSettingsWrapper@@2UQMetaObject@@B @ 62 NONAME ; struct QMetaObject const CpSettingsWrapper::staticMetaObject
-	??0CpSettingsWrapper@@QAE@PAVQObject@@@Z @ 63 NONAME ; CpSettingsWrapper::CpSettingsWrapper(class QObject *)
+	?trUtf8@Tools@@SA?AVQString@@PBD0@Z @ 60 NONAME ; class QString Tools::trUtf8(char const *, char const *)
+	?staticMetaObject@CpSettingsWrapper@@2UQMetaObject@@B @ 61 NONAME ; struct QMetaObject const CpSettingsWrapper::staticMetaObject
+	??0CpSettingsWrapper@@QAE@PAVQObject@@@Z @ 62 NONAME ; CpSettingsWrapper::CpSettingsWrapper(class QObject *)
 
--- a/phonesettings/cpphonesettingsplugins/callsplugin/src/cpcallsplugingroup.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/callsplugin/src/cpcallsplugingroup.cpp	Mon May 03 12:31:11 2010 +0300
@@ -457,18 +457,13 @@
     if (m_callWaitingDistinguishEnabled &&
             status == PSetCallWaitingWrapper::StatusNotProvisioned) {
         emit showGlobalNote(m_activeNoteId, 
-            hbTrId("cw not provisioned"), HbMessageBox::MessageTypeInformation);
+            hbTrId("txt_phone_info_request_not_completed"), HbMessageBox::MessageTypeInformation);
     } else if (status != PSetCallWaitingWrapper::StatusActive) {
         emit showGlobalNote(m_activeNoteId,
-            hbTrId("cw disabled"), HbMessageBox::MessageTypeInformation);
+            hbTrId("txt_phone_info_call_waiting_deactivated"), HbMessageBox::MessageTypeInformation);
     } else {
-        if (basicServiceGroupIds.count() != 0) {
-            emit showBasicServiceList(
-                hbTrId("Active for:"), basicServiceGroupIds);
-        } else {
-            emit showGlobalNote(m_activeNoteId,
-                hbTrId("cw active"), HbMessageBox::MessageTypeInformation);
-        }
+        emit showGlobalNote(m_activeNoteId,
+            hbTrId("txt_phone_info_call_waiting_activated"), HbMessageBox::MessageTypeInformation);
     }
     
     DPRINT << ": OUT";
@@ -485,23 +480,23 @@
     emit cancelNote(m_activeNoteId);
     if (result) {
         emit showGlobalNote(m_activeNoteId,
-            hbTrId("Request failed"), 
+            hbTrId("txt_phone_info_request_not_confirmed"), 
             HbMessageBox::MessageTypeWarning);
     } else {
         switch (command){
             case PSetCallWaitingWrapper::ActivateCallWaiting:
                 emit showGlobalNote(m_activeNoteId,
-                    hbTrId("Call waiting activated"), 
+                    hbTrId("txt_phone_info_call_waiting_activated"), 
                     HbMessageBox::MessageTypeInformation);
                 break;
             case PSetCallWaitingWrapper::DeactivateCallWaiting:
                 emit showGlobalNote(m_activeNoteId,
-                    hbTrId("Call waiting disabled"), 
+                    hbTrId("txt_phone_info_call_waiting_deactivated"), 
                     HbMessageBox::MessageTypeInformation);
                 break;
             default: 
                 emit showGlobalNote(m_activeNoteId,
-                    hbTrId("default"), 
+                    hbTrId("txt_phone_info_result_unknown"), 
                     HbMessageBox::MessageTypeInformation);
                 break;
         }
@@ -519,7 +514,7 @@
     Q_ASSERT(!(ongoing && interrupted));
     
     if (ongoing) {
-        emit showGlobalProgressNote(m_activeNoteId, hbTrId("Requesting"));
+        emit showGlobalProgressNote(m_activeNoteId, hbTrId("txt_phone_info_requesting"));
     }
     
     if (interrupted) {
--- a/phonesettings/cpphonesettingsplugins/callsplugin/tsrc/run_auto_tests_qt.bat	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/callsplugin/tsrc/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -54,14 +54,19 @@
 set INSTRUMENT=TRUE
 set REMOVEINSTRUMENT=TRUE
 set DOMODULESTESTS=TRUE
-set ABLD_CALL=abld build winscw udeb -keepgoing
+set SBS_CALL=sbs --config winscw_udeb --keepgoing BUILD
 set PATH_TO_DLL=\epoc32\release\winscw\udeb
 set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
 
 if not exist %PATH_TO_COVERAGE_DATA% (
 mkdir %PATH_TO_COVERAGE_DATA%
 )
 
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
 if [%1] EQU [] ( goto default )
 
 call :%1
@@ -132,12 +137,11 @@
 pushd .
 call cd %1
 call qmake
-call bldmake bldfiles
-call abld clean winscw udeb
+call sbs --config winscw_udeb --keepgoing CLEAN
 if [%INSTRUMENT%] EQU [TRUE] (
-call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
+call ctcwrap -2comp -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" "%SBS_CALL%"
 ) else (
-call %ABLD_CALL%
+call %SBS_CALL%
 )
 
 popd
@@ -152,7 +156,10 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
 :RUNTESTS
 echo Running tests
-for /f %%a in ('dir /b ut_*') do call %PATH_TO_DLL%\%%a.exe -dtextshell --
+for /f %%a in ('dir /b ut_*') do (
+    call %PATH_TO_DLL%\%%a.exe -dtextshell --
+    move \epoc32\winscw\c\data\%%a.log %PATH_TO_RESULT%\%%a.log
+)
 goto end
 
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
--- a/phonesettings/cpphonesettingsplugins/callsplugin/tsrc/ut_callsplugingroup/ut_callsplugingroup.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/callsplugin/tsrc/ut_callsplugingroup/ut_callsplugingroup.cpp	Mon May 03 12:31:11 2010 +0300
@@ -252,13 +252,6 @@
     EXPECT(CpPhoneNotes::showGlobalNote);
     m_callspluginGroup->handleCallWaitingGetStatus(
         PSetCallWaitingWrapper::StatusActive, basicServiceGroupIds);
-    
-    EXPECT(CpPhoneNotes::cancelNote);
-    EXPECT(CpPhoneNotes::showBasicServiceList);
-    basicServiceGroupIds << 0;
-    m_callspluginGroup->handleCallWaitingGetStatus(
-        PSetCallWaitingWrapper::StatusActive, basicServiceGroupIds);
-    
     QVERIFY(verify());
 }
 
--- a/phonesettings/cpphonesettingsplugins/cpnetworkplugin/cpnetworkplugin.pri	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/cpnetworkplugin.pri	Mon May 03 12:31:11 2010 +0300
@@ -15,10 +15,14 @@
 #
 
 # Input
-HEADERS += src/cpnetworkplugin.h \
+HEADERS += src/cellulardatasettings.h \
+           src/cellulardatasettings_s60_p.h \
+           src/cpnetworkplugin.h \
            src/cpnetworkpluginview.h \
            src/cpnetworkpluginform.h
 
-SOURCES += src/cpnetworkplugin.cpp \
+SOURCES += src/cellulardatasettings.cpp \
+           src/cellulardatasettings_s60.cpp \
+           src/cpnetworkplugin.cpp \
            src/cpnetworkpluginview.cpp \
            src/cpnetworkpluginform.cpp
--- a/phonesettings/cpphonesettingsplugins/cpnetworkplugin/cpnetworkplugin.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/cpnetworkplugin.pro	Mon May 03 12:31:11 2010 +0300
@@ -17,7 +17,7 @@
 TEMPLATE = lib
 TARGET = cpnetworkplugin
 CONFIG += hb plugin
-INCLUDEPATH += ../cptelephonyutils/inc
+INCLUDEPATH += ../cptelephonyutils/inc 
 
 MOC_DIR = moc
 OBJECTS_DIR = obj
@@ -29,6 +29,8 @@
         -lpsetwrapper \
         -lcptelephonyutils
 
+symbian*::LIBS += -lcmmanager
+
 include(../cpplugincommon.pri)
 include (cpnetworkplugin.pri)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cellulardatasettings.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,113 @@
+/*
+* 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
+
+// User includes
+
+#include "cellulardatasettings.h"
+#include "cellulardatasettings_s60_p.h"
+#include "cppluginlogging.h"
+
+/*!
+    \class CellularDataSettings
+    \brief Class for maintaining and updating the Cellular Data Settings.
+
+*/
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructor.
+*/
+
+CellularDataSettings::CellularDataSettings() :
+    QObject(),
+    d_ptr(new CellularDataSettingsPrivate(this))
+{
+    DPRINT;
+}
+
+/*!
+    Destructor.
+*/
+
+CellularDataSettings::~CellularDataSettings()
+{
+    DPRINT << ": IN";
+    
+    delete d_ptr;
+    
+    DPRINT << ": OUT";
+}
+
+/*!
+    Getter for setting "Cellular data usage in home network".
+*/
+
+int CellularDataSettings::dataUseHome()
+{
+    DPRINT;
+    
+    return d_ptr->dataUseHome();
+}
+
+/*!
+    Setter for setting "Cellular data usage in home network".
+*/
+
+void CellularDataSettings::setDataUseHome(int value)
+{
+    DPRINT << ": IN";
+    
+    // The value must be valid
+    Q_ASSERT(value <= DataUsageHomeWlanOnly);
+    d_ptr->setDataUseHome(value);
+    
+    DPRINT << ": OUT";
+}
+    
+/*!
+    Getter for setting "Cellular data usage when roaming".
+*/
+
+int CellularDataSettings::dataUseRoam()
+{
+    DPRINT;
+    
+    return d_ptr->dataUseRoam();
+}
+
+/*!
+    Getter for setting "Cellular data usage when roaming".
+*/
+
+void CellularDataSettings::setDataUseRoam(int value)
+{
+    DPRINT << ": IN";
+    
+    // The value must be valid
+    Q_ASSERT(value <= DataUsageAbroadWlanOnly);
+    d_ptr->setDataUseRoam(value);
+    
+    DPRINT << ": OUT";
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cellulardatasettings.h	Mon May 03 12:31:11 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:  
+*
+*/
+
+#ifndef CELLULARDATASETTINGS_H
+#define CELLULARDATASETTINGS_H
+
+// System includes
+
+#include <QObject>
+
+// User includes
+
+// Forward declarations
+
+class CellularDataSettingsPrivate;
+
+// External data types
+
+// Constants
+
+// Class declaration
+
+class CellularDataSettings : public QObject
+{
+    Q_OBJECT
+
+public:
+
+    // Data types
+    
+    // Setting values for "Data usage in home network"
+    enum DataUsageHome {
+        DataUsageHomeAutomatic = 0,     // These values must match the indexes in dropdown menu
+        DataUsageHomeConfirm,
+        DataUsageHomeWlanOnly
+    };
+    
+    // Setting values for "Data usage when roaming"
+    enum DataUsageAbroad {
+        DataUsageAbroadAutomatic = 0,   // These values must match the indexes in dropdown menu
+        DataUsageAbroadConfirm,
+        DataUsageAbroadWlanOnly
+    };
+
+    explicit CellularDataSettings();
+    virtual ~CellularDataSettings();
+
+    int dataUseHome();
+    void setDataUseHome(int value);
+    
+    int dataUseRoam();
+    void setDataUseRoam(int value);
+
+signals:
+
+public slots:
+
+protected:
+
+protected slots:
+
+private:
+
+    Q_DISABLE_COPY(CellularDataSettings)
+
+private slots:
+
+private: // data
+
+    // Friend classes
+
+    // Private implementation
+    CellularDataSettingsPrivate *d_ptr;
+};
+
+#endif // CELLULARDATASETTINGS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cellulardatasettings_s60.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,221 @@
+/*
+* 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 "cmmanager.h"
+
+// User includes
+
+#include "cellulardatasettings.h"
+#include "cellulardatasettings_s60_p.h"
+#include "cppluginlogging.h"
+
+// External function prototypes
+
+// Local constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructor.
+*/
+
+CellularDataSettingsPrivate::CellularDataSettingsPrivate(CellularDataSettings *q_pointer) :
+    q_ptr(q_pointer)
+{
+    DPRINT;
+}
+
+/*!
+    Destructor.
+*/
+
+CellularDataSettingsPrivate::~CellularDataSettingsPrivate()
+{
+    DPRINT;
+}
+
+/*!
+    Getter for setting "Cellular data usage in home network".
+*/
+
+int CellularDataSettingsPrivate::dataUseHome()
+{
+    DPRINT << ": IN";
+    
+    int result = 0;
+
+    // Read the setting
+    TCmGenConnSettings settings;
+    readSettings(&settings);
+    
+    // Map the settings read result
+    switch (settings.iCellularDataUsageHome) {
+    case ECmCellularDataUsageAutomatic:
+        result = CellularDataSettings::DataUsageHomeAutomatic;
+        break;
+
+    case ECmCellularDataUsageConfirm:
+        result = CellularDataSettings::DataUsageHomeConfirm;
+        break;
+
+    case ECmCellularDataUsageDisabled:
+        result = CellularDataSettings::DataUsageHomeWlanOnly;
+        break;
+    }
+    
+    DPRINT << ": OUT";
+    
+    return result;
+}
+
+/*!
+    Setter for setting "Cellular data usage in home network".
+*/
+
+void CellularDataSettingsPrivate::setDataUseHome(int value)
+{
+    DPRINT << ": IN";
+    
+    TCmGenConnSettings settings;
+    
+    readSettings(&settings);    
+    switch (value) {
+    case CellularDataSettings::DataUsageHomeAutomatic:
+        settings.iCellularDataUsageHome = ECmCellularDataUsageAutomatic; 
+        break;
+
+    case CellularDataSettings::DataUsageHomeConfirm:
+        settings.iCellularDataUsageHome = ECmCellularDataUsageConfirm;
+        break;
+
+    case CellularDataSettings::DataUsageHomeWlanOnly:
+        settings.iCellularDataUsageHome = ECmCellularDataUsageDisabled;
+        break;
+    }
+    writeSettings(&settings);
+    
+    DPRINT << ": OUT";
+}
+    
+/*!
+    Getter for setting "Cellular data usage when roaming".
+*/
+
+int CellularDataSettingsPrivate::dataUseRoam()
+{
+    DPRINT << ": IN";
+    
+    int result = 0;
+
+    // Read the setting
+    TCmGenConnSettings settings;
+    readSettings(&settings);
+    
+    // Map the settings read result
+    switch (settings.iCellularDataUsageVisitor) {
+    case ECmCellularDataUsageAutomatic:
+        result = CellularDataSettings::DataUsageAbroadAutomatic;
+        break;
+        
+    case ECmCellularDataUsageConfirm:
+        result = CellularDataSettings::DataUsageAbroadConfirm;
+        break;
+        
+    case ECmCellularDataUsageDisabled:
+        result = CellularDataSettings::DataUsageAbroadWlanOnly;
+        break;
+    }
+    
+    DPRINT << ": OUT";
+    
+    return result;
+}
+
+/*!
+    Getter for setting "Cellular data usage when roaming".
+*/
+
+void CellularDataSettingsPrivate::setDataUseRoam(int value)
+{
+    DPRINT << ": IN";
+    
+    TCmGenConnSettings settings;
+    
+    readSettings(&settings);    
+    switch (value) {
+    case CellularDataSettings::DataUsageAbroadAutomatic:
+        settings.iCellularDataUsageVisitor = ECmCellularDataUsageAutomatic; 
+        break;
+
+    case CellularDataSettings::DataUsageAbroadConfirm:
+        settings.iCellularDataUsageVisitor = ECmCellularDataUsageConfirm;
+        break;
+
+    case CellularDataSettings::DataUsageAbroadWlanOnly:
+        settings.iCellularDataUsageVisitor = ECmCellularDataUsageDisabled;
+        break;
+    }
+    writeSettings(&settings);
+    
+    DPRINT << ": OUT";
+}
+
+/*!
+    Cellular data settings reading from CM Manager.
+*/
+
+void CellularDataSettingsPrivate::readSettings(TCmGenConnSettings *settings)
+{
+    DPRINT << ": IN";
+    
+    QT_TRAP_THROWING(
+        RCmManager CmManager;
+        CmManager.CreateTablesAndOpenL();
+        CleanupClosePushL(CmManager); 
+        CmManager.ReadGenConnSettingsL(*settings);
+        CleanupStack::PopAndDestroy(1));
+    
+    DPRINT << ": Read: iCellularDataUsageHome= " << settings->iCellularDataUsageHome;
+    DPRINT << ": Read: iCellularDataUsageVisitor= " << settings->iCellularDataUsageVisitor;
+    
+    DPRINT << ": OUT";
+    
+}
+
+/*!
+    Cellular data settings writing to CM Manager.
+*/
+
+void CellularDataSettingsPrivate::writeSettings(TCmGenConnSettings *settings)
+{
+    DPRINT << ": IN";
+    
+    DPRINT << ": Write: iCellularDataUsageHome= " << settings->iCellularDataUsageHome;
+    DPRINT << ": Write: iCellularDataUsageVisitor=" << settings->iCellularDataUsageVisitor;
+
+    QT_TRAP_THROWING(
+        RCmManager CmManager;
+        CmManager.CreateTablesAndOpenL();
+        CleanupClosePushL(CmManager); 
+        CmManager.WriteGenConnSettingsL(*settings);
+        CleanupStack::PopAndDestroy(1););
+    
+    DPRINT << ": OUT";
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cellulardatasettings_s60_p.h	Mon May 03 12:31:11 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:  
+*
+*/
+
+#ifndef CELLULARDATASETTINGS_S60_P_H
+#define CELLULARDATASETTINGS_S60_P_H
+
+// System includes
+
+// User includes
+
+// Forward declarations
+
+class CellularDataSettings;
+class TCmGenConnSettings;
+
+// External data types
+
+// Constants
+
+// Class declaration
+
+class CellularDataSettingsPrivate
+{
+
+public:
+
+    // Data types
+    
+    explicit CellularDataSettingsPrivate(CellularDataSettings *q_pointer);
+    virtual ~CellularDataSettingsPrivate();
+
+    int dataUseHome();
+    void setDataUseHome(int value);
+    
+    int dataUseRoam();
+    void setDataUseRoam(int value);
+
+signals:
+
+public slots:
+
+protected:
+
+protected slots:
+
+private:
+
+    Q_DISABLE_COPY(CellularDataSettingsPrivate)
+
+    void readSettings(TCmGenConnSettings *settings);
+    
+    void writeSettings(TCmGenConnSettings *settings);
+
+private slots:
+
+private: // data
+
+    // Friend classes
+
+    // Public implementation pointer
+    CellularDataSettings *q_ptr;
+};
+
+#endif // CELLULARDATASETTINGS_S60_P_H
--- a/phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkplugin.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkplugin.cpp	Mon May 03 12:31:11 2010 +0300
@@ -48,8 +48,8 @@
     QList<CpSettingFormItemData*> ret;
     ret.append(new CpSettingFormEntryItemDataImpl<CpNetworkPluginView>(
             itemDataHelper,
-            hbTrId("Mobile network"), 
-            hbTrId("Mobile network settings")));
+            hbTrId("txt_cp_dblist_mobile_network"), 
+            hbTrId("")));
     return ret;
 }
 
--- a/phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkpluginform.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkpluginform.cpp	Mon May 03 12:31:11 2010 +0300
@@ -30,6 +30,7 @@
 #include "cpplugincommon.h"
 #include "cppluginlogging.h"
 #include "cpphonenotes.h"
+#include "cellulardatasettings.h"
 
 /*!
   CpNetworkPluginForm::CpNetworkPluginForm
@@ -39,14 +40,16 @@
     m_activeNoteId(0),
     m_activeProgressNoteId(0),
     m_pSetWrapper(NULL),
-    m_cpSettingsWrapper(NULL)
+    m_cpSettingsWrapper(NULL),
+    mCellularSettings()
 {
     DPRINT << ": IN";
     
-    setHeading(hbTrId("Mobile network"));
+    setHeading(hbTrId("txt_cp_subhead_mobile_network"));
     
     QScopedPointer<PSetWrapper> pSetWrapperGuard(new PSetWrapper);
     m_psetNetworkWrapper = &pSetWrapperGuard->networkWrapper();
+    mCellularSettings = QSharedPointer<CellularDataSettings>(new CellularDataSettings);
     connectToNetworkWrapper(*m_psetNetworkWrapper);
     connectToPhoneNotes(*CpPhoneNotes::instance());
     
@@ -57,6 +60,10 @@
     model->appendDataFormItem(createNetworkModeItem());
     // #2 Use phone settings for operator selection
     model->appendDataFormItem(createOperatorSelectionItem());
+    // Home network cellular data usage
+    model->appendDataFormItem(createHomeDataUsageItem());
+    // Cellular network data usage when roaming
+    model->appendDataFormItem(createRoamDataUsageItem());
     setModel(model.take());
     m_pSetWrapper = pSetWrapperGuard.take();
     m_cpSettingsWrapper = cpSettingsWrapperGuard.take();
@@ -89,12 +96,14 @@
 
     m_NetworkModeOptionsItemData = new CpSettingFormItemData(
         HbDataFormModelItem::ComboBoxItem, 
-        hbTrId("Network mode"), 
+        hbTrId("txt_cp_setlabel_network_mode"), 
         NULL );
     QScopedPointer<CpSettingFormItemData> settingFormItemGuard(
         m_NetworkModeOptionsItemData);
     
-    mNetworkModeOptions << hbTrId("Dual mode") << hbTrId("UMTS") << hbTrId("GSM");
+    mNetworkModeOptions << hbTrId("txt_cp_setlabel_network_mode_val_dual_mode")
+                        << hbTrId("txt_cp_setlabel_network_mode_val_umts")
+                        << hbTrId("txt_cp_setlabel_network_mode_val_gsm");
     m_NetworkModeOptionsItemData->setContentWidgetData(
         "items", QVariant(mNetworkModeOptions));
     
@@ -133,7 +142,7 @@
     
     m_NetworkOperatorSelectionItemData = new CpSettingFormItemData(
         HbDataFormModelItem::ToggleValueItem, 
-        hbTrId("Operator selection"), 
+        hbTrId("txt_cp_setlabel_operator_selection"), 
         NULL);
     QScopedPointer<CpSettingFormItemData> settingFormItemGuard(
         m_NetworkOperatorSelectionItemData);
@@ -145,11 +154,11 @@
         switch (mode) {
             case PSetNetworkWrapper::SelectionModeAutomatic: 
                 m_NetworkOperatorSelectionItemData->setContentWidgetData(
-                    "text", QVariant(hbTrId("Automatic")));
+                    "text", QVariant(hbTrId("txt_cp_setlabel_operator_selection_val_automatic")));
                 break;
             case PSetNetworkWrapper::SelectionModeManual: 
                 m_NetworkOperatorSelectionItemData->setContentWidgetData(
-                    "text", QVariant(hbTrId("Manual")));
+                    "text", QVariant(hbTrId("txt_cp_setlabel_operator_selection_val_manual")));
                 break;
             default:
                 break;
@@ -166,6 +175,108 @@
 }
 
 /*!
+  CpNetworkPluginForm::createHomeDataUsageItem
+  */
+HbDataFormModelItem *CpNetworkPluginForm::createHomeDataUsageItem()
+{
+    DPRINT << ": IN";
+    
+    mCellularUseHomeSelectionItemData = new CpSettingFormItemData(
+        HbDataFormModelItem::ComboBoxItem, 
+        hbTrId("txt_cp_setlabel_data_usage_in_home_network"), 
+        NULL);
+    QScopedPointer<CpSettingFormItemData> settingFormItemGuard(
+        mCellularUseHomeSelectionItemData);
+
+    // Populate the dropdown with selection items
+    mCellularUseHomeOptions
+        << hbTrId("txt_cp_setlabel_data_usage_in_val_automatic")
+        << hbTrId("txt_cp_setlabel_data_usage_in_val_confirm")
+        << hbTrId("txt_cp_setlabel_data_usage_in_val_disabled");
+    mCellularUseHomeSelectionItemData->setContentWidgetData(
+        "items",
+        QVariant(mCellularUseHomeOptions));
+
+    // Set initial selection based on current setting
+    mCellularUseHomeSelectionItemData->setContentWidgetData(
+        "currentIndex",
+        mCellularSettings->dataUseHome());      // NOTE: Indexes must match!
+
+    addConnection(
+        mCellularUseHomeSelectionItemData, 
+        SIGNAL(currentIndexChanged(int)),
+        this, 
+        SLOT(cellularDataUseHomeStateChanged(int)));
+    
+    settingFormItemGuard.take();
+    DPRINT << ": OUT";
+    return mCellularUseHomeSelectionItemData;
+}
+
+/*!
+  CpNetworkPluginForm::cellularDataUseHomeStateChanged
+  */
+void CpNetworkPluginForm::cellularDataUseHomeStateChanged(int index)
+{
+    DPRINT << ": IN : index: " << index;
+
+    mCellularSettings->setDataUseHome(index);
+    
+    DPRINT << ": OUT";
+}
+
+/*!
+  CpNetworkPluginForm::createRoamDataUsageItem
+  */
+HbDataFormModelItem *CpNetworkPluginForm::createRoamDataUsageItem()
+{
+    DPRINT << ": IN";
+    
+    mCellularUseRoamSelectionItemData = new CpSettingFormItemData(
+        HbDataFormModelItem::ComboBoxItem, 
+        hbTrId("txt_cp_setlabel_data_usage_when_roaming"), 
+        NULL);
+    QScopedPointer<CpSettingFormItemData> settingFormItemGuard(
+        mCellularUseRoamSelectionItemData);
+
+    // Populate the dropdown with selection items
+    mCellularUseRoamOptions
+        << hbTrId("txt_cp_setlabel_data_usage_when_val_automatic")
+        << hbTrId("txt_cp_setlabel_data_usage_when_val_confirm")
+        << hbTrId("txt_cp_setlabel_data_usage_when_val_disabled");
+    mCellularUseRoamSelectionItemData->setContentWidgetData(
+        "items",
+        QVariant(mCellularUseRoamOptions));
+
+    // Set initial selection based on current setting
+    mCellularUseRoamSelectionItemData->setContentWidgetData(
+        "currentIndex",
+        mCellularSettings->dataUseRoam());      // NOTE: Indexes must match!
+
+    addConnection(
+        mCellularUseRoamSelectionItemData, 
+        SIGNAL(currentIndexChanged(int)),
+        this, 
+        SLOT(cellularDataUseRoamStateChanged(int)));
+    
+    settingFormItemGuard.take();
+    DPRINT << ": OUT";
+    return mCellularUseRoamSelectionItemData;
+}
+
+/*!
+  CpNetworkPluginForm::cellularDataUseRoamStateChanged
+  */
+void CpNetworkPluginForm::cellularDataUseRoamStateChanged(int index)
+{
+    DPRINT << ": IN : index: " << index;
+
+    mCellularSettings->setDataUseRoam(index);
+    
+    DPRINT << ": OUT";
+}
+
+/*!
   CpNetworkPluginForm::networkModeStateChanged
   */
 void CpNetworkPluginForm::networkModeStateChanged(int index)
@@ -174,7 +285,7 @@
     DPRINT << ": IN : index: " << index;
     
     if(isPhoneOnLine()) {
-        if(index == 0){
+        if(index == 0) {
             dualModeSelection();
         } else if(index == 1) {
             umtsSelection();
@@ -208,12 +319,12 @@
             case PSetNetworkWrapper::SelectionModeAutomatic: 
                 manualOperatorSelection();
                 m_NetworkOperatorSelectionItemData->setContentWidgetData(
-                    "text", QVariant(hbTrId("Manual")));
+                    "text", QVariant(hbTrId("txt_cp_setlabel_operator_selection_val_manual")));
                 break;
             case PSetNetworkWrapper::SelectionModeManual: 
                 automaticOperatorSelection();
                 m_NetworkOperatorSelectionItemData->setContentWidgetData(
-                    "text", QVariant(hbTrId("Automatic")));
+                    "text", QVariant(hbTrId("txt_cp_setlabel_operator_selection_val_automatic")));
                 break;
             default:
                 break;
@@ -391,16 +502,16 @@
     QString text;
     switch(error) {
         case PSetNetworkWrapper::ErrCauseCallActive:
-            text = hbTrId("Call in progress");
+            text = hbTrId("txt_cp_info_active_calls_must_be_disconnected_befo");
             break;
         case PSetNetworkWrapper::ErrNoNetworkService:
-            text = hbTrId("No network found");
+            text = hbTrId("txt_cp_info_no_operators_found");
             break;
         case PSetNetworkWrapper::ErrOfflineOpNotAllowed:
-            text = hbTrId("Off-line, not alloowed");
+            text = hbTrId("Off-line, not allowed");
             break;
         case PSetNetworkWrapper::ErrNoNetworkAccess:
-            text = hbTrId("No access");
+            text = hbTrId("txt_cp_info_no_access_to_selected_operators_netwo");
             break;
         default:
             break;
@@ -452,7 +563,7 @@
         QObject::connect(
             CpPhoneNotes::instance(), SIGNAL(progressNoteCanceled()),
             this, SLOT(userCancel()));
-        emit showGlobalProgressNote(m_activeProgressNoteId, hbTrId("Searching..."));
+        emit showGlobalProgressNote(m_activeProgressNoteId, hbTrId("txt_cp_info_updating"));
     } else {
         QObject::disconnect(
             CpPhoneNotes::instance(), SIGNAL(progressNoteCanceled()),
@@ -524,7 +635,7 @@
 {
     DPRINT << ": IN";
     
-    HbDialog *dialog = createDialog(hbTrId("Available networks"));
+    HbDialog *dialog = createDialog(hbTrId("txt_cp_title_select_operator"));
     HbListWidget *list = new HbListWidget(dialog);
     //then insert found networks
     int itemsCount = m_networkInfoList->count();
@@ -540,7 +651,7 @@
         list, SIGNAL(activated(HbListWidgetItem*)), 
         dialog, SLOT(close()));
     // Sets the "Cancel"-action/button
-    HbAction *cancelAction = new HbAction(hbTrId("Cancel"));
+    HbAction *cancelAction = new HbAction(hbTrId("txt_common_button_cancel"));
     dialog->setPrimaryAction(cancelAction);
     dialog->setContentWidget(list);
     // Launch popup and handle the response
@@ -594,11 +705,11 @@
         switch (mode) {
             case PSetNetworkWrapper::SelectionModeAutomatic: 
                 m_NetworkOperatorSelectionItemData->setContentWidgetData(
-                    "text", QVariant(hbTrId("Automatic")));
+                    "text", QVariant(hbTrId("txt_cp_setlabel_operator_selection_val_automatic")));
                 break;
             case PSetNetworkWrapper::SelectionModeManual: 
                 m_NetworkOperatorSelectionItemData->setContentWidgetData(
-                    "text", QVariant(hbTrId("Manual")));
+                    "text", QVariant(hbTrId("txt_cp_setlabel_operator_selection_val_manual")));
                 break;
             default:
                 break;
@@ -720,4 +831,17 @@
     return onLine;
 }
 
+/*!
+  CpNetworkPluginForm::SearchAvailableNetworks
+ */
+void CpNetworkPluginForm::SearchAvailableNetworks()
+{
+    DPRINT << ": IN";
+    
+    m_psetNetworkWrapper->cancelRequest();
+    manualOperatorSelection();
+        
+    DPRINT << ": OUT";
+}
+
 // End of File. 
--- a/phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkpluginform.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkpluginform.h	Mon May 03 12:31:11 2010 +0300
@@ -20,6 +20,7 @@
 
 #include <hbdataform.h>
 #include <QStringList>
+#include <QSharedPointer>
 #include <psetnetworkwrapper.h>
 #include <hbmessagebox.h>
 
@@ -30,6 +31,7 @@
 class PSetNetworkWrapper;
 class CpSettingFormItemData;
 class CpPhoneNotes;
+class CellularDataSettings;
 
 class CpNetworkPluginForm : public HbDataForm
 {
@@ -41,6 +43,8 @@
     
     virtual ~CpNetworkPluginForm();
     
+    void SearchAvailableNetworks();
+    
 signals:
     
     void showGlobalProgressNote(int &noteId, const QString& text);
@@ -50,6 +54,8 @@
 
 public slots: 
 
+    void cellularDataUseHomeStateChanged(int index);
+    void cellularDataUseRoamStateChanged(int index);
     void networkModeStateChanged(int index);
     void operatorSelectionStateChanged(bool index);
     void networkAccessModeGot(int mode);
@@ -68,6 +74,8 @@
 private:     
     HbDataFormModelItem *createNetworkModeItem();
     HbDataFormModelItem *createOperatorSelectionItem();
+    HbDataFormModelItem *createHomeDataUsageItem();
+    HbDataFormModelItem *createRoamDataUsageItem();
     
     void automaticOperatorSelection();
     void manualOperatorSelection();
@@ -94,16 +102,21 @@
     
     QStringList mNetworkModeOptions;
     QStringList mOperatorSelectionOptions;
+    QStringList mCellularUseHomeOptions;
+    QStringList mCellularUseRoamOptions;
     int m_activeNoteId;
     int m_activeProgressNoteId;
     // Own
     PSetWrapper *m_pSetWrapper;
     CpSettingsWrapper *m_cpSettingsWrapper;
+    QSharedPointer<CellularDataSettings> mCellularSettings;
     
     // Not own
     PSetNetworkWrapper *m_psetNetworkWrapper;
     CpSettingFormItemData *m_NetworkModeOptionsItemData;
     CpSettingFormItemData *m_NetworkOperatorSelectionItemData;
+    CpSettingFormItemData *mCellularUseHomeSelectionItemData;
+    CpSettingFormItemData *mCellularUseRoamSelectionItemData;
     QList<PSetNetworkWrapper::NetworkInfo*> *m_networkInfoList;
 };
 
--- a/phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkpluginview.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkpluginview.cpp	Mon May 03 12:31:11 2010 +0300
@@ -60,4 +60,16 @@
     DPRINT << ": OUT";
 }
 
+/*!
+  CpNetworkPluginView::SearchAvailableNetworks
+ */
+void CpNetworkPluginView::SearchAvailableNetworks()
+{
+    DPRINT << ": IN";
+    
+    m_networkSettingsForm->SearchAvailableNetworks();
+    
+    DPRINT << ": OUT";
+}
+    
 // End of File. 
--- a/phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkpluginview.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/src/cpnetworkpluginview.h	Mon May 03 12:31:11 2010 +0300
@@ -31,6 +31,10 @@
     explicit CpNetworkPluginView(QGraphicsItem *parent = 0);
     
     virtual ~CpNetworkPluginView();
+    
+public slots: 
+
+    void SearchAvailableNetworks();
 
 private:
     
--- a/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/run_auto_tests_qt.bat	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -54,14 +54,19 @@
 set INSTRUMENT=TRUE
 set REMOVEINSTRUMENT=TRUE
 set DOMODULESTESTS=TRUE
-set ABLD_CALL=abld build winscw udeb -keepgoing
+set SBS_CALL=sbs --config winscw_udeb --keepgoing BUILD
 set PATH_TO_DLL=\epoc32\release\winscw\udeb
 set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
 
 if not exist %PATH_TO_COVERAGE_DATA% (
 mkdir %PATH_TO_COVERAGE_DATA%
 )
 
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
 if [%1] EQU [] ( goto default )
 
 call :%1
@@ -132,12 +137,11 @@
 pushd .
 call cd %1
 call qmake
-call bldmake bldfiles
-call abld clean winscw udeb
+call sbs --config winscw_udeb --keepgoing CLEAN
 if [%INSTRUMENT%] EQU [TRUE] (
-call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
+call ctcwrap -2comp -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" "%SBS_CALL%"
 ) else (
-call %ABLD_CALL%
+call %SBS_CALL%
 )
 
 popd
@@ -152,7 +156,10 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
 :RUNTESTS
 echo Running tests
-for /f %%a in ('dir /b ut_*') do call %PATH_TO_DLL%\%%a.exe
+for /f %%a in ('dir /b ut_*') do (
+    call %PATH_TO_DLL%\%%a.exe
+    move \epoc32\winscw\c\data\%%a.log %PATH_TO_RESULT%\%%a.log
+)
 goto end
 
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cellulardatasettings/qtestmains60.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* 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 QTESTMAINS60
+#define QTESTMAINS60
+
+#define QTEST_MAIN_S60(TestObject) \
+int main(int argc, char *argv[]) \
+{ \
+char *new_argv[3]; \
+QCoreApplication app(argc, argv); \
+\
+QString str = "C:\\data\\" + QFileInfo(QCoreApplication::applicationFilePath()).baseName() + ".log"; \
+QByteArray   bytes  = str.toAscii(); \
+\
+char arg1[] = "-o"; \
+\
+new_argv[0] = argv[0]; \
+new_argv[1] = arg1; \
+new_argv[2] = bytes.data(); \
+\
+TestObject tc; \
+return QTest::qExec(&tc, 3, new_argv); \
+}
+
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cellulardatasettings/ut_cellulardatasettings.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,192 @@
+/*
+* 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:
+*
+*/
+
+#include "ut_cellulardatasettings.h"
+#include "qtestmains60.h"
+#include "cmmanager.h"
+#define private public
+#include "cellulardatasettings.h"
+
+TCmGenConnSettings g_settings;
+
+void fillSettings(TCmGenConnSettings& aGenConnSettings)
+{
+    aGenConnSettings = g_settings;
+}
+
+/*!
+  UT_CellularDataSettings::UT_CellularDataSettings
+ */
+UT_CellularDataSettings::UT_CellularDataSettings() 
+    : m_cellularDataSettings(NULL)
+{
+
+}
+
+
+/*!
+  UT_CellularDataSettings::~UT_CellularDataSettings
+ */
+UT_CellularDataSettings::~UT_CellularDataSettings()
+{
+    delete m_cellularDataSettings;
+}
+
+
+/*!
+  UT_CellularDataSettings::init
+ */
+void UT_CellularDataSettings::init()
+{
+    initialize();
+    m_cellularDataSettings = new CellularDataSettings;
+}
+
+
+/*!
+  UT_CellularDataSettings::cleanup
+ */
+void UT_CellularDataSettings::cleanup()
+{
+    reset();
+    
+    delete m_cellularDataSettings;
+    m_cellularDataSettings = NULL;
+}
+
+/*!
+  UT_CellularDataSettings::t_memleak
+ */
+void UT_CellularDataSettings::t_memleak()
+{
+    
+}
+
+/*!
+  UT_CellularDataSettings::t_dataUseHome
+ */
+void UT_CellularDataSettings::t_dataUseHome()
+{
+    g_settings.iCellularDataUsageVisitor = TCmCellularDataUsage(-1);
+    g_settings.iCellularDataUsageHome = ECmCellularDataUsageAutomatic;
+    expect("RCmManager::CreateTablesAndOpenL");
+    expect("RCmManager::ReadGenConnSettingsL").willOnce(invoke(fillSettings));
+    expect("RCmManager::Close");
+    QVERIFY(CellularDataSettings::DataUsageHomeAutomatic == m_cellularDataSettings->dataUseHome());
+    QVERIFY(verify());
+    
+    g_settings.iCellularDataUsageHome = ECmCellularDataUsageConfirm;
+    expect("RCmManager::CreateTablesAndOpenL");
+    expect("RCmManager::ReadGenConnSettingsL").willOnce(invoke(fillSettings));
+    expect("RCmManager::Close");
+    QVERIFY(CellularDataSettings::DataUsageHomeConfirm == m_cellularDataSettings->dataUseHome());
+    QVERIFY(verify());
+    
+    g_settings.iCellularDataUsageHome = ECmCellularDataUsageDisabled;
+    expect("RCmManager::CreateTablesAndOpenL");
+    expect("RCmManager::ReadGenConnSettingsL").willOnce(invoke(fillSettings));
+    expect("RCmManager::Close");
+    QVERIFY(CellularDataSettings::DataUsageHomeWlanOnly == m_cellularDataSettings->dataUseHome());
+    QVERIFY(verify());
+}
+
+
+/*!
+  UT_CellularDataSettings::t_setDataUseHome
+ */
+void UT_CellularDataSettings::t_setDataUseHome()
+{
+    TCmGenConnSettings res;
+    res.iCellularDataUsageHome = ECmCellularDataUsageAutomatic;
+    expect("RCmManager::CreateTablesAndOpenL");
+    expect("RCmManager::WriteGenConnSettingsL").with(res);
+    expect("RCmManager::Close");
+    m_cellularDataSettings->setDataUseHome(CellularDataSettings::DataUsageHomeAutomatic);
+    QVERIFY(verify());
+    
+    res.iCellularDataUsageHome = ECmCellularDataUsageConfirm;
+    expect("RCmManager::CreateTablesAndOpenL");
+    expect("RCmManager::WriteGenConnSettingsL").with(res);
+    expect("RCmManager::Close");
+    m_cellularDataSettings->setDataUseHome(CellularDataSettings::DataUsageHomeConfirm);
+    QVERIFY(verify());
+    
+    res.iCellularDataUsageHome = ECmCellularDataUsageDisabled;
+    expect("RCmManager::CreateTablesAndOpenL");
+    expect("RCmManager::WriteGenConnSettingsL").with(res);
+    expect("RCmManager::Close");
+    m_cellularDataSettings->setDataUseHome(CellularDataSettings::DataUsageHomeWlanOnly);
+    QVERIFY(verify());
+}
+
+/*!
+  UT_CellularDataSettings::t_dataUseRoam
+ */
+void UT_CellularDataSettings::t_dataUseRoam()
+{
+    g_settings.iCellularDataUsageHome = TCmCellularDataUsage(-1);
+    g_settings.iCellularDataUsageVisitor = ECmCellularDataUsageAutomatic;
+    expect("RCmManager::CreateTablesAndOpenL");
+    expect("RCmManager::ReadGenConnSettingsL").willOnce(invoke(fillSettings));
+    expect("RCmManager::Close");
+    QVERIFY(CellularDataSettings::DataUsageAbroadAutomatic == m_cellularDataSettings->dataUseRoam());
+    QVERIFY(verify());
+    
+    g_settings.iCellularDataUsageVisitor = ECmCellularDataUsageConfirm;
+    expect("RCmManager::CreateTablesAndOpenL");
+    expect("RCmManager::ReadGenConnSettingsL").willOnce(invoke(fillSettings));
+    expect("RCmManager::Close");
+    QVERIFY(CellularDataSettings::DataUsageAbroadConfirm == m_cellularDataSettings->dataUseRoam());
+    QVERIFY(verify());
+    
+    g_settings.iCellularDataUsageVisitor = ECmCellularDataUsageDisabled;
+    expect("RCmManager::CreateTablesAndOpenL");
+    expect("RCmManager::ReadGenConnSettingsL").willOnce(invoke(fillSettings));
+    expect("RCmManager::Close");
+    QVERIFY(CellularDataSettings::DataUsageAbroadWlanOnly == m_cellularDataSettings->dataUseRoam());
+    QVERIFY(verify());
+}
+
+/*!
+  UT_CellularDataSettings::t_setDataUseRoam
+ */
+void UT_CellularDataSettings::t_setDataUseRoam()
+{
+    TCmGenConnSettings res;
+    res.iCellularDataUsageVisitor = ECmCellularDataUsageAutomatic;
+    expect("RCmManager::CreateTablesAndOpenL");
+    expect("RCmManager::WriteGenConnSettingsL").with(res);
+    expect("RCmManager::Close");
+    m_cellularDataSettings->setDataUseRoam(CellularDataSettings::DataUsageAbroadAutomatic);
+    QVERIFY(verify());
+    
+    res.iCellularDataUsageVisitor = ECmCellularDataUsageConfirm;
+    expect("RCmManager::CreateTablesAndOpenL");
+    expect("RCmManager::WriteGenConnSettingsL").with(res);
+    expect("RCmManager::Close");
+    m_cellularDataSettings->setDataUseRoam(CellularDataSettings::DataUsageAbroadConfirm);
+    QVERIFY(verify());
+    
+    res.iCellularDataUsageVisitor = ECmCellularDataUsageDisabled;
+    expect("RCmManager::CreateTablesAndOpenL");
+    expect("RCmManager::WriteGenConnSettingsL").with(res);
+    expect("RCmManager::Close");
+    m_cellularDataSettings->setDataUseRoam(CellularDataSettings::DataUsageAbroadWlanOnly);
+    QVERIFY(verify());
+}
+
+QTEST_MAIN_S60(UT_CellularDataSettings)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cellulardatasettings/ut_cellulardatasettings.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* 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 UT_CELLULARDATASETTINGS_H
+#define UT_CELLULARDATASETTINGS_H
+
+#include <QtTest/QtTest>
+#include <mockservice.h>
+
+class CellularDataSettings;
+
+class UT_CellularDataSettings : public QObject, MockService
+{
+    Q_OBJECT
+
+public:    
+    UT_CellularDataSettings();
+    ~UT_CellularDataSettings();
+    
+private slots:
+
+    void init();
+    
+    void t_memleak();
+    void t_dataUseHome();
+    void t_setDataUseHome();
+    void t_dataUseRoam();
+    void t_setDataUseRoam();
+    void cleanup();
+    
+private:
+    CellularDataSettings *m_cellularDataSettings;
+
+};
+
+#endif // UT_CELLULARDATASETTINGS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cellulardatasettings/ut_cellulardatasettings.pro	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,49 @@
+#
+# 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: Project file for building unit test component
+#
+#
+
+CONFIG += qtestlib hb
+TEMPLATE = app
+TARGET = 
+DEPENDPATH += . ../../src/
+INCLUDEPATH += .
+INCLUDEPATH +=../../../inc 
+INCLUDEPATH +=../../../cptelephonyutils/inc
+
+QT -= gui
+QT += testlib
+
+symbian: {
+  CONFIG += no_icon
+    INCLUDEPATH += /epoc32/include/mw/QtTest \
+        /epoc32/include/platform/mw \
+        /epoc32/include/mw/qt
+  LIBS += -lmocklib \
+        -lsymbianmock
+}
+    
+# test code
+HEADERS += ut_cellulardatasettings.h
+SOURCES += ut_cellulardatasettings.cpp
+
+# code to be tested
+HEADERS += ../../src/cellulardatasettings.h
+
+SOURCES += ../../src/cellulardatasettings.cpp
+SOURCES += ../../src/cellulardatasettings_s60.cpp
+
+# mocks needed for testing
+SOURCES += ../../../tsrc/mocks/mock_cmmanager.cpp
--- a/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkplugin/ut_cpnetworkplugin.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkplugin/ut_cpnetworkplugin.pro	Mon May 03 12:31:11 2010 +0300
@@ -49,3 +49,4 @@
 
 # mocks needed for testing
 SOURCES += ../../../tsrc/mocks/mock_cpnetworkpluginview.cpp
+SOURCES += ../../../tsrc/mocks/mock_hbicon.cpp
--- a/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkpluginform/qtestmains60.h	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +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 QTESTMAINS60
-#define QTESTMAINS60
-
-#define QTEST_MAIN_S60(TestObject) \
-int main(int argc, char *argv[]) \
-{ \
-char *new_argv[3]; \
-QCoreApplication app(argc, argv); \
-\
-QString str = "C:\\data\\" + QFileInfo(QCoreApplication::applicationFilePath()).baseName() + ".log"; \
-QByteArray   bytes  = str.toAscii(); \
-\
-char arg1[] = "-o"; \
-\
-new_argv[0] = argv[0]; \
-new_argv[1] = arg1; \
-new_argv[2] = bytes.data(); \
-\
-TestObject tc; \
-return QTest::qExec(&tc, 3, new_argv); \
-}
-
-#endif
\ No newline at end of file
--- a/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkpluginform/ut_cpnetworkpluginform.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkpluginform/ut_cpnetworkpluginform.pro	Mon May 03 12:31:11 2010 +0300
@@ -47,6 +47,7 @@
 # code to be tested
 HEADERS += ../../src/cpnetworkplugin.h \
            ../../src/cpnetworkpluginform.h \
+           ../../src/cellulardatasettings.h \
            ../../../cptelephonyutils/inc/cpplugincommon.h \
            ../../../cptelephonyutils/inc/cpphonenotes.h \
            /epoc32/include/platform/mw/psetwrapper.h \
@@ -55,7 +56,7 @@
            /epoc32/include/platform/mw/psetcalldivertingwrapper.h \
            /epoc32/include/platform/mw/psetnetworkwrapper.h
 
-SOURCES += ../../src/cpnetworkpluginform.cpp
+SOURCES += ../../src/cpnetworkpluginform.cpp 
 
 # mocks needed for testing
 SOURCES += ../../../tsrc/mocks/mock_cpnetworkplugin.cpp \
@@ -75,5 +76,6 @@
            ../../../tsrc/mocks/mock_hbaction.cpp \
            ../../../tsrc/mocks/mock_qaction.cpp \
            ../../../tsrc/mocks/mock_qobject.cpp \
-           ../../../tsrc/mocks/mock_hblistwidgetitem.cpp 
+           ../../../tsrc/mocks/mock_hblistwidgetitem.cpp \
+           ../../../tsrc/mocks/mock_cellulardatasettings.cpp
            
\ No newline at end of file
--- a/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkpluginview/qtestmains60.h	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +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 QTESTMAINS60
-#define QTESTMAINS60
-
-#define QTEST_MAIN_S60(TestObject) \
-int main(int argc, char *argv[]) \
-{ \
-char *new_argv[3]; \
-QCoreApplication app(argc, argv); \
-\
-QString str = "C:\\data\\" + QFileInfo(QCoreApplication::applicationFilePath()).baseName() + ".log"; \
-QByteArray   bytes  = str.toAscii(); \
-\
-char arg1[] = "-o"; \
-\
-new_argv[0] = argv[0]; \
-new_argv[1] = arg1; \
-new_argv[2] = bytes.data(); \
-\
-TestObject tc; \
-return QTest::qExec(&tc, 3, new_argv); \
-}
-
-#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkpluginview/qtestmains60ui.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* 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 QTESTMAINS60
+#define QTESTMAINS60
+
+#include <hbapplication.h>
+#include <hbmainwindow.h>
+
+char *new_argv[3];
+HbMainWindow *mainWindow;
+#define QTEST_MAIN_S60UI(TestObject) \
+int main(int argc, char *argv[]) \
+{ \
+HbApplication *app = new HbApplication(argc, argv); \
+QString str = "C:\\data\\" + QFileInfo(QCoreApplication::applicationFilePath()).baseName() + ".log"; \
+QByteArray   bytes  = str.toAscii(); \
+\
+char arg1[] = "-o"; \
+\
+new_argv[0] = argv[0]; \
+new_argv[1] = arg1; \
+new_argv[2] = bytes.data(); \
+\
+TestObject tc; \
+QResource::registerResource("../hbcore.rcc"); \
+mainWindow = new HbMainWindow;\
+mainWindow->show(); \
+int ret = QTest::qExec(&tc, 3, new_argv); \
+delete mainWindow; \
+delete app; \
+return ret; \
+}
+
+#endif
--- a/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkpluginview/ut_cpnetworkpluginview.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkpluginview/ut_cpnetworkpluginview.cpp	Mon May 03 12:31:11 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 #include "ut_cpnetworkpluginview.h"
-#include "qtestmains60.h"
+#include "qtestmains60ui.h"
 #define private public
 #include "cpnetworkpluginview.h"
 
@@ -68,4 +68,4 @@
     
 }
 
-QTEST_MAIN_S60(ut_cpnetworkpluginview)
+QTEST_MAIN_S60UI(ut_cpnetworkpluginview)
--- a/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkpluginview/ut_cpnetworkpluginview.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cpnetworkplugin/tsrc/ut_cpnetworkpluginview/ut_cpnetworkpluginview.pro	Mon May 03 12:31:11 2010 +0300
@@ -26,7 +26,7 @@
 QT += testlib
 
 symbian: {
-  CONFIG += no_icon
+  #CONFIG += no_icon
   INCLUDEPATH += /epoc32/include/mw/QtTest \
         /epoc32/include/platform/mw \
         /epoc32/include/mw/qt
--- a/phonesettings/cpphonesettingsplugins/cptelephonyutils/inc/cpphonenotes.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cptelephonyutils/inc/cpphonenotes.h	Mon May 03 12:31:11 2010 +0300
@@ -25,6 +25,8 @@
 #include "cptelephonyutilsdefs.h"
 
 class CpSettingsWrapper;
+class HbInputDialog;
+class QValidator;
 
 using namespace CpTelephonyUtils;
 
@@ -91,24 +93,6 @@
         const QList<unsigned char> &basicServiceGroupIds);
     
     /**
-     Shows the basic service list associated with the call divert status check.
-     @param     title               Heading for the service list.
-     @param     divertStatuses      Divert status information to show.
-     @param     selectionIndex      User selected item on divert statuses list.
-     @param     divertType          Divert type specifying what kind of 
-     divert details user is able to request on divert service group.
-     @param     divertDetailType    On return contains info about what kind
-     of call divert detail user wants to know about selected divert service 
-     group. 
-     */
-    void showBasicServiceCallDivertList(
-        const QString &title, 
-        const QList<PSCallDivertingStatus*> &divertStatuses,
-        int &selectionIndex,
-        CallDivertType divertType,
-        CallDivertType &divertDetailType);
-    
-    /**
      Shows detailed call divert information about the selected divert service
      group.
      @param     divertStatus    Divert status information.
@@ -117,6 +101,24 @@
         const PSCallDivertingStatus &divertStatus);
     
     /**
+     Shows password query dialog with OK & Cancel buttons and returns user
+     given password unless user has canceled query. Only valid password is
+     accepted.
+     @param title               Title for the query dialog.
+     @param validator           Password validator.
+     @param maxPasswordLength   Maximum length for the password.  
+     @param password            On return contains user given password.
+     @param ok                  True if the user pressed OK, false if the user 
+                                pressed Cancel.
+     */
+    void showPasswordQueryDialog(
+        const QString &title,
+        const QValidator &validator,
+        int maxPasswordLength,
+        QString &password,
+        bool &ok);
+    
+    /**
      Cancels specified note.
      @param     noteId      Note identifier.
      */
@@ -127,18 +129,6 @@
      */
     bool noteShowing();
     
-private slots:
-    
-    /**
-     Handler method for notes' about to close signal.
-     */
-    void activeNoteAboutToClose();
-    
-    /**
-     Handler method for notes' canceled signal.
-     */
-    void handleProgressNoteCanceled();
-
 private:
     
     /**
@@ -149,12 +139,6 @@
     QString basicServiceGroupName(BasicServiceGroups basicServiceGroupId) const;
     
     /**
-     Converts etel mobile service code into basic service group enumeration.
-     @param     serviceCode     Etel mobilde service code.
-     */
-    BasicServiceGroups convertEtelMobileServiceCode(int serviceCode) const;
-    
-    /**
      Formats phone number according to locale specific rules.
      @param     number          Unformatted phone number.
      @return    Formatted number.
@@ -166,6 +150,24 @@
      note currently.
      */
     void launchNextNoteIfReady();
+
+private slots:
+    
+    /**
+     Handler method for notes' about to close signal.
+     */
+    void activeNoteAboutToClose();
+    
+    /**
+     Handler method for notes' canceled signal.
+     */
+    void handleProgressNoteCanceled();
+    
+    /**
+     Used for dynamic enable/disable of password dialog's OK button according
+     to validity of the currently inputted password.
+     */
+    void passwordTextChanged();
     
 private: // Data: 
 
@@ -183,6 +185,15 @@
       Indicates whether note controller is busy with some note showing.
      */
     bool m_isNoteShowingOngoing;
+    
+    /**
+      Password query dialog. Not own.
+     */
+    HbInputDialog *m_passwordDialog;
 
+    /**
+      Password validator. Not own.
+     */
+    const QValidator *m_passwordValidator;
 };
 #endif // CPPHONENOTES_H
--- a/phonesettings/cpphonesettingsplugins/cptelephonyutils/inc/cpplugincommon.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cptelephonyutils/inc/cpplugincommon.h	Mon May 03 12:31:11 2010 +0300
@@ -45,11 +45,6 @@
     static bool videoSupported();
 
     /*!
-      Service code conversion
-      */
-    static BasicServiceGroups convertEtelMobileServiceCode(int serviceCode);
-
-    /*!
       Error code text conversion
       */
     static bool errorCodeTextMapping(const int errorcode, QString &errorText);
--- a/phonesettings/cpphonesettingsplugins/cptelephonyutils/src/cpphonenotes.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cptelephonyutils/src/cpphonenotes.cpp	Mon May 03 12:31:11 2010 +0300
@@ -28,6 +28,10 @@
 #include <QItemSelectionModel>
 #include <hbstringutil.h>
 #include <hbextendedlocale.h>
+#include <HbInputDialog>
+#include <HbEditorInterface>
+#include <hbinputdef.h>
+#include <hbinputstandardfilters.h>
 
 /*!
   CpPhoneNotes::instance.
@@ -48,10 +52,12 @@
 CpPhoneNotes::CpPhoneNotes(): 
      QObject(NULL), 
      m_notesQueue(NULL),
-     m_isNoteShowingOngoing(false)
+     m_isNoteShowingOngoing(false),
+     m_passwordDialog(NULL),
+     m_passwordValidator(NULL)
     {
     DPRINT << ": IN";
-
+    
     m_notesQueue = new QQueue<QObject*>();
     m_cpSettingsWrapper = new CpSettingsWrapper;
     
@@ -167,7 +173,7 @@
     serviceListPopup->setContentWidget(serviceList.take());
     
     HbAction *backAction = 
-        new HbAction(hbTrId("Back"), serviceListPopup.data());
+        new HbAction(hbTrId("txt_common_button_back"), serviceListPopup.data());
     serviceListPopup->setPrimaryAction(backAction);
     serviceListPopup->exec();
     
@@ -175,85 +181,6 @@
 }
 
 /*!
-  CpPhoneNotes::showBasicServiceCallDivertList.
- */
-void CpPhoneNotes::showBasicServiceCallDivertList(
-    const QString &title,
-    const QList<PSCallDivertingStatus*> &divertStatuses,
-    int &selectionIndex,
-    CallDivertType divertType,
-    CallDivertType &divertDetailType)
-{
-    DPRINT << ": IN";
-    
-    Q_ASSERT(title != "");
-    Q_ASSERT(0 < divertStatuses.size());
-    
-    HbDialog *serviceListPopup = new HbDialog();
-    serviceListPopup->setDismissPolicy(HbDialog::NoDismiss);
-    serviceListPopup->setTimeout(HbPopup::NoTimeout);
-    
-    HbLabel *heading = new HbLabel(title, serviceListPopup);
-    heading->setAlignment(Qt::AlignLeft | Qt::AlignTop);
-    serviceListPopup->setHeadingWidget(heading);
-    
-    HbListView *serviceList = new HbListView(serviceListPopup);
-    QStandardItemModel *serviceListModel = new QStandardItemModel(serviceList);
-    for (int i = 0; i < divertStatuses.size(); i++) {
-        PSCallDivertingStatus *divertStatus = divertStatuses.at(i);
-        QString groupName = 
-            basicServiceGroupName( 
-                convertEtelMobileServiceCode(divertStatus->iServiceGroup) );
-        QStandardItem *listItem = new QStandardItem(groupName);
-        serviceListModel->appendRow(listItem);
-    }
-    serviceList->setModel(serviceListModel);
-    serviceList->setSelectionMode(HbAbstractItemView::SingleSelection);
-    if (0 != serviceListModel->rowCount()) {
-        QModelIndex firstItem = serviceList->nextIndex(QModelIndex()); 
-        serviceList->setCurrentIndex(firstItem, QItemSelectionModel::Select);
-    }
-    serviceListPopup->setContentWidget(serviceList);
-    
-    HbAction *backAction = new HbAction(hbTrId("Back"), serviceListPopup);
-    HbAction *numberQueryAction = new HbAction(hbTrId("Number"), serviceListPopup);
-    HbAction *detailsAction = new HbAction(hbTrId("Details"), serviceListPopup);
-    serviceListPopup->setSecondaryAction(backAction);
-    
-    switch (divertType) {
-        case NoCallDivert:
-            break;
-        case CallDivertWithNumber:
-            serviceListPopup->setPrimaryAction(numberQueryAction);
-            break;
-        case CallDivertWithNumberAndTimeout:
-            serviceListPopup->setPrimaryAction(detailsAction);
-            break;
-        default:
-            DPRINT << ", DEFAULT";
-            Q_ASSERT(false);
-            break;
-    }
-    
-    HbAction *userAction = serviceListPopup->exec();
-    if (userAction == numberQueryAction) {
-        divertDetailType = CallDivertWithNumber;
-    } else if (userAction == detailsAction) {
-        divertDetailType = CallDivertWithNumberAndTimeout;
-    } else if (userAction == backAction) {
-        divertDetailType = NoCallDivert;
-    } else {
-        DPRINT << ", WEIRD ACTION";
-        Q_ASSERT(false);
-    }
-    
-    selectionIndex = serviceList->currentIndex().row();
-    delete serviceListPopup;
-    
-    DPRINT << ": OUT";
-}
-
-/*!
   CpPhoneNotes::cancelNote.
  */
 void CpPhoneNotes::cancelNote(int noteId)
@@ -297,30 +224,6 @@
 }
 
 /*!
-  CpPhoneNotes::activeNoteAboutToClose.
- */
-void CpPhoneNotes::activeNoteAboutToClose()
-{
-    DPRINT << ": IN";
-    
-    if (m_isNoteShowingOngoing) {
-        m_isNoteShowingOngoing = false;
-        QObject* note(NULL);
-        if (!m_notesQueue->isEmpty()) {
-            note = m_notesQueue->dequeue();
-        }
-        if(note) {
-            launchNextNoteIfReady();
-            note->disconnect(this);
-            DPRINT << ", delete note: " << reinterpret_cast<int>(note);
-            note->deleteLater();
-        }
-    }
-    
-    DPRINT << ": OUT";
-}
-
-/*!
   CpPhoneNotes::basicServiceGroupName.
   Resolves basic service group name by group identifier.
  */
@@ -392,15 +295,6 @@
 }
 
 /*!
-  CpPhoneNotes::convertEtelMobileServiceCode.
-*/
-BasicServiceGroups CpPhoneNotes::convertEtelMobileServiceCode(int serviceCode) const
-{
-    DPRINT << "serviceCode: " << serviceCode;
-    return Tools::convertEtelMobileServiceCode(serviceCode);
-}
-
-/*!
   CpPhoneNotes::showGlobalErrorNote.
  */
 void CpPhoneNotes::showGlobalErrorNote(int &noteId, int errorcode)
@@ -439,15 +333,15 @@
     // TODO: Orbit layout support is insufficient currently and all text
     // is not shown.
     QString content = "";
-    content.append(hbTrId("To number: "));
+    content.append(hbTrId("txt_phone_info_number"));
     content.append(formatPhoneNumber(divertStatus.iNumber));
     if (0 < divertStatus.iTimeout) {
-        content.append(hbTrId(" Delay time: "));
+        content.append(hbTrId("txt_phone_setlabel_delay"));
         content.append(QString::number(divertStatus.iTimeout));
         content.append(hbTrId(" seconds"));
     }
     divertInfo->setText(content);
-    HbAction *backAction = new HbAction(hbTrId("Back"), divertInfo);
+    HbAction *backAction = new HbAction(hbTrId("txt_common_button_back"), divertInfo);
     divertInfo->setPrimaryAction(backAction);
     divertInfo->exec();
     delete divertInfo;
@@ -456,6 +350,55 @@
 }
 
 /*!
+  CpPhoneNotes::showPasswordQueryDialog.
+ */
+void CpPhoneNotes::showPasswordQueryDialog(
+    const QString &title, 
+    const QValidator &validator,
+    int maxPasswordLength,
+    QString &password, 
+    bool &ok)
+{
+    DPRINT << ": IN";
+    
+    QScopedPointer<HbInputDialog> passwordDialog(new HbInputDialog());
+    
+    // configure editor so that only digits can be inputted
+    passwordDialog->setPromptText(title);
+    passwordDialog->setEchoMode(HbLineEdit::Password);
+    passwordDialog->setInputMethodHints(Qt::ImhDigitsOnly);
+    HbLineEdit *hbLineEdit = passwordDialog->lineEdit();
+    hbLineEdit->setMaxLength(maxPasswordLength);
+    HbEditorInterface editorInterface(hbLineEdit);
+    editorInterface.setInputMode(HbInputModeNumeric);
+    editorInterface.setConstraints(HbEditorConstraintFixedInputMode);
+    editorInterface.setFilter(HbDigitsOnlyFilter::instance());
+    
+    m_passwordDialog = passwordDialog.data();
+    m_passwordValidator = &validator;
+    passwordDialog->primaryAction()->setEnabled(false);
+    connect(
+        hbLineEdit, SIGNAL(contentsChanged()), 
+        this, SLOT(passwordTextChanged()));
+    
+    HbAction* action = passwordDialog->exec();
+    if (action == passwordDialog->secondaryAction()) {
+        ok = false;
+    } else {
+        ok = true;
+        password = passwordDialog->value().toString();
+    }
+    
+    m_passwordDialog = NULL;
+    m_passwordValidator = NULL;
+    disconnect(
+        hbLineEdit, SIGNAL(contentsChanged()), 
+        this, SLOT(passwordTextChanged()));
+    
+    DPRINT << ": OUT";
+}
+
+/*!
   CpPhoneNotes::formatPhoneNumber.
   Formats phone number according to locale specific rules.
  */
@@ -511,6 +454,29 @@
     DPRINT << ": OUT";
 }
 
+/*!
+  CpPhoneNotes::activeNoteAboutToClose.
+ */
+void CpPhoneNotes::activeNoteAboutToClose()
+{
+    DPRINT << ": IN";
+    
+    if (m_isNoteShowingOngoing) {
+        m_isNoteShowingOngoing = false;
+        QObject* note(NULL);
+        if (!m_notesQueue->isEmpty()) {
+            note = m_notesQueue->dequeue();
+        }
+        if(note) {
+            launchNextNoteIfReady();
+            note->disconnect(this);
+            DPRINT << ", delete note: " << reinterpret_cast<int>(note);
+            note->deleteLater();
+        }
+    }
+    
+    DPRINT << ": OUT";
+}
 
 /*!
   CpPhoneNotes::handleProgressNoteCanceled().
@@ -524,4 +490,23 @@
     DPRINT << ": OUT";
 }
 
+/*!
+  CpPhoneNotes::passwordTextChanged().
+ */
+void CpPhoneNotes::passwordTextChanged()
+{
+    DPRINT << ": IN";
+    Q_ASSERT(m_passwordDialog && m_passwordValidator);
+    
+    HbLineEdit *hbLineEdit = m_passwordDialog->lineEdit();
+    int position = 0;
+    QString password = hbLineEdit->text();
+    bool isPasswordValid = 
+        (QValidator::Acceptable == m_passwordValidator->validate(
+            password, position));
+    m_passwordDialog->primaryAction()->setEnabled(isPasswordValid);
+    
+    DPRINT << ": OUT";
+}
+
 // End of File.
--- a/phonesettings/cpphonesettingsplugins/cptelephonyutils/src/cpplugincommon.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cptelephonyutils/src/cpplugincommon.cpp	Mon May 03 12:31:11 2010 +0300
@@ -57,121 +57,6 @@
 }
 
 /*!
-  Tools::convertEtelMobileServiceCode
-*/
-BasicServiceGroups Tools::convertEtelMobileServiceCode(int serviceCode)
-{
-    DPRINT;
-
-    switch (serviceCode) {
-        case RMobilePhone::EAllServices:
-            return AllTeleAndBearer;
-        case RMobilePhone::EAllTele:
-            return AllTele;
-        case RMobilePhone::EVoiceService:
-        case RMobilePhone::ETelephony:
-            return Telephony;
-        case RMobilePhone::EAllDataTele:
-            return AllDataTele;
-        case RMobilePhone::EFaxService:
-            return Fax;
-        case RMobilePhone::EShortMessageService:
-            return Sms;
-        case RMobilePhone::EAllDataExSms:
-            return AllDataExSms;
-        case RMobilePhone::EAllTeleExcSms:
-            return AllTeleExcSms;
-        case RMobilePhone::EAllPlmnTele:
-            return AllPlmnTele;
-        case RMobilePhone::EPlmnTele1:
-            return PlmnTele1;
-        case RMobilePhone::EPlmnTele2:
-            return PlmnTele2;
-        case RMobilePhone::EPlmnTele3:
-            return PlmnTele3;
-        case RMobilePhone::EPlmnTele4:
-            return PlmnTele4;
-        case RMobilePhone::EPlmnTele5:
-            return PlmnTele5;
-        case RMobilePhone::EPlmnTele6:
-            return PlmnTele6;
-        case RMobilePhone::EPlmnTele7:
-            return PlmnTele7;
-        case RMobilePhone::EPlmnTele8:
-            return PlmnTele8;
-        case RMobilePhone::EPlmnTele9:
-            return PlmnTele9;
-        case RMobilePhone::EPlmnTeleA:
-            return PlmnTeleA;
-        case RMobilePhone::EPlmnTeleB:
-            return PlmnTeleB;
-        case RMobilePhone::EPlmnTeleC:
-            return PlmnTeleC;
-        case RMobilePhone::EPlmnTeleD:
-            return PlmnTeleD;
-        case RMobilePhone::EPlmnTeleE:
-            return PlmnTeleE;
-        case RMobilePhone::EPlmnTeleF:
-            return PlmnTeleF;
-        case RMobilePhone::EAllBearer:
-            return AllBearer;
-        case RMobilePhone::EAllAsync:
-            return AllAsync;
-        case RMobilePhone::EAllSync:
-            return AllSync;
-        case RMobilePhone::ECircuitDataService:
-        case RMobilePhone::ESyncData:
-            return SyncData;
-        case RMobilePhone::EPacketDataService:
-        case RMobilePhone::EAsyncData:
-            return AsyncData;
-        case RMobilePhone::EPacketData:
-            return PacketData;
-        case RMobilePhone::EPadAccess:
-            return PadAccess;
-        case RMobilePhone::EAllPlmnBearer:
-            return AllPlmnBearer;
-        case RMobilePhone::EPlmnBearerServ1:
-            return PlmnBearerServ1;
-        case RMobilePhone::EPlmnBearerServ2:
-            return PlmnBearerServ2;
-        case RMobilePhone::EPlmnBearerServ3:
-            return PlmnBearerServ3;
-        case RMobilePhone::EPlmnBearerServ4:
-            return PlmnBearerServ4;
-        case RMobilePhone::EPlmnBearerServ5:
-            return PlmnBearerServ5;
-        case RMobilePhone::EPlmnBearerServ6:
-            return PlmnBearerServ6;
-        case RMobilePhone::EPlmnBearerServ7:
-            return PlmnBearerServ7;
-        case RMobilePhone::EPlmnBearerServ8:
-            return PlmnBearerServ8;
-        case RMobilePhone::EPlmnBearerServ9:
-            return PlmnBearerServ9;
-        case RMobilePhone::EPlmnBearerServA:
-            return PlmnBearerServA;
-        case RMobilePhone::EPlmnBearerServB:
-            return PlmnBearerServB;
-        case RMobilePhone::EPlmnBearerServC:
-            return PlmnBearerServC;
-        case RMobilePhone::EPlmnBearerServD:
-            return PlmnBearerServD;
-        case RMobilePhone::EPlmnBearerServE:
-            return PlmnBearerServE;
-        case RMobilePhone::EPlmnBearerServF:
-            return PlmnBearerServF;
-        case RMobilePhone::EAuxVoiceService:
-        case RMobilePhone::EAltTele:
-            return AltTele;
-        case RMobilePhone::EServiceUnspecified:
-        default:
-            qDebug() << "CpPhoneNotes::convertEtelMobileServiceCode, DEFAULT";
-            return Unknown;
-    }
-}
-
-/*!
   Tools::errorCodeTextMapping.
  */
 bool Tools::errorCodeTextMapping(const int errorcode, QString &errorText)
@@ -182,7 +67,7 @@
 
     switch(errorcode){
         case KErrGsmSSSubscriptionViolation:
-            errorText = hbTrId("Barring operation not successful. Contact your service provider");
+            errorText = hbTrId("txt_phone_info_barring_operation_not_successful");
             break;
         case KErrGsmSSUnknownSubscriber:
         case KErrGsmSSAbsentSubscriber:
@@ -191,24 +76,24 @@
         case KErrGsmSSIllegalEquipment:
         case KErrGsmSSCallBarred:
         case KErrGsmSSDataMissing:
-            errorText = hbTrId("Not allowed");
+            errorText = hbTrId("txt_phone_info_not_allowed");
             break;
         case KErrGsmSSIncompatibility:
             errorText = hbTrId("Services in conflict");
             break;
         case KErrGsmSSSystemFailure:
-            errorText = hbTrId("Result unknown");
+            errorText = hbTrId("txt_phone_info_result_unknown");
             break;
         case KErrGsmSSUnexpectedDataValue:
         case KErrGsmSSResourcesUnavailable:
-            errorText = hbTrId("Request rejected");
+            errorText = hbTrId("txt_phone_info_request_rejected");
             break;
         case KErrGsmSSNegativePasswordCheck:
         case KErrGsmSSPasswordRegistrationFailure:
             errorText = hbTrId("Password error");
             break;
         case KErrGsmSSPasswordAttemptsViolation:
-            errorText = hbTrId("Password blocked");
+            errorText = hbTrId("txt_phone_info_barring_password_blocked");
             break;
         case KErrGsmSMSNoNetworkService:
         case KErrGsmNoService:
@@ -233,14 +118,14 @@
                     errorText = hbTrId("Operation not possible in Off-line mode");
                 }
             } else {
-                errorText = hbTrId("Not done");
+                errorText = hbTrId("txt_phone_info_request_not_completed");
             }
             break;
         case KErrGsmSSUnknownAlphabet:
-            errorText = hbTrId("Invalid phone number");
+            errorText = hbTrId("txt_phone_info_invalid_phone_number");
             break;
         default:
-            errorText = hbTrId("Not done");
+            errorText = hbTrId("txt_phone_info_request_not_completed");
             break;
     }
 
--- a/phonesettings/cpphonesettingsplugins/cptelephonyutils/tsrc/run_auto_tests_qt.bat	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cptelephonyutils/tsrc/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -32,7 +32,7 @@
 ::    starting with "ut_".
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
 :DEFAULT
-set TESTED_SRC=..\..\src\*
+set TESTED_SRC=..\..\src\*.cpp
 
 for /f %%a in ('dir /b ut_*') do call :build %%a
 if [%DOMODULESTESTS%] EQU [TRUE] (
@@ -54,14 +54,19 @@
 set INSTRUMENT=TRUE
 set REMOVEINSTRUMENT=TRUE
 set DOMODULESTESTS=TRUE
-set ABLD_CALL=abld build winscw udeb -keepgoing
+set SBS_CALL=sbs --config winscw_udeb --keepgoing BUILD
 set PATH_TO_DLL=\epoc32\release\winscw\udeb
 set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
 
 if not exist %PATH_TO_COVERAGE_DATA% (
 mkdir %PATH_TO_COVERAGE_DATA%
 )
 
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
 if [%1] EQU [] ( goto default )
 
 call :%1
@@ -132,12 +137,11 @@
 pushd .
 call cd %1
 call qmake
-call bldmake bldfiles
-call abld clean winscw udeb
+call sbs --config winscw_udeb --keepgoing CLEAN
 if [%INSTRUMENT%] EQU [TRUE] (
-call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
+call ctcwrap -2comp -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" "%SBS_CALL%"
 ) else (
-call %ABLD_CALL%
+call %SBS_CALL%
 )
 
 popd
@@ -152,7 +156,10 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
 :RUNTESTS
 echo Running tests
-for /f %%a in ('dir /b ut_*') do call %PATH_TO_DLL%\%%a.exe 
+for /f %%a in ('dir /b ut_*') do (
+    call %PATH_TO_DLL%\%%a.exe
+    move \epoc32\winscw\c\data\%%a.log %PATH_TO_RESULT%\%%a.log
+)
 goto end
 
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
--- a/phonesettings/cpphonesettingsplugins/cptelephonyutils/tsrc/ut_cpphonenotes/ut_cpphonenotes.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cptelephonyutils/tsrc/ut_cpphonenotes/ut_cpphonenotes.cpp	Mon May 03 12:31:11 2010 +0300
@@ -106,136 +106,6 @@
 }
 
 /*!
-  UT_CpPhoneNotes::appendAllEtelServices
- */
-void UT_CpPhoneNotes::appendAllEtelServices(QList<PSCallDivertingStatus*>& list)
-{   
-    /** The call service has not been specified. */
-    appendService(list, RMobilePhone::EServiceUnspecified);
-    /** The API request applies to voice call services. */
-    appendService(list, RMobilePhone::EVoiceService);
-    /** The API request applies to auxiliary voice call services. */
-    appendService(list, RMobilePhone::EAuxVoiceService);
-    /** The API request applies to circuit switched data call services. */
-    appendService(list, RMobilePhone::ECircuitDataService);
-    /** The API request applies to packet data services. */
-    appendService(list, RMobilePhone::EPacketDataService);
-    /** The API request applies to fax call services. */
-    appendService(list, RMobilePhone::EFaxService);
-    /** The API request applies to short message services. */
-    appendService(list, RMobilePhone::EShortMessageService);
-    /** The API request applies to all mobile services. */
-    appendService(list, RMobilePhone::EAllServices);
-    /** All teleservices */
-    appendService(list, RMobilePhone::EAllTele);
-    /** Telephony */
-    appendService(list, RMobilePhone::ETelephony);
-    /** All data teleservices */
-    appendService(list, RMobilePhone::EAllDataTele);
-    /** Voice Broadcast Service (VBS) Bearer Service */
-    appendService(list, RMobilePhone::EAllDataExSms);
-    /** All teleservices except SMS */
-    appendService(list, RMobilePhone::EAllTeleExcSms);
-    /** All PLMN specific teleservices */
-    appendService(list, RMobilePhone::EAllPlmnTele);
-    /** PLMN specific teleservice 1 */
-    appendService(list, RMobilePhone::EPlmnTele1);
-    /** PLMN specific teleservice 2 */
-    appendService(list, RMobilePhone::EPlmnTele2);
-    /** PLMN specific teleservice 3 */
-    appendService(list, RMobilePhone::EPlmnTele3);
-    /** PLMN specific teleservice 4 */
-    appendService(list, RMobilePhone::EPlmnTele4);
-    /** PLMN specific teleservice 5 */
-    appendService(list, RMobilePhone::EPlmnTele5);
-    /** PLMN specific teleservice 6 */
-    appendService(list, RMobilePhone::EPlmnTele6);
-    /** PLMN specific teleservice 7 */
-    appendService(list, RMobilePhone::EPlmnTele7);
-    /** PLMN specific teleservice 8 */
-    appendService(list, RMobilePhone::EPlmnTele8);
-    /** PLMN specific teleservice 9 */
-    appendService(list, RMobilePhone::EPlmnTele9);
-    /** PLMN specific teleservice 10 */
-    appendService(list, RMobilePhone::EPlmnTeleA);
-    /** PLMN specific teleservice 11 */
-    appendService(list, RMobilePhone::EPlmnTeleB);
-    /** PLMN specific teleservice 12 */
-    appendService(list, RMobilePhone::EPlmnTeleC);
-    /** PLMN specific teleservice 13 */
-    appendService(list, RMobilePhone::EPlmnTeleD);
-    /** PLMN specific teleservice 14 */
-    appendService(list, RMobilePhone::EPlmnTeleE);
-    /** PLMN specific teleservice 15 */
-    appendService(list, RMobilePhone::EPlmnTeleF);
-    /** All bearer services */
-    appendService(list, RMobilePhone::EAllBearer);
-    /** All async services */
-    appendService(list, RMobilePhone::EAllAsync);
-    /** All sync services */
-    appendService(list, RMobilePhone::EAllSync);
-    /** All data circuit sync */
-    appendService(list, RMobilePhone::ESyncData);
-    /** All data circuit async */
-    appendService(list, RMobilePhone::EAsyncData);
-    /** All packet data services */
-    appendService(list, RMobilePhone::EPacketData);
-    /** All pad access services */
-    appendService(list, RMobilePhone::EPadAccess);
-    /** All PLMN specific bearer services */
-    appendService(list, RMobilePhone::EAllPlmnBearer);
-    /** PLMN specific bearer service 1 */
-    appendService(list, RMobilePhone::EPlmnBearerServ1);
-    /** PLMN specific bearer service 2 */
-    appendService(list, RMobilePhone::EPlmnBearerServ2);
-    /** PLMN specific bearer service 3 */
-    appendService(list, RMobilePhone::EPlmnBearerServ3);
-    /** PLMN specific bearer service 4 */
-    appendService(list, RMobilePhone::EPlmnBearerServ4);
-    /** PLMN specific bearer service 5 */
-    appendService(list, RMobilePhone::EPlmnBearerServ5);
-    /** PLMN specific bearer service 6 */
-    appendService(list, RMobilePhone::EPlmnBearerServ6);
-    /** PLMN specific bearer service 7 */
-    appendService(list, RMobilePhone::EPlmnBearerServ7);
-    /** PLMN specific bearer service 8 */
-    appendService(list, RMobilePhone::EPlmnBearerServ8);
-    /** PLMN specific bearer service 9 */
-    appendService(list, RMobilePhone::EPlmnBearerServ9);
-    /** PLMN specific bearer service 10 */
-    appendService(list, RMobilePhone::EPlmnBearerServA);
-    /** PLMN specific bearer service 11 */
-    appendService(list, RMobilePhone::EPlmnBearerServB);
-    /** PLMN specific bearer service 12 */
-    appendService(list, RMobilePhone::EPlmnBearerServC);
-    /** PLMN specific bearer service 13 */
-    appendService(list, RMobilePhone::EPlmnBearerServD);
-    /** PLMN specific bearer service 14 */
-    appendService(list, RMobilePhone::EPlmnBearerServE);
-    /** PLMN specific bearer service 15 */
-    appendService(list, RMobilePhone::EPlmnBearerServF);
-    /** Alternative tele services */
-    appendService(list, RMobilePhone::EAltTele);
-    /** Voice Group Call Service (VGCS) */
-    appendService(list, RMobilePhone::EVoiceGroupCall);
-    /** Voice Broadcast Service (VBS) */
-    appendService(list, RMobilePhone::EVoiceBroadcast);
-    /** All GPRS Bearer Services */
-    appendService(list, RMobilePhone::EAllGprsBearer);
-}
-
-/*!
-  UT_CpPhoneNotes::appendService
- */
-void UT_CpPhoneNotes::appendService(
-        QList<PSCallDivertingStatus*>& list, RMobilePhone::TMobileService service )
-{
-    PSCallDivertingStatus* item = new PSCallDivertingStatus;
-    item->iServiceGroup = service;
-    list.append(item);
-}
-
-/*!
   UT_CpPhoneNotes::init
  */
 void UT_CpPhoneNotes::init()
@@ -323,158 +193,6 @@
 }
 
 /*!
-  UT_CpPhoneNotes::t_showBasicServiceCallDivertList
- */
-void UT_CpPhoneNotes::t_showBasicServiceCallDivertList()
-{
-    QList<PSCallDivertingStatus*> statusList;
-    int selection = 0;
-    CallDivertType divertType = NoCallDivert;
-    CallDivertType divertDetailType = NoCallDivert;
-    CpPhoneNotes::instance()->showBasicServiceCallDivertList( 
-        "title", statusList, selection, divertType, divertDetailType );
-    
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllServices).returns(AllTeleAndBearer);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllTele).returns(AllTele);
-
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EVoiceService).returns(Telephony);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::ETelephony).returns(Telephony);
-    
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllDataTele).returns(AllDataTele);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EFaxService).returns(Fax);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EShortMessageService).returns(Sms);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllDataExSms).returns(AllDataExSms);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllTeleExcSms).returns(AllTeleExcSms);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllPlmnTele).returns(AllPlmnTele);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele1).returns(PlmnTele1);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele2).returns(PlmnTele2);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele3).returns(PlmnTele3);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele4).returns(PlmnTele4);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele5).returns(PlmnTele5);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele6).returns(PlmnTele6);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele7).returns(PlmnTele7);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele8).returns(PlmnTele8);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele9).returns(PlmnTele9);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTeleA).returns(PlmnTeleA);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTeleB).returns(PlmnTeleB);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTeleC).returns(PlmnTeleC);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTeleD).returns(PlmnTeleD);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTeleE).returns(PlmnTeleE);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTeleF).returns(PlmnTeleF);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllBearer).returns(AllBearer);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllAsync).returns(AllAsync);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllSync).returns(AllSync);
-    
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::ECircuitDataService).returns(SyncData);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::ESyncData).returns(SyncData);
-    
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPacketDataService).returns(AsyncData);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAsyncData).returns(AsyncData);
-    
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPacketData).returns(PacketData);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPadAccess).returns(PadAccess);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllPlmnBearer).returns(AllPlmnBearer);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ1).returns(PlmnBearerServ1);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ2).returns(PlmnBearerServ2);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ3).returns(PlmnBearerServ3);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ4).returns(PlmnBearerServ4);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ5).returns(PlmnBearerServ5);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ6).returns(PlmnBearerServ6);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ7).returns(PlmnBearerServ7);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ8).returns(PlmnBearerServ8);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ9).returns(PlmnBearerServ9);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServA).returns(PlmnBearerServA);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServB).returns(PlmnBearerServB);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServC).returns(PlmnBearerServC);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServD).returns(PlmnBearerServD);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServE).returns(PlmnBearerServE);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServF).returns(PlmnBearerServF);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAuxVoiceService).returns(AltTele);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAltTele).returns(AltTele);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EServiceUnspecified).returns(Unknown);
-    // ??
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EVoiceGroupCall).returns(Unknown);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EVoiceBroadcast).returns(Unknown);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllGprsBearer).returns(Unknown);
-
-    expect("Tools::videoSupported").returns(true);
-    appendAllEtelServices( statusList );
-    divertType = CallDivertWithNumber;
-    CpPhoneNotes::instance()->showBasicServiceCallDivertList( 
-        "title", statusList, selection, divertType, divertDetailType );
-    QVERIFY( verify() );
-
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllServices).returns(AllTeleAndBearer);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllTele).returns(AllTele);
-
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EVoiceService).returns(Telephony);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::ETelephony).returns(Telephony);
-    
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllDataTele).returns(AllDataTele);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EFaxService).returns(Fax);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EShortMessageService).returns(Sms);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllDataExSms).returns(AllDataExSms);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllTeleExcSms).returns(AllTeleExcSms);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllPlmnTele).returns(AllPlmnTele);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele1).returns(PlmnTele1);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele2).returns(PlmnTele2);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele3).returns(PlmnTele3);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele4).returns(PlmnTele4);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele5).returns(PlmnTele5);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele6).returns(PlmnTele6);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele7).returns(PlmnTele7);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele8).returns(PlmnTele8);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTele9).returns(PlmnTele9);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTeleA).returns(PlmnTeleA);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTeleB).returns(PlmnTeleB);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTeleC).returns(PlmnTeleC);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTeleD).returns(PlmnTeleD);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTeleE).returns(PlmnTeleE);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnTeleF).returns(PlmnTeleF);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllBearer).returns(AllBearer);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllAsync).returns(AllAsync);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllSync).returns(AllSync);
-    
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::ECircuitDataService).returns(SyncData);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::ESyncData).returns(SyncData);
-    
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPacketDataService).returns(AsyncData);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAsyncData).returns(AsyncData);
-    
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPacketData).returns(PacketData);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPadAccess).returns(PadAccess);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllPlmnBearer).returns(AllPlmnBearer);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ1).returns(PlmnBearerServ1);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ2).returns(PlmnBearerServ2);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ3).returns(PlmnBearerServ3);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ4).returns(PlmnBearerServ4);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ5).returns(PlmnBearerServ5);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ6).returns(PlmnBearerServ6);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ7).returns(PlmnBearerServ7);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ8).returns(PlmnBearerServ8);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServ9).returns(PlmnBearerServ9);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServA).returns(PlmnBearerServA);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServB).returns(PlmnBearerServB);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServC).returns(PlmnBearerServC);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServD).returns(PlmnBearerServD);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServE).returns(PlmnBearerServE);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EPlmnBearerServF).returns(PlmnBearerServF);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAuxVoiceService).returns(AltTele);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAltTele).returns(AltTele);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EServiceUnspecified).returns(Unknown);
-    // ??
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EVoiceGroupCall).returns(Unknown);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EVoiceBroadcast).returns(Unknown);
-    expect("Tools::convertEtelMobileServiceCode").with(RMobilePhone::EAllGprsBearer).returns(Unknown);
-
-    expect("Tools::videoSupported").returns(false);
-    divertType = CallDivertWithNumberAndTimeout;
-    CpPhoneNotes::instance()->showBasicServiceCallDivertList( 
-        "title", statusList, selection, divertType, divertDetailType );
-    QVERIFY( verify() );
-}
-
-/*!
   UT_CpPhoneNotes::t_showCallDivertDetails
  */
 void UT_CpPhoneNotes::t_showCallDivertDetails()
@@ -491,6 +209,22 @@
 }
 
 /*!
+  UT_CpPhoneNotes::t_showPasswordQueryDialog
+ */
+void UT_CpPhoneNotes::t_showPasswordQueryDialog()
+{
+    QString queryTitle("Password query title");
+    QString password = "";
+    bool okPressed = false;
+    QRegExp regExpression("\\d{4}");
+    QRegExpValidator validator(regExpression, this);
+    CpPhoneNotes::instance()->showPasswordQueryDialog(
+        queryTitle, validator, 5, password, okPressed);
+
+}
+
+
+/*!
   UT_CpPhoneNotes::t_cancelNote
  */
 void UT_CpPhoneNotes::t_cancelNote()
--- a/phonesettings/cpphonesettingsplugins/cptelephonyutils/tsrc/ut_cpphonenotes/ut_cpphonenotes.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cptelephonyutils/tsrc/ut_cpphonenotes/ut_cpphonenotes.h	Mon May 03 12:31:11 2010 +0300
@@ -58,8 +58,8 @@
     void t_showGlobalNote();
     void t_showGlobalErrorNote();
     void t_showBasicServiceList();
-    void t_showBasicServiceCallDivertList();
     void t_showCallDivertDetails();
+    void t_showPasswordQueryDialog();
     void t_cancelNote();
 
 private:
--- a/phonesettings/cpphonesettingsplugins/cptelephonyutils/tsrc/ut_cpplugincommon/ut_cpplugincommon.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cptelephonyutils/tsrc/ut_cpplugincommon/ut_cpplugincommon.cpp	Mon May 03 12:31:11 2010 +0300
@@ -162,172 +162,45 @@
 /*!
   UT_CpPluginCommon::t_memleak
  */
-void UT_CpPluginCommon::t_convertEtelMobileServiceCode()
-{
-    //
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EAllServices), AllTeleAndBearer);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EAllTele), AllTele);
-
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EVoiceService), Telephony);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::ETelephony), Telephony);
-    
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EAllDataTele), AllDataTele);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EFaxService), Fax);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EShortMessageService), Sms);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EAllDataExSms), AllDataExSms);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EAllTeleExcSms), AllTeleExcSms);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EAllPlmnTele), AllPlmnTele);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnTele1), PlmnTele1);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnTele2), PlmnTele2);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnTele3), PlmnTele3);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnTele4), PlmnTele4);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnTele5), PlmnTele5);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnTele6), PlmnTele6);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnTele7), PlmnTele7);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnTele8), PlmnTele8);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnTele9), PlmnTele9);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnTeleA), PlmnTeleA);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnTeleB), PlmnTeleB);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnTeleC), PlmnTeleC);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnTeleD), PlmnTeleD);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnTeleE), PlmnTeleE);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnTeleF), PlmnTeleF);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EAllBearer), AllBearer);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EAllAsync), AllAsync);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EAllSync), AllSync);
-    
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::ECircuitDataService), SyncData);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::ESyncData), SyncData);
-    
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPacketDataService), AsyncData);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EAsyncData), AsyncData);
-    
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPacketData), PacketData);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPadAccess), PadAccess);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EAllPlmnBearer), AllPlmnBearer);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnBearerServ1), PlmnBearerServ1);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnBearerServ2), PlmnBearerServ2);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnBearerServ3), PlmnBearerServ3);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnBearerServ4), PlmnBearerServ4);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnBearerServ5), PlmnBearerServ5);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnBearerServ6), PlmnBearerServ6);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnBearerServ7), PlmnBearerServ7);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnBearerServ8), PlmnBearerServ8);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnBearerServ9), PlmnBearerServ9);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnBearerServA), PlmnBearerServA);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnBearerServB), PlmnBearerServB);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnBearerServC), PlmnBearerServC);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnBearerServD), PlmnBearerServD);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnBearerServE), PlmnBearerServE);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EPlmnBearerServF), PlmnBearerServF);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EAuxVoiceService), AltTele);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EAltTele), AltTele);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EServiceUnspecified), Unknown);
-    // ??
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EVoiceGroupCall), Unknown);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EVoiceBroadcast), Unknown);
-    QCOMPARE(Tools::convertEtelMobileServiceCode(
-            RMobilePhone::EAllGprsBearer), Unknown);
-
-}
-
-/*!
-  UT_CpPluginCommon::t_memleak
- */
 void UT_CpPluginCommon::t_errorCodeTextMapping()
 {
     QString text = "";
     Tools::errorCodeTextMapping(KErrGsmSSSubscriptionViolation, text);
     QCOMPARE( text, QString(
-            "Barring operation not successful. Contact your service provider"));
+            "txt_phone_info_barring_operation_not_successful"));
     Tools::errorCodeTextMapping(KErrGsmSSUnknownSubscriber, text);
     QCOMPARE( text, QString(
-            "Not allowed"));
+            "txt_phone_info_not_allowed"));
     Tools::errorCodeTextMapping(KErrGsmSSAbsentSubscriber, text);
     QCOMPARE( text, QString(
-            "Not allowed"));
+            "txt_phone_info_not_allowed"));
     Tools::errorCodeTextMapping(KErrGsmSSIllegalOperation, text);
     QCOMPARE( text, QString(
-            "Not allowed"));
+            "txt_phone_info_not_allowed"));
     Tools::errorCodeTextMapping(KErrGsmSSIllegalSubscriber, text);
     QCOMPARE( text, QString(
-            "Not allowed"));
+            "txt_phone_info_not_allowed"));
     Tools::errorCodeTextMapping(KErrGsmSSIllegalEquipment, text);
     QCOMPARE( text, QString(
-            "Not allowed"));
+            "txt_phone_info_not_allowed"));
     Tools::errorCodeTextMapping(KErrGsmSSCallBarred, text);
     QCOMPARE( text, QString(
-            "Not allowed"));
+            "txt_phone_info_not_allowed"));
     Tools::errorCodeTextMapping(KErrGsmSSDataMissing, text);
     QCOMPARE( text, QString(
-            "Not allowed"));
+            "txt_phone_info_not_allowed"));
     Tools::errorCodeTextMapping(KErrGsmSSIncompatibility, text);
     QCOMPARE( text, QString(
             "Services in conflict"));
     Tools::errorCodeTextMapping(KErrGsmSSSystemFailure, text);
     QCOMPARE( text, QString(
-            "Result unknown"));
+            "txt_phone_info_result_unknown"));
     Tools::errorCodeTextMapping(KErrGsmSSUnexpectedDataValue, text);
     QCOMPARE( text, QString(
-            "Request rejected"));
+            "txt_phone_info_request_rejected"));
     Tools::errorCodeTextMapping(KErrGsmSSResourcesUnavailable, text);
     QCOMPARE( text, QString(
-            "Request rejected"));
+            "txt_phone_info_request_rejected"));
     Tools::errorCodeTextMapping(KErrGsmSSNegativePasswordCheck, text);
     QCOMPARE( text, QString(
             "Password error"));
@@ -336,7 +209,7 @@
             "Password error"));
     Tools::errorCodeTextMapping(KErrGsmSSPasswordAttemptsViolation, text);
     QCOMPARE( text, QString(
-            "Password blocked"));
+            "txt_phone_info_barring_password_blocked"));
     Tools::errorCodeTextMapping(KErrGsmSMSNoNetworkService, text);
     QCOMPARE( text, QString(
             "No network coverage"));
@@ -347,12 +220,12 @@
     QCOMPARE( text, QString(
             "Check network services"));
     Tools::errorCodeTextMapping(KErrGsmSSUnknownAlphabet, text);
-    QCOMPARE( text, QString("Invalid phone number"));
+    QCOMPARE( text, QString("txt_phone_info_invalid_phone_number"));
     
     expect("XQSysInfo::isSupported").returns(false);
     Tools::errorCodeTextMapping(KErrGsmOfflineOpNotAllowed, text);
     QCOMPARE( text, QString(
-            "Not done"));
+            "txt_phone_info_request_not_completed"));
     QVERIFY( verify() );
     
     expect("XQSysInfo::isSupported").returns(true);
@@ -370,7 +243,7 @@
     
     Tools::errorCodeTextMapping(-1, text);
     QCOMPARE( text, QString(
-            "Not done"));
+            "txt_phone_info_request_not_completed"));
     
     QVERIFY( verify() );
         
--- a/phonesettings/cpphonesettingsplugins/cptelephonyutils/tsrc/ut_cpplugincommon/ut_cpplugincommon.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/cptelephonyutils/tsrc/ut_cpplugincommon/ut_cpplugincommon.h	Mon May 03 12:31:11 2010 +0300
@@ -46,7 +46,6 @@
     
     void t_voipSupported();
     void t_videoSupported();
-    void t_convertEtelMobileServiceCode();
     void t_errorCodeTextMapping();
 
 private:
--- a/phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertitemdata.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertitemdata.cpp	Mon May 03 12:31:11 2010 +0300
@@ -19,21 +19,13 @@
 
 
 CpDivertItemData::CpDivertItemData(
-                PsCallDivertingCondition condition,
-                PsServiceGroup serviceGroup,
+                HbDataFormModelItem::DataItemType type,
                 const QString &label,
-                const QString &queryLabel,
-                bool needTimeoutInfo,
                 CpItemDataHelper &helper,
                 const HbDataFormModelItem *parent) :
                 CpSettingFormItemData(
-                        static_cast<HbDataFormModelItem::DataItemType>(
-                                CpDivertSelectionItem::CpDivertSelectionItemId),
+                        static_cast<HbDataFormModelItem::DataItemType>(type),
                         label, parent ),
-                m_serviceGroup(serviceGroup),
-                m_condition(condition),
-                m_queryLabel(queryLabel),
-                m_needTimeoutInfo(needTimeoutInfo),
                 m_helper(helper)
 {
     m_helper.addConnection(
@@ -46,29 +38,10 @@
 
 }
 
-PsServiceGroup CpDivertItemData::service()
-{
-    return m_serviceGroup;
-}
-
-PsCallDivertingCondition CpDivertItemData::condition()
-{
-    return m_condition;
-}
-
-QString CpDivertItemData::queryLabel()
-{
-    return m_queryLabel;
-}
-
-bool CpDivertItemData::needTimeoutInfo()
-{
-    return m_needTimeoutInfo;
-}
-
 void CpDivertItemData::thisItemClicked()
 {
     emit itemClicked(*this);
 }
 
+
 // end of file
--- a/phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertitemdata.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertitemdata.h	Mon May 03 12:31:11 2010 +0300
@@ -26,23 +26,12 @@
     Q_OBJECT
 public:
     CpDivertItemData(
-        PsCallDivertingCondition condition,
-        PsServiceGroup serviceGroup,
+        HbDataFormModelItem::DataItemType type,
         const QString &label,
-        const QString &queryLabel,
-        bool needTimeoutInfo,
         CpItemDataHelper &helper,
         const HbDataFormModelItem *parent = 0);
     
-    ~CpDivertItemData();
-    
-    PsServiceGroup service();
-    
-    PsCallDivertingCondition condition();
-    
-    QString queryLabel();
-    
-    bool needTimeoutInfo();
+    virtual ~CpDivertItemData();
 
 public slots:
     void thisItemClicked();
@@ -51,11 +40,8 @@
     void itemClicked(CpDivertItemData &item);
 
 private:
-    PsServiceGroup m_serviceGroup;
-    PsCallDivertingCondition m_condition;
-    QString m_queryLabel;
-    bool m_needTimeoutInfo;
     CpItemDataHelper &m_helper;
 };
 
+
 #endif /* DIVERTINGITEMDATA_H_ */
--- a/phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertplugingroup.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertplugingroup.cpp	Mon May 03 12:31:11 2010 +0300
@@ -39,23 +39,40 @@
 #include "cpdivertitemdata.h"
 #include "cpdivertselectioncustomitem.h"
 
+Q_DECLARE_METATYPE(PsCallDivertingCondition)
+Q_DECLARE_METATYPE(PsServiceGroup)
+
 /*!
   CpDivertPluginGroup::CpDivertPluginGroup.
  */
 CpDivertPluginGroup::CpDivertPluginGroup(CpItemDataHelper &helper)
      : CpSettingFormItemData(HbDataFormModelItem::GroupItem, 
                              hbTrId("txt_phone_subhead_call_divert"),0),
-       m_csVoiceCallPage(NULL),
-       m_DataItemAllVoiceCalls(NULL),
-       m_DataItemIfBusy(NULL),
-       m_DataItemIfNotAnswered(NULL),
-       m_DataItemIfOutOfReach(NULL),
-       m_DataItemIfNotAvailable(NULL),
+       m_DataItemVoiceAllCalls(NULL),
+       m_DataItemVoiceIfBusy(NULL),
+       m_DataItemVoiceIfNotAnswered(NULL),
+       m_DataItemVoiceIfOutOfReach(NULL),
+       m_DataItemVoiceIfNotAvailable(NULL),
+       m_DataItemVideoAllCalls(NULL),
+       m_DataItemVideoIfBusy(NULL),
+       m_DataItemVideoIfNotAnswered(NULL),
+       m_DataItemVideoIfOutOfReach(NULL),
+       m_DataItemVideoIfNotAvailable(NULL),
        m_activeNoteId(0),
+       m_activeProgressNoteId(0),
+       m_divertToVoiceMailBox(false),
        m_helper(helper)
 {
     DPRINT << ": IN";
     
+    // Registration needed, because PsCallDivertingCondition and PsServiceGroup
+    // is used as a custom meta information for barring items.
+    qRegisterMetaType<PsCallDivertingCondition>(
+        "PsCallDivertingCondition");
+    
+    qRegisterMetaType<PsServiceGroup>(
+        "PsServiceGroup");
+    
     // Localization file loading
     QTranslator translator; 
     QString lang = QLocale::system().name();
@@ -105,9 +122,8 @@
             SIGNAL(itemShown(QModelIndex)), this, SLOT(itemShown(QModelIndex)));
     
     // Create grouped setting items
-    createVoiceCallItems();
-    createVideoCallItems();
-    createVoIPCallItems();
+    createVoiceCallItems(this);
+    createVideoCallItems(this);
     DPRINT << ": OUT";
 }
 
@@ -127,89 +143,143 @@
 /*!
  CpDivertPluginGroup::createVoiceCallItems.
  */
-void CpDivertPluginGroup::createVoiceCallItems()
+void CpDivertPluginGroup::createVoiceCallItems(CpSettingFormItemData *parent)
 {
     DPRINT << ": IN";
-    m_csVoiceCallPage = new CpSettingFormItemData(
+    CpSettingFormItemData *page = new CpSettingFormItemData(
                 HbDataFormModelItem::GroupPageItem,
                 hbTrId("txt_phone_setlabel_service_val_voice_divert"));
-    appendChild(m_csVoiceCallPage);
+    parent->appendChild(page);
 
-    m_DataItemAllVoiceCalls = new CpDivertItemData(
+    m_DataItemVoiceAllCalls = createDivertItem(
             DivertConditionUnconditional,
             ServiceGroupVoice,
             hbTrId("txt_phone_setlabel_all_calls"),
-            hbTrId("All voice calls:"), false,
-            m_helper,
-            m_csVoiceCallPage);
-    
-    addDivertDataItem(m_DataItemAllVoiceCalls, m_csVoiceCallPage);
+            hbTrId("txt_phone_setlabel_all_calls"), false,
+            page);
 
-    m_DataItemIfBusy = new CpDivertItemData(
+    m_DataItemVoiceIfBusy = createDivertItem(
             DivertConditionBusy,
             ServiceGroupVoice,
             hbTrId("txt_phone_setlabel_if_busy"),
-            hbTrId("If busy:"), false,
-            m_helper,
-            m_csVoiceCallPage);
-    
-    addDivertDataItem(m_DataItemIfBusy, m_csVoiceCallPage);
+            hbTrId("txt_phone_setlabel_if_busy"), false,
+            page);
 
-    m_DataItemIfNotAnswered = new CpDivertItemData(
+    m_DataItemVoiceIfNotAnswered = createDivertItem(
             DivertConditionNoReply,
             ServiceGroupVoice,
             hbTrId("txt_phone_setlabel_if_not_answered"),
-            hbTrId("If not answered:"), true,
-            m_helper,
-            m_csVoiceCallPage);
-    
-    addDivertDataItem(m_DataItemIfNotAnswered, m_csVoiceCallPage);
-    m_DataItemIfNotAnswered->setContentWidgetData("timeoutText", hbTrId("txt_phone_setlabel_delay"));
+            hbTrId("txt_phone_setlabel_if_not_answered"), true,
+            page);
+    m_DataItemVoiceIfNotAnswered->setContentWidgetData(
+            "timeoutText", hbTrId("txt_phone_setlabel_delay"));
 
-    m_DataItemIfOutOfReach = new CpDivertItemData(
+    m_DataItemVoiceIfOutOfReach = createDivertItem(
             DivertConditionNotReachable,
             ServiceGroupVoice,
             hbTrId("txt_phone_setlabel_if_out_of_reach"),
-            hbTrId("If out of reach:"), false,
-            m_helper,
-            m_csVoiceCallPage);
-    
-    addDivertDataItem(m_DataItemIfOutOfReach, m_csVoiceCallPage);
+            hbTrId("txt_phone_setlabel_if_out_of_reach"), false,
+            page);
 
-    m_DataItemIfNotAvailable = new CpDivertItemData(
+    m_DataItemVoiceIfNotAvailable = createDivertItem(
             DivertConditionAllConditionalCases,
             ServiceGroupVoice,
             hbTrId("txt_phone_setlabel_if_not_available"),
-            hbTrId("If not available:"), true,
-            m_helper,
-            m_csVoiceCallPage);
-    
-    addDivertDataItem(m_DataItemIfNotAvailable, m_csVoiceCallPage);
+            hbTrId("txt_phone_setlabel_if_not_available"), true,
+            page);
+
     DPRINT << ": OUT";
 }
 
 /*!
  CpDivertPluginGroup::createVideoCallItems
  */
-void CpDivertPluginGroup::createVideoCallItems()
+void CpDivertPluginGroup::createVideoCallItems(CpSettingFormItemData *parent)
 {
     DPRINT << ": IN";
-    appendChild( new CpSettingFormItemData(
-        HbDataFormModelItem::GroupPageItem,
-        hbTrId("txt_phone_setlabel_service_val_video_divert")) );
+    CpSettingFormItemData *page = new CpSettingFormItemData(
+            HbDataFormModelItem::GroupPageItem,
+            hbTrId("txt_phone_setlabel_service_val_video_divert"));
+    
+    parent->appendChild(page);
+    
+    m_DataItemVideoAllCalls = createDivertItem(
+            DivertConditionUnconditional,
+            ServiceGroupData,
+            hbTrId("txt_phone_setlabel_all_calls"),
+            hbTrId("txt_phone_setlabel_all_calls"), false,
+            page);
+
+    m_DataItemVideoIfBusy = createDivertItem(
+            DivertConditionBusy,
+            ServiceGroupData,
+            hbTrId("txt_phone_setlabel_if_busy"),
+            hbTrId("txt_phone_setlabel_if_busy"), false,
+            page);
+
+    m_DataItemVideoIfNotAnswered = createDivertItem(
+            DivertConditionNoReply,
+            ServiceGroupData,
+            hbTrId("txt_phone_setlabel_if_not_answered"),
+            hbTrId("txt_phone_setlabel_if_not_answered"), true,
+            page);
+    m_DataItemVideoIfNotAnswered->setContentWidgetData(
+            "timeoutText", hbTrId("txt_phone_setlabel_delay"));
+
+    m_DataItemVideoIfOutOfReach = createDivertItem(
+            DivertConditionNotReachable,
+            ServiceGroupData,
+            hbTrId("txt_phone_setlabel_if_out_of_reach"),
+            hbTrId("txt_phone_setlabel_if_out_of_reach"), false,
+            page);
+
+    m_DataItemVideoIfNotAvailable = createDivertItem(
+            DivertConditionAllConditionalCases,
+            ServiceGroupData,
+            hbTrId("txt_phone_setlabel_if_not_available"),
+            hbTrId("txt_phone_setlabel_if_not_available"), true,
+            page);
+    
     DPRINT << ": OUT";
 }
 
 /*!
- CpDivertPluginGroup::createVoIPCallItems
+ CpDivertPluginGroup::createDivertItem
  */
-void CpDivertPluginGroup::createVoIPCallItems()
+CpDivertItemData *CpDivertPluginGroup::createDivertItem(
+        PsCallDivertingCondition condition,
+        PsServiceGroup serviceGroup,
+        const QString &label,
+        const QString &queryLabel,
+        bool needTimeoutInfo,
+        CpSettingFormItemData *parent)
 {
     DPRINT << ": IN";
-    appendChild( new CpSettingFormItemData(
-        HbDataFormModelItem::GroupPageItem,
-        hbTrId("VoIP")) );
+
+    CpDivertItemData *item = new CpDivertItemData(
+        static_cast<HbDataFormModelItem::DataItemType>
+            (CpDivertSelectionItem::CpDivertSelectionItemId), 
+            label,
+            m_helper,
+            parent);
+    QVariant conditionVar;
+    conditionVar.setValue(condition);
+    item->setProperty("condition", conditionVar);
+    QVariant serviceGroupVar;
+    serviceGroupVar.setValue(serviceGroup);
+    item->setProperty("serviceGroup", serviceGroupVar);
+    item->setProperty("queryLabel", queryLabel);
+    item->setProperty("needTimeoutInfo", needTimeoutInfo);
+    item->setEnabled(false);
+    
+    // Connect signals
+    QObject::connect(
+        item, SIGNAL(itemClicked(CpDivertItemData&)),
+        this, SLOT(changeDivertingStateRequested(CpDivertItemData&)));
+    
+    parent->appendChild(item);
     DPRINT << ": OUT";
+    return item;
 }
 
 /*!
@@ -222,35 +292,20 @@
     HbDataFormModelItem* modelItem = 
             qobject_cast<HbDataFormModel*>(model())->itemFromIndex(item);
     
-    if (!modelItem->contentWidgetData("number").isValid()) {
-        if (modelItem==m_DataItemAllVoiceCalls) {
-            addToDivertingRequestQueue(CheckDivertStatus, *m_DataItemAllVoiceCalls);
-        } else if (modelItem==m_DataItemIfBusy) {
-            addToDivertingRequestQueue(CheckDivertStatus, *m_DataItemIfBusy);
-        } else if (modelItem==m_DataItemIfNotAnswered) {
-            addToDivertingRequestQueue(CheckDivertStatus, *m_DataItemIfNotAnswered);
-        } else if (modelItem==m_DataItemIfOutOfReach) {
-            addToDivertingRequestQueue(CheckDivertStatus, *m_DataItemIfOutOfReach);
-        } // do not update m_DataItemIfNotAvailable
+    if (!modelItem->contentWidgetData("number").isValid() &&
+        (static_cast<HbDataFormModelItem::DataItemType>
+            (CpDivertSelectionItem::CpDivertSelectionItemId == modelItem->type()))){
+        CpDivertItemData *item = static_cast<CpDivertItemData*>(modelItem); 
+        if(qvariant_cast<PsCallDivertingCondition>(item->property("condition")) !=
+                DivertConditionAllConditionalCases) {
+            addToDivertingRequestQueue(CheckDivertStatus, *item);
+        }
     }
 
-
     DPRINT << ": OUT";
 }
 
 /*!
-  CpDivertPluginGroup::addDivertDataItem.
- */
-void CpDivertPluginGroup::addDivertDataItem(
-        CpDivertItemData *item, CpSettingFormItemData *parent)
-{
-    parent->appendChild(item);
-    QObject::connect(
-        item, SIGNAL(itemClicked(CpDivertItemData&)),
-        this, SLOT(changeDivertingStateRequested(CpDivertItemData&)));
-}
-
-/*!
   CpDivertPluginGroup::addToDivertingRequestQueue.
  */
 void CpDivertPluginGroup::addToDivertingRequestQueue(
@@ -299,7 +354,9 @@
   CpDivertPluginGroup::changeItemData.
  */
 void CpDivertPluginGroup::changeItemData(
-        PsCallDivertingCondition condition, PsCallDivertingStatus status,
+        PsServiceGroup serviceGroup,
+        PsCallDivertingCondition condition,
+        PsCallDivertingStatus status,
         const QString& number, int timeout)
 {
     DPRINT << ": IN";
@@ -315,43 +372,31 @@
     }
     
     switch (condition) {
-    case DivertConditionUnconditional:
-        m_DataItemAllVoiceCalls->setContentWidgetData("number", number);
-        m_DataItemAllVoiceCalls->setContentWidgetData("timeout", timeout);
-        m_DataItemAllVoiceCalls->setContentWidgetData("state", itemState);
-        break;
-    case DivertConditionBusy:
-        m_DataItemIfBusy->setContentWidgetData("number", number);
-        m_DataItemIfBusy->setContentWidgetData("timeout", timeout);
-        m_DataItemIfBusy->setContentWidgetData("state", itemState);
-        break;
-    case DivertConditionNoReply:
-        m_DataItemIfNotAnswered->setContentWidgetData("number", number);
-        m_DataItemIfNotAnswered->setContentWidgetData("timeout", timeout);
-        m_DataItemIfNotAnswered->setContentWidgetData("state", itemState);
-        break;
-    case DivertConditionNotReachable:
-        m_DataItemIfOutOfReach->setContentWidgetData("number", number);
-        m_DataItemIfOutOfReach->setContentWidgetData("timeout", timeout);
-        m_DataItemIfOutOfReach->setContentWidgetData("state", itemState);
-        break;
     case DivertConditionAllConditionalCases:
         DPRINT << ": DivertConditionAllConditionalCases";
         
-        m_DataItemIfNotAvailable->setContentWidgetData("number", number);
-        m_DataItemIfNotAvailable->setContentWidgetData("timeout", timeout);
-        m_DataItemIfNotAvailable->setContentWidgetData("state", itemState);
+        // If not available effects also conditions below
+        changeItemData(serviceGroup, DivertConditionBusy, status, number, timeout);
+        changeItemData(serviceGroup, DivertConditionNoReply, status, number, timeout);
+        changeItemData(serviceGroup, DivertConditionNotReachable, status, number, timeout);
+        // Fall trough
+    case DivertConditionUnconditional:
+    case DivertConditionBusy:
+    case DivertConditionNoReply:
+    case DivertConditionNotReachable:
+        if (serviceGroup & ServiceGroupVoice) {
+            item(ServiceGroupVoice, condition)->setContentWidgetData("number", number);
+            item(ServiceGroupVoice, condition)->setContentWidgetData("timeout", timeout);
+            item(ServiceGroupVoice, condition)->setContentWidgetData("state", itemState);
+            item(ServiceGroupVoice, condition)->setEnabled(true);
+        }
         
-        // If not available effects also conditions below
-        m_DataItemIfBusy->setContentWidgetData("number", number);
-        m_DataItemIfBusy->setContentWidgetData("timeout", timeout);
-        m_DataItemIfBusy->setContentWidgetData("state", itemState);
-        m_DataItemIfNotAnswered->setContentWidgetData("number", number);
-        m_DataItemIfNotAnswered->setContentWidgetData("timeout", timeout);
-        m_DataItemIfNotAnswered->setContentWidgetData("state", itemState);
-        m_DataItemIfOutOfReach->setContentWidgetData("number", number);
-        m_DataItemIfOutOfReach->setContentWidgetData("timeout", timeout);
-        m_DataItemIfOutOfReach->setContentWidgetData("state", itemState);
+        if (serviceGroup & ServiceGroupData) {
+            item(ServiceGroupData, condition)->setContentWidgetData("number", number);
+            item(ServiceGroupData, condition)->setContentWidgetData("timeout", timeout);
+            item(ServiceGroupData, condition)->setContentWidgetData("state", itemState);
+            item(ServiceGroupData, condition)->setEnabled(true);
+        }
         break;
     case DivertConditionAllCalls:
     case DivertConditionUnknown:
@@ -363,37 +408,73 @@
 /*!
   CpDivertPluginGroup::revertItemData.
  */
-void CpDivertPluginGroup::revertItemData(PsCallDivertingCondition condition)
+void CpDivertPluginGroup::revertItemData(
+        PsServiceGroup serviceGroup, PsCallDivertingCondition condition)
 {
     DPRINT << ": IN";
+    if (serviceGroup & ServiceGroupVoice) {
+        item(ServiceGroupVoice, condition)->setContentWidgetData("state",
+            item(ServiceGroupVoice, condition)->contentWidgetData("state"));
+    }
     
+    if (serviceGroup & ServiceGroupData) {
+        item(ServiceGroupData, condition)->setContentWidgetData("state",
+            item(ServiceGroupData, condition)->contentWidgetData("state"));
+    }
+
+    DPRINT << ": OUT";
+}
+
+/*!
+  CpDivertPluginGroup::item.
+ */
+CpSettingFormItemData* CpDivertPluginGroup::item(
+        PsService service, PsCallDivertingCondition condition)
+{
+    CpSettingFormItemData *ret = 0;
     switch (condition) {
         case DivertConditionUnconditional:
-            m_DataItemAllVoiceCalls->setContentWidgetData("state", 
-                m_DataItemAllVoiceCalls->contentWidgetData("state"));
+            if (service == ServiceGroupVoice) {
+                ret = m_DataItemVoiceAllCalls;
+            } else {
+                ret = m_DataItemVideoAllCalls;
+            }
             break;
         case DivertConditionBusy:
-            m_DataItemIfBusy->setContentWidgetData("state", 
-                m_DataItemIfBusy->contentWidgetData("state"));
+            if (service == ServiceGroupVoice) {
+                ret = m_DataItemVoiceIfBusy;
+            } else {
+                ret = m_DataItemVideoIfBusy;
+            }
             break;
         case DivertConditionNoReply:
-            m_DataItemIfNotAnswered->setContentWidgetData("state", 
-                m_DataItemIfNotAnswered->contentWidgetData("state"));
+            if (service == ServiceGroupVoice) {
+                ret = m_DataItemVoiceIfNotAnswered;
+            } else {
+                ret = m_DataItemVideoIfNotAnswered;
+            }
             break;
         case DivertConditionNotReachable:
-            m_DataItemIfOutOfReach->setContentWidgetData("state", 
-                m_DataItemIfOutOfReach->contentWidgetData("state"));
+            if (service == ServiceGroupVoice) {
+                ret = m_DataItemVoiceIfOutOfReach;
+            } else {
+                ret = m_DataItemVideoIfOutOfReach;
+            }
             break;
         case DivertConditionAllConditionalCases:
-            DPRINT << ": DivertConditionAllConditionalCases";
-            m_DataItemIfNotAvailable->setContentWidgetData("state", 
-                m_DataItemIfNotAvailable->contentWidgetData("state"));
+            if (service == ServiceGroupVoice) {
+                ret = m_DataItemVoiceIfNotAvailable;
+            } else {
+                ret = m_DataItemVideoIfNotAvailable;
+            }
             break;
         case DivertConditionAllCalls:
         case DivertConditionUnknown:
         default:
             break;
     }
+    Q_CHECK_PTR(ret);
+    return ret;
 }
 
 /*!
@@ -409,10 +490,12 @@
     CpDivertRequestQueueItem request = m_divertRequestQueue.head();
     // Command param
     PSCallDivertingCommand divertCommand;
-    divertCommand.iServiceGroup = request.item->service();
-    divertCommand.iCondition = request.item->condition();
+    divertCommand.iServiceGroup = qvariant_cast<PsServiceGroup>(
+            request.item->property("serviceGroup"));
+    divertCommand.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            request.item->property("condition"));
     divertCommand.iStatus = DivertingStatusUnknown;
-    divertCommand.iNumber = hbTrId("");
+    divertCommand.iNumber = "";
     divertCommand.iNoReplyTimer = 0;
 
     switch (request.request) {
@@ -420,16 +503,17 @@
             DPRINT << "activate";
             divertCommand.iSetting = RegisterDiverting;
             if (popUpVoiceNumberListQuery(
-                    request.item->queryLabel(), divertCommand.iNumber)) {
-                if (request.item->needTimeoutInfo()) {
+                    request.item->property("queryLabel").toString(),
+                    divertCommand.iNumber,
+                    divertCommand.iServiceGroup)) {
+                if (request.item->property("needTimeoutInfo").toBool()) {
                     if (popUpTimerQuery(divertCommand.iNoReplyTimer)) {
                         setCallDiverting(divertCommand);
                     } else {
                         // Query was cancelled
-                        request.item->setContentWidgetData("number", 
-                                request.item->contentWidgetData("number").toString());
-                        request.item->setContentWidgetData("timeout", 
-                                request.item->contentWidgetData("timeout").toInt());
+                        revertItemData(
+                                divertCommand.iServiceGroup, 
+                                divertCommand.iCondition);
                         m_divertRequestQueue.clear();
                     }
                 } else {
@@ -437,10 +521,9 @@
                 }
             } else {
                 // Query was cancelled
-                request.item->setContentWidgetData("number", 
-                        request.item->contentWidgetData("number").toString());
-                request.item->setContentWidgetData("timeout", 
-                        request.item->contentWidgetData("timeout").toInt());
+                revertItemData(
+                        divertCommand.iServiceGroup, 
+                        divertCommand.iCondition);
                 m_divertRequestQueue.clear();
             }
         }
@@ -456,11 +539,11 @@
             m_callDivertingWrapper->getCallDivertingStatus(
                 divertCommand.iServiceGroup,
                 divertCommand.iCondition,
-                bscParam() );
+                bscParam(divertCommand.iServiceGroup) );
             
             if (!CpPhoneNotes::instance()->noteShowing()) {
                 CpPhoneNotes::instance()->showGlobalProgressNote(
-                        m_activeProgressNoteId, hbTrId("Requesting"));
+                        m_activeProgressNoteId, hbTrId("txt_phone_info_requesting"));
             }
         }
             break;
@@ -511,20 +594,23 @@
     DPRINT << "iStatus:" << aSetting.iStatus;
 
     changeItemData(
+        aSetting.iServiceGroup,
         aSetting.iCondition, aSetting.iStatus,
         aSetting.iNumber, aSetting.iNoReplyTimer);
     
-    updateDependentDivertOptions();
+    updateDependentDivertOptions(
+            (DivertConditionUnconditional == aSetting.iCondition) &&
+            (DivertingStatusActive != aSetting.iStatus) );
     
     switch(aSetting.iStatus) {
         case DivertingStatusActive:
             if (aPlural) {
                 CpPhoneNotes::instance()->showGlobalNote(m_activeNoteId,
-                    hbTrId("Diverts activated"), 
+                    hbTrId("txt_phone_info_diverts_activated"), 
                     HbMessageBox::MessageTypeInformation);
             } else {
                 CpPhoneNotes::instance()->showGlobalNote(m_activeNoteId,
-                    hbTrId("Divert activated"), 
+                    hbTrId("txt_phone_info_divert_activated"), 
                     HbMessageBox::MessageTypeInformation);
             }
             if (!m_divertToVoiceMailBox) {
@@ -533,21 +619,21 @@
             }
             // Diverting calls does not affect Internet calls
             if (Tools::voipSupported() &&
-                    aSetting.iServiceGroup == ServiceGroupVoice) {
+                    (aSetting.iServiceGroup & ServiceGroupVoice)) {
                 CpPhoneNotes::instance()->showGlobalNote(m_activeNoteId,
                     hbTrId("Diverting calls does not affect Internet calls"), 
                     HbMessageBox::MessageTypeInformation);
             }
             break;
-        case DivertingStatusNotRegistered:
+        case DivertingStatusNotRegistered:  
         case DivertingStatusInactive:
             if (aPlural) {
                 CpPhoneNotes::instance()->showGlobalNote(m_activeNoteId,
-                    hbTrId("Diverts cancelled"), 
+                    hbTrId("txt_phone_info_diverts_deactivated"), 
                     HbMessageBox::MessageTypeInformation);
             } else {
                 CpPhoneNotes::instance()->showGlobalNote(m_activeNoteId,
-                    hbTrId("Divert cancelled"), 
+                    hbTrId("txt_phone_info_divert_deactivated"), 
                     HbMessageBox::MessageTypeInformation);
             }
             break;
@@ -555,34 +641,10 @@
         case DivertingStatusUnknown:
         default:
             CpPhoneNotes::instance()->showGlobalNote(m_activeNoteId,
-                hbTrId("Not done"), 
+                hbTrId("txt_phone_info_request_not_completed"), 
                 HbMessageBox::MessageTypeInformation);
     }
     
-    if ((DivertConditionUnconditional == aSetting.iCondition) &&
-            (DivertingStatusActive != aSetting.iStatus)) {
-        // Must query data for diverts depending on all calls divert, because 
-        // data may have been lost for registered diverts, which were 
-        // automatically deactivated due to the activation of all calls divert.
-        if (CpDivertSelectionCustomitem::Deactivated == 
-                m_DataItemIfBusy->contentWidgetData("state").toInt()) {
-            addToDivertingRequestQueue(
-                CheckDivertStatus, *m_DataItemIfBusy);
-        }
-        
-        if (CpDivertSelectionCustomitem::Deactivated == 
-                m_DataItemIfNotAnswered->contentWidgetData("state").toInt()) {
-            addToDivertingRequestQueue(
-                CheckDivertStatus, *m_DataItemIfNotAnswered);
-        }
-        
-        if (CpDivertSelectionCustomitem::Deactivated == 
-                m_DataItemIfOutOfReach->contentWidgetData("state").toInt()) {
-            addToDivertingRequestQueue(
-                CheckDivertStatus, *m_DataItemIfOutOfReach);
-        }
-    }
-    
     DPRINT << ": OUT";
 }
    
@@ -604,8 +666,10 @@
         DPRINT << status->iStatus;
         DPRINT << status->iTimeout;
         changeItemData(
+            status->iServiceGroup,
             status->iCondition, status->iStatus, 
             status->iNumber, status->iTimeout);
+    
     }
     
     updateDependentDivertOptions();
@@ -622,7 +686,11 @@
     
     // Update view item for failed request
     if (m_divertRequestQueue.count()) {
-        revertItemData(m_divertRequestQueue.head().item->condition());
+        revertItemData(
+            qvariant_cast<PsServiceGroup>(
+                    m_divertRequestQueue.head().item->property("serviceGroup")),
+            qvariant_cast<PsCallDivertingCondition>(
+                    m_divertRequestQueue.head().item->property("condition")));
     }
     
     // Clear queue
@@ -641,45 +709,53 @@
   CpDivertPluginGroup::popUpVoiceNumberListQuery.
  */
 bool CpDivertPluginGroup::popUpVoiceNumberListQuery(
-        const QString& heading, QString& result)
+        const QString& heading, QString& result, PsServiceGroup serviceGroup)
 {
     DPRINT << ": IN";
+    const QString KVoiceMail("voiceMail");
+    const QString KVideoMail("voiceMail");
+    const QString KOtherNumber("otherNumber");
     
     bool requestOK(false);
     m_divertToVoiceMailBox = false;
     QStringList defNumbers;
     HbDialog *dialog = createDialog(heading);
     HbListWidget *list = new HbListWidget(dialog);
-    addItemToListWidget(
-        list, hbTrId("txt_phone_setlabel_voice_mbx"), hbTrId("txt_phone_setlabel_voice_mbx") );
+    if (serviceGroup == ServiceGroupVoice) {
+        addItemToListWidget(
+            list, hbTrId("txt_phone_setlabel_voice_mbx"), KVoiceMail );
+    } else if(serviceGroup == ServiceGroupData) {
+        // TODO: Implement video voicemail
+    }
+
     // Add "old" divert number to list
     m_callDivertingWrapper->getDefaultNumbers(defNumbers);
     int count(defNumbers.count());
     for (int i = 0; i < count; i++) {
         addItemToListWidget(list, defNumbers[i], defNumbers[i]);
     }
-    addItemToListWidget(list, hbTrId("Other number"), hbTrId("Other number") );
+    addItemToListWidget(list, hbTrId("txt_phone_list_enter_number_manually"), KOtherNumber );
     // Connect list item activation signal to close the popup
     connect(
         list, SIGNAL(activated(HbListWidgetItem*)), 
         dialog, SLOT(close()));
     // Sets the "Cancel"-action/button
-    HbAction *cancelAction = new HbAction("Cancel");
+    HbAction *cancelAction = new HbAction(hbTrId("txt_common_button_cancel"));
     dialog->setPrimaryAction(cancelAction);
     dialog->setContentWidget(list);
     // Launch popup and handle the response
     if (dialog->exec() != cancelAction) {
         // Update the view with selected text
         QString data = list->currentItem()->data().toString();
-        if (data == hbTrId("txt_phone_setlabel_voice_mbx")) {
+        if (data == KVoiceMail) {
             m_callDivertingWrapper->getVoiceMailBoxNumber(result);
             if (result.size()) {
                 // voicemailboxnumber found
                 m_divertToVoiceMailBox = true;
                 requestOK = true;
             }
-        } else if (data == hbTrId("Other number")) {
-            requestOK = popUpNumberEditor(hbTrId("Number:"), result);
+        } else if (data == KOtherNumber) {
+            requestOK = popUpNumberEditor(hbTrId("txt_phone_info_number"), result);
         } else {
             //TODO if matched contact name not work
             result = data;
@@ -712,9 +788,9 @@
     HbEditorInterface editorInterface(editor);
     editorInterface.setUpAsPhoneNumberEditor();
     dialog->setContentWidget(editor);
-    HbAction *okAction = new HbAction(hbTrId("OK"));
+    HbAction *okAction = new HbAction(hbTrId("txt_common_button_ok"));
     dialog->addAction(okAction);
-    HbAction *cancelAction = new HbAction(hbTrId("Cancel"));
+    HbAction *cancelAction = new HbAction(hbTrId("txt_common_button_cancel"));
     dialog->setSecondaryAction(cancelAction);
     
     HbAction *resultAction = dialog->exec();
@@ -730,7 +806,7 @@
         }
         else {
             CpPhoneNotes::instance()->showGlobalNote(m_activeNoteId, 
-                hbTrId("Enter number"), HbMessageBox::MessageTypeWarning);
+                hbTrId("txt_phone_info_invalid_phone_number"), HbMessageBox::MessageTypeWarning);
         }
     }
     delete dialog;
@@ -752,11 +828,12 @@
     DPRINT << "iSetting:" << command.iSetting;
     DPRINT << "iStatus:" << command.iStatus;
     
-    int result = m_callDivertingWrapper->setCallDiverting(command, bscParam());
+    int result = m_callDivertingWrapper->setCallDiverting(
+            command, bscParam(command.iServiceGroup));
     if (0 == result) {
         if (!CpPhoneNotes::instance()->noteShowing()) {
             CpPhoneNotes::instance()->showGlobalProgressNote(
-                    m_activeProgressNoteId, hbTrId("Requesting"));
+                    m_activeProgressNoteId, hbTrId("txt_phone_info_requesting"));
         }
     } else {
         handleDivertingError(result);
@@ -786,7 +863,7 @@
         list, SIGNAL(activated(HbListWidgetItem*)), 
         dialog, SLOT(close()));
     // Sets the "Cancel"-action/button
-    HbAction *cancelAction = new HbAction(hbTrId("Cancel"));
+    HbAction *cancelAction = new HbAction(hbTrId("txt_common_button_cancel"));
     dialog->setPrimaryAction(cancelAction);
     dialog->setContentWidget(list);
     // Launch popup and handle the response
@@ -813,24 +890,34 @@
 /*!
   CpDivertPluginGroup::setbscParam.
  */
-int CpDivertPluginGroup::bscParam()
+int CpDivertPluginGroup::bscParam(PsServiceGroup serviceGroup)
 {
     DPRINT << ": IN";
 
     int bsc = AllTeleAndBearer;
-    int alsLine(AlsNotSupported);
-    m_ssSettingsWrapper->get(Als,alsLine);
-    DPRINT << ": alsLine " << alsLine;
-    if ((alsLine == AlsNotSupported) || (alsLine == AlsPrimary)) {
-        // Etelephony only activates voice service nothing else or causes
-        // voice service status request.
-        bsc = Telephony;
+
+    if (serviceGroup & ServiceGroupVoice) {
+        int alsLine(AlsNotSupported);
+        m_ssSettingsWrapper->get(Als,alsLine);
+        DPRINT << ": alsLine " << alsLine;
+        
+        if ((alsLine == AlsNotSupported) || (alsLine == AlsPrimary)) {
+            // Etelephony only activates voice service nothing else or causes
+            // voice service status request.
+            bsc = Telephony;
+        }
+        else { // ESSSettingsAlsAlternate
+            // EAltTele only activates alternate service nothing else or causes
+            // alternate service status request.
+            bsc = AltTele;
+        }
     }
-    else { // ESSSettingsAlsAlternate
-        // EAltTele only activates alternate service nothing else or causes
-        // alternate service status request.
-        bsc = AltTele;
+    
+    if (serviceGroup & ServiceGroupData) {
+        bsc = AllBearer;
     }
+
+
     
     DPRINT << ": OUT : bsc :" << bsc;
     return bsc;
@@ -895,34 +982,40 @@
      Enabling/disabling that options changes all the aforementioned diverts 
      at once.
 */
-void CpDivertPluginGroup::updateDependentDivertOptions()
+void CpDivertPluginGroup::updateDependentDivertOptions(bool fetchFromNetwork)
 {
     DPRINT << ": IN";
     
     // all calls divert activation deactivates automatically other diverts
-    QVariant itemState = m_DataItemAllVoiceCalls->contentWidgetData("state");
+    QVariant itemState = m_DataItemVoiceAllCalls->contentWidgetData("state");
     if ((itemState.isValid()) && 
         (itemState.toInt() == CpDivertSelectionCustomitem::Enabled)) {
-        itemState = m_DataItemIfBusy->contentWidgetData("state");
-        if ((itemState.isValid()) && 
-            (itemState == CpDivertSelectionCustomitem::Enabled)) {
-            m_DataItemIfBusy->setContentWidgetData(
-                "state", CpDivertSelectionCustomitem::Deactivated);
-        }
-        
-        itemState = m_DataItemIfNotAnswered->contentWidgetData("state");
-        if ((itemState.isValid()) &&
-            (itemState == CpDivertSelectionCustomitem::Enabled)) {
-            m_DataItemIfNotAnswered->setContentWidgetData(
-                "state", CpDivertSelectionCustomitem::Deactivated);
-        }
-        
-        itemState = m_DataItemIfOutOfReach->contentWidgetData("state");
-        if ((itemState.isValid()) &&
-            (itemState == CpDivertSelectionCustomitem::Enabled)) {
-            m_DataItemIfOutOfReach->setContentWidgetData(
-                "state", CpDivertSelectionCustomitem::Deactivated);
-        }
+        deActivateDependentDivertOption(m_DataItemVoiceIfBusy);
+        deActivateDependentDivertOption(m_DataItemVoiceIfNotAnswered);
+        deActivateDependentDivertOption(m_DataItemVoiceIfOutOfReach);
+    } else {
+        // Must query data for diverts depending on all calls divert, because 
+        // data may have been lost for registered diverts, which were 
+        // automatically deactivated due to the activation of all calls divert.
+        activateDependentDivertOption(m_DataItemVoiceIfBusy, fetchFromNetwork);
+        activateDependentDivertOption(m_DataItemVoiceIfNotAnswered, fetchFromNetwork);
+        activateDependentDivertOption(m_DataItemVoiceIfOutOfReach, fetchFromNetwork);
+    }
+    
+    // all calls divert activation deactivates automatically other diverts
+    itemState = m_DataItemVideoAllCalls->contentWidgetData("state");
+    if ((itemState.isValid()) && 
+        (itemState.toInt() == CpDivertSelectionCustomitem::Enabled)) {
+        deActivateDependentDivertOption(m_DataItemVideoIfBusy);
+        deActivateDependentDivertOption(m_DataItemVideoIfNotAnswered);
+        deActivateDependentDivertOption(m_DataItemVideoIfOutOfReach);
+    } else {
+        // Must query data for diverts depending on all calls divert, because 
+        // data may have been lost for registered diverts, which were 
+        // automatically deactivated due to the activation of all calls divert.
+        activateDependentDivertOption(m_DataItemVideoIfBusy, fetchFromNetwork);
+        activateDependentDivertOption(m_DataItemVideoIfNotAnswered, fetchFromNetwork);
+        activateDependentDivertOption(m_DataItemVideoIfOutOfReach, fetchFromNetwork);
     }
     
     // update not available divert option
@@ -932,6 +1025,36 @@
 }
 
 /*!
+  CpDivertPluginGroup::deActivateDependentDivertOption.
+*/
+void CpDivertPluginGroup::deActivateDependentDivertOption(
+        CpDivertItemData* item) const
+{
+    QVariant itemState = item->contentWidgetData("state");
+    if ((itemState.isValid()) && 
+        (itemState == CpDivertSelectionCustomitem::Enabled)) {
+        item->setContentWidgetData(
+            "state", CpDivertSelectionCustomitem::Deactivated);
+    }
+    item->setEnabled(false);
+}
+
+/*!
+  CpDivertPluginGroup::activateDependentDivertOption.
+*/
+void CpDivertPluginGroup::activateDependentDivertOption(
+        CpDivertItemData* item, bool fetchFromNetwork)
+{
+    if ((CpDivertSelectionCustomitem::Deactivated == 
+            item->contentWidgetData("state").toInt()) &&
+            fetchFromNetwork) {
+        addToDivertingRequestQueue(
+            CheckDivertStatus, *item);
+    }
+    item->setEnabled(true);
+}
+
+/*!
   CpDivertPluginGroup::updateNotAvailableDivertOption.
  */
 void CpDivertPluginGroup::updateNotAvailableDivertOption()
@@ -942,32 +1065,77 @@
     // CFNrc before concluding that not available divert is enabled, because
     // some networks may not return divert number for inactive diverts.
     int cfbState = 
-        m_DataItemIfBusy->contentWidgetData("state").toInt();
+        m_DataItemVoiceIfBusy->contentWidgetData("state").toInt();
     int cfnryState = 
-        m_DataItemIfNotAnswered->contentWidgetData("state").toInt();
+        m_DataItemVoiceIfNotAnswered->contentWidgetData("state").toInt();
     int cfnrcState = 
-        m_DataItemIfOutOfReach->contentWidgetData("state").toInt();
+        m_DataItemVoiceIfOutOfReach->contentWidgetData("state").toInt();
     QVariant cfbNumber = 
-        m_DataItemIfBusy->contentWidgetData("number");
+        m_DataItemVoiceIfBusy->contentWidgetData("number");
     QVariant cfnryNumber = 
-        m_DataItemIfNotAnswered->contentWidgetData("number");
+        m_DataItemVoiceIfNotAnswered->contentWidgetData("number");
     QVariant cfnrcNumber = 
-        m_DataItemIfOutOfReach->contentWidgetData("number");
+        m_DataItemVoiceIfOutOfReach->contentWidgetData("number");
     
     if ((cfbNumber == cfnryNumber) && (cfbNumber == cfnrcNumber) &&
         (cfbState == cfnryState) && (cfbState == cfnrcState)) {
-        m_DataItemIfNotAvailable->setContentWidgetData(
-            "number", m_DataItemIfBusy->contentWidgetData("number"));
-        m_DataItemIfNotAvailable->setContentWidgetData(
-            "timeout", m_DataItemIfNotAnswered->contentWidgetData("timeout"));
-        m_DataItemIfNotAvailable->setContentWidgetData(
-            "state", m_DataItemIfBusy->contentWidgetData("state"));
+        m_DataItemVoiceIfNotAvailable->setContentWidgetData(
+            "number", m_DataItemVoiceIfBusy->contentWidgetData("number"));
+        m_DataItemVoiceIfNotAvailable->setContentWidgetData(
+            "timeout", m_DataItemVoiceIfNotAnswered->contentWidgetData("timeout"));
+        m_DataItemVoiceIfNotAvailable->setContentWidgetData(
+            "state", m_DataItemVoiceIfBusy->contentWidgetData("state"));
     } else {
-        m_DataItemIfNotAvailable->setContentWidgetData("number", "");
-        m_DataItemIfNotAvailable->setContentWidgetData("timeout", 0);
-        m_DataItemIfNotAvailable->setContentWidgetData(
+        m_DataItemVoiceIfNotAvailable->setContentWidgetData("number", "");
+        m_DataItemVoiceIfNotAvailable->setContentWidgetData("timeout", 0);
+        m_DataItemVoiceIfNotAvailable->setContentWidgetData(
             "state", CpDivertSelectionCustomitem::Disabled);
+
     }
+    // Item dimming
+    m_DataItemVoiceIfNotAvailable->setEnabled(
+            m_DataItemVoiceIfBusy->isEnabled() &&
+            m_DataItemVoiceIfNotAnswered->isEnabled() &&
+            m_DataItemVoiceIfOutOfReach->isEnabled()); 
+    
+    
+    // We must check that both states & numbers match amongst CFB, CRNry and 
+    // CFNrc before concluding that not available divert is enabled, because
+    // some networks may not return divert number for inactive diverts.
+    cfbState = 
+        m_DataItemVideoIfBusy->contentWidgetData("state").toInt();
+    cfnryState = 
+        m_DataItemVideoIfNotAnswered->contentWidgetData("state").toInt();
+    cfnrcState = 
+        m_DataItemVideoIfOutOfReach->contentWidgetData("state").toInt();
+    cfbNumber = 
+        m_DataItemVideoIfBusy->contentWidgetData("number");
+    cfnryNumber = 
+        m_DataItemVideoIfNotAnswered->contentWidgetData("number");
+    cfnrcNumber = 
+        m_DataItemVideoIfOutOfReach->contentWidgetData("number");
+    
+    if ((cfbNumber == cfnryNumber) && (cfbNumber == cfnrcNumber) &&
+        (cfbState == cfnryState) && (cfbState == cfnrcState)) {
+        m_DataItemVideoIfNotAvailable->setContentWidgetData(
+            "number", m_DataItemVideoIfBusy->contentWidgetData("number"));
+        m_DataItemVideoIfNotAvailable->setContentWidgetData(
+            "timeout", m_DataItemVideoIfNotAnswered->contentWidgetData("timeout"));
+        m_DataItemVideoIfNotAvailable->setContentWidgetData(
+            "state", m_DataItemVideoIfBusy->contentWidgetData("state"));
+    } else {
+        m_DataItemVideoIfNotAvailable->setContentWidgetData("number", "");
+        m_DataItemVideoIfNotAvailable->setContentWidgetData("timeout", 0);
+        m_DataItemVideoIfNotAvailable->setContentWidgetData(
+            "state", CpDivertSelectionCustomitem::Disabled);
+
+    }
+    
+    // Item dimming
+    m_DataItemVideoIfNotAvailable->setEnabled(
+            m_DataItemVideoIfBusy->isEnabled() &&
+            m_DataItemVideoIfNotAnswered->isEnabled() &&
+            m_DataItemVideoIfOutOfReach->isEnabled()); 
     
     DPRINT << ": OUT";
 }
--- a/phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertplugingroup.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/divertplugin/src/cpdivertplugingroup.h	Mon May 03 12:31:11 2010 +0300
@@ -106,23 +106,29 @@
     /**
      Creates group items.
      */
-    void createVoiceCallItems();
+    void createVoiceCallItems(CpSettingFormItemData *group);
 
     /**
      Creates group items.
      */
-    void createVideoCallItems();
+    void createVideoCallItems(CpSettingFormItemData *parent);
     
     /**
-     Creates group items.
+     Creates single item.
      */
-    void createVoIPCallItems();
+    CpDivertItemData *createDivertItem(
+            PsCallDivertingCondition condition,
+            PsServiceGroup serviceGroup,
+            const QString &label,
+            const QString &queryLabel,
+            bool needTimeoutInfo,
+            CpSettingFormItemData *parent = 0);
     
     /**
      Show to user divert number query list.
      */
     bool popUpVoiceNumberListQuery(
-            const QString& heading, QString& result);
+            const QString& heading, QString& result, PsServiceGroup serviceGroup);
     
     /**
      Show to user number query.
@@ -144,12 +150,13 @@
     /**
      Desides which bsc parameters to use.
      */
-    int bscParam();
+    int bscParam(PsServiceGroup serviceGroup);
     
     /**
      Adds divert data item for wanted parent.
      */
-    void addDivertDataItem(CpDivertItemData* item, CpSettingFormItemData *parent);
+    void addDivertDataItem(
+            CpDivertItemData* item, CpSettingFormItemData *parent);
 
     /**
      Process next divert request.
@@ -167,6 +174,7 @@
      Changes divertItemData data.
      */
     void changeItemData(
+            PsServiceGroup serviceGroup,
             PsCallDivertingCondition condition, 
             PsCallDivertingStatus status,
             const QString& number, 
@@ -175,8 +183,14 @@
     /**
      Reverts divertItemData data to the last known valid values.
      */
-    void revertItemData(PsCallDivertingCondition condition);
+    void revertItemData(
+            PsServiceGroup serviceGroup, PsCallDivertingCondition condition);
 
+    /**
+     Helper function which fetches model item according service and condition.
+     */
+    CpSettingFormItemData* item(
+            PsService service, PsCallDivertingCondition condition);
 private:
     
     /**
@@ -200,7 +214,9 @@
      Synchronizes content and status of divert options dependent from the 
      status of some other divert.
      */
-    void updateDependentDivertOptions();
+    void updateDependentDivertOptions(bool fetchFromNetwork = false);
+    void activateDependentDivertOption(CpDivertItemData* item, bool fetchFromNetwork);
+    void deActivateDependentDivertOption(CpDivertItemData* item) const;
     
     /**
      Synchronizes content and status of not available divert option based on
@@ -218,12 +234,18 @@
     PSetCallDivertingWrapper* m_callDivertingWrapper;
 
     // Not owned objects
-    CpSettingFormItemData *m_csVoiceCallPage;
-    CpDivertItemData *m_DataItemAllVoiceCalls;
-    CpDivertItemData *m_DataItemIfBusy;
-    CpDivertItemData *m_DataItemIfNotAnswered;
-    CpDivertItemData *m_DataItemIfOutOfReach;
-    CpDivertItemData *m_DataItemIfNotAvailable;
+    CpDivertItemData *m_DataItemVoiceAllCalls;
+    CpDivertItemData *m_DataItemVoiceIfBusy;
+    CpDivertItemData *m_DataItemVoiceIfNotAnswered;
+    CpDivertItemData *m_DataItemVoiceIfOutOfReach;
+    CpDivertItemData *m_DataItemVoiceIfNotAvailable;
+    
+    CpDivertItemData *m_DataItemVideoAllCalls;
+    CpDivertItemData *m_DataItemVideoIfBusy;
+    CpDivertItemData *m_DataItemVideoIfNotAnswered;
+    CpDivertItemData *m_DataItemVideoIfOutOfReach;
+    CpDivertItemData *m_DataItemVideoIfNotAvailable;
+    
     int m_activeNoteId;
     int m_activeProgressNoteId;
 
--- a/phonesettings/cpphonesettingsplugins/divertplugin/tsrc/run_auto_tests_qt.bat	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/divertplugin/tsrc/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -54,14 +54,19 @@
 set INSTRUMENT=TRUE
 set REMOVEINSTRUMENT=TRUE
 set DOMODULESTESTS=TRUE
-set ABLD_CALL=abld build winscw udeb -keepgoing
+set SBS_CALL=sbs --config winscw_udeb --keepgoing BUILD
 set PATH_TO_DLL=\epoc32\release\winscw\udeb
 set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
 
 if not exist %PATH_TO_COVERAGE_DATA% (
 mkdir %PATH_TO_COVERAGE_DATA%
 )
 
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
 if [%1] EQU [] ( goto default )
 
 call :%1
@@ -132,12 +137,11 @@
 pushd .
 call cd %1
 call qmake
-call bldmake bldfiles
-call abld clean winscw udeb
+call sbs --config winscw_udeb --keepgoing CLEAN
 if [%INSTRUMENT%] EQU [TRUE] (
-call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
+call ctcwrap -2comp -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" "%SBS_CALL%"
 ) else (
-call %ABLD_CALL%
+call %SBS_CALL%
 )
 
 popd
@@ -152,15 +156,10 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
 :RUNTESTS
 echo Running tests
-echo Expected user interactions!
-echo 1) User cancels
-echo 2) User selects vmb and inserts number
-echo 3) User selects one of the default numbers
-echo 4) User selects other number, inserts number and cancels
-echo 5) User selects othernumber and find
-echo 6) User selects other number and inserts number and timeout
-echo 7) User selects default number and and cancels in timeout query
-for /f %%a in ('dir /b ut_*') do call %PATH_TO_DLL%\%%a.exe 
+for /f %%a in ('dir /b ut_*') do (
+    call %PATH_TO_DLL%\%%a.exe
+    move \epoc32\winscw\c\data\%%a.log %PATH_TO_RESULT%\%%a.log
+)
 goto end
 
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
--- a/phonesettings/cpphonesettingsplugins/divertplugin/tsrc/ut_cpdivertplugin/ut_cpdivertplugin.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/divertplugin/tsrc/ut_cpdivertplugin/ut_cpdivertplugin.cpp	Mon May 03 12:31:11 2010 +0300
@@ -37,7 +37,7 @@
 #include "cpdivertplugingroup.h"
 
 
-
+Q_DECLARE_METATYPE(PsCallDivertingCondition)
 Q_EXTERN_C const char * qt_plugin_query_verification_data();
 Q_EXTERN_C ::QObject *  qt_plugin_instance();
 
@@ -48,6 +48,12 @@
     ~CPsetContainer(){};
 };
 
+void fillNumber(QString& number)
+{
+    number = "1234567";
+}
+    
+
 /*!
   UT_CpDivertPlugin::UT_CpDivertPlugin
  */
@@ -55,6 +61,8 @@
     : m_divertplugin(NULL)
 {
     const char * verificationData = qt_plugin_query_verification_data();
+	qRegisterMetaType<PsCallDivertingCondition>(
+        "PsCallDivertingCondition");
 }
 
 /*!
@@ -62,6 +70,8 @@
  */
 UT_CpDivertPlugin::~UT_CpDivertPlugin()
 {
+    delete m_divertpluginGroup;
+    delete m_helper;
     delete m_divertplugin;
 }
 
@@ -95,15 +105,15 @@
 void UT_CpDivertPlugin::cleanup()
 {
     reset();
+    delete m_divertpluginGroup;
+    m_divertpluginGroup = NULL;
+
+    delete m_helper;
+    m_helper = NULL;
     
     delete m_divertplugin;
     m_divertplugin = NULL;
-    
-    delete m_divertpluginGroup;
-    m_divertpluginGroup = NULL;
-    
-    delete m_helper;
-    m_helper = NULL;
+
 }
 
 /*!
@@ -125,7 +135,7 @@
     
     expect("PSetWrapper::callDivertingWrapper").returns(&tmpDivWrapper); 
     
-    CpDivertPlugin* p = (CpDivertPlugin*)qt_plugin_instance();
+    CpDivertPlugin* p = (CpDivertPlugin*)qt_plugin_instance(); // Get static
     QList<CpSettingFormItemData*> list;
     list.append(p->createSettingFormItemData(itemDataHelper));
     qDeleteAll(list);
@@ -140,35 +150,37 @@
     //except user cancels
     appendAction("All voice calls:", selectAction, "Cancel");
     expect("PSetCallDivertingWrapper::getDefaultNumbers");
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->setContentWidgetData("number", "");
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->setContentWidgetData(
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->setContentWidgetData("number", "");
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->setContentWidgetData(
             "state", CpDivertSelectionCustomitem::Disabled);
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->thisItemClicked();
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->thisItemClicked();
     QVERIFY(verify());
     
-    //except user selects vmb and inserts number
+    //except user selects vmb
     appendAction("All voice calls:", selectItem, "txt_phone_setlabel_voice_mbx");
-    appendAction("Voice mail box number:", insertText, "12345");
-    appendAction("Voice mail box number:", selectAction, "OK");
     expect("PSetCallDivertingWrapper::getDefaultNumbers");
+    expect("PSetCallDivertingWrapper::getVoiceMailBoxNumber").willOnce(invoke(fillNumber));
     expect("SsSettingsWrapper::get");
     expect("PSetCallDivertingWrapper::setCallDiverting");
     expect("CpPhoneNotes::noteShowing").returns(false);
     expect("CpPhoneNotes::showGlobalProgressNote");
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->thisItemClicked();
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->thisItemClicked();
+    QVERIFY(verify()); // Verify item click
     PSCallDivertingCommand command;
     command.iNumber = "12345";
     command.iStatus = DivertingStatusActive;
-    command.iCondition = m_divertpluginGroup->m_DataItemAllVoiceCalls->condition();
+    command.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceAllCalls->property("condition"));
+    command.iServiceGroup = ServiceGroupVoice;
     expect("CpPhoneNotes::showGlobalNote");
     m_divertpluginGroup->handleDivertingChanged(command, false);
     expect("CpPhoneNotes::cancelNote");
     m_divertpluginGroup->divertRequestProcessed();
-    QVERIFY(verify());
+    QVERIFY(verify()); // Verify result processing
 
     //except user selects one of the default numbers
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->setContentWidgetData("number","");
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->setContentWidgetData(
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->setContentWidgetData("number","");
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->setContentWidgetData(
             "state", CpDivertSelectionCustomitem::Disabled);
     appendAction("All voice calls:", selectItem, "0401234567");
     expect("PSetCallDivertingWrapper::getDefaultNumbers");
@@ -176,10 +188,12 @@
     expect("PSetCallDivertingWrapper::setCallDiverting");
     expect("CpPhoneNotes::noteShowing").returns(false);
     expect("CpPhoneNotes::showGlobalProgressNote");
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->thisItemClicked();
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->thisItemClicked();
     command.iNumber = "0401234567";
     command.iStatus = DivertingStatusActive;
-    command.iCondition = m_divertpluginGroup->m_DataItemAllVoiceCalls->condition();
+    command.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceAllCalls->property("condition"));
+    command.iServiceGroup = ServiceGroupVoice;
     expect("CpPhoneNotes::cancelNote");
     expect("CpPhoneNotes::showGlobalNote");
     expect("PSetCallDivertingWrapper::setNewDefaultNumber").with(QString("0401234567"));
@@ -194,10 +208,12 @@
     expect("PSetCallDivertingWrapper::setCallDiverting"); // Disable divert
     expect("CpPhoneNotes::noteShowing").returns(false);
     expect("CpPhoneNotes::showGlobalProgressNote");
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->thisItemClicked();
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->thisItemClicked();
     command.iNumber = "";
     command.iStatus = DivertingStatusInactive;
-    command.iCondition = m_divertpluginGroup->m_DataItemAllVoiceCalls->condition();
+    command.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceAllCalls->property("condition"));
+    command.iServiceGroup = ServiceGroupVoice;
     expect("CpPhoneNotes::showGlobalNote");
     m_divertpluginGroup->handleDivertingChanged(command, false);
     expect("CpPhoneNotes::cancelNote");
@@ -209,7 +225,7 @@
     appendAction("Number:", insertText, "12345");
     appendAction("Number:", selectAction, "Cancel");
     expect("PSetCallDivertingWrapper::getDefaultNumbers");
-    m_divertpluginGroup->m_DataItemAllVoiceCalls->thisItemClicked();
+    m_divertpluginGroup->m_DataItemVoiceAllCalls->thisItemClicked();
     QVERIFY(verify());
 }
 
@@ -225,32 +241,37 @@
     expect("CpPhoneNotes::noteShowing").returns(false);
     expect("CpPhoneNotes::showGlobalProgressNote");
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemAllVoiceCalls));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceAllCalls));
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemIfBusy));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceIfBusy));
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemIfNotAnswered));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceIfNotAnswered));
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemIfOutOfReach));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceIfOutOfReach));
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemIfNotAvailable));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceIfNotAvailable));
     
     QList<PSCallDivertingStatus*> list;
     PSCallDivertingStatus divertStatus;
     list.append(&divertStatus);
-    divertStatus.iCondition = m_divertpluginGroup->m_DataItemAllVoiceCalls->condition();
+    divertStatus.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceAllCalls->property("condition"));
     m_divertpluginGroup->handleDivertingStatus(list, true);
     m_divertpluginGroup->divertRequestProcessed();
-    divertStatus.iCondition = m_divertpluginGroup->m_DataItemIfBusy->condition();
+    divertStatus.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceIfBusy->property("condition"));
     m_divertpluginGroup->handleDivertingStatus(list, true);
     m_divertpluginGroup->divertRequestProcessed();
-    divertStatus.iCondition = m_divertpluginGroup->m_DataItemIfNotAnswered->condition();
+    divertStatus.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceIfNotAnswered->property("condition"));
     m_divertpluginGroup->handleDivertingStatus(list, true);
     m_divertpluginGroup->divertRequestProcessed();
-    divertStatus.iCondition = m_divertpluginGroup->m_DataItemIfOutOfReach->condition();
+    divertStatus.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceIfOutOfReach->property("condition"));
     m_divertpluginGroup->handleDivertingStatus(list, true);
     m_divertpluginGroup->divertRequestProcessed();
-    divertStatus.iCondition = m_divertpluginGroup->m_DataItemIfNotAvailable->condition();
+    divertStatus.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceIfNotAvailable->property("condition"));
     m_divertpluginGroup->handleDivertingStatus(list, true);
     m_divertpluginGroup->divertRequestProcessed();
     
@@ -258,15 +279,15 @@
 
     // Test, Do not check status again
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemAllVoiceCalls));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceAllCalls));
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemIfBusy));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceIfBusy));
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemIfNotAnswered));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceIfNotAnswered));
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemIfOutOfReach));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceIfOutOfReach));
     m_divertpluginGroup->itemShown(
-            model->indexFromItem(m_divertpluginGroup->m_DataItemIfNotAvailable));
+            model->indexFromItem(m_divertpluginGroup->m_DataItemVoiceIfNotAvailable));
     
 
     QVERIFY(verify());
@@ -280,10 +301,10 @@
     appendAction("If not answered:", selectItem, "0401234567");
     appendAction("Time out", selectAction, "Cancel");
     expect("PSetCallDivertingWrapper::getDefaultNumbers");
-    m_divertpluginGroup->m_DataItemIfNotAnswered->setContentWidgetData("number", "");
-    m_divertpluginGroup->m_DataItemIfNotAnswered->setContentWidgetData(
+    m_divertpluginGroup->m_DataItemVoiceIfNotAnswered->setContentWidgetData("number", "");
+    m_divertpluginGroup->m_DataItemVoiceIfNotAnswered->setContentWidgetData(
             "state", CpDivertSelectionCustomitem::Disabled);
-    m_divertpluginGroup->m_DataItemIfNotAnswered->thisItemClicked();
+    m_divertpluginGroup->m_DataItemVoiceIfNotAnswered->thisItemClicked();
     QVERIFY(verify());
     
     appendAction("If not answered:", selectItem, "Other number");
@@ -294,12 +315,14 @@
     expect("PSetCallDivertingWrapper::getDefaultNumbers");    
     expect("SsSettingsWrapper::get");
     expect("PSetCallDivertingWrapper::setCallDiverting");
-    m_divertpluginGroup->m_DataItemIfNotAnswered->thisItemClicked();
+    m_divertpluginGroup->m_DataItemVoiceIfNotAnswered->thisItemClicked();
     PSCallDivertingCommand command;
     command.iNumber = "12345";
     command.iNoReplyTimer = 15;
     command.iStatus = DivertingStatusActive;
-    command.iCondition = m_divertpluginGroup->m_DataItemIfNotAnswered->condition();
+    command.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceIfNotAnswered->property("condition"));
+    command.iServiceGroup = ServiceGroupVoice;
     expect("CpPhoneNotes::showGlobalNote");
     m_divertpluginGroup->handleDivertingChanged(command, false);
     expect("CpPhoneNotes::cancelNote");
@@ -308,11 +331,13 @@
     
     expect("SsSettingsWrapper::get");
     expect("PSetCallDivertingWrapper::setCallDiverting");
-    m_divertpluginGroup->m_DataItemIfNotAnswered->thisItemClicked();
+    m_divertpluginGroup->m_DataItemVoiceIfNotAnswered->thisItemClicked();
     command.iNumber = "";
     command.iNoReplyTimer = 0;
     command.iStatus = DivertingStatusInactive;
-    command.iCondition = m_divertpluginGroup->m_DataItemIfNotAnswered->condition();
+    command.iCondition = qvariant_cast<PsCallDivertingCondition>(
+            m_divertpluginGroup->m_DataItemVoiceIfNotAnswered->property("condition"));
+    command.iServiceGroup = ServiceGroupVoice;
     expect("CpPhoneNotes::showGlobalNote");
     m_divertpluginGroup->handleDivertingChanged(command, false);
     expect("CpPhoneNotes::cancelNote");
@@ -329,31 +354,42 @@
     PSCallDivertingCommand c;
     
     c.iStatus = DivertingStatusActive;
+    c.iServiceGroup = ServiceGroupAllTeleservices;
     bool bRet = false;
     expect("PSetCallDivertingWrapper::setNewDefaultNumber");
     expect("Tools::voipSupported").returns(bRet);
     m_divertpluginGroup->handleDivertingChanged(c, true);
     
-    expect("PSetCallDivertingWrapper::setNewDefaultNumber");
+    QVERIFY(verify());
+    
     bRet = true;
-    c.iServiceGroup = ServiceGroupVoice;
+    c.iServiceGroup = ServiceGroupAllTeleservices;
+    c.iCondition = DivertConditionUnconditional;
+    expect("PSetCallDivertingWrapper::setNewDefaultNumber");
     expect("Tools::voipSupported").returns(bRet);
     m_divertpluginGroup->handleDivertingChanged(c, false);
     
+    QVERIFY(verify());
+    
     c.iStatus = DivertingStatusInactive;
+    c.iCondition = DivertConditionBusy;
     m_divertpluginGroup->handleDivertingChanged(c, true);
     m_divertpluginGroup->handleDivertingChanged(c, false);
     
     c.iStatus = DivertingStatusNotRegistered;
+    c.iCondition = DivertConditionNoReply;
     m_divertpluginGroup->handleDivertingChanged(c, true);
     
     c.iStatus = DivertingStatusNotProvisioned;
+    c.iCondition = DivertConditionNotReachable;
     m_divertpluginGroup->handleDivertingChanged(c, true);
     
     c.iStatus = DivertingStatusUnknown;
+    c.iCondition = DivertConditionAllCalls;
     m_divertpluginGroup->handleDivertingChanged(c, true);
     
     c.iStatus = (PsCallDivertingStatus)5;
+    c.iCondition = DivertConditionAllConditionalCases;
     m_divertpluginGroup->handleDivertingChanged(c, true);
     
     QVERIFY(verify());
@@ -415,6 +451,7 @@
     if (!actionQueue.count()) {
         startTimer(2000);
     }
+    qDebug() << "appendAction(" << dialog << actionType << action <<")";
     actionQueue.append(new dialogAction(dialog, actionType, action));
 }
 
@@ -423,6 +460,7 @@
  */
 void UT_CpDivertPlugin::executeAction( const dialogAction &action )
 {
+    qDebug() << "executeAction(" << action.dialog << action.type << action.item <<")";
     switch (action.type) {
     case selectAction:
         doAndVerifyAction(action.dialog, action.item);
--- a/phonesettings/cpphonesettingsplugins/divertplugin/tsrc/ut_cpdivertselectionitem/ut_cpdivertselectionitem.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/divertplugin/tsrc/ut_cpdivertselectionitem/ut_cpdivertselectionitem.cpp	Mon May 03 12:31:11 2010 +0300
@@ -110,14 +110,6 @@
 }
 
 /*!
-  UT_CpDivertSelectionItem::t_restore
- */
-void UT_CpDivertSelectionItem::t_restore()
-{
-    m_item->restore();
-}
-
-/*!
   UT_CpDivertSelectionItem::t_createCustomWidget
  */
 void UT_CpDivertSelectionItem::t_createCustomWidget()
--- a/phonesettings/cpphonesettingsplugins/divertplugin/tsrc/ut_cpdivertselectionitem/ut_cpdivertselectionitem.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/divertplugin/tsrc/ut_cpdivertselectionitem/ut_cpdivertselectionitem.h	Mon May 03 12:31:11 2010 +0300
@@ -42,7 +42,6 @@
     
     void t_createItem();
     void t_canSetModelIndex();
-    void t_restore();
     void t_createCustomWidget();
 private:
     // Not own
--- a/phonesettings/cpphonesettingsplugins/eabi/cptelephonyutilsu.def	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/eabi/cptelephonyutilsu.def	Mon May 03 12:31:11 2010 +0300
@@ -1,63 +1,62 @@
 EXPORTS
 	_ZN12CpPhoneNotes10cancelNoteEi @ 1 NONAME
-	_ZN12CpPhoneNotes11qt_metacallEN11QMetaObject4CallEiPPv @ 2 NONAME
-	_ZN12CpPhoneNotes11qt_metacastEPKc @ 3 NONAME
-	_ZN12CpPhoneNotes14showGlobalNoteERiRK7QStringN12HbMessageBox14MessageBoxTypeE @ 4 NONAME
-	_ZN12CpPhoneNotes16staticMetaObjectE @ 5 NONAME DATA 16
-	_ZN12CpPhoneNotes19getStaticMetaObjectEv @ 6 NONAME
-	_ZN12CpPhoneNotes19showGlobalErrorNoteERii @ 7 NONAME
-	_ZN12CpPhoneNotes20progressNoteCanceledEv @ 8 NONAME
-	_ZN12CpPhoneNotes20showBasicServiceListERK7QStringRK5QListIhE @ 9 NONAME
-	_ZN12CpPhoneNotes21launchNextNoteIfReadyEv @ 10 NONAME
-	_ZN12CpPhoneNotes21showCallDivertDetailsERK21PSCallDivertingStatus @ 11 NONAME
-	_ZN12CpPhoneNotes22activeNoteAboutToCloseEv @ 12 NONAME
-	_ZN12CpPhoneNotes22showGlobalProgressNoteERiRK7QString @ 13 NONAME
-	_ZN12CpPhoneNotes26handleProgressNoteCanceledEv @ 14 NONAME
-	_ZN12CpPhoneNotes30showBasicServiceCallDivertListERK7QStringRK5QListIP21PSCallDivertingStatusERiN16CpTelephonyUtils14CallDivertTypeERSB_ @ 15 NONAME
-	_ZN12CpPhoneNotes8instanceEv @ 16 NONAME
-	_ZN12CpPhoneNotesC1Ev @ 17 NONAME
-	_ZN12CpPhoneNotesC2Ev @ 18 NONAME
-	_ZN12CpPhoneNotesD0Ev @ 19 NONAME
-	_ZN12CpPhoneNotesD1Ev @ 20 NONAME
-	_ZN12CpPhoneNotesD2Ev @ 21 NONAME
-	_ZN17CpSettingsWrapper11qt_metacallEN11QMetaObject4CallEiPPv @ 22 NONAME
-	_ZN17CpSettingsWrapper11qt_metacastEPKc @ 23 NONAME
-	_ZN17CpSettingsWrapper16showCallDurationEv @ 24 NONAME
-	_ZN17CpSettingsWrapper16staticMetaObjectE @ 25 NONAME DATA 16
-	_ZN17CpSettingsWrapper18readSoftRejectTextER7QStringRb @ 26 NONAME
-	_ZN17CpSettingsWrapper19getStaticMetaObjectEv @ 27 NONAME
-	_ZN17CpSettingsWrapper19setShowCallDurationEb @ 28 NONAME
-	_ZN17CpSettingsWrapper19writeSoftRejectTextERK7QStringb @ 29 NONAME
-	_ZN17CpSettingsWrapper51isFeatureCallWaitingDistiquishNotProvisionedEnabledEv @ 30 NONAME
-	_ZN17CpSettingsWrapperC1EP7QObject @ 31 NONAME
-	_ZN17CpSettingsWrapperC2EP7QObject @ 32 NONAME
-	_ZN17CpSettingsWrapperD0Ev @ 33 NONAME
-	_ZN17CpSettingsWrapperD1Ev @ 34 NONAME
-	_ZN17CpSettingsWrapperD2Ev @ 35 NONAME
-	_ZN5Tools11qt_metacallEN11QMetaObject4CallEiPPv @ 36 NONAME
-	_ZN5Tools11qt_metacastEPKc @ 37 NONAME
-	_ZN12CpPhoneNotes11noteShowingEv @ 38 NONAME
-	_ZN5Tools13voipSupportedEv @ 39 NONAME
-	_ZN5Tools14videoSupportedEv @ 40 NONAME
-	_ZN5Tools16staticMetaObjectE @ 41 NONAME DATA 16
-	_ZN5Tools19getStaticMetaObjectEv @ 42 NONAME
-	_ZN5Tools20errorCodeTextMappingEiR7QString @ 43 NONAME
-	_ZN5Tools28convertEtelMobileServiceCodeEi @ 44 NONAME
+	_ZN12CpPhoneNotes11noteShowingEv @ 2 NONAME
+	_ZN12CpPhoneNotes11qt_metacallEN11QMetaObject4CallEiPPv @ 3 NONAME
+	_ZN12CpPhoneNotes11qt_metacastEPKc @ 4 NONAME
+	_ZN12CpPhoneNotes14showGlobalNoteERiRK7QStringN12HbMessageBox14MessageBoxTypeE @ 5 NONAME
+	_ZN12CpPhoneNotes16staticMetaObjectE @ 6 NONAME DATA 16
+	_ZN12CpPhoneNotes19getStaticMetaObjectEv @ 7 NONAME
+	_ZN12CpPhoneNotes19passwordTextChangedEv @ 8 NONAME
+	_ZN12CpPhoneNotes19showGlobalErrorNoteERii @ 9 NONAME
+	_ZN12CpPhoneNotes20progressNoteCanceledEv @ 10 NONAME
+	_ZN12CpPhoneNotes20showBasicServiceListERK7QStringRK5QListIhE @ 11 NONAME
+	_ZN12CpPhoneNotes21launchNextNoteIfReadyEv @ 12 NONAME
+	_ZN12CpPhoneNotes21showCallDivertDetailsERK21PSCallDivertingStatus @ 13 NONAME
+	_ZN12CpPhoneNotes22activeNoteAboutToCloseEv @ 14 NONAME
+	_ZN12CpPhoneNotes22showGlobalProgressNoteERiRK7QString @ 15 NONAME
+	_ZN12CpPhoneNotes23showPasswordQueryDialogERK7QStringRK10QValidatoriRS0_Rb @ 16 NONAME
+	_ZN12CpPhoneNotes26handleProgressNoteCanceledEv @ 17 NONAME
+	_ZN12CpPhoneNotes8instanceEv @ 18 NONAME
+	_ZN12CpPhoneNotesC1Ev @ 19 NONAME
+	_ZN12CpPhoneNotesC2Ev @ 20 NONAME
+	_ZN12CpPhoneNotesD0Ev @ 21 NONAME
+	_ZN12CpPhoneNotesD1Ev @ 22 NONAME
+	_ZN12CpPhoneNotesD2Ev @ 23 NONAME
+	_ZN17CpSettingsWrapper11qt_metacallEN11QMetaObject4CallEiPPv @ 24 NONAME
+	_ZN17CpSettingsWrapper11qt_metacastEPKc @ 25 NONAME
+	_ZN17CpSettingsWrapper16showCallDurationEv @ 26 NONAME
+	_ZN17CpSettingsWrapper16staticMetaObjectE @ 27 NONAME DATA 16
+	_ZN17CpSettingsWrapper18readSoftRejectTextER7QStringRb @ 28 NONAME
+	_ZN17CpSettingsWrapper19getStaticMetaObjectEv @ 29 NONAME
+	_ZN17CpSettingsWrapper19setShowCallDurationEb @ 30 NONAME
+	_ZN17CpSettingsWrapper19writeSoftRejectTextERK7QStringb @ 31 NONAME
+	_ZN17CpSettingsWrapper51isFeatureCallWaitingDistiquishNotProvisionedEnabledEv @ 32 NONAME
+	_ZN17CpSettingsWrapperC1EP7QObject @ 33 NONAME
+	_ZN17CpSettingsWrapperC2EP7QObject @ 34 NONAME
+	_ZN17CpSettingsWrapperD0Ev @ 35 NONAME
+	_ZN17CpSettingsWrapperD1Ev @ 36 NONAME
+	_ZN17CpSettingsWrapperD2Ev @ 37 NONAME
+	_ZN5Tools11qt_metacallEN11QMetaObject4CallEiPPv @ 38 NONAME
+	_ZN5Tools11qt_metacastEPKc @ 39 NONAME
+	_ZN5Tools13voipSupportedEv @ 40 NONAME
+	_ZN5Tools14videoSupportedEv @ 41 NONAME
+	_ZN5Tools16staticMetaObjectE @ 42 NONAME DATA 16
+	_ZN5Tools19getStaticMetaObjectEv @ 43 NONAME
+	_ZN5Tools20errorCodeTextMappingEiR7QString @ 44 NONAME
 	_ZNK12CpPhoneNotes10metaObjectEv @ 45 NONAME
 	_ZNK12CpPhoneNotes17formatPhoneNumberE7QString @ 46 NONAME
 	_ZNK12CpPhoneNotes21basicServiceGroupNameEN16CpTelephonyUtils18BasicServiceGroupsE @ 47 NONAME
-	_ZNK12CpPhoneNotes28convertEtelMobileServiceCodeEi @ 48 NONAME
-	_ZNK17CpSettingsWrapper10metaObjectEv @ 49 NONAME
-	_ZNK17CpSettingsWrapper14isPhoneOfflineEv @ 50 NONAME
-	_ZNK17CpSettingsWrapper15readCenrepValueElm @ 51 NONAME
-	_ZNK17CpSettingsWrapper16readCenrepStringElm @ 52 NONAME
-	_ZNK17CpSettingsWrapper16writeCenrepValueElmRK8QVariant @ 53 NONAME
-	_ZNK17CpSettingsWrapper23numberGroupingSupportedEv @ 54 NONAME
-	_ZNK5Tools10metaObjectEv @ 55 NONAME
-	_ZTI12CpPhoneNotes @ 56 NONAME
-	_ZTI17CpSettingsWrapper @ 57 NONAME
-	_ZTI5Tools @ 58 NONAME
-	_ZTV12CpPhoneNotes @ 59 NONAME
-	_ZTV17CpSettingsWrapper @ 60 NONAME
-	_ZTV5Tools @ 61 NONAME
+	_ZNK17CpSettingsWrapper10metaObjectEv @ 48 NONAME
+	_ZNK17CpSettingsWrapper14isPhoneOfflineEv @ 49 NONAME
+	_ZNK17CpSettingsWrapper15readCenrepValueElm @ 50 NONAME
+	_ZNK17CpSettingsWrapper16readCenrepStringElm @ 51 NONAME
+	_ZNK17CpSettingsWrapper16writeCenrepValueElmRK8QVariant @ 52 NONAME
+	_ZNK17CpSettingsWrapper23numberGroupingSupportedEv @ 53 NONAME
+	_ZNK5Tools10metaObjectEv @ 54 NONAME
+	_ZTI12CpPhoneNotes @ 55 NONAME
+	_ZTI17CpSettingsWrapper @ 56 NONAME
+	_ZTI5Tools @ 57 NONAME
+	_ZTV12CpPhoneNotes @ 58 NONAME
+	_ZTV17CpSettingsWrapper @ 59 NONAME
+	_ZTV5Tools @ 60 NONAME
 
--- a/phonesettings/cpphonesettingsplugins/telephonyplugin/src/cptelephonyplugin.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/telephonyplugin/src/cptelephonyplugin.cpp	Mon May 03 12:31:11 2010 +0300
@@ -44,7 +44,7 @@
 
     QList<CpSettingFormItemData*> ret;
     ret.append(new CpSettingFormEntryItemDataImpl<CpTelephonyPluginView>(
-            itemDataHelper, hbTrId("Telephony"), hbTrId("")));
+            itemDataHelper, hbTrId("txt_cp_dblist_telephone"), hbTrId("")));
     return ret;
 }
 
--- a/phonesettings/cpphonesettingsplugins/telephonyplugin/src/cptelephonypluginview.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/telephonyplugin/src/cptelephonypluginview.cpp	Mon May 03 12:31:11 2010 +0300
@@ -49,7 +49,7 @@
     HbDataForm *form = qobject_cast<HbDataForm*>(widget());
     if (form) {
         HbDataFormModel *model = new HbDataFormModel;
-        form->setHeading(hbTrId("Telephone settings"));
+        form->setHeading(hbTrId("txt_phone_subhead_telephone"));
         // Create and initialize plugin's item data helper
         m_helper = initializeItemDataHelper(); 
         QList<CpSettingFormItemData*> items;
@@ -62,11 +62,14 @@
         DPRINT << ": Loading cpdivertsplugin";
         items.append(groupItemFromPlugin("cpdivertplugin"));
         
-
         // Load call mailboxes plugin
         DPRINT << ": Loading vmbxcpplugin";
         items.append(groupItemFromPlugin("vmbxcpplugin"));
 
+        // Load barring plugin
+        DPRINT << ": Loading cpbarringplugin";
+        items.append(groupItemFromPlugin("cpbarringplugin"));
+        
         // Insert items to form model
         foreach (CpSettingFormItemData* i, items) {
             model->appendDataFormItem(i);
--- a/phonesettings/cpphonesettingsplugins/telephonyplugin/tsrc/run_auto_tests_qt.bat	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/telephonyplugin/tsrc/run_auto_tests_qt.bat	Mon May 03 12:31:11 2010 +0300
@@ -54,14 +54,19 @@
 set INSTRUMENT=TRUE
 set REMOVEINSTRUMENT=TRUE
 set DOMODULESTESTS=TRUE
-set ABLD_CALL=abld build winscw udeb -keepgoing
+set SBS_CALL=sbs --config winscw_udeb --keepgoing BUILD
 set PATH_TO_DLL=\epoc32\release\winscw\udeb
 set PATH_TO_COVERAGE_DATA=\coverage_data
+set PATH_TO_RESULT=\test_result
 
 if not exist %PATH_TO_COVERAGE_DATA% (
 mkdir %PATH_TO_COVERAGE_DATA%
 )
 
+if not exist %PATH_TO_RESULT% (
+mkdir %PATH_TO_RESULT%
+)
+
 if [%1] EQU [] ( goto default )
 
 call :%1
@@ -132,12 +137,11 @@
 pushd .
 call cd %1
 call qmake
-call bldmake bldfiles
-call abld clean winscw udeb
+call sbs --config winscw_udeb --keepgoing CLEAN
 if [%INSTRUMENT%] EQU [TRUE] (
-call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" %ABLD_CALL%
+call ctcwrap -2comp -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" "%SBS_CALL%"
 ) else (
-call %ABLD_CALL%
+call %SBS_CALL%
 )
 
 popd
@@ -152,7 +156,10 @@
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
 :RUNTESTS
 echo Running tests
-for /f %%a in ('dir /b ut_*') do call %PATH_TO_DLL%\%%a.exe
+for /f %%a in ('dir /b ut_*') do (
+    call %PATH_TO_DLL%\%%a.exe
+    move \epoc32\winscw\c\data\%%a.log %PATH_TO_RESULT%\%%a.log
+)
 goto end
 
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cellulardatasettings.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,86 @@
+/* 
+* 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:
+*
+*/
+#include <QDebug>
+#include <smcmockclassincludes.h>
+#include <cellulardatasettings.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CellularDataSettings::CellularDataSettings
+// -----------------------------------------------------------------------------
+//
+CellularDataSettings::CellularDataSettings(  )
+    //:
+    //QObject( /**/ )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// CellularDataSettings::~CellularDataSettings
+// -----------------------------------------------------------------------------
+//
+CellularDataSettings::~CellularDataSettings(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// CellularDataSettings::dataUseHome
+// -----------------------------------------------------------------------------
+//
+int CellularDataSettings::dataUseHome(  )
+    {
+    SMC_MOCK_METHOD0( int )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CellularDataSettings::setDataUseHome
+// -----------------------------------------------------------------------------
+//
+void CellularDataSettings::setDataUseHome( 
+        int value )
+    {
+    SMC_MOCK_METHOD1( void, int, value )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CellularDataSettings::dataUseRoam
+// -----------------------------------------------------------------------------
+//
+int CellularDataSettings::dataUseRoam(  )
+    {
+    SMC_MOCK_METHOD0( int )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CellularDataSettings::setDataUseRoam
+// -----------------------------------------------------------------------------
+//
+void CellularDataSettings::setDataUseRoam( 
+        int value )
+    {
+    SMC_MOCK_METHOD1( void, int, value )
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cmmanager.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,435 @@
+/* 
+* 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 <smcmockclassincludes.h>
+#include "cmmanager.h"
+
+class RCmConnectionMethod
+{
+public:
+    RCmConnectionMethod(){};
+};
+
+class RCmDestination
+{
+public:
+    RCmDestination(){};
+};
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// RCmManager::OpenL
+// -----------------------------------------------------------------------------
+//
+void RCmManager::OpenL(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::OpenLC
+// -----------------------------------------------------------------------------
+//
+void RCmManager::OpenLC(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::Close
+// -----------------------------------------------------------------------------
+//
+void RCmManager::Close(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::GetBearerInfoIntL
+// -----------------------------------------------------------------------------
+//
+TUint32 RCmManager::GetBearerInfoIntL( 
+        TUint32 aBearerType,
+        TUint32 aAttribute ) const
+    {
+    SMC_MOCK_METHOD2( TUint32, TUint32, aBearerType, 
+        TUint32, aAttribute )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::GetBearerInfoBoolL
+// -----------------------------------------------------------------------------
+//
+TBool RCmManager::GetBearerInfoBoolL( 
+        TUint32 aBearerType,
+        TUint32 aAttribute ) const
+    {
+    SMC_MOCK_METHOD2( TBool, TUint32, aBearerType, 
+        TUint32, aAttribute )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::GetBearerInfoStringL
+// -----------------------------------------------------------------------------
+//
+HBufC * RCmManager::GetBearerInfoStringL( 
+        TUint32 aBearerType,
+        TUint32 aAttribute ) const
+    {
+    SMC_MOCK_METHOD2( HBufC *, TUint32, aBearerType, 
+        TUint32, aAttribute )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::GetBearerInfoString8L
+// -----------------------------------------------------------------------------
+//
+HBufC8 * RCmManager::GetBearerInfoString8L( 
+        TUint32 aBearerType,
+        TUint32 aAttribute ) const
+    {
+    SMC_MOCK_METHOD2( HBufC8 *, TUint32, aBearerType, 
+        TUint32, aAttribute )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::GetConnectionMethodInfoIntL
+// -----------------------------------------------------------------------------
+//
+TUint32 RCmManager::GetConnectionMethodInfoIntL( 
+        TUint32 aIapId,
+        TUint32 aAttribute ) const
+    {
+    SMC_MOCK_METHOD2( TUint32, TUint32, aIapId, 
+        TUint32, aAttribute )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::GetConnectionMethodInfoBoolL
+// -----------------------------------------------------------------------------
+//
+TBool RCmManager::GetConnectionMethodInfoBoolL( 
+        TUint32 aIapId,
+        TUint32 aAttribute ) const
+    {
+    SMC_MOCK_METHOD2( TBool, TUint32, aIapId, 
+        TUint32, aAttribute )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::GetConnectionMethodInfoStringL
+// -----------------------------------------------------------------------------
+//
+HBufC * RCmManager::GetConnectionMethodInfoStringL( 
+        TUint32 aIapId,
+        TUint32 aAttribute ) const
+    {
+    SMC_MOCK_METHOD2( HBufC *, TUint32, aIapId, 
+        TUint32, aAttribute )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::GetConnectionMethodInfoString8L
+// -----------------------------------------------------------------------------
+//
+HBufC8 * RCmManager::GetConnectionMethodInfoString8L( 
+        TUint32 aIapId,
+        TUint32 aAttribute ) const
+    {
+    SMC_MOCK_METHOD2( HBufC8 *, TUint32, aIapId, 
+        TUint32, aAttribute )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::ConnectionMethodL
+// -----------------------------------------------------------------------------
+//
+RCmConnectionMethod RCmManager::ConnectionMethodL( 
+        TUint32 aConnectionMethodId ) const
+    {
+    SMC_MOCK_METHOD1( RCmConnectionMethod, TUint32, aConnectionMethodId )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::ConnectionMethodL
+// -----------------------------------------------------------------------------
+//
+void RCmManager::ConnectionMethodL( 
+        RArray<TUint32> & aCMArray,
+        TBool aCheckBearerType,
+        TBool aLegacyOnly,
+        TBool aEasyWlan ) const
+    {
+    SMC_MOCK_METHOD4( void, RArray<TUint32> &, aCMArray, 
+        TBool, aCheckBearerType, 
+        TBool, aLegacyOnly, 
+        TBool, aEasyWlan )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::AllDestinationsL
+// -----------------------------------------------------------------------------
+//
+void RCmManager::AllDestinationsL( 
+        RArray<TUint32> & aDestArray ) const
+    {
+    SMC_MOCK_METHOD1( void, RArray<TUint32> &, aDestArray )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::DestinationL
+// -----------------------------------------------------------------------------
+//
+RCmDestination RCmManager::DestinationL( 
+        TUint32 aDestinationId ) const
+    {
+    SMC_MOCK_METHOD1( RCmDestination, TUint32, aDestinationId )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::BearerPriorityArrayL
+// -----------------------------------------------------------------------------
+//
+void RCmManager::BearerPriorityArrayL( 
+        RArray<TBearerPriority> & aArray ) const
+    {
+    SMC_MOCK_METHOD1( void, RArray<TBearerPriority> &, aArray )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::CleanupGlobalPriorityArray
+// -----------------------------------------------------------------------------
+//
+void RCmManager::CleanupGlobalPriorityArray( 
+        RArray<TBearerPriority> & aArray ) const
+    {
+    SMC_MOCK_METHOD1( void, RArray<TBearerPriority> &, aArray )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::EasyWlanIdL
+// -----------------------------------------------------------------------------
+//
+TUint32 RCmManager::EasyWlanIdL(  ) const
+    {
+    SMC_MOCK_METHOD0( TUint32 )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::ReadDefConnL
+// -----------------------------------------------------------------------------
+//
+void RCmManager::ReadDefConnL( 
+        TCmDefConnValue &  )
+    {
+    //SMC_MOCK_METHOD1( void, TCmDefConnValue &, aDCSetting )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::WriteDefConnL
+// -----------------------------------------------------------------------------
+//
+void RCmManager::WriteDefConnL( 
+        const TCmDefConnValue &  )
+    {
+    //SMC_MOCK_METHOD1( void, const TCmDefConnValue &, aDCSetting )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::ReadGenConnSettingsL
+// -----------------------------------------------------------------------------
+//
+void RCmManager::ReadGenConnSettingsL( 
+        TCmGenConnSettings & aGenConnSettings )
+    {
+    SMC_MOCK_METHOD1( void, TCmGenConnSettings &, aGenConnSettings )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::WriteGenConnSettingsL
+// -----------------------------------------------------------------------------
+//
+void RCmManager::WriteGenConnSettingsL( 
+        const TCmGenConnSettings & aGenConnSettings )
+    {
+    SMC_MOCK_METHOD1( void, const TCmGenConnSettings &, aGenConnSettings )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::CreateTablesAndOpenL
+// -----------------------------------------------------------------------------
+//
+void RCmManager::CreateTablesAndOpenL(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::CreateDestinationL
+// -----------------------------------------------------------------------------
+//
+RCmDestination RCmManager::CreateDestinationL( 
+        const TDesC & aName )
+    {
+    SMC_MOCK_METHOD1( RCmDestination, const TDesC &, aName )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::CreateConnectionMethodL
+// -----------------------------------------------------------------------------
+//
+RCmConnectionMethod RCmManager::CreateConnectionMethodL( 
+        TUint32 aBearerType )
+    {
+    SMC_MOCK_METHOD1( RCmConnectionMethod, TUint32, aBearerType )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::CopyConnectionMethodL
+// -----------------------------------------------------------------------------
+//
+TInt RCmManager::CopyConnectionMethodL( 
+        RCmDestination & aTargetDestination,
+        RCmConnectionMethod & aConnectionMethod )
+    {
+    SMC_MOCK_METHOD2( TInt, RCmDestination &, aTargetDestination, 
+        RCmConnectionMethod &, aConnectionMethod )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::MoveConnectionMethodL
+// -----------------------------------------------------------------------------
+//
+TInt RCmManager::MoveConnectionMethodL( 
+        RCmDestination & aSourceDestination,
+        RCmDestination & aTargetDestination,
+        RCmConnectionMethod & aConnectionMethod )
+    {
+    SMC_MOCK_METHOD3( TInt, RCmDestination &, aSourceDestination, 
+        RCmDestination &, aTargetDestination, 
+        RCmConnectionMethod &, aConnectionMethod )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::RemoveConnectionMethodL
+// -----------------------------------------------------------------------------
+//
+void RCmManager::RemoveConnectionMethodL( 
+        RCmDestination & aDestination,
+        RCmConnectionMethod & aConnectionMethod )
+    {
+    SMC_MOCK_METHOD2( void, RCmDestination &, aDestination, 
+        RCmConnectionMethod &, aConnectionMethod )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::RemoveAllReferencesL
+// -----------------------------------------------------------------------------
+//
+void RCmManager::RemoveAllReferencesL( 
+        RCmConnectionMethod & aConnectionMethod )
+    {
+    SMC_MOCK_METHOD1( void, RCmConnectionMethod &, aConnectionMethod )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::UpdateBearerPriorityArrayL
+// -----------------------------------------------------------------------------
+//
+void RCmManager::UpdateBearerPriorityArrayL( 
+        const RArray<TBearerPriority> & aArray )
+    {
+    SMC_MOCK_METHOD1( void, const RArray<TBearerPriority> &, aArray )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::CreateDestinationL
+// -----------------------------------------------------------------------------
+//
+RCmDestination RCmManager::CreateDestinationL( 
+        const TDesC & aName,
+        TUint32 aDestId )
+    {
+    SMC_MOCK_METHOD2( RCmDestination, const TDesC &, aName, 
+        TUint32, aDestId )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::CreateConnectionMethodL
+// -----------------------------------------------------------------------------
+//
+RCmConnectionMethod RCmManager::CreateConnectionMethodL( 
+        TUint32 aImplementationUid,
+        TUint32 aConnMethodId )
+    {
+    SMC_MOCK_METHOD2( RCmConnectionMethod, TUint32, aImplementationUid, 
+        TUint32, aConnMethodId )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::SupportedBearersL
+// -----------------------------------------------------------------------------
+//
+void RCmManager::SupportedBearersL( 
+        RArray<TUint32> & aArray ) const
+    {
+    SMC_MOCK_METHOD1( void, RArray<TUint32> &, aArray )
+    }
+
+
+// -----------------------------------------------------------------------------
+// RCmManager::UncategorizedIconL
+// -----------------------------------------------------------------------------
+//
+CGulIcon * RCmManager::UncategorizedIconL(  ) const
+    {
+    SMC_MOCK_METHOD0( CGulIcon * )
+    }
+
+
--- a/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpbarringplugingroup.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpbarringplugingroup.cpp	Mon May 03 12:31:11 2010 +0300
@@ -24,6 +24,7 @@
 #include <QApplication>
 #include <QTimer>
 #include <cpitemdatahelper.h>
+#include <psetwrapper.h>
 #include "cpbarringplugingroup.h"
 
 // ============================ MEMBER FUNCTIONS ===============================
@@ -111,6 +112,15 @@
         bool, plural)
 }
 
+// -----------------------------------------------------------------------------
+// CpBarringPluginGroup::barringPasswordChangeRequestCompleted
+// -----------------------------------------------------------------------------
+//
+void CpBarringPluginGroup::barringPasswordChangeRequestCompleted(int result)
+{
+    SMC_MOCK_METHOD1( void, int, result)
+}
+
 
 // -----------------------------------------------------------------------------
 // CpBarringPluginGroup::changeBarringStateRequested
@@ -123,6 +133,16 @@
 
 
 // -----------------------------------------------------------------------------
+// CpBarringPluginGroup::changeBarringPasswordRequested
+// -----------------------------------------------------------------------------
+//
+void CpBarringPluginGroup::changeBarringPasswordRequested(bool checked)
+{
+    SMC_MOCK_METHOD1( void, bool, checked)
+}
+
+
+// -----------------------------------------------------------------------------
 // CpBarringPluginGroup::processBarringStatusRequestQueue
 // -----------------------------------------------------------------------------
 //
--- a/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpnetworkpluginform.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpnetworkpluginform.cpp	Mon May 03 12:31:11 2010 +0300
@@ -20,7 +20,11 @@
 #include <psetwrapper.h>
 #include "cpnetworkpluginform.h"
 
-
+class CellularDataSettings
+{
+public:
+    CellularDataSettings();
+};
 // ============================ MEMBER FUNCTIONS ===============================
 
 // -----------------------------------------------------------------------------
@@ -46,6 +50,28 @@
     }
 
 // -----------------------------------------------------------------------------
+// CpNetworkPluginForm::cellularDataUseHomeStateChanged
+// -----------------------------------------------------------------------------
+//
+void CpNetworkPluginForm::cellularDataUseHomeStateChanged( 
+        int index )
+    {
+    SMC_MOCK_METHOD1( void, int, index )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CpNetworkPluginForm::cellularDataUseRoamStateChanged
+// -----------------------------------------------------------------------------
+//
+void CpNetworkPluginForm::cellularDataUseRoamStateChanged( 
+        int index )
+    {
+    SMC_MOCK_METHOD1( void, int, index )
+    }
+
+
+// -----------------------------------------------------------------------------
 // CpNetworkPluginForm::networkModeStateChanged
 // -----------------------------------------------------------------------------
 //
--- a/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpnetworkplugingroup.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +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:
-*
-*/
-#include <QDebug>
-#include <smcmockclassincludes.h>
-#include "cpnetworkplugingroup.h"
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CpNetworkPluginGroup::CpNetworkPluginGroup
-// -----------------------------------------------------------------------------
-//
-CpNetworkPluginGroup::CpNetworkPluginGroup( 
-        CpItemDataHelper & helper )
-    :
-    m_helper(helper)
-    {
-    
-    }
-
-
-// -----------------------------------------------------------------------------
-// CpNetworkPluginGroup::~CpNetworkPluginGroup
-// -----------------------------------------------------------------------------
-//
-CpNetworkPluginGroup::~CpNetworkPluginGroup(  )
-    {
-    
-    }
-
-
-// -----------------------------------------------------------------------------
-// CpNetworkPluginGroup::networkModeStateChanged
-// -----------------------------------------------------------------------------
-//
-void CpNetworkPluginGroup::networkModeStateChanged( 
-        int index )
-    {
-    SMC_MOCK_METHOD1( void, int, index )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CpNetworkPluginGroup::operatorSelectionStateChanged
-// -----------------------------------------------------------------------------
-//
-void CpNetworkPluginGroup::operatorSelectionStateChanged( 
-        int index )
-    {
-    SMC_MOCK_METHOD1( void, int, index )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CpNetworkPluginGroup::networkAccessModeGot
-// -----------------------------------------------------------------------------
-//
-void CpNetworkPluginGroup::networkAccessModeGot( 
-        int mode )
-    {
-    SMC_MOCK_METHOD1( void, int, mode )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CpNetworkPluginGroup::availableNetworksGot
-// -----------------------------------------------------------------------------
-//
-void CpNetworkPluginGroup::availableNetworksGot( 
-        QList<PSetNetworkWrapper::NetworkInfo *> & m_networkInfoList )
-    {
-    SMC_MOCK_METHOD1( void, QList<PSetNetworkWrapper::NetworkInfo *> &, m_networkInfoList )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CpNetworkPluginGroup::networkReqestFailed
-// -----------------------------------------------------------------------------
-//
-void CpNetworkPluginGroup::networkReqestFailed( 
-        PSetNetworkWrapper::ErrorCode error,
-        PSetNetworkWrapper::RequestType type )
-    {
-    SMC_MOCK_METHOD2( void, PSetNetworkWrapper::ErrorCode, error, 
-        PSetNetworkWrapper::RequestType, type )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CpNetworkPluginGroup::userCancel
-// -----------------------------------------------------------------------------
-//
-void CpNetworkPluginGroup::userCancel(  )
-    {
-    SMC_MOCK_METHOD0( void )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CpNetworkPluginGroup::handleSearchingNetworks
-// -----------------------------------------------------------------------------
-//
-void CpNetworkPluginGroup::handleSearchingNetworks( 
-        PSetNetworkWrapper::RequestType & type )
-    {
-    SMC_MOCK_METHOD1( void, PSetNetworkWrapper::RequestType &, type )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CpNetworkPluginGroup::handleRequestingSelectedNetwork
-// -----------------------------------------------------------------------------
-//
-void CpNetworkPluginGroup::handleRequestingSelectedNetwork( 
-        bool ongoing )
-    {
-    SMC_MOCK_METHOD1( void, bool, ongoing )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CpNetworkPluginGroup::handleNetworkChanged
-// -----------------------------------------------------------------------------
-//
-void CpNetworkPluginGroup::handleNetworkChanged( 
-        PSetNetworkWrapper::NetworkInfo & currentInfo,
-        PSetNetworkWrapper::RegistrationStatus & status )
-    {
-    SMC_MOCK_METHOD2( void, PSetNetworkWrapper::NetworkInfo &, currentInfo, 
-        PSetNetworkWrapper::RegistrationStatus &, status )
-    }
-
-
--- a/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpnetworkpluginview.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpnetworkpluginview.cpp	Mon May 03 12:31:11 2010 +0300
@@ -27,7 +27,7 @@
 CpNetworkPluginView::CpNetworkPluginView( 
         QGraphicsItem * parent )
     :
-    CpBaseSettingView(0, parent),
+    /*CpBaseSettingView(0, parent),*/
     m_networkSettingsForm(0)
     {
     
--- a/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpphonenotes.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpphonenotes.cpp	Mon May 03 12:31:11 2010 +0300
@@ -97,25 +97,6 @@
 }
 
 // -----------------------------------------------------------------------------
-// CpPhoneNotes::showBasicServiceCallDivertList
-// -----------------------------------------------------------------------------
-//
-void CpPhoneNotes::showBasicServiceCallDivertList( 
-        const QString & title,
-        const QList<PSCallDivertingStatus *> & divertStatuses,
-        int & selectionIndex,
-        CallDivertType divertType,
-        CallDivertType & divertDetailType )
-    {
-    SMC_MOCK_METHOD5( void, const QString &, title, 
-        const QList<PSCallDivertingStatus *> &, divertStatuses, 
-        int &, selectionIndex, 
-        CallDivertType, divertType, 
-        CallDivertType &, divertDetailType )
-    }
-
-
-// -----------------------------------------------------------------------------
 // CpPhoneNotes::showCallDivertDetails
 // -----------------------------------------------------------------------------
 //
@@ -127,6 +108,26 @@
 
 
 // -----------------------------------------------------------------------------
+// CpPhoneNotes::showPasswordQueryDialog
+// -----------------------------------------------------------------------------
+//
+void CpPhoneNotes::showPasswordQueryDialog(
+    const QString &title, 
+    const QValidator &validator,
+    int maxPasswordLength,
+    QString &password, 
+    bool &ok)
+{
+    SMC_MOCK_METHOD5( void, 
+        const QString &, title, 
+        const QValidator &, validator,
+        int, maxPasswordLength,
+        QString &, password,
+        bool &, ok)
+}
+
+
+// -----------------------------------------------------------------------------
 // CpPhoneNotes::cancelNote
 // -----------------------------------------------------------------------------
 //
@@ -137,6 +138,16 @@
 
 
 // -----------------------------------------------------------------------------
+// CpPhoneNotes::noteShowing
+// -----------------------------------------------------------------------------
+//
+bool CpPhoneNotes::noteShowing()
+{
+    SMC_MOCK_METHOD0( bool )
+}
+
+
+// -----------------------------------------------------------------------------
 // CpPhoneNotes::activeNoteAboutToClose
 // -----------------------------------------------------------------------------
 //
@@ -145,6 +156,7 @@
     SMC_MOCK_METHOD0( void )
 }
 
+
 // -----------------------------------------------------------------------------
 // CpPhoneNotes::handleProgressNoteCanceled
 // -----------------------------------------------------------------------------
@@ -154,11 +166,13 @@
     SMC_MOCK_METHOD0( void )
 }
 
+
 // -----------------------------------------------------------------------------
-// CpPhoneNotes::noteShowing
+// CpPhoneNotes::passwordTextChanged
 // -----------------------------------------------------------------------------
 //
-bool CpPhoneNotes::noteShowing()
+
+void CpPhoneNotes::passwordTextChanged()
 {
-    SMC_MOCK_METHOD0( bool )
+    SMC_MOCK_METHOD0( void )
 }
--- a/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpplugincommon.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpplugincommon.cpp	Mon May 03 12:31:11 2010 +0300
@@ -138,18 +138,6 @@
     SMC_MOCK_METHOD0( bool )
     }
 
-
-// -----------------------------------------------------------------------------
-// Tools::convertEtelMobileServiceCode
-// -----------------------------------------------------------------------------
-//
-BasicServiceGroups Tools::convertEtelMobileServiceCode( 
-        int serviceCode )
-    {
-    SMC_MOCK_METHOD1( BasicServiceGroups, int, serviceCode )
-    }
-
-
 // -----------------------------------------------------------------------------
 // Tools::errorCodeTextMapping
 // -----------------------------------------------------------------------------
--- a/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_cpsettingformentryitemdataimpl.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +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: 
-*
-*/
-
--- a/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_hbabstractitemview.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_hbabstractitemview.cpp	Mon May 03 12:31:11 2010 +0300
@@ -459,9 +459,8 @@
 // -----------------------------------------------------------------------------
 //
 QItemSelectionModel::SelectionFlags HbAbstractItemView::selectionCommand( 
-        const HbAbstractViewItem * item,
-        const QEvent * event,
-        bool contiguousArea )
+        const HbAbstractViewItem *item, 
+        const QEvent *event )
     {
     
     }
@@ -477,29 +476,6 @@
     
     }
 
-
-// -----------------------------------------------------------------------------
-// HbAbstractItemView::keyPressEvent
-// -----------------------------------------------------------------------------
-//
-void HbAbstractItemView::keyPressEvent( 
-        QKeyEvent * event )
-    {
-    
-    }
-
-
-// -----------------------------------------------------------------------------
-// HbAbstractItemView::keyReleaseEvent
-// -----------------------------------------------------------------------------
-//
-void HbAbstractItemView::keyReleaseEvent( 
-        QKeyEvent * event )
-    {
-    
-    }
-
-
 // -----------------------------------------------------------------------------
 // HbAbstractItemView::mousePressEvent
 // -----------------------------------------------------------------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_hbcheckbox.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,232 @@
+/* 
+* 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:
+*
+*/
+
+#include <QDebug>
+#include <hbcheckbox.h>
+#include <hbstyleoptioncheckbox.h>
+#include <QGraphicsSceneMouseEvent>
+#include <QGraphicsItem>
+#include <smcmockclassincludes.h>
+#include "hbcheckbox.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::HbCheckBox
+// -----------------------------------------------------------------------------
+//
+HbCheckBox::HbCheckBox( 
+        const QString & text,
+        QGraphicsItem * parent )
+    :
+    HbAbstractButton( parent )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::~HbCheckBox
+// -----------------------------------------------------------------------------
+//
+HbCheckBox::~HbCheckBox(  )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::setText
+// -----------------------------------------------------------------------------
+//
+void HbCheckBox::setText( 
+        const QString & text )
+    {
+    SMC_MOCK_METHOD1( void, const QString &, text )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::text
+// -----------------------------------------------------------------------------
+//
+QString HbCheckBox::text(  ) const
+    {
+    SMC_MOCK_METHOD0( QString )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::setTristate
+// -----------------------------------------------------------------------------
+//
+void HbCheckBox::setTristate( 
+        bool isTristate )
+    {
+    SMC_MOCK_METHOD1( void, bool, isTristate )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::isTristate
+// -----------------------------------------------------------------------------
+//
+bool HbCheckBox::isTristate(  ) const
+    {
+    SMC_MOCK_METHOD0( bool )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::checkState
+// -----------------------------------------------------------------------------
+//
+Qt::CheckState HbCheckBox::checkState(  ) const
+    {
+    SMC_MOCK_METHOD0( Qt::CheckState )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::primitive
+// -----------------------------------------------------------------------------
+//
+QGraphicsItem * HbCheckBox::primitive( 
+        HbStyle::Primitive primitive ) const
+    {
+    SMC_MOCK_METHOD1( QGraphicsItem *, HbStyle::Primitive, primitive )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::setCheckState
+// -----------------------------------------------------------------------------
+//
+void HbCheckBox::setCheckState( 
+        Qt::CheckState state )
+    {
+    SMC_MOCK_METHOD1( void, Qt::CheckState, state )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::updatePrimitives
+// -----------------------------------------------------------------------------
+//
+void HbCheckBox::updatePrimitives(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::initStyleOption
+// -----------------------------------------------------------------------------
+//
+void HbCheckBox::initStyleOption( 
+        HbStyleOptionCheckBox * option ) const
+    {
+    SMC_MOCK_METHOD1( void, HbStyleOptionCheckBox *, option )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::resizeEvent
+// -----------------------------------------------------------------------------
+//
+void HbCheckBox::resizeEvent( 
+        QGraphicsSceneResizeEvent * event )
+    {
+    SMC_MOCK_METHOD1( void, QGraphicsSceneResizeEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::hitButton
+// -----------------------------------------------------------------------------
+//
+bool HbCheckBox::hitButton( 
+        const QPointF & pos ) const
+    {
+    SMC_MOCK_METHOD1( bool, const QPointF &, pos )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::checkStateSet
+// -----------------------------------------------------------------------------
+//
+void HbCheckBox::checkStateSet(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::nextCheckState
+// -----------------------------------------------------------------------------
+//
+void HbCheckBox::nextCheckState(  )
+    {
+    SMC_MOCK_METHOD0( void )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::mouseReleaseEvent
+// -----------------------------------------------------------------------------
+//
+void HbCheckBox::mouseReleaseEvent( 
+        QGraphicsSceneMouseEvent * event )
+    {
+    SMC_MOCK_METHOD1( void, QGraphicsSceneMouseEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::mouseMoveEvent
+// -----------------------------------------------------------------------------
+//
+void HbCheckBox::mouseMoveEvent( 
+        QGraphicsSceneMouseEvent * event )
+    {
+    SMC_MOCK_METHOD1( void, QGraphicsSceneMouseEvent *, event )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::keyPressEvent
+// -----------------------------------------------------------------------------
+//
+void HbCheckBox::keyPressEvent( 
+        QKeyEvent * keyEvent )
+    {
+    SMC_MOCK_METHOD1( void, QKeyEvent *, keyEvent )
+    }
+
+
+// -----------------------------------------------------------------------------
+// HbCheckBox::itemChange
+// -----------------------------------------------------------------------------
+//
+QVariant HbCheckBox::itemChange( 
+        GraphicsItemChange change,
+        const QVariant & value )
+    {
+    SMC_MOCK_METHOD2( QVariant, GraphicsItemChange, change, 
+        const QVariant &, value )
+    }
--- a/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_hbicon.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_hbicon.cpp	Mon May 03 12:31:11 2010 +0300
@@ -18,6 +18,15 @@
 #include <smcmockclassincludes.h>
 #include <hbicon.h>
 
+class HbIconPrivate
+{
+public:
+    HbIconPrivate(){};
+    ~HbIconPrivate(){};
+    
+    QAtomicInt ref;
+};
+
 // ============================ MEMBER FUNCTIONS ===============================
 
 // -----------------------------------------------------------------------------
@@ -62,40 +71,6 @@
     
     }
 
-
-// -----------------------------------------------------------------------------
-// HbIcon::=
-// -----------------------------------------------------------------------------
-//
-HbIcon & operator HbIcon::=( 
-        const HbIcon & other )
-    {
-//    SMC_MOCK_METHOD1( HbIcon & operator, const HbIcon &, other )
-    }
-
-
-// -----------------------------------------------------------------------------
-// HbIcon::=
-// -----------------------------------------------------------------------------
-//
-bool operator = HbIcon::=( 
-        const HbIcon & other ) const
-    {
-//    SMC_MOCK_METHOD1( bool operator =, const HbIcon &, other )
-    }
-
-
-// -----------------------------------------------------------------------------
-// HbIcon::=
-// -----------------------------------------------------------------------------
-//
-bool operator HbIcon::=( 
-        const HbIcon & other ) const
-    {
-//    SMC_MOCK_METHOD1( bool operator, const HbIcon &, other )
-    }
-
-
 // -----------------------------------------------------------------------------
 // HbIcon::~HbIcon
 // -----------------------------------------------------------------------------
@@ -278,17 +253,6 @@
 //    SMC_MOCK_METHOD0( qreal )
     }
 
-
-// -----------------------------------------------------------------------------
-// HbIcon::mirroringMode
-// -----------------------------------------------------------------------------
-//
-MirroringMode HbIcon::mirroringMode(  ) const
-    {
-//    SMC_MOCK_METHOD0( MirroringMode )
-    }
-
-
 // -----------------------------------------------------------------------------
 // HbIcon::setMirroringMode
 // -----------------------------------------------------------------------------
@@ -299,17 +263,6 @@
 //    SMC_MOCK_METHOD1( void, MirroringMode, mode )
     }
 
-
-// -----------------------------------------------------------------------------
-// HbIcon::flags
-// -----------------------------------------------------------------------------
-//
-Flags HbIcon::flags(  ) const
-    {
-//    SMC_MOCK_METHOD0( Flags )
-    }
-
-
 // -----------------------------------------------------------------------------
 // HbIcon::setFlags
 // -----------------------------------------------------------------------------
@@ -343,16 +296,6 @@
 
 
 // -----------------------------------------------------------------------------
-// HbIcon::QVariant
-// -----------------------------------------------------------------------------
-//
-operator HbIcon::QVariant(  ) const
-    {
-//    SMC_MOCK_METHOD0( operator )
-    }
-
-
-// -----------------------------------------------------------------------------
 // HbIcon::qicon
 // -----------------------------------------------------------------------------
 //
@@ -362,13 +305,3 @@
     }
 
 
-// -----------------------------------------------------------------------------
-// HbIcon::animator
-// -----------------------------------------------------------------------------
-//
-HbIconAnimator & HbIcon::animator(  )
-    {
- //   SMC_MOCK_METHOD0( HbIconAnimator & )
-    }
-
-
--- a/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_hblistwidgetitem.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_hblistwidgetitem.cpp	Mon May 03 12:31:11 2010 +0300
@@ -108,90 +108,6 @@
 
 
 // -----------------------------------------------------------------------------
-// HbListWidgetItem::decorationText
-// -----------------------------------------------------------------------------
-//
-QString HbListWidgetItem::decorationText(  ) const
-    {
-    SMC_MOCK_METHOD0( QString )
-    }
-
-
-// -----------------------------------------------------------------------------
-// HbListWidgetItem::setDecorationText
-// -----------------------------------------------------------------------------
-//
-void HbListWidgetItem::setDecorationText( 
-        const QString & text )
-    {
-    SMC_MOCK_METHOD1( void, const QString &, text )
-    }
-
-
-// -----------------------------------------------------------------------------
-// HbListWidgetItem::decorationIcon
-// -----------------------------------------------------------------------------
-//
-HbIcon HbListWidgetItem::decorationIcon(  ) const
-    {
-//    SMC_MOCK_METHOD0( HbIcon )
-    }
-
-
-// -----------------------------------------------------------------------------
-// HbListWidgetItem::setDecorationIcon
-// -----------------------------------------------------------------------------
-//
-void HbListWidgetItem::setDecorationIcon( 
-        const HbIcon & icon )
-    {
-//    SMC_MOCK_METHOD1( void, const HbIcon &, icon )
-    }
-
-
-// -----------------------------------------------------------------------------
-// HbListWidgetItem::secondaryDecorationText
-// -----------------------------------------------------------------------------
-//
-QString HbListWidgetItem::secondaryDecorationText(  ) const
-    {
-    SMC_MOCK_METHOD0( QString )
-    }
-
-
-// -----------------------------------------------------------------------------
-// HbListWidgetItem::setSecondaryDecorationText
-// -----------------------------------------------------------------------------
-//
-void HbListWidgetItem::setSecondaryDecorationText( 
-        const QString & text )
-    {
-    SMC_MOCK_METHOD1( void, const QString &, text )
-    }
-
-
-// -----------------------------------------------------------------------------
-// HbListWidgetItem::secondaryDecorationIcon
-// -----------------------------------------------------------------------------
-//
-HbIcon HbListWidgetItem::secondaryDecorationIcon(  ) const
-    {
-//    SMC_MOCK_METHOD0( HbIcon )
-    }
-
-
-// -----------------------------------------------------------------------------
-// HbListWidgetItem::setSecondaryDecorationIcon
-// -----------------------------------------------------------------------------
-//
-void HbListWidgetItem::setSecondaryDecorationIcon( 
-        const HbIcon & icon )
-    {
-//    SMC_MOCK_METHOD1( void, const HbIcon &, icon )
-    }
-
-
-// -----------------------------------------------------------------------------
 // HbListWidgetItem::setEnabled
 // -----------------------------------------------------------------------------
 //
--- a/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_hbwidgetbase.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_hbwidgetbase.cpp	Mon May 03 12:31:11 2010 +0300
@@ -27,7 +27,7 @@
 HbWidgetBase::HbWidgetBase( 
         HbWidgetBasePrivate & dd,
         QGraphicsItem * parent,
-        Qt::WindowFlags wFlags )
+        Qt::WindowFlags wFlags ) :d_ptr()
     //:
     //HbAbstractItem( /*dd, parent, wFlags*/ )
     {
@@ -36,19 +36,6 @@
 
 
 // -----------------------------------------------------------------------------
-// HbWidgetBase::Q_PROPERTY
-// -----------------------------------------------------------------------------
-//
-void HbWidgetBase::Q_PROPERTY( 
-        HbFontSpec fontSpec READ fontSpec WRITE setFontSpec ):HbWidgetBase ( QGraphicsItem * parent,
-        Qt::WindowFlags wFlags )
-    {
-    SMC_MOCK_METHOD2( void, HbFontSpec fontSpec READ fontSpec WRITE setFontSpec ):HbWidgetBase ( QGraphicsItem *, parent, 
-        Qt::WindowFlags, wFlags )
-    }
-
-
-// -----------------------------------------------------------------------------
 // HbWidgetBase::~HbWidgetBase
 // -----------------------------------------------------------------------------
 //
--- a/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_psetcallbarringwrapper.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_psetcallbarringwrapper.cpp	Mon May 03 12:31:11 2010 +0300
@@ -94,3 +94,18 @@
     SMC_MOCK_METHOD3( void, int/*PsServiceGroup*/, static_cast<int>(serviceGroup), 
         BarringType, barringType, QString, barringPassword )
     }
+
+// -----------------------------------------------------------------------------
+// PSetCallBarringWrapper::changeBarringPassword
+// -----------------------------------------------------------------------------
+//
+void PSetCallBarringWrapper::changeBarringPassword(
+    const QString &oldPassword, 
+    const QString &newPassword,
+    const QString &verifiedPassword)
+{
+    SMC_MOCK_METHOD3( void, 
+        const QString &, oldPassword, 
+        const QString &, newPassword, 
+        const QString &, verifiedPassword )
+}
--- a/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_psetcalldivertingwrapper.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_psetcalldivertingwrapper.cpp	Mon May 03 12:31:11 2010 +0300
@@ -117,5 +117,5 @@
 //
 void PSetCallDivertingWrapper::getVoiceMailBoxNumber(QString &number)
 {
-    SMC_MOCK_METHOD1( void, QString, number )
+    SMC_MOCK_METHOD1( void, QString&, number )
 }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesettings/cpphonesettingsplugins/tsrc/mocks/mock_qtranslator.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,119 @@
+/* 
+* 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:
+*
+*/
+#include <QDebug>
+#include <qcoreapplication.h>
+#include <smcmockclassincludes.h>
+#include "qtranslator.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// QTranslator::QTranslator
+// -----------------------------------------------------------------------------
+//
+QTranslator::QTranslator( 
+        QObject * parent )
+    :
+    QObject( parent )
+    {
+    
+    }
+
+
+// -----------------------------------------------------------------------------
+// QTranslator::~QTranslator
+// -----------------------------------------------------------------------------
+//
+QTranslator::~QTranslator(  )
+    {
+    if (QCoreApplication::instance()) 
+        {
+        QCoreApplication::removeTranslator(this);
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// QTranslator::translate
+// -----------------------------------------------------------------------------
+//
+QString QTranslator::translate( 
+        const char * aContext,
+        const char * sourceText,
+        const char * disambiguation ) const
+    {
+    SMC_MOCK_METHOD3( QString, const char *, aContext, 
+        const char *, sourceText, 
+        const char *, disambiguation )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QTranslator::translate
+// -----------------------------------------------------------------------------
+//
+QString QTranslator::translate( 
+        const char * aContext,
+        const char * sourceText,
+        const char * disambiguation,
+        int n ) const
+    {
+    SMC_MOCK_METHOD4( QString, const char *, aContext, 
+        const char *, sourceText, 
+        const char *, disambiguation, 
+        int, n )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QTranslator::isEmpty
+// -----------------------------------------------------------------------------
+//
+bool QTranslator::isEmpty(  ) const
+    {
+    SMC_MOCK_METHOD0( bool )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QTranslator::load
+// -----------------------------------------------------------------------------
+//
+bool QTranslator::load( 
+        const QString & filename,
+        const QString & directory,
+        const QString & search_delimiters,
+        const QString & suffix )
+    {
+    SMC_MOCK_METHOD4( bool, const QString &, filename, 
+        const QString &, directory, 
+        const QString &, search_delimiters, 
+        const QString &, suffix )
+    }
+
+
+// -----------------------------------------------------------------------------
+// QTranslator::load
+// -----------------------------------------------------------------------------
+//
+bool QTranslator::load( 
+        const uchar * data,
+        int len )
+    {
+    SMC_MOCK_METHOD2( bool, const uchar *, data, 
+        int, len )
+    }
--- a/phonesettings/cpphonesettingsplugins/tsrc/mocks/ut_mockintegrity.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phonesettings/cpphonesettingsplugins/tsrc/mocks/ut_mockintegrity.pro	Mon May 03 12:31:11 2010 +0300
@@ -17,13 +17,14 @@
 CONFIG += qtestlib hb
 TEMPLATE = app
 TARGET = 
+MOC_DIR = moc
 
 INCLUDEPATH += .
 INCLUDEPATH += ../../barringplugin/inc
 INCLUDEPATH += ../../callsplugin/src
 INCLUDEPATH += ../../cptelephonyutils/inc
 INCLUDEPATH += ../../divertplugin/src
-INCLUDEPATH += ../../networkplugin/src
+INCLUDEPATH += ../../cpnetworkplugin/src
 INCLUDEPATH += ../../cpnetworkplugin/src
 INCLUDEPATH += ../../telephonyplugin/src
 INCLUDEPATH += /sf/mw/phonesrv/cellular/telephonysettings/xqbindings/psetwrapper/src
@@ -43,7 +44,6 @@
 }
 
 HEADERS += ut_mockintegrity.h
-SOURCES += ut_mockintegrity.cpp
 
 HEADERS += ../../callsplugin/src/cpcallsplugin.h                \
            ../../cptelephonyutils/inc/cpphonenotes.h            \
@@ -59,29 +59,6 @@
            /epoc32/include/mw/xqsettingsmanager.h               \
            /epoc32/include/mw/xqsysinfo.h
 
-SOURCES +=                                  \
-        mock_cpbarringplugin.cpp            \
-        mock_cpbarringplugingroup.cpp       \
-        mock_cpcallsplugin.cpp              \
-        mock_cpcallsplugingroup.cpp         \
-        mock_cpnetworkplugin.cpp            \
-        mock_cpnetworkpluginview.cpp        \
-        mock_cpnetworkplugingroup.cpp       \
-        mock_cpphonenotes.cpp               \
-        mock_cpplugincommon.cpp             \
-        mock_cptelephonypluginview.cpp      \
-        mock_psetcalldivertingwrapper.cpp   \
-        mock_psetcalldivertingwrapper_p.cpp \
-        mock_psetcallwaitingwrapper.cpp     \
-        mock_psetcallwaitingwrapper_p.cpp   \
-        mock_psetcliwrapper.cpp             \
-        mock_psetcliwrapper_p.cpp           \
-        mock_psetnetworkwrapper.cpp         \
-        mock_psetnetworkwrapper_p.cpp       \
-        mock_psetwrapper.cpp                \
-        mock_sssettingswrapper.cpp          \
-        mock_xqsettingskey.cpp              \
-        mock_xqsettingsmanager.cpp          \
-        mock_xqsysinfo.cpp                  \
-        mock_psetcallbarringwrapper.cpp
+SOURCES += *.cpp
+
   
\ No newline at end of file
--- a/phoneuis/bubblemanager2/bubblecore/bubblecore.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/bubblecore/bubblecore.pro	Mon May 03 12:31:11 2010 +0300
@@ -34,6 +34,8 @@
         "$${LITERAL_HASH}endif"
     
     MMP_RULES += defFiles
+
+    LIBS += -lthumbnailmanagerqt
 }
 else:win32 { 
     # Put it to Hb/lib because it is in path
--- a/phoneuis/bubblemanager2/bubblecore/bubblecore.qrc	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/bubblecore/bubblecore.qrc	Mon May 03 12:31:11 2010 +0300
@@ -46,12 +46,12 @@
         <file>themes/icons/hbdefault/scalable/qtg_large_waiting_call.svg</file>
         <file>themes/icons/hbdefault/scalable/qtg_large_active_call.svg</file>
         <file>themes/icons/hbdefault/scalable/qtg_large_end_call.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_large_video_dialled_call.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_large_video_missed_call.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_large_video_received_call.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_large_voip_dialled_call.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_large_voip_missed_call.svg</file>
-        <file>themes/icons/hbdefault/scalable/qtg_large_voip_received_call.svg</file>
+        <file>themes/icons/hbdefault/scalable/qtg_large_video_call_active.svg</file>
+        <file>themes/icons/hbdefault/scalable/qtg_large_video_call_waiting.svg</file>
+        <file>themes/icons/hbdefault/scalable/qtg_large_voip_call_active.svg</file>
+        <file>themes/icons/hbdefault/scalable/qtg_large_voip_call_waiting.svg</file>
         <file>themes/icons/hbdefault/scalable/qtg_mono_ciphering_off.svg</file>
+        <file alias="bubble_muted_disappear.fxml">effects/bubble_muted_disappear.fxml</file>
+        <file alias="bubble_muted_appear.fxml">effects/bubble_muted_appear.fxml</file>
     </qresource>
 </RCC>
--- a/phoneuis/bubblemanager2/bubblecore/bwins/bubblecoreu.def	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/bubblecore/bwins/bubblecoreu.def	Mon May 03 12:31:11 2010 +0300
@@ -61,4 +61,5 @@
 	?setCallFlags@BubbleManager@@UAEXHH@Z @ 60 NONAME ; void BubbleManager::setCallFlags(int, int)
 	?addRowToConference@BubbleManager@@UAEXH@Z @ 61 NONAME ; void BubbleManager::addRowToConference(int)
 	?setLabel@BubbleManager@@UAEXHABVQString@@W4TextElideMode@Qt@@@Z @ 62 NONAME ; void BubbleManager::setLabel(int, class QString const &, enum Qt::TextElideMode)
+	?releaseImageIfNotUsed@BubbleManager@@AAEXABVQString@@@Z @ 63 NONAME ; void BubbleManager::releaseImageIfNotUsed(class QString const &)
 
--- a/phoneuis/bubblemanager2/bubblecore/eabi/bubblecoreu.def	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/bubblecore/eabi/bubblecoreu.def	Mon May 03 12:31:11 2010 +0300
@@ -105,4 +105,5 @@
 	_ZThn28_NK13BubbleManager23selectionIdInConferenceEv @ 104 NONAME
 	_ZThn8_N13BubbleManagerD0Ev @ 105 NONAME
 	_ZThn8_N13BubbleManagerD1Ev @ 106 NONAME
+	_ZN13BubbleManager21releaseImageIfNotUsedERK7QString @ 107 NONAME
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/bubblecore/effects/bubble_muted_appear.fxml	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,13 @@
+<layers>
+<visual>
+
+  <param name="opacity" type="anim">
+      <duration>0.2</duration>
+      <style>linear</style>
+      <keyframe at="0">0</keyframe>
+      <keyframe at="1">1</keyframe>
+  </param>
+
+</visual>
+</layers>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/bubblecore/effects/bubble_muted_disappear.fxml	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,12 @@
+<layers>
+<visual>
+
+  <param name="opacity" type="anim">
+      <duration>0.2</duration>
+      <style>linear</style>
+      <keyframe at="0">1</keyframe>
+      <keyframe at="1">0</keyframe>
+  </param>
+
+</visual>
+</layers>
--- a/phoneuis/bubblemanager2/bubblecore/src/bubblecore.pri	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubblecore.pri	Mon May 03 12:31:11 2010 +0300
@@ -28,7 +28,11 @@
     src/bubblehandler.h \
     src/bubbleexpandedhandler.h \
     src/bubblecollapsedhandler.h \
-    src/bubbleconferencehandler.h
+    src/bubbleconferencehandler.h \
+    src/bubbleimagemanager.h \
+    src/bubbleimagemanager_p.h \
+    src/bubbleeffecthandler.h
+
 SOURCES += src/bubblemanager2.cpp \
     src/bubbleheader.cpp \
     src/bubbleimagewidget.cpp \
@@ -44,4 +48,12 @@
     src/bubblehandler.cpp \
     src/bubbleexpandedhandler.cpp \
     src/bubblecollapsedhandler.cpp \
-    src/bubbleconferencehandler.cpp
+    src/bubbleconferencehandler.cpp \
+    src/bubbleimagemanager.cpp \
+    src/bubbleeffecthandler.cpp
+
+symbian {
+    SOURCES += src/bubbleimagemanager_p.cpp
+} else:win32 {
+    SOURCES += src/bubbleimagemanager_p_stub.cpp
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubbleeffecthandler.cpp	Mon May 03 12:31:11 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:
+*
+*/
+
+#include <QtCore>
+#include "bubbleeffecthandler.h"
+
+const char *BUBBLE_MUTED_APPEAR_FXML = ":/bubble_muted_appear.fxml";
+const char *BUBBLE_MUTED_DISAPPEAR_FXML = ":/bubble_muted_disappear.fxml";
+const char *BUBBLE_APPEAR_EVENT = "appear";
+const char *BUBBLE_DISAPPEAR_EVENT = "disappear";
+
+
+BubbleEffectHandler::BubbleEffectHandler(QObject* parent)
+    : QObject(parent)
+{
+}
+
+BubbleEffectHandler::~BubbleEffectHandler()
+{
+}
+
+void BubbleEffectHandler::addEffect(QGraphicsItem* item, BubbleEffect effect)
+{
+    switch (effect) {
+    case BubbleMutedAppear:
+        HbEffect::add(item, BUBBLE_MUTED_APPEAR_FXML, BUBBLE_APPEAR_EVENT);
+        mEffectItem.insert(effect,item);
+        break;
+    case BubbleMutedDisappear:
+        HbEffect::add(item, BUBBLE_MUTED_DISAPPEAR_FXML, BUBBLE_DISAPPEAR_EVENT);
+        mEffectItem.insert(effect,item);
+        break;
+    default:
+        break;
+    }
+}
+
+void BubbleEffectHandler::removeEffect(QGraphicsItem* item, BubbleEffect effect)
+{
+    switch (effect) {
+    case BubbleMutedAppear:
+        HbEffect::remove(item, BUBBLE_MUTED_APPEAR_FXML, BUBBLE_APPEAR_EVENT);
+        mEffectItem.remove(effect);
+        break;
+    case BubbleMutedDisappear:
+        HbEffect::remove(item, BUBBLE_MUTED_DISAPPEAR_FXML, BUBBLE_DISAPPEAR_EVENT);
+        mEffectItem.remove(effect);
+        break;
+    default:
+        break;
+    }
+}
+
+void BubbleEffectHandler::startEffect(BubbleEffect effect)
+{
+    QGraphicsItem* item;
+
+    switch (effect) {
+    case BubbleMutedAppear:
+        item = mEffectItem.value(effect);
+        Q_ASSERT(item);
+        item->setVisible(true);
+        HbEffect::start(item, BUBBLE_APPEAR_EVENT);
+        break;
+    case BubbleMutedDisappear:
+        item = mEffectItem.value(effect);
+        Q_ASSERT(item);
+        item->setVisible(true);
+        HbEffect::start(item, BUBBLE_DISAPPEAR_EVENT,
+                        this, "handleEffectFinished", QVariant(effect));
+        break;
+    default:
+        break;
+    }
+}
+
+void BubbleEffectHandler::handleEffectFinished(
+    const HbEffect::EffectStatus &status)
+{
+    int effect = status.userData.toInt();
+
+    switch (effect) {
+    case BubbleMutedDisappear:
+        if (status.item) {
+            status.item->setVisible(false);
+        }
+        break;
+    default:
+        break;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubbleeffecthandler.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,53 @@
+/*!
+* 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 BUBBLEEFFECTHANDLER_H_
+#define BUBBLEEFFECTHANDLER_H_
+
+#include <QObject>
+#include <QMap>
+#include <hbeffect.h>
+
+class QGraphicsItem;
+
+enum BubbleEffect
+    {
+    BubbleMutedAppear = 1,
+    BubbleMutedDisappear
+    };
+
+class BubbleEffectHandler : public QObject
+    {
+    Q_OBJECT
+    
+public:
+    explicit BubbleEffectHandler(QObject* parent = 0);
+    virtual ~BubbleEffectHandler();
+
+    void addEffect(QGraphicsItem* item, BubbleEffect effect);
+    void removeEffect(QGraphicsItem* item, BubbleEffect effect);
+
+    void startEffect(BubbleEffect effect);
+
+protected slots:
+    void handleEffectFinished(const HbEffect::EffectStatus &status);
+
+protected:
+    QMap<int,QGraphicsItem*> mEffectItem;
+    };
+
+#endif /* BUBBLEEFFECTHANDLER_H_ */
--- a/phoneuis/bubblemanager2/bubblecore/src/bubbleexpandedhandler.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubbleexpandedhandler.cpp	Mon May 03 12:31:11 2010 +0300
@@ -82,9 +82,12 @@
 
     mHeading->readBubbleHeader(header);
 
-    if (header.callImage().length()) {
+    if (!mHeader->callImage().isEmpty() ||
+        header.showDefaultAvatar()) {
         mImage->setImage(header.callImage());
         mImage->show();
+    } else {
+        mImage->hide();
     }
 
     setButtons(mHeader->actions());
--- a/phoneuis/bubblemanager2/bubblecore/src/bubbleheader.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubbleheader.cpp	Mon May 03 12:31:11 2010 +0300
@@ -43,6 +43,7 @@
     mCallImage.clear();
     mIsInConference = false;
     mExpandAction = 0;
+    mShowDefaultAvatar = false;
 }
 
 void BubbleHeader::setIsUsed( bool used )
@@ -200,6 +201,16 @@
     return mCallImage;
 }
 
+void BubbleHeader::setShowDefaultAvatar(bool show)
+{
+    mShowDefaultAvatar = show;
+}
+
+bool BubbleHeader::showDefaultAvatar() const
+{
+    return mShowDefaultAvatar;
+}
+
 void BubbleHeader::addAction ( HbAction* action )
 {
     mActions.append( action );
--- a/phoneuis/bubblemanager2/bubblecore/src/bubbleheader.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubbleheader.h	Mon May 03 12:31:11 2010 +0300
@@ -85,6 +85,10 @@
     // caller image
     void setCallImage( const QString& image );
     const QString& callImage() const;
+
+    // default avatar
+    void setShowDefaultAvatar(bool show);
+    bool showDefaultAvatar() const;
     
     // actions
     void addAction( HbAction* action );
@@ -120,6 +124,7 @@
     QList<HbAction*> mActions;
     HbAction* mExpandAction;
     bool mIsInConference;
+    bool mShowDefaultAvatar;
     };
 
 #endif /* BUBBLEHEADER_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubbleimagemanager.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,53 @@
+/*!
+* 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 <QtCore>
+#include "bubbleimagemanager.h"
+#include "bubbleimagemanager_p.h"
+
+BubbleImageManager::BubbleImageManager(QObject* parent)
+    : QObject(parent),
+      d_ptr(new BubbleImageManagerPrivate(this))
+{
+}
+
+BubbleImageManager::~BubbleImageManager()
+{
+    delete d_ptr;
+}
+
+const QPixmap* BubbleImageManager::pixmap(
+    const QString& imageFileName)
+{
+    return d_ptr->pixmap(imageFileName);
+}
+
+void BubbleImageManager::loadImage(const QString& imageFileName)
+{
+    d_ptr->loadImage(imageFileName);
+}
+
+void BubbleImageManager::unloadImage(const QString& imageFileName)
+{
+    d_ptr->unloadImage(imageFileName);
+}
+
+void BubbleImageManager::releasePixmaps()
+{
+    d_ptr->releasePixmaps();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubbleimagemanager.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,50 @@
+/*!
+* 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 BUBBLEIMAGEMANAGER_H_
+#define BUBBLEIMAGEMANAGER_H_
+
+#include <QObject>
+#include <QPixmap>
+
+class BubbleImageManagerPrivate;
+
+class BubbleImageManager : public QObject
+    {
+    Q_OBJECT
+    
+public:
+    explicit BubbleImageManager(QObject* parent = 0);
+    virtual ~BubbleImageManager();
+
+    const QPixmap* pixmap(const QString& imageFileName);
+
+    void loadImage(const QString& imageFileName);
+
+    void unloadImage(const QString& imageFileName);
+
+    void releasePixmaps();
+
+signals:
+    void pixmapReady(const QString& imageFileName);
+    
+protected:
+    BubbleImageManagerPrivate* const d_ptr;
+    Q_DECLARE_PRIVATE(BubbleImageManager)
+    };
+
+#endif /* BUBBLEIMAGEMANAGER_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubbleimagemanager_p.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,171 @@
+/*!
+* 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 <QtCore>
+#include "bubbleimagemanager_p.h"
+#include "bubbleimagemanager.h"
+#include <thumbnailmanager_qt.h>
+
+//#define BUBBLE_IMAGEMANAGER_DEBUG
+#if defined(BUBBLE_IMAGEMANAGER_DEBUG)
+   #define BUBBLE_QDEBUG( a )
+   #define BUBBLE_QDEBUG_2( a, b)
+#else
+   #define BUBBLE_QDEBUG( a )\
+       qDebug() << a;
+
+   #define BUBBLE_QDEBUG_2( a, b)\
+       qDebug() << a << b;
+#endif
+
+BubbleImageManagerPrivate::BubbleImageManagerPrivate(
+    BubbleImageManager* parent)
+    : q_ptr(parent),
+      mInitialized(false)
+{
+}
+
+BubbleImageManagerPrivate::~BubbleImageManagerPrivate()
+{
+}
+
+void BubbleImageManagerPrivate::initialize()
+{
+    mThumbnailManager = new ThumbnailManager(this);
+    
+    mThumbnailManager->setMode(ThumbnailManager::Default);
+    
+    mThumbnailManager->setQualityPreference(
+        ThumbnailManager::OptimizeForPerformance);
+    
+    mThumbnailManager->setThumbnailSize(
+        ThumbnailManager::ThumbnailLarge);
+    
+    connect(mThumbnailManager,
+            SIGNAL(thumbnailReady(QPixmap, void *, int, int)),
+            this,
+            SLOT(thumbnailReady(QPixmap, void *, int, int)));
+    
+    mInitialized = true;
+}
+
+const QPixmap* BubbleImageManagerPrivate::pixmap(
+    const QString& imageFileName)
+{
+    if (mImageCache.contains(imageFileName)) {
+        return mImageCache.value(imageFileName);
+    } else {
+        return 0;
+    }
+}
+
+void BubbleImageManagerPrivate::loadImage(const QString& imageFileName)
+{
+    if (mImageCache.contains(imageFileName) ||
+        isLoading(imageFileName)) {
+        return;
+    }
+
+    if (!mInitialized) {
+        // connect to thumbnail server
+        initialize();
+    }
+
+    BUBBLE_QDEBUG_2("loading image: ", imageFileName);
+
+    QString* data = new QString(imageFileName);
+    int reqId = mThumbnailManager->getThumbnail(imageFileName, data);
+    mRequestQueue.enqueue(qMakePair(imageFileName,reqId));
+}
+
+void BubbleImageManagerPrivate::unloadImage(const QString& imageFileName)
+{
+    BUBBLE_QDEBUG_2("unloading image: ", imageFileName);
+
+    // returns null, if key doesn't exists
+    QPixmap* pixmap = mImageCache.take(imageFileName);
+    delete pixmap;
+
+    // cancel possible outstanding request
+    QMutableListIterator< QPair<QString,int> > requests(mRequestQueue);
+    while(requests.hasNext()) {
+        QPair<QString,int>& request = requests.next();  
+        
+        if (request.first==imageFileName) {
+            BUBBLE_QDEBUG_2("cancelling request: ", imageFileName);
+            mThumbnailManager->cancelRequest(request.second);            
+            requests.remove();
+            break;
+        }
+    }
+}
+
+void BubbleImageManagerPrivate::releasePixmaps()
+{
+    BUBBLE_QDEBUG_2("releasing all pixmaps: ", mImageCache.count());
+
+    // release all cached pixmaps
+    QList<QPixmap*> pixmaps = mImageCache.values();
+    qDeleteAll(pixmaps);
+    mImageCache.clear();
+}
+
+void BubbleImageManagerPrivate::thumbnailReady(
+    const QPixmap& pixmap, void *data, int id, int error)
+{
+    QString* fileName = (QString*)data;            
+    
+    if (error==0 && fileName) {
+        QPixmap *p = new QPixmap(pixmap);
+        mImageCache.insert(*fileName,p);
+        emit q_ptr->pixmapReady(*fileName);
+        BUBBLE_QDEBUG_2("thumbnailReady: ", *fileName);
+    }
+    
+    // request complete, remove it from queue
+    QMutableListIterator< QPair<QString,int> > requests(mRequestQueue);
+    while(requests.hasNext()) {
+        QPair<QString,int>& request = requests.next();  
+        if (request.second==id) {
+            BUBBLE_QDEBUG_2("deleting completed request: ", *fileName);
+            requests.remove();
+            break;
+        }
+    }    
+    
+    delete fileName;    
+}
+
+void BubbleImageManagerPrivate::thumbnailReady()
+{
+}
+
+bool BubbleImageManagerPrivate::isLoading(const QString& imageFileName) const
+{
+    bool loading = false;
+
+    QListIterator< QPair<QString,int> > requests(mRequestQueue);
+    while(requests.hasNext()) {
+        if (requests.next().first==imageFileName) {
+            loading = true;
+            break;
+        }
+    }
+
+    return loading;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubbleimagemanager_p.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,67 @@
+/*!
+* 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 BUBBLEIMAGEMANAGER_P_H_
+#define BUBBLEIMAGEMANAGER_P_H_
+
+#include <QObject>
+#include <QMap>
+#include <QPixmap>
+#include <QQueue>
+#include <QPair>
+
+class ThumbnailManager;
+class BubbleImageManager;
+
+class BubbleImageManagerPrivate : public QObject
+    {
+    Q_OBJECT
+
+    Q_DECLARE_PUBLIC( BubbleImageManager )
+
+public:
+    explicit BubbleImageManagerPrivate(BubbleImageManager* parent = 0);
+    virtual ~BubbleImageManagerPrivate();
+
+    const QPixmap* pixmap(const QString& imageFileName);
+
+    void loadImage(const QString& imageFileName);
+
+    void unloadImage(const QString& imageFileName);
+
+    void releasePixmaps();
+
+protected:
+    void initialize();
+    bool isLoading(const QString& imageFileName) const;
+
+protected slots:
+    void thumbnailReady(const QPixmap& pixmap, void *data, int id, int error);
+    void thumbnailReady(); // for stub
+
+signals:
+    void pixmapReady(const QString& imageFileName);
+    
+private:
+    BubbleImageManager* q_ptr;
+    ThumbnailManager* mThumbnailManager;
+    QMap<QString,QPixmap*> mImageCache;
+    QQueue< QPair<QString, int> > mRequestQueue;
+    bool mInitialized;
+    };
+
+#endif /* BUBBLEIMAGEMANAGER_P_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubbleimagemanager_p_stub.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,143 @@
+/*!
+* 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: Stub implementation for desktop environment.
+*
+*/
+
+#include <QtCore>
+#include <QImageReader>
+#include <QTimer>
+#include "bubbleimagemanager.h"
+#include "bubbleimagemanager_p.h"
+
+BubbleImageManagerPrivate::BubbleImageManagerPrivate(
+    BubbleImageManager* parent)
+    : q_ptr(parent), mInitialized(false)
+{
+}
+
+BubbleImageManagerPrivate::~BubbleImageManagerPrivate()
+{
+}
+
+void BubbleImageManagerPrivate::initialize()
+{
+    mInitialized = true;
+}
+
+const QPixmap* BubbleImageManagerPrivate::pixmap(
+    const QString& imageFileName)
+{
+    if (mImageCache.contains(imageFileName)) {
+        return mImageCache.value(imageFileName);
+    } else {
+        return 0;
+    }
+}
+
+void BubbleImageManagerPrivate::loadImage(const QString& imageFileName)
+{
+    if (mImageCache.contains(imageFileName) ||
+        isLoading(imageFileName)) {
+        return;
+    }
+
+    if (!mInitialized) {
+        // connect to thumbnail server
+        initialize();
+    }
+
+    qDebug() << "loading image: " << imageFileName;
+
+    mRequestQueue.enqueue(qMakePair(imageFileName,0));
+    QTimer::singleShot(100,this,SLOT(thumbnailReady()));
+}
+
+void BubbleImageManagerPrivate::unloadImage(const QString& imageFileName)
+{
+    qDebug() << "unloading image: " << imageFileName;
+
+    // returns null, if key doesn't exists
+    QPixmap* pixmap = mImageCache.take(imageFileName);
+    delete pixmap;
+
+    // cancel possible outstanding request
+    QMutableListIterator< QPair<QString,int> > requests(mRequestQueue);
+    while(requests.hasNext()) {
+        if (requests.next().first==imageFileName) {
+            qDebug() << "cancelling request: " << imageFileName;
+            //requests.remove();
+            requests.value().second = 1; // mark as cancelled
+            break;
+        }
+    }
+}
+
+void BubbleImageManagerPrivate::releasePixmaps()
+{
+    qDebug() << "releasing all pixmaps: " << mImageCache.count();
+    // release all cached pixmaps
+    QList<QPixmap*> pixmaps = mImageCache.values();
+    qDeleteAll(pixmaps);
+    mImageCache.clear();
+}
+
+void BubbleImageManagerPrivate::thumbnailReady(
+    const QPixmap& pixmap, void *data, int id, int error)
+{
+    Q_UNUSED(pixmap);
+    Q_UNUSED(data);
+    Q_UNUSED(id);
+    Q_UNUSED(error);
+}
+
+void BubbleImageManagerPrivate::thumbnailReady()
+{
+    QPair<QString,int> request = mRequestQueue.dequeue();
+
+    if (request.second==1) {
+        // canceled
+        return;
+    }
+
+    QString readFile = request.first;
+    qDebug() << "reading: " << readFile;
+
+    QImageReader reader(readFile);
+    QSize size(reader.size());
+    QImage *image = new QImage();
+    if (reader.read(image)) {
+        QPixmap *pixmap = new QPixmap();
+        *pixmap = QPixmap::fromImage(*image);
+        mImageCache.insert(readFile,pixmap);
+        emit  q_ptr->pixmapReady(readFile);
+    }
+    delete image;
+}
+
+bool BubbleImageManagerPrivate::isLoading(const QString& imageFileName) const
+{
+    bool loading = false;
+
+    QListIterator< QPair<QString,int> > requests(mRequestQueue);
+    while(requests.hasNext()) {
+        if (requests.next().first==imageFileName) {
+            loading = true;
+            break;
+        }
+    }
+
+    return loading;
+}
+
--- a/phoneuis/bubblemanager2/bubblecore/src/bubbleimagewidget.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubbleimagewidget.cpp	Mon May 03 12:31:11 2010 +0300
@@ -12,36 +12,98 @@
 * Contributors:
 *
 * Description:  Widget to display contact image.
+*               Displays default avatar, when image is not set.
 *
 */
 
-#include <hblabel.h>
+#include <QPainter>
+#include <hbstyle.h>
+#include "bubbleimagemanager.h"
 #include "bubbleimagewidget.h"
+#include "bubbleprimitives.h"
+#include "bubblestyleoption.h"
 
-BubbleImageWidget::BubbleImageWidget(QGraphicsItem* parent)
-    : HbWidget(parent), mLabel(new HbLabel(this))
+BubbleImageWidget::BubbleImageWidget(const QString& stylePluginName,
+    BubbleImageManager& imageManager, QGraphicsItem* parent)
+    : HbWidget(parent), mStylePluginName(stylePluginName),
+      mImageManager(imageManager), mDefaultAvatar(0)
 {
-    mLabel->setAlignment(Qt::AlignCenter);
-    mLabel->setAspectRatioMode(Qt::KeepAspectRatioByExpanding);
+    setPluginBaseId(style()->registerPlugin(mStylePluginName));
+    Q_ASSERT(pluginBaseId()!=-1);
+
+    // create avatar
+    delete mDefaultAvatar;
+    mDefaultAvatar = style()->createPrimitive(
+        (HbStyle::Primitive)(pluginBaseId()+BP_DefaultAvatar_icon), this);
+    style()->setItemName( mDefaultAvatar, "default_avatar" );
+
+    connect(&mImageManager,SIGNAL(pixmapReady(QString)),
+            this,SLOT(imageLoaded(QString)));
 }
 
 BubbleImageWidget::~BubbleImageWidget()
 {
+    style()->unregisterPlugin(mStylePluginName);
 }
 
 void BubbleImageWidget::setImage(const QString& name)
 {
-    if (name != mImageName) {
-        HbIcon icon(name);
-        mLabel->setIcon(icon);
+    mImageName = name;
+
+    if (!mImageName.isEmpty()) {
+        mDefaultAvatar->setVisible(false);
+        mImageManager.loadImage(mImageName);
+    } else {
+        BubbleStyleOption option;
+        style()->updatePrimitive(
+                mDefaultAvatar,
+                (HbStyle::Primitive)(pluginBaseId()+BP_DefaultAvatar_icon),
+                 &option);
+        mDefaultAvatar->setVisible(true);
+    }
+}
+
+void BubbleImageWidget::imageLoaded(QString imageFileName)
+{
+    if (imageFileName==mImageName) {
+        update(); // does nothing if invisible
     }
 }
 
-void BubbleImageWidget::resizeEvent(
-    QGraphicsSceneResizeEvent *event)
+void BubbleImageWidget::paint(
+    QPainter* painter,
+    const QStyleOptionGraphicsItem* option,
+    QWidget* widget)
 {
-    Q_UNUSED(event);
-    // set geometry without layout manager, because
-    // image size is not defined in docml
-    mLabel->setGeometry(rect());
+    Q_UNUSED(option);
+    Q_UNUSED(widget);
+    
+    if (mImageName.isEmpty())
+        return;
+
+    const QPixmap* pixmap =
+        mImageManager.pixmap(mImageName);
+
+    if (pixmap) {
+        // up or downscales images to fill image area
+        QSize imageSize(pixmap->size());
+        QSize sourceSize(rect().size().toSize());
+        sourceSize.scale(imageSize,Qt::KeepAspectRatio);
+        QRect sourceRect(QPoint(0,0),sourceSize);
+        int xOff = (imageSize.width() - sourceSize.width())/2;
+        int yOff = (imageSize.height() - sourceSize.height())/2;
+        sourceRect.moveLeft(xOff);
+        sourceRect.moveTop(yOff);
+        // qDebug() << "imageSize:" << imageSize;
+        // qDebug() << "sourceRect:" << sourceRect;
+        painter->setRenderHint(QPainter::SmoothPixmapTransform);
+
+#ifdef __WINS__
+        // sourceRect crashes emulator, RC ou1cimx1#320113
+        painter->drawPixmap(rect().toRect(),*pixmap);
+#else        
+        painter->drawPixmap(rect().toRect(),*pixmap,sourceRect);
+#endif        
+        
+    }
 }
--- a/phoneuis/bubblemanager2/bubblecore/src/bubbleimagewidget.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubbleimagewidget.h	Mon May 03 12:31:11 2010 +0300
@@ -20,24 +20,35 @@
 
 #include <hbwidget.h>
 
-class HbLabel;
+class BubbleImageManager;
 
 class BubbleImageWidget : public HbWidget
     {
     Q_OBJECT
     
 public:
-    explicit BubbleImageWidget( QGraphicsItem* parent = 0 );
+    explicit BubbleImageWidget(
+        const QString& stylePluginName,
+        BubbleImageManager& imageManager,
+        QGraphicsItem* parent = 0 );
     virtual ~BubbleImageWidget();
 
     void setImage(const QString& name);
 
-    void resizeEvent(
-        QGraphicsSceneResizeEvent * event );
-    
+protected slots:
+    void imageLoaded(QString imageFileName);
+
+protected:
+    void paint(
+        QPainter* painter,
+        const QStyleOptionGraphicsItem* option,
+        QWidget* widget);
+
 private:
+    QString mStylePluginName;
+    BubbleImageManager& mImageManager;
     QString  mImageName;
-    HbLabel* mLabel;
+    QGraphicsItem* mDefaultAvatar;
     };
 
 #endif /* BUBBLEIMAGEWIDGET_H_ */
--- a/phoneuis/bubblemanager2/bubblecore/src/bubblemanager2.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubblemanager2.cpp	Mon May 03 12:31:11 2010 +0300
@@ -30,7 +30,9 @@
 #include "bubbleconferenceheader.h"
 #include "bubbleutils.h"
 #include "bubblewidgetmanager.h"
+#include "bubbleimagemanager.h"
 #include "bubblehandler.h"
+#include "bubbleeffecthandler.h"
 
 
 BubbleManager::BubbleManager( QGraphicsItem *parent ) :
@@ -53,7 +55,12 @@
     mConferenceHeader = new BubbleConferenceHeader();
     mConferenceHeader->setBubbleId(BUBBLE_CONF_CALL_ID);
 
-    mWidgetManager = new BubbleWidgetManager(mDefaultStyleBaseId,this);
+    mBubbleImageManager = new BubbleImageManager(this);
+
+    mEffectHandler = new BubbleEffectHandler(this);
+
+    mWidgetManager = new BubbleWidgetManager(
+        *mBubbleImageManager, mDefaultStyleBaseId, this);
     mWidgetManager->setStylePluginName(
         BubbleUtils::stylePluginNameWithPath("bubblestyleplugin.dll"));
 
@@ -139,6 +146,10 @@
         view->show();
     }
 
+    if (!mActiveHeaders.count()) {
+        mBubbleImageManager->releasePixmaps();
+    }
+
     // restore mute state
     setPhoneMuted(mMuted);
 
@@ -269,8 +280,10 @@
 
     for ( int i=0; i < mActiveHeaders.size(); i++ ) {
         if ( mActiveHeaders[i]->bubbleId() == bubbleId ) {
+            QString image = mActiveHeaders[i]->callImage();
             mActiveHeaders[i]->reset();
             mActiveHeaders.remove( i );
+            releaseImageIfNotUsed(image);
             break;
         }
     }
@@ -458,7 +471,7 @@
     findActiveHeader( bubbleId, header );     
     Q_ASSERT( header );
 
-    header->setCallImage("qtg_large_avatar");
+    header->setShowDefaultAvatar(true);
 }
 
 /**
@@ -527,12 +540,22 @@
         Q_ASSERT(mMutedIcon);
         addToLayout(mMutedIcon);
         mMutedIcon->setZValue(10.0);
+        mEffectHandler->addEffect(mMutedIcon,BubbleMutedAppear);
+        mEffectHandler->addEffect(mMutedIcon,BubbleMutedDisappear);
+    }
+
+    if (mMutedIcon) {
+        // run effect when mute status changes
+        if (muted && !mMuted) {
+            mEffectHandler->startEffect(BubbleMutedAppear);
+        } else if (!muted && mMuted) {
+            mEffectHandler->startEffect(BubbleMutedDisappear);
+        } else {
+            mMutedIcon->setVisible(muted);
+        }
     }
 
     mMuted = muted;
-    if (mMutedIcon) {
-        mMutedIcon->setVisible(mMuted);
-    }
 }
 
 /**
@@ -597,6 +620,9 @@
     Q_ASSERT( !header->isConference() );
 
     mConferenceHeader->addHeader(header);
+
+    // release image while in conference
+    releaseImageIfNotUsed(header->callImage());
 }
 
 /**
@@ -873,4 +899,23 @@
     }
 }
 
+void BubbleManager::releaseImageIfNotUsed(
+    const QString& imageFileName)
+{
+    bool used = false;
 
+    if (!imageFileName.isEmpty()) {
+        foreach(BubbleHeader* header, mActiveHeaders) {
+            if (!header->isInConference() &&
+                header->callImage()==imageFileName) {
+                used = true;
+                break;
+            }
+        }
+
+        if (!used) {
+            mBubbleImageManager->unloadImage(imageFileName);
+        }
+    }
+}
+
--- a/phoneuis/bubblemanager2/bubblecore/src/bubblewidgetmanager.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubblewidgetmanager.cpp	Mon May 03 12:31:11 2010 +0300
@@ -18,6 +18,7 @@
 #include <QtCore>
 #include <hbstyle.h>
 #include <hbdocumentloader.h>
+#include <hbframeitem.h>
 #include "bubblewidgetmanager.h"
 #include "bubblecontainerwidget.h"
 #include "bubbleimagewidget.h"
@@ -36,16 +37,20 @@
 class BubbleDocumentLoader : public HbDocumentLoader
 {
 public:
-    BubbleDocumentLoader(const QString& stylePluginName);
+    BubbleDocumentLoader(BubbleImageManager& imageManager,
+                         const QString& stylePluginName);
     virtual QObject *createObject(const QString& type,
                                   const QString &name);
 private:
-    QString mStylePluginName;
+    BubbleImageManager& mImageManager;
+    QString mStylePluginName;    
 };
 
 
-BubbleWidgetManager::BubbleWidgetManager(int style, QObject* parent)
-    : QObject(parent), mStyleBaseId(style),mOrientation(Qt::Vertical)
+BubbleWidgetManager::BubbleWidgetManager(
+    BubbleImageManager& imageManager, int style, QObject* parent)
+    : QObject(parent), mImageManager(imageManager), mStyleBaseId(style),
+      mOrientation(Qt::Vertical)
 {
     // .docml mappings
     mFileNames.insert(SingleCallView,":/xml/bubble_layout_1.docml");
@@ -70,6 +75,7 @@
     mWidgetName.insert(RightButton,    "rightButton");
     mWidgetName.insert(ConferenceTimer,"callTimer");
     mWidgetName.insert(ParticipantList,"participantList");
+    mWidgetName.insert(MutedIcon,      "mutedIcon");
 
     mButtonStyle.insert(LeftButton, new BubbleButtonStyle());
     mButtonStyle.insert(CenterButton, new BubbleButtonStyle());
@@ -113,7 +119,7 @@
     Qt::Orientation orientation)
 {
     BubbleDocumentLoader* loader =
-        new BubbleDocumentLoader(mStylePluginName);
+        new BubbleDocumentLoader(mImageManager,mStylePluginName);
     bool ok;
 
     loader->load(mFileNames[view],&ok);
@@ -144,6 +150,8 @@
     setButtonStyle(LeftButton, widget(view,ExpandedBubble,LeftButton));
     setButtonStyle(CenterButton, widget(view,ExpandedBubble,CenterButton));
     setButtonStyle(RightButton, widget(view,ExpandedBubble,RightButton));
+
+    setBackground(widget(view,None,MutedIcon));
 }
 
 void BubbleWidgetManager::setButtonStyle(Widget widget, QGraphicsWidget* button)
@@ -156,6 +164,17 @@
     }
 }
 
+void BubbleWidgetManager::setBackground(QGraphicsWidget* widget)
+{
+    HbWidget* w;
+    w = qobject_cast<HbWidget*>(widget);
+    if (w) {
+        HbFrameItem* item =
+            new HbFrameItem("qtg_fr_popup_trans",HbFrameDrawer::NinePieces);
+        w->setBackgroundItem(item); // takes ownership
+    }
+}
+
 void BubbleWidgetManager::createDocumentHandlers(View view)
 {
     Q_ASSERT(mDocumentLoaders.contains(view));
@@ -256,8 +275,9 @@
 }
 
 // custom widget loading
-BubbleDocumentLoader::BubbleDocumentLoader(const QString& stylePluginName)
-    : mStylePluginName(stylePluginName)
+BubbleDocumentLoader::BubbleDocumentLoader(
+      BubbleImageManager& imageManager, const QString& stylePluginName)
+    : mImageManager(imageManager), mStylePluginName(stylePluginName)
 {
 }
 
@@ -272,7 +292,8 @@
     }
 
     if ( type == BubbleImageWidget::staticMetaObject.className() ) {
-        QObject *object = new BubbleImageWidget();
+        QObject *object = new BubbleImageWidget(
+            mStylePluginName, mImageManager);
         object->setObjectName(name);
         return object;
     }
--- a/phoneuis/bubblemanager2/bubblecore/src/bubblewidgetmanager.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/bubblecore/src/bubblewidgetmanager.h	Mon May 03 12:31:11 2010 +0300
@@ -25,6 +25,7 @@
 class BubbleDocumentLoader;
 class BubbleHandler;
 class BubbleButtonStyle;
+class BubbleImageManager;
 
 class BubbleWidgetManager : public QObject
 {
@@ -58,11 +59,15 @@
         ConferenceTimer,
         ParticipantList,
         ParticipantListItem,
-        ParticipantListButton
+        ParticipantListButton,
+        MutedIcon
     };
 
 public:
-    BubbleWidgetManager(int style, QObject* parent=0);
+    BubbleWidgetManager(
+        BubbleImageManager& imageManager,
+        int style,
+        QObject* parent=0);
     virtual ~BubbleWidgetManager();
 
     QGraphicsWidget* view(View view);
@@ -90,8 +95,10 @@
     void createDocumentHandlers(View view);
     void applyCustomStyles(View view);
     void setButtonStyle(Widget widget, QGraphicsWidget* button);
+    void setBackground(QGraphicsWidget* widget);
 
 private:
+    BubbleImageManager& mImageManager;
     int mStyleBaseId;
     QString mStylePluginName;
     Qt::Orientation mOrientation;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_video_call_active.svg	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g>
+<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5609 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="423.0967" x2="429.6524" y1="-578.646" y2="-582.9078">
+<stop offset="0" style="stop-color:#A7E722"/>
+<stop offset="0.1333" style="stop-color:#A7E722"/>
+<stop offset="0.6303" style="stop-color:#428C0F"/>
+<stop offset="1" style="stop-color:#5CA617"/>
+</linearGradient>
+<path d="M19.081,33.91c2.089-3.595,4.591-6.496,7.281-9.188c2.593-2.591,6.72-5.3,8.562-6.256l9.604-10.282  c-0.845-0.3-3.693-0.464-7.279,0.616c-3.586,1.083-11.736,6.303-16.979,11.547c-5.242,5.246-9.727,12.347-10.581,14.595  c-1.343,3.541-1.221,7.445-0.929,8.58c0,0,0.34,1.035,1.144,2.377C10.248,46.475,19.081,33.91,19.081,33.91z" fill="url(#SVGID_1_)"/>
+<path d="M31.184,20.8c1.488-1.036,2.87-1.882,3.74-2.334L44.271,8.46  c-0.132-0.058-0.209-0.088-0.209-0.088c-0.247-0.088-0.642-0.162-1.124-0.219c-0.793,0.006-1.596,0.093-2.401,0.27  C34.843,9.673,31.019,14.958,31.184,20.8z" fill="#020202" fill-opacity="0.05" stroke-opacity="0.05"/>
+<path d="M31.906,20.306c1.205-0.809,2.291-1.462,3.018-1.84l9.377-10.04  c-0.146-0.063-0.233-0.098-0.233-0.098c-0.231-0.08-0.604-0.152-1.06-0.203c-0.751,0.006-1.51,0.087-2.27,0.253  C35.275,9.576,31.636,14.695,31.906,20.306z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M44.079,8.263c-0.21-0.073-0.55-0.137-0.962-0.186c-0.681,0.006-1.369,0.08-2.06,0.231  c-5.087,1.116-8.426,5.984-7.978,11.233c0.725-0.455,1.363-0.826,1.844-1.076l9.424-10.088C44.178,8.302,44.079,8.263,44.079,8.263z  " fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
+<radialGradient cx="40.9697" cy="9.21" gradientUnits="userSpaceOnUse" id="SVGID_2_" r="12.2872">
+<stop offset="0" style="stop-color:#A7E722"/>
+<stop offset="0.6242" style="stop-color:#428C0F"/>
+<stop offset="1" style="stop-color:#5CA617"/>
+</radialGradient>
+<path d="M34.924,18.466l0.929,1.55c0,0,15.101-6.784,14.084-8.038c-0.513-0.631-0.577-0.656-1.237-1.263  c-1.985-1.815-4.172-2.531-4.172-2.531c-0.186-0.063-0.481-0.12-0.845-0.161c-0.596,0.004-1.2,0.068-1.806,0.201  c-4.591,1.009-7.57,5.501-6.963,10.257C34.916,18.477,34.921,18.47,34.924,18.466z" fill="url(#SVGID_2_)"/>
+<path d="M17.483,34.105c-0.988-0.139-2.007-0.119-3.027,0.105c-2.418,0.531-4.376,2.066-5.646,4.131  c-0.367,2.35-0.25,4.408-0.05,5.18c0,0,0.34,1.035,1.144,2.377c0.29,0.482,6.54-8.264,8.556-11.107L17.483,34.105z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M18.366,34.135c-0.989-0.139-2.008-0.117-3.029,0.105c-3.313,0.727-5.775,3.332-6.76,6.623  c-0.026,1.025,0.034,1.873,0.127,2.398c0.003,0.012,0.005,0.033,0.01,0.047c0,0,0.34,1.033,1.144,2.379  c0.3,0.498,6.981-8.887,8.75-11.383L18.366,34.135z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
+<radialGradient cx="437.4258" cy="-571.231" gradientTransform="matrix(0.2095 0.9787 -0.9682 0.2124 -629.4526 -270.6148)" gradientUnits="userSpaceOnUse" id="SVGID_3_" r="14.6187">
+<stop offset="0" style="stop-color:#A7E722"/>
+<stop offset="0.6242" style="stop-color:#428C0F"/>
+<stop offset="1" style="stop-color:#5CA617"/>
+</radialGradient>
+<path d="M11.202,47.738c0.616,0.74,0.646,0.953,1.295,1.523c1.194,1.055,9.301-13.611,9.301-13.611  l-2.683-1.719c-0.941-0.111-1.914-0.08-2.89,0.135c-4.777,1.049-7.806,5.869-6.87,10.832C9.749,45.686,10.349,46.709,11.202,47.738z  " fill="url(#SVGID_3_)"/>
+<path d="M49.937,11.978c-0.179-0.22-0.381-0.446-0.578-0.67l-13.944,7.959l0.438,0.749  C35.853,20.016,50.953,13.231,49.937,11.978z" fill="#020202" fill-opacity="0.4" stroke-opacity="0.4"/>
+<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="422.2881" x2="427.4786" y1="-610.9287" y2="-594.4409">
+<stop offset="0" style="stop-color:#C6FF45"/>
+<stop offset="0.6788" style="stop-color:#387300"/>
+<stop offset="1" style="stop-color:#66A00E"/>
+</linearGradient>
+<path d="M35.853,20.016l1.178,1.981c0.302,0.515,0.972,0.674,1.569,0.422l4.09-2.334l8.043-4.668  c0.632-0.363,0.878-1.119,0.549-1.686c0,0-0.333-0.501-1.349-1.751L35.853,20.016z" fill="url(#SVGID_4_)"/>
+<path d="M21.798,35.65l-0.725-0.473l-9.215,13.486c0.216,0.205,0.43,0.414,0.639,0.598  C13.691,50.316,21.798,35.65,21.798,35.65z" fill="#020202" fill-opacity="0.4" stroke-opacity="0.4"/>
+<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="439.6982" x2="451.5232" y1="-577.7549" y2="-564.7323">
+<stop offset="0" style="stop-color:#C6FF45"/>
+<stop offset="0.6788" style="stop-color:#387300"/>
+<stop offset="1" style="stop-color:#66A00E"/>
+</linearGradient>
+<path d="M12.498,49.262c1.193,1.049,1.686,1.369,1.686,1.369c0.567,0.367,1.363,0.17,1.781-0.441l7.9-11.605  c0.419-0.615,0.307-1.412-0.26-1.777l-1.808-1.156L12.498,49.262z" fill="url(#SVGID_5_)"/>
+<rect fill="none" height="60" width="60"/>
+</g>
+<g transform="matrix(1 0 0 1 30 30)">
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1__" x1="12.3789" x2="17.6203" y1="23.6504" y2="23.6504">
+<stop offset="0" style="stop-color:#878A8C"/>
+<stop offset="0.2606" style="stop-color:#BDC2C4"/>
+<stop offset="0.6606" style="stop-color:#5B6163"/>
+<stop offset="1" style="stop-color:#959A9C"/>
+</linearGradient>
+<rect fill="url(#SVGID_1__)" height="7.853" width="5.105" x="12.447" y="19.724"/>
+<path d="M12.447,24.655c0.82,0.199,1.673,0.315,2.553,0.315c0.881,0,1.732-0.116,2.553-0.315v-4.294  h-5.105V24.655z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M12.447,24.018c0.82,0.199,1.673,0.315,2.553,0.315c0.881,0,1.732-0.116,2.553-0.315v-4.294  h-5.105V24.018z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2__" x1="14.9995" x2="14.9995" y1="1.9746" y2="23.6704">
+<stop offset="0" style="stop-color:#F2F2F2"/>
+<stop offset="0.3212" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#666666"/>
+</linearGradient>
+<path d="M15,23.695c-5.98,0-10.848-4.867-10.848-10.848S9.02,2,15,2c5.982,0,10.848,4.866,10.848,10.847  S20.982,23.695,15,23.695L15,23.695z" fill="url(#SVGID_2__)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3__" x1="14.9995" x2="14.9995" y1="2.6143" y2="23.0332">
+<stop offset="0" style="stop-color:#D1D7D9"/>
+<stop offset="0.0667" style="stop-color:#D1D7D9"/>
+<stop offset="0.2606" style="stop-color:#BDC2C4"/>
+<stop offset="0.6606" style="stop-color:#7C8487"/>
+<stop offset="1" style="stop-color:#ADB3B5"/>
+</linearGradient>
+<circle cx="15" cy="12.847" fill="url(#SVGID_3__)" r="10.209"/>
+<path d="M15,21.989c-5.315,0-9.657-4.23-9.843-9.5c-0.004,0.116-0.009,0.231-0.009,0.349  c0,5.431,4.419,9.851,9.852,9.851s9.852-4.42,9.852-9.851c0-0.117-0.005-0.232-0.009-0.349C24.658,17.759,20.315,21.989,15,21.989z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M23.295,12.413c0,4.704-3.715,9.346-8.299,9.345c-4.58-0.003-8.292-4.646-8.291-9.35  c0.002-4.706,3.718-8.517,8.298-8.517C19.584,3.894,23.298,7.707,23.295,12.413z" fill="#231F20" fill-opacity="0.3" stroke-opacity="0.3"/>
+<path d="M14.996,21.066c-2.387-0.002-4.63-0.932-6.315-2.619c-1.688-1.688-2.615-3.932-2.614-6.318  c0-4.923,4.009-8.929,8.935-8.929c2.387,0,4.632,0.931,6.317,2.618c1.688,1.688,2.616,3.933,2.615,6.318  c-0.002,4.924-4.01,8.93-8.934,8.93H14.996z" fill="#231F20" fill-opacity="0.2" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4__" x1="14.9995" x2="14.9995" y1="3.7212" y2="20.3517">
+<stop offset="0" style="stop-color:#CFCFCF"/>
+<stop offset="0.1091" style="stop-color:#CFCFCF"/>
+<stop offset="0.6848" style="stop-color:#121212"/>
+<stop offset="1" style="stop-color:#A6A6A6"/>
+</linearGradient>
+<path d="M14.996,20.428c-2.216-0.002-4.298-0.864-5.864-2.432c-1.567-1.566-2.428-3.65-2.427-5.866  c0-4.573,3.723-8.293,8.296-8.293c2.218,0.001,4.3,0.864,5.866,2.432c1.566,1.568,2.43,3.651,2.428,5.867  c-0.001,4.573-3.723,8.292-8.295,8.292H14.996z" fill="url(#SVGID_4__)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5__" x1="14.9995" x2="14.9995" y1="4.3682" y2="19.7187">
+<stop offset="0" style="stop-color:#F2F2F2"/>
+<stop offset="1" style="stop-color:#606769"/>
+</linearGradient>
+<circle cx="15" cy="12.133" fill="url(#SVGID_5__)" r="7.657"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="14.9995" x2="14.9995" y1="5.7715" y2="18.454">
+<stop offset="0" style="stop-color:#1A1A1A"/>
+<stop offset="0.503" style="stop-color:#343434"/>
+<stop offset="0.7515" style="stop-color:#9E9E9E"/>
+<stop offset="1" style="stop-color:#CFCFCF"/>
+</linearGradient>
+<path d="M15,18.514c-1.706-0.001-3.309-0.666-4.514-1.871c-1.204-1.206-1.867-2.808-1.867-4.512  c0-3.517,2.862-6.378,6.382-6.378c1.706,0,3.308,0.664,4.513,1.871c1.205,1.205,1.868,2.808,1.867,4.513  C21.381,15.652,18.519,18.514,15,18.514L15,18.514z" fill="url(#SVGID_6_)"/>
+<radialGradient cx="25.7734" cy="10.2729" gradientTransform="matrix(1.0143 3.000000e-004 -3.000000e-004 1.0141 -10.5185 2.1979)" gradientUnits="userSpaceOnUse" id="SVGID_7_" r="6.4991">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="0.5917" style="stop-color:#000000"/>
+<stop offset="0.627" style="stop-color:#050505"/>
+<stop offset="0.7652" style="stop-color:#121212"/>
+<stop offset="0.8876" style="stop-color:#171717"/>
+<stop offset="1" style="stop-color:#171717"/>
+</radialGradient>
+<path d="M20.743,12.135c0,3.172-2.574,5.74-5.744,5.74c-3.175-0.001-5.743-2.573-5.741-5.745  c0-3.171,2.573-5.742,5.745-5.74C18.173,6.391,20.744,8.962,20.743,12.135z" fill="url(#SVGID_7_)"/>
+<radialGradient cx="21.6543" cy="5.0659" gradientTransform="matrix(1.0143 0 0 1.0141 -9.5579 3.1299)" gradientUnits="userSpaceOnUse" id="SVGID_8_" r="10.3515">
+<stop offset="0" style="stop-color:#242424"/>
+<stop offset="0.4303" style="stop-color:#242424"/>
+<stop offset="0.7818" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#000000"/>
+</radialGradient>
+<circle cx="15" cy="12.133" fill="url(#SVGID_8_)" r="4.712"/>
+<radialGradient cx="23.9639" cy="3.5498" gradientTransform="matrix(1.0143 3.000000e-004 -3.000000e-004 1.0141 -10.5185 2.1979)" gradientUnits="userSpaceOnUse" id="SVGID_9_" r="11.3574">
+<stop offset="0" style="stop-color:#A700F5"/>
+<stop offset="0.3091" style="stop-color:#A700F5"/>
+<stop offset="0.4364" style="stop-color:#5E008A"/>
+<stop offset="0.8061" style="stop-color:#0E1402"/>
+<stop offset="1" style="stop-color:#0E1402"/>
+</radialGradient>
+<path d="M19.211,12.133c0,2.326-1.886,4.21-4.212,4.21c-2.326-0.002-4.213-1.888-4.213-4.212  c0.004-2.327,1.89-4.21,4.213-4.21C17.328,7.923,19.214,9.808,19.211,12.133z" fill="url(#SVGID_9_)"/>
+<radialGradient cx="25.1709" cy="13.2505" gradientTransform="matrix(1.0143 3.000000e-004 -3.000000e-004 1.0141 -10.5185 2.1979)" gradientUnits="userSpaceOnUse" id="SVGID_10_" r="4.6113">
+<stop offset="0" style="stop-color:#48630C"/>
+<stop offset="0.7879" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#000000"/>
+</radialGradient>
+<path d="M19.211,12.133c0,2.326-1.886,4.21-4.212,4.21c-2.326-0.002-4.213-1.888-4.213-4.212  c0,0,1.444,2.569,4.213,2.569C17.767,14.701,19.211,12.133,19.211,12.133z" fill="url(#SVGID_10_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_11_" x1="14.979" x2="14.979" y1="7.0654" y2="12.0939">
+<stop offset="0" style="stop-color:#F8FBFF"/>
+<stop offset="1" style="stop-color:#808080"/>
+</linearGradient>
+<path d="M14.979,12.069c1.828,0,3.549-0.277,5.067-0.765  c-0.431-2.41-2.532-4.239-5.067-4.239c-2.532,0-4.632,1.83-5.065,4.239C11.431,11.792,13.153,12.069,14.979,12.069z" fill="url(#SVGID_11_)" fill-opacity="0.35" stroke-opacity="0.35"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_12_" x1="5.7617" x2="24.2852" y1="26.7236" y2="26.7236">
+<stop offset="0" style="stop-color:#878A8C"/>
+<stop offset="0.2606" style="stop-color:#BDC2C4"/>
+<stop offset="0.6606" style="stop-color:#5B6163"/>
+<stop offset="1" style="stop-color:#959A9C"/>
+</linearGradient>
+<path d="M24.245,28c0.025-0.635,0.04-0.508,0.04-0.639v-0.035c0-1.037-0.852-1.879-1.901-1.879H7.662  c-1.05,0-1.9,0.842-1.9,1.879v0.035c0,0.131,0.014,0.004,0.04,0.639H24.245z" fill="url(#SVGID_12_)"/>
+<path d="M5.879,26.7h18.29c-0.084-0.234-0.212-0.444-0.377-0.626H6.256  C6.092,26.256,5.963,26.466,5.879,26.7z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M5.772,27.361C5.779,27.492,5.789,27.684,5.802,28h18.443  c0.012-0.316,0.022-0.508,0.028-0.639H5.772z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6.255,26.074h17.536c-0.348-0.383-0.846-0.627-1.407-0.627H7.662  C7.102,25.447,6.603,25.691,6.255,26.074z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<rect fill="none" height="30" width="30"/>
+</g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_video_call_waiting.svg	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20.3613" x2="26.6141" y1="20.2744" y2="26.4485">
+<stop offset="0" style="stop-color:#FEE16E"/>
+<stop offset="0.5939" style="stop-color:#D96900"/>
+<stop offset="1" style="stop-color:#FED43A"/>
+</linearGradient>
+<path d="M19.081,33.911c2.089-3.597,4.591-6.497,7.281-9.189c2.593-2.591,6.72-5.3,8.562-6.256l9.604-10.282  c-0.845-0.3-3.693-0.464-7.279,0.616c-3.586,1.083-11.736,6.303-16.979,11.547c-5.242,5.246-9.727,12.347-10.581,14.595  c-1.343,3.541-1.221,7.445-0.929,8.581c0,0,0.34,1.034,1.144,2.377C10.248,46.476,19.081,33.911,19.081,33.911z" fill="url(#SVGID_1_)"/>
+<path d="M31.184,20.8c1.488-1.036,2.87-1.882,3.74-2.334L44.271,8.46  c-0.132-0.058-0.209-0.088-0.209-0.088c-0.247-0.088-0.642-0.162-1.124-0.219c-0.793,0.006-1.596,0.093-2.401,0.27  C34.843,9.673,31.019,14.958,31.184,20.8z" fill="#020202" fill-opacity="0.05" stroke-opacity="0.05"/>
+<path d="M31.906,20.306c1.205-0.809,2.291-1.462,3.018-1.84l9.377-10.04  c-0.146-0.063-0.233-0.098-0.233-0.098c-0.231-0.08-0.604-0.152-1.06-0.203c-0.751,0.006-1.51,0.087-2.27,0.253  C35.275,9.576,31.636,14.695,31.906,20.306z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M44.079,8.263c-0.21-0.073-0.55-0.137-0.962-0.186c-0.681,0.006-1.369,0.08-2.06,0.231  c-5.087,1.116-8.426,5.984-7.978,11.233c0.725-0.455,1.363-0.826,1.844-1.076l9.424-10.088C44.178,8.302,44.079,8.263,44.079,8.263z  " fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
+<radialGradient cx="43.6406" cy="10.1128" gradientUnits="userSpaceOnUse" id="SVGID_2_" r="13.348">
+<stop offset="0" style="stop-color:#FEE16E"/>
+<stop offset="0.6061" style="stop-color:#F1830A"/>
+<stop offset="1" style="stop-color:#FED43A"/>
+</radialGradient>
+<path d="M34.924,18.466l0.929,1.55c0,0,15.101-6.784,14.084-8.038c-0.513-0.631-0.577-0.656-1.237-1.263  c-1.985-1.815-4.172-2.531-4.172-2.531c-0.186-0.063-0.481-0.12-0.845-0.161c-0.596,0.004-1.2,0.068-1.806,0.201  c-4.591,1.009-7.57,5.501-6.963,10.257C34.916,18.477,34.921,18.47,34.924,18.466z" fill="url(#SVGID_2_)"/>
+<path d="M17.483,34.106c-0.988-0.14-2.007-0.119-3.027,0.105c-2.418,0.53-4.376,2.066-5.646,4.131  c-0.367,2.35-0.25,4.407-0.05,5.18c0,0,0.34,1.034,1.144,2.377c0.29,0.482,6.54-8.264,8.556-11.107L17.483,34.106z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M18.366,34.136c-0.989-0.14-2.008-0.118-3.029,0.105c-3.313,0.727-5.775,3.332-6.76,6.623  c-0.026,1.025,0.034,1.872,0.127,2.397c0.003,0.013,0.005,0.034,0.01,0.048c0,0,0.34,1.033,1.144,2.379  c0.3,0.498,6.981-8.888,8.75-11.384L18.366,34.136z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
+<radialGradient cx="437.4258" cy="-571.231" gradientTransform="matrix(0.2095 0.9787 -0.9682 0.2124 -629.4526 -270.6148)" gradientUnits="userSpaceOnUse" id="SVGID_3_" r="14.6198">
+<stop offset="0" style="stop-color:#FEE16E"/>
+<stop offset="0.6061" style="stop-color:#F1830A"/>
+<stop offset="1" style="stop-color:#FED43A"/>
+</radialGradient>
+<path d="M11.202,47.738c0.616,0.74,0.646,0.954,1.295,1.524c1.194,1.055,9.301-13.612,9.301-13.612  l-2.683-1.719c-0.941-0.111-1.914-0.079-2.89,0.136c-4.777,1.048-7.806,5.868-6.87,10.832C9.749,45.686,10.349,46.71,11.202,47.738z  " fill="url(#SVGID_3_)"/>
+<path d="M49.937,11.978c-0.179-0.22-0.381-0.446-0.578-0.67l-13.944,7.959l0.438,0.749  C35.853,20.016,50.953,13.231,49.937,11.978z" fill="#020202" fill-opacity="0.5" stroke-opacity="0.5"/>
+<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="422.2881" x2="427.4786" y1="-610.9287" y2="-594.4409">
+<stop offset="0" style="stop-color:#FEE16E"/>
+<stop offset="0.7576" style="stop-color:#D96900"/>
+<stop offset="1" style="stop-color:#FED43A"/>
+</linearGradient>
+<path d="M35.853,20.016l1.178,1.981c0.302,0.515,0.972,0.674,1.569,0.422l4.09-2.334l8.043-4.668  c0.632-0.363,0.878-1.119,0.549-1.686c0,0-0.333-0.501-1.349-1.751L35.853,20.016z" fill="url(#SVGID_4_)"/>
+<path d="M21.798,35.65l-0.725-0.472l-9.215,13.486c0.216,0.204,0.43,0.414,0.639,0.598  C13.691,50.317,21.798,35.65,21.798,35.65z" fill="#020202" fill-opacity="0.5" stroke-opacity="0.5"/>
+<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="439.6982" x2="451.5232" y1="-577.7549" y2="-564.7323">
+<stop offset="0" style="stop-color:#FEE16E"/>
+<stop offset="0.7576" style="stop-color:#D96900"/>
+<stop offset="1" style="stop-color:#FED43A"/>
+</linearGradient>
+<path d="M12.498,49.262c1.193,1.05,1.686,1.37,1.686,1.37c0.567,0.367,1.363,0.169,1.781-0.442l7.9-11.605  c0.419-0.614,0.307-1.411-0.26-1.777l-1.808-1.156L12.498,49.262z" fill="url(#SVGID_5_)"/>
+<rect fill="none" height="60" width="60"/>
+</g>
+<g transform="matrix(1 0 0 1 30 30)">
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1__" x1="12.3789" x2="17.6203" y1="23.6504" y2="23.6504">
+<stop offset="0" style="stop-color:#878A8C"/>
+<stop offset="0.2606" style="stop-color:#BDC2C4"/>
+<stop offset="0.6606" style="stop-color:#5B6163"/>
+<stop offset="1" style="stop-color:#959A9C"/>
+</linearGradient>
+<rect fill="url(#SVGID_1__)" height="7.853" width="5.105" x="12.447" y="19.724"/>
+<path d="M12.447,24.655c0.82,0.199,1.673,0.315,2.553,0.315c0.881,0,1.732-0.116,2.553-0.315v-4.294  h-5.105V24.655z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M12.447,24.018c0.82,0.199,1.673,0.315,2.553,0.315c0.881,0,1.732-0.116,2.553-0.315v-4.294  h-5.105V24.018z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2__" x1="14.9995" x2="14.9995" y1="1.9746" y2="23.6704">
+<stop offset="0" style="stop-color:#F2F2F2"/>
+<stop offset="0.3212" style="stop-color:#E6E6E6"/>
+<stop offset="1" style="stop-color:#666666"/>
+</linearGradient>
+<path d="M15,23.695c-5.98,0-10.848-4.867-10.848-10.848S9.02,2,15,2c5.982,0,10.848,4.866,10.848,10.847  S20.982,23.695,15,23.695L15,23.695z" fill="url(#SVGID_2__)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3__" x1="14.9995" x2="14.9995" y1="2.6143" y2="23.0332">
+<stop offset="0" style="stop-color:#D1D7D9"/>
+<stop offset="0.0667" style="stop-color:#D1D7D9"/>
+<stop offset="0.2606" style="stop-color:#BDC2C4"/>
+<stop offset="0.6606" style="stop-color:#7C8487"/>
+<stop offset="1" style="stop-color:#ADB3B5"/>
+</linearGradient>
+<circle cx="15" cy="12.847" fill="url(#SVGID_3__)" r="10.209"/>
+<path d="M15,21.989c-5.315,0-9.657-4.23-9.843-9.5c-0.004,0.116-0.009,0.231-0.009,0.349  c0,5.431,4.419,9.851,9.852,9.851s9.852-4.42,9.852-9.851c0-0.117-0.005-0.232-0.009-0.349C24.658,17.759,20.315,21.989,15,21.989z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M23.295,12.413c0,4.704-3.715,9.346-8.299,9.345c-4.58-0.003-8.292-4.646-8.291-9.35  c0.002-4.706,3.718-8.517,8.298-8.517C19.584,3.894,23.298,7.707,23.295,12.413z" fill="#231F20" fill-opacity="0.3" stroke-opacity="0.3"/>
+<path d="M14.996,21.066c-2.387-0.002-4.63-0.932-6.315-2.619c-1.688-1.688-2.615-3.932-2.614-6.318  c0-4.923,4.009-8.929,8.935-8.929c2.387,0,4.632,0.931,6.317,2.618c1.688,1.688,2.616,3.933,2.615,6.318  c-0.002,4.924-4.01,8.93-8.934,8.93H14.996z" fill="#231F20" fill-opacity="0.2" stroke-opacity="0.2"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4__" x1="14.9995" x2="14.9995" y1="3.7212" y2="20.3517">
+<stop offset="0" style="stop-color:#CFCFCF"/>
+<stop offset="0.1091" style="stop-color:#CFCFCF"/>
+<stop offset="0.6848" style="stop-color:#121212"/>
+<stop offset="1" style="stop-color:#A6A6A6"/>
+</linearGradient>
+<path d="M14.996,20.428c-2.216-0.002-4.298-0.864-5.864-2.432c-1.567-1.566-2.428-3.65-2.427-5.866  c0-4.573,3.723-8.293,8.296-8.293c2.218,0.001,4.3,0.864,5.866,2.432c1.566,1.568,2.43,3.651,2.428,5.867  c-0.001,4.573-3.723,8.292-8.295,8.292H14.996z" fill="url(#SVGID_4__)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5__" x1="14.9995" x2="14.9995" y1="4.3682" y2="19.7187">
+<stop offset="0" style="stop-color:#F2F2F2"/>
+<stop offset="1" style="stop-color:#606769"/>
+</linearGradient>
+<circle cx="15" cy="12.133" fill="url(#SVGID_5__)" r="7.657"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="14.9995" x2="14.9995" y1="5.7715" y2="18.454">
+<stop offset="0" style="stop-color:#1A1A1A"/>
+<stop offset="0.503" style="stop-color:#343434"/>
+<stop offset="0.7515" style="stop-color:#9E9E9E"/>
+<stop offset="1" style="stop-color:#CFCFCF"/>
+</linearGradient>
+<path d="M15,18.514c-1.706-0.001-3.309-0.666-4.514-1.871c-1.204-1.206-1.867-2.808-1.867-4.512  c0-3.517,2.862-6.378,6.382-6.378c1.706,0,3.308,0.664,4.513,1.871c1.205,1.205,1.868,2.808,1.867,4.513  C21.381,15.652,18.519,18.514,15,18.514L15,18.514z" fill="url(#SVGID_6_)"/>
+<radialGradient cx="25.7734" cy="10.2729" gradientTransform="matrix(1.0143 3.000000e-004 -3.000000e-004 1.0141 -10.5185 2.1979)" gradientUnits="userSpaceOnUse" id="SVGID_7_" r="6.4991">
+<stop offset="0" style="stop-color:#000000"/>
+<stop offset="0.5917" style="stop-color:#000000"/>
+<stop offset="0.627" style="stop-color:#050505"/>
+<stop offset="0.7652" style="stop-color:#121212"/>
+<stop offset="0.8876" style="stop-color:#171717"/>
+<stop offset="1" style="stop-color:#171717"/>
+</radialGradient>
+<path d="M20.743,12.135c0,3.172-2.574,5.74-5.744,5.74c-3.175-0.001-5.743-2.573-5.741-5.745  c0-3.171,2.573-5.742,5.745-5.74C18.173,6.391,20.744,8.962,20.743,12.135z" fill="url(#SVGID_7_)"/>
+<radialGradient cx="21.6543" cy="5.0659" gradientTransform="matrix(1.0143 0 0 1.0141 -9.5579 3.1299)" gradientUnits="userSpaceOnUse" id="SVGID_8_" r="10.3515">
+<stop offset="0" style="stop-color:#242424"/>
+<stop offset="0.4303" style="stop-color:#242424"/>
+<stop offset="0.7818" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#000000"/>
+</radialGradient>
+<circle cx="15" cy="12.133" fill="url(#SVGID_8_)" r="4.712"/>
+<radialGradient cx="23.9639" cy="3.5498" gradientTransform="matrix(1.0143 3.000000e-004 -3.000000e-004 1.0141 -10.5185 2.1979)" gradientUnits="userSpaceOnUse" id="SVGID_9_" r="11.3574">
+<stop offset="0" style="stop-color:#A700F5"/>
+<stop offset="0.3091" style="stop-color:#A700F5"/>
+<stop offset="0.4364" style="stop-color:#5E008A"/>
+<stop offset="0.8061" style="stop-color:#0E1402"/>
+<stop offset="1" style="stop-color:#0E1402"/>
+</radialGradient>
+<path d="M19.211,12.133c0,2.326-1.886,4.21-4.212,4.21c-2.326-0.002-4.213-1.888-4.213-4.212  c0.004-2.327,1.89-4.21,4.213-4.21C17.328,7.923,19.214,9.808,19.211,12.133z" fill="url(#SVGID_9_)"/>
+<radialGradient cx="25.1709" cy="13.2505" gradientTransform="matrix(1.0143 3.000000e-004 -3.000000e-004 1.0141 -10.5185 2.1979)" gradientUnits="userSpaceOnUse" id="SVGID_10_" r="4.6113">
+<stop offset="0" style="stop-color:#48630C"/>
+<stop offset="0.7879" style="stop-color:#000000"/>
+<stop offset="1" style="stop-color:#000000"/>
+</radialGradient>
+<path d="M19.211,12.133c0,2.326-1.886,4.21-4.212,4.21c-2.326-0.002-4.213-1.888-4.213-4.212  c0,0,1.444,2.569,4.213,2.569C17.767,14.701,19.211,12.133,19.211,12.133z" fill="url(#SVGID_10_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_11_" x1="14.979" x2="14.979" y1="7.0654" y2="12.0939">
+<stop offset="0" style="stop-color:#F8FBFF"/>
+<stop offset="1" style="stop-color:#808080"/>
+</linearGradient>
+<path d="M14.979,12.069c1.828,0,3.549-0.277,5.067-0.765  c-0.431-2.41-2.532-4.239-5.067-4.239c-2.532,0-4.632,1.83-5.065,4.239C11.431,11.792,13.153,12.069,14.979,12.069z" fill="url(#SVGID_11_)" fill-opacity="0.35" stroke-opacity="0.35"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_12_" x1="5.7617" x2="24.2852" y1="26.7236" y2="26.7236">
+<stop offset="0" style="stop-color:#878A8C"/>
+<stop offset="0.2606" style="stop-color:#BDC2C4"/>
+<stop offset="0.6606" style="stop-color:#5B6163"/>
+<stop offset="1" style="stop-color:#959A9C"/>
+</linearGradient>
+<path d="M24.245,28c0.025-0.635,0.04-0.508,0.04-0.639v-0.035c0-1.037-0.852-1.879-1.901-1.879H7.662  c-1.05,0-1.9,0.842-1.9,1.879v0.035c0,0.131,0.014,0.004,0.04,0.639H24.245z" fill="url(#SVGID_12_)"/>
+<path d="M5.879,26.7h18.29c-0.084-0.234-0.212-0.444-0.377-0.626H6.256  C6.092,26.256,5.963,26.466,5.879,26.7z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M5.772,27.361C5.779,27.492,5.789,27.684,5.802,28h18.443  c0.012-0.316,0.022-0.508,0.028-0.639H5.772z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M6.255,26.074h17.536c-0.348-0.383-0.846-0.627-1.407-0.627H7.662  C7.102,25.447,6.603,25.691,6.255,26.074z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<rect fill="none" height="30" width="30"/>
+</g>
+</svg>
--- a/phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_video_dialled_call.svg	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g>
-<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5609 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="422.2207" x2="428.7761" y1="-578.2104" y2="-582.472">
-<stop offset="0" style="stop-color:#A7E722"/>
-<stop offset="0.1333" style="stop-color:#A7E722"/>
-<stop offset="0.6303" style="stop-color:#428C0F"/>
-<stop offset="1" style="stop-color:#5CA617"/>
-</linearGradient>
-<path d="M18.469,33.146c2.09-3.596,4.591-6.497,7.281-9.19c2.594-2.589,6.72-5.299,8.562-6.254L43.916,7.42  c-0.846-0.3-3.693-0.465-7.279,0.616c-3.588,1.083-11.736,6.302-16.979,11.547C14.416,24.83,9.932,31.93,9.077,34.178  c-1.343,3.541-1.222,7.445-0.929,8.58c0,0,0.34,1.035,1.145,2.377C9.636,45.711,18.469,33.146,18.469,33.146z" fill="url(#SVGID_1_)"/>
-<path d="M30.573,20.037c1.488-1.037,2.869-1.883,3.74-2.335l9.346-10.006  c-0.131-0.057-0.209-0.088-0.209-0.088c-0.246-0.088-0.641-0.162-1.123-0.218c-0.793,0.005-1.596,0.093-2.402,0.27  C34.23,8.909,30.409,14.194,30.573,20.037z" fill="#020202" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M31.295,19.542c1.205-0.809,2.291-1.462,3.018-1.84l9.377-10.04  c-0.146-0.063-0.234-0.098-0.234-0.098c-0.232-0.08-0.604-0.152-1.061-0.203c-0.75,0.006-1.508,0.087-2.27,0.253  C34.664,8.813,31.023,13.932,31.295,19.542z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M43.467,7.499c-0.209-0.073-0.549-0.137-0.963-0.186c-0.68,0.006-1.369,0.08-2.059,0.231  c-5.088,1.116-8.426,5.984-7.977,11.233c0.725-0.455,1.363-0.826,1.844-1.076l9.422-10.088C43.566,7.538,43.467,7.499,43.467,7.499z  " fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="46.6523" cy="-5.2056" gradientTransform="matrix(0.6122 0 0 0.6122 11.7943 11.6322)" gradientUnits="userSpaceOnUse" id="SVGID_2_" r="20.0698">
-<stop offset="0" style="stop-color:#A7E722"/>
-<stop offset="0.6242" style="stop-color:#428C0F"/>
-<stop offset="1" style="stop-color:#5CA617"/>
-</radialGradient>
-<path d="M34.313,17.702l0.928,1.55c0,0,15.102-6.784,14.084-8.039c-0.514-0.631-0.576-0.656-1.238-1.262  c-1.984-1.815-4.17-2.531-4.17-2.531C43.73,7.357,43.434,7.3,43.07,7.258c-0.596,0.005-1.199,0.069-1.805,0.202  c-4.592,1.008-7.572,5.5-6.965,10.256C34.305,17.713,34.309,17.706,34.313,17.702z" fill="url(#SVGID_2_)"/>
-<path d="M16.873,33.344c-0.989-0.141-2.008-0.121-3.028,0.104c-2.417,0.531-4.375,2.066-5.646,4.131  c-0.367,2.35-0.25,4.408-0.05,5.18c0,0,0.34,1.035,1.145,2.377c0.289,0.484,6.539-8.264,8.555-11.107L16.873,33.344z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M17.755,33.373c-0.989-0.141-2.008-0.119-3.029,0.104c-3.313,0.727-5.776,3.332-6.76,6.623  C7.94,41.125,8,41.973,8.093,42.498c0.002,0.012,0.005,0.033,0.01,0.047c0,0,0.339,1.033,1.143,2.379  c0.3,0.498,6.981-8.887,8.75-11.383L17.755,33.373z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="437.749" cy="-560.2109" gradientTransform="matrix(0.1283 0.5992 -0.5928 0.13 -373.5847 -154.0506)" gradientUnits="userSpaceOnUse" id="SVGID_3_" r="23.8799">
-<stop offset="0" style="stop-color:#A7E722"/>
-<stop offset="0.6242" style="stop-color:#428C0F"/>
-<stop offset="1" style="stop-color:#5CA617"/>
-</radialGradient>
-<path d="M10.591,46.975c0.616,0.74,0.646,0.955,1.294,1.525c1.195,1.055,9.301-13.613,9.301-13.613  l-2.683-1.719c-0.941-0.111-1.913-0.08-2.889,0.135c-4.777,1.049-7.806,5.869-6.87,10.832C9.138,44.922,9.736,45.947,10.591,46.975z  " fill="url(#SVGID_3_)"/>
-<path d="M49.324,11.213c-0.178-0.219-0.381-0.445-0.578-0.669l-13.943,7.958l0.438,0.749  C35.24,19.252,50.342,12.468,49.324,11.213z" fill="#020202" fill-opacity="0.4" stroke-opacity="0.4"/>
-<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="421.4131" x2="426.6039" y1="-610.4937" y2="-594.0048">
-<stop offset="0" style="stop-color:#C6FF45"/>
-<stop offset="0.6788" style="stop-color:#387300"/>
-<stop offset="1" style="stop-color:#66A00E"/>
-</linearGradient>
-<path d="M35.24,19.252l1.178,1.98c0.301,0.515,0.973,0.673,1.57,0.423l4.09-2.335l8.043-4.667  c0.631-0.363,0.877-1.12,0.549-1.685c0,0-0.334-0.501-1.35-1.752L35.24,19.252z" fill="url(#SVGID_4_)"/>
-<path d="M21.186,34.887l-0.725-0.473l-9.214,13.488c0.215,0.203,0.429,0.412,0.638,0.598  C13.081,49.555,21.186,34.887,21.186,34.887z" fill="#020202" fill-opacity="0.4" stroke-opacity="0.4"/>
-<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="438.8232" x2="450.6482" y1="-577.3184" y2="-564.2958">
-<stop offset="0" style="stop-color:#C6FF45"/>
-<stop offset="0.6788" style="stop-color:#387300"/>
-<stop offset="1" style="stop-color:#66A00E"/>
-</linearGradient>
-<path d="M11.887,48.498c1.193,1.051,1.685,1.371,1.685,1.371c0.568,0.367,1.363,0.168,1.781-0.443  l7.901-11.605c0.418-0.615,0.307-1.412-0.261-1.777l-1.808-1.156L11.887,48.498z" fill="url(#SVGID_5_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="39.1182" x2="44.145" y1="48.6309" y2="48.6309">
-<stop offset="0" style="stop-color:#878A8C"/>
-<stop offset="0.2606" style="stop-color:#BDC2C4"/>
-<stop offset="0.6606" style="stop-color:#5B6163"/>
-<stop offset="1" style="stop-color:#959A9C"/>
-</linearGradient>
-<rect fill="url(#SVGID_6_)" height="7.535" width="4.896" x="39.184" y="44.863"/>
-<path d="M39.184,49.596c0.787,0.189,1.604,0.303,2.449,0.303c0.844,0,1.662-0.113,2.447-0.303v-4.121  h-4.896V49.596z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
-<path d="M39.184,48.982c0.787,0.191,1.604,0.303,2.449,0.303c0.844,0,1.662-0.111,2.447-0.303v-4.119  h-4.896V48.982z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="41.6328" x2="41.6328" y1="27.8325" y2="48.6499">
-<stop offset="0" style="stop-color:#F2F2F2"/>
-<stop offset="0.3212" style="stop-color:#E6E6E6"/>
-<stop offset="1" style="stop-color:#666666"/>
-</linearGradient>
-<path d="M41.633,48.674c-5.74,0-10.408-4.67-10.408-10.408c0-5.74,4.668-10.409,10.408-10.409  c5.738,0,10.408,4.668,10.408,10.409C52.041,44.004,47.371,48.674,41.633,48.674L41.633,48.674z" fill="url(#SVGID_7_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_8_" x1="41.6318" x2="41.6318" y1="28.4473" y2="48.0381">
-<stop offset="0" style="stop-color:#D1D7D9"/>
-<stop offset="0.0667" style="stop-color:#D1D7D9"/>
-<stop offset="0.2606" style="stop-color:#BDC2C4"/>
-<stop offset="0.6606" style="stop-color:#7C8487"/>
-<stop offset="1" style="stop-color:#ADB3B5"/>
-</linearGradient>
-<circle cx="41.632" cy="38.266" fill="url(#SVGID_8_)" r="9.796"/>
-<path d="M41.633,47.037c-5.102,0-9.268-4.059-9.445-9.115c-0.004,0.111-0.008,0.223-0.008,0.334  c0,5.211,4.24,9.451,9.453,9.451c5.211,0,9.451-4.24,9.451-9.451c0-0.111-0.004-0.223-0.008-0.334  C50.898,42.979,46.732,47.037,41.633,47.037z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M49.592,37.848c0,4.516-3.564,8.969-7.963,8.967c-4.395-0.002-7.957-4.457-7.957-8.971  c0.004-4.516,3.568-8.172,7.963-8.172C46.029,29.675,49.594,33.334,49.592,37.848z" fill="#231F20" fill-opacity="0.3" stroke-opacity="0.3"/>
-<path d="M41.629,46.15c-2.291,0-4.443-0.893-6.061-2.512c-1.619-1.619-2.51-3.773-2.508-6.063  c0-4.725,3.846-8.567,8.572-8.567c2.291,0,4.443,0.893,6.063,2.512c1.619,1.619,2.51,3.771,2.508,6.063  c0,4.725-3.846,8.566-8.57,8.566H41.629z" fill="#231F20" fill-opacity="0.2" stroke-opacity="0.2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_9_" x1="41.6318" x2="41.6318" y1="29.5093" y2="45.4663">
-<stop offset="0" style="stop-color:#CFCFCF"/>
-<stop offset="0.1091" style="stop-color:#CFCFCF"/>
-<stop offset="0.6848" style="stop-color:#121212"/>
-<stop offset="1" style="stop-color:#A6A6A6"/>
-</linearGradient>
-<path d="M41.629,45.539c-2.127-0.002-4.125-0.83-5.629-2.334c-1.502-1.502-2.328-3.502-2.328-5.629  c0-4.387,3.572-7.956,7.961-7.956c2.127,0,4.125,0.83,5.629,2.333c1.504,1.504,2.33,3.504,2.33,5.631  c-0.002,4.387-3.572,7.955-7.959,7.955H41.629z" fill="url(#SVGID_9_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_10_" x1="41.6318" x2="41.6318" y1="30.1289" y2="44.8584">
-<stop offset="0" style="stop-color:#F2F2F2"/>
-<stop offset="1" style="stop-color:#606769"/>
-</linearGradient>
-<circle cx="41.632" cy="37.58" fill="url(#SVGID_10_)" r="7.347"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_11_" x1="41.6318" x2="41.6318" y1="31.4756" y2="43.6433">
-<stop offset="0" style="stop-color:#1A1A1A"/>
-<stop offset="0.503" style="stop-color:#343434"/>
-<stop offset="0.7515" style="stop-color:#9E9E9E"/>
-<stop offset="1" style="stop-color:#CFCFCF"/>
-</linearGradient>
-<path d="M41.633,43.701c-1.639,0-3.176-0.639-4.332-1.795c-1.154-1.156-1.791-2.693-1.791-4.33  c0-3.373,2.746-6.119,6.123-6.119c1.637,0,3.174,0.637,4.33,1.795c1.156,1.156,1.793,2.693,1.791,4.33  C47.754,40.957,45.008,43.701,41.633,43.701L41.633,43.701z" fill="url(#SVGID_11_)"/>
-<radialGradient cx="59.5957" cy="40.5771" gradientTransform="matrix(0.621 1.836735e-004 -1.836735e-004 0.6209 5.2261 12.8455)" gradientUnits="userSpaceOnUse" id="SVGID_12_" r="10.1859">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="0.5917" style="stop-color:#000000"/>
-<stop offset="0.627" style="stop-color:#050505"/>
-<stop offset="0.7652" style="stop-color:#121212"/>
-<stop offset="0.8876" style="stop-color:#171717"/>
-<stop offset="1" style="stop-color:#171717"/>
-</radialGradient>
-<circle cx="41.632" cy="37.579" fill="url(#SVGID_12_)" r="5.511"/>
-<radialGradient cx="53.6738" cy="32.9404" gradientTransform="matrix(0.621 0 0 0.6209 5.811 13.4188)" gradientUnits="userSpaceOnUse" id="SVGID_13_" r="16.2221">
-<stop offset="0" style="stop-color:#242424"/>
-<stop offset="0.4303" style="stop-color:#242424"/>
-<stop offset="0.7818" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#000000"/>
-</radialGradient>
-<circle cx="41.633" cy="37.58" fill="url(#SVGID_13_)" r="4.521"/>
-<radialGradient cx="56.7607" cy="30.0415" gradientTransform="matrix(0.621 1.836735e-004 -1.836735e-004 0.6209 5.2261 12.8455)" gradientUnits="userSpaceOnUse" id="SVGID_14_" r="17.797">
-<stop offset="0" style="stop-color:#A700F5"/>
-<stop offset="0.3091" style="stop-color:#A700F5"/>
-<stop offset="0.4364" style="stop-color:#5E008A"/>
-<stop offset="0.8061" style="stop-color:#0E1402"/>
-<stop offset="1" style="stop-color:#0E1402"/>
-</radialGradient>
-<path d="M45.672,37.58c0,2.232-1.809,4.041-4.041,4.039c-2.232,0-4.041-1.811-4.041-4.041  c0.002-2.232,1.813-4.039,4.041-4.039C43.865,33.541,45.676,35.35,45.672,37.58z" fill="url(#SVGID_14_)"/>
-<radialGradient cx="58.6514" cy="45.2432" gradientTransform="matrix(0.621 1.836735e-004 -1.836735e-004 0.6209 5.2261 12.8455)" gradientUnits="userSpaceOnUse" id="SVGID_15_" r="7.2256">
-<stop offset="0" style="stop-color:#48630C"/>
-<stop offset="0.7879" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#000000"/>
-</radialGradient>
-<path d="M45.672,37.58c0,2.232-1.809,4.041-4.041,4.039c-2.232,0-4.041-1.811-4.041-4.041  c0,0,1.385,2.465,4.041,2.465S45.672,37.58,45.672,37.58z" fill="url(#SVGID_15_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_16_" x1="41.6123" x2="41.6123" y1="32.7168" y2="37.5411">
-<stop offset="0" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#808080"/>
-</linearGradient>
-<path d="M41.611,37.518c1.754,0,3.404-0.264,4.863-0.732  c-0.414-2.313-2.432-4.068-4.863-4.068c-2.43,0-4.445,1.756-4.861,4.068C38.207,37.254,39.859,37.518,41.611,37.518z" fill="url(#SVGID_16_)" fill-opacity="0.35" stroke-opacity="0.35"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_17_" x1="32.7676" x2="50.541" y1="51.5801" y2="51.5801">
-<stop offset="0" style="stop-color:#878A8C"/>
-<stop offset="0.2606" style="stop-color:#BDC2C4"/>
-<stop offset="0.6606" style="stop-color:#5B6163"/>
-<stop offset="1" style="stop-color:#959A9C"/>
-</linearGradient>
-<path d="M50.502,52.805c0.025-0.609,0.039-0.486,0.039-0.613v-0.033c0-0.996-0.816-1.803-1.824-1.803H34.592  c-1.008,0-1.824,0.807-1.824,1.803v0.033c0,0.127,0.014,0.004,0.039,0.613H50.502z" fill="url(#SVGID_17_)"/>
-<path d="M32.881,51.557H50.43c-0.08-0.225-0.203-0.426-0.361-0.6H33.242  C33.084,51.131,32.961,51.332,32.881,51.557z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
-<path d="M32.777,52.191c0.008,0.125,0.016,0.309,0.029,0.613h17.695  c0.012-0.305,0.021-0.488,0.027-0.613H32.777z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
-<path d="M33.24,50.957h16.826c-0.332-0.367-0.811-0.602-1.35-0.602H34.592  C34.053,50.355,33.574,50.59,33.24,50.957z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
-<rect fill="none" height="60" width="60"/>
-</g>
-<g>
-<linearGradient gradientTransform="matrix(1 1.000000e-004 -1.000000e-004 1 -2.3655 -29.0779)" gradientUnits="userSpaceOnUse" id="SVGID_1__" x1="17.3477" x2="17.3477" y1="31.0703" y2="55.8327">
-<stop offset="0" style="stop-color:#45E8FF"/>
-<stop offset="0.1455" style="stop-color:#45E8FF"/>
-<stop offset="0.5576" style="stop-color:#30A4D5"/>
-<stop offset="1" style="stop-color:#1347BA"/>
-</linearGradient>
-<polygon fill="url(#SVGID_1__)" points="25.381,14.288 15.027,3.528 4.573,14.288 10.207,14.288 10.21,26.582 19.865,26.584   19.863,14.288 "/>
-<linearGradient gradientTransform="matrix(1 1.000000e-004 -1.000000e-004 1 -2.3655 -29.0779)" gradientUnits="userSpaceOnUse" id="SVGID_2__" x1="17.3701" x2="17.3701" y1="32.3115" y2="43.6498">
-<stop offset="0" style="stop-color:#B3FCFF"/>
-<stop offset="0.4182" style="stop-color:#B3FCFF"/>
-<stop offset="1" style="stop-color:#5FBAD8"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2__)" points="4.897,14.286 15.026,3.888 25.104,14.288 25.801,14.288 15.027,3.17 4.199,14.286 "/>
-<line fill="#1D4489" x1="10.21" x2="19.865" y1="26.578" y2="26.58"/>
-<polygon fill="#33AEDB" points="19.867,26.83 10.21,26.828 10.21,26.328 19.866,26.33 19.867,26.83 "/>
-<rect fill="none" height="30" width="30"/>
-</g>
-</svg>
--- a/phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_video_missed_call.svg	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g>
-<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5609 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="422.2207" x2="428.7761" y1="-578.2104" y2="-582.472">
-<stop offset="0" style="stop-color:#A7E722"/>
-<stop offset="0.1333" style="stop-color:#A7E722"/>
-<stop offset="0.6303" style="stop-color:#428C0F"/>
-<stop offset="1" style="stop-color:#5CA617"/>
-</linearGradient>
-<path d="M18.469,33.146c2.09-3.596,4.591-6.497,7.281-9.19c2.594-2.589,6.72-5.299,8.562-6.254L43.916,7.42  c-0.846-0.3-3.693-0.465-7.279,0.616c-3.588,1.083-11.736,6.302-16.979,11.547C14.416,24.83,9.932,31.93,9.077,34.178  c-1.343,3.541-1.222,7.445-0.929,8.58c0,0,0.34,1.035,1.145,2.377C9.636,45.711,18.469,33.146,18.469,33.146z" fill="url(#SVGID_1_)"/>
-<path d="M30.573,20.037c1.488-1.037,2.869-1.883,3.74-2.335l9.346-10.006  c-0.131-0.057-0.209-0.088-0.209-0.088c-0.246-0.088-0.641-0.162-1.123-0.218c-0.793,0.005-1.596,0.093-2.402,0.27  C34.23,8.909,30.409,14.194,30.573,20.037z" fill="#020202" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M31.295,19.542c1.205-0.809,2.291-1.462,3.018-1.84l9.377-10.04  c-0.146-0.063-0.234-0.098-0.234-0.098c-0.232-0.08-0.604-0.152-1.061-0.203c-0.75,0.006-1.508,0.087-2.27,0.253  C34.664,8.813,31.023,13.932,31.295,19.542z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M43.467,7.499c-0.209-0.073-0.549-0.137-0.963-0.186c-0.68,0.006-1.369,0.08-2.059,0.231  c-5.088,1.116-8.426,5.984-7.977,11.233c0.725-0.455,1.363-0.826,1.844-1.076l9.422-10.088C43.566,7.538,43.467,7.499,43.467,7.499z  " fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="46.6523" cy="-5.2056" gradientTransform="matrix(0.6122 0 0 0.6122 11.7943 11.6322)" gradientUnits="userSpaceOnUse" id="SVGID_2_" r="20.0698">
-<stop offset="0" style="stop-color:#A7E722"/>
-<stop offset="0.6242" style="stop-color:#428C0F"/>
-<stop offset="1" style="stop-color:#5CA617"/>
-</radialGradient>
-<path d="M34.313,17.702l0.928,1.55c0,0,15.102-6.784,14.084-8.039c-0.514-0.631-0.576-0.656-1.238-1.262  c-1.984-1.815-4.17-2.531-4.17-2.531C43.73,7.357,43.434,7.3,43.07,7.258c-0.596,0.005-1.199,0.069-1.805,0.202  c-4.592,1.008-7.572,5.5-6.965,10.256C34.305,17.713,34.309,17.706,34.313,17.702z" fill="url(#SVGID_2_)"/>
-<path d="M16.873,33.344c-0.989-0.141-2.008-0.121-3.028,0.104c-2.417,0.531-4.375,2.066-5.646,4.131  c-0.367,2.35-0.25,4.408-0.05,5.18c0,0,0.34,1.035,1.145,2.377c0.289,0.484,6.539-8.264,8.555-11.107L16.873,33.344z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M17.755,33.373c-0.989-0.141-2.008-0.119-3.029,0.104c-3.313,0.727-5.776,3.332-6.76,6.623  C7.94,41.125,8,41.973,8.093,42.498c0.002,0.012,0.005,0.033,0.01,0.047c0,0,0.339,1.033,1.143,2.379  c0.3,0.498,6.981-8.887,8.75-11.383L17.755,33.373z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="437.749" cy="-560.2109" gradientTransform="matrix(0.1283 0.5992 -0.5928 0.13 -373.5847 -154.0506)" gradientUnits="userSpaceOnUse" id="SVGID_3_" r="23.8799">
-<stop offset="0" style="stop-color:#A7E722"/>
-<stop offset="0.6242" style="stop-color:#428C0F"/>
-<stop offset="1" style="stop-color:#5CA617"/>
-</radialGradient>
-<path d="M10.591,46.975c0.616,0.74,0.646,0.955,1.294,1.525c1.195,1.055,9.301-13.613,9.301-13.613  l-2.683-1.719c-0.941-0.111-1.913-0.08-2.889,0.135c-4.777,1.049-7.806,5.869-6.87,10.832C9.138,44.922,9.736,45.947,10.591,46.975z  " fill="url(#SVGID_3_)"/>
-<path d="M49.324,11.213c-0.178-0.219-0.381-0.445-0.578-0.669l-13.943,7.958l0.438,0.749  C35.24,19.252,50.342,12.468,49.324,11.213z" fill="#020202" fill-opacity="0.4" stroke-opacity="0.4"/>
-<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="421.4131" x2="426.6039" y1="-610.4937" y2="-594.0048">
-<stop offset="0" style="stop-color:#C6FF45"/>
-<stop offset="0.6788" style="stop-color:#387300"/>
-<stop offset="1" style="stop-color:#66A00E"/>
-</linearGradient>
-<path d="M35.24,19.252l1.178,1.98c0.301,0.515,0.973,0.673,1.57,0.423l4.09-2.335l8.043-4.667  c0.631-0.363,0.877-1.12,0.549-1.685c0,0-0.334-0.501-1.35-1.752L35.24,19.252z" fill="url(#SVGID_4_)"/>
-<path d="M21.186,34.887l-0.725-0.473l-9.214,13.488c0.215,0.203,0.429,0.412,0.638,0.598  C13.081,49.555,21.186,34.887,21.186,34.887z" fill="#020202" fill-opacity="0.4" stroke-opacity="0.4"/>
-<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="438.8232" x2="450.6482" y1="-577.3184" y2="-564.2958">
-<stop offset="0" style="stop-color:#C6FF45"/>
-<stop offset="0.6788" style="stop-color:#387300"/>
-<stop offset="1" style="stop-color:#66A00E"/>
-</linearGradient>
-<path d="M11.887,48.498c1.193,1.051,1.685,1.371,1.685,1.371c0.568,0.367,1.363,0.168,1.781-0.443  l7.901-11.605c0.418-0.615,0.307-1.412-0.261-1.777l-1.808-1.156L11.887,48.498z" fill="url(#SVGID_5_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="39.1182" x2="44.145" y1="48.6309" y2="48.6309">
-<stop offset="0" style="stop-color:#878A8C"/>
-<stop offset="0.2606" style="stop-color:#BDC2C4"/>
-<stop offset="0.6606" style="stop-color:#5B6163"/>
-<stop offset="1" style="stop-color:#959A9C"/>
-</linearGradient>
-<rect fill="url(#SVGID_6_)" height="7.535" width="4.896" x="39.184" y="44.863"/>
-<path d="M39.184,49.596c0.787,0.189,1.604,0.303,2.449,0.303c0.844,0,1.662-0.113,2.447-0.303v-4.121  h-4.896V49.596z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
-<path d="M39.184,48.982c0.787,0.191,1.604,0.303,2.449,0.303c0.844,0,1.662-0.111,2.447-0.303v-4.119  h-4.896V48.982z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="41.6328" x2="41.6328" y1="27.8325" y2="48.6499">
-<stop offset="0" style="stop-color:#F2F2F2"/>
-<stop offset="0.3212" style="stop-color:#E6E6E6"/>
-<stop offset="1" style="stop-color:#666666"/>
-</linearGradient>
-<path d="M41.633,48.674c-5.74,0-10.408-4.67-10.408-10.408c0-5.74,4.668-10.409,10.408-10.409  c5.738,0,10.408,4.668,10.408,10.409C52.041,44.004,47.371,48.674,41.633,48.674L41.633,48.674z" fill="url(#SVGID_7_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_8_" x1="41.6318" x2="41.6318" y1="28.4473" y2="48.0381">
-<stop offset="0" style="stop-color:#D1D7D9"/>
-<stop offset="0.0667" style="stop-color:#D1D7D9"/>
-<stop offset="0.2606" style="stop-color:#BDC2C4"/>
-<stop offset="0.6606" style="stop-color:#7C8487"/>
-<stop offset="1" style="stop-color:#ADB3B5"/>
-</linearGradient>
-<circle cx="41.632" cy="38.266" fill="url(#SVGID_8_)" r="9.796"/>
-<path d="M41.633,47.037c-5.102,0-9.268-4.059-9.445-9.115c-0.004,0.111-0.008,0.223-0.008,0.334  c0,5.211,4.24,9.451,9.453,9.451c5.211,0,9.451-4.24,9.451-9.451c0-0.111-0.004-0.223-0.008-0.334  C50.898,42.979,46.732,47.037,41.633,47.037z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M49.592,37.848c0,4.516-3.564,8.969-7.963,8.967c-4.395-0.002-7.957-4.457-7.957-8.971  c0.004-4.516,3.568-8.172,7.963-8.172C46.029,29.675,49.594,33.334,49.592,37.848z" fill="#231F20" fill-opacity="0.3" stroke-opacity="0.3"/>
-<path d="M41.629,46.15c-2.291,0-4.443-0.893-6.061-2.512c-1.619-1.619-2.51-3.773-2.508-6.063  c0-4.725,3.846-8.567,8.572-8.567c2.291,0,4.443,0.893,6.063,2.512c1.619,1.619,2.51,3.771,2.508,6.063  c0,4.725-3.846,8.566-8.57,8.566H41.629z" fill="#231F20" fill-opacity="0.2" stroke-opacity="0.2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_9_" x1="41.6318" x2="41.6318" y1="29.5093" y2="45.4663">
-<stop offset="0" style="stop-color:#CFCFCF"/>
-<stop offset="0.1091" style="stop-color:#CFCFCF"/>
-<stop offset="0.6848" style="stop-color:#121212"/>
-<stop offset="1" style="stop-color:#A6A6A6"/>
-</linearGradient>
-<path d="M41.629,45.539c-2.127-0.002-4.125-0.83-5.629-2.334c-1.502-1.502-2.328-3.502-2.328-5.629  c0-4.387,3.572-7.956,7.961-7.956c2.127,0,4.125,0.83,5.629,2.333c1.504,1.504,2.33,3.504,2.33,5.631  c-0.002,4.387-3.572,7.955-7.959,7.955H41.629z" fill="url(#SVGID_9_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_10_" x1="41.6318" x2="41.6318" y1="30.1289" y2="44.8584">
-<stop offset="0" style="stop-color:#F2F2F2"/>
-<stop offset="1" style="stop-color:#606769"/>
-</linearGradient>
-<circle cx="41.632" cy="37.58" fill="url(#SVGID_10_)" r="7.347"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_11_" x1="41.6318" x2="41.6318" y1="31.4756" y2="43.6433">
-<stop offset="0" style="stop-color:#1A1A1A"/>
-<stop offset="0.503" style="stop-color:#343434"/>
-<stop offset="0.7515" style="stop-color:#9E9E9E"/>
-<stop offset="1" style="stop-color:#CFCFCF"/>
-</linearGradient>
-<path d="M41.633,43.701c-1.639,0-3.176-0.639-4.332-1.795c-1.154-1.156-1.791-2.693-1.791-4.33  c0-3.373,2.746-6.119,6.123-6.119c1.637,0,3.174,0.637,4.33,1.795c1.156,1.156,1.793,2.693,1.791,4.33  C47.754,40.957,45.008,43.701,41.633,43.701L41.633,43.701z" fill="url(#SVGID_11_)"/>
-<radialGradient cx="59.5957" cy="40.5771" gradientTransform="matrix(0.621 1.836735e-004 -1.836735e-004 0.6209 5.2261 12.8455)" gradientUnits="userSpaceOnUse" id="SVGID_12_" r="10.1859">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="0.5917" style="stop-color:#000000"/>
-<stop offset="0.627" style="stop-color:#050505"/>
-<stop offset="0.7652" style="stop-color:#121212"/>
-<stop offset="0.8876" style="stop-color:#171717"/>
-<stop offset="1" style="stop-color:#171717"/>
-</radialGradient>
-<circle cx="41.632" cy="37.579" fill="url(#SVGID_12_)" r="5.511"/>
-<radialGradient cx="53.6738" cy="32.9404" gradientTransform="matrix(0.621 0 0 0.6209 5.811 13.4188)" gradientUnits="userSpaceOnUse" id="SVGID_13_" r="16.2221">
-<stop offset="0" style="stop-color:#242424"/>
-<stop offset="0.4303" style="stop-color:#242424"/>
-<stop offset="0.7818" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#000000"/>
-</radialGradient>
-<circle cx="41.633" cy="37.58" fill="url(#SVGID_13_)" r="4.521"/>
-<radialGradient cx="56.7607" cy="30.0415" gradientTransform="matrix(0.621 1.836735e-004 -1.836735e-004 0.6209 5.2261 12.8455)" gradientUnits="userSpaceOnUse" id="SVGID_14_" r="17.797">
-<stop offset="0" style="stop-color:#A700F5"/>
-<stop offset="0.3091" style="stop-color:#A700F5"/>
-<stop offset="0.4364" style="stop-color:#5E008A"/>
-<stop offset="0.8061" style="stop-color:#0E1402"/>
-<stop offset="1" style="stop-color:#0E1402"/>
-</radialGradient>
-<path d="M45.672,37.58c0,2.232-1.809,4.041-4.041,4.039c-2.232,0-4.041-1.811-4.041-4.041  c0.002-2.232,1.813-4.039,4.041-4.039C43.865,33.541,45.676,35.35,45.672,37.58z" fill="url(#SVGID_14_)"/>
-<radialGradient cx="58.6514" cy="45.2432" gradientTransform="matrix(0.621 1.836735e-004 -1.836735e-004 0.6209 5.2261 12.8455)" gradientUnits="userSpaceOnUse" id="SVGID_15_" r="7.2256">
-<stop offset="0" style="stop-color:#48630C"/>
-<stop offset="0.7879" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#000000"/>
-</radialGradient>
-<path d="M45.672,37.58c0,2.232-1.809,4.041-4.041,4.039c-2.232,0-4.041-1.811-4.041-4.041  c0,0,1.385,2.465,4.041,2.465S45.672,37.58,45.672,37.58z" fill="url(#SVGID_15_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_16_" x1="41.6123" x2="41.6123" y1="32.7168" y2="37.5411">
-<stop offset="0" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#808080"/>
-</linearGradient>
-<path d="M41.611,37.518c1.754,0,3.404-0.264,4.863-0.732  c-0.414-2.313-2.432-4.068-4.863-4.068c-2.43,0-4.445,1.756-4.861,4.068C38.207,37.254,39.859,37.518,41.611,37.518z" fill="url(#SVGID_16_)" fill-opacity="0.35" stroke-opacity="0.35"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_17_" x1="32.7676" x2="50.541" y1="51.5801" y2="51.5801">
-<stop offset="0" style="stop-color:#878A8C"/>
-<stop offset="0.2606" style="stop-color:#BDC2C4"/>
-<stop offset="0.6606" style="stop-color:#5B6163"/>
-<stop offset="1" style="stop-color:#959A9C"/>
-</linearGradient>
-<path d="M50.502,52.805c0.025-0.609,0.039-0.486,0.039-0.613v-0.033c0-0.996-0.816-1.803-1.824-1.803H34.592  c-1.008,0-1.824,0.807-1.824,1.803v0.033c0,0.127,0.014,0.004,0.039,0.613H50.502z" fill="url(#SVGID_17_)"/>
-<path d="M32.881,51.557H50.43c-0.08-0.225-0.203-0.426-0.361-0.6H33.242  C33.084,51.131,32.961,51.332,32.881,51.557z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
-<path d="M32.777,52.191c0.008,0.125,0.016,0.309,0.029,0.613h17.695  c0.012-0.305,0.021-0.488,0.027-0.613H32.777z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
-<path d="M33.24,50.957h16.826c-0.332-0.367-0.811-0.602-1.35-0.602H34.592  C34.053,50.355,33.574,50.59,33.24,50.957z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
-<rect fill="none" height="60" width="60"/>
-</g>
-<g>
-<rect fill="none" height="30" width="30"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1__" x1="15.0005" x2="15.0005" y1="4.5283" y2="27.0492">
-<stop offset="0" style="stop-color:#FF7042"/>
-<stop offset="1" style="stop-color:#991B23"/>
-</linearGradient>
-<path d="M19.018,16.846v-4.316h4.535l-8.512-8.844l-8.592,8.844h4.631v4.316  c0,7.293,6.068,9.467,11.908,9.467v-6.422C21.189,19.891,19.018,19.002,19.018,16.846z" fill="url(#SVGID_1__)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2__" x1="15.0005" x2="15.0005" y1="4.0146" y2="12.8168">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#991B23"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2__)" points="15.041,4.508 22.762,12.529 23.553,12.529 15.041,3.686 6.449,12.529 7.248,12.529 "/>
-</g>
-</svg>
--- a/phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_video_received_call.svg	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g>
-<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5609 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="422.2207" x2="428.7761" y1="-578.2104" y2="-582.472">
-<stop offset="0" style="stop-color:#A7E722"/>
-<stop offset="0.1333" style="stop-color:#A7E722"/>
-<stop offset="0.6303" style="stop-color:#428C0F"/>
-<stop offset="1" style="stop-color:#5CA617"/>
-</linearGradient>
-<path d="M18.469,33.146c2.09-3.596,4.591-6.497,7.281-9.19c2.594-2.589,6.72-5.299,8.562-6.254L43.916,7.42  c-0.846-0.3-3.693-0.465-7.279,0.616c-3.588,1.083-11.736,6.302-16.979,11.547C14.416,24.83,9.932,31.93,9.077,34.178  c-1.343,3.541-1.222,7.445-0.929,8.58c0,0,0.34,1.035,1.145,2.377C9.636,45.711,18.469,33.146,18.469,33.146z" fill="url(#SVGID_1_)"/>
-<path d="M30.573,20.037c1.488-1.037,2.869-1.883,3.74-2.335l9.346-10.006  c-0.131-0.057-0.209-0.088-0.209-0.088c-0.246-0.088-0.641-0.162-1.123-0.218c-0.793,0.005-1.596,0.093-2.402,0.27  C34.23,8.909,30.409,14.194,30.573,20.037z" fill="#020202" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M31.295,19.542c1.205-0.809,2.291-1.462,3.018-1.84l9.377-10.04  c-0.146-0.063-0.234-0.098-0.234-0.098c-0.232-0.08-0.604-0.152-1.061-0.203c-0.75,0.006-1.508,0.087-2.27,0.253  C34.664,8.813,31.023,13.932,31.295,19.542z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M43.467,7.499c-0.209-0.073-0.549-0.137-0.963-0.186c-0.68,0.006-1.369,0.08-2.059,0.231  c-5.088,1.116-8.426,5.984-7.977,11.233c0.725-0.455,1.363-0.826,1.844-1.076l9.422-10.088C43.566,7.538,43.467,7.499,43.467,7.499z  " fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="46.6523" cy="-5.2056" gradientTransform="matrix(0.6122 0 0 0.6122 11.7943 11.6322)" gradientUnits="userSpaceOnUse" id="SVGID_2_" r="20.0698">
-<stop offset="0" style="stop-color:#A7E722"/>
-<stop offset="0.6242" style="stop-color:#428C0F"/>
-<stop offset="1" style="stop-color:#5CA617"/>
-</radialGradient>
-<path d="M34.313,17.702l0.928,1.55c0,0,15.102-6.784,14.084-8.039c-0.514-0.631-0.576-0.656-1.238-1.262  c-1.984-1.815-4.17-2.531-4.17-2.531C43.73,7.357,43.434,7.3,43.07,7.258c-0.596,0.005-1.199,0.069-1.805,0.202  c-4.592,1.008-7.572,5.5-6.965,10.256C34.305,17.713,34.309,17.706,34.313,17.702z" fill="url(#SVGID_2_)"/>
-<path d="M16.873,33.344c-0.989-0.141-2.008-0.121-3.028,0.104c-2.417,0.531-4.375,2.066-5.646,4.131  c-0.367,2.35-0.25,4.408-0.05,5.18c0,0,0.34,1.035,1.145,2.377c0.289,0.484,6.539-8.264,8.555-11.107L16.873,33.344z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M17.755,33.373c-0.989-0.141-2.008-0.119-3.029,0.104c-3.313,0.727-5.776,3.332-6.76,6.623  C7.94,41.125,8,41.973,8.093,42.498c0.002,0.012,0.005,0.033,0.01,0.047c0,0,0.339,1.033,1.143,2.379  c0.3,0.498,6.981-8.887,8.75-11.383L17.755,33.373z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="437.749" cy="-560.2109" gradientTransform="matrix(0.1283 0.5992 -0.5928 0.13 -373.5847 -154.0506)" gradientUnits="userSpaceOnUse" id="SVGID_3_" r="23.8799">
-<stop offset="0" style="stop-color:#A7E722"/>
-<stop offset="0.6242" style="stop-color:#428C0F"/>
-<stop offset="1" style="stop-color:#5CA617"/>
-</radialGradient>
-<path d="M10.591,46.975c0.616,0.74,0.646,0.955,1.294,1.525c1.195,1.055,9.301-13.613,9.301-13.613  l-2.683-1.719c-0.941-0.111-1.913-0.08-2.889,0.135c-4.777,1.049-7.806,5.869-6.87,10.832C9.138,44.922,9.736,45.947,10.591,46.975z  " fill="url(#SVGID_3_)"/>
-<path d="M49.324,11.213c-0.178-0.219-0.381-0.445-0.578-0.669l-13.943,7.958l0.438,0.749  C35.24,19.252,50.342,12.468,49.324,11.213z" fill="#020202" fill-opacity="0.4" stroke-opacity="0.4"/>
-<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="421.4131" x2="426.6039" y1="-610.4937" y2="-594.0048">
-<stop offset="0" style="stop-color:#C6FF45"/>
-<stop offset="0.6788" style="stop-color:#387300"/>
-<stop offset="1" style="stop-color:#66A00E"/>
-</linearGradient>
-<path d="M35.24,19.252l1.178,1.98c0.301,0.515,0.973,0.673,1.57,0.423l4.09-2.335l8.043-4.667  c0.631-0.363,0.877-1.12,0.549-1.685c0,0-0.334-0.501-1.35-1.752L35.24,19.252z" fill="url(#SVGID_4_)"/>
-<path d="M21.186,34.887l-0.725-0.473l-9.214,13.488c0.215,0.203,0.429,0.412,0.638,0.598  C13.081,49.555,21.186,34.887,21.186,34.887z" fill="#020202" fill-opacity="0.4" stroke-opacity="0.4"/>
-<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="438.8232" x2="450.6482" y1="-577.3184" y2="-564.2958">
-<stop offset="0" style="stop-color:#C6FF45"/>
-<stop offset="0.6788" style="stop-color:#387300"/>
-<stop offset="1" style="stop-color:#66A00E"/>
-</linearGradient>
-<path d="M11.887,48.498c1.193,1.051,1.685,1.371,1.685,1.371c0.568,0.367,1.363,0.168,1.781-0.443  l7.901-11.605c0.418-0.615,0.307-1.412-0.261-1.777l-1.808-1.156L11.887,48.498z" fill="url(#SVGID_5_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="39.1182" x2="44.145" y1="48.6309" y2="48.6309">
-<stop offset="0" style="stop-color:#878A8C"/>
-<stop offset="0.2606" style="stop-color:#BDC2C4"/>
-<stop offset="0.6606" style="stop-color:#5B6163"/>
-<stop offset="1" style="stop-color:#959A9C"/>
-</linearGradient>
-<rect fill="url(#SVGID_6_)" height="7.535" width="4.896" x="39.184" y="44.863"/>
-<path d="M39.184,49.596c0.787,0.189,1.604,0.303,2.449,0.303c0.844,0,1.662-0.113,2.447-0.303v-4.121  h-4.896V49.596z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
-<path d="M39.184,48.982c0.787,0.191,1.604,0.303,2.449,0.303c0.844,0,1.662-0.111,2.447-0.303v-4.119  h-4.896V48.982z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="41.6328" x2="41.6328" y1="27.8325" y2="48.6499">
-<stop offset="0" style="stop-color:#F2F2F2"/>
-<stop offset="0.3212" style="stop-color:#E6E6E6"/>
-<stop offset="1" style="stop-color:#666666"/>
-</linearGradient>
-<path d="M41.633,48.674c-5.74,0-10.408-4.67-10.408-10.408c0-5.74,4.668-10.409,10.408-10.409  c5.738,0,10.408,4.668,10.408,10.409C52.041,44.004,47.371,48.674,41.633,48.674L41.633,48.674z" fill="url(#SVGID_7_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_8_" x1="41.6318" x2="41.6318" y1="28.4473" y2="48.0381">
-<stop offset="0" style="stop-color:#D1D7D9"/>
-<stop offset="0.0667" style="stop-color:#D1D7D9"/>
-<stop offset="0.2606" style="stop-color:#BDC2C4"/>
-<stop offset="0.6606" style="stop-color:#7C8487"/>
-<stop offset="1" style="stop-color:#ADB3B5"/>
-</linearGradient>
-<circle cx="41.632" cy="38.266" fill="url(#SVGID_8_)" r="9.796"/>
-<path d="M41.633,47.037c-5.102,0-9.268-4.059-9.445-9.115c-0.004,0.111-0.008,0.223-0.008,0.334  c0,5.211,4.24,9.451,9.453,9.451c5.211,0,9.451-4.24,9.451-9.451c0-0.111-0.004-0.223-0.008-0.334  C50.898,42.979,46.732,47.037,41.633,47.037z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M49.592,37.848c0,4.516-3.564,8.969-7.963,8.967c-4.395-0.002-7.957-4.457-7.957-8.971  c0.004-4.516,3.568-8.172,7.963-8.172C46.029,29.675,49.594,33.334,49.592,37.848z" fill="#231F20" fill-opacity="0.3" stroke-opacity="0.3"/>
-<path d="M41.629,46.15c-2.291,0-4.443-0.893-6.061-2.512c-1.619-1.619-2.51-3.773-2.508-6.063  c0-4.725,3.846-8.567,8.572-8.567c2.291,0,4.443,0.893,6.063,2.512c1.619,1.619,2.51,3.771,2.508,6.063  c0,4.725-3.846,8.566-8.57,8.566H41.629z" fill="#231F20" fill-opacity="0.2" stroke-opacity="0.2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_9_" x1="41.6318" x2="41.6318" y1="29.5093" y2="45.4663">
-<stop offset="0" style="stop-color:#CFCFCF"/>
-<stop offset="0.1091" style="stop-color:#CFCFCF"/>
-<stop offset="0.6848" style="stop-color:#121212"/>
-<stop offset="1" style="stop-color:#A6A6A6"/>
-</linearGradient>
-<path d="M41.629,45.539c-2.127-0.002-4.125-0.83-5.629-2.334c-1.502-1.502-2.328-3.502-2.328-5.629  c0-4.387,3.572-7.956,7.961-7.956c2.127,0,4.125,0.83,5.629,2.333c1.504,1.504,2.33,3.504,2.33,5.631  c-0.002,4.387-3.572,7.955-7.959,7.955H41.629z" fill="url(#SVGID_9_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_10_" x1="41.6318" x2="41.6318" y1="30.1289" y2="44.8584">
-<stop offset="0" style="stop-color:#F2F2F2"/>
-<stop offset="1" style="stop-color:#606769"/>
-</linearGradient>
-<circle cx="41.632" cy="37.58" fill="url(#SVGID_10_)" r="7.347"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_11_" x1="41.6318" x2="41.6318" y1="31.4756" y2="43.6433">
-<stop offset="0" style="stop-color:#1A1A1A"/>
-<stop offset="0.503" style="stop-color:#343434"/>
-<stop offset="0.7515" style="stop-color:#9E9E9E"/>
-<stop offset="1" style="stop-color:#CFCFCF"/>
-</linearGradient>
-<path d="M41.633,43.701c-1.639,0-3.176-0.639-4.332-1.795c-1.154-1.156-1.791-2.693-1.791-4.33  c0-3.373,2.746-6.119,6.123-6.119c1.637,0,3.174,0.637,4.33,1.795c1.156,1.156,1.793,2.693,1.791,4.33  C47.754,40.957,45.008,43.701,41.633,43.701L41.633,43.701z" fill="url(#SVGID_11_)"/>
-<radialGradient cx="59.5957" cy="40.5771" gradientTransform="matrix(0.621 1.836735e-004 -1.836735e-004 0.6209 5.2261 12.8455)" gradientUnits="userSpaceOnUse" id="SVGID_12_" r="10.1859">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="0.5917" style="stop-color:#000000"/>
-<stop offset="0.627" style="stop-color:#050505"/>
-<stop offset="0.7652" style="stop-color:#121212"/>
-<stop offset="0.8876" style="stop-color:#171717"/>
-<stop offset="1" style="stop-color:#171717"/>
-</radialGradient>
-<circle cx="41.632" cy="37.579" fill="url(#SVGID_12_)" r="5.511"/>
-<radialGradient cx="53.6738" cy="32.9404" gradientTransform="matrix(0.621 0 0 0.6209 5.811 13.4188)" gradientUnits="userSpaceOnUse" id="SVGID_13_" r="16.2221">
-<stop offset="0" style="stop-color:#242424"/>
-<stop offset="0.4303" style="stop-color:#242424"/>
-<stop offset="0.7818" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#000000"/>
-</radialGradient>
-<circle cx="41.633" cy="37.58" fill="url(#SVGID_13_)" r="4.521"/>
-<radialGradient cx="56.7607" cy="30.0415" gradientTransform="matrix(0.621 1.836735e-004 -1.836735e-004 0.6209 5.2261 12.8455)" gradientUnits="userSpaceOnUse" id="SVGID_14_" r="17.797">
-<stop offset="0" style="stop-color:#A700F5"/>
-<stop offset="0.3091" style="stop-color:#A700F5"/>
-<stop offset="0.4364" style="stop-color:#5E008A"/>
-<stop offset="0.8061" style="stop-color:#0E1402"/>
-<stop offset="1" style="stop-color:#0E1402"/>
-</radialGradient>
-<path d="M45.672,37.58c0,2.232-1.809,4.041-4.041,4.039c-2.232,0-4.041-1.811-4.041-4.041  c0.002-2.232,1.813-4.039,4.041-4.039C43.865,33.541,45.676,35.35,45.672,37.58z" fill="url(#SVGID_14_)"/>
-<radialGradient cx="58.6514" cy="45.2432" gradientTransform="matrix(0.621 1.836735e-004 -1.836735e-004 0.6209 5.2261 12.8455)" gradientUnits="userSpaceOnUse" id="SVGID_15_" r="7.2256">
-<stop offset="0" style="stop-color:#48630C"/>
-<stop offset="0.7879" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#000000"/>
-</radialGradient>
-<path d="M45.672,37.58c0,2.232-1.809,4.041-4.041,4.039c-2.232,0-4.041-1.811-4.041-4.041  c0,0,1.385,2.465,4.041,2.465S45.672,37.58,45.672,37.58z" fill="url(#SVGID_15_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_16_" x1="41.6123" x2="41.6123" y1="32.7168" y2="37.5411">
-<stop offset="0" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#808080"/>
-</linearGradient>
-<path d="M41.611,37.518c1.754,0,3.404-0.264,4.863-0.732  c-0.414-2.313-2.432-4.068-4.863-4.068c-2.43,0-4.445,1.756-4.861,4.068C38.207,37.254,39.859,37.518,41.611,37.518z" fill="url(#SVGID_16_)" fill-opacity="0.35" stroke-opacity="0.35"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_17_" x1="32.7676" x2="50.541" y1="51.5801" y2="51.5801">
-<stop offset="0" style="stop-color:#878A8C"/>
-<stop offset="0.2606" style="stop-color:#BDC2C4"/>
-<stop offset="0.6606" style="stop-color:#5B6163"/>
-<stop offset="1" style="stop-color:#959A9C"/>
-</linearGradient>
-<path d="M50.502,52.805c0.025-0.609,0.039-0.486,0.039-0.613v-0.033c0-0.996-0.816-1.803-1.824-1.803H34.592  c-1.008,0-1.824,0.807-1.824,1.803v0.033c0,0.127,0.014,0.004,0.039,0.613H50.502z" fill="url(#SVGID_17_)"/>
-<path d="M32.881,51.557H50.43c-0.08-0.225-0.203-0.426-0.361-0.6H33.242  C33.084,51.131,32.961,51.332,32.881,51.557z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
-<path d="M32.777,52.191c0.008,0.125,0.016,0.309,0.029,0.613h17.695  c0.012-0.305,0.021-0.488,0.027-0.613H32.777z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
-<path d="M33.24,50.957h16.826c-0.332-0.367-0.811-0.602-1.35-0.602H34.592  C34.053,50.355,33.574,50.59,33.24,50.957z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
-<rect fill="none" height="60" width="60"/>
-</g>
-<g>
-<linearGradient gradientTransform="matrix(1 1.000000e-004 -1.000000e-004 1 -2.3655 -29.0779)" gradientUnits="userSpaceOnUse" id="SVGID_1__" x1="17.3926" x2="17.3926" y1="32.2334" y2="55.3194">
-<stop offset="0" style="stop-color:#C6FF45"/>
-<stop offset="0.7273" style="stop-color:#66A00E"/>
-<stop offset="1" style="stop-color:#387300"/>
-</linearGradient>
-<polygon fill="url(#SVGID_1__)" points="4.648,15.727 14.942,26.471 25.397,15.714 19.763,15.712 19.759,3.417 10.166,3.416   10.166,15.726 "/>
-<line fill="#1D4489" x1="19.759" x2="10.166" y1="3.421" y2="3.42"/>
-<polygon fill="#E7FFB9" points="10.166,3.17 19.76,3.171 19.759,3.671 10.166,3.67 10.166,3.17 "/>
-<polygon fill="#E7FFB9" points="19.612,15.732 25.505,15.733 25.059,16.233 19.612,16.233 19.612,15.732 "/>
-<polygon fill="#E7FFB9" points="4.321,15.726 10.157,15.726 10.157,16.226 4.848,16.226 4.321,15.726 "/>
-<linearGradient gradientTransform="matrix(1 1.000000e-004 -1.000000e-004 1 -2.3655 -29.0779)" gradientUnits="userSpaceOnUse" id="SVGID_2__" x1="26.5625" x2="7.7312" y1="50.3418" y2="50.3418">
-<stop offset="0" style="stop-color:#AAE535"/>
-<stop offset="1" style="stop-color:#5D9C0A"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2__)" points="25.072,15.713 14.942,26.112 4.925,15.7 4.229,15.701 14.941,26.83 25.771,15.713 "/>
-<rect fill="none" height="30" width="30"/>
-</g>
-</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_voip_call_active.svg	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g>
+<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5609 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="423.0967" x2="429.6524" y1="-578.646" y2="-582.9078">
+<stop offset="0" style="stop-color:#A7E722"/>
+<stop offset="0.1333" style="stop-color:#A7E722"/>
+<stop offset="0.6303" style="stop-color:#428C0F"/>
+<stop offset="1" style="stop-color:#5CA617"/>
+</linearGradient>
+<path d="M19.081,33.91c2.089-3.595,4.591-6.496,7.281-9.188c2.593-2.591,6.72-5.3,8.562-6.256l9.604-10.282  c-0.845-0.3-3.693-0.464-7.279,0.616c-3.586,1.083-11.736,6.303-16.979,11.547c-5.242,5.246-9.727,12.347-10.581,14.595  c-1.343,3.541-1.221,7.445-0.929,8.58c0,0,0.34,1.035,1.144,2.377C10.248,46.475,19.081,33.91,19.081,33.91z" fill="url(#SVGID_1_)"/>
+<path d="M31.184,20.8c1.488-1.036,2.87-1.882,3.74-2.334L44.271,8.46  c-0.132-0.058-0.209-0.088-0.209-0.088c-0.247-0.088-0.642-0.162-1.124-0.219c-0.793,0.006-1.596,0.093-2.401,0.27  C34.843,9.673,31.019,14.958,31.184,20.8z" fill="#020202" fill-opacity="0.05" stroke-opacity="0.05"/>
+<path d="M31.906,20.306c1.205-0.809,2.291-1.462,3.018-1.84l9.377-10.04  c-0.146-0.063-0.233-0.098-0.233-0.098c-0.231-0.08-0.604-0.152-1.06-0.203c-0.751,0.006-1.51,0.087-2.27,0.253  C35.275,9.576,31.636,14.695,31.906,20.306z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M44.079,8.263c-0.21-0.073-0.55-0.137-0.962-0.186c-0.681,0.006-1.369,0.08-2.06,0.231  c-5.087,1.116-8.426,5.984-7.978,11.233c0.725-0.455,1.363-0.826,1.844-1.076l9.424-10.088C44.178,8.302,44.079,8.263,44.079,8.263z  " fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
+<radialGradient cx="40.9697" cy="9.21" gradientUnits="userSpaceOnUse" id="SVGID_2_" r="12.2872">
+<stop offset="0" style="stop-color:#A7E722"/>
+<stop offset="0.6242" style="stop-color:#428C0F"/>
+<stop offset="1" style="stop-color:#5CA617"/>
+</radialGradient>
+<path d="M34.924,18.466l0.929,1.55c0,0,15.101-6.784,14.084-8.038c-0.513-0.631-0.577-0.656-1.237-1.263  c-1.985-1.815-4.172-2.531-4.172-2.531c-0.186-0.063-0.481-0.12-0.845-0.161c-0.596,0.004-1.2,0.068-1.806,0.201  c-4.591,1.009-7.57,5.501-6.963,10.257C34.916,18.477,34.921,18.47,34.924,18.466z" fill="url(#SVGID_2_)"/>
+<path d="M17.483,34.105c-0.988-0.139-2.007-0.119-3.027,0.105c-2.418,0.531-4.376,2.066-5.646,4.131  c-0.367,2.35-0.25,4.408-0.05,5.18c0,0,0.34,1.035,1.144,2.377c0.29,0.482,6.54-8.264,8.556-11.107L17.483,34.105z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M18.366,34.135c-0.989-0.139-2.008-0.117-3.029,0.105c-3.313,0.727-5.775,3.332-6.76,6.623  c-0.026,1.025,0.034,1.873,0.127,2.398c0.003,0.012,0.005,0.033,0.01,0.047c0,0,0.34,1.033,1.144,2.379  c0.3,0.498,6.981-8.887,8.75-11.383L18.366,34.135z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
+<radialGradient cx="437.4258" cy="-571.231" gradientTransform="matrix(0.2095 0.9787 -0.9682 0.2124 -629.4526 -270.6148)" gradientUnits="userSpaceOnUse" id="SVGID_3_" r="14.6187">
+<stop offset="0" style="stop-color:#A7E722"/>
+<stop offset="0.6242" style="stop-color:#428C0F"/>
+<stop offset="1" style="stop-color:#5CA617"/>
+</radialGradient>
+<path d="M11.202,47.738c0.616,0.74,0.646,0.953,1.295,1.523c1.194,1.055,9.301-13.611,9.301-13.611  l-2.683-1.719c-0.941-0.111-1.914-0.08-2.89,0.135c-4.777,1.049-7.806,5.869-6.87,10.832C9.749,45.686,10.349,46.709,11.202,47.738z  " fill="url(#SVGID_3_)"/>
+<path d="M49.937,11.978c-0.179-0.22-0.381-0.446-0.578-0.67l-13.944,7.959l0.438,0.749  C35.853,20.016,50.953,13.231,49.937,11.978z" fill="#020202" fill-opacity="0.4" stroke-opacity="0.4"/>
+<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="422.2881" x2="427.4786" y1="-610.9287" y2="-594.4409">
+<stop offset="0" style="stop-color:#C6FF45"/>
+<stop offset="0.6788" style="stop-color:#387300"/>
+<stop offset="1" style="stop-color:#66A00E"/>
+</linearGradient>
+<path d="M35.853,20.016l1.178,1.981c0.302,0.515,0.972,0.674,1.569,0.422l4.09-2.334l8.043-4.668  c0.632-0.363,0.878-1.119,0.549-1.686c0,0-0.333-0.501-1.349-1.751L35.853,20.016z" fill="url(#SVGID_4_)"/>
+<path d="M21.798,35.65l-0.725-0.473l-9.215,13.486c0.216,0.205,0.43,0.414,0.639,0.598  C13.691,50.316,21.798,35.65,21.798,35.65z" fill="#020202" fill-opacity="0.4" stroke-opacity="0.4"/>
+<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="439.6982" x2="451.5232" y1="-577.7549" y2="-564.7323">
+<stop offset="0" style="stop-color:#C6FF45"/>
+<stop offset="0.6788" style="stop-color:#387300"/>
+<stop offset="1" style="stop-color:#66A00E"/>
+</linearGradient>
+<path d="M12.498,49.262c1.193,1.049,1.686,1.369,1.686,1.369c0.567,0.367,1.363,0.17,1.781-0.441l7.9-11.605  c0.419-0.615,0.307-1.412-0.26-1.777l-1.808-1.156L12.498,49.262z" fill="url(#SVGID_5_)"/>
+<rect fill="none" height="60" width="60"/>
+</g>
+<g transform="matrix(0.5 0 0 0.5 30 30)">
+<path d="M30,54.705C16.376,54.705,5.294,43.623,5.294,30  C5.294,16.376,16.376,5.294,30,5.294c13.623,0,24.705,11.083,24.705,24.706C54.705,43.623,43.623,54.705,30,54.705L30,54.705z" style="opacity:0.6;enable-background:new    ;"/>
+<radialGradient cx="2.7217" cy="-242.9165" gradientTransform="matrix(0.618 0 0 -0.618 28.3176 -128.0637)" gradientUnits="userSpaceOnUse" id="SVGID_1__" r="48.9069">
+<stop offset="0" style="stop-color:#94FFFF"/>
+<stop offset="0.5" style="stop-color:#36B5FF"/>
+<stop offset="1" style="stop-color:#1B66D8"/>
+</radialGradient>
+<circle cx="30" cy="30" r="22.941" style="fill:url(#SVGID_1__);"/>
+<path d="M52.122,28.744c-0.509-8.961-6.312-16.677-14.788-19.661l-1.032,0.169  l-5.995-1.147l-7.474,4.456l-0.281,1.878h-4.336l1.714,2.914l-4.643,3.787l-1.082,4.675l3.834,6.795l3.914-0.799l1.429,1.229  l1.117,0.111l0.738,2.883l-0.974,2.527l3.552,9.086h3.623l3.592-2.9v-1.185l0.947-1.47l0.783-0.4  c-0.199,0.303-0.512,0.998-0.512,0.998c-0.033,0.236,0.51,4.862,2.104,4.5c1.211-0.273,5.533-8.303,5.615-9.066  c0.164-1.51-0.658-2.134-1.162-2.37l-0.562-0.265l-2.58,2.587c-0.276,0.021-0.526,0.067-0.751,0.134v-2.147l2.802-2.737l1.426-4.595  l2.173-1.769l-0.477-0.866l1.639-1.578l-0.916-1.669l0.697,0.084l4.082,9.138l0.836-0.666c-0.025-0.447-0.074-0.887-0.125-1.329  L52.122,28.744z M30.275,18.466l-0.341-0.911h2.049l0.997,2.243h-1.484v-1.333H30.275z M37.035,22.983l1.637,2.388l0.111,0.286  l-1.677-1.013l-0.401-1.445L37.035,22.983z M39.496,27.155l0.494,0.494l-0.639,0.143l-0.145-0.177L39.496,27.155z M26.695,11.093  l1.041,1.611l-1.183,0.362l-0.462-0.263L26.695,11.093z" style="opacity:0.3;enable-background:new    ;"/>
+<path d="M30,7.059C17.331,7.059,7.059,17.331,7.059,30  c0,12.674,10.272,22.941,22.941,22.941c12.674,0,22.941-10.268,22.941-22.941C52.941,17.331,42.674,7.059,30,7.059z M30,51.176  C18.323,51.176,8.823,41.677,8.823,30c0-11.677,9.5-21.177,21.177-21.177c11.677,0,21.176,9.5,21.176,21.177  C51.176,41.677,41.677,51.176,30,51.176z" style="opacity:0.3;fill:url(#SVGID_2__);enable-background:new    ;"/>
+<radialGradient cx="182.1514" cy="-162.9028" gradientTransform="matrix(1.7647 0 0 -1.7647 -290.1173 -274.2362)" gradientUnits="userSpaceOnUse" id="SVGID_3__" r="15.4155">
+<stop offset="0" style="stop-color:#94FF26"/>
+<stop offset="0.3152" style="stop-color:#94FF26"/>
+<stop offset="0.7273" style="stop-color:#1FC211"/>
+<stop offset="1" style="stop-color:#0BA133"/>
+</radialGradient>
+<path d="M42.431,36.555l-2.388,2.391c0,0-1.443,0-1.511,0.572c-0.032,0.246-0.111,1.313-0.354,1.863  c-0.48,0.332-1.054,1.434-1.054,1.434s-0.298,2.129,1.296,1.768C40.004,44.224,44.883,37.707,42.431,36.555z" style="fill:url(#SVGID_3__);"/>
+<radialGradient cx="182.1514" cy="-162.9023" gradientTransform="matrix(1.7647 0 0 -1.7647 -290.1173 -274.2362)" gradientUnits="userSpaceOnUse" id="SVGID_4__" r="17.8322">
+<stop offset="0" style="stop-color:#94FF26"/>
+<stop offset="0.3152" style="stop-color:#94FF26"/>
+<stop offset="0.7273" style="stop-color:#1FC211"/>
+<stop offset="1" style="stop-color:#0BA133"/>
+</radialGradient>
+<path d="M37.041,9.916c-0.392,0.148-0.66,0.25-0.66,0.25L30.48,9.037l-2.894,1.811l1.523,2.356  l-2.663,0.819l-1.435-0.819l0.504-1.431l-1.871,1.295l-0.333,2.255h-3.554l1.314,2.238l-4.996,4.073l-0.94,4.066l1.855,3.591  L18.104,30l3.914-0.799l1.43,1.228l1.299,0.127l1.414,5.53l-0.941,2.446l2.079,4.595l0.585,1.908h3.623l2.048-1.108l1.543-1.793  v-2.169l2.936-1.498v-3.213l1.16-2.208l2.59-2.329l0.619-2.7l-3.387,0.755l-0.891-1.085l0.633-1.013l-2.404-1.454l-1.025-3.687  l1.776-1.158l1.636,2.388l0.613,1.572l1.228,1.229l1.435,0.75l1.594-0.258l1.77-1.703l-1.246-2.273l-1.568,0.409L41.146,20.8  l1.349-0.94l4.23,0.512v1.505l3.681,7.585l0.837-0.669C50.746,20.045,44.965,12.704,37.041,9.916z M35.119,20.169l-1.932,0.512  h-2.573v-1.333h-2.46l-1.946,0.514l-2.966-0.821l-0.821-1.535l4.096-0.921h4.098L30,14.945h2.049l1.14,2.561l1.933,0.678v1.985  H35.119z M39.523,16.79l-3.482-0.616v-1.228l1.741-0.41l0.512-0.614l1.229,1.023L39.523,16.79L39.523,16.79z" style="fill:url(#SVGID_4__);"/>
+<rect height="60" style="fill:none;" width="60"/>
+<defs>
+<linearGradient gradientTransform="matrix(1.7647 0 0 -1.7647 -290.1173 -274.2362)" gradientUnits="userSpaceOnUse" id="SVGID_2__" x1="181.4004" x2="181.4004" y1="-159.4634" y2="-185.5335">
+<stop offset="0" style="stop-color:#31A7F8"/>
+<stop offset="0.497" style="stop-color:#1E74DC"/>
+<stop offset="1" style="stop-color:#C8E4EB"/>
+</linearGradient>
+</defs>
+</g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_voip_call_waiting.svg	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="20.3613" x2="26.6141" y1="20.2744" y2="26.4485">
+<stop offset="0" style="stop-color:#FEE16E"/>
+<stop offset="0.5939" style="stop-color:#D96900"/>
+<stop offset="1" style="stop-color:#FED43A"/>
+</linearGradient>
+<path d="M19.081,33.911c2.089-3.597,4.591-6.497,7.281-9.189c2.593-2.591,6.72-5.3,8.562-6.256l9.604-10.282  c-0.845-0.3-3.693-0.464-7.279,0.616c-3.586,1.083-11.736,6.303-16.979,11.547c-5.242,5.246-9.727,12.347-10.581,14.595  c-1.343,3.541-1.221,7.445-0.929,8.581c0,0,0.34,1.034,1.144,2.377C10.248,46.476,19.081,33.911,19.081,33.911z" fill="url(#SVGID_1_)"/>
+<path d="M31.184,20.8c1.488-1.036,2.87-1.882,3.74-2.334L44.271,8.46  c-0.132-0.058-0.209-0.088-0.209-0.088c-0.247-0.088-0.642-0.162-1.124-0.219c-0.793,0.006-1.596,0.093-2.401,0.27  C34.843,9.673,31.019,14.958,31.184,20.8z" fill="#020202" fill-opacity="0.05" stroke-opacity="0.05"/>
+<path d="M31.906,20.306c1.205-0.809,2.291-1.462,3.018-1.84l9.377-10.04  c-0.146-0.063-0.233-0.098-0.233-0.098c-0.231-0.08-0.604-0.152-1.06-0.203c-0.751,0.006-1.51,0.087-2.27,0.253  C35.275,9.576,31.636,14.695,31.906,20.306z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M44.079,8.263c-0.21-0.073-0.55-0.137-0.962-0.186c-0.681,0.006-1.369,0.08-2.06,0.231  c-5.087,1.116-8.426,5.984-7.978,11.233c0.725-0.455,1.363-0.826,1.844-1.076l9.424-10.088C44.178,8.302,44.079,8.263,44.079,8.263z  " fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
+<radialGradient cx="43.6406" cy="10.1128" gradientUnits="userSpaceOnUse" id="SVGID_2_" r="13.348">
+<stop offset="0" style="stop-color:#FEE16E"/>
+<stop offset="0.6061" style="stop-color:#F1830A"/>
+<stop offset="1" style="stop-color:#FED43A"/>
+</radialGradient>
+<path d="M34.924,18.466l0.929,1.55c0,0,15.101-6.784,14.084-8.038c-0.513-0.631-0.577-0.656-1.237-1.263  c-1.985-1.815-4.172-2.531-4.172-2.531c-0.186-0.063-0.481-0.12-0.845-0.161c-0.596,0.004-1.2,0.068-1.806,0.201  c-4.591,1.009-7.57,5.501-6.963,10.257C34.916,18.477,34.921,18.47,34.924,18.466z" fill="url(#SVGID_2_)"/>
+<path d="M17.483,34.106c-0.988-0.14-2.007-0.119-3.027,0.105c-2.418,0.53-4.376,2.066-5.646,4.131  c-0.367,2.35-0.25,4.407-0.05,5.18c0,0,0.34,1.034,1.144,2.377c0.29,0.482,6.54-8.264,8.556-11.107L17.483,34.106z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
+<path d="M18.366,34.136c-0.989-0.14-2.008-0.118-3.029,0.105c-3.313,0.727-5.775,3.332-6.76,6.623  c-0.026,1.025,0.034,1.872,0.127,2.397c0.003,0.013,0.005,0.034,0.01,0.048c0,0,0.34,1.033,1.144,2.379  c0.3,0.498,6.981-8.888,8.75-11.384L18.366,34.136z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
+<radialGradient cx="437.4258" cy="-571.231" gradientTransform="matrix(0.2095 0.9787 -0.9682 0.2124 -629.4526 -270.6148)" gradientUnits="userSpaceOnUse" id="SVGID_3_" r="14.6198">
+<stop offset="0" style="stop-color:#FEE16E"/>
+<stop offset="0.6061" style="stop-color:#F1830A"/>
+<stop offset="1" style="stop-color:#FED43A"/>
+</radialGradient>
+<path d="M11.202,47.738c0.616,0.74,0.646,0.954,1.295,1.524c1.194,1.055,9.301-13.612,9.301-13.612  l-2.683-1.719c-0.941-0.111-1.914-0.079-2.89,0.136c-4.777,1.048-7.806,5.868-6.87,10.832C9.749,45.686,10.349,46.71,11.202,47.738z  " fill="url(#SVGID_3_)"/>
+<path d="M49.937,11.978c-0.179-0.22-0.381-0.446-0.578-0.67l-13.944,7.959l0.438,0.749  C35.853,20.016,50.953,13.231,49.937,11.978z" fill="#020202" fill-opacity="0.5" stroke-opacity="0.5"/>
+<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="422.2881" x2="427.4786" y1="-610.9287" y2="-594.4409">
+<stop offset="0" style="stop-color:#FEE16E"/>
+<stop offset="0.7576" style="stop-color:#D96900"/>
+<stop offset="1" style="stop-color:#FED43A"/>
+</linearGradient>
+<path d="M35.853,20.016l1.178,1.981c0.302,0.515,0.972,0.674,1.569,0.422l4.09-2.334l8.043-4.668  c0.632-0.363,0.878-1.119,0.549-1.686c0,0-0.333-0.501-1.349-1.751L35.853,20.016z" fill="url(#SVGID_4_)"/>
+<path d="M21.798,35.65l-0.725-0.472l-9.215,13.486c0.216,0.204,0.43,0.414,0.639,0.598  C13.691,50.317,21.798,35.65,21.798,35.65z" fill="#020202" fill-opacity="0.5" stroke-opacity="0.5"/>
+<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="439.6982" x2="451.5232" y1="-577.7549" y2="-564.7323">
+<stop offset="0" style="stop-color:#FEE16E"/>
+<stop offset="0.7576" style="stop-color:#D96900"/>
+<stop offset="1" style="stop-color:#FED43A"/>
+</linearGradient>
+<path d="M12.498,49.262c1.193,1.05,1.686,1.37,1.686,1.37c0.567,0.367,1.363,0.169,1.781-0.442l7.9-11.605  c0.419-0.614,0.307-1.411-0.26-1.777l-1.808-1.156L12.498,49.262z" fill="url(#SVGID_5_)"/>
+<rect fill="none" height="60" width="60"/>
+</g>
+<g transform="matrix(0.5 0 0 0.5 30 30)">
+<path d="M30,54.705C16.376,54.705,5.294,43.623,5.294,30  C5.294,16.376,16.376,5.294,30,5.294c13.623,0,24.705,11.083,24.705,24.706C54.705,43.623,43.623,54.705,30,54.705L30,54.705z" style="opacity:0.6;enable-background:new    ;"/>
+<radialGradient cx="2.7217" cy="-242.9165" gradientTransform="matrix(0.618 0 0 -0.618 28.3176 -128.0637)" gradientUnits="userSpaceOnUse" id="SVGID_1__" r="48.9069">
+<stop offset="0" style="stop-color:#94FFFF"/>
+<stop offset="0.5" style="stop-color:#36B5FF"/>
+<stop offset="1" style="stop-color:#1B66D8"/>
+</radialGradient>
+<circle cx="30" cy="30" r="22.941" style="fill:url(#SVGID_1__);"/>
+<path d="M52.122,28.744c-0.509-8.961-6.312-16.677-14.788-19.661l-1.032,0.169  l-5.995-1.147l-7.474,4.456l-0.281,1.878h-4.336l1.714,2.914l-4.643,3.787l-1.082,4.675l3.834,6.795l3.914-0.799l1.429,1.229  l1.117,0.111l0.738,2.883l-0.974,2.527l3.552,9.086h3.623l3.592-2.9v-1.185l0.947-1.47l0.783-0.4  c-0.199,0.303-0.512,0.998-0.512,0.998c-0.033,0.236,0.51,4.862,2.104,4.5c1.211-0.273,5.533-8.303,5.615-9.066  c0.164-1.51-0.658-2.134-1.162-2.37l-0.562-0.265l-2.58,2.587c-0.276,0.021-0.526,0.067-0.751,0.134v-2.147l2.802-2.737l1.426-4.595  l2.173-1.769l-0.477-0.866l1.639-1.578l-0.916-1.669l0.697,0.084l4.082,9.138l0.836-0.666c-0.025-0.447-0.074-0.887-0.125-1.329  L52.122,28.744z M30.275,18.466l-0.341-0.911h2.049l0.997,2.243h-1.484v-1.333H30.275z M37.035,22.983l1.637,2.388l0.111,0.286  l-1.677-1.013l-0.401-1.445L37.035,22.983z M39.496,27.155l0.494,0.494l-0.639,0.143l-0.145-0.177L39.496,27.155z M26.695,11.093  l1.041,1.611l-1.183,0.362l-0.462-0.263L26.695,11.093z" style="opacity:0.3;enable-background:new    ;"/>
+<path d="M30,7.059C17.331,7.059,7.059,17.331,7.059,30  c0,12.674,10.272,22.941,22.941,22.941c12.674,0,22.941-10.268,22.941-22.941C52.941,17.331,42.674,7.059,30,7.059z M30,51.176  C18.323,51.176,8.823,41.677,8.823,30c0-11.677,9.5-21.177,21.177-21.177c11.677,0,21.176,9.5,21.176,21.177  C51.176,41.677,41.677,51.176,30,51.176z" style="opacity:0.3;fill:url(#SVGID_2__);enable-background:new    ;"/>
+<radialGradient cx="182.1514" cy="-162.9028" gradientTransform="matrix(1.7647 0 0 -1.7647 -290.1173 -274.2362)" gradientUnits="userSpaceOnUse" id="SVGID_3__" r="15.4155">
+<stop offset="0" style="stop-color:#94FF26"/>
+<stop offset="0.3152" style="stop-color:#94FF26"/>
+<stop offset="0.7273" style="stop-color:#1FC211"/>
+<stop offset="1" style="stop-color:#0BA133"/>
+</radialGradient>
+<path d="M42.431,36.555l-2.388,2.391c0,0-1.443,0-1.511,0.572c-0.032,0.246-0.111,1.313-0.354,1.863  c-0.48,0.332-1.054,1.434-1.054,1.434s-0.298,2.129,1.296,1.768C40.004,44.224,44.883,37.707,42.431,36.555z" style="fill:url(#SVGID_3__);"/>
+<radialGradient cx="182.1514" cy="-162.9023" gradientTransform="matrix(1.7647 0 0 -1.7647 -290.1173 -274.2362)" gradientUnits="userSpaceOnUse" id="SVGID_4__" r="17.8322">
+<stop offset="0" style="stop-color:#94FF26"/>
+<stop offset="0.3152" style="stop-color:#94FF26"/>
+<stop offset="0.7273" style="stop-color:#1FC211"/>
+<stop offset="1" style="stop-color:#0BA133"/>
+</radialGradient>
+<path d="M37.041,9.916c-0.392,0.148-0.66,0.25-0.66,0.25L30.48,9.037l-2.894,1.811l1.523,2.356  l-2.663,0.819l-1.435-0.819l0.504-1.431l-1.871,1.295l-0.333,2.255h-3.554l1.314,2.238l-4.996,4.073l-0.94,4.066l1.855,3.591  L18.104,30l3.914-0.799l1.43,1.228l1.299,0.127l1.414,5.53l-0.941,2.446l2.079,4.595l0.585,1.908h3.623l2.048-1.108l1.543-1.793  v-2.169l2.936-1.498v-3.213l1.16-2.208l2.59-2.329l0.619-2.7l-3.387,0.755l-0.891-1.085l0.633-1.013l-2.404-1.454l-1.025-3.687  l1.776-1.158l1.636,2.388l0.613,1.572l1.228,1.229l1.435,0.75l1.594-0.258l1.77-1.703l-1.246-2.273l-1.568,0.409L41.146,20.8  l1.349-0.94l4.23,0.512v1.505l3.681,7.585l0.837-0.669C50.746,20.045,44.965,12.704,37.041,9.916z M35.119,20.169l-1.932,0.512  h-2.573v-1.333h-2.46l-1.946,0.514l-2.966-0.821l-0.821-1.535l4.096-0.921h4.098L30,14.945h2.049l1.14,2.561l1.933,0.678v1.985  H35.119z M39.523,16.79l-3.482-0.616v-1.228l1.741-0.41l0.512-0.614l1.229,1.023L39.523,16.79L39.523,16.79z" style="fill:url(#SVGID_4__);"/>
+<rect height="60" style="fill:none;" width="60"/>
+<defs>
+<linearGradient gradientTransform="matrix(1.7647 0 0 -1.7647 -290.1173 -274.2362)" gradientUnits="userSpaceOnUse" id="SVGID_2__" x1="181.4004" x2="181.4004" y1="-159.4634" y2="-185.5335">
+<stop offset="0" style="stop-color:#31A7F8"/>
+<stop offset="0.497" style="stop-color:#1E74DC"/>
+<stop offset="1" style="stop-color:#C8E4EB"/>
+</linearGradient>
+</defs>
+</g>
+</svg>
--- a/phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_voip_dialled_call.svg	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g>
-<rect fill="none" height="60" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="31.3823" x2="31.3823" y1="49.3193" y2="6.7675">
-<stop offset="0" style="stop-color:#004E8C"/>
-<stop offset="1" style="stop-color:#1B66D8"/>
-</linearGradient>
-<circle cx="31.382" cy="28.137" fill="url(#SVGID_1_)" r="21.429"/>
-<radialGradient cx="23.8237" cy="17.7847" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_2_" r="25.9191">
-<stop offset="0" style="stop-color:#94FFFF"/>
-<stop offset="0.5" style="stop-color:#36B5FF"/>
-<stop offset="1" style="stop-color:#1B66D8"/>
-</radialGradient>
-<path d="M52.262,28.137c0,11.533-9.346,20.877-20.879,20.877c-11.533,0-20.882-9.344-20.882-20.877  c0-11.53,9.35-20.88,20.882-20.88C42.917,7.257,52.262,16.607,52.262,28.137z" fill="url(#SVGID_2_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="31.3823" x2="31.3823" y1="7.0732" y2="49.1199">
-<stop offset="0" style="stop-color:#31A7F8"/>
-<stop offset="0.497" style="stop-color:#1E74DC"/>
-<stop offset="1" style="stop-color:#88D6EB"/>
-</linearGradient>
-<path d="M31.383,7.257c-11.533,0-20.882,9.35-20.882,20.88c0,11.533,9.35,20.877,20.882,20.877  c11.533,0,20.879-9.344,20.879-20.877C52.262,16.607,42.917,7.257,31.383,7.257z M31.383,47.188  c-10.843,0-19.664-8.818-19.664-19.659c0-10.843,8.82-19.663,19.664-19.663c10.841,0,19.66,8.82,19.66,19.663  C51.043,38.369,42.224,47.188,31.383,47.188z" fill="url(#SVGID_3_)" fill-opacity="0.3" stroke-opacity="0.3"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="10.8428" x2="14.1621" y1="30.9775" y2="30.9775">
-<stop offset="0" style="stop-color:#58595B"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path d="M12.462,27.796C12.239,27.5,11.737,27.5,11.516,27.5c-0.437,0-0.669,0.312-0.673,0.616  v0.021l0.001,0.031c-0.001,0.537,0.029,1.14,0.094,1.872c0.013,0.138,0.03,0.276,0.047,0.414l0.024,0.201  c0.056,0.434,0.121,0.86,0.195,1.274l0.034,0.182c0.032,0.164,0.063,0.324,0.098,0.484c0.089,0.406,0.198,0.826,0.332,1.291  c0.02,0.066,0.037,0.133,0.055,0.199c0.028,0.109,0.058,0.217,0.091,0.322l0.005,0.014l0.012,0.033  c-0.003-0.01-0.008-0.023-0.01-0.037l1.198-0.08c0.019-0.188,0.024-0.383,0.019-0.576c-0.01-0.303-0.021-0.676-0.107-0.99  l1.112-1.494l0.12-0.162v-0.203v-1.165v-0.252l-0.179-0.178L12.462,27.796z" fill="url(#SVGID_4_)" fill-opacity="0.3" stroke-opacity="0.3"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="17.2432" x2="51.9731" y1="24.897" y2="24.897">
-<stop offset="0" style="stop-color:#58595B"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path d="M51.966,24.045c-0.016-0.079-0.029-0.136-0.043-0.191  c-0.011-0.042-0.021-0.084-0.029-0.125c-0.106-0.495-0.237-1.005-0.392-1.525l-0.017-0.058c-0.033-0.117-0.068-0.234-0.105-0.349  c-0.188-0.588-0.393-1.148-0.608-1.666c-0.027-0.066-0.056-0.125-0.084-0.188l-0.045-0.1c-0.206-0.474-0.436-0.947-0.677-1.403  l-0.03-0.059c-0.047-0.09-0.093-0.181-0.142-0.269c-0.295-0.532-0.604-1.041-0.918-1.512c-0.032-0.049-0.069-0.102-0.106-0.154  c-0.023-0.031-0.045-0.061-0.066-0.092c-0.302-0.437-0.618-0.862-0.946-1.268l-0.064-0.082c-0.044-0.055-0.088-0.111-0.134-0.167  c-0.381-0.456-0.783-0.898-1.199-1.317c-0.056-0.056-0.115-0.115-0.176-0.172l-0.049-0.047c-0.375-0.368-0.774-0.732-1.183-1.074  l-0.081-0.069c-0.041-0.037-0.083-0.073-0.125-0.106c-0.446-0.367-0.931-0.728-1.435-1.075c-0.063-0.042-0.126-0.083-0.19-0.124  l-0.077-0.05c-0.454-0.301-0.928-0.59-1.404-0.853l-0.072-0.042c-0.04-0.023-0.079-0.045-0.119-0.068  c-0.529-0.283-1.081-0.55-1.643-0.792l-0.142-0.057l-0.153-0.063c-0.148-0.061-0.297-0.114-0.443-0.165  c-0.077-0.026-0.152-0.053-0.228-0.08l-0.282-0.105L38.303,8.74c-0.17,0.107-0.84,0.49-1.235,0.715  c-0.438-0.059-1.499-0.192-2.57-0.295c0.33-0.032,0.787-0.069,1.43-0.111l0.09-1.204L35.97,7.832  c-0.039-0.011-0.077-0.021-0.116-0.029l-0.092-0.018l-0.075-0.015c-0.655-0.131-1.271-0.227-1.882-0.291l-0.004-0.001l-0.085-0.009  c-0.698-0.07-1.409-0.106-2.112-0.106c-0.62,0-1.262,0.033-1.964,0.101c-0.109,0.01-0.214,0.021-0.321,0.032  c-0.693,0.078-1.3,0.17-1.873,0.286l-0.02,0.003l-0.015,0.002c-0.604,0.125-1.211,0.281-1.856,0.477  c-0.058,0.018-0.116,0.037-0.173,0.055l-0.131,0.043c-0.547,0.176-1.082,0.371-1.596,0.582c-0.042,0.018-0.071,0.029-0.1,0.04  l-0.078,0.031c-0.564,0.24-1.128,0.512-1.688,0.812c-0.06,0.031-0.118,0.066-0.177,0.099L21.542,9.97  c-0.157,0.087-0.315,0.185-0.473,0.283l-0.203,0.127l-1.118,0.684l1.242,0.415c0.186,0.063,0.385,0.093,0.592,0.093  c0.67,0,1.317-0.329,1.838-0.593c0.209-0.105,0.521-0.264,0.648-0.288c0.152,0.045,0.306,0.068,0.458,0.068  c0.569,0,1.035-0.306,1.446-0.578l0.111-0.072c0.134-0.043,0.362-0.128,0.818-0.299c0.465-0.174,1.314-0.493,1.54-0.546  c0.44-0.005,0.966-0.068,1.339-0.3c0.352,0.058,0.977,0.157,1.619,0.24c-0.047,0.029-0.093,0.059-0.132,0.097  c-0.209,0.192-1.335,0.533-1.68,0.578c-0.647,0.081-0.908,0.408-1.012,0.666c-0.135,0.336-0.054,0.672,0.078,0.946  c-0.245,0.162-0.545,0.342-0.804,0.479c0.001-0.006,0.003-0.012,0.004-0.02c0.093-0.517,0.16-0.89-0.091-1.189  c-0.128-0.153-0.317-0.241-0.519-0.241c-0.295,0-0.525,0.183-0.711,0.362c-0.52,0.502-0.834,1.129-0.952,1.365l-0.022,0.044  l-0.019,0.035c-0.225,0.431-0.317,0.737-0.192,1.688c-0.055,0.04-0.219,0.102-0.445,0.102c-0.03,0-0.058-0.002-0.079-0.003  c-0.146-0.158-0.349-0.248-0.576-0.248l0,0c-0.524,0-1.238,0.589-2.123,1.754l-0.284,0.374l0.289,0.371l0.27,0.343  c-4.216,3.259-4.248,3.444-4.292,3.717c-0.007,0.024-0.044,0.137-0.095,0.293c-0.628,1.952-0.977,3.413-0.637,4.194  c0.784,1.813,1.669,3.505,2.815,3.599c0.101,0.008,0.212,0.012,0.332,0.012c1.051,0,2.753-0.318,3.572-0.485  c0.151,0.283,0.335,0.614,0.438,0.795l0.181,0.323l0.37-0.012c0.004,0,0.199-0.006,0.448-0.006c0.286,0,0.478,0.008,0.602,0.017  c0.446,1.307,1.3,4.317,1.142,4.944L27.272,34.1c-1.441,2.16,0.306,4.975,1.145,6.328c0.066,0.107,0.126,0.203,0.177,0.287  c0.324,0.922,0.716,1.531,1.545,1.531c0.062,0,0.124-0.004,0.188-0.008c0.047-0.002,0.096-0.004,0.146-0.004  c0.092,0,0.157,0.01,0.226,0.035l0.075,0.027l0.08,0.006c0.155,0.014,0.306,0.035,0.453,0.057c0.255,0.035,0.519,0.07,0.788,0.07  c0.721,0,1.293-0.271,1.787-0.855c0.019-0.002,0.036-0.004,0.055-0.006c0.518-0.072,0.712-0.332,0.778-0.564  c0.038-0.039,0.089-0.086,0.131-0.125c0.204-0.188,0.447-0.41,0.615-0.674c0.075-0.045,0.161-0.096,0.258-0.152  c0.167-0.104,0.355-0.217,0.504-0.293c0.131-0.041,0.247-0.117,0.334-0.225c0.209-0.258,0.166-0.549,0.131-0.783  c-0.035-0.242-0.071-0.492,0.06-0.758c0.738-0.355,2.051-1.23,2.263-1.375l-0.001,0.018c-0.014,0.117-0.048,0.43-0.1,0.629  c-0.279,0.279-0.513,0.703-0.586,0.846l-0.049,0.094l-0.015,0.104c-0.019,0.137-0.094,0.85,0.306,1.311  c0.202,0.23,0.49,0.359,0.813,0.359c0.103,0,0.21-0.014,0.319-0.039c1.027-0.232,2.85-2.703,2.998-4.066  c0.072-0.656-0.185-1.172-0.704-1.416l-0.387-0.184l-0.304,0.303l-1.125,1.125c-0.38,0.035-0.678,0.148-0.879,0.326  c0.012-0.48-0.035-0.973-0.086-1.451c-0.155-1.447-0.185-2.369,0.703-2.996l0.045-0.033l0.038-0.039  c0.321-0.326,0.676-0.611,1.052-0.914c0.88-0.707,1.79-1.438,2.332-2.759l0.022-0.056c0.174-0.451,0.437-1.132,0.081-1.651  c-0.089-0.128-0.275-0.327-0.624-0.397c0.462-0.186,0.816-0.332,0.851-0.346l0.107-0.044l0.083-0.08l1.898-1.822l0.278-0.268  l-0.122-0.366c-0.017-0.047-0.12-0.335-0.411-0.747c0.554,0.075,1.029,0.208,1.185,0.326c0.057,0.124,0.171,0.396,0.292,0.683  c2.089,4.924,2.382,5.178,2.926,5.187c0.021,0,0.037,0.002,0.051,0.003c0.044,0.003,0.083,0.005,0.119,0.005  c0.31,0,0.486-0.157,0.564-0.252c0.227-0.274,0.163-0.608,0.14-0.734l-0.009-0.043c-0.025-0.294-0.008-1.618,0.034-2.706  c0.003,0.002,0.004,0.006,0.006,0.01l1.12-0.445L51.966,24.045z M35.508,18.021c-0.087,0.003-0.181,0.008-0.282,0.012  c-0.322,0.015-0.688,0.031-1.053,0.031c-0.955,0-1.174-0.118-1.196-0.131c-0.113-0.082-0.229-0.144-0.35-0.188  c0.216-0.048,0.464-0.214,0.719-0.708c0.251,0.487,0.592,0.917,1.115,0.917c0.142,0,0.277-0.034,0.406-0.101  C35.043,17.856,35.333,17.957,35.508,18.021z M35.133,15.357c-0.072,0-0.131-0.003-0.176-0.007c0.049-0.128,0.107-0.202,0.154-0.244  c0.06,0.093,0.14,0.175,0.232,0.245C35.27,15.355,35.2,15.357,35.133,15.357z M31.331,16.635c0.327,0.641,0.569,0.917,0.762,1.037  c-0.475,0.038-0.833,0.339-1.126,0.625c-0.206-0.068-0.565-0.286-0.672-0.438c-0.063-0.089-0.138-0.166-0.221-0.232  C30.593,17.479,31.049,16.998,31.331,16.635z M29.523,16.163l-0.679-0.033l-2.278-0.111c0.278-0.229,0.541-0.444,0.697-0.57  c0.042-0.015,0.205-0.06,0.605-0.06c0.242,0,0.474,0.017,0.62,0.029L29.523,16.163z" fill="url(#SVGID_5_)" fill-opacity="0.3" stroke-opacity="0.3"/>
-<radialGradient cx="24.4912" cy="10.4414" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_6_" r="23.6744">
-<stop offset="0" style="stop-color:#7AF200"/>
-<stop offset="0.3152" style="stop-color:#7AF200"/>
-<stop offset="0.7273" style="stop-color:#1CAD0F"/>
-<stop offset="1" style="stop-color:#007A3A"/>
-</radialGradient>
-<path d="M11.451,28.125C11.451,28.125,11.451,28.125,11.451,28.125c0,0.008,0.001,0.012,0.001,0.018  c0,0.622,0.039,1.236,0.093,1.844c0.018,0.198,0.047,0.398,0.069,0.598c0.053,0.417,0.116,0.83,0.19,1.238  c0.042,0.215,0.081,0.434,0.127,0.646c0.094,0.422,0.203,0.838,0.321,1.248c0.05,0.17,0.089,0.342,0.141,0.508  c0.007,0.018,0.015,0.033,0.019,0.051c0.017-0.16,0.021-0.326,0.017-0.496c-0.04-1.199-0.232-1.045-0.232-1.045l1.356-1.822v-1.165  l-1.589-1.589C11.964,28.159,11.452,28.079,11.451,28.125z" fill="url(#SVGID_6_)"/>
-<radialGradient cx="24.4868" cy="10.4395" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_7_" r="23.6775">
-<stop offset="0" style="stop-color:#7AF200"/>
-<stop offset="0.3152" style="stop-color:#7AF200"/>
-<stop offset="0.7273" style="stop-color:#1CAD0F"/>
-<stop offset="1" style="stop-color:#007A3A"/>
-</radialGradient>
-<path d="M24.212,10.099c0.587,0.193,1.066-0.2,1.613-0.549c0.193-0.04,2.338-0.896,2.57-0.896  c0.231,0,1.011-0.03,1.204-0.34c0,0,3.357,0.584,3.863,0.389c0.275-0.107,1.433-0.2,2.425-0.264  c-0.056-0.012-0.106-0.029-0.162-0.041c-0.054-0.011-0.105-0.019-0.161-0.03c-0.623-0.126-1.252-0.226-1.894-0.29  c-0.006,0-0.01,0-0.016-0.002c-0.674-0.068-1.358-0.104-2.052-0.104c-0.644,0-1.277,0.038-1.906,0.098  c-0.11,0.011-0.221,0.022-0.331,0.035c-0.608,0.067-1.211,0.155-1.801,0.274c-0.01,0.003-0.021,0.004-0.031,0.006  c-0.612,0.127-1.213,0.283-1.802,0.464c-0.102,0.03-0.199,0.064-0.302,0.096c-0.522,0.168-1.038,0.356-1.544,0.564  c-0.06,0.026-0.12,0.048-0.18,0.072c-0.557,0.238-1.1,0.501-1.63,0.784c-0.08,0.043-0.156,0.089-0.234,0.134  c-0.227,0.125-0.44,0.267-0.66,0.402C22.273,11.265,23.635,9.904,24.212,10.099z" fill="url(#SVGID_7_)"/>
-<radialGradient cx="24.4863" cy="10.437" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_8_" r="23.6745">
-<stop offset="0" style="stop-color:#B2F56E"/>
-<stop offset="0.3152" style="stop-color:#B2F56E"/>
-<stop offset="0.7273" style="stop-color:#5CBF1B"/>
-<stop offset="1" style="stop-color:#227A00"/>
-</radialGradient>
-<path d="M51.366,24.146c-0.021-0.102-0.049-0.197-0.069-0.297c-0.106-0.499-0.233-0.99-0.378-1.474  c-0.038-0.13-0.076-0.264-0.118-0.395c-0.176-0.549-0.371-1.09-0.59-1.616c-0.04-0.093-0.085-0.184-0.125-0.275  c-0.202-0.464-0.421-0.918-0.657-1.363c-0.056-0.106-0.109-0.215-0.166-0.319c-0.279-0.502-0.575-0.993-0.893-1.469  c-0.054-0.083-0.114-0.161-0.17-0.243c-0.291-0.422-0.596-0.831-0.916-1.228c-0.064-0.079-0.127-0.16-0.194-0.24  c-0.368-0.442-0.756-0.868-1.161-1.277c-0.069-0.07-0.143-0.14-0.215-0.208c-0.369-0.363-0.755-0.714-1.153-1.047  c-0.067-0.056-0.131-0.116-0.198-0.171c-0.448-0.366-0.915-0.714-1.395-1.043c-0.084-0.057-0.17-0.112-0.256-0.167  c-0.442-0.294-0.898-0.571-1.366-0.83c-0.063-0.035-0.123-0.073-0.187-0.108c-0.52-0.278-1.05-0.533-1.594-0.768  c-0.097-0.041-0.194-0.079-0.29-0.12c-0.211-0.087-0.432-0.156-0.646-0.235c-0.255,0.163-1.438,0.832-1.438,0.832  s-5.141-0.702-5.491-0.353c-0.352,0.353-1.721,0.71-2.033,0.751c-0.311,0.04-0.956,0.206-0.182,1.161  c-0.116,0.118-2.325,1.657-2.325,0.957s0.494-1.953-0.2-1.282c-0.498,0.482-0.796,1.135-0.86,1.257  c-0.163,0.312-0.263,0.461-0.145,1.357s-1.43,0.891-1.534,0.659c-0.276-0.622-1.809,1.394-1.809,1.394l0.646,0.828  c0,0-4.51,3.474-4.548,3.707c-0.04,0.234-1.164,3.25-0.775,4.147c0.39,0.897,1.376,3.158,2.307,3.233  c1.222,0.101,4.186-0.559,4.186-0.559c0.08,0.196,0.638,1.189,0.638,1.189s1.453-0.048,1.534,0.11  c0.026,0.053,1.75,5.122,1.182,5.794c-1.357,2.033,0.775,5.012,1.369,6.02c0.594,1.73,0.977,0.955,1.758,1.238  c0.962,0.084,1.772,0.439,2.589-0.611c0.237-0.195,0.641-0.041,0.641-0.313c0-0.152,0.698-0.598,0.878-1.018  c0.188-0.088,0.674-0.414,1.003-0.572c0.299-0.02-0.283-0.82,0.309-1.666c0.64-0.252,2.364-1.414,2.364-1.414  c0.078-1.705-0.839-3.811,0.873-5.02c1.104-1.126,2.553-1.767,3.255-3.479c0.194-0.506,0.628-1.542-0.619-1.231  c-1.173,0.295-2.48,0.362-1.861-0.154c-0.071-0.634-0.85-0.932-1.55-1.552c-0.361-0.854-0.93-2.378-0.93-2.378l-1.24-1.885  l0.155-0.389l1.474,2.171l1.474,1.781c0.542,1.783,1.007,1.939,1.007,1.939c0.815-0.288,2.753-1.086,2.753-1.086l1.898-1.822  c0,0-0.195-0.581-0.967-1.316l-0.584-0.349c-0.126,0.357-0.802,0.491-0.802,0.491l-1.641-1.964l0.61-0.123l0.471,0.896l1.128,0.39  c0,0,0.313-0.229,0.893,0.371c0.473-0.039,2.318,0.09,2.749,0.636c0.085,0.109,2.287,5.607,2.721,5.614  c0.19,0.002,0.329,0.077,0.267-0.256c-0.078-0.156,0-3.609,0.116-4.349c0.295-0.628,0.343-0.003,1.04,1.188  C51.374,24.204,51.372,24.175,51.366,24.146z M31.993,10.823c0.154-0.459,1.047-0.615,1.047-0.615s-0.256,0.473-0.197,0.716  c0.06,0.247-0.407,0.402-0.46,0.982c-0.051,0.578-1.117,0.239-1.204,0.036C31.09,11.74,31.835,11.281,31.993,10.823z M35.816,18.624  c-0.661,0-2.645,0.196-3.19-0.194c-0.546-0.389-0.97,0.04-1.362,0.43c-0.258,0.253-1.193-0.26-1.468-0.649  c-0.271-0.39-1.188-0.361-1.188-0.361l0.208-1.111l-2.637-0.128l-1.499,0.439l-1.41,0.041l0.79-0.376l0.983-0.232  c0,0,1.431-1.176,1.859-1.526c0.363-0.297,1.811-0.129,1.811-0.129l1.589,1.146c0,0-0.353,0.898-0.508,1.091  c0.583-0.039,1.269-1.099,1.269-1.099c-1.239-1.138-1.188-1.524-1.188-1.524l1.633,1.146l0.016,0.01c0,0,0.661,1.558,0.937,1.558  c0.271,0,0.619-1.073,0.619-1.073l0.465-0.117c0.207,0.492,0.595,1.603,1.059,1.343c0.269-0.147,0.71-0.013,1.215,0.181  c0.509,0.195,0.854-0.104,1.267,0.258C37.03,19.349,36.089,18.702,35.816,18.624z M36.853,15.943  c-0.681-0.259-2.984,0.586-2.47-0.796c0.275-0.746,0.981-0.901,1.223-0.405c0.063,0.204,0.83,0.519,0.824,0.09  c-0.006-0.431,0.771-0.659,0.883-0.338C36.899,14.791,38.932,16.341,36.853,15.943z M41.192,17.252  c-0.377-0.304,0.169-0.564-0.387-1.041c-0.798-0.684-1.421-0.978-0.334-1.532c1.341-0.168,0.218,0.428,0.44,0.786  c0.119,0.19,0.796,0.828,1.325,1.61C42.676,17.725,41.567,17.555,41.192,17.252z" fill="url(#SVGID_8_)"/>
-<radialGradient cx="24.4839" cy="10.4453" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_9_" r="23.6688">
-<stop offset="0" style="stop-color:#7AF200"/>
-<stop offset="0.3152" style="stop-color:#7AF200"/>
-<stop offset="0.7273" style="stop-color:#1CAD0F"/>
-<stop offset="1" style="stop-color:#007A3A"/>
-</radialGradient>
-<path d="M41.733,35.008l-1.293,1.291c0,0-0.778,0-0.815,0.313c-0.017,0.133-0.063,0.709-0.192,1.006  c-0.258,0.18-0.569,0.775-0.569,0.775s-0.158,1.15,0.699,0.953C40.42,39.152,43.059,35.633,41.733,35.008z" fill="url(#SVGID_9_)"/>
-<path d="M31.68,48.668c1.546,0,3.049-0.174,4.499-0.49c-0.039-0.049-0.071-0.1-0.114-0.145  l-7.534-7.756c-0.434-0.447-1.031-0.705-1.638-0.705c-0.57,0-1.102,0.221-1.5,0.625l-1.144,1.18l-0.472,0.477l-0.436,0.447  c-1.654-1.605-3.133-3.443-4.739-5.873c-0.888-1.348-1.653-2.988-2.138-4.123l-0.178-0.424c-0.001,0-0.242-0.598-0.324-0.811  l-0.027-0.068c-0.067-0.176-0.127-0.341-0.184-0.5l-0.025-0.069l1.843-0.641c1.017-0.344,1.593-1.403,1.363-2.555l-0.007-0.036  l-1.154-3.523l-2.274-6.787c-0.162-0.486-0.47-0.886-0.858-1.16c-2.416,3.407-3.841,7.565-3.841,12.059  C10.797,39.322,20.147,48.668,31.68,48.668z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M31.68,48.668c1.301,0,2.57-0.125,3.806-0.352l-7.394-7.613c-0.32-0.33-0.758-0.52-1.199-0.52  c-0.404,0-0.779,0.156-1.061,0.441l-1.148,1.182l-0.467,0.473l-0.424,0.436l0.003,0.004l-0.435,0.445  c-1.866-1.736-3.509-3.734-5.269-6.4c-0.91-1.381-1.694-3.059-2.192-4.221l-0.158-0.375l-0.024-0.059c0,0-0.243-0.602-0.327-0.816  l-0.029-0.072c-0.068-0.18-0.129-0.347-0.19-0.513c0,0-0.12-0.337-0.145-0.41l0.071-0.295l2.272-0.791  c0.721-0.244,1.127-1.009,0.966-1.819l-0.007-0.036l-1.142-3.485l-2.274-6.789c-0.119-0.357-0.343-0.65-0.626-0.851  c-2.204,3.31-3.492,7.283-3.492,11.557C10.797,39.322,20.147,48.668,31.68,48.668z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
-<radialGradient cx="-859.7427" cy="-265.1074" gradientTransform="matrix(0.9999 -0.0111 0.0111 0.9999 905.1068 277.0371)" gradientUnits="userSpaceOnUse" id="SVGID_10_" r="34.2211">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.8364" style="stop-color:#E9F0F2"/>
-<stop offset="0.8909" style="stop-color:#AAB1B5"/>
-<stop offset="0.9515" style="stop-color:#7C878C"/>
-<stop offset="1" style="stop-color:#838F94"/>
-</radialGradient>
-<path d="M23.387,44.016c-2.39-2.133-4.191-4.469-5.806-6.914c-1.552-2.357-2.958-5.889-3.393-7.428  l-6.272-8.836c-0.357,0.592-0.921,2.715-0.661,5.588c0.262,2.872,2.939,9.828,6.083,14.596c3.146,4.766,7.81,9.248,9.374,10.24  c2.462,1.561,5.427,2.074,6.329,2.029c0,0,0.833-0.098,1.97-0.496C31.5,52.625,23.387,44.016,23.387,44.016z" fill="url(#SVGID_10_)"/>
-<path d="M15.369,32.857c-0.55-1.283-0.976-2.456-1.18-3.184l-6.104-8.599c-0.064,0.09-0.099,0.144-0.099,0.144  c-0.104,0.172-0.22,0.458-0.338,0.813c-0.118,0.599-0.177,1.219-0.167,1.854C7.541,28.374,10.936,32.078,15.369,32.857z" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M15.108,32.234c-0.423-1.033-0.749-1.953-0.919-2.561l-6.125-8.627c-0.069,0.101-0.109,0.161-0.109,0.161  c-0.097,0.162-0.208,0.434-0.318,0.769c-0.111,0.567-0.168,1.151-0.159,1.751C7.536,28.033,10.834,31.572,15.108,32.234z" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M7.907,21.188c-0.088,0.148-0.188,0.394-0.289,0.698c-0.102,0.514-0.152,1.046-0.144,1.59  c0.054,4.01,3.21,7.283,7.24,7.757c-0.232-0.618-0.412-1.157-0.526-1.559l-6.154-8.67C7.951,21.121,7.907,21.188,7.907,21.188z" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="-891.105" cy="-262.4795" gradientTransform="matrix(1.0009 -0.0086 0.0135 0.9911 906.6143 271.6763)" gradientUnits="userSpaceOnUse" id="SVGID_11_" r="11.8382">
-<stop offset="0" style="stop-color:#D1D8D9"/>
-<stop offset="0.0424" style="stop-color:#D1D8D9"/>
-<stop offset="0.4" style="stop-color:#BBC0C2"/>
-<stop offset="0.7333" style="stop-color:#7C8C91"/>
-<stop offset="1" style="stop-color:#A7B3B7"/>
-</radialGradient>
-<path d="M14.188,29.674l1.312-0.461c0,0-2.781-12.441-3.885-11.868c-0.555,0.29-0.549,0.448-1.11,0.853  c-1.676,1.219-2.589,2.641-2.589,2.641c-0.077,0.13-0.165,0.345-0.252,0.613c-0.088,0.45-0.134,0.916-0.128,1.392  c0.05,3.62,2.979,6.563,6.661,6.841C14.194,29.681,14.189,29.677,14.188,29.674z" fill="url(#SVGID_11_)"/>
-<path d="M23.289,45.25c-0.259,0.727-0.4,1.498-0.39,2.303c0.025,1.906,0.882,3.621,2.242,4.898  c1.716,0.641,3.287,0.871,3.9,0.84c0,0,0.833-0.098,1.97-0.496c0.409-0.143-5.222-6.213-7.055-8.172L23.289,45.25z" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M23.448,44.59c-0.261,0.725-0.401,1.496-0.391,2.301c0.036,2.613,1.621,4.875,3.95,6.125  c0.771,0.18,1.418,0.264,1.829,0.275c0.011,0,0.026,0.002,0.037,0c0,0,0.832-0.096,1.972-0.494c0.422-0.148-5.624-6.641-7.233-8.363  L23.448,44.59z" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="-877.4263" cy="-238.3691" gradientTransform="matrix(1.0009 -0.0086 0.0135 0.9911 906.6143 271.6763)" gradientUnits="userSpaceOnUse" id="SVGID_12_" r="12.0474">
-<stop offset="0" style="stop-color:#D1D8D9"/>
-<stop offset="0.0424" style="stop-color:#D1D8D9"/>
-<stop offset="0.4" style="stop-color:#BBC0C2"/>
-<stop offset="0.7333" style="stop-color:#7C8C91"/>
-<stop offset="1" style="stop-color:#A7B3B7"/>
-</radialGradient>
-<path d="M32.6,52.1c0.653-0.35,0.819-0.34,1.351-0.74c0.98-0.74-8.83-9.123-8.83-9.123l-1.712,1.756  c-0.229,0.695-0.355,1.434-0.345,2.203c0.051,3.766,3.219,6.797,7.107,6.857C30.828,52.877,31.693,52.584,32.6,52.1z" fill="url(#SVGID_12_)"/>
-<path d="M14.866,29.428l0.634-0.215c0,0-2.781-12.441-3.885-11.868  c-0.291,0.151-0.427,0.268-0.573,0.401L14.866,29.428z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientTransform="matrix(0.9999 -0.0111 0.0111 0.9999 905.1068 277.0361)" gradientUnits="userSpaceOnUse" id="SVGID_13_" x1="-889.625" x2="-885.2537" y1="-270.9771" y2="-257.0911">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.4" style="stop-color:#D4D9DB"/>
-<stop offset="0.7333" style="stop-color:#98AAAD"/>
-<stop offset="1" style="stop-color:#D0DADE"/>
-</linearGradient>
-<path d="M15.5,29.214l1.677-0.583c0.435-0.147,0.659-0.629,0.562-1.119l-1.129-3.446l-2.275-6.79  c-0.177-0.533-0.71-0.836-1.188-0.676c0,0-0.429,0.175-1.529,0.747L15.5,29.214z" fill="url(#SVGID_13_)"/>
-<path d="M25.121,42.236l-0.468,0.473l8.748,9.039c0.188-0.131,0.379-0.26,0.55-0.389  C34.931,50.619,25.121,42.236,25.121,42.236z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientTransform="matrix(0.9999 -0.0111 0.0111 0.9999 905.1068 277.0366)" gradientUnits="userSpaceOnUse" id="SVGID_14_" x1="-876.2178" x2="-867.1104" y1="-245.4277" y2="-235.398">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.4" style="stop-color:#D4D9DB"/>
-<stop offset="0.7333" style="stop-color:#98AAAD"/>
-<stop offset="1" style="stop-color:#D0DADE"/>
-</linearGradient>
-<path d="M33.95,51.357c0.978-0.738,1.295-1.059,1.295-1.059c0.364-0.373,0.338-1.002-0.059-1.412  l-7.534-7.756c-0.397-0.412-1.016-0.451-1.38-0.08l-1.151,1.186L33.95,51.357z" fill="url(#SVGID_14_)"/>
-</g>
-<g>
-<linearGradient gradientTransform="matrix(1 1.000000e-004 -1.000000e-004 1 -2.3655 -29.0779)" gradientUnits="userSpaceOnUse" id="SVGID_1__" x1="17.3477" x2="17.3477" y1="31.0703" y2="55.8327">
-<stop offset="0" style="stop-color:#45E8FF"/>
-<stop offset="0.1455" style="stop-color:#45E8FF"/>
-<stop offset="0.5576" style="stop-color:#30A4D5"/>
-<stop offset="1" style="stop-color:#1347BA"/>
-</linearGradient>
-<polygon fill="url(#SVGID_1__)" points="25.381,14.288 15.027,3.528 4.573,14.288 10.207,14.288 10.21,26.582 19.865,26.584   19.863,14.288 "/>
-<linearGradient gradientTransform="matrix(1 1.000000e-004 -1.000000e-004 1 -2.3655 -29.0779)" gradientUnits="userSpaceOnUse" id="SVGID_2__" x1="17.3701" x2="17.3701" y1="32.3115" y2="43.6498">
-<stop offset="0" style="stop-color:#B3FCFF"/>
-<stop offset="0.4182" style="stop-color:#B3FCFF"/>
-<stop offset="1" style="stop-color:#5FBAD8"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2__)" points="4.897,14.286 15.026,3.888 25.104,14.288 25.801,14.288 15.027,3.17 4.199,14.286 "/>
-<line fill="#1D4489" x1="10.21" x2="19.865" y1="26.578" y2="26.58"/>
-<polygon fill="#33AEDB" points="19.867,26.83 10.21,26.828 10.21,26.328 19.866,26.33 19.867,26.83 "/>
-<rect fill="none" height="30" width="30"/>
-</g>
-</svg>
--- a/phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_voip_missed_call.svg	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g>
-<rect fill="none" height="60" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="31.3823" x2="31.3823" y1="49.3193" y2="6.7675">
-<stop offset="0" style="stop-color:#004E8C"/>
-<stop offset="1" style="stop-color:#1B66D8"/>
-</linearGradient>
-<circle cx="31.382" cy="28.137" fill="url(#SVGID_1_)" r="21.429"/>
-<radialGradient cx="23.8237" cy="17.7847" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_2_" r="25.9191">
-<stop offset="0" style="stop-color:#94FFFF"/>
-<stop offset="0.5" style="stop-color:#36B5FF"/>
-<stop offset="1" style="stop-color:#1B66D8"/>
-</radialGradient>
-<path d="M52.262,28.137c0,11.533-9.346,20.877-20.879,20.877c-11.533,0-20.882-9.344-20.882-20.877  c0-11.53,9.35-20.88,20.882-20.88C42.917,7.257,52.262,16.607,52.262,28.137z" fill="url(#SVGID_2_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="31.3823" x2="31.3823" y1="7.0732" y2="49.1199">
-<stop offset="0" style="stop-color:#31A7F8"/>
-<stop offset="0.497" style="stop-color:#1E74DC"/>
-<stop offset="1" style="stop-color:#88D6EB"/>
-</linearGradient>
-<path d="M31.383,7.257c-11.533,0-20.882,9.35-20.882,20.88c0,11.533,9.35,20.877,20.882,20.877  c11.533,0,20.879-9.344,20.879-20.877C52.262,16.607,42.917,7.257,31.383,7.257z M31.383,47.188  c-10.843,0-19.664-8.818-19.664-19.659c0-10.843,8.82-19.663,19.664-19.663c10.841,0,19.66,8.82,19.66,19.663  C51.043,38.369,42.224,47.188,31.383,47.188z" fill="url(#SVGID_3_)" fill-opacity="0.3" stroke-opacity="0.3"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="10.8428" x2="14.1621" y1="30.9775" y2="30.9775">
-<stop offset="0" style="stop-color:#58595B"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path d="M12.462,27.796C12.239,27.5,11.737,27.5,11.516,27.5c-0.437,0-0.669,0.312-0.673,0.616  v0.021l0.001,0.031c-0.001,0.537,0.029,1.14,0.094,1.872c0.013,0.138,0.03,0.276,0.047,0.414l0.024,0.201  c0.056,0.434,0.121,0.86,0.195,1.274l0.034,0.182c0.032,0.164,0.063,0.324,0.098,0.484c0.089,0.406,0.198,0.826,0.332,1.291  c0.02,0.066,0.037,0.133,0.055,0.199c0.028,0.109,0.058,0.217,0.091,0.322l0.005,0.014l0.012,0.033  c-0.003-0.01-0.008-0.023-0.01-0.037l1.198-0.08c0.019-0.188,0.024-0.383,0.019-0.576c-0.01-0.303-0.021-0.676-0.107-0.99  l1.112-1.494l0.12-0.162v-0.203v-1.165v-0.252l-0.179-0.178L12.462,27.796z" fill="url(#SVGID_4_)" fill-opacity="0.3" stroke-opacity="0.3"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="17.2432" x2="51.9731" y1="24.897" y2="24.897">
-<stop offset="0" style="stop-color:#58595B"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path d="M51.966,24.045c-0.016-0.079-0.029-0.136-0.043-0.191  c-0.011-0.042-0.021-0.084-0.029-0.125c-0.106-0.495-0.237-1.005-0.392-1.525l-0.017-0.058c-0.033-0.117-0.068-0.234-0.105-0.349  c-0.188-0.588-0.393-1.148-0.608-1.666c-0.027-0.066-0.056-0.125-0.084-0.188l-0.045-0.1c-0.206-0.474-0.436-0.947-0.677-1.403  l-0.03-0.059c-0.047-0.09-0.093-0.181-0.142-0.269c-0.295-0.532-0.604-1.041-0.918-1.512c-0.032-0.049-0.069-0.102-0.106-0.154  c-0.023-0.031-0.045-0.061-0.066-0.092c-0.302-0.437-0.618-0.862-0.946-1.268l-0.064-0.082c-0.044-0.055-0.088-0.111-0.134-0.167  c-0.381-0.456-0.783-0.898-1.199-1.317c-0.056-0.056-0.115-0.115-0.176-0.172l-0.049-0.047c-0.375-0.368-0.774-0.732-1.183-1.074  l-0.081-0.069c-0.041-0.037-0.083-0.073-0.125-0.106c-0.446-0.367-0.931-0.728-1.435-1.075c-0.063-0.042-0.126-0.083-0.19-0.124  l-0.077-0.05c-0.454-0.301-0.928-0.59-1.404-0.853l-0.072-0.042c-0.04-0.023-0.079-0.045-0.119-0.068  c-0.529-0.283-1.081-0.55-1.643-0.792l-0.142-0.057l-0.153-0.063c-0.148-0.061-0.297-0.114-0.443-0.165  c-0.077-0.026-0.152-0.053-0.228-0.08l-0.282-0.105L38.303,8.74c-0.17,0.107-0.84,0.49-1.235,0.715  c-0.438-0.059-1.499-0.192-2.57-0.295c0.33-0.032,0.787-0.069,1.43-0.111l0.09-1.204L35.97,7.832  c-0.039-0.011-0.077-0.021-0.116-0.029l-0.092-0.018l-0.075-0.015c-0.655-0.131-1.271-0.227-1.882-0.291l-0.004-0.001l-0.085-0.009  c-0.698-0.07-1.409-0.106-2.112-0.106c-0.62,0-1.262,0.033-1.964,0.101c-0.109,0.01-0.214,0.021-0.321,0.032  c-0.693,0.078-1.3,0.17-1.873,0.286l-0.02,0.003l-0.015,0.002c-0.604,0.125-1.211,0.281-1.856,0.477  c-0.058,0.018-0.116,0.037-0.173,0.055l-0.131,0.043c-0.547,0.176-1.082,0.371-1.596,0.582c-0.042,0.018-0.071,0.029-0.1,0.04  l-0.078,0.031c-0.564,0.24-1.128,0.512-1.688,0.812c-0.06,0.031-0.118,0.066-0.177,0.099L21.542,9.97  c-0.157,0.087-0.315,0.185-0.473,0.283l-0.203,0.127l-1.118,0.684l1.242,0.415c0.186,0.063,0.385,0.093,0.592,0.093  c0.67,0,1.317-0.329,1.838-0.593c0.209-0.105,0.521-0.264,0.648-0.288c0.152,0.045,0.306,0.068,0.458,0.068  c0.569,0,1.035-0.306,1.446-0.578l0.111-0.072c0.134-0.043,0.362-0.128,0.818-0.299c0.465-0.174,1.314-0.493,1.54-0.546  c0.44-0.005,0.966-0.068,1.339-0.3c0.352,0.058,0.977,0.157,1.619,0.24c-0.047,0.029-0.093,0.059-0.132,0.097  c-0.209,0.192-1.335,0.533-1.68,0.578c-0.647,0.081-0.908,0.408-1.012,0.666c-0.135,0.336-0.054,0.672,0.078,0.946  c-0.245,0.162-0.545,0.342-0.804,0.479c0.001-0.006,0.003-0.012,0.004-0.02c0.093-0.517,0.16-0.89-0.091-1.189  c-0.128-0.153-0.317-0.241-0.519-0.241c-0.295,0-0.525,0.183-0.711,0.362c-0.52,0.502-0.834,1.129-0.952,1.365l-0.022,0.044  l-0.019,0.035c-0.225,0.431-0.317,0.737-0.192,1.688c-0.055,0.04-0.219,0.102-0.445,0.102c-0.03,0-0.058-0.002-0.079-0.003  c-0.146-0.158-0.349-0.248-0.576-0.248l0,0c-0.524,0-1.238,0.589-2.123,1.754l-0.284,0.374l0.289,0.371l0.27,0.343  c-4.216,3.259-4.248,3.444-4.292,3.717c-0.007,0.024-0.044,0.137-0.095,0.293c-0.628,1.952-0.977,3.413-0.637,4.194  c0.784,1.813,1.669,3.505,2.815,3.599c0.101,0.008,0.212,0.012,0.332,0.012c1.051,0,2.753-0.318,3.572-0.485  c0.151,0.283,0.335,0.614,0.438,0.795l0.181,0.323l0.37-0.012c0.004,0,0.199-0.006,0.448-0.006c0.286,0,0.478,0.008,0.602,0.017  c0.446,1.307,1.3,4.317,1.142,4.944L27.272,34.1c-1.441,2.16,0.306,4.975,1.145,6.328c0.066,0.107,0.126,0.203,0.177,0.287  c0.324,0.922,0.716,1.531,1.545,1.531c0.062,0,0.124-0.004,0.188-0.008c0.047-0.002,0.096-0.004,0.146-0.004  c0.092,0,0.157,0.01,0.226,0.035l0.075,0.027l0.08,0.006c0.155,0.014,0.306,0.035,0.453,0.057c0.255,0.035,0.519,0.07,0.788,0.07  c0.721,0,1.293-0.271,1.787-0.855c0.019-0.002,0.036-0.004,0.055-0.006c0.518-0.072,0.712-0.332,0.778-0.564  c0.038-0.039,0.089-0.086,0.131-0.125c0.204-0.188,0.447-0.41,0.615-0.674c0.075-0.045,0.161-0.096,0.258-0.152  c0.167-0.104,0.355-0.217,0.504-0.293c0.131-0.041,0.247-0.117,0.334-0.225c0.209-0.258,0.166-0.549,0.131-0.783  c-0.035-0.242-0.071-0.492,0.06-0.758c0.738-0.355,2.051-1.23,2.263-1.375l-0.001,0.018c-0.014,0.117-0.048,0.43-0.1,0.629  c-0.279,0.279-0.513,0.703-0.586,0.846l-0.049,0.094l-0.015,0.104c-0.019,0.137-0.094,0.85,0.306,1.311  c0.202,0.23,0.49,0.359,0.813,0.359c0.103,0,0.21-0.014,0.319-0.039c1.027-0.232,2.85-2.703,2.998-4.066  c0.072-0.656-0.185-1.172-0.704-1.416l-0.387-0.184l-0.304,0.303l-1.125,1.125c-0.38,0.035-0.678,0.148-0.879,0.326  c0.012-0.48-0.035-0.973-0.086-1.451c-0.155-1.447-0.185-2.369,0.703-2.996l0.045-0.033l0.038-0.039  c0.321-0.326,0.676-0.611,1.052-0.914c0.88-0.707,1.79-1.438,2.332-2.759l0.022-0.056c0.174-0.451,0.437-1.132,0.081-1.651  c-0.089-0.128-0.275-0.327-0.624-0.397c0.462-0.186,0.816-0.332,0.851-0.346l0.107-0.044l0.083-0.08l1.898-1.822l0.278-0.268  l-0.122-0.366c-0.017-0.047-0.12-0.335-0.411-0.747c0.554,0.075,1.029,0.208,1.185,0.326c0.057,0.124,0.171,0.396,0.292,0.683  c2.089,4.924,2.382,5.178,2.926,5.187c0.021,0,0.037,0.002,0.051,0.003c0.044,0.003,0.083,0.005,0.119,0.005  c0.31,0,0.486-0.157,0.564-0.252c0.227-0.274,0.163-0.608,0.14-0.734l-0.009-0.043c-0.025-0.294-0.008-1.618,0.034-2.706  c0.003,0.002,0.004,0.006,0.006,0.01l1.12-0.445L51.966,24.045z M35.508,18.021c-0.087,0.003-0.181,0.008-0.282,0.012  c-0.322,0.015-0.688,0.031-1.053,0.031c-0.955,0-1.174-0.118-1.196-0.131c-0.113-0.082-0.229-0.144-0.35-0.188  c0.216-0.048,0.464-0.214,0.719-0.708c0.251,0.487,0.592,0.917,1.115,0.917c0.142,0,0.277-0.034,0.406-0.101  C35.043,17.856,35.333,17.957,35.508,18.021z M35.133,15.357c-0.072,0-0.131-0.003-0.176-0.007c0.049-0.128,0.107-0.202,0.154-0.244  c0.06,0.093,0.14,0.175,0.232,0.245C35.27,15.355,35.2,15.357,35.133,15.357z M31.331,16.635c0.327,0.641,0.569,0.917,0.762,1.037  c-0.475,0.038-0.833,0.339-1.126,0.625c-0.206-0.068-0.565-0.286-0.672-0.438c-0.063-0.089-0.138-0.166-0.221-0.232  C30.593,17.479,31.049,16.998,31.331,16.635z M29.523,16.163l-0.679-0.033l-2.278-0.111c0.278-0.229,0.541-0.444,0.697-0.57  c0.042-0.015,0.205-0.06,0.605-0.06c0.242,0,0.474,0.017,0.62,0.029L29.523,16.163z" fill="url(#SVGID_5_)" fill-opacity="0.3" stroke-opacity="0.3"/>
-<radialGradient cx="24.4912" cy="10.4414" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_6_" r="23.6744">
-<stop offset="0" style="stop-color:#7AF200"/>
-<stop offset="0.3152" style="stop-color:#7AF200"/>
-<stop offset="0.7273" style="stop-color:#1CAD0F"/>
-<stop offset="1" style="stop-color:#007A3A"/>
-</radialGradient>
-<path d="M11.451,28.125C11.451,28.125,11.451,28.125,11.451,28.125c0,0.008,0.001,0.012,0.001,0.018  c0,0.622,0.039,1.236,0.093,1.844c0.018,0.198,0.047,0.398,0.069,0.598c0.053,0.417,0.116,0.83,0.19,1.238  c0.042,0.215,0.081,0.434,0.127,0.646c0.094,0.422,0.203,0.838,0.321,1.248c0.05,0.17,0.089,0.342,0.141,0.508  c0.007,0.018,0.015,0.033,0.019,0.051c0.017-0.16,0.021-0.326,0.017-0.496c-0.04-1.199-0.232-1.045-0.232-1.045l1.356-1.822v-1.165  l-1.589-1.589C11.964,28.159,11.452,28.079,11.451,28.125z" fill="url(#SVGID_6_)"/>
-<radialGradient cx="24.4868" cy="10.4395" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_7_" r="23.6775">
-<stop offset="0" style="stop-color:#7AF200"/>
-<stop offset="0.3152" style="stop-color:#7AF200"/>
-<stop offset="0.7273" style="stop-color:#1CAD0F"/>
-<stop offset="1" style="stop-color:#007A3A"/>
-</radialGradient>
-<path d="M24.212,10.099c0.587,0.193,1.066-0.2,1.613-0.549c0.193-0.04,2.338-0.896,2.57-0.896  c0.231,0,1.011-0.03,1.204-0.34c0,0,3.357,0.584,3.863,0.389c0.275-0.107,1.433-0.2,2.425-0.264  c-0.056-0.012-0.106-0.029-0.162-0.041c-0.054-0.011-0.105-0.019-0.161-0.03c-0.623-0.126-1.252-0.226-1.894-0.29  c-0.006,0-0.01,0-0.016-0.002c-0.674-0.068-1.358-0.104-2.052-0.104c-0.644,0-1.277,0.038-1.906,0.098  c-0.11,0.011-0.221,0.022-0.331,0.035c-0.608,0.067-1.211,0.155-1.801,0.274c-0.01,0.003-0.021,0.004-0.031,0.006  c-0.612,0.127-1.213,0.283-1.802,0.464c-0.102,0.03-0.199,0.064-0.302,0.096c-0.522,0.168-1.038,0.356-1.544,0.564  c-0.06,0.026-0.12,0.048-0.18,0.072c-0.557,0.238-1.1,0.501-1.63,0.784c-0.08,0.043-0.156,0.089-0.234,0.134  c-0.227,0.125-0.44,0.267-0.66,0.402C22.273,11.265,23.635,9.904,24.212,10.099z" fill="url(#SVGID_7_)"/>
-<radialGradient cx="24.4863" cy="10.437" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_8_" r="23.6745">
-<stop offset="0" style="stop-color:#B2F56E"/>
-<stop offset="0.3152" style="stop-color:#B2F56E"/>
-<stop offset="0.7273" style="stop-color:#5CBF1B"/>
-<stop offset="1" style="stop-color:#227A00"/>
-</radialGradient>
-<path d="M51.366,24.146c-0.021-0.102-0.049-0.197-0.069-0.297c-0.106-0.499-0.233-0.99-0.378-1.474  c-0.038-0.13-0.076-0.264-0.118-0.395c-0.176-0.549-0.371-1.09-0.59-1.616c-0.04-0.093-0.085-0.184-0.125-0.275  c-0.202-0.464-0.421-0.918-0.657-1.363c-0.056-0.106-0.109-0.215-0.166-0.319c-0.279-0.502-0.575-0.993-0.893-1.469  c-0.054-0.083-0.114-0.161-0.17-0.243c-0.291-0.422-0.596-0.831-0.916-1.228c-0.064-0.079-0.127-0.16-0.194-0.24  c-0.368-0.442-0.756-0.868-1.161-1.277c-0.069-0.07-0.143-0.14-0.215-0.208c-0.369-0.363-0.755-0.714-1.153-1.047  c-0.067-0.056-0.131-0.116-0.198-0.171c-0.448-0.366-0.915-0.714-1.395-1.043c-0.084-0.057-0.17-0.112-0.256-0.167  c-0.442-0.294-0.898-0.571-1.366-0.83c-0.063-0.035-0.123-0.073-0.187-0.108c-0.52-0.278-1.05-0.533-1.594-0.768  c-0.097-0.041-0.194-0.079-0.29-0.12c-0.211-0.087-0.432-0.156-0.646-0.235c-0.255,0.163-1.438,0.832-1.438,0.832  s-5.141-0.702-5.491-0.353c-0.352,0.353-1.721,0.71-2.033,0.751c-0.311,0.04-0.956,0.206-0.182,1.161  c-0.116,0.118-2.325,1.657-2.325,0.957s0.494-1.953-0.2-1.282c-0.498,0.482-0.796,1.135-0.86,1.257  c-0.163,0.312-0.263,0.461-0.145,1.357s-1.43,0.891-1.534,0.659c-0.276-0.622-1.809,1.394-1.809,1.394l0.646,0.828  c0,0-4.51,3.474-4.548,3.707c-0.04,0.234-1.164,3.25-0.775,4.147c0.39,0.897,1.376,3.158,2.307,3.233  c1.222,0.101,4.186-0.559,4.186-0.559c0.08,0.196,0.638,1.189,0.638,1.189s1.453-0.048,1.534,0.11  c0.026,0.053,1.75,5.122,1.182,5.794c-1.357,2.033,0.775,5.012,1.369,6.02c0.594,1.73,0.977,0.955,1.758,1.238  c0.962,0.084,1.772,0.439,2.589-0.611c0.237-0.195,0.641-0.041,0.641-0.313c0-0.152,0.698-0.598,0.878-1.018  c0.188-0.088,0.674-0.414,1.003-0.572c0.299-0.02-0.283-0.82,0.309-1.666c0.64-0.252,2.364-1.414,2.364-1.414  c0.078-1.705-0.839-3.811,0.873-5.02c1.104-1.126,2.553-1.767,3.255-3.479c0.194-0.506,0.628-1.542-0.619-1.231  c-1.173,0.295-2.48,0.362-1.861-0.154c-0.071-0.634-0.85-0.932-1.55-1.552c-0.361-0.854-0.93-2.378-0.93-2.378l-1.24-1.885  l0.155-0.389l1.474,2.171l1.474,1.781c0.542,1.783,1.007,1.939,1.007,1.939c0.815-0.288,2.753-1.086,2.753-1.086l1.898-1.822  c0,0-0.195-0.581-0.967-1.316l-0.584-0.349c-0.126,0.357-0.802,0.491-0.802,0.491l-1.641-1.964l0.61-0.123l0.471,0.896l1.128,0.39  c0,0,0.313-0.229,0.893,0.371c0.473-0.039,2.318,0.09,2.749,0.636c0.085,0.109,2.287,5.607,2.721,5.614  c0.19,0.002,0.329,0.077,0.267-0.256c-0.078-0.156,0-3.609,0.116-4.349c0.295-0.628,0.343-0.003,1.04,1.188  C51.374,24.204,51.372,24.175,51.366,24.146z M31.993,10.823c0.154-0.459,1.047-0.615,1.047-0.615s-0.256,0.473-0.197,0.716  c0.06,0.247-0.407,0.402-0.46,0.982c-0.051,0.578-1.117,0.239-1.204,0.036C31.09,11.74,31.835,11.281,31.993,10.823z M35.816,18.624  c-0.661,0-2.645,0.196-3.19-0.194c-0.546-0.389-0.97,0.04-1.362,0.43c-0.258,0.253-1.193-0.26-1.468-0.649  c-0.271-0.39-1.188-0.361-1.188-0.361l0.208-1.111l-2.637-0.128l-1.499,0.439l-1.41,0.041l0.79-0.376l0.983-0.232  c0,0,1.431-1.176,1.859-1.526c0.363-0.297,1.811-0.129,1.811-0.129l1.589,1.146c0,0-0.353,0.898-0.508,1.091  c0.583-0.039,1.269-1.099,1.269-1.099c-1.239-1.138-1.188-1.524-1.188-1.524l1.633,1.146l0.016,0.01c0,0,0.661,1.558,0.937,1.558  c0.271,0,0.619-1.073,0.619-1.073l0.465-0.117c0.207,0.492,0.595,1.603,1.059,1.343c0.269-0.147,0.71-0.013,1.215,0.181  c0.509,0.195,0.854-0.104,1.267,0.258C37.03,19.349,36.089,18.702,35.816,18.624z M36.853,15.943  c-0.681-0.259-2.984,0.586-2.47-0.796c0.275-0.746,0.981-0.901,1.223-0.405c0.063,0.204,0.83,0.519,0.824,0.09  c-0.006-0.431,0.771-0.659,0.883-0.338C36.899,14.791,38.932,16.341,36.853,15.943z M41.192,17.252  c-0.377-0.304,0.169-0.564-0.387-1.041c-0.798-0.684-1.421-0.978-0.334-1.532c1.341-0.168,0.218,0.428,0.44,0.786  c0.119,0.19,0.796,0.828,1.325,1.61C42.676,17.725,41.567,17.555,41.192,17.252z" fill="url(#SVGID_8_)"/>
-<radialGradient cx="24.4839" cy="10.4453" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_9_" r="23.6688">
-<stop offset="0" style="stop-color:#7AF200"/>
-<stop offset="0.3152" style="stop-color:#7AF200"/>
-<stop offset="0.7273" style="stop-color:#1CAD0F"/>
-<stop offset="1" style="stop-color:#007A3A"/>
-</radialGradient>
-<path d="M41.733,35.008l-1.293,1.291c0,0-0.778,0-0.815,0.313c-0.017,0.133-0.063,0.709-0.192,1.006  c-0.258,0.18-0.569,0.775-0.569,0.775s-0.158,1.15,0.699,0.953C40.42,39.152,43.059,35.633,41.733,35.008z" fill="url(#SVGID_9_)"/>
-<path d="M31.68,48.668c1.546,0,3.049-0.174,4.499-0.49c-0.039-0.049-0.071-0.1-0.114-0.145  l-7.534-7.756c-0.434-0.447-1.031-0.705-1.638-0.705c-0.57,0-1.102,0.221-1.5,0.625l-1.144,1.18l-0.472,0.477l-0.436,0.447  c-1.654-1.605-3.133-3.443-4.739-5.873c-0.888-1.348-1.653-2.988-2.138-4.123l-0.178-0.424c-0.001,0-0.242-0.598-0.324-0.811  l-0.027-0.068c-0.067-0.176-0.127-0.341-0.184-0.5l-0.025-0.069l1.843-0.641c1.017-0.344,1.593-1.403,1.363-2.555l-0.007-0.036  l-1.154-3.523l-2.274-6.787c-0.162-0.486-0.47-0.886-0.858-1.16c-2.416,3.407-3.841,7.565-3.841,12.059  C10.797,39.322,20.147,48.668,31.68,48.668z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M31.68,48.668c1.301,0,2.57-0.125,3.806-0.352l-7.394-7.613c-0.32-0.33-0.758-0.52-1.199-0.52  c-0.404,0-0.779,0.156-1.061,0.441l-1.148,1.182l-0.467,0.473l-0.424,0.436l0.003,0.004l-0.435,0.445  c-1.866-1.736-3.509-3.734-5.269-6.4c-0.91-1.381-1.694-3.059-2.192-4.221l-0.158-0.375l-0.024-0.059c0,0-0.243-0.602-0.327-0.816  l-0.029-0.072c-0.068-0.18-0.129-0.347-0.19-0.513c0,0-0.12-0.337-0.145-0.41l0.071-0.295l2.272-0.791  c0.721-0.244,1.127-1.009,0.966-1.819l-0.007-0.036l-1.142-3.485l-2.274-6.789c-0.119-0.357-0.343-0.65-0.626-0.851  c-2.204,3.31-3.492,7.283-3.492,11.557C10.797,39.322,20.147,48.668,31.68,48.668z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
-<radialGradient cx="-859.7427" cy="-265.1074" gradientTransform="matrix(0.9999 -0.0111 0.0111 0.9999 905.1068 277.0371)" gradientUnits="userSpaceOnUse" id="SVGID_10_" r="34.2211">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.8364" style="stop-color:#E9F0F2"/>
-<stop offset="0.8909" style="stop-color:#AAB1B5"/>
-<stop offset="0.9515" style="stop-color:#7C878C"/>
-<stop offset="1" style="stop-color:#838F94"/>
-</radialGradient>
-<path d="M23.387,44.016c-2.39-2.133-4.191-4.469-5.806-6.914c-1.552-2.357-2.958-5.889-3.393-7.428  l-6.272-8.836c-0.357,0.592-0.921,2.715-0.661,5.588c0.262,2.872,2.939,9.828,6.083,14.596c3.146,4.766,7.81,9.248,9.374,10.24  c2.462,1.561,5.427,2.074,6.329,2.029c0,0,0.833-0.098,1.97-0.496C31.5,52.625,23.387,44.016,23.387,44.016z" fill="url(#SVGID_10_)"/>
-<path d="M15.369,32.857c-0.55-1.283-0.976-2.456-1.18-3.184l-6.104-8.599c-0.064,0.09-0.099,0.144-0.099,0.144  c-0.104,0.172-0.22,0.458-0.338,0.813c-0.118,0.599-0.177,1.219-0.167,1.854C7.541,28.374,10.936,32.078,15.369,32.857z" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M15.108,32.234c-0.423-1.033-0.749-1.953-0.919-2.561l-6.125-8.627c-0.069,0.101-0.109,0.161-0.109,0.161  c-0.097,0.162-0.208,0.434-0.318,0.769c-0.111,0.567-0.168,1.151-0.159,1.751C7.536,28.033,10.834,31.572,15.108,32.234z" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M7.907,21.188c-0.088,0.148-0.188,0.394-0.289,0.698c-0.102,0.514-0.152,1.046-0.144,1.59  c0.054,4.01,3.21,7.283,7.24,7.757c-0.232-0.618-0.412-1.157-0.526-1.559l-6.154-8.67C7.951,21.121,7.907,21.188,7.907,21.188z" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="-891.105" cy="-262.4795" gradientTransform="matrix(1.0009 -0.0086 0.0135 0.9911 906.6143 271.6763)" gradientUnits="userSpaceOnUse" id="SVGID_11_" r="11.8382">
-<stop offset="0" style="stop-color:#D1D8D9"/>
-<stop offset="0.0424" style="stop-color:#D1D8D9"/>
-<stop offset="0.4" style="stop-color:#BBC0C2"/>
-<stop offset="0.7333" style="stop-color:#7C8C91"/>
-<stop offset="1" style="stop-color:#A7B3B7"/>
-</radialGradient>
-<path d="M14.188,29.674l1.312-0.461c0,0-2.781-12.441-3.885-11.868c-0.555,0.29-0.549,0.448-1.11,0.853  c-1.676,1.219-2.589,2.641-2.589,2.641c-0.077,0.13-0.165,0.345-0.252,0.613c-0.088,0.45-0.134,0.916-0.128,1.392  c0.05,3.62,2.979,6.563,6.661,6.841C14.194,29.681,14.189,29.677,14.188,29.674z" fill="url(#SVGID_11_)"/>
-<path d="M23.289,45.25c-0.259,0.727-0.4,1.498-0.39,2.303c0.025,1.906,0.882,3.621,2.242,4.898  c1.716,0.641,3.287,0.871,3.9,0.84c0,0,0.833-0.098,1.97-0.496c0.409-0.143-5.222-6.213-7.055-8.172L23.289,45.25z" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M23.448,44.59c-0.261,0.725-0.401,1.496-0.391,2.301c0.036,2.613,1.621,4.875,3.95,6.125  c0.771,0.18,1.418,0.264,1.829,0.275c0.011,0,0.026,0.002,0.037,0c0,0,0.832-0.096,1.972-0.494c0.422-0.148-5.624-6.641-7.233-8.363  L23.448,44.59z" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="-877.4263" cy="-238.3691" gradientTransform="matrix(1.0009 -0.0086 0.0135 0.9911 906.6143 271.6763)" gradientUnits="userSpaceOnUse" id="SVGID_12_" r="12.0474">
-<stop offset="0" style="stop-color:#D1D8D9"/>
-<stop offset="0.0424" style="stop-color:#D1D8D9"/>
-<stop offset="0.4" style="stop-color:#BBC0C2"/>
-<stop offset="0.7333" style="stop-color:#7C8C91"/>
-<stop offset="1" style="stop-color:#A7B3B7"/>
-</radialGradient>
-<path d="M32.6,52.1c0.653-0.35,0.819-0.34,1.351-0.74c0.98-0.74-8.83-9.123-8.83-9.123l-1.712,1.756  c-0.229,0.695-0.355,1.434-0.345,2.203c0.051,3.766,3.219,6.797,7.107,6.857C30.828,52.877,31.693,52.584,32.6,52.1z" fill="url(#SVGID_12_)"/>
-<path d="M14.866,29.428l0.634-0.215c0,0-2.781-12.441-3.885-11.868  c-0.291,0.151-0.427,0.268-0.573,0.401L14.866,29.428z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientTransform="matrix(0.9999 -0.0111 0.0111 0.9999 905.1068 277.0361)" gradientUnits="userSpaceOnUse" id="SVGID_13_" x1="-889.625" x2="-885.2537" y1="-270.9771" y2="-257.0911">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.4" style="stop-color:#D4D9DB"/>
-<stop offset="0.7333" style="stop-color:#98AAAD"/>
-<stop offset="1" style="stop-color:#D0DADE"/>
-</linearGradient>
-<path d="M15.5,29.214l1.677-0.583c0.435-0.147,0.659-0.629,0.562-1.119l-1.129-3.446l-2.275-6.79  c-0.177-0.533-0.71-0.836-1.188-0.676c0,0-0.429,0.175-1.529,0.747L15.5,29.214z" fill="url(#SVGID_13_)"/>
-<path d="M25.121,42.236l-0.468,0.473l8.748,9.039c0.188-0.131,0.379-0.26,0.55-0.389  C34.931,50.619,25.121,42.236,25.121,42.236z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientTransform="matrix(0.9999 -0.0111 0.0111 0.9999 905.1068 277.0366)" gradientUnits="userSpaceOnUse" id="SVGID_14_" x1="-876.2178" x2="-867.1104" y1="-245.4277" y2="-235.398">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.4" style="stop-color:#D4D9DB"/>
-<stop offset="0.7333" style="stop-color:#98AAAD"/>
-<stop offset="1" style="stop-color:#D0DADE"/>
-</linearGradient>
-<path d="M33.95,51.357c0.978-0.738,1.295-1.059,1.295-1.059c0.364-0.373,0.338-1.002-0.059-1.412  l-7.534-7.756c-0.397-0.412-1.016-0.451-1.38-0.08l-1.151,1.186L33.95,51.357z" fill="url(#SVGID_14_)"/>
-</g>
-<g>
-<rect fill="none" height="30" width="30"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1__" x1="15.0005" x2="15.0005" y1="4.5283" y2="27.0492">
-<stop offset="0" style="stop-color:#FF7042"/>
-<stop offset="1" style="stop-color:#991B23"/>
-</linearGradient>
-<path d="M19.018,16.846v-4.316h4.535l-8.512-8.844l-8.592,8.844h4.631v4.316  c0,7.293,6.068,9.467,11.908,9.467v-6.422C21.189,19.891,19.018,19.002,19.018,16.846z" fill="url(#SVGID_1__)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2__" x1="15.0005" x2="15.0005" y1="4.0146" y2="12.8168">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#991B23"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2__)" points="15.041,4.508 22.762,12.529 23.553,12.529 15.041,3.686 6.449,12.529 7.248,12.529 "/>
-</g>
-</svg>
--- a/phoneuis/bubblemanager2/bubblecore/themes/icons/hbdefault/scalable/qtg_large_voip_received_call.svg	Fri Apr 16 14:58:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g>
-<rect fill="none" height="60" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="31.3823" x2="31.3823" y1="49.3193" y2="6.7675">
-<stop offset="0" style="stop-color:#004E8C"/>
-<stop offset="1" style="stop-color:#1B66D8"/>
-</linearGradient>
-<circle cx="31.382" cy="28.137" fill="url(#SVGID_1_)" r="21.429"/>
-<radialGradient cx="23.8237" cy="17.7847" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_2_" r="25.9191">
-<stop offset="0" style="stop-color:#94FFFF"/>
-<stop offset="0.5" style="stop-color:#36B5FF"/>
-<stop offset="1" style="stop-color:#1B66D8"/>
-</radialGradient>
-<path d="M52.262,28.137c0,11.533-9.346,20.877-20.879,20.877c-11.533,0-20.882-9.344-20.882-20.877  c0-11.53,9.35-20.88,20.882-20.88C42.917,7.257,52.262,16.607,52.262,28.137z" fill="url(#SVGID_2_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="31.3823" x2="31.3823" y1="7.0732" y2="49.1199">
-<stop offset="0" style="stop-color:#31A7F8"/>
-<stop offset="0.497" style="stop-color:#1E74DC"/>
-<stop offset="1" style="stop-color:#88D6EB"/>
-</linearGradient>
-<path d="M31.383,7.257c-11.533,0-20.882,9.35-20.882,20.88c0,11.533,9.35,20.877,20.882,20.877  c11.533,0,20.879-9.344,20.879-20.877C52.262,16.607,42.917,7.257,31.383,7.257z M31.383,47.188  c-10.843,0-19.664-8.818-19.664-19.659c0-10.843,8.82-19.663,19.664-19.663c10.841,0,19.66,8.82,19.66,19.663  C51.043,38.369,42.224,47.188,31.383,47.188z" fill="url(#SVGID_3_)" fill-opacity="0.3" stroke-opacity="0.3"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="10.8428" x2="14.1621" y1="30.9775" y2="30.9775">
-<stop offset="0" style="stop-color:#58595B"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path d="M12.462,27.796C12.239,27.5,11.737,27.5,11.516,27.5c-0.437,0-0.669,0.312-0.673,0.616  v0.021l0.001,0.031c-0.001,0.537,0.029,1.14,0.094,1.872c0.013,0.138,0.03,0.276,0.047,0.414l0.024,0.201  c0.056,0.434,0.121,0.86,0.195,1.274l0.034,0.182c0.032,0.164,0.063,0.324,0.098,0.484c0.089,0.406,0.198,0.826,0.332,1.291  c0.02,0.066,0.037,0.133,0.055,0.199c0.028,0.109,0.058,0.217,0.091,0.322l0.005,0.014l0.012,0.033  c-0.003-0.01-0.008-0.023-0.01-0.037l1.198-0.08c0.019-0.188,0.024-0.383,0.019-0.576c-0.01-0.303-0.021-0.676-0.107-0.99  l1.112-1.494l0.12-0.162v-0.203v-1.165v-0.252l-0.179-0.178L12.462,27.796z" fill="url(#SVGID_4_)" fill-opacity="0.3" stroke-opacity="0.3"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="17.2432" x2="51.9731" y1="24.897" y2="24.897">
-<stop offset="0" style="stop-color:#58595B"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path d="M51.966,24.045c-0.016-0.079-0.029-0.136-0.043-0.191  c-0.011-0.042-0.021-0.084-0.029-0.125c-0.106-0.495-0.237-1.005-0.392-1.525l-0.017-0.058c-0.033-0.117-0.068-0.234-0.105-0.349  c-0.188-0.588-0.393-1.148-0.608-1.666c-0.027-0.066-0.056-0.125-0.084-0.188l-0.045-0.1c-0.206-0.474-0.436-0.947-0.677-1.403  l-0.03-0.059c-0.047-0.09-0.093-0.181-0.142-0.269c-0.295-0.532-0.604-1.041-0.918-1.512c-0.032-0.049-0.069-0.102-0.106-0.154  c-0.023-0.031-0.045-0.061-0.066-0.092c-0.302-0.437-0.618-0.862-0.946-1.268l-0.064-0.082c-0.044-0.055-0.088-0.111-0.134-0.167  c-0.381-0.456-0.783-0.898-1.199-1.317c-0.056-0.056-0.115-0.115-0.176-0.172l-0.049-0.047c-0.375-0.368-0.774-0.732-1.183-1.074  l-0.081-0.069c-0.041-0.037-0.083-0.073-0.125-0.106c-0.446-0.367-0.931-0.728-1.435-1.075c-0.063-0.042-0.126-0.083-0.19-0.124  l-0.077-0.05c-0.454-0.301-0.928-0.59-1.404-0.853l-0.072-0.042c-0.04-0.023-0.079-0.045-0.119-0.068  c-0.529-0.283-1.081-0.55-1.643-0.792l-0.142-0.057l-0.153-0.063c-0.148-0.061-0.297-0.114-0.443-0.165  c-0.077-0.026-0.152-0.053-0.228-0.08l-0.282-0.105L38.303,8.74c-0.17,0.107-0.84,0.49-1.235,0.715  c-0.438-0.059-1.499-0.192-2.57-0.295c0.33-0.032,0.787-0.069,1.43-0.111l0.09-1.204L35.97,7.832  c-0.039-0.011-0.077-0.021-0.116-0.029l-0.092-0.018l-0.075-0.015c-0.655-0.131-1.271-0.227-1.882-0.291l-0.004-0.001l-0.085-0.009  c-0.698-0.07-1.409-0.106-2.112-0.106c-0.62,0-1.262,0.033-1.964,0.101c-0.109,0.01-0.214,0.021-0.321,0.032  c-0.693,0.078-1.3,0.17-1.873,0.286l-0.02,0.003l-0.015,0.002c-0.604,0.125-1.211,0.281-1.856,0.477  c-0.058,0.018-0.116,0.037-0.173,0.055l-0.131,0.043c-0.547,0.176-1.082,0.371-1.596,0.582c-0.042,0.018-0.071,0.029-0.1,0.04  l-0.078,0.031c-0.564,0.24-1.128,0.512-1.688,0.812c-0.06,0.031-0.118,0.066-0.177,0.099L21.542,9.97  c-0.157,0.087-0.315,0.185-0.473,0.283l-0.203,0.127l-1.118,0.684l1.242,0.415c0.186,0.063,0.385,0.093,0.592,0.093  c0.67,0,1.317-0.329,1.838-0.593c0.209-0.105,0.521-0.264,0.648-0.288c0.152,0.045,0.306,0.068,0.458,0.068  c0.569,0,1.035-0.306,1.446-0.578l0.111-0.072c0.134-0.043,0.362-0.128,0.818-0.299c0.465-0.174,1.314-0.493,1.54-0.546  c0.44-0.005,0.966-0.068,1.339-0.3c0.352,0.058,0.977,0.157,1.619,0.24c-0.047,0.029-0.093,0.059-0.132,0.097  c-0.209,0.192-1.335,0.533-1.68,0.578c-0.647,0.081-0.908,0.408-1.012,0.666c-0.135,0.336-0.054,0.672,0.078,0.946  c-0.245,0.162-0.545,0.342-0.804,0.479c0.001-0.006,0.003-0.012,0.004-0.02c0.093-0.517,0.16-0.89-0.091-1.189  c-0.128-0.153-0.317-0.241-0.519-0.241c-0.295,0-0.525,0.183-0.711,0.362c-0.52,0.502-0.834,1.129-0.952,1.365l-0.022,0.044  l-0.019,0.035c-0.225,0.431-0.317,0.737-0.192,1.688c-0.055,0.04-0.219,0.102-0.445,0.102c-0.03,0-0.058-0.002-0.079-0.003  c-0.146-0.158-0.349-0.248-0.576-0.248l0,0c-0.524,0-1.238,0.589-2.123,1.754l-0.284,0.374l0.289,0.371l0.27,0.343  c-4.216,3.259-4.248,3.444-4.292,3.717c-0.007,0.024-0.044,0.137-0.095,0.293c-0.628,1.952-0.977,3.413-0.637,4.194  c0.784,1.813,1.669,3.505,2.815,3.599c0.101,0.008,0.212,0.012,0.332,0.012c1.051,0,2.753-0.318,3.572-0.485  c0.151,0.283,0.335,0.614,0.438,0.795l0.181,0.323l0.37-0.012c0.004,0,0.199-0.006,0.448-0.006c0.286,0,0.478,0.008,0.602,0.017  c0.446,1.307,1.3,4.317,1.142,4.944L27.272,34.1c-1.441,2.16,0.306,4.975,1.145,6.328c0.066,0.107,0.126,0.203,0.177,0.287  c0.324,0.922,0.716,1.531,1.545,1.531c0.062,0,0.124-0.004,0.188-0.008c0.047-0.002,0.096-0.004,0.146-0.004  c0.092,0,0.157,0.01,0.226,0.035l0.075,0.027l0.08,0.006c0.155,0.014,0.306,0.035,0.453,0.057c0.255,0.035,0.519,0.07,0.788,0.07  c0.721,0,1.293-0.271,1.787-0.855c0.019-0.002,0.036-0.004,0.055-0.006c0.518-0.072,0.712-0.332,0.778-0.564  c0.038-0.039,0.089-0.086,0.131-0.125c0.204-0.188,0.447-0.41,0.615-0.674c0.075-0.045,0.161-0.096,0.258-0.152  c0.167-0.104,0.355-0.217,0.504-0.293c0.131-0.041,0.247-0.117,0.334-0.225c0.209-0.258,0.166-0.549,0.131-0.783  c-0.035-0.242-0.071-0.492,0.06-0.758c0.738-0.355,2.051-1.23,2.263-1.375l-0.001,0.018c-0.014,0.117-0.048,0.43-0.1,0.629  c-0.279,0.279-0.513,0.703-0.586,0.846l-0.049,0.094l-0.015,0.104c-0.019,0.137-0.094,0.85,0.306,1.311  c0.202,0.23,0.49,0.359,0.813,0.359c0.103,0,0.21-0.014,0.319-0.039c1.027-0.232,2.85-2.703,2.998-4.066  c0.072-0.656-0.185-1.172-0.704-1.416l-0.387-0.184l-0.304,0.303l-1.125,1.125c-0.38,0.035-0.678,0.148-0.879,0.326  c0.012-0.48-0.035-0.973-0.086-1.451c-0.155-1.447-0.185-2.369,0.703-2.996l0.045-0.033l0.038-0.039  c0.321-0.326,0.676-0.611,1.052-0.914c0.88-0.707,1.79-1.438,2.332-2.759l0.022-0.056c0.174-0.451,0.437-1.132,0.081-1.651  c-0.089-0.128-0.275-0.327-0.624-0.397c0.462-0.186,0.816-0.332,0.851-0.346l0.107-0.044l0.083-0.08l1.898-1.822l0.278-0.268  l-0.122-0.366c-0.017-0.047-0.12-0.335-0.411-0.747c0.554,0.075,1.029,0.208,1.185,0.326c0.057,0.124,0.171,0.396,0.292,0.683  c2.089,4.924,2.382,5.178,2.926,5.187c0.021,0,0.037,0.002,0.051,0.003c0.044,0.003,0.083,0.005,0.119,0.005  c0.31,0,0.486-0.157,0.564-0.252c0.227-0.274,0.163-0.608,0.14-0.734l-0.009-0.043c-0.025-0.294-0.008-1.618,0.034-2.706  c0.003,0.002,0.004,0.006,0.006,0.01l1.12-0.445L51.966,24.045z M35.508,18.021c-0.087,0.003-0.181,0.008-0.282,0.012  c-0.322,0.015-0.688,0.031-1.053,0.031c-0.955,0-1.174-0.118-1.196-0.131c-0.113-0.082-0.229-0.144-0.35-0.188  c0.216-0.048,0.464-0.214,0.719-0.708c0.251,0.487,0.592,0.917,1.115,0.917c0.142,0,0.277-0.034,0.406-0.101  C35.043,17.856,35.333,17.957,35.508,18.021z M35.133,15.357c-0.072,0-0.131-0.003-0.176-0.007c0.049-0.128,0.107-0.202,0.154-0.244  c0.06,0.093,0.14,0.175,0.232,0.245C35.27,15.355,35.2,15.357,35.133,15.357z M31.331,16.635c0.327,0.641,0.569,0.917,0.762,1.037  c-0.475,0.038-0.833,0.339-1.126,0.625c-0.206-0.068-0.565-0.286-0.672-0.438c-0.063-0.089-0.138-0.166-0.221-0.232  C30.593,17.479,31.049,16.998,31.331,16.635z M29.523,16.163l-0.679-0.033l-2.278-0.111c0.278-0.229,0.541-0.444,0.697-0.57  c0.042-0.015,0.205-0.06,0.605-0.06c0.242,0,0.474,0.017,0.62,0.029L29.523,16.163z" fill="url(#SVGID_5_)" fill-opacity="0.3" stroke-opacity="0.3"/>
-<radialGradient cx="24.4912" cy="10.4414" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_6_" r="23.6744">
-<stop offset="0" style="stop-color:#7AF200"/>
-<stop offset="0.3152" style="stop-color:#7AF200"/>
-<stop offset="0.7273" style="stop-color:#1CAD0F"/>
-<stop offset="1" style="stop-color:#007A3A"/>
-</radialGradient>
-<path d="M11.451,28.125C11.451,28.125,11.451,28.125,11.451,28.125c0,0.008,0.001,0.012,0.001,0.018  c0,0.622,0.039,1.236,0.093,1.844c0.018,0.198,0.047,0.398,0.069,0.598c0.053,0.417,0.116,0.83,0.19,1.238  c0.042,0.215,0.081,0.434,0.127,0.646c0.094,0.422,0.203,0.838,0.321,1.248c0.05,0.17,0.089,0.342,0.141,0.508  c0.007,0.018,0.015,0.033,0.019,0.051c0.017-0.16,0.021-0.326,0.017-0.496c-0.04-1.199-0.232-1.045-0.232-1.045l1.356-1.822v-1.165  l-1.589-1.589C11.964,28.159,11.452,28.079,11.451,28.125z" fill="url(#SVGID_6_)"/>
-<radialGradient cx="24.4868" cy="10.4395" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_7_" r="23.6775">
-<stop offset="0" style="stop-color:#7AF200"/>
-<stop offset="0.3152" style="stop-color:#7AF200"/>
-<stop offset="0.7273" style="stop-color:#1CAD0F"/>
-<stop offset="1" style="stop-color:#007A3A"/>
-</radialGradient>
-<path d="M24.212,10.099c0.587,0.193,1.066-0.2,1.613-0.549c0.193-0.04,2.338-0.896,2.57-0.896  c0.231,0,1.011-0.03,1.204-0.34c0,0,3.357,0.584,3.863,0.389c0.275-0.107,1.433-0.2,2.425-0.264  c-0.056-0.012-0.106-0.029-0.162-0.041c-0.054-0.011-0.105-0.019-0.161-0.03c-0.623-0.126-1.252-0.226-1.894-0.29  c-0.006,0-0.01,0-0.016-0.002c-0.674-0.068-1.358-0.104-2.052-0.104c-0.644,0-1.277,0.038-1.906,0.098  c-0.11,0.011-0.221,0.022-0.331,0.035c-0.608,0.067-1.211,0.155-1.801,0.274c-0.01,0.003-0.021,0.004-0.031,0.006  c-0.612,0.127-1.213,0.283-1.802,0.464c-0.102,0.03-0.199,0.064-0.302,0.096c-0.522,0.168-1.038,0.356-1.544,0.564  c-0.06,0.026-0.12,0.048-0.18,0.072c-0.557,0.238-1.1,0.501-1.63,0.784c-0.08,0.043-0.156,0.089-0.234,0.134  c-0.227,0.125-0.44,0.267-0.66,0.402C22.273,11.265,23.635,9.904,24.212,10.099z" fill="url(#SVGID_7_)"/>
-<radialGradient cx="24.4863" cy="10.437" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_8_" r="23.6745">
-<stop offset="0" style="stop-color:#B2F56E"/>
-<stop offset="0.3152" style="stop-color:#B2F56E"/>
-<stop offset="0.7273" style="stop-color:#5CBF1B"/>
-<stop offset="1" style="stop-color:#227A00"/>
-</radialGradient>
-<path d="M51.366,24.146c-0.021-0.102-0.049-0.197-0.069-0.297c-0.106-0.499-0.233-0.99-0.378-1.474  c-0.038-0.13-0.076-0.264-0.118-0.395c-0.176-0.549-0.371-1.09-0.59-1.616c-0.04-0.093-0.085-0.184-0.125-0.275  c-0.202-0.464-0.421-0.918-0.657-1.363c-0.056-0.106-0.109-0.215-0.166-0.319c-0.279-0.502-0.575-0.993-0.893-1.469  c-0.054-0.083-0.114-0.161-0.17-0.243c-0.291-0.422-0.596-0.831-0.916-1.228c-0.064-0.079-0.127-0.16-0.194-0.24  c-0.368-0.442-0.756-0.868-1.161-1.277c-0.069-0.07-0.143-0.14-0.215-0.208c-0.369-0.363-0.755-0.714-1.153-1.047  c-0.067-0.056-0.131-0.116-0.198-0.171c-0.448-0.366-0.915-0.714-1.395-1.043c-0.084-0.057-0.17-0.112-0.256-0.167  c-0.442-0.294-0.898-0.571-1.366-0.83c-0.063-0.035-0.123-0.073-0.187-0.108c-0.52-0.278-1.05-0.533-1.594-0.768  c-0.097-0.041-0.194-0.079-0.29-0.12c-0.211-0.087-0.432-0.156-0.646-0.235c-0.255,0.163-1.438,0.832-1.438,0.832  s-5.141-0.702-5.491-0.353c-0.352,0.353-1.721,0.71-2.033,0.751c-0.311,0.04-0.956,0.206-0.182,1.161  c-0.116,0.118-2.325,1.657-2.325,0.957s0.494-1.953-0.2-1.282c-0.498,0.482-0.796,1.135-0.86,1.257  c-0.163,0.312-0.263,0.461-0.145,1.357s-1.43,0.891-1.534,0.659c-0.276-0.622-1.809,1.394-1.809,1.394l0.646,0.828  c0,0-4.51,3.474-4.548,3.707c-0.04,0.234-1.164,3.25-0.775,4.147c0.39,0.897,1.376,3.158,2.307,3.233  c1.222,0.101,4.186-0.559,4.186-0.559c0.08,0.196,0.638,1.189,0.638,1.189s1.453-0.048,1.534,0.11  c0.026,0.053,1.75,5.122,1.182,5.794c-1.357,2.033,0.775,5.012,1.369,6.02c0.594,1.73,0.977,0.955,1.758,1.238  c0.962,0.084,1.772,0.439,2.589-0.611c0.237-0.195,0.641-0.041,0.641-0.313c0-0.152,0.698-0.598,0.878-1.018  c0.188-0.088,0.674-0.414,1.003-0.572c0.299-0.02-0.283-0.82,0.309-1.666c0.64-0.252,2.364-1.414,2.364-1.414  c0.078-1.705-0.839-3.811,0.873-5.02c1.104-1.126,2.553-1.767,3.255-3.479c0.194-0.506,0.628-1.542-0.619-1.231  c-1.173,0.295-2.48,0.362-1.861-0.154c-0.071-0.634-0.85-0.932-1.55-1.552c-0.361-0.854-0.93-2.378-0.93-2.378l-1.24-1.885  l0.155-0.389l1.474,2.171l1.474,1.781c0.542,1.783,1.007,1.939,1.007,1.939c0.815-0.288,2.753-1.086,2.753-1.086l1.898-1.822  c0,0-0.195-0.581-0.967-1.316l-0.584-0.349c-0.126,0.357-0.802,0.491-0.802,0.491l-1.641-1.964l0.61-0.123l0.471,0.896l1.128,0.39  c0,0,0.313-0.229,0.893,0.371c0.473-0.039,2.318,0.09,2.749,0.636c0.085,0.109,2.287,5.607,2.721,5.614  c0.19,0.002,0.329,0.077,0.267-0.256c-0.078-0.156,0-3.609,0.116-4.349c0.295-0.628,0.343-0.003,1.04,1.188  C51.374,24.204,51.372,24.175,51.366,24.146z M31.993,10.823c0.154-0.459,1.047-0.615,1.047-0.615s-0.256,0.473-0.197,0.716  c0.06,0.247-0.407,0.402-0.46,0.982c-0.051,0.578-1.117,0.239-1.204,0.036C31.09,11.74,31.835,11.281,31.993,10.823z M35.816,18.624  c-0.661,0-2.645,0.196-3.19-0.194c-0.546-0.389-0.97,0.04-1.362,0.43c-0.258,0.253-1.193-0.26-1.468-0.649  c-0.271-0.39-1.188-0.361-1.188-0.361l0.208-1.111l-2.637-0.128l-1.499,0.439l-1.41,0.041l0.79-0.376l0.983-0.232  c0,0,1.431-1.176,1.859-1.526c0.363-0.297,1.811-0.129,1.811-0.129l1.589,1.146c0,0-0.353,0.898-0.508,1.091  c0.583-0.039,1.269-1.099,1.269-1.099c-1.239-1.138-1.188-1.524-1.188-1.524l1.633,1.146l0.016,0.01c0,0,0.661,1.558,0.937,1.558  c0.271,0,0.619-1.073,0.619-1.073l0.465-0.117c0.207,0.492,0.595,1.603,1.059,1.343c0.269-0.147,0.71-0.013,1.215,0.181  c0.509,0.195,0.854-0.104,1.267,0.258C37.03,19.349,36.089,18.702,35.816,18.624z M36.853,15.943  c-0.681-0.259-2.984,0.586-2.47-0.796c0.275-0.746,0.981-0.901,1.223-0.405c0.063,0.204,0.83,0.519,0.824,0.09  c-0.006-0.431,0.771-0.659,0.883-0.338C36.899,14.791,38.932,16.341,36.853,15.943z M41.192,17.252  c-0.377-0.304,0.169-0.564-0.387-1.041c-0.798-0.684-1.421-0.978-0.334-1.532c1.341-0.168,0.218,0.428,0.44,0.786  c0.119,0.19,0.796,0.828,1.325,1.61C42.676,17.725,41.567,17.555,41.192,17.252z" fill="url(#SVGID_8_)"/>
-<radialGradient cx="24.4839" cy="10.4453" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_9_" r="23.6688">
-<stop offset="0" style="stop-color:#7AF200"/>
-<stop offset="0.3152" style="stop-color:#7AF200"/>
-<stop offset="0.7273" style="stop-color:#1CAD0F"/>
-<stop offset="1" style="stop-color:#007A3A"/>
-</radialGradient>
-<path d="M41.733,35.008l-1.293,1.291c0,0-0.778,0-0.815,0.313c-0.017,0.133-0.063,0.709-0.192,1.006  c-0.258,0.18-0.569,0.775-0.569,0.775s-0.158,1.15,0.699,0.953C40.42,39.152,43.059,35.633,41.733,35.008z" fill="url(#SVGID_9_)"/>
-<path d="M31.68,48.668c1.546,0,3.049-0.174,4.499-0.49c-0.039-0.049-0.071-0.1-0.114-0.145  l-7.534-7.756c-0.434-0.447-1.031-0.705-1.638-0.705c-0.57,0-1.102,0.221-1.5,0.625l-1.144,1.18l-0.472,0.477l-0.436,0.447  c-1.654-1.605-3.133-3.443-4.739-5.873c-0.888-1.348-1.653-2.988-2.138-4.123l-0.178-0.424c-0.001,0-0.242-0.598-0.324-0.811  l-0.027-0.068c-0.067-0.176-0.127-0.341-0.184-0.5l-0.025-0.069l1.843-0.641c1.017-0.344,1.593-1.403,1.363-2.555l-0.007-0.036  l-1.154-3.523l-2.274-6.787c-0.162-0.486-0.47-0.886-0.858-1.16c-2.416,3.407-3.841,7.565-3.841,12.059  C10.797,39.322,20.147,48.668,31.68,48.668z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M31.68,48.668c1.301,0,2.57-0.125,3.806-0.352l-7.394-7.613c-0.32-0.33-0.758-0.52-1.199-0.52  c-0.404,0-0.779,0.156-1.061,0.441l-1.148,1.182l-0.467,0.473l-0.424,0.436l0.003,0.004l-0.435,0.445  c-1.866-1.736-3.509-3.734-5.269-6.4c-0.91-1.381-1.694-3.059-2.192-4.221l-0.158-0.375l-0.024-0.059c0,0-0.243-0.602-0.327-0.816  l-0.029-0.072c-0.068-0.18-0.129-0.347-0.19-0.513c0,0-0.12-0.337-0.145-0.41l0.071-0.295l2.272-0.791  c0.721-0.244,1.127-1.009,0.966-1.819l-0.007-0.036l-1.142-3.485l-2.274-6.789c-0.119-0.357-0.343-0.65-0.626-0.851  c-2.204,3.31-3.492,7.283-3.492,11.557C10.797,39.322,20.147,48.668,31.68,48.668z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
-<radialGradient cx="-859.7427" cy="-265.1074" gradientTransform="matrix(0.9999 -0.0111 0.0111 0.9999 905.1068 277.0371)" gradientUnits="userSpaceOnUse" id="SVGID_10_" r="34.2211">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.8364" style="stop-color:#E9F0F2"/>
-<stop offset="0.8909" style="stop-color:#AAB1B5"/>
-<stop offset="0.9515" style="stop-color:#7C878C"/>
-<stop offset="1" style="stop-color:#838F94"/>
-</radialGradient>
-<path d="M23.387,44.016c-2.39-2.133-4.191-4.469-5.806-6.914c-1.552-2.357-2.958-5.889-3.393-7.428  l-6.272-8.836c-0.357,0.592-0.921,2.715-0.661,5.588c0.262,2.872,2.939,9.828,6.083,14.596c3.146,4.766,7.81,9.248,9.374,10.24  c2.462,1.561,5.427,2.074,6.329,2.029c0,0,0.833-0.098,1.97-0.496C31.5,52.625,23.387,44.016,23.387,44.016z" fill="url(#SVGID_10_)"/>
-<path d="M15.369,32.857c-0.55-1.283-0.976-2.456-1.18-3.184l-6.104-8.599c-0.064,0.09-0.099,0.144-0.099,0.144  c-0.104,0.172-0.22,0.458-0.338,0.813c-0.118,0.599-0.177,1.219-0.167,1.854C7.541,28.374,10.936,32.078,15.369,32.857z" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M15.108,32.234c-0.423-1.033-0.749-1.953-0.919-2.561l-6.125-8.627c-0.069,0.101-0.109,0.161-0.109,0.161  c-0.097,0.162-0.208,0.434-0.318,0.769c-0.111,0.567-0.168,1.151-0.159,1.751C7.536,28.033,10.834,31.572,15.108,32.234z" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M7.907,21.188c-0.088,0.148-0.188,0.394-0.289,0.698c-0.102,0.514-0.152,1.046-0.144,1.59  c0.054,4.01,3.21,7.283,7.24,7.757c-0.232-0.618-0.412-1.157-0.526-1.559l-6.154-8.67C7.951,21.121,7.907,21.188,7.907,21.188z" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="-891.105" cy="-262.4795" gradientTransform="matrix(1.0009 -0.0086 0.0135 0.9911 906.6143 271.6763)" gradientUnits="userSpaceOnUse" id="SVGID_11_" r="11.8382">
-<stop offset="0" style="stop-color:#D1D8D9"/>
-<stop offset="0.0424" style="stop-color:#D1D8D9"/>
-<stop offset="0.4" style="stop-color:#BBC0C2"/>
-<stop offset="0.7333" style="stop-color:#7C8C91"/>
-<stop offset="1" style="stop-color:#A7B3B7"/>
-</radialGradient>
-<path d="M14.188,29.674l1.312-0.461c0,0-2.781-12.441-3.885-11.868c-0.555,0.29-0.549,0.448-1.11,0.853  c-1.676,1.219-2.589,2.641-2.589,2.641c-0.077,0.13-0.165,0.345-0.252,0.613c-0.088,0.45-0.134,0.916-0.128,1.392  c0.05,3.62,2.979,6.563,6.661,6.841C14.194,29.681,14.189,29.677,14.188,29.674z" fill="url(#SVGID_11_)"/>
-<path d="M23.289,45.25c-0.259,0.727-0.4,1.498-0.39,2.303c0.025,1.906,0.882,3.621,2.242,4.898  c1.716,0.641,3.287,0.871,3.9,0.84c0,0,0.833-0.098,1.97-0.496c0.409-0.143-5.222-6.213-7.055-8.172L23.289,45.25z" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M23.448,44.59c-0.261,0.725-0.401,1.496-0.391,2.301c0.036,2.613,1.621,4.875,3.95,6.125  c0.771,0.18,1.418,0.264,1.829,0.275c0.011,0,0.026,0.002,0.037,0c0,0,0.832-0.096,1.972-0.494c0.422-0.148-5.624-6.641-7.233-8.363  L23.448,44.59z" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="-877.4263" cy="-238.3691" gradientTransform="matrix(1.0009 -0.0086 0.0135 0.9911 906.6143 271.6763)" gradientUnits="userSpaceOnUse" id="SVGID_12_" r="12.0474">
-<stop offset="0" style="stop-color:#D1D8D9"/>
-<stop offset="0.0424" style="stop-color:#D1D8D9"/>
-<stop offset="0.4" style="stop-color:#BBC0C2"/>
-<stop offset="0.7333" style="stop-color:#7C8C91"/>
-<stop offset="1" style="stop-color:#A7B3B7"/>
-</radialGradient>
-<path d="M32.6,52.1c0.653-0.35,0.819-0.34,1.351-0.74c0.98-0.74-8.83-9.123-8.83-9.123l-1.712,1.756  c-0.229,0.695-0.355,1.434-0.345,2.203c0.051,3.766,3.219,6.797,7.107,6.857C30.828,52.877,31.693,52.584,32.6,52.1z" fill="url(#SVGID_12_)"/>
-<path d="M14.866,29.428l0.634-0.215c0,0-2.781-12.441-3.885-11.868  c-0.291,0.151-0.427,0.268-0.573,0.401L14.866,29.428z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientTransform="matrix(0.9999 -0.0111 0.0111 0.9999 905.1068 277.0361)" gradientUnits="userSpaceOnUse" id="SVGID_13_" x1="-889.625" x2="-885.2537" y1="-270.9771" y2="-257.0911">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.4" style="stop-color:#D4D9DB"/>
-<stop offset="0.7333" style="stop-color:#98AAAD"/>
-<stop offset="1" style="stop-color:#D0DADE"/>
-</linearGradient>
-<path d="M15.5,29.214l1.677-0.583c0.435-0.147,0.659-0.629,0.562-1.119l-1.129-3.446l-2.275-6.79  c-0.177-0.533-0.71-0.836-1.188-0.676c0,0-0.429,0.175-1.529,0.747L15.5,29.214z" fill="url(#SVGID_13_)"/>
-<path d="M25.121,42.236l-0.468,0.473l8.748,9.039c0.188-0.131,0.379-0.26,0.55-0.389  C34.931,50.619,25.121,42.236,25.121,42.236z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientTransform="matrix(0.9999 -0.0111 0.0111 0.9999 905.1068 277.0366)" gradientUnits="userSpaceOnUse" id="SVGID_14_" x1="-876.2178" x2="-867.1104" y1="-245.4277" y2="-235.398">
-<stop offset="0" style="stop-color:#E9F0F2"/>
-<stop offset="0.0424" style="stop-color:#E9F0F2"/>
-<stop offset="0.4" style="stop-color:#D4D9DB"/>
-<stop offset="0.7333" style="stop-color:#98AAAD"/>
-<stop offset="1" style="stop-color:#D0DADE"/>
-</linearGradient>
-<path d="M33.95,51.357c0.978-0.738,1.295-1.059,1.295-1.059c0.364-0.373,0.338-1.002-0.059-1.412  l-7.534-7.756c-0.397-0.412-1.016-0.451-1.38-0.08l-1.151,1.186L33.95,51.357z" fill="url(#SVGID_14_)"/>
-</g>
-<g>
-<linearGradient gradientTransform="matrix(1 1.000000e-004 -1.000000e-004 1 -2.3655 -29.0779)" gradientUnits="userSpaceOnUse" id="SVGID_1__" x1="17.3926" x2="17.3926" y1="32.2334" y2="55.3194">
-<stop offset="0" style="stop-color:#C6FF45"/>
-<stop offset="0.7273" style="stop-color:#66A00E"/>
-<stop offset="1" style="stop-color:#387300"/>
-</linearGradient>
-<polygon fill="url(#SVGID_1__)" points="4.648,15.727 14.942,26.471 25.397,15.714 19.763,15.712 19.759,3.417 10.166,3.416   10.166,15.726 "/>
-<line fill="#1D4489" x1="19.759" x2="10.166" y1="3.421" y2="3.42"/>
-<polygon fill="#E7FFB9" points="10.166,3.17 19.76,3.171 19.759,3.671 10.166,3.67 10.166,3.17 "/>
-<polygon fill="#E7FFB9" points="19.612,15.732 25.505,15.733 25.059,16.233 19.612,16.233 19.612,15.732 "/>
-<polygon fill="#E7FFB9" points="4.321,15.726 10.157,15.726 10.157,16.226 4.848,16.226 4.321,15.726 "/>
-<linearGradient gradientTransform="matrix(1 1.000000e-004 -1.000000e-004 1 -2.3655 -29.0779)" gradientUnits="userSpaceOnUse" id="SVGID_2__" x1="26.5625" x2="7.7312" y1="50.3418" y2="50.3418">
-<stop offset="0" style="stop-color:#AAE535"/>
-<stop offset="1" style="stop-color:#5D9C0A"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2__)" points="25.072,15.713 14.942,26.112 4.925,15.7 4.229,15.701 14.941,26.83 25.771,15.713 "/>
-<rect fill="none" height="30" width="30"/>
-</g>
-</svg>
--- a/phoneuis/bubblemanager2/bubblestyle/bubblestyle.qrc	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/bubblestyle/bubblestyle.qrc	Mon May 03 12:31:11 2010 +0300
@@ -5,5 +5,7 @@
         <file alias="bubbleparticipantlistitem.css">layout/bubbleparticipantlistitem.css</file>
         <file alias="bubbleheadingwidget.widgetml">layout/bubbleheadingwidget.widgetml</file>
         <file alias="bubbleheadingwidget.css">layout/bubbleheadingwidget.css</file>
+        <file alias="bubbleimagewidget.widgetml">layout/bubbleimagewidget.widgetml</file>
+        <file alias="bubbleimagewidget.css">layout/bubbleimagewidget.css</file>
     </qresource>
 </RCC>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/bubblestyle/layout/bubbleimagewidget.css	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,7 @@
+
+
+BubbleImageWidget
+{
+    layout: avatar_layout;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/bubblestyle/layout/bubbleimagewidget.widgetml	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,11 @@
+<hbwidget version="0.1" type="bi">  
+
+  <layout name="avatar_layout" type="mesh">
+    <meshitem src="default_avatar" srcEdge="LEFT" dst="" dstEdge="LEFT"/>
+    <meshitem src="default_avatar" srcEdge="TOP" dst="" dstEdge="TOP"/>
+    <meshitem src="default_avatar" srcEdge="RIGHT" dst="" dstEdge="RIGHT"/>
+    <meshitem src="default_avatar" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM"/>
+  </layout>
+  
+</hbwidget>
+
--- a/phoneuis/bubblemanager2/bubblestyle/src/bubblestyleplugin.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/bubblestyle/src/bubblestyleplugin.cpp	Mon May 03 12:31:11 2010 +0300
@@ -94,6 +94,10 @@
         item = icon;
         }
         break;
+    case BP_DefaultAvatar_icon: {
+        HbIconItem* icon = new HbIconItem(parent);
+        item = icon;
+        }
     default:
         break;
     } // switch
@@ -178,6 +182,13 @@
         }
         break;
 
+    case BP_DefaultAvatar_icon: {
+        HbIconItem* icon = static_cast<HbIconItem*>(item);
+        icon->setIconName("qtg_large_avatar");
+        icon->setAspectRatioMode(Qt::KeepAspectRatioByExpanding);
+        icon->setAlignment(Qt::AlignCenter);
+        }
+
     default:
         break;
     } // switch
@@ -255,11 +266,11 @@
     case BubbleManagerIF::Alerting:
     case BubbleManagerIF::Waiting:
         if ( opt->mCallFlags & BubbleManagerIF::VoIPCall ) {
-            anim->appendIcon("qtg_large_voip_received_call");
-            anim->appendIcon("qtg_large_voip_dialled_call");
+            anim->appendIcon("qtg_large_voip_call_active");
+            anim->appendIcon("qtg_large_voip_call_waiting");
         } else if ( opt->mCallFlags & BubbleManagerIF::Video ) {
-            anim->appendIcon("qtg_large_video_received_call");
-            anim->appendIcon("qtg_large_video_dialled_call");
+            anim->appendIcon("qtg_large_video_call_active");
+            anim->appendIcon("qtg_large_video_call_waiting");
         } else {
             anim->appendIcon("qtg_large_active_call");
             anim->appendIcon("qtg_large_waiting_call");
@@ -268,18 +279,18 @@
     case BubbleManagerIF::Outgoing:
     case BubbleManagerIF::Active:
         if ( opt->mCallFlags & BubbleManagerIF::VoIPCall ) {
-            anim->appendIcon("qtg_large_voip_received_call");
+            anim->appendIcon("qtg_large_voip_call_active");
         } else if ( opt->mCallFlags & BubbleManagerIF::Video ) {
-            anim->appendIcon("qtg_large_video_received_call");
+            anim->appendIcon("qtg_large_video_call_active");
         } else {
             anim->appendIcon("qtg_large_active_call");
         }            
         break;
     case BubbleManagerIF::OnHold:
         if ( opt->mCallFlags & BubbleManagerIF::VoIPCall ) {
-            anim->appendIcon("qtg_large_voip_dialled_call");
+            anim->appendIcon("qtg_large_voip_call_waiting");
         } else if ( opt->mCallFlags & BubbleManagerIF::Video ) {
-            anim->appendIcon("qtg_large_video_dialled_call");
+            anim->appendIcon("qtg_large_video_call_waiting");
         } else {
             anim->appendIcon("qtg_large_waiting_call");
         }                      
@@ -287,9 +298,9 @@
     case BubbleManagerIF::Disconnected:
     case BubbleManagerIF::AlertToDisconnected:
         if ( opt->mCallFlags & BubbleManagerIF::VoIPCall ) {
-            anim->appendIcon("qtg_large_voip_missed_call");
+            anim->appendIcon("qtg_large_end_call");
         } else if ( opt->mCallFlags & BubbleManagerIF::Video ) {
-            anim->appendIcon("qtg_large_video_missed_call");
+            anim->appendIcon("qtg_large_end_call");
         } else {
             anim->appendIcon("qtg_large_end_call");
         }           
--- a/phoneuis/bubblemanager2/inc/bubblemanager2.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/inc/bubblemanager2.h	Mon May 03 12:31:11 2010 +0300
@@ -33,9 +33,11 @@
 class BubbleHeader;
 class BubbleConferenceHeader;
 class BubbleWidgetManager;
+class BubbleImageManager;
 class HbAction;
 class HbStackedLayout;
 class BubbleHandler;
+class BubbleEffectHandler;
 
 static const int BUBBLE_MAX_CALL_COUNT = 7;
 static const int BUBBLE_CONF_CALL_ID   = 10;
@@ -341,6 +343,7 @@
     bool findActiveHeader(int bubbleId, BubbleHeader*& header);
     void findNextDrawableHeader(int& index) const;
     void polishEvent();
+    void releaseImageIfNotUsed(const QString& imageFileName);
 
 private slots:
     void showExpanded( int bubbleId );
@@ -357,9 +360,11 @@
     QGraphicsWidget* mMutedIcon;
     bool mSortHeaders;
     BubbleWidgetManager* mWidgetManager;
+    BubbleImageManager* mBubbleImageManager;
     HbStackedLayout* mMainLayout;
     bool mInitialized;
     bool mBubbleSelectionDisabled;
+    BubbleEffectHandler* mEffectHandler;
 };
 
 #endif /* BUBBLEMANAGER2_H */
--- a/phoneuis/bubblemanager2/inc/bubbleprimitives.h	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/inc/bubbleprimitives.h	Mon May 03 12:31:11 2010 +0300
@@ -27,6 +27,7 @@
     BP_CallStatus_icon,
     BP_NumberType_icon,
     BP_Ciphering_icon,
+    BP_DefaultAvatar_icon,
     BP_Bubble_primitive_count
 };
 
--- a/phoneuis/bubblemanager2/tsrc/bubbletest2/bubbletestview.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/tsrc/bubbletest2/bubbletestview.cpp	Mon May 03 12:31:11 2010 +0300
@@ -75,6 +75,7 @@
 
 BubbleTestView::~BubbleTestView()
 {
+    toolBar()->clearActions();
     delete mBubbleTester;
 }
 
@@ -868,7 +869,7 @@
     connect( mUnmute, SIGNAL(triggered()), this, SLOT(setMuted()), Qt::QueuedConnection );
 
     // not connected to anywhere
-    mActivateLoudspeaker = new HbAction(HbIcon("qtg_mono_loudspeaker"), "", this);
+    mActivateLoudspeaker = new HbAction(HbIcon("qtg_mono_speaker"), "", this);
     mActivateHandset = new HbAction(HbIcon("qtg_mono_mobile"), "", this);
     mSendMessage = new HbAction(HbIcon("qtg_mono_send"), "", this);
     mSilence = new HbAction(HbIcon("qtg_mono_speaker_off"), "", this);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/tsrc/unit/checkcoverage.cmd	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,42 @@
+@echo off
+rem
+rem Copyright (c) 2009 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
+
+@echo on
+:FINAL
+
+@echo off
+
+rmdir /q /s coverage
+mkdir coverage
+cd coverage
+
+if not "%1"=="mt_bubblemanager2" (
+echo Instrumenting %1
+call qmake^
+ ..\%1\%1.pro
+call ctcwrap^
+ mingw32-make debug
+call %1.exe
+)
+
+call ctcpost^
+ mon.sym mon.dat^
+ -p profile.txt
+call ctc2html -i profile.txt
+cd ..
+echo All done!
+
--- a/phoneuis/bubblemanager2/tsrc/unit/mt_bubblemanager2/mt_bubblemanager2.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/tsrc/unit/mt_bubblemanager2/mt_bubblemanager2.cpp	Mon May 03 12:31:11 2010 +0300
@@ -37,13 +37,10 @@
     void initTestCase();
     void cleanupTestCase();
 
-    void testConferenceCall();
-
-private:
     void testBasicMtCall();
     void testBasicMoCall();
     void testWaitingCall();
-
+    void testConferenceCall();
     void testEmergencyCall();
 
 private:
--- a/phoneuis/bubblemanager2/tsrc/unit/unit.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/tsrc/unit/unit.pro	Mon May 03 12:31:11 2010 +0300
@@ -23,9 +23,11 @@
 SUBDIRS += ut_bubblestyleoption
 SUBDIRS += ut_bubblecontainerwidget
 SUBDIRS += ut_bubbleheadingwidget
+SUBDIRS += ut_bubbleimagemanager
 SUBDIRS += ut_bubbleimagewidget
 SUBDIRS += ut_bubbleparticipantlistitem
 SUBDIRS += ut_bubblebuttonstyle
 SUBDIRS += ut_bubbleanimiconitem
 SUBDIRS += ut_bubblestyleplugin
+SUBDIRS += ut_bubbleeffecthandler
 SUBDIRS += mt_bubblemanager2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/tsrc/unit/ut_bubbleeffecthandler/resources/bubble_muted_appear.fxml	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,13 @@
+<layers>
+<visual>
+
+  <param name="opacity" type="anim">
+      <duration>0.2</duration>
+      <style>linear</style>
+      <keyframe at="0">0</keyframe>
+      <keyframe at="1">1</keyframe>
+  </param>
+
+</visual>
+</layers>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/tsrc/unit/ut_bubbleeffecthandler/resources/bubble_muted_disappear.fxml	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,12 @@
+<layers>
+<visual>
+
+  <param name="opacity" type="anim">
+      <duration>0.2</duration>
+      <style>linear</style>
+      <keyframe at="0">1</keyframe>
+      <keyframe at="1">0</keyframe>
+  </param>
+
+</visual>
+</layers>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/tsrc/unit/ut_bubbleeffecthandler/ut_bubbleeffecthandler.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,122 @@
+/*!
+* 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:
+*
+*/
+
+#include <QtGui>
+#include <QtTest/QtTest>
+#include <hbapplication.h>
+#include <hbwidget.h>
+#include <hblabel.h>
+#include <hbmainwindow.h>
+#include <hbfontspec.h>
+
+#include "bubbletest.h"
+#include "bubbleeffecthandler.h"
+
+class Container : public HbWidget
+{
+public:
+    Container();
+    ~Container();
+
+    HbLabel *mLabel;
+};
+
+Container::Container()
+{
+    mLabel = new HbLabel(this);
+    mLabel->setAlignment(Qt::AlignCenter);
+    HbFontSpec spec;
+    spec.setRole(HbFontSpec::Primary);
+    spec.setTextHeight(30);
+    mLabel->setFontSpec(spec);
+    QGraphicsLinearLayout* layout =
+        new QGraphicsLinearLayout(Qt::Vertical);
+    layout->addItem(mLabel);
+
+    setLayout(layout);
+}
+
+Container::~Container()
+{
+}
+
+class ut_BubbleEffectHandler : public QObject
+{
+    Q_OBJECT
+
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+
+    void testMuteAppearEffect();
+    void testMuteDisappearEffect();
+
+private:
+    HbMainWindow* mWindow;
+    BubbleEffectHandler *mEffectHandler;
+    Container *mContainer;
+};
+
+void ut_BubbleEffectHandler::initTestCase()
+{
+    mWindow = new HbMainWindow();
+    mEffectHandler = new BubbleEffectHandler();
+    mContainer = new Container();
+    mContainer->mLabel->setVisible(false);
+    mWindow->addView(mContainer);
+    mWindow->show();
+}
+
+void ut_BubbleEffectHandler::cleanupTestCase()
+{
+    delete mEffectHandler;
+    delete mWindow;
+}
+
+void ut_BubbleEffectHandler::testMuteAppearEffect()
+{
+    QVERIFY(mContainer->mLabel->isVisible()==false);
+    QTest::qWait(500);
+
+    mContainer->mLabel->setPlainText("Appearing");
+
+    mEffectHandler->addEffect(mContainer->mLabel,BubbleMutedAppear);
+    mEffectHandler->startEffect(BubbleMutedAppear);
+    QTest::qWait(1000);
+
+    QVERIFY(mContainer->mLabel->isVisible()==true);
+
+    mEffectHandler->removeEffect(mContainer->mLabel,BubbleMutedAppear);
+}
+
+void ut_BubbleEffectHandler::testMuteDisappearEffect()
+{
+    QVERIFY(mContainer->mLabel->isVisible()==true);
+
+    mContainer->mLabel->setPlainText("Disappearing");
+
+    mEffectHandler->addEffect(mContainer->mLabel,BubbleMutedDisappear);
+    mEffectHandler->startEffect(BubbleMutedDisappear);
+    QTest::qWait(1000);
+
+    QVERIFY(mContainer->mLabel->isVisible()==false);
+
+    mEffectHandler->removeEffect(mContainer->mLabel,BubbleMutedDisappear);
+}
+
+BUBBLE_TEST_MAIN(ut_BubbleEffectHandler)
+#include "ut_bubbleeffecthandler.moc"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/tsrc/unit/ut_bubbleeffecthandler/ut_bubbleeffecthandler.pro	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,36 @@
+#
+# 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:
+#
+#
+
+TEMPLATE = app
+TARGET = 
+DEPENDPATH += . ../../../bubblecore/src
+INCLUDEPATH += . ../../../bubblecore/src ../../../inc ../shared
+CONFIG += hb qtestlib
+
+symbian {
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+} else:win32 {
+    DESTDIR = ./
+}
+
+#
+HEADERS += bubbleeffecthandler.h
+SOURCES += ut_bubbleeffecthandler.cpp \
+           bubbleeffecthandler.cpp
+RESOURCES += ut_bubbleeffecthandler.qrc
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/tsrc/unit/ut_bubbleeffecthandler/ut_bubbleeffecthandler.qrc	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,6 @@
+<RCC>
+    <qresource prefix="/">
+        <file alias="bubble_muted_disappear.fxml">resources/bubble_muted_disappear.fxml</file>
+        <file alias="bubble_muted_appear.fxml">resources/bubble_muted_appear.fxml</file>
+    </qresource>
+</RCC>
--- a/phoneuis/bubblemanager2/tsrc/unit/ut_bubbleheader/ut_bubbleheader.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/tsrc/unit/ut_bubbleheader/ut_bubbleheader.cpp	Mon May 03 12:31:11 2010 +0300
@@ -43,6 +43,7 @@
     void testSecondaryCli();
     void testTimerCost();
     void testCallImage();
+    void testShowDefaultAvatar();
     void testAddActions();
     void testIsConference();
     void testIsInConference();
@@ -165,6 +166,14 @@
     QVERIFY( bubbleHeader->callImage() == "image.png" );
 }
 
+void ut_BubbleHeader::testShowDefaultAvatar()
+{
+    bubbleHeader->setShowDefaultAvatar(true);
+    QVERIFY( bubbleHeader->showDefaultAvatar() == true);
+    bubbleHeader->setShowDefaultAvatar(false);
+    QVERIFY( bubbleHeader->showDefaultAvatar() == false);
+}
+
 void ut_BubbleHeader::testAddActions()
 {
     for ( int i=0; i < 4; i++ )
Binary file phoneuis/bubblemanager2/tsrc/unit/ut_bubbleimagemanager/resources/testpic1.png has changed
Binary file phoneuis/bubblemanager2/tsrc/unit/ut_bubbleimagemanager/resources/testpic2.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/tsrc/unit/ut_bubbleimagemanager/ut_bubbleimagemanager.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,230 @@
+/*!
+* 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:
+*
+*/
+
+#include <QtGui>
+#include <QtTest/QtTest>
+
+#include <hbapplication.h>
+#include <hbmainwindow.h>
+#include <hbaction.h>
+#include <hbmainwindow.h>
+#include <hbinstance.h>
+#include <hbstyle.h>
+
+#include "bubbletest.h"
+#include "bubbleimagemanager.h"
+
+static const int WAIT_TIME = 500;
+
+class ut_BubbleImageManager : public QObject
+{
+    Q_OBJECT
+
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+
+    void testLoadImage();
+    void testLoadImageQueued();
+    void testLoadNonExistingImage();
+
+    void testUnloadImageOutstandingRequest();
+
+    void testReleasePixmaps();
+
+private:
+    QString fileNameWithPath(const QString& fileName);
+
+private:
+    BubbleImageManager* mImageManager;
+};
+
+void ut_BubbleImageManager::initTestCase()
+{
+    mImageManager = new BubbleImageManager();
+}
+
+void ut_BubbleImageManager::cleanupTestCase()
+{
+    delete mImageManager;
+}
+
+QString ut_BubbleImageManager::fileNameWithPath(const QString& fileName)
+{
+#ifdef __WINS__
+    return "c:/data/images/" + fileName;
+#else
+    return ":/resources/" + fileName;
+#endif
+}
+
+void ut_BubbleImageManager::testLoadImage()
+{
+    QSignalSpy spy(mImageManager,SIGNAL(pixmapReady(QString)));
+
+    QString imageFile1 = fileNameWithPath("testpic1.png");
+    qDebug() << imageFile1;
+    mImageManager->loadImage(imageFile1);
+
+    // wait loading to finish
+    QTest::qWait(2*WAIT_TIME);
+
+    QVERIFY(spy.count()==1);
+    QList<QVariant> arguments = spy.takeFirst();
+    QVERIFY(arguments.at(0).toString() == imageFile1);
+
+    const QPixmap* pixmap1 = mImageManager->pixmap(imageFile1);
+    QVERIFY(pixmap1!=0);
+
+    // try to load cached image
+    mImageManager->loadImage(imageFile1);
+    QVERIFY(spy.count()==0);
+
+    QString imageFile2 = fileNameWithPath("testpic2.jpg");
+    qDebug() << imageFile2;
+    mImageManager->loadImage(imageFile2);
+
+    // wait loading to finish
+    QTest::qWait(WAIT_TIME);
+
+    QVERIFY(spy.count()==1);
+    arguments.clear();
+    arguments = spy.takeFirst();
+    QVERIFY(arguments.at(0).toString() == imageFile2);
+
+    const QPixmap* pixmap2 = mImageManager->pixmap(imageFile2);
+    QVERIFY(pixmap2!=0);
+
+    mImageManager->unloadImage(imageFile1);
+    mImageManager->unloadImage(imageFile2);
+}
+
+void ut_BubbleImageManager::testLoadImageQueued()
+{
+    QSignalSpy spy(mImageManager,SIGNAL(pixmapReady(QString)));
+
+    QString imageFile1 = fileNameWithPath("testpic1.png");
+    qDebug() << imageFile1;
+    mImageManager->loadImage(imageFile1);
+
+    QString imageFile2 = fileNameWithPath("testpic2.jpg");
+    qDebug() << imageFile2;
+    mImageManager->loadImage(imageFile2);
+
+    // try to load images that are being loaded
+    mImageManager->loadImage(imageFile1);
+    mImageManager->loadImage(imageFile2);
+
+    // wait loading to finish
+    QTest::qWait(WAIT_TIME);
+
+    QVERIFY(spy.count()==2);
+
+    const QPixmap* pixmap1 = mImageManager->pixmap(imageFile1);
+    QVERIFY(pixmap1!=0);
+
+    const QPixmap* pixmap2 = mImageManager->pixmap(imageFile2);
+    QVERIFY(pixmap2!=0);
+
+    mImageManager->unloadImage(imageFile1);
+    mImageManager->unloadImage(imageFile2);
+}
+
+void ut_BubbleImageManager::testLoadNonExistingImage()
+{
+    QSignalSpy spy(mImageManager,SIGNAL(pixmapReady(QString)));
+
+    QString imageFile1 = fileNameWithPath("foobar.png");
+    qDebug() << imageFile1;
+    mImageManager->loadImage(imageFile1);
+
+    // wait loading to finish
+    QTest::qWait(WAIT_TIME);
+
+    QVERIFY(spy.count()==0);
+
+    const QPixmap* pixmap1 = mImageManager->pixmap(imageFile1);
+    QVERIFY(pixmap1==0);
+
+    mImageManager->unloadImage(imageFile1);
+}
+
+void ut_BubbleImageManager::testUnloadImageOutstandingRequest()
+{
+    QSignalSpy spy(mImageManager,SIGNAL(pixmapReady(QString)));
+
+    QString imageFile1 = fileNameWithPath("testpic1.png");
+    qDebug() << imageFile1;
+    mImageManager->loadImage(imageFile1);
+    QTest::qWait(50);
+    mImageManager->unloadImage(imageFile1);
+    mImageManager->unloadImage("foobar.png");
+
+    // wait loading to finish
+    QTest::qWait(WAIT_TIME);
+
+    QVERIFY(spy.count()==0);
+
+    const QPixmap* pixmap1 = mImageManager->pixmap(imageFile1);
+    QVERIFY(pixmap1==0);
+
+    QString imageFile2 = fileNameWithPath("testpic2.jpg");;
+    qDebug() << imageFile2;
+    mImageManager->loadImage(imageFile2);
+
+    QTest::qWait(50);
+    mImageManager->unloadImage(imageFile2);
+
+    // wait loading to finish
+    QTest::qWait(WAIT_TIME);
+
+    QVERIFY(spy.count()==0);
+
+    const QPixmap* pixmap2 = mImageManager->pixmap(imageFile2);
+    QVERIFY(pixmap2==0);
+}
+
+void ut_BubbleImageManager::testReleasePixmaps()
+{
+    QString imageFile1 = fileNameWithPath("testpic1.png");
+    qDebug() << imageFile1;
+    mImageManager->loadImage(imageFile1);
+
+    QString imageFile2 = fileNameWithPath("testpic2.jpg");
+    qDebug() << imageFile2;
+    mImageManager->loadImage(imageFile2);
+
+    // wait loading to finish
+    QTest::qWait(WAIT_TIME);
+
+    const QPixmap* pixmap1 = mImageManager->pixmap(imageFile1);
+    QVERIFY(pixmap1!=0);
+
+    const QPixmap* pixmap2 = mImageManager->pixmap(imageFile2);
+    QVERIFY(pixmap2!=0);
+
+    mImageManager->releasePixmaps();
+
+    pixmap1 = mImageManager->pixmap(imageFile1);
+    QVERIFY(pixmap1==0);
+
+    pixmap2 = mImageManager->pixmap(imageFile2);
+    QVERIFY(pixmap2==0);
+}
+
+BUBBLE_TEST_MAIN(ut_BubbleImageManager)
+#include "ut_bubbleimagemanager.moc"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/tsrc/unit/ut_bubbleimagemanager/ut_bubbleimagemanager.pro	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,51 @@
+#
+# 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:
+#
+#
+
+TEMPLATE = app
+TARGET = 
+DEPENDPATH += . ../../../bubblecore/src
+INCLUDEPATH += . ../../../bubblecore/src ../../../inc ../shared
+CONFIG += hb qtestlib
+
+symbian {
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.CAPABILITY = ALL -TCB
+
+    BLD_INF_RULES.prj_exports += \
+        "./resources/testpic1.png  /epoc32/winscw/c/data/images/testpic1.png"
+    BLD_INF_RULES.prj_exports += \
+        "./resources/testpic2.jpg  /epoc32/winscw/c/data/images/testpic2.jpg"
+        
+} else:win32 {
+    DESTDIR = ./
+}
+
+HEADERS += ../../../bubblecore/src/bubbleimagemanager.h \
+           ../../../bubblecore/src/bubbleimagemanager_p.h
+SOURCES += ut_bubbleimagemanager.cpp \
+           ../../../bubblecore/src/bubbleimagemanager.cpp
+
+symbian {
+    SOURCES += ../../../bubblecore/src/bubbleimagemanager_p.cpp
+    LIBS += -lthumbnailmanagerqt
+} else:win32 {
+    SOURCES += ../../../bubblecore/src/bubbleimagemanager_p_stub.cpp
+}
+
+RESOURCES += ut_bubbleimagemanager.qrc
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/bubblemanager2/tsrc/unit/ut_bubbleimagemanager/ut_bubbleimagemanager.qrc	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,6 @@
+<RCC>
+    <qresource prefix="/" >
+        <file>resources/testpic1.png</file>
+        <file>resources/testpic2.jpg</file>
+    </qresource>
+</RCC>
--- a/phoneuis/bubblemanager2/tsrc/unit/ut_bubbleimagewidget/ut_bubbleimagewidget.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/tsrc/unit/ut_bubbleimagewidget/ut_bubbleimagewidget.cpp	Mon May 03 12:31:11 2010 +0300
@@ -27,6 +27,7 @@
 
 #include "bubbletest.h"
 #include "bubbleimagewidget.h"
+#include "bubbleimagemanager.h"
 
 class ut_BubbleImageWidget : public QObject
 {
@@ -38,18 +39,33 @@
 
     void testPixmap();
     void testWidePixmap();
-    void testVector();
+    void testDefaultAvatar();
+
+private:
+    QString fileNameWithPath(const QString& fileName);    
 
 private:
     BubbleImageWidget* mImage;
     HbMainWindow* mMainWindow;
     int mStyleBaseId;
+    BubbleImageManager* mImageManager;
 };
 
+QString ut_BubbleImageWidget::fileNameWithPath(const QString& fileName)
+{
+#ifdef __WINS__
+    return "c:/data/images/" + fileName;
+#else
+    return ":/data/" + fileName;
+#endif
+}
+
 void ut_BubbleImageWidget::initTestCase()
 {
     mMainWindow = new HbMainWindow();
-    mImage = new BubbleImageWidget();
+    mImageManager = new BubbleImageManager();
+    mImage = new BubbleImageWidget(
+        BUBBLE_STYLE_PLUGIN,*mImageManager);
     mMainWindow->addView(mImage);
     mMainWindow->show();
 }
@@ -57,31 +73,34 @@
 void ut_BubbleImageWidget::cleanupTestCase()
 {
     delete mMainWindow;
+    delete mImageManager;
 }
 
 void ut_BubbleImageWidget::testPixmap()
 {    
-    mImage->setImage(":/data/pixmap.png");
-    mImage->update();
+    mImage->hide();
+    mImage->setImage(fileNameWithPath("pixmap.png"));
+    mImage->show();
     // set same image again
-    mImage->setImage(":/data/pixmap.png");
-    QTest::qWait(100);
+    QTest::qWait(500);
     // there is now way to verify using public API
 }
 
 void ut_BubbleImageWidget::testWidePixmap()
 {
-    mImage->setImage(":/data/pixmap_wide.png");
-    mImage->update();
-    QTest::qWait(100);
+    mImage->hide();
+    mImage->setImage(fileNameWithPath("pixmap_wide.png"));
+    mImage->show();
+    QTest::qWait(500);
     // there is now way to verify using public API
 }
 
-void ut_BubbleImageWidget::testVector()
+void ut_BubbleImageWidget::testDefaultAvatar()
 {
-    mImage->setImage(":/data/vector.svg");
-    mImage->update();
-    QTest::qWait(100);
+    mImage->hide();
+    mImage->setImage("");
+    mImage->show();
+    QTest::qWait(500);
     // there is now way to verify using public API
 }
 
--- a/phoneuis/bubblemanager2/tsrc/unit/ut_bubbleimagewidget/ut_bubbleimagewidget.pro	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/tsrc/unit/ut_bubbleimagewidget/ut_bubbleimagewidget.pro	Mon May 03 12:31:11 2010 +0300
@@ -23,14 +23,34 @@
 
 symbian {
     INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.CAPABILITY = ALL -TCB
+
+
+    BLD_INF_RULES.prj_exports += \
+        "./data/pixmap.png  /epoc32/winscw/c/data/images/pixmap.png"
+    BLD_INF_RULES.prj_exports += \
+        "./data/pixmap_wide.png  /epoc32/winscw/c/data/images/pixmap_wide.png"
+
 } else:win32 {
     DESTDIR = ./
 }
 
 #
-HEADERS += ../../../bubblecore/src/bubbleimagewidget.h
+HEADERS += ../../../bubblecore/src/bubbleimagewidget.h \
+           ../../../bubblecore/src/bubbleimagemanager.h \
+           ../../../bubblecore/src/bubbleimagemanager_p.h
 SOURCES += ut_bubbleimagewidget.cpp \
            ../../../bubblecore/src/bubbleimagewidget.cpp \
-           ../../../bubblecore/src/bubblestyleoption.cpp
+           ../../../bubblecore/src/bubblestyleoption.cpp \
+           ../../../bubblecore/src/bubbleimagemanager.cpp
+
+symbian {
+    SOURCES += ../../../bubblecore/src/bubbleimagemanager_p.cpp
+    LIBS += -lthumbnailmanagerqt
+} else:win32 {
+    SOURCES += ../../../bubblecore/src/bubbleimagemanager_p_stub.cpp
+}
+
 RESOURCES += ut_bubbleimagewidget.qrc
 
--- a/phoneuis/bubblemanager2/tsrc/unit/ut_bubblestyleplugin/ut_bubblestyleplugin.cpp	Fri Apr 16 14:58:25 2010 +0300
+++ b/phoneuis/bubblemanager2/tsrc/unit/ut_bubblestyleplugin/ut_bubblestyleplugin.cpp	Mon May 03 12:31:11 2010 +0300
@@ -53,6 +53,7 @@
     void testVoipCallStatusIcon();
     void testNumberTypeIcon();
     void testCipheringIcon();
+    void testAvatar();
 
 private:
     BubbleStylePlugin* mPluginInstance;
@@ -365,5 +366,21 @@
     QVERIFY(icon->icon().iconName()=="");
 }
 
+void ut_BubbleStylePlugin::testAvatar()
+{
+    QGraphicsItem *item = mPlugin->createPrimitive(
+        (HbStyle::Primitive)(BP_DefaultAvatar_icon),mParent);
+    QVERIFY(item);
+    QVERIFY(item->parentItem()==mParent);
+
+    HbIconItem* icon = qgraphicsitem_cast<HbIconItem*>(item);
+    QVERIFY(icon);
+    BubbleStyleOption option;
+    mPlugin->updatePrimitive(
+            item, (HbStyle::Primitive)(BP_DefaultAvatar_icon),
+            &option);
+    QVERIFY(icon->icon().iconName()=="qtg_large_avatar");
+}
+
 BUBBLE_TEST_MAIN(ut_BubbleStylePlugin)
 #include "ut_bubblestyleplugin.moc"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/ussdeditor/inc/tflogger.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,106 @@
+/*
+* Copyright (c) 2002-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 __TFLOGGER_H__
+#define __TFLOGGER_H__
+
+#include <flogger.h>
+#include <e32svr.h>
+
+_LIT(KTfLogFolder, "ussd");
+_LIT(KTfLogFile, "ussdeditor.txt");
+
+/**
+* ------------------------------------------------------------------------------
+*
+*  Remove #define LOGGING_ENABLED from comments to enable logging
+*
+* ------------------------------------------------------------------------------
+*/
+
+#ifdef _DEBUG 
+#define LOGGING_ENABLED
+#endif
+
+/**
+* ------------------------------------------------------------------------------
+*
+*  LOGGING MACROs
+*
+*  USE THESE MACROS IN YOUR CODE
+*
+*  Example: TFLOGTEXT(own_desc)
+*  Example: TFLOGSTRING("Test")
+*  Example: TFLOGSTRING("Test %i", aValue)
+*  Example: TFLOGSTRING("Test %i %i", aValue1, aValue2)
+*
+* ------------------------------------------------------------------------------
+*/
+
+#ifdef LOGGING_ENABLED
+
+    #define TFLOGTEXT(TEXT) \
+        {  \
+        RFileLogger::Write(KTfLogFolder,KTfLogFile, \
+            EFileLoggingModeAppend, TEXT); \
+        RDebug::Print(TEXT); \
+        }
+
+    #define TFLOGSTRING(TEXT) \
+        { \
+        _LIT(tempLogDes, TEXT); \
+        RFileLogger::Write(\
+            KTfLogFolder, \
+            KTfLogFile, \
+            EFileLoggingModeAppend, \
+            tempLogDes()); \
+        RDebug::Print(_L(TEXT)); \
+        }
+
+    #define TFLOGSTRING2(TEXT, VAR1) \
+        { \
+        _LIT(tempLogDes, TEXT); \
+        RFileLogger::WriteFormat(\
+            KTfLogFolder, \
+            KTfLogFile, \
+            EFileLoggingModeAppend, \
+            TRefByValue<const TDesC>(tempLogDes()), VAR1); \
+        RDebug::Print(_L(TEXT), VAR1); \
+        }
+
+    #define TFLOGSTRING3(TEXT, VAR1, VAR2) \
+        { \
+        _LIT(tempLogDes, TEXT); \
+        RFileLogger::WriteFormat(\
+            KTfLogFolder, \
+            KTfLogFile, \
+            EFileLoggingModeAppend, \
+            TRefByValue<const TDesC>(tempLogDes()), VAR1, VAR2); \
+        RDebug::Print(_L(TEXT), VAR1, VAR2); \
+        }
+
+#else
+
+    #define TFLOGTEXT(TEXT)
+    #define TFLOGSTRING(TEXT)
+    #define TFLOGSTRING2(TEXT, VAR1)
+    #define TFLOGSTRING3(TEXT, VAR1, VAR2)
+
+#endif // LOGGING_ENABLED
+
+#endif // __TFLOGGER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/ussdeditor/inc/ussdcomms.h	Mon May 03 12:31:11 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 USSDCOMMS_H
+#define USSDCOMMS_H
+
+#include <QObject>
+
+class CPhCltUssdInt;
+
+class CUssdComms: public QObject
+{
+    Q_OBJECT
+
+public:
+    CUssdComms(QObject* parent);
+    ~CUssdComms();
+
+public slots:
+    void appStarting();
+    void appTerminating();
+    void appToBackground();
+    void appToForeground();
+    void informExitReason(int aExitReason);
+
+public:
+    int send( const QString& message );
+    void cancel();
+    int errorCode();
+
+private: // Data
+
+    /** USSD server client api */
+    CPhCltUssdInt *mUssd;
+
+    /** error code */
+    int mErrorCode;
+};
+
+#endif // USSDCOMMS_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/ussdeditor/inc/ussdeditorquery.h	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* 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 USSDEDITORQUERY_H
+#define USSDEDITORQUERY_H
+
+// INCLUDES
+#include <hbinputdialog.h>
+
+class CUssdComms;
+
+class UssdEditorQuery: public HbInputDialog
+{
+    Q_OBJECT
+
+public:
+    UssdEditorQuery( CUssdComms &ussd, QGraphicsItem *parent = 0);
+    ~UssdEditorQuery();
+
+private slots:
+    void sendUssdString();
+    void cancelUssdString();
+    void updateButtonVisible( const QString &text );
+private:
+    // From main.cpp
+    CUssdComms &mComms;
+};
+
+#endif // USSDEDITORQUERY_H
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/ussdeditor/rom/ussdeditor.iby	Mon May 03 12:31:11 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: IBY file for satapp application
+;
+;
+
+#ifndef __USSDEDITOR_IBY__
+#define __USSDEDITOR_IBY__
+
+#include <data_caging_paths_for_iby.hrh>
+
+file=ABI_DIR\BUILD_DIR\ussdeditor.exe                  SHARED_LIB_DIR\ussdeditor.exe
+data=ZSYSTEM\install\ussdeditor_stub.sis               system\install\ussdeditor_stub.sis
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/ussdeditor/rom/ussdeditor.pkg	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,34 @@
+;
+; 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: For packing sat application update.
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"ussdeditor"},(0x10005955),10,1,0, TYPE=PU 
+
+; Localised Vendor name
+%{"Vendor"}
+
+; Unique Vendor name
+:"Vendor"
+
+; Executable and default resource files
+"/epoc32/release/armv5/urel/ussdeditor.exe"    - "!:\sys\bin\ussdeditor.exe"
+"/epoc32/data/z/resource/apps/ussdeditor.rsc"    - "!:\resource\apps\ussdeditor.rsc"
+"/epoc32/data/z/private/10003a3f/import/apps/ussdeditor_reg.rsc"    - "!:\private\10003a3f\import\apps\ussdeditor_reg.rsc"
+
+; Manual PKG post-rules from PRO files
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/ussdeditor/rom/ussdeditor_stub.pkg	Mon May 03 12:31:11 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: For packing sat application stub.
+;
+; Languages
+&EN
+
+; Header
+#{"ussdeditor"}, (0x10005955), 1, 0, 0, TYPE=SA
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Files
+""-"z:\sys\bin\ussdeditor.exe"
+""-"z:\resource\apps\ussdeditor.rsc"
+""-"z:\private\10003a3f\import\apps\ussdeditor_reg.rsc"
Binary file phoneuis/ussdeditor/rom/ussdeditor_stub.sis has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/ussdeditor/rom/ussdeditorresources.iby	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* 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:  Ussdeditor Resources iby file
+*
+*/
+
+
+#ifndef __USSDEDITOR_RESOURCES_IBY__
+#define __USSDEDITOR_RESOURCES_IBY__
+
+#include <data_caging_paths_for_iby.hrh>
+
+data=DATAZ_\RESOURCE_FILES_DIR\ussdeditor.rsc RESOURCE_FILES_DIR\ussdeditor.rsc
+data=ZPRIVATE\10003a3f\import\apps\ussdeditor_reg.rsc  private\10003a3f\import\apps\ussdeditor_reg.rsc
+
+//data=DATAZ_\QT_TRANSLATIONS_DIR\phcltsrvussd.qm QT_TRANSLATIONS_DIR\phcltsrvussd.qm
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/ussdeditor/src/main.cpp	Mon May 03 12:31:11 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:
+*
+*
+*/
+
+// INCLUDE FILES
+#include <hbapplication.h>
+#include <hbmainwindow.h> 
+#include <hbview.h>
+
+#include "ussdeditorquery.h"
+#include "ussdcomms.h"
+#include "tflogger.h"
+
+// ---------------------------------------------------------
+// main()
+// Entry point function
+// Returns: 0: success
+// ---------------------------------------------------------
+//
+int main(int argc, char *argv[])
+{
+    TFLOGSTRING("USSDEDITOR: main IN")
+
+    // Create application instance
+    HbApplication application(argc, argv);
+    TFLOGSTRING("USSDEDITOR: main app")
+    
+    // Create main widow
+    HbMainWindow window;
+    window.show();
+    TFLOGSTRING("USSDEDITOR: main window")
+   
+    // Add a virtual view and hidden it
+    HbView *view = new HbView();
+    // TODO: Still show
+    view->setViewFlags(HbView::ViewStatusBarHidden);
+    view->setViewFlags(HbView::ViewTitleBarHidden);
+    window.addView(view);
+    TFLOGSTRING("USSDEDITOR: main addView")
+
+    // Create CUssdComms - ussd client
+    CUssdComms *ussdComms = new CUssdComms(view);
+    TFLOGSTRING("USSDEDITOR: main ussdComms")
+    
+    // Create HbInputDialog
+    UssdEditorQuery *query = new UssdEditorQuery(*ussdComms);
+    query->show();
+    TFLOGSTRING("USSDEDITOR: main query")
+   
+    // Execute application loop
+    int result = application.exec();
+    TFLOGSTRING2("USSDEDITOR: main application OUT %d", result)
+    delete query;
+    query = 0;
+    return result;
+}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/ussdeditor/src/ussdcomms.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,154 @@
+/*
+* 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 FILES
+#include <e32base.h>
+#include <cphcltussdint.h>
+
+#include "ussdcomms.h"
+#include "tflogger.h"
+
+// The maximum length of editor lines.
+const TInt KUssdEditorMaxLength = 182;
+
+// ============================ MEMBER FUNCTIONS ===============================
+// -----------------------------------------------------------------------------
+// CUssdComms::CUssdComms
+// Constructor.
+// -----------------------------------------------------------------------------
+//
+CUssdComms::CUssdComms(QObject *parent)
+    : QObject(parent),
+      mUssd(NULL), 
+      mErrorCode(static_cast<int>(EPhCltExitReasonUnknown))
+{
+    // Default value - ETrue
+    TRAP_IGNORE(mUssd = CPhCltUssdInt::NewL());
+    TFLOGSTRING("USSDEDITOR: CUssdComms::CUssdComms")
+}
+
+// -----------------------------------------------------------------------------
+// CUssdComms::~CUssdComms
+// ~CUssdComms.
+// -----------------------------------------------------------------------------
+//
+CUssdComms::~CUssdComms()
+{
+    if (mUssd){
+        mErrorCode = mUssd->AppTerminating(
+            static_cast<TPhCltUssdAppExitReason>(mErrorCode));
+        delete mUssd;
+        mUssd = NULL;
+        TFLOGSTRING2("USSDEDITOR: CUssdComms::~CUssdComms %d", mErrorCode)
+    }
+    TFLOGSTRING("USSDEDITOR: CUssdComms::~CUssdComms")
+}
+
+// -----------------------------------------------------------------------------
+// CUssdComms::appStarting
+// appStarting.
+// -----------------------------------------------------------------------------
+//
+void CUssdComms::appStarting()
+{
+    mErrorCode = mUssd->AppStarting();
+    TFLOGSTRING("USSDEDITOR: CUssdComms::appStarting")
+}
+
+// -----------------------------------------------------------------------------
+// CUssdComms::appTerminating
+// appTerminating.
+// -----------------------------------------------------------------------------
+//
+void CUssdComms::appTerminating()
+{
+    mErrorCode = mUssd->AppTerminating(EPhCltUserExit);
+    TFLOGSTRING("USSDEDITOR: CUssdComms::appTerminating")
+}
+
+// -----------------------------------------------------------------------------
+// CUssdComms::appToBackground
+// appToBackground.
+// -----------------------------------------------------------------------------
+//
+void CUssdComms::appToBackground()
+{
+    mErrorCode = mUssd->AppToBackground();
+    TFLOGSTRING("USSDEDITOR: CUssdComms::appToBackground")
+}
+
+// -----------------------------------------------------------------------------
+// CUssdComms::appToForeground
+// appToForeground.
+// -----------------------------------------------------------------------------
+//
+void CUssdComms::appToForeground()
+{
+    mErrorCode = mUssd->AppToForeground();
+    TFLOGSTRING("USSDEDITOR: CUssdComms::appToForeground")
+}
+
+// -----------------------------------------------------------------------------
+// CUssdComms::send
+// send.
+// -----------------------------------------------------------------------------
+//
+int CUssdComms::send( const QString& message )
+{
+    TBuf<KUssdEditorMaxLength> buf16;
+    buf16.Copy((const TUint16*)message.constData(), message.length());
+    mErrorCode = mUssd->SendUssd(buf16);
+    TFLOGSTRING("USSDEDITOR: CUssdComms::send")
+    return mErrorCode;
+}
+
+// -----------------------------------------------------------------------------
+// CUssdComms::cancel
+// cancel.
+// -----------------------------------------------------------------------------
+//
+void CUssdComms::cancel()
+{
+    mUssd->SendUssdCancel();
+    TFLOGSTRING("USSDEDITOR: CUssdComms::cancel")
+}
+
+// -----------------------------------------------------------------------------
+// CUssdComms::errorCode
+// errorCode.
+// -----------------------------------------------------------------------------
+//
+int CUssdComms::errorCode()
+{
+    TFLOGSTRING("USSDEDITOR: CUssdComms::send")
+    return mErrorCode;
+}
+
+// -----------------------------------------------------------------------------
+// CUssdComms::informExitReason
+// informExitReason.
+// -----------------------------------------------------------------------------
+//
+void CUssdComms::informExitReason(int aExitReason)
+{
+    TFLOGSTRING2("USSDEDITOR: CUssdComms::informExitReason \
+        %d", aExitReason) 
+    mErrorCode = aExitReason;
+}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/ussdeditor/src/ussdeditorquery.cpp	Mon May 03 12:31:11 2010 +0300
@@ -0,0 +1,144 @@
+/*
+* 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 FILES
+#include <hbinputeditorinterface.h>
+#include <hbaction.h>
+#include <hbinputstandardfilters.h>
+#include <hbinputfilter.h> 
+#include <hbinputstate.h> 
+#include <hbinputvkbhost.h>
+#include <hbapplication.h>
+#include <cphcltussdint.h>
+
+#include "tflogger.h"
+#include "ussdcomms.h"
+#include "ussdeditorquery.h"
+
+// CONSTANTS
+// The maximum number of editor lines method NumberOfEditorLines can return.
+const TInt KUssdMaxNumberOfEditorLines = 16;
+// The maximum length of editor lines.
+const TInt KUssdEditorMaxLength = 182;
+
+// ============================ MEMBER FUNCTIONS ===============================
+// -----------------------------------------------------------------------------
+// UssdEditorQuery::UssdEditorQuery
+// Constructor.
+// -----------------------------------------------------------------------------
+//
+UssdEditorQuery::UssdEditorQuery(CUssdComms &ussd, QGraphicsItem *parent)
+    :HbInputDialog(parent), mComms(ussd)
+{
+    TFLOGSTRING("USSDEDITOR: UssdEditorQuery::UssdEditorQuery IN")
+    setPromptText(hbTrId("Reply"));
+
+    if (lineEdit()){
+        // Set max length and rows
+        lineEdit()->setMaxLength(KUssdEditorMaxLength);
+        lineEdit()->setMaxRows(KUssdMaxNumberOfEditorLines);
+        lineEdit()->setText(QString());
+
+        // 0-9, *, +, #
+        HbEditorInterface interface(lineEdit());
+        interface.setFilter(HbPhoneNumberFilter::instance());
+        // TODO: cannot open keypad
+        interface.vkbHost()->openKeypad();
+
+        mComms.appStarting();
+        // Disable Ok key by default
+        primaryAction()->setEnabled(false);
+
+        bool ret(false);
+        ret = connect(primaryAction(), SIGNAL(triggered(bool)),
+                      this, SLOT(sendUssdString()));
+        TFLOGSTRING2("USSDEDITOR: UssdEditorQuery::UssdEditorQuery \
+            connect send %d", ret);  
+        
+        ret = connect(lineEdit(), SIGNAL(textChanged(QString)),
+                      this, SLOT(updateButtonVisible(QString)));
+        TFLOGSTRING2("USSDEDITOR: UssdEditorQuery::UssdEditorQuery \
+            connect ok button %d", ret);
+        
+        // Connect cancel
+        ret = connect(secondaryAction(), SIGNAL(triggered(bool)),
+                      this, SLOT(cancelUssdString()));
+        TFLOGSTRING2("USSDEDITOR: UssdEditorQuery::UssdEditorQuery \
+            connect send %d", ret);
+    }
+    TFLOGSTRING("USSDEDITOR: UssdEditorQuery::UssdEditorQuery OUT")
+}
+
+// -----------------------------------------------------------------------------
+// UssdEditorQuery::~UssdEditorQuery
+// ~UssdEditorQuery.
+// -----------------------------------------------------------------------------
+//
+UssdEditorQuery::~UssdEditorQuery()
+{
+    TFLOGSTRING("USSDEDITOR: UssdEditorQuery::~UssdEditorQuery IN-OUT")
+}
+
+// -----------------------------------------------------------------------------
+// UssdEditorQuery::sendUssdString
+// sendUssdString.
+// -----------------------------------------------------------------------------
+//
+void UssdEditorQuery::sendUssdString()
+{
+    TFLOGSTRING("USSDEDITOR: UssdEditorQuery::sendUssdString IN"); 
+    if (lineEdit() && 
+        0 < lineEdit()->text().length() &&
+        KUssdEditorMaxLength >= lineEdit()->text().length()) {
+        int ret = mComms.send(lineEdit()->text());
+        TFLOGSTRING2("USSDEDITOR: UssdEditorQuery::sendUssdString %d", ret);
+        mComms.informExitReason(static_cast<int>(EPhCltSendCompleted));
+    }
+    TFLOGSTRING("USSDEDITOR: UssdEditorQuery::sendUssdString OUT");
+    HbApplication::quit();
+}
+
+// -----------------------------------------------------------------------------
+// UssdEditorQuery::cancelUssdString
+// cancelUssdString.
+// -----------------------------------------------------------------------------
+//
+void UssdEditorQuery::cancelUssdString()
+{
+    TFLOGSTRING("USSDEDITOR: UssdEditorQuery::cancelUssdString IN-OUT"); 
+    mComms.informExitReason((EPhCltUserExit));
+    HbApplication::quit();
+}
+
+// -----------------------------------------------------------------------------
+// UssdEditorQuery::updateButtonVisible
+// updateButtonVisible.
+// -----------------------------------------------------------------------------
+//
+void UssdEditorQuery::updateButtonVisible( const QString &text )
+{
+    TFLOGSTRING("USSDEDITOR: UssdEditorQuery::updateButtonVisible IN"); 
+    if (text.length() > 0) {
+        primaryAction()->setEnabled(true);
+    } else {
+        primaryAction()->setEnabled(false);
+    }
+    TFLOGSTRING("USSDEDITOR: UssdEditorQuery::updateOkButton OUT");
+}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/ussdeditor/ussdeditor.pro	Mon May 03 12:31:11 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:
+#
+#
+#
+
+TEMPLATE = app
+#the application will be "invisible"
+CONFIG += no_icon
+
+TARGET = ussdeditor
+DEPENDPATH += .
+HEADERS += $$PUBLIC_HEADERS
+MOC_DIR = moc
+
+CONFIG += hb
+
+symbian: {
+
+TARGET.CAPABILITY = CAP_GENERAL_DLL
+TARGET.UID3 = 0x10005955
+
+INCLUDEPATH += . 
+INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE 
+INCLUDEPATH += MOC_DIR
+
+LIBS += -lphoneclient
+LIBS += -lflogger
+
+SOURCES += src\main.cpp
+SOURCES += src\ussdeditorquery.cpp
+SOURCES += src\ussdcomms.cpp 
+
+HEADERS += inc\ussdeditorquery.h 
+HEADERS += inc\ussdcomms.h
+HEADERS += inc\tflogger.h
+
+BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>" \
+                             "rom/ussdeditor.iby CORE_APP_LAYER_IBY_EXPORT_PATH(ussdeditor.iby)" \
+                             "rom/ussdeditorresources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(ussdeditorresources.iby)" \
+                             "rom/ussdeditor_stub.sis /epoc32/data/z/system/install/ussdeditor_stub.sis"
+
+#The next line will be opened when the official translations already
+#TRANSLATIONS = phcltsrvussd.ts
+}